일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 출처는 코딩애플
- 출처는 코딩앙마
- 나는 flux좋아...
- 유틸리티타입은 공식문서 자주 보자
- 에릭노이먼
- 흥달쌤
- https://product.kyobobook.co.kr/detail/S000001952246
- 클린코드다시읽기
- 출처 : 한입크기로 잘라먹는 타입스크립트
- 함수형 코딩
- 출처 : 코딩애플
- 출처 : 코딩앙마
- 쏙쏙 들어오는 함수형 코딩
- 쏙쏙 들어오는 함수형코딩
- 갈길이 멀구나
- 자바스크립트 딥다이브
- 리엑트를 다루는 기술
- 로버트 C마틴
- 쏙속 들어오는 함수형코딩
- 출처 : 자바스크립트 딥다이브
- 오종택개발자님
- 김영한쌤
- 생코님Redux
- 고등애플
- 에릭 노먼드
- 출처 : https://www.boostcourse.org/
- 큰돌의 CS책
- 에릭 노이먼
- 쏙쏙들어오는함수형코딩
- 이웅모
- Today
- Total
목록[오늘의 공부]/CS (9)
폭파할까 말까 고민중인 잡지식 메모장

1. Single Responsibility Principle (단일 책임 원칙) - 각 모듈은 하나의 책임만을 담당해야 한다. 각 모듈은 변경되는 이유가 하나여야 한다. 하나의 함수가 하나의 동작만 하도록 설계하라는 원칙 (모듈을 설계할때는 빵공장을 세우는 것이아닌 '반죽하는 기계', '빵굽는 오븐'과 같이 각자의 역할을 하는 기계를 만드는 것) **설계할 때 고려사항이 뭐가 있을까? 하나의 책임맡고있니, 응집도높게, 결합도낮게, 우리 조직은 소통에 있어서 유연한가, 2. Open-closed Principle (개방-폐쇄 원칙) 확장하는 것에는 열려있고, 수정에는 닫혀있도록 한다. 기존코드를 변경하지 않고(closed), 새로운 코드를 추가하는 것(open)으로 기능 추가 할수있도록 설계해라. -> ..
소프트웨어 공학 : 품질 높은 소프트웨어를 개발하기 위한 학문 [개발단계] : - 계획(비용, 일정...) - 요구사항 분석(고객의 요구사항을 듣자, 과다한 것들은 협상) - 설계(어떻게 동작하는지 설계정의 - 디자인 / ) - 구현(스토리보드보고 실제 프로그램 코딩, 디버깅, 단위테스트진행) - 테스트(요구사항만족하는지) - 유지보수(문제수정, 발전) - 3R : 역공학(Reverse Engineering) , 재공학(Re-engineering), 재사용(Reuse) - 역공학 : 개발산출물분석을 통해 설계수준분석하여 문서화진행 - 재공학 : 유지보수를 통해 기존 소프트웨어를 해결(분석해서 재구성함-> 역공학-> 마이그레이션), 예방 유지보수 - 재사용 : 일부를 다른 프로젝트에 재사용함(합성중심 :..
재귀 Recursion ? 자기 자신을 호출하여 문제를 해결하는 프로그래밍 더 작고 더 간단한 하위문제로 분할됨 (즉, 전체중 일부 하위문제해결법을 가지고 전체문제를 해결함)나의 경우에 재귀를 떠올릴때면 ? 생각나는 그림이 엘리베이터에 탔을 때 서로 마주본 거울 같은 느낌이다. 마주 본 거울은 계속 자신을 반사반사반사하면서 작아지고 어떤 한 점에 이른다. 재귀를 쓸 때 생각 할 것들1. Base case(종료조건)이 필요함 2. 자기 자신을 호출해야 하고 하위 문제를 결합하여 전체에 대한 해결책을 얻어야 함 (recursive case)3. 재귀 호출시 반드시 종료조건으로 수렴할 수 있도록 하는 조건 필요4. 호출할때마다 콜스텍을 쓰기 때문에 메모리..
Array 일반적으로 배열은 메모리에 할당된 연속적인 공간을 차지함 int arr[5] = {1,2,3,4,5}; //메모리에 연속적인 공간에 1,2,3,4,5를 할당함 //컴퓨터는 배열의 첫번째 값의 메모리주소만을 기억함 //인덱스로 배열에 접근하면 컴퓨터는 첫번째 메모리주소로부터 인덱스만큼 떨어진 곳을 찾아 값을 가져옴 //그렇기 때문에 참조시 O(1)의 성능을 가짐 => 참조는 빠름 처음에 5만큼의 크기를 차지할 배열을 선언하고 이후 10만큼의 크기로 변경하려고 하면 컴퓨터는 크기가 10인 연속적인 공간의 메모리를 다시 찾아야 하고, 값도 복사해서 다시 할당함 + 데이터 중간에 삽입하면 모든 데이터의 위치를 변경해야 하기 때문에 오버헤드 많이 발생 => 일반적으로 배열은 데이터 추가 삭제에 있어서 ..
1) 메모리 주소 0 1 2 3 4 5 6 7 8 9 A B C D E F => 16진수 (Hexadecimal) ㄴ컴퓨터에서는 16진수를 많이 씀 ㄴ2진수로 표현하면 너무 길어서, 처리할 때 16진수가 유용 ㄴ0x는 그냥 붙여서 0x뒤에 오는 문자나 숫자가 16진수임을 알려줌 #include int main(void) { int n = 50; printf("%p\n", &n); //&n는 'n의 주소'를 의미하는 연산자 , %p는 주소출력해줌 printf("%i\n", *&n); //&n앞에 붙은 *은 그 주소의 값으로 접근해달라는 의미 //만약 변수의 자료형을 모른다면 어쨌든 뭐든 지정해줘야함 } 2) 포인터 ㄴ변수는 메모리 주소를 저장하고 있고, 변수의 값은 변수가 저장한 메모리주소에 저장되어있음 ..
1) 검색알고리즘 - 선형검색(linear) ㄴ 배열을 하나씩 순회하면서 찾아봄 For i from 0 to n–1 If i'th element is 50 Return true Return false - 이진검색(binary) ㄴ배열이 정렬되어있다는 것을 전제로, 배열 중간부터 찾아서 찾고자 하는 값과 비교함 ㄴ찾고자 하는 값이 찾은 값보다 크면 오른쪽, 찾고자 하는 값이 찾은 값보다 작으면 왼쪽으로 이동함 If no items Return false If middle item is 50 Return true Else if 50 middle item Search right half 2) 알고리즘 표기법 - Big O 표기법 ㄴ..
문자의 형변환 #include int main(void) { char c1 = 'H'; char c2 = 'I'; //char는 ''single quotes사용필수(string은 "") char c3 = '!'; printf("%i%i %i\n", (int)c1,(int)c2,(int)c3); //c1,c2,c3을 int로 형변환해서 프린트 //7273 33 //printf("%i%i %i\n", c1,c2,c3); 위 와 똑같은 결과 볼수 있음 } #include #include int main(void) { int s1 = 72; int s2 = 73; int s3 = 33; printf("Average : %i\n", (s1+s2+s3)/3); } 위와 같은 코드 디자인은 좋지 않음 (아래와 같이 ..
컴파일링 과정 1) 전처리(precompile) : 전처리기에 의해 수행, #으로 시작하는 c의 소스코드들을 먼저 실행 2) 컴파일 (compile) : 컴파일러에 의해 수행, 소스코드 => 어셈블리 코드(저수준 프로그래밍 언어) 3) 어셈블(assemble) : 어셈블러에 의해 수행, 어셈블리 코드 => 머신코드(오브젝트코드) 4) 링크(link) : 생성된 머신코드(오브젝트 코드)들을 모아서 하나의 파일로 만들어줌 디버깅 버그: 개발자가 프로그램 내 의도하지 않은 실수 //bug.c int main(void) { printf("hello\n"); } 위와 같이 입력하고 터미널에서 컴파일요청($make bug)하면 에러발생함 help50 $help50 make bug help50을 요청 하면 터미널에 ..
https://sandbox.cs50.io/ 1) C 기초 //hello.c #include int main(void) { printf("hello world\n"); // \n 줄바꿈의미 } 스크래치에서 블록은 시작하는 역할 ; (세미콜론)은 코드를 끝내는 의미 C에서는 스크래치의 블록과 같은 함수를 사용하기 위해 컴퓨터에게 그 함수가 어디에 있는지 알려줘야 함 ㄴ> printf같은 함수는 stdio.h안에 있다는 것을 알려주기위해 #include 작성함 (~함수쓰려면 stdio.h파일 보라고 하는것) source code(**언어로 입력한 코드) => 컴파일러(번역기) => machine code(컴퓨터가 이해할수 있는 2진수코드) 프롬프트에 $clang hello.c 라고 입력후 엔터치면 a.out..