본문 바로가기

스터디22

Ch4. 주석 4장은 주석에 대해서 다룬다. 잘 달린 주석은 그 어떤 정보보다 유용하다. 하지만 다른 의미로, 함수의 이름이나 변수의 이름만으로 의도를 정확하게 전달하지 못하고 주석으로 부가적인 설명이 필요하다는 말이 될 수도 있다. 이번 장에서는 좋은 주석과 나쁜 주석에 대해서 알아보자. 목차 더보기 목차 1. 주석은 나쁜 코드를 보완하지 못한다 2. 코드로 의도를 표현하라 3. 좋은 주석 (1) 법적인 주석 (2) 정보를 제공하는 주석 (3) 의도를 설명하는 주석 (4) 의미를 명료하게 밝히는 주석 (5) 결과를 경고하는 주석 (6) TODO 주석 (7) 중요성을 강조하는 주석 4. 나쁜 주석 (1) 주절거리는 주석 (2) 같은 이야기를 중복하는 주석 (3) 오해할 여지가 있는 주석 (4) 의무적으로 다는 주석 (.. 2023. 2. 24.
Ch3. 함수 함수는 프로그램의 가장 기본적인 단위이다. 이번 3장에서는 함수를 잘 만드는 법을 소개한다. 누군가 내가 짠 함수 코드를 보았을 때, 너무 길어서, 너무 복잡해서, 함수 이름을 이해하지 못해서, 중복되는 코드가 너무 많아서 등의 이유로 긴 시간동안 이해하지 못한다면 이 글을 읽고 함수를 짜는 방식을 고쳐보는 건 어떨까? 목차 더보기 목차 1. 작게 만들어라 2. 한 가지만 해라 3. 함수 당 추상화 수준은 하나로 4. Switch 문 5. 서술적인 이름을 사용하라 6. 함수 인수 7. 부수 효과를 일으키지 마라 8. 명령과 조회를 분리하라 9. 오류 코드보다 예외를 사용하라 10. 반복하지 마라 11. 구조적 프로그래밍 12. 함수를 어떻게 짜죠? 1. 작게 만들어라 ✅함수는 가능한 한 작게 만들어야 합.. 2023. 2. 24.
Ch2. 의미 있는 이름 1장은 클린코드가 왜 필요한지, 대부분의 코드가 왜 복잡해지고 더러워지는지, 클린코드란 무엇인지를 다뤘다. 2장부터는 코드를 클린하게 만들 수 있도록 본격적으로 시작하는 장이며, 이 챕터에서는 주로 이름(변수명, 함수명 등)을 잘 짓는 법에 대해 다룬다. 왜 이름을 잘 지어야 할까? 코드는 나 혼자만의 것이 아니다. 여러 사람들과 일을 할 때, 누군가 내 코드를 보았을 때, 한 눈에 이해할 수 있도록 코드를 깨끗하게 잘 다듬어야 한다. 그 중에 첫 단계가 바로 이름을 잘 짓는 것이다. 목차 더보기 목차 1. 의도를 분명히 밝혀라 2. 그릇된 정보를 피하라 3. 의미 있게 구분하라 4. 발음하기 쉬운 이름을 사용하라 5. 검색하기 쉬운 이름을 사용하라 6. 인코딩을 피하라 7. 자신의 기억력을 자랑하지 마.. 2023. 2. 24.
프로세스 (Process) 오늘의 주제는 프로세스!! 대부분 '프로세스와 스레드' 라는 주제의 글을 많이 볼 수 있는데, 저는 일단 프로세스를 공부하면서 연계되는 모든 과정을 최대한 나무처럼 뻗어나가면서 알아보려고 합니다. 즉, 제목은 프로세스 지만.... 내용을 보면.. 프로세스가 뭔지부터 시작해서 프로세스의 상태, PCB, fork() 등등.... 까지 들어갈 예정이랍니다. 정리해보면 아래 정도를 다룰 수 있겠네요😂 어우 진짜 CS는 알면 알수록 어디가 끝인지 모르겠지만 일단 오늘은 저정도만 보겠습니다. 아래 내용은 쉽게 배우는 운영체제 라는 책을 참고해서 작성했습니다 :) 프로그램? 프로세스? 뭐가 다른거야? 일단 프로그램은 하드디스크 같은 저장장치에 저장되어있는 정적인 상태를 말합니다. 어떠한 데이터를 사용해서 어떤 작업을.. 2021. 5. 19.
메모리 단편화 (Memory Fragmentation) 메모리 단편화가 뭐지? 먼저 컴퓨터를 공부하는 사람이라면 주기억장치에 대해 들어본 적 있죠? 주기억장치는 CPU가 직접 접근하여 처리할 수 있는 고속의 기억장치 (Memory) 로, 현재 수행되는 프로그램과 데이터를 저장하고 있습니다. 종류로는 ROM과 RAM이 있죠. 이 주기억장치에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 메모리 단편화가 발생했다고 합니다. 그리고 이 메모리 단편화는 내부 단편화와 외부 단편화로 구분할 수 있습니다. 내부 단편화 (Internal Fragmentation) 메모리를 할당할 때, 프로세스가 필요로 하는 크기보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황을 말합니다. 예를 들어,.. 2021. 4. 14.
메모리 구조에서 Stack과 Queue의 역할 메모리 구조에서 왜 Stack과 Queue가 필요하지? 라고 생각하실 수 있겠지만.. 메모리 구조를 공부하시다보면 스택, 힙, 데이터, 코드 영역이 있는 거 아시죠? 여기서 스택 영역을 우리가 생각하는 Stack 역할로 생각할 수 있고, 힙 영역을 Queue 역할로 생각할 수 있습니다. 여기서 힙과 큐를 혼동하실 수 있는데요, 지금 말하는 의미는 같지만 큐는 자료구조론에서 사용하는 용어이고 힙은 메모리 관련 용어로 사용한다고 생각하면 될 것 같네요! 그리고 이런 스택과 큐의 원리를 메모리 구조에서는 보통 데이터를 처리할 때 데이터를 임시로 저장하거나, 입/출력 장치의 데이터를 일시적으로 저장할 때 사용합니다. 데이터를 잠시 보관해두는 일을 하기 위해 메모리 주소와 인덱스를 일일이 지정하는 일은 너무 복잡.. 2021. 4. 14.
OSI 7계층이 뭐지?? 오늘은 네트워크 공부에서 빠질 수 없는 OSI 7계층에 대해서 알아보려 합니다. 솔직히 OSI 7계층에 뭐가 있는지, 각 계층의 역할이 뭔지 그냥 단순히 암기하기에는 내용이 많기도 해서 암기한답시고 단순하게 공부해놓으면 나중에 헷갈릴 때가 많습니다. 그리고 저는 단순암기보다 이해를 해야 기억에 더 잘 남는 편이라.. 이번에는 동작방식을 하나씩 따라가보며 이해해보려고 합니다...😄 먼저, OSI 7계층이 뭘까요?? 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 도대체 왜 나눴을까요? 우리의 공부량을 더 늘이기 위해서는 아니겠죠? 이렇게 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있도록 하기 위함입니다. 7단계 중 특정단계에서 이상이 생기면 다른 단계의 장비 및 소프트.. 2021. 2. 7.
RESTful API란? 안드로이드/iOS 개발을 하면서 API 통신을 할 때 보는 것이 RESTful API였는데요, 평소 RESTful API가 무엇인지 두루뭉실하게만 알고 있어서 누군가 물어본다면 얼버무리게 되어 한 번쯤은 날 잡고 정리를 해보고 싶었습니다. RESTful API가 뭔지 설명하기까지 우리가 알아야 할 건 REST가 무엇인지, REST가 가진 원칙이 무엇인지, 그래서 RESTful API가 무엇인지, 어떤 규칙이 있는지, 응답상태코드는 어떤게 있는지 등을 알아야 할 것 같습니다. 그럼 시작해볼까요? REST란? REST는 Representational State Transfer의 줄임말입니다. 그냥 직역하면 대표적인 상태 전송이 되네요? 이게 무슨 말일까요? REST는 자원을 이름(자원의 표현)으로 구분하여 .. 2021. 1. 28.
TCP 동작 방식 (3-way handshake, 4-way handshake) 웹 서비스 동작 방식을 보면, 사용자가 url을 입력하면 도메인 주소를 이용하여 DNS에서 IP 주소를 얻어오고, 그렇게 얻어온 IP 주소를 웹 데이터 형식으로 변하여 TCP 통신을 통해 웹 서버와 주고받게 됩니다. 이때 TCP 통신을 하기 위해 3-way handshake로 접속을, 4-way handshake로 접속 해제를 해주는 데요. 오늘은 TCP 동작 방식을 알아보기 위해 3-way, 4-way handshake 과정을 알아보겠습니다. Socket 생성 Client는 운영체제에 socket( ) 시스템 콜을 이용하여 소켓을 생성합니다. 운영체제는 소켓의 정보를 저장하기 위해 메모리 영역을 할당하고, 소켓 정보를 저장합니다. 3-way handshake Client는 Server와 연결하기 위해 .. 2021. 1. 8.
Web의 동작원리 이제는 생활에서 빼놓을 수 없는 인터넷. 하지만 정작 웹 사이트가 어떻게 동작하는지 아시나요? 그래서 오늘은 웹 URL을 입력하는 것부터 해당하는 웹 사이트가 나에게 보여질 때까지 어떤 과정이 일어나는지 알아보았습니다. (1), (2) 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력합니다. (3) 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색합니다. 도메인 네임이란, 웹 사이트의 주소를 찾기 위한 고유한 문자형 주소체계입니다. 원래 컴퓨터나 통신장비 간 통신에 최적화된 주소체계는 IP 주소지만, IP 주소는 숫자로 이루어져 있어서 사람이 기억하기 어렵기 때문에 도메인을 사용합니다. (4) DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 .. 2021. 1. 4.
DeadLock (교착 상태) 교착상태란? 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하여 무한정 기다리게 되는 현상을 데드락(DeadLock). 즉, 교착 상태 라고 합니다. 여러 개의 작업이 동시에 실행되는 멀티 프로세스, 멀티 스레드 프로그래밍 환경에서 발생할 수 있는 이슈입니다. 교착 상태에 대해 알아볼 때면 자주 등장하는 예시가 있는데요. 바로, 식사하는 철학자들 입니다. '식사하는 철학자들'은 운영체제의 교착 상태를 설명하기 위해 다익스크라가 만든 문제라고 합니다. 그 내용은 바로 이렇습니다. 5의 철학자들이 원형 식탁에 둘러앉아 식사를 하는데, 철학자들 사이에는 포크가 하나씩 놓여 있다. 철학자들이 식사를 하기위해서 지켜야 하는 규칙이 있는데, 바로 아래와 같다. 1. 왼.. 2020. 12. 21.
메모리 구조를 알아보자. 메모리 구조 운영체제는 프로그램의 정보를 읽어 메인 메모리에 공간을 할당해 로드한다. 이 메모리의 구조를 알아봅시다 ^_^.. velog.io 데이터나 프로그램을 저장하는 저장 공간은 계층 구조를 가집니다. CPU에 접근속도가 빠른 순으로 Register, Cache, Main Memory, External Memory로 볼 수 있는데, 이 게시물에서는 메인 메모리의 공간 구조를 다룰 것입니다. 제가 메모리 구조에 대해 궁금해지게 된 것은 프로세스와 스레드의 차이점을 공부한 이후였습니다. 프로세스는 각 메모리 영역을 독립적으로 할당받고, 스레드는 Stack 영역만 독립적으로 할당받고 나머지 Heap, Data, Code 영역은 같은 프로세스 내의 다른 스레드와 공유한다는데 도대체 이 4가지 영역의 특징이.. 2020. 12. 10.