일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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좋아...
- 출처 : 코딩애플
- 생코님Redux
- 자바스크립트 딥다이브
- 갈길이 멀구나
- 흥달쌤
- 출처 : 자바스크립트 딥다이브
- 출처 : https://www.boostcourse.org/
- 에릭 노먼드
- 로버트 C마틴
- 쏙쏙 들어오는 함수형 코딩
- 오종택개발자님
- 에릭 노이먼
- 함수형 코딩
- 이웅모
- 김영한쌤
- 에릭노이먼
- 쏙쏙들어오는함수형코딩
- 출처 : 코딩앙마
- 출처는 코딩앙마
- 출처 : 한입크기로 잘라먹는 타입스크립트
- https://product.kyobobook.co.kr/detail/S000001952246
- 큰돌의 CS책
- 쏙속 들어오는 함수형코딩
- 출처는 코딩애플
- 고등애플
- 쏙쏙 들어오는 함수형코딩
- Today
- Total
목록분류 전체보기 (133)
흰둥씨의 개발장
함수형 프로그래밍 ? 1. 수학함수를 사용하고 부수효과를 피하는 것이 특징인 프로그래밍 패러다임 2. 부수효과 없이 순수 함수만 사용하는 프로그래밍 스타일 부수효과 ? 함수가 리턴값 이외에 하는 모든 일 순수함수? 인자에만 의존하고 부수효과가 없는 함수 (인자에만 의존 = 같은인자를 넣으면 항상 같은 결과를 돌려줌 = 수학함수) 실용적 측면에서 함수형 프로그래밍 정의의 문제가 있기 때문에 "학문적접근 보다 기술과 개념으로 보기" ㄴ1. 부수효과는 실제로 필요함 (=> 필요하면 써야함) ㄴ2. 함수평프로그래밍은 부수효과를 잘 다룰 수 있음 (=> 부수효과가 필요하지만 문제될 수 있음을 인지하고 대응할 것) ㄴ3. 함수형 프로그래밍으로 잘 만든 소프트웨어가 많음(실용적) 함수평 프로그래머는 코드를 3분류로 ..
1) 내부 슬롯(internal slot)과 내부 메서드 (internal method) ㄴ자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAscript사양에서 사용하는 pseudo property와 pseudo method const myObject = {}; myObject.[[property]]//SyntaxError; 내부 슬롯은 자바스크립트 엔진의 내부로직으로 직접접근불가 myObject.__proto__ // Object.prototype ; 일부 내부슬롯, 내부메서드 한하여 간접접근가능 2) 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 ㄴ자바스크립트 엔진은 프로퍼티 생성할때 프로퍼티 상태를 나타내는 속성을 기본값으로 자동정의함 ㄴ프로퍼티 상태 ? 프로퍼티의 값(value), 값갱신가..
npm install typescript @types/node @types/react @types/react-dom @types/jest ㄴreact 모듈 설치후 위 명령어 입력 js 파일 => .ts jsx파일 => .tsx interface IProps { word : IWord; } export interface IWord { //export하면 다른 파일에서도 IWord사용가능 day: string; eng: string; kor: stirng; isDone: boolean; id:number; } export default function Word ({word : w} : IProps) { //{word:w}의 타입을 IProp로 정의 (...) } import Word, {IWord} from..
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을 요청 하면 터미널에 ..
Partial interface User{ id:number; name:string; age:number; gender: "m" | "f"; } /* let admin :User = { id:1, name:"bob", } 위와 같이 입력하면 age와 gender 속성을 입력하지 않아서 에러뜸 아래와 같이 partial을 이용하면 interface의 속성에 ?: (optional)로 지정한것 과 같음 */ //interface User{ //id?:number; //name?:string; //age?:number; //gender?: "m" | "f"; //} let admin : Partial = { id:1, name:"bob", //age랑 gender가 없어도 에러 안뜸 } Required int..
함수 function getSize (arr:T[]) :number{ //으로 구성된 배열을 매개변수로 받고, //리턴값은 항상 number로 함 return arr.length } const arr1 = [1,2,3]; getSize(arr1); //3 const arr2 = ["a","b","c"]; getSize(arr2); //3 const arr3 = [true, false, true]; getSize(arr3); const arr4 = [{name:"Hyo"}, {key:"1"}, {cat:"jr"}]; getSize(arr4); 객체 interface Mobile { name:string; price:number; option:T; } const m1 :Mobile = { name:"uni1..
접근제한자 (Access modifier) - public ㄴ자식클래스나 클래스 인스턴스에서 접근가능 ㄴ아무것도 안적혀있으면 모두 public으로 간주됨 -private ㄴ본인 클래스 내부 에서만 접근가능 ㄴ자식클래스 내부에서 사용할 수 없음 ㄴ변수앞에 #붙이면 private으로 처리됨 -protected ㄴ자식클래스에서 접근가능 ㄴ클래스 인스턴스에서 접근 불가 class Car { protected cat:string = "lovely"; private price : string = '1million'; #path : string = ''; //#은 private과 동일한 표기 readonly middlename : string = "hyo"; readonly lastname : string = "su..
리터럴 //리터럴 const userName1 = "Bob"; //username1은 "Bob" let userName2 = "tom"; //username2는 string으로 뜸 // userName2 = 1; // let으로 선언된 변수임에도 에러남 : 초기에 할당된 값이 string이어서 //숫자넣고 싶으면 아래와 같이 명시적 작성 해야함 let userName3: string | number = "Jane"; userName3 = 1; userName3 + 1 ;// 불가 string | number + 1은 허용 안되고 있음 (Narrowing으로 해결가능 : 함수 포스트참고) type Job = "police" | "developer" | "teacher"; //Job은 3가지로만 입력가능 i..
"변수 ?: 타입" 의 의미 ㄴ> 변수 : 타입 | undefined와 같음 string + number (가능) number + number (가능) (string | number) + number (불가능) => 유니온 타입은 타입이 확실하지 않다고 처리해서 더하기 연산 불가 function add (x :number | string) { if(typeof x === 'number'){ //narrowing : 애매한 유니온타입의 연산시 미리 검사해줘야 함 console.log(x + 1); } } 매개변수, 리턴값에 대한 타입지정 / 매개변수를 옵셔널하게 지정할 때 //함수 function addCalc (num1:number, num2:number):number {//():타입은 리턴값에 대한 타..