전체 글 27

코틀린 스프링 - application.yml 여러개 사용하여 불변객체 만들기

코틀린 스프링을 한 번 체험해보고 싶어서 인프런 무료 강의를 수강했습니다. 인프런 강의 링크 [무료] [초급] 맛보자! 코틀린과 스프링으로 API 호출하기 - 인프런 | 강의 간단한 기능 구현을 통해 코틀린과 스프링 조합을 빠르게 훑어볼 수 있는 강의입니다., API를 호출하는 실습을 통해코프링을 가볍게 찍어 먹어 보세요! 🥄 [사진] 코틀린과 스프링 맛보기 🔍 요 www.inflearn.com 이 강의 중간에 카카오 다음 검색 API 사용하는부분이 있는데, KAKAO API KEY를 application.yml에 작성하고 @Value annotation 으로 가져와서 사용하는 것으로 설명이 나옵니다. Node.js 에서 .env 환경변수를 사용하는것처럼 application.yml 을 여러개의 파일로 ..

Spring 2023.08.16

[친절한 SQL 튜닝] NDV, 선택도 (Selectivity), 카디널리티 (Cardinality)

친절한 SQL 튜닝을 읽고 개념에 대해 정리합니다. NDV (Number of Distinct Value) 유일하게 구별되는 컬럼 값 종류의 개수 예1 ) 성별 컬럼은 남자, 여자 두종류의 값으로 이루어져 있으므로 NDV(성별) = 2 이다. 예2 ) A1 컬럼이 A, B, C, D, E 5종류의 값으로 이루어져 있다면 NDV(A1) = 5 이다. 선택도 (Selectivity) 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율 선택도 = 1 / NDV (where = 조건) 선택도 = 반환되는 레코드 수 / 전체 레코드 수 (일반적으로) 카디널리티 (Cardinality) 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수 (실제 predicate에 의해서 추출되는 row 수를 의미) 카디널리..

Database 2023.08.16

Data Structure - Stack [JavaScript]

