본문 바로가기

분류 전체보기

8월 1주차 계획 8월 1주차 2일 JPA 활용 2편, 기본편 정리 nest JS 3일 JPA 활용 2편, 기본편 정리 4일 JPA 활용 2편, 기본편 정리 함수형 프로그래밍 2편 (1/4) 5일 쿠버네티스 기초 공부, nestJS 함수형 프로그래밍 2편 (2/4) 6일 탄탄한 백엔드 NestJS, 기초부터 심화까지(1/2) 함수형 프로그래밍 2편 (3/4) 7일 탄탄한 백엔드 NestJS, 기초부터 심화까지(2/2) 8일 부족분 보충 함수형 프로그래밍 2편 (4/4) 1분 파이썬, 코딩 도장 파이썬 js 30 지지난주부터 express 가지고 백엔드 서버 api 만들어보면서 nest는 뭐길래 자꾸 보이는거지? 싶어서 계획표에 넣어봤다 ㅎㅎ nodejs나 express로 서버를 구축하면 굉장히 자유롭다는 점이 장점이지만 .. 더보기
JS 함수형 프로그래밍 - 병렬처리 병렬적 처리 지금까지는 프로미스의 resolve() 함수가 결과를 바로 만들어내도록 해서 콜스택이 비워지면 프로미스들이 즉시 처리되도록 예제가 구성되었었다. 만약 프로미스가 시간이 어느정도 걸리는 작업들이라면 지연평가에서는 어떻게 처리되고 있을까? const delay1000 = a => new Promise(resolve => { setTimeout(() => resolve(a), 1000); }) console.time(''); go([1,2,3,5,5,5,5], L.map(a => delay1000(a*a)), L.filter(a => a%2), reduce(add), console.log, a => console.timeEnd('')); 위 코드는 go함수의 첫번째 인자인 배열 내부에 있는 원소 .. 더보기
JS 함수형 프로그래밍 - 비동기, Promise [2] go, pipe, reduce 에서의 비동기 제어 이해하기 많이 어려웠던 코드... 이벤트 루프의 동작을 고려하며 분석해보자. 우선 go 함수와 reduce함수를 통해 promise도 다룰 수 있도록 만들 수 있다. reduce코드를 조금만 수정하면 된다. go(1, a => a+ 2, a=> Promise.resolve(a + 100), //Promise 등장 a => a+ 20, a => a+ 200, (a) => console.log('go 결과', a)); const reduce = curry((f, acc, iter)=> { if(!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } else { iter = iter[Symbol... 더보기
JS 함수형 프로그래밍 - 비동기, Promise [1] 비동기 다루기 JS에서 비동기 동시성 프로그래밍을 하는 방법은 두가지이다. 1. 콜백 2. 프로미스 , async , await function add10(a, callback) { setTimeout(() => callback(a+10), 100); } //전달받은 콜백함수에 100ms 있다가 a + 10 을 해서 넣어주는 함수 function add20(a) { return new Promise(resolve => setTimeout(() => resolve(a+20), 100)); } add20(5) .then(add20) .then(add20) .then(add20) .then(add20); add10과 add20의 차이는 add20은 프로미스를 리턴한다는 것이다. 이는 중첩해서 사용할 경우에 큰.. 더보기
JS 함수형 프로그래밍 - 지연성 지연성을 가지는 함수들 지연성은 es6부터는 공식적으로 약속된 규약이 되어, 지연성을 다루는건 js의 고유한 규칙이 되었다. (결합과 합성이 가능) 1. range 함수 const range = n => { let res = []; for(let i = 0 ; i < n ; i ++) { res.push(i+1); } return res; } const L = {} L.range = function *(n) { let i = -1; while (++i < n) yield i; return; } console.log(range(5)); // [1,2,3,4,5] console.log(L.range(5)); //Object [Generator] {} const Literable = L.range(5) con.. 더보기
JS 함수형 프로그래밍 - 이터러블, 이터레이터, 제너레이터 우선 함수형 프로그래밍 공부를 시작하며 알아야할 용어가 있다. 평가 : 코드가 계산되어 값을 만들어내는 것 일급함수 : 자바스크립트에서 함수는 일급함수이며 이는 함수가 값으로 다뤄질 수 있음을 의미한다. 고차함수 : 함수를 인자로 받아서 다루는 함수 함수형 프로그래밍에 대해서 익숙해지려면 우선 위의 단어들부터 익숙해져야했다 😂 이터레이터와 이터러블, 제너레이터 먼저 이터레이터와 이터러블에 대해 알아보자. // es5 에서의 리스트 순회 const list = [1,2,3] for (let i =0 ;i < list.length ; i++) { console.log(list[i]); } //es6에서의 리스트 순회 for(const a of list) { console.log(a); } es6의 순회는 단.. 더보기
this 와 클로저 this this가 필요한 이유? 👉 특정 함수를 여러 객체에서 사용할 수 있기 위해서이다. this는 해당 함수를 실행한 객체를 가리키기 때문에 this를 활용하면 여러 객체가 호출하여 사용할 수 있게 해준다. this를 제어하는 방법. >> this에 할당되는 객체를 원하는대로 지정하는법 Call 함수.call() 하면서 첫번째 인자로는 객체를 넘김 그러면 해당 함수내의 this는 첫번째 인자 객체의 this 이다. apply 함수.apply() 하는데 call과 동일하게 첫번째 인자는 객체 그리고 두번째 인자는 배열로 넘겨줌. 위 두개는 다시말해 this에 할당되는 객체를 지정할 수 있다.! bind 객체를 전달하면 메소드의 this는 해당 객체로 고정됨. Arrow function arrow fu.. 더보기
JPA 엔티티 매핑1 엔티티와 PK JPA를 사용해서 테이블과 매핑하고 싶은 클래스는 @Entity 어노테이션을 달아줘야한다. 테이블과 매핑을 할거니 pk가 필요한데 @Id 어노테이션을 필드위에 달아줌으로써 이 필드가 pk이다 라는 것을 jpa에게 알려줘야한다. @GeneratedValue 라고 하면 jpa가 알아서 id를 할당해준다. 여기서 JPA의 영속성을 통해서 id 값을 확인해보면 JPA가 알아서 id 값을 세팅해주었으므로 p.getId() 를 출력해보면 어떤 id 가 할당되었는지 확인이 가능하다. id 값을 생성하는 전략은 총 4가지가 있다. 수업에서는 SEQUENCE 만 알려주셨는데 나머지는 궁금해서 찾아봤다. 1. SEQUENCE 수업에서 알려주셨던 방법 이렇게 auto increment를 해주면서 id값이 정해.. 더보기
스프링부트 테스트 영속성과 JPQL 보호되어 있는 글입니다. 더보기
JPA와 영속성 https://www.inflearn.com/course/ORM-JPA-Basic 을 공부하며 정리한 글입니다. JPA의 등장배경 JPA는 sql을 하나하나 작성하지 않고도 데이터베이스에 CRUD 작업이 가능하도록 하고 무엇보다 객체적인 설계와 데이터베이스 모델링의 차이를 없애주기 위해서 등장했다. 이 JPA를 사용함으로써 객체를 컬렉션에 저장하듯이 저장하는 것이 가능하다. 객체적인 설계와 DB 모델링의 차이라고 하면 객체에서는 다른 객체에 대한 참조값을 지니게 되지만 디비 세상에서는 그런게 없다... 다른 테이블의 외래키를 들고 있을 뿐이다. 데이터 베이스 모델링대로 코딩하면 다음과 같이 된다는 말이다. //객체 모델링 class Student { private School school; private.. 더보기