분류 전체보기
-
[Node.js] 4일차교육 2019. 9. 11. 01:46
수업 내용 정리 - ORM - 모델 간의 관계 ORM (Object Relational Mapping) - 객체 지향 프로그래밍 언어와 관계형 DB 간의 매핑을 지원하는 프로그래밍 기술 - Object-relational mapping (ORM) in computer science is a programming technique for converting data.........~ - 객체와 관계형 DB의 테이블 간에 불일치를 해결해줌 (중간 다리 역할) Sequelize - 프로미스 기반 Node.js ORM 라이브러리 - Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. 모델 관계 설정 - associate안에 적어줌 let Products = ..
-
[Node.js] 3일차교육 2019. 8. 28. 00:19
수업 내용 정리 - Promise - async/await 콜백 함수 - 자바스크립트에서는 비동기 처리를 위해 콜백 함수 사용함 - 자바스크립트에서는 거의 대부분의 작업이 비동기로 동작함 - 비동기 처리의 단점은 실행 순서 파악이 어려움 (순서대로 처리되지 않을 수 있음) - 따라서, 코드 실행 순서가 뒤죽박죽 될 수 있는데, 이럴 경우 콜백 함수를 이용해서 해결함 - 함수로부터 결괏값을 받지 않고, 결괏값을 이용해서 로직을 처리하는 콜백 함수를 넘김 콜백 헬 - 비동기 처리를 위해 콜백 함수를 사용했더니, 콜백 헬이 등장 - 콜백 함수를 중첩하다 보니 계속해서 들여 쓰기 해야 해서 코드 가독성이 떨어짐 - 콜백 헬을 없애기 위해 Promise 등장 Promise - Promise는 바로 당장 결과를 얻..
-
[Node.js] 2일차교육 2019. 8. 23. 00:44
수업 내용 정리 - 뷰 엔진 추가(템플릿 추가) - 공통 파일 작성 - dotenv 설정 - Database 생성 - mysql 연결 - 첫 모델 작성 - 제품 등록 페이지 작성 - 제품리스트 페이지 작성 - sequelize method 작성 Live reload - html 파일 수정 일어날 때도, 서버 재시작 - "start": "nodemon -e js,html app.js" 템플릿 엔진을 선택하는 팁 - 템플릿 상속이 되는 템플릿 엔진인지 - '매크로' 같은 걸 사용할 수 있는 템플릿 엔진인지 (단순 반복 작업이 일어나는 곳에 재활용으로 쉽게 사용 가능) 매크로 함수 이용하는 방법(효과적) >> include로 가져오는 방법(변수 충돌 우려 있음) - 템플릿 파일 안에서는 최대한 로직을 지양 e..
-
[Node.js] 1일차교육 2019. 8. 21. 00:10
수업 내용 정리 - npm init -> package.json - npm install express - nodemon ( npx, npm -g ) - url을 작성 package.json에 script 추가 - script 옵션을 추가해서 쉽게 웹팩을 실행할 수 있도록 함 - npm start, npm test를 제외하고, npm run으로 실행시켜줘야 함 ex) npm run dev - npx로 실행시켜주는 이유는, 만약 글로벌 모듈(여기서는 nodemon)이 설치돼 있지 않다면 자기가 직접 글로벌 모듈을 다운로드하고 실행시켜줌 - 누군가에게 소스코드를 줄 때 어떤 글로벌 모듈이 필요하다는 것을 안 알려줘도 됨 nodemon 설치 - 서버에 변화가 있을 때, 자동적으로 서버를 내렸다 올려주기 위해 ..
-
Redis실무에서 배운 내용 정리 2019. 8. 9. 23:54
Redis - in memory 데이터 저장소 (key-value형태의 데이터) - 싱글 스레드 (1번에 1개의 명령어만 처리) => 여러 문제의 원인이 됨 https://www.zdnet.co.kr/view/?no=20131119174125 - 초당 10만~15만 get/set 가능 Redis의 자료구조 (Data Structure) - key-value 형태 - Bucket을 이용한 Chanined Linked List 구조로 되어 있음 - 같은 Bucket에 들어가는 key들은 링크드 리스트로 연결됨 why 사용? - 여러 데이터 타입 지원 (value 값으로 String, List, Set, Sorted Set, Hash 타입 지원) – List 형태의 데이터 입력과 삭제가 MySQL에 비하여 1..
-
1년차 웹 개발자의 일기카테고리 없음 2019. 7. 4. 23:41
입사한 지 벌써 9개월이란 시간이 흘렀다. 입사하고 지금까지 난 작은 소리, 반응에도 놀랄 만큼 긴장된 상태를 유지하고 있다. (태어나 이런 경험은 처음이다.) 꿈꾸던 회사, 그리고 훌륭한 동료와 함께 일한다는 사실이 꿈같고 행복했지만, 그 못지 않게 잘해야 한다는 강박과 걱정이(다들 잘하는데, 내가 못하면 안 된다) 나를 사로잡고 있기 때문이다. (몸에 힘을 빼고 싶지만, 나도 모르게 힘이 들어간다. 시간이 해결해 주겠지...) 그중에서도, 얼마 전까지 같은 파트에서 함께 일했던 두 분은 내 기준에 훌륭했고 닮고 싶은 사람들이었다. 나도 시간이 흘러 누군가에게 선배 개발자가 된다면, 저 두 분의 장점을 취합해 좋은 선배 개발자가 되어야겠다고 생각했었다. 하지만, 전혀 예상치 못하게 다른 팀으로 발령이 ..
-
JPA 세미나세미나 2019. 1. 7. 23:04
JPA에서 중요한 2가지1. 객체와 관계형 데이터베이스 매핑2. 영속성 컨텍스트 1. 객체와 관계형 데이터베이스 매핑 연관관계 매핑을 잘하려면, JPA 공부보다 DB 설계 공부를 많이해야 한다.-> 그럼 자연스럽게 연관관계 매핑도 따라온다. 연관관계 매핑을 참조대신 외래키를 그대로 사용하게되면1. 연관관계 객체를 조회 할 일이 있으면 쿼리가 2번 발생2. 그보다 도메인 주도적인 설계가 안되는게 더 문제 => 그로 인해, 비즈니스 로직이 서비스로 올라가야함 (도메인 객체 자신이 비즈니스 로직을 가질 수 있도록해야함)=> 쉽게 말해, 도메인객체 내부에서 관련된 객체에게 메시지를 전달하도록 해야함 (객체에게 메시지를 던져라) 연관관계 매핑할 때, 실무에서는 Lazy 로딩으로 설정=> 왜냐하면, 만약 연관관계가..
-
Guava Cache 란 [1편]실무에서 배운 내용 정리 2018. 12. 24. 08:52
캐시를 사용하는 이유응답 속도 향상 어떤 데이터를 캐시 할까? 1. 자주 사용하면서도 변경이 자주 일어나지 않는 데이터 (즉 읽기는 많지만 쓰기는 적은 데이터) => 변경이 자주 일어나게 되면 DB와 동기화 시키기 위해 캐시와 DB간의 트랜잭션이 자주 발생하여 오히려 성능 저하가 발생 2. 크기가 너무 크지 않은 데이터=> 크기가 너무 크다면 메모리를 많이 소모하게 되서 애플리케이션의 메모리 성능에 악영향을 미칠 수 있음 Guava Cache 란Google의 Guava Cache는 캐시를 쉽게 사용할 수 있도록 다양한 기능을 제공하는 오픈 소스 라이브러리간단한 코드를 통해 캐시 크기, 캐시 시간, 데이터 로딩 방법, 데이터 Refresh 방법 등을 제어할 수 있음* Goolge Guava 는 Apache..