본문 바로가기

CS

(43)
[Clean Code | 3장 함수] Day03, 04 ch03 함수 기억하고 싶은 부분 함수가 작을수록 더 좋다 좋다면서 5줄로 줄이는 것을 권장하는게 인상 깊다 중첩 구조가 생길만큼 함수가 커져서는 안 된다. 함수 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다. 우테코 코딩 룰이 함수당 15줄, 들여쓰기는 1단이라고 몇년 전에 들었었는데 그 방식이 떠올랐다. 함수는 한가지를 해야한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 함수를 만드는 이유는 큰 개념을(함수 이름을) 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서가 아니던가 “코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다” 함수 이름을 정할 때는 여러 단어가 쉽게 읽히는 명명법을 사용한다. 그런 다음, 여러 단어를 사용해 함수 기..
[Clean Code | 2장 의미있는 이름] Day02 기억하고 싶은 부분 " 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다 " "변수(혹은 함수, 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다" Before int d; // 경과 시간(단위: 날짜) After int elapsedTimeInDays; int daysSinceCreation; int daysSinceModeification; int fileAgeInDays; "발음하기 쉬운 이름은 중요하다. 프로그래밍은 사회 활동이기 때문이다." "전문가 프로그래머는 자신의 능력을 좋은 방향으로 상요해 남들이 이해하는 코드를 내놓는다" "의미를 해독할 책임이 독자에게 있는 논문 모델이 아니라 의도를 밝힐 책..
[Clean Code] Day 00 2~3년 전쯤 사놓고 먼지만 자연스럽게 쌓아두던 클린코드를 노마드코더에서 챌린지가 있는 김에 읽어보려한다. 마침내! 첫날은 구비한 책 인증이라 이렇게 글을 소박하게 남겨보게 되었다 사진의 흔들림이 현장감이 느껴져서 뭔가 뭔가 리얼하다
Code 컴퓨터 과학은 추상화의 예술이라는 말이 왜 그러한지 이 책을 읽으며 좀더 구체적으로 느끼게 해준다. 코드네임의 코드가 어떤 것에 다른 의미를 부여한 것처럼 여기서 코드도 사람이 의미를 부여한 것으로 이해되었다. 우리는 전기 신호가 안갔는지 갔는지에 따라 0, 1을 부여한다. 그 0,1을 가지고 특정 자리수로 끊어서 의미 부여를하고(bit, byte, etc..) 그 특정 자리수마다 있는 값을 가지고 역시 의미부여를 한다. (ascii code, unicode) 같은 100110110 이라는 값이더라도 어떻게 끊어서 처리하느냐에 따라 달라진다. "아버지가 방에 들어가신다." "아버지 가방에 들어가신다." 같은 느낌이다 도입부들은 정말 호기심을 자극하고 어렵지 않게 쓰여있지만 챕터 7부터 어려웠다. 이후로 ..
프로그래머의 뇌 https://product.kyobobook.co.kr/detail/S000001952236 프로그래머의 뇌 | 펠리너 헤르만스 - 교보문고 프로그래머의 뇌 | 인지과학을 활용한 개발자의 일머리 개선법이 책은 인지과학에 기반을 둔 각종 방법론으로 개발자가 새로운 언어나 프레임워크를 빠르게 배워 생산성을 향상하도록 돕는다. product.kyobobook.co.kr 프로그래머가 코드를 읽을 때 두뇌가 어떻게 자극되는지 코드들을 읽는 과정에서 스스로 왜 그런지 느껴지게 이해시켜주며 본인의 생각을 설득하기 위해 표본이 충분한 여러 실험결과를 근거로 뒷받침해주어서 좀더 믿으며 읽을 수 있습니다 크게보면 LTM(Long Term Memory)가 있어야 코드를 빨리 읽고 프로그래밍을 잘할 수 있다는 틀로 이해헀습..
[IT vocabulary 00] PHP, Script Langague PHP(Personal Home Page Tool, PHP: Hypertext Preprocessor) server side 스크립트 언어 C언어 기반언어 웹 시스템에 기반이 되는 언어 e.g) Ruby, Java script, Perl 등등 Script Langague 응용 소프트웨어를 제어하는 프로그래밍 언어 연근용어인 scripts에서 유래됨 웹페이지에 특정한 행동을 수행하라고 한다. 일반적으로 스크립트 언어는 매우 빠르게 작성된 코드를 실행하기 위해 만들어졌다 Ref http://www.tcpschool.com/php/php_intro_intro 위키
메모리 Memory CPU에서 연산하기 위해서는 데이터 필요하다. 데이터를 쓰기 위해서는 데이터가 저장되어 있어야할 공간이 필요하다. 그 공간이 Memory Memory 종류는 크게 휘발성, 비휘발성 두가지로 나뉜다. Main Memory에 적재되어야만 CPU에서 접근이 가능하여 데이터 처리가 가능해진다. 여기서는 Random Access Memory만 알아본다. 아래는 Memory 피라미드 구조 위로 올라갈수록 빠르고 용량 대비 비싸다. 휘발성이다. 밑에 있는것 Secondary Memory부터 비휘발성 용량 대비 저렴하며 속도가 느리다. 자세한 내용은 노션에 이어서. https://www.notion.so/4574847bde754357882ced99b0886e01
[OS] System call 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 운영체제의 구성상 커널과 응용프로그램은 CPU의 권한 수준이나 하드웨어 접근 능력이 다르다. 운영체제는 커널모드(mode bit=0)와 사용자모드(mode bit=1)로 나뉘어 구동된다. 운영체제에서 프로그램이 실행될 때 많은 부분이 커널 모드를 사용한다. 응용프로그램(고급언어로 작성된 프로그램)은 직접 커널영역에 접근 할 수 없기에 System call을 통해 접근한다. 정리한 내용은 아래의 노션 주소와 같다. www.notion.so/System-call-c12eba9560be4c47a0a2f0a38c9dc566 System call 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 ..
[Network] OSI Model 대화를 할때 같은 언어를 사용해야 원활하다. 프로그램 간의 통신도 같다. 그런 이유로 ISO에서 만든 것이며 계층이 나뉘는 이유는 분업과 같다. 모두가 같은일은 처음부터 끝까지 하는거보다 단계별로 나누어 처리하면 더욱 효율적이다. 그래서 계층별로 역할이 나뉜다. 정리한 내용은 아래의 노션 주소와 같다 www.notion.so/OSI-model-f63f713261a744d2815b039fd07666d2 OSI model OSI(Open Systems Interconnection) model www.notion.so
[인프런|Binary Search Tree(1)] 영리한 프로그래밍을 위한 알고리즘 강좌 Binary Search Tree Dynamic Set 데이터들이 고정되어 있지 않고 추가, 삭제, 수정 등으로 계속해서 바뀌는 집합을 Dynamic set이라 한다. Dynamic set, Dictionary(hash 타입 데이터 구조), Search Structure 등으로 불린다. Search Structure 새로운 데이터의 추가와 삭제가 가능 쉽게 생각했을 때 배열, 연결 리스트를 사용 가능 데이터를 정렬해서 저장 혹은 정렬하지 않고 저장 - 배열 정렬 안 된 경우 데이터의 검색, 추가, 삭제 - Search 최악의 경우 O(n) - Insert 마지막에 추가 하기에 O(1) 만약 공간이 모자라서 malloc 해야 하는 경우 새 배열에 기존 값을 다 복사해야 하므로 O(n) - Delete 인덱..