분류 전체보기
-
Cocoa란?(Feat. iOS, macOS)ios/Etc 2022. 3. 5. 23:37
'Cocoa'라는 단어는 objc(Objective-C) 런타임을 기반으로하고, NSObject를 상속받는 모든 클래스 또는 객체를 가리킬 때 사용 코코아 터치 계층(Cocoa Touch Layer) Cocoa Touch Layer는 iOS 애플리케이션 개발에 주 축을 이루는 개발환경으로, 애플리케이션의 다양한 기능 구현에 필요한 여러 프레임워크(UIKit, Foundation 등)를 포함하는 최상위 프레임워크 계층이다.(Cocoa Layer는 macOS 애플리케이션 제작에 사용) iOS용 애플리케이션 개발 환경 Objective-C 런타임과 두 가지 핵심 프레임워크가 포함되어 있음 MVC 소프트웨어 아키텍처를 따름 iOS APP *Cocoa Touch* Media Core Service Core OS ..
-
Blocking & Non-Blocking 그리고 Sync & AsyncCS/OS 2022. 3. 5. 15:33
Blocking & Non-Blocking 제어할 수 없는 대상의 처리 방법이다. (ex: IO, 멀티쓰레드 동기화) 여기서 키워드는 #제어권의 반환에 대한 관점이다. Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 예를 들어, c언어의 제어권을 가진 main 함수에서 a라는 함수를 호출 했을 때 a라는 함수가 main 함수로부터 제어권을 받게되고, main 함수는 block 상태에 빠진다. a라는 함수를 실행하고 리턴값과 함께 제어권을 다시 main함수에게 반환을 하면 그때 main함수는 block 상태에서 빠져나오게 된다. Non-Blocking 다른 주체의 작업에 관련없이 자신의 작업을 하는 것 예를 들어, bl..
-
Process & ThreadCS/OS 2022. 3. 4. 15:24
Program - 실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음 Process - 실행 중인 Program - 운영체제로부터 시스템 자원을 할당 받는 작업의 단위 Stack (매개변수, 지역 변수 등 임시적인 자료: return 값) . . . Heap (동적으로 할당되는 메모리: new 등) Data (전역 변수: Static 등) Text (Program의 코드) 운영체제는 process를 관리하기 위해 각 process에 대한 PCB를 갖는다. PCB (Process Control Block) - 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조 - 각 프로세스는 운영체제에서 PCB로 표현 - 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 ..
-
URL에 www.naver.com을 입력하면 무슨 일이 일어날까?CS/네트워크 2022. 3. 2. 20:15
TCP/IP의 흐름 www.naver.com을 주소창에 입력한다면? 1. 네이버 웹서버의 80포트로 HTTP Request 메시지를 보낸다. 크롬 개발자 도구에서 HTTP 요청과 응답을 볼 수 있다. mac -> option + command + i window -> F12 2. 해당 요청을 인터넷을 통해 네이버 서버로 전달하기 위해 패킷을 만들어야 한다. 패킷에는 각 계층에 필요한 정보들이 담겨야 한다. Packet의 구조 네이버 서버로 전달될 때 패킷에 1계층 Ethernet / 2계층 IP / 3계층 TCP / 4계층 HTTP 프로토콜을 사용한다고 가정해보자 4계층 Application Layer HTTP Request/response 3계층 TCP Layer Source Port = 시작 포트번호..
-
TCP/IP 모델CS/네트워크 2022. 3. 2. 18:15
인터넷이란? 전 세계에 걸쳐 파일 전송 등의 데이터 통신 서비스를 받을 수 있는 컴퓨터 네트워크의 시스템 TCP/IP 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합 1Layer -> Network Access Layer == (OSI Physical Layer & DataLink Layer) 네트워크에 직접 연결된 기기 간 전송을 할 수 있도록 함.( MAC주소를 사용함) Ethernet, PPP, Token Ring 2Layer -> Internet Layer == (OSI Network Layer) IP주소를 바탕으로 올바른 목적지로 데이터를 전달하기 위해 사용됨. IP, ARP, ICMP, RARP, OSPF 3Layer - > Transport Layer == (OSI Tr..
-
Clean code #03 함수교양/클린 코드 2022. 2. 28. 15:55
더보기 1. SOLID 2. 간결한 함수 작성하기 3. 안전한 함수 작성하기 4. 함수 리팩터링 함수를 안전하고 간결하게 SOLID 객체지향 설계의 5가지 원칙 SRP(Single Responsibility): 단일 책임 원칙 -> 한 클래스는 하나의 책임만 가져야 한다. 클래스는 하나의 기능만 가지며 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. SRP 책임이 분명해지기 때문에, 변경에 의한 연쇄작용에서 자유로워질 수 있다. 가독성 향상과 유지보수가 용이해진다. 실전에서는 쉽지 않지만 늘 상기해야 한다. OCP(Open/Closed Principle): 개방-폐쇄 원칙 -> 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야한다. 변경을 위한 비용은 가능한 줄이고, ..
-
OS 운영체제: 스케줄링(Scheduling)CS/OS 2022. 2. 27. 16:35
더보기 1. 스케줄링이란? 2. 스케줄링의 목표 3. 스케줄링의 종류와 알고리즘 4. 스케줄링의 기준(Scheduling Criteria) CPU스케줄링이란? CPU를 프로세스에게 효율적이고, 공정하게 사용하기 위해 우선순위를 배정하는 알고리즘, 방법을 의미합니다. (Ready queue에 있는 프로세스를 스케줄링하고 dispatch 하는 것) 스케줄링의 목표 1. Batch System: 가능한 많은 일을 처리하는 것(throughput이 중요) 2.Interactive System: 빠른 응담과 적은 대기 3.Realtime System: 기한(Deadline) 맞추기 스케줄링의 종류와 알고리즘 1. 선점 스케줄링(Preemptive Scheduling) OS가 CPU의 사용권을 선점하여 특정 알고리..
-
Clean code #01~02 코드에 관하여교양/클린 코드 2022. 2. 24. 15:39
zero-base의 '한달한권 | 클린코드' 강의를 수강하면서 요약한 내용 나쁜 코드 나쁜 코드가 되기 위한 3가지 기준 성능이 나쁜 코드 = 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 = 이해하기 어려운 코드 네이밍과 그 내용이 다른 코드 중복된 코드 = 비슷한 내용인데 중복되는 코드들은 버그를 낳는다. 나쁜 코드는 왜 나쁠까? 1. 깨진 유리창의 법칙 깨진 유리창의 법칙처럼 나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지게 한다. (깨진 유리창의 법칙 : 깨진 유리창 하나를 방치해 두면, 그 지점을 중심으로 범죄가 확산되기 시작한다는 이론) 2. 생산성 저하 나쁜 코드는 팀 생산성을 저하시키고, 기술 부채를 만들어 수정을 더 어렵게 한다. 3. 추가 비용이 발생한다...