전체글 34

[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

요즘 이동욱님 (향로, jojoldu)에게 빠져있습니다.

예전에 개발바닥 구독해놓고 가끔 보고 있었는데, 얼마전에 테스트 코드 관련 영상은 아니였지만 테스트 코드에 대해 질문이 나와서 본인은 classicist 여서 mocking을 지양 하신다고 말씀하신것을 보았습니다. classicist 라는 단어 자체를 처음 들어서 찾아봤는데, 생각보다 깊은 내용이였더라구요. 이미 알고 계신 분들도 많겠지만, 간단히 설명하자면 아래와 같습니다. Classicist vs Mockist 제가 기존에 알고 있던 테스트 방법은 Test Double 을 사용하는 solitary 테스트 였습니다. 이 테스트 방법을 사용하는 사람들을 mockist라고 하구요. 그에 반해 TDD의 창시자 켄트백, 그리고 마틴 파울러는 이동욱님과 같은 classicist 입니다. classicist는 m..

나의 삶 2023.03.01

[kafkajs] consumer

이번에는 kafka consumer app을 설정해보겠습니다. import { Kafka, KafkaMessage, logLevel } from 'kafkajs' /** * kafka 인스턴스를 생성합니다. * clientId: 원하는 문자열 * brokers: docker-compose.yml에서 kafka 설정에 작성한 PLAINTEXT_HOST://localhost:29092, 29093, 29094로 지정했던 것을 넣습니다. * requestTimeout: kafka clinet가 broker로 데이터 전송 요청을 보낼때의 최대 소요 시간입니다. 이 시간이 초과하면 요청을 실패로 처리하고 에러를 반환합니다. * connectionTimeout: client와 broker 간 연결을 ..

MQ 2023.03.01