본문 바로가기

전체 글

(129)
[iOS] URLSession을 사용하여 POST method 통신하기 HTTP의 기본 구조 HTTP는 요청을 일정한 형식의 텍스트 기반 메세지로 변환한 메세지 형식을 말한다. 크게 요청, 응답으로 구분된다. 메세지는 모두 다음과 같은 구조이다. Line - Header - Body Line은 메세지의 가장 기본적인 내용이 담긴다. 예를 들어, 응답 or 요청인지 구분 여부, 메세지 전송 방식, 상태 정보 등이다. Header 는 메세지 본문에 대한 메타 정보가 담긴다. Body는 실제 보내고자 하는 메세지 내용이 담긴다. 이러한 메세지의 형식은 정형화 되어있다. 즉 형태가 고정되어 있다는 의미이다. 라인 영역은 반드시 한줄이어야 하며, 그 아래에는 여러줄의 헤더가 작성된다. 헤더와 바디 영역은 구분되어야 하기 때문에 한 줄의 공백이 들어간다. 말하자면 다음과 같은 구조이다..
Files and Directories in LINUX 리눅스에서 파일과 디렉토리 시스템을 다루는 방법을 알아보자 LINUX 파일 시스템의 구조에 대해서는 다음 포스팅을 참고하면 좋다. LINUX is not UNIX 이지만 기본적으로는 UNIX의 구조를 따르기 때문이다. Implementing File System 운영체제에서 file system의 구현은 다음과 같이 두 가지의 형태이다. 1. On-disk structure hard-disk 라고 불리는 secondary storage에 있는데 2차 저장장치에 구현된 구조이다. 2. In-memory structure memory.. josushell.tistory.com File Status # include # include int stat(char *pathname, struct stat *buf)..
[C/LeetCode] Search a 2D Matrix Daily LeetCoding Challenge March, Day 30 문제: 2 dimension matrix 안에 target number 존재 유무 bool return 하기 이때 2차원 matrix의 특징 - 각 row는 오름차순 - next row first column value > previous row last column value 아이디어: Binary Search + Brute Force in row search row를 반복문으로 돌면서 첫 번째 value와 값을 비교하고 같으면 return, value > target 인 경우 이전 row에 대해서 값이 있거나 없다는 뜻이므로 그때 binary search 진행 예외 처리: last row 마지막 row는 반복문에 걸리지 않기 때..
Xcode + UIKit 으로 iOS 메모 앱 만들기 1. TODAY MEMO 안드로이드 개발을 계속 하다보니, 분명 필요해서 만든 앱인데 애플 유저라서 직접 사용하지 못하는 문제가 여러번 있었다. 이제 직접 사용가능한 앱을 만들어보고자 ios개발을 시작했다. 개발은 내가 만들어서 내가 무한으로 즐기는 것도 하나의 재미라고 생각하기 때문이다. 일단 현재 아이폰 기본 메모장의 위젯이 마음에 안들어서 위젯으로 사용가능한 메모장 앱을 만들고 싶었다. launch screen 디자인은 직접 했다. 물론 디자인이라고 할 것도 없이 그냥 아이패드로 그림 그린 것이다. 2. 개발 과정 Tools xcode + swift UIkit Table View Controller / Navigation Controller Core Data UserDefaults Alamofire..
[iOS] iOS의 UIApplicationDelegate의 life cycle method UIKit으로 ios 프로젝트를 만들면 AppDelegate.swift 파일을 자동으로 생성해준다. 파일을 열어보면 AppDelegate 클래스는 UIApplicationDelegate protocol을 구현하고 있음을 확인할 수 있다. 이 AppDelegate 클래스와 UIApplicationDelegate protocol 에 대해서 알아보자 c에서는 프로그램의 시작점인 entry point가 바로 main() 함수이다. 그렇다면 ios 에서의 entry point는 어디일까? 바로 UIApplicationMain() 함수이다. 이 함수는 앱의 핵심 객체를 생성하는 프로세스를 실행하고, UI를 읽고 커스텀 코드를 호출하는 등의 앱 생성 초기 과정을 담당한다. 이 객체를 통해 생성되는 객체가 바로 UIA..
SIGNAL in LINUX 운영체제를 공부하면 반드시 배우게 되는 것이 interrupt이다. 이때 interrupt는 크게 두가지로 구분할 수 있다. Hardware Interrupt : I/O 작업과 같은 이벤트 cpu와 I/O 간의 작업을 비동기로 처리하고 cpu에게 완료했음을 알려주는 것이 interrupt이다. Software Interrupt : 비동기로 이루어지는 이벤트에 대해 신호들을 주고 받는 것 즉 signal이다. 이러한 signal을 어떻게 요청하고 처리하는지 정리해보자 SIGNAL Action os는 signal이 온 경우 어떻게 대처를 하는가? signal 처리는 크게 두 가지 방식으로 이루어진다. 1. signal handler를 등록된 함수를 실행 2. signal handler가 없는 경우 Defau..
[C/LeetCode] Search in Rotated Sorted Array II Daily LeetCoding Challenge March, Day 28 문제 정렬이 되어있는 배열을 (중복 가능) k 번 rotation 돌게 된 상태로 입력 받는다. 이때 몇번 회전되었는지는 모름 이 회전된 배열 안에 target number가 있는지 없는지 판별하는 것이다. 문제는 쉬움 그냥 배열 안에 요소가 있는지 없는지 확인하는 것임 따라서 접근 가능한 알고리즘은 많은데, rotation 된 특성을 활용해서 짜는 것이 문제의 핵심이다. 아이디어: Binary Search 이진 탐색을 쓰는데, 일단 어디서 회전 되었는지 알아야 하기 때문에 배열을 한번 검사해서 회전된 곳을 찾는다. 그 후 배열의 첫번째 값과 target number를 비교하여 어떤 앞 부분, 뒷 부분 중에서 어떤 곳에서 이진 탐색..
Process and Threads in LINUX linux 환경에서 C로 multi-process, multi-thread 를 다루는 것을 정리해보자 process와 thread가 무엇인지는 예전에 쓴 포스팅을 참고하기를 바란다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com multi-thread programming 앞에서 배운 multi-process programming은 마냥 좋기만 할까? 딱히 그렇지도 않다. process process는 기본적으로 Heavy-weight이다. 즉 프로세스 1개를 만드는 것은 ..