본문 바로가기

전체 글

(129)
[iOS] UNUserNotificationCenterDelegate 로 보낸 로컬 알람 처리하기 지난 포스팅에서는 UNUserNotification 객체를 사용하여 로컬 알람을 보내는 방법을 알아보았다. [iOS] UserNotification으로 로컬 알림 사용하기 로컬 알림은 앱 내부의 메세지를 사용자에게 전달할 때 ios의 알림 센터를 거치도록 하여 전달하는 방식으로 이루어진다. 즉 앱이 종료되어 있거나 백그라운드 상태에서도 사용자 알림을 보낼 josushell.tistory.com 로컬 알림은 잘 활용하면 사용자에게 아주 좋은 효과를 줄 수 있다는 점에서 유용하다. 하지만 로컬 알림이 알림에서 그치지 않고 사용자 액션으로 이어질 수 있도록 하기 위해서는 어떻게 해야할까? 예를 들면, 카카오톡은 상단바 알림에서도 메세지를 보낼 수 있다. 또는 알림을 터치하면 그 카카오톡방으로 들어가게 된다. ..
[iOS] UserNotification으로 로컬 알림 사용하기 로컬 알림은 앱 내부의 메세지를 사용자에게 전달할 때 ios의 알림 센터를 거치도록 하여 전달하는 방식으로 이루어진다. 즉 앱이 종료되어 있거나 백그라운드 상태에서도 사용자 알림을 보낼 수 있다는 장점이 있다. 로컬 알림은 ios scheduler에 의해 발송된다. 앱 내부에서 미리 메세지를 구현하고, 이를 ios scheduler에 보내고자 하는 시각으로 등록해두면 자동으로 발송된다. 이때 scheduler에 등록된 이후로는 Ios가 모든 발송을 관리하기 때문에 앱 내부에서는 할 일이 없다. 따라서 로컬 알림의 대부분은 AppDelegate class에서 작업이 이루어진다. (life cycle method와 함께 쓰일 때가 많음) ios 10 이상부터는 UserNotification 객체를 사용하고,..
[C/LeetCode] Container With Most Water Daily LeetCoding Challenge April, Day 5 문제 높이가 배열로 주어졌을 때, 만들 수 있는 가장 넓은 사각형 영역의 크기 구하기 (width = 1로 고정) 아이디어: brute force 이중 배열을 돌면서 두개의 index를 선택하고 이를 통해 만들 수 있는 사각형의 크기와 max 값을 비교함 완성: time limit exceeded 눈물이 나게도 시간초과가 발생했다. int min(int a, int b) { return a height[..
[C/LeetCode] Swapping Nodes in a Linked List Daily LeetCoding Challenge April, Day 4 문제 linked list에서 앞에서 K번째, 뒤에서 k번째 요소를 swapping 아이디어: 직접 탐색 + linear 순회 먼저 linked list안에 몇개의 node가 있는지 확인해야 한다. 그래야 뒤에서 부터 몇번째는 몇번의 loop를 돌아야 하는지 계산 가능하기 때문. 총 n개의 node가 있다고 하면 (n-k+1) 번의 loop를 돌면 뒤에서부터 K번째 요소이다. 이 둘의 값을 바꾸면 된다. 예외 사항 1. K == 0 2. head == NULL 하지만 문제에서 1val; temp = head; index = 1; while (index++ next; val2 = tem..
IPC in LINUX - Shared Memory IPC 방법 중 shared memory를 사용하는 방법에 대해서 알아보자. shared memory에 대한 것은 다음 포스팅을 참고하면 좋다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com Shared Memory는 IPC 중 가장 빠른 방식이다. message passing 처럼 데이터를 kernel에 copy해야하는 일이 없기 때문이다. 하지만 운영체제가 IPC에 개입하지 않는 만큼, 동기화는 개발자가 직접 맞추어야 한다. 즉 데이터가 없을 때 데이터를 읽는 접근에 대..
[swift] Property Wrapper: what does @ mean in swift? Property Wrapper 그게 왜 필요한데 swift에서는 struct, calss의 프로퍼티의 종류가 두 가지이다. 저장 프로퍼티 vs 연산 프로퍼티 로 구분된다. 이때 연산 프로퍼티는 값에 접근할 때 계산을 하거나 변환 작업을 해야할 때 사용된다. 즉 값을 검사하는 수문장이 있는 프로퍼티이다. 예를 들어, 다음과 같이 값의 최대 범위를 계산하여 막아주는 연산 프로퍼티가 있다고 생각하자. struct A { private var realValue: Int = 0 var value: Int { get { return realValue } set { if (realValue > 100) { realValue = 100 } else if (realValue < 0) { realValue = 0 } el..
[C/LeetCode] Valid PalindromeⅡ Daily LeetCoding Challenge April, Day 2 문제: Palindrome 가능 여부 확인 이때 최대 1개의 글자를 삭제 가능하다. 아이디어: Brute Force 문자를 제거할 수 있다는 것은 앞에서 비교할 때는 index+1, 뒤에서 비교할때는 index-1 하는 것이므로 두가지의 가능성이 있다. 따라서 둘 중에 하나가 true라면 palindrome인 것이다. 완성 submission: 44ms / 9.1MB bool checkValid(char *s, int start, int end) { while (start < end) { if (s[start] != s[end]) return false; start++; end--; } return true; } bool validP..
IPC in LINUX - Message Passing IPC, Inter Process Communication IPC는 프로세스 간의 정보를 주고 받는 매커니즘이다. 즉 프로세스 간의 동작을 동기화하여 통신을 한다. IPC에는 두가지 모델이 있다. - message passing - shared memory 자세한 내용은 process 글을 참고하면 좋다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com LINUX, UNIX 에서 IPC는 크게 5가지이다. - pipe - FIFO - message queue - shared ..