후입선출 Last In First Out class Stack { storage size constructor() { this.storage = {} this.size = 0 } push(data) { this.storage[++this.size] = data } pop() { if (this.size < 1) { console.error(`stack이 비어있습니다. - size: ${this.size}`) return null } const result = this.storage[this.size] delete this.storage[this.size--] return result } top() { if (this.size < 1) { console.error(`stack이 비어있습니다. - size:..

[express.js] 아주 간단한 express.js, singleton, typescript, prisma+mysql, mongoose+mongodb, oop

최근 엘리스 SW 5기 수강생 두분께 무료 수업을 진행해드리고 있는데, 블로그에도 글을 올리면 좋겠다 싶어서 포스팅하게 됐습니다. 정말 기초적인 수준의 singleton과 oop를 typescript와 express를 이용하여 구현해보았습니다. singleton 아이디어는 회사 선임분께서 작성하신 코드에서 영감을 받았습니다. 또한, typescript를 사용하여 간단하게 oop를 구현하였으며, 3 layered architecture임에도 불구하고 추상화를 통해 각 계층에 대한 정보 외에는 모르게 설계하였습니다. (시간 관계상 service에만 적용) 그래서 repository layer에서 prisma와 mongoose 어떤것을 사용하여도 service layer 에서는 영향이 없습니다. 우선 mysq..

객체지향의 사실과 오해 - 조영호

https://product.kyobobook.co.kr/detail/S000001628109 객체지향의 사실과 오해 | 조영호 - 교보문고 객체지향의 사실과 오해 | 객체지향에 대한 선입견을 버려라!『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝 product.kyobobook.co.kr 객체지향의 사실과 오해 (역할, 책임, 협력 관점에서 본 객체지향) 책을 완독했습니다. 이 책은 5월 11일부터 출퇴근길에 읽기 시작했고, 오늘 6월 12일에 마지막장을 읽었습니다. 엘리스 부트캠프를 하며 친해지게 된 코치님께서 오브젝트 책과 함께 선물을 해주셨습니다. 오브젝트 책의 존재는 알고 있었는데, 객체지향의 사실과 오해 부터 읽으면 된다..

도서 2023.06.12

한권으로 끝내는 네트워크 기초 - 오키타 토시야

한권으로 끝내는 네트워크 기초를 다 읽었습니다. 총 228페이지 이며, 대부분은 출퇴근할때 읽었고 나머지는 집에서 읽었습니다. 비전공 백엔드 개발자 이기때문에 cs지식이 많이 부족하다고 느꼈고, 처음부터 너무 본격적인 책을 읽기 보다는 기본적인 흐름을 먼저 아는것이 중요하다고 생각했습니다. 그래서 찾아보다가 교보문고와 yes24에서 봤을 때 평도 좋고 최신 책이라서 (22년 5월 초판발행) 구매했습니다. 우선 전체적인 평은 저같은 비전공자에게 매우 좋은 책이라고 말할 수 있겠습니다. 단순히 암기용으로 OSI 7계층, TCP/IP, HTTP 등을 외우는 것과 달리 이 기술이 왜 생겨났는지, 어떻게 사용되고 있는지를 설명해줍니다. 또한, 저자는 일본인이지만, 김성훈님께서 책을 옮겨주시면서 한국에서 사용되고 ..

도서 2023.04.20

MongoDB에서 bulkWrite updateOne upsert를 할 때 filter: _id 주의점

MongoDB에서 bulkWrite updateOne upsert에 대한 문법은 다음과 같습니다. 참고: 공식문서 const bulk = [ { updateOne: { filter: {}, update: { $set: {}, $push: {}, ... }, upsert: true } } ] db.collection.bulkWrite(bulk) 여기서 filter에 ObjectId, 즉 _id를 제외한 다른 필드를 넣는것은 문제될 게 없습니다. 하지만 _id로 필터링을 하면 문제가 생깁니다. _id를 갖는 document가 없으면, 새로운 ObjectId를 갖는 document를 insert 하는 것이 아니라, 지정한 _id를 갖는 document를 insert합니다. 다음은 세가지 예시 코드입니다. co..

Database 2023.03.28

개발할 때 코드만 생각하지 않기. 김재호님의 글을 보고.

https://jeho.page/essay/2021/10/02/%EC%BD%94%EB%93%9C%EA%B0%80-%EA%B7%B8%EB%A6%AC-%EC%A4%91%ED%95%98%EB%8D%94%EB%83%90.html 코드가 그리 중하더냐? C로 코딩을 할 때 if 우측에 { 를 써야 하나 한 줄 내려서 써야 하나. jeho.page 링크드인으로 다양한 분들과 1촌을 맺고, 그분들이 올리신 글들을 잘 읽어보고 있습니다. 그런데 방금 김재호님께서 쓰신 글을 보고 저는 어떨까 생각을 해봤습니다. 물론 기술적인 실력에서는 비교할 수 없지만, 김재호님께서 깨달으셨다고 하신 환경을 저는 지금 겪고 있는 것같다는 생각이 들었습니다. 저는 회사에서 백오피스 개발을 담당하고 있기 때문에 실제 사용자인 내부 직원분들..

나의 삶 2023.03.12

테스트 주도 개발 (TDD) - 켄트 백

테스트 주도 개발, 즉 TDD 라는 책을 구매했습니다. 최근 테스트코드에 대한 관심이 생겼는데, 테스트 코드 하면 TDD도 빠뜨릴 수 없다고 생각했습니다. 그렇다고 퇴근 하고 집에서 보려고 한 것은 아니고, 출퇴근 할 때 지하철에서 읽을 생각으로 샀습니다. 편도로 약 1시간 정도 걸리는데, 지하철에서만 40분정도를 있기 때문에 평소에는 휴대폰으로 뭘 검색하면서 가거나, 개발바닥 유튜브를 보거나, 힘들때는 웹툰같이 재밌는 것을 보면서 왔다갔다 합니다. 이 출퇴근 시간이 제 하루 중에 가장 부담없이 다른 공부를 할 수 있는 때라고 생각했고, 오늘 한 번 시도해봤습니다. 우선 책의 37페이지 까지는 서론이라서 건너뛰고, 114페이지 까지 읽었습니다. (총 380페이지) 책을 읽으면서 '결국은 OOP 구나' 하..

도서 2023.03.08