[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

전체 글 491

[시스템프로그래밍] UNIX Special Files

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Pipe -서로 협력하는 능력은 프로세스에 있어서 필수적이다. -가장 간단한 프로세스간 통신 방법은 pipe이다. -동일한 시스템에서 실행되는 프로세스가 정보를 공유하도록 한다. #include int pipe(int fd[2]); -2개의 file descriptor의 배열을 파라미터로 활용한다. -해당 파일의 [0]은 읽기전용이고, [1]은 쓰기전용이다. -즉, [1]의 내용이 파이프라는 special file을 통해 [0]으로 가는 것이다. -내용은 FIFO(first in first out) 방식으로 이동한다. -pipe는 보통 이름이 없다. -성공하면 파이프는 0을 리턴하고, ..

[시스템프로그래밍] Files and Directories

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Files and Directories OS 는 물리적 디스크를 file systems으로 정리한다. • File System – 파일들과 위치나 이름같은 속성들의 모임 – 디스크에서 파일의 물리적 위치를 지정하는 대신, 응용 프로그램은 filename과 offset을 지정한다. • Directory – 파일 이름을 Disk에 있는 파일의 실제 위치와 연결하는 directory entries를 포함하고 있는 파일. • 대부분의 file systems은 tree structure로 구성되어 있다. Directory Root directory – ‘/’ – file system tree의 ..

[시스템프로그래밍] UNIX I/O - 2

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Opening #include #include int open(const char *path, int flag); int open(const char *path, int flag, mode_t mode); -file offset : 입력 위치 -*path : 경로 / flag : 읽기or쓰기or읽기&쓰기 / mode : 파일을 새로만들시 해당 파일의 permission -open의 리턴값인 파일의 정보는 file descriptor라고 한다. -flag : 액세스 모드 3가지 중 하나를 고르고, '|'를 사용해서 추가 옵션을 줄 수 있다. ex) open("test.txt", O_RDW..

[시스템프로그래밍] UNIX I/O - 1

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. • Peripheral device (주변기기) – 컴퓨터시스템에 의해 접근 가능한 하드웨어의 일종 – ex) disks, tapes, CD-ROMs, screens, keyboards, printers, mouse devices and network interfaces • Device driver – 'device driver'라 불리는 시스템모듈에 의해 실행되는 시스템콜 함수가 각 입출력 장치를 제어할 수 있게 해준다. – 'device driver'는 용인되지 않은 사용을 막고, 디바이스의 실행의 디테일적인 부분을 숨긴다. 입출력은 어디에나 필요한 common한 task이다. 따라..

[시스템프로그래밍] 중간고사 대비

학교에서 듣는 수업의 중간고사 대비로 헷갈리는 부분을 정리한 것입니다. 개인저장용의 용도가 큽니다. 1. chmod: 특정 사용자의 permission을 변경할 수 있음. [u]or[g]or[o]or[a] +(-) [permisson] 으로 각자의 권한 변경가능. (빼기는 권한없애기) 2. gcc hello.c -o hello : 실행 가능한 파일 hello.out 생성 3. os의 3대기능 communication(통신), concurrency(동시성), asynchronous operations(비동기적실행) 4. signals(시그널) 시그널은 이벤트가 일어났음을 알리는 소프트웨어 메커니즘이다. 시그널은 동기적 또는 비동기적으로 생성될 수 있다. 5. 인터럽트 하드웨어 플래그들을 검사하여 인터럽트 ..

[시스템프로그래밍] Processes in UNIX

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Process 기본적 active entity. 실행중인 프로그램. 프로세스가 빠르게 context switch된다. 프로세스끼리 커뮤니케이션하려면 OS의 system call들을 사용해야 한다. process는 언제든 interrupt 가능 (by device or system call) PCB(process control block)안에서 관리 Context switch 발생시 현재 실행중인 프로세스 자신의 상태를 저장하고, 새로 선택된 프로세스 상태를 로드한다. 인터럽트, 디바이스, timer(tim quantum expired) 인터럽트 switch 가능. -과정 1. cpu가 ..

[시스템프로그래밍] Programs, Processes and Threads

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. 프로그램(program) 정해진 일들을 실행하는 준비된 명령어들의 나열. c컴파일러는 각각의 소스 파일을 오브젝트 파일로 변환해 준다. 컴파일러는 각각의 오브젝트 파일과 필요한 라이브러리들을 연결하여 실행 가능한 모듈을 만든다. 프로세스(process) 실행되고 있는 프로그램의 인스턴스이다. 운영 체제가 커널 자료 구조에 적절한 정보를 추가하고 프로그램 실행을 위한 필요한 메모리 공간을 할당. 프로세스는 주소공간과 적어도 하나의 쓰레드라고 불리는 제어의 흐름을 가지고 있다. 프로그램 카운터(PC) 프로세서에 의해 다음으로 실행될 명령어에 대한 정보를 유지한다. 실행 흐름(thread o..

[시스템프로그래밍] Technology’s Impact on Programs

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. os의 3대기능 communication(통신), concurrency(동시성), asynchronous operations(비동기적실행) -cca fundamental changes in commercial sorftware(용어의 변화) 메인프레임에서 실행되던 데이터베이스나 다른 상업적인 애플리케이션들은 더 작고 값싼 시스템에서 실행할 수 있게 되었다. 터미널은 그래픽 사용자 인터페이스(GUI)와 멀티미디어 기능을 갖춘 데스크탑에서 자리를 내어주었다. 고립되어있던 PC애플리케이션은 네트워크 통신을 사용하는 방향으로 진화하였다. 이러한 기술상의 발전들은 소프트웨어 애플리케이션 내에서의..

[시스템프로그래밍] 리눅스 튜토리얼

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. 리눅스 튜토리얼 Shell 이란? 사용자 명령을 받아 OS가 그것을 할 수 있도록 중계하는 것. 영어 명령어로서 작동됨. Help man(manual)를 사용시 메뉴얼을 불러옴. ex) man echo : echo에 대한 메뉴얼을 불러준다. q를 누르면 다시 prompt로 돌아간다. echo hello world -> hello world 출력 리눅스에서 옵션은 -? 로 사용 -ne 등으로 여러개도 가능하다. File system 리눅스에서 모든 파일은 루트 디렉토리(/)아래에 존재한다. ex) /hom/john/wow pwd print working directory. 현재 작업중인 ..

억대 연봉 개발자가 되려면? (비전공자 취업, 유튜브 테크보이 워니님 펌)

아주 인상깊어서 링크 가져와봅니다. 원래 화학공학을 전공하고 회사에 다니던 분인데, 개발을 공부해서 전직하셨다고 합니다. 컴퓨터로 공부도 하셨고, 코딩부트캠프에 참가하셨다고 하네요. 단순히 코딩부트캠프를 참가하는 것을 넘어서 일자리를 구할 때도 자기관리를 철저히 하셨습니다. (취직에 중요한 것 알고리즘, 자료구조라고 하시는데, 이건 모든 분들이 말씀하시는게 똑같네요 와우.) 엄청 많이 지원하시고 떨어지는 것을 반복해서 첫 직장을 구하셨다고 합니다. 뭐든 쉬운 것은 없는 것이죠. 온라인에서 지원하는 것보다 내부자를 찾아 지원하는 것이 오히려 빠를 수 있다고도 말씀합니다. 그리고 코딩을 배울때든, 프로젝트를 진행하든, 협업을 하는 것이 굉장히 중요하다고 합니다. 이것이 저에겐 가장 부족한 부분인데 새삼 반성..