좀 배워보려다가 도저히 이해할 수 없어서 빠르게 포기했던 IT책들.. 보고있나??
이 책은 진짜 이해할 수 있다.
2장 프로그래밍 언어 & 운영체제(OS)
개발자: 컴파일러에게 문서로 일을 시키는 사람. 자바, 파이썬, 루비, 스위프트 등 영어로 되어 있는 프로그래밍 언어를 사용해 컴파일러에게 명령을 전달
컴파일러: 의사소통이 안 되는 인간과 컴퓨터 사이의 프로그램. 기계어인 0과 1로 변환해 컴퓨터에게 전달
프로그래밍 혹은 코딩: 프로그래밍 언어로 문서 작업을 하는 행동
IDE(Integrated Development Environment) 통합 개발 환경: 개발을 하기 위한 모든 것들을 제공해주는 환경.
- Android Studio 안드로이드 애플리케이션 개발 용도
- Xcode 애플 운영 체제 위의 어플리케이션 개발 용도
- Eclipse C/C++개발, 자바 개발, 웹 개발 용도
- PyCharm 파이썬 개발 용도
프로그래밍 언어를 구분하는 하나의 기준이있다면 ‘저수준(컴퓨터 친화적)’과 ‘고수준(인간 친화적)’
CPU: 컴퓨터의 머리
HDD/SSD: 창고 역할을 하는 기억장치
메모리: CPU의 개인 작업 공간. 작업이 필요한 큰 데이터 뭉치를 보조기억장치에서 메모리로 한 번 옮겨놓고 메모리 안에서만 작업.
프로그램을 실행한 후 걸리는 시간 동안 보조기억장치에서 ‘실행에 필요한 데이터’가 메모리로 올라가고 있는 것.
운영체제: 우리 대신 하드웨어를 컨트롤하고 CPU와 메모리 등을 관리해줌
- Windows(Microsoft) - C#, Visual Basic, C++, JavaScript…
- Mac OS(Apple) - Objective-C, Swift
- iOS(Apple)
- Android(Google) - JAVA, Kotlin
자바 최신 버전을 설치해야 하는 이유: 자바를 만든 팀은 각 운영체제 위에 JVM(Java Virtual Machine)이라는 소프트웨어를 만들어서 JVM 위에서 자바 언어로 만든 프로그램이 돌아갈 수 있도록 했다. 사용자가 자신의 컴퓨터에 JVM을 설치하기만 하면 운영체제별로 여러 개의 프로그램을 만들 필요 없이 자바로만 만들면 된다.
파이썬: 도 이런 방식. 윈도우나 맥 OS 등의 운영체제 위에서 프로그램을 설치 및 실행할 수 있다.
단점: 운영체제 위에 프로그램을 올리고, 그 위에 또 프로그램을 돌리는 것이기 때문에 속도가 느리다.
3장 네트워크, 클라이언트, 서버
LAN(Local Area Netword): 컴퓨터가 연결된 작은 지역
MAN(Metropolitan Area Network): 도시의 여러 LAN을 하나로 연결
WAN(Wide Area Network): 도시와 도시, 나라와 나라를 모두 연결

IP주소: 해당 컴퓨터가 위치한 주소.
컴퓨터 증가, 0~255까지만 사용할 수 있는 숫자 때문에 숫자 구분을 4개에서 6개로 늘린 IPv6을 함께 사용하고 있다.
클라이언트 = 프론트 엔드: 서비스 사용자들이 소유한 컴퓨터, 스마트폰 (고객의 바로 앞에 있음)
서버 = 백 엔드: 주는 컴퓨터
리눅스: 운영체제(OS) 중 하나. 리눅스 위에서 '서버 프로그램'을 돌린다(무료이기 때문).
윈도우와 맥 OS에는 그래픽 UI(폴더, 휴지통...)가 필요하지만 서버에는 필요없음. 서버 프로그램은 안정적으로 돌아가는 게 중요해서 대다수 리눅스 버전들은 그래픽 UI없이 명령어로만 동작시킨다.
리누스 토발스: 개발자들이 가장 많이 쓰는 리눅스와 깃(Git)을 만든 사람
리눅스 버전들: 우분투(Ubuntu), 레드햇(Red hat), 안드로이드(Android, 구글이 리눅스를 모바일 운영체제 형태로 개량 발전시킴)
호스팅 업체: 서버 운영 등의 서비스를 제공. 국내에 Cafe 24, 가비아 등의 회사가 있음
해외 서버 제공 서비스: 아마존의 AWS(Amazon Web Services)
4장 API와 JSON
API: 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계. 응답을 주는 쪽에서 사전에 '여기로 요청 보내면 이런 응답을 주고, 저기로 요청 보내면 저런 응답을 줄게'라는 약속. '서버주소/A내용'의 형태이다.
API는 서버 개발자가 개발하고 클라이언트 개발자는 그 API를 사용한다. API를 통해 요청과 응답을 주도 받을 때는 데이터도 같이 담긴다.
CRUD: 클라이언트의 관점에서 네 가지 요청
Create | 생성해줘! | 컴퓨터주소/timelinecreate |
Read | 불러와줘! | 컴퓨터주소/timelineread |
Update | 바꿔줘! | 컴퓨터주소/timelineupdate |
Delete | 지워줘! | 컴퓨터주소/timelinedelete |
주소가 너무 많아지면 관리하기 힘들다.
RESTful API: Representational State Transfer 한 API 체계. CRUD를 하나의 주소로 관리한다. 그리고 요청을 보낼 때 어떤 요청을 보냈는지 파악할 수 있는 스티커를 붙여서 함께 전송한다. 절대규칙이 아닌 일종의 사회 운동으로 상황마다 다양하게 변형해서 사용한다.
Create | 생성해줘! | POST |
Read | 불러와줘! | GET |
Update | 바꿔줘! | PUT(전체)/PATCH(일부) |
Delete | 지워줘! | DELETE |
HTTP 상태 코드: 서버의 관점에서 응답에는 2가지 경우가 있다. 잘 됐어, 잘 안됐어 -> 이것을 숫자 코드 체계로 정함
200번대 코드 - 잘 됐어
400번대 코드 - 클라이언트 요청에 문제가 있어
500번대 코드 - 서버에 문제가 있어
서로 다른 시스템의 기능을 사용하기 위해서는 API가 필요하다. 클라이언트와 서버가 아닌 다른 경우도 있음
SDK(Software Development Kit): 소프트웨어 개발 도구. API를 제공해주는 다른 소프트웨어
예시 - 구글 지도 SDK에서 제공해주는 API를 사용해서 구글 지도에 요청을 보낼 수 있다.
JSON: 클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON 형식으로 주고받는다.

5장 애플리케이션
운영체제 위에 올라가는 프로그램, 설치해야 하는 프로그램, 응용 프로그램, 어플, 앱을 통칭
6장 웹(Web)
1. HTML, CSS, JavaScript로 이루어진 웹의 기본적인 내용
HTML (Hyper Text Markup Language): 유럽 입자 물리 연구소에서 서로 다른 운영 체제나 애플리케이션을 사용하는 직원들이 운영체제나 프로그램에 상관없이 일정한 형식(HTML)이 언제나 동일하게 보이도록 문서를 제안함.
컴퓨터에게 특정 일을 시킬 수 있는 프로그래밍 언어가 아니라 단지 브라우저가 볼 수 있는 문서를 적는 언어이다.
CSS (Cascading Style Sheets): HTML에 디자인을 입힐 수 있는 코드
퍼블리싱 작업: HTML(정보)과 CSS(디자인)를 합쳐서 부르는 말. 이 작업을 하는 사람들을 퍼블리셔라 부름.
마크업 개발자: HTML 작업을 주로 하는 분들.
JavaScript: 웹의 프로그래밍 언어. 웹이 널리 쓰이게 되면서 필요해짐. 자바와 이름이 비슷하지만 아무 관계가 없다.
애플리케이션과 가장 큰 차이점: HTML, CSS, JavaScript 완성본은 모두 서버에 있고 내 컴퓨터에 있는 것들은 모두 사본이다.
애플리케이션처럼 1.0을 2.0으로 변경하기 위해 업데이트를 하는 것이 아니라 웹은 서버의 원본을 바꾸면 된다.
장점: 수정이 용이하다. 원본만 수정하면 유저가 업데이트하지 않아도 새로 고침하면 반영된다.
단점: 항상 새로 고침을 해야 한다. 그래서 네트워크의 영향을 크게 받는다.
2. 브라우저
브라우저가 하는 일: HTML, CSS, JavaScript를 받아서 읽고 그대로 동작한다.
가장 큰 점유율을 차지하는 브라우저들: 크롬, 익스플로러, 파이어폭스, 오페라, 사파리. 모든 브라우저는 애플리케이션이다.
문제: 시간이 흐르며 새로운 기능이 추가되는 HTML/CSS/JavaScript에, 브라우저도 새로운 버전으로 계속 업그레이드가 된다. 브라우저 버전의 파편화
https://caniuse.com/ (나 이거 쓸 수 있어?) CSS의 브라우저 별 사용 가능 여부를 찾아볼 수 있는 유명한 사이트까지 있다.
3. 반응형 웹
과거 웹 페이지의 디자인은 보통의 모니터 모양을 염두하고 만들어졌다. 하지만 시간이 지나 스마트폰과 태블릿이 등장하면서 보기 불편해 주소 앞에 m이 붙는 '모바일용 웹 페이지'를 따로 만들었다. -> 이렇게 웹 페이지를 따로 만들어서 출시하면 불편하다. 두번씩 수정해야하기 때문. -> 이런 불편을 해결하기 위해 등장한 기술이 '반응형 웹'
https://getbootstrap.com/ (반응형 웹 예시)
가로 넓이에 따른 CSS변화(부트스트랩 홈페이지) - 특정 크기가 되면 구성 요소의 레이아웃이 변한다.
CSS추가 코딩이 필요하기 때문에 작업 시간이 오래 걸린다.
7장 데이터베이스와 이미지 처리
쇼핑몰의 예를 들면 ‘회원명’, ‘아이디’, ‘주문 상품명’, ‘상품 가격’ 등의 ‘텍스트’가 데이터이다.
단 1%의 결점도 없어야 하는 데이터의 속성 - 데이터의 무결성
관계형 데이터베이스: 이렇게 다루기 까다로운 데이터를 어떻게 다룰지에 대한 하나의 방법론. 예시로 유저가 고유 번호를 갖고(세로) 이름, 성별, 생일, 주소같은 구조를 정함(가로)
테이블: 엑셀의 Sheet를 관계형 데이터베이스에서 부르는 말.
스키마(Schema) or 데이터베이스(Database): 엑셀 파일 자체를 표현하는 말.
관계형 데이터베이스 관리 시스템(RDBMS, Relational database management system): 관계형 데이터베이스의 철학으로 만들어진 관리 시스템(소프트웨어)
MS SQL, Oracle DB, MySQL, MariaDB 등
인터넷이 연결되지 않은 상태에서도 동작하는 알람 애플리케이션의 데이터는 클라이언트에 데이터가 있다.
앱스토어에 있는 “Adobe Premiere Rush CC”라는 텍스트는 어떤 스마트폰에서 접속해도 똑같이 보이도록 서버에 데이터가 있다.
회사 사정, 개발자의 상황, 개발 단계, 기능의 특성에 따라 구분이 모두 다른데, ”API 문서“를 보면 명확하게 알 수 있다.

8장 프레임워크와 라이브러리
도넛 가게 창업과 던킨도너츠 프렌차이즈의 차이
애플은 프레임워크를 제공하며, 사용법을 웹 페이지로 제공해주고 있다.
코코아(Cocoa) 프레임워크: 기기별로 존재하는 프레임워크를 통칭해 부르는 말

9장 협업, 소스관리, 디자인
커밋(Commit): 깃(Git)을 통해 개발 단계별로 ‘깃발’을 꽂는 행위. 무슨 개발을 했는지 적어주는 메모를 커밋 로그(Commit Log)라고 한다.
브랜치(Branch): 새로운 방향의 개발을 추가해야할 때 덮어쓰지 않고 새로운 가지를 뻗는 것. 하나의 프로젝트를 진행할 때 동시에 여러 기능을 충돌 없이 작업할 수 있다.
머지(Merge): 각 브랜치에서 작업한 코드를 합치는 기능
원격 저장소: 깃허브(GitHub), 비트버킷(Bitbucket) 등. 하나의 프로젝트를 여러 명에서 함께 작업하면 서로 영향을 준다든지 하는 이슈가 발생할 수 있다. 이에 개발자들이 자신의 컴퓨터(로컬)에서 작업을 한 뒤 커밋하면 그 결과를 보낼 수 있고, 이미 작업된 결과물을 가져올 수도 있는 원격 저장소를 만들었다.
디자이너와 프로그래머 사이의 가이드 역할을 하는 프로그램 - 스케치, 재플린, XD (디자이너의 작업 결과물을 수치로 보여주고 필요한 이미지 요소를 개발에 필요한 형식으로 다운로드하거나, 해당 디자인을 구현하기 위한 소스코드를 추천해주기도 함. 컬러코드 추출)
스마트폰에서는 가로와 세율의 비율이 기기마다 다른 이슈가 있다. 그렇기 때문에 클라이언트 개발자는 UI에 대한 지속적 관심이 필요하고 디자이너는 프레임워크에서 제공하는 가이드 문서에 대한 대략적인 숙지가 있어야 한다. (회사 차원에서의 대화가 가능한 문화와, 서로의 분야에 대한 공부와 배려가 필요하다)
HIG(Human Interface Guideline): 애플의 기기가 가진 방침
Material Design: 구글의 가이드
'읽기 > 밑줄 긋기' 카테고리의 다른 글
소년이 온다 - 한강 (1) | 2025.06.03 |
---|---|
아주 작은 습관의 힘 - 제임스 클리어 (0) | 2025.05.24 |
영화 '콘클라베' 중 두 개의 연설 (0) | 2025.05.08 |
영원의 아이 - 텐도 아라타 (0) | 2025.05.04 |
안녕이라 그랬어 - 김애란 (0) | 2025.04.29 |