/users
/posts
/slides
/apps
/books
mysetting
/users
/posts
/slides
/apps
/books
이동욱 (향로)
엔지니어@inflab
Seoul
Joined on 2021년 05월 09일
Profile
Slide
Post
Like
3:35 5/23
jojoldu.tistory.com
3:35
jojoldu.tistory.com
기억보단 기록을
http://jojoldu.tistory.com/
Java 백엔드, AWS 기술을 익히고 공유합니다.
저작도구: tistory
최종 피드 수집: 2024-12-26 00:46
전체 (218)
8M
혼란하게 진행하기
요즘 픽사의 CEO 에드 캣멀이 쓴 "창의성을 지휘하라" 를 보고 있다.
여기를 보면 스타트업에 너무 적합한 이야기가 있다.
"사람들은 효과가 검증된 것, 예컨대 과거에 통한 스토리, 방법, 전략에 안주하고 싶어한다.
새로 고안한
생각정리
고민
배달의민족
+ 더보기
성장
우아콘
인프랩
인프콘
커리어
0
0
10
읽기모드
9M
블로그 누적 1,000만 조회수 후기
2024.02.12에 블로그의 누적 조회수가 1,000만이 되었다.
전체글은 585개가 되었다.
2015.1.31에 첫 글을 작성했으니, 약 9년만에 1,000만이 되었다.
예전에는 6개월에 100만씩 증가했다면, 요즘은 7개월에
회고
Vlad Mihalcea
기술 블로그
+ 더보기
까먹지말자
변정훈
손권남
아웃사이더
우아한형제들
이종립
인프랩
0
0
3
읽기모드
9M
힘 빼지 않기
코인 노래방을 종종 다닌다.
스트레스를 풀기위해 다니는데 노래를 못해서 낮은 노래를 선택하고 음이탈이 나지 않으려고 최대한 조심해서 불러왔다.
스트레스를 풀러 간 어느 날, 노래방 밖에서도 들릴 정도로 엄청 큰 소리로 노래를 부르
생각정리
글로벌
랠릿
+ 더보기
인프랩
인프런
0
0
7
읽기모드
9M
운영 로그와 디버그 로그 분리하기
최근에 Pete Hodgson가 martinfowler 블로그에 기재한 글을 보면서 로깅도 하나의 기능으로 봐야한다는 생각이 더 강해져서 이 글을 쓰게 되었다.
시스템을 구축하다보면 다음과 같이 크게 두 종류의 로그를 남긴다.
l
Architecture
Domain Probe
Domain-Oriented Observability
+ 더보기
DOP
Java
Logging
typescript
로그
0
0
9
읽기모드
9M
한 페이지
요즘 데이식스의 "한 페이지가 될 수 있게" 노래에 엄청 꽂혔다.
정확히는 꽂힌 가사가 있다.
"아름다운 청춘의 한 장 함께 써내려 가자
어떤 동시대를 함께 보내는 모든 그룹 혹은 조직의 일원들간에도 통하는 이야기 같았다.
대학교
생각정리
동료
스타트업
+ 더보기
0
0
4
읽기모드
9M
좋은 오프보딩
온보딩의 반대말로 오프보딩이 있다.
조직을 나가는 직원에 대한 퇴사 절차를 의미한다.
보통 퇴사 이후에도 회사에 대한 좋은 이미지를 남겨주기 위해 좋은 방향으로 퇴사절차를 밟는다.
여기서 중요한 것은 절차에 집중한다는 것이다.
생각정리
오프보딩
온보딩
+ 더보기
커리어
퇴사절차
0
0
5
읽기모드
10M
혼란함에 익숙해지기
사내에 공유드렸던 내용을 기록차 남겨둡니다.
저는 혼란한 상황이나 환경을 계속해서 체계적으로 정리/정돈하는 것은 2순위이고, 1순위는 혼란한 상황/환경 내에서 적응하는 것이 가장 중요하다고 생각하는데요.
혼란함 그 자체를 못견디
생각정리
스타트업
체계
+ 더보기
커리어
프로세스
0
0
5
읽기모드
10M
신입 엔지니어를 채용하는 것
주말에 쉬는 중 다음과 같은 링크를 공유 받았다.
시니어만 고용하는 것은 소프트웨어 업계에서 최악의 정책입니다
글을 읽어보면 시니어를 뽑지말아야한다는 것은 아니지만, 시니어만으로 팀을 꾸릴려고 해서는 안된다는 이야기를 한다.
대체
생각정리
경력직
신입 개발자
+ 더보기
주니어 개발자
채용
0
0
7
읽기모드
11M
좋은 리더가 되는 방법
요즘 좋은 기회로 여러 리더분들을 뵙고 있다.
한달에 1~2번정도 CEO, CTO, CPO 분들을 뵙고 서로 궁금한 것들을 물어보고 이야기를 나누는 시간을 가지고 있다.
이 분들과 대화를 나누다보면 "오? 그러네요?" 라는 감탄사
생각정리
리더 성장
좋은 리더
+ 더보기
좋은 제품
0
0
1
읽기모드
11M
2023년 개인 회고
직업적인 회고인 CTO 회고는 별도로 정리했다.
올 한해는 내가 해온 결정들에 대해 다시 한번 생각하는 일이 많았다.
0. 고민
사주
올해 점신 앱을 유료로 구매해서 한해 운수를 봤다.
종종 주변에서 사주를 봐주곤 했는데, "와
회고
2023년 회고
개발바닥
+ 더보기
개발자
윤종신
인프런
일일커밋
점신
0
0
10
읽기모드
11M
2023년 CTO 회고
2021년 초에 합류했다가 벌써 만 3년이 다되어간다.
올해는 점점 내 역할을 팀원들에게 위임하는 한 해였고,
제품의 성적표와 회사의 매출이 연결되는 것을 증명하는 해였던것 같다.
개인 회고는 별도로 작성할 예정이다.
1. 조직
생각정리
2023 회고
CTO 회고
+ 더보기
inflab
Inflearn
랠릿
인프랩
인프런
회고
0
0
18
읽기모드
1y
지향하는 개발 문화
요즘 외부 개발자분과의 채용을 목적으로 한 커피챗을 하다보면 종종 받는 질문 중 하나가 CTO인 내가 지향하는 개발 문화가 무엇인지이다.
배민에 있을때 꽤 많은 팀을 옮겨다녔다.
그 중 가장 기억에 남는 팀이 있었는데, 이 팀의
생각정리
개발 문화
개발팀
+ 더보기
인프랩
인프런
조직 문화
채용
팀 문화
0
0
5
읽기모드
1y
원 만들어 가기
오늘까지해서 하반기 개발조직 & 프로덕트 조직의 모든 워크샵이 끝났다.
팀의 인원수가 많지 않을때는 개발파트 전체가 한 회의실에 모여서 진행을 했고, 직군별로 어느정도 구성이 되고 나서부터는 같은 시간대에 모여 직군별로 서로 다른
생각정리
개발 문화
워크샵
+ 더보기
팀 게임
팀 문화
회고
0
0
1
읽기모드
1y
경쟁력 있는 신입 포트폴리오
경쟁력 있는 신입 포트폴리오
팀원들의 이력서를 글 하단에 첨부해두었다.
이 사이드 프로젝트를 진행한 멤버들에게 관심이 생긴다면 한번 커피챗을 요청해보자.
올해 대학생분들을 멘토링을 종종 했다.
자주 받던 고민이 "어떻게 해야 취업
생각정리
floney
사이드 프로젝트
+ 더보기
서비스 경험
신입
운영 경험
포트폴리오
플로니
0
0
27
읽기모드
1y
좋은 피드백 (절벽으로 몰아세우지 않기)
최근 술자리에서 "왜 혹독한 조언 혹은 높은 프레셔 등 개발팀원들의 성장에 대한 강한 피드백을 하지 않느냐" 에 대한 질문을 들었다.
그에 대해 다음과 같이 답변을 드렸다.
“여러 회사를 거치면서 어떤 것이 진짜 성장인지 명확하지
생각정리
동료
리더
+ 더보기
성장
완전한 솔직함
조언
피드백
0
0
6
읽기모드
1y
테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각
얼마 전에 2개의 핫한 컨텐츠가 공유되었다.
존경하는 재민님의 유튜브 - 테스트에서 @Transactional 을 사용해야 할까?
존경하는 토비님의 페이스북
2개의 컨텐츠에서 테스트 데이터 초기화에 @Transactional 사용
테스트코드 & 정적분석
AfterEach
JUnit
+ 더보기
spring boot
Transactional
테스트 데이터 초기화
0
0
32
읽기모드
1y
이기는 팀 경험
아래 글은 오늘 팀 내부에 공유한 글입니다.
팀을 떠난 후에도 다시 볼 일이 있을것 같아 블로그에도 남깁니다.
오늘 추천 받은 영상인데, 그간 저희 인프랩 조직 내에서 계속 이야기하던 주제와 맞물려서 공유드립니다.
(전) 구글 인
생각정리
개발문화
스타트업
+ 더보기
실리콘밸리
조직
팀 문화
황성현
0
0
0
읽기모드
1y
Qodana 무료로 시작해보기 (2023.11)
JetBrains에서 SonarQube와 같은 정적 분석 도구를 출시했다.
Qodana
JetBrains 에서 출시하는 제품들은 일단 관심을 가지게 된다.
IntelliJ, WebStorm, DataGrip 등을 몇년간 계속해서
테스트코드 & 정적분석
jetbrains
qodana
+ 더보기
sonarcloud
sonqrqube
소나큐브
정적 분석
0
0
13
읽기모드
1y
[리팩토링] 코드 배치와 변수 줄이기
비즈니스 로직 위주로만 생각하고 바로 코드를 작성하다보면 코드가 길어지고, 가독성이 떨어지는 경우가 많다.
특히 가독성이 떨어지면 코드를 리팩토링할때도 이상한 방향으로 할 때가 있다.
이럴때 가독성을 높이기 위해 코드 배치와
Architecture
Refactoring
리팩토링
+ 더보기
변수 줄이기
연관된 코드 묶기
코드 개선
클린 코드
0
0
2
읽기모드
1y
[일기] Mild High Club - Homeage
퇴근 후에 깨끗하게 샤워하고 거실 불을 끄고, 테이블 전등만 켠 채로 적당히 늘어지는 음악도 들으면서 코드 작업이나 글 쓰는 시간을 좋아한다.
오늘은 유달리 날이 되게 추운데 바깥 야경이 또렷하게 보였다.
반짝반짝 빛나는 야경은
생각정리
Homeage
Mild High Club
+ 더보기
경외
일기
0
0
2
읽기모드
1y
재능 있는 척 하지 않기
프로그래밍을 배우기 시작한 뒤 부터 노력하지 않는 척을 꽤 자주했다.
이를테면 주말에 사이드 프로젝트나 공부를 했어도 회사에서는 웹툰/영화를 봤던 이야기만 하는 것이다.
주변 사람들에게 저 주말에 공부했어요 라던가, 남는 시간
생각정리
노력
재능
+ 더보기
회고
0
0
11
읽기모드
1y
[PostgreSQL] 모든 View 의 접근 기록 테이블에 적재하기 (애플리케이션 변경 없이)
View Table을 적극적으로 사용하는 시스템에서 View Table의 의존성을 줄이고자 할때가 있다.
이는 레거시 데이터베이스를 리팩토링 해야하는 경우인데, 보통 너무나 파편화된 데이터베이스 접근을 하나로 통합하고자 할때이다
Database
database refactoring
PostgreSQL
+ 더보기
view access logging
view access monitoring
데이터베이스 리팩토링
0
0
4
읽기모드
1y
그대들, 어떻게 살 것인가 (요시노 겐자부로)
최근 미야자키 하야오 감독님의 "그대들은 어떻게 살 것인가" 영화가 개봉된다는 소식을 들었다.
제목이 너무 낯익어서 찾아봤더니 미야자키 하야오 감독님이 이 책을 오마주해서 영화를 만들었다고 한다.
대학생일때 도서관에서 빌려서 읽
도서
그대들 어떻게 살 것인가
미야자키 하야오
+ 더보기
요시노 겐자부로
0
0
2
읽기모드
1y
두근두근
대학교를 다닐때 학교 공부는 하지 않고, 도서관에서 자기계발서를 한참 읽던 시기가 있었다.
그때 읽었던 책 중에 하나가 젊은 구글러가 세상에 던지는 열정력이라는 책이었는데, 200X년에 구글코리아에 입사하신 김태원님이 쓰신 책이
생각정리
김태원
발표
+ 더보기
수잔 베이츠
컨퍼런스
0
0
0
읽기모드
1y
가장 좋아하진 않는 프로그래밍
요즘 받아 보는 고민 중에 "가장 좋아하는 일이 프로그래밍이 아니다는 것을 인정하기 힘들다"는 것이 있다.
예를 들면 이런 것인데,
본인은 시간이 날때마다 그림을 그리는데 그 시간이 너무 재밌다는 것이다.
그래서 그림 그리러
생각정리
개발자
고민
+ 더보기
좋아하는 일 잘하는 일
취미
프로그래머
0
0
2
읽기모드
1y
Eclipse Mat 메모리 할당 크기 조정 (Mac OS)
Heap Dump를 분석하기 위해 Eclipse mat를 종종 사용한다.
너무 큰 덤프 파일을 불러오면 다음과 같이 OOM 이슈가 발생한다.
An internal error occurred during: "Parsing heap
Java & Kotlin
Eclipse mat
heap dump
+ 더보기
MemoryAnalyzer
Out Of Memory
0
0
5
읽기모드
1y
Hibernate Fetch Join시 메모리에서 페이징 처리 사전 차단하기
Hibernate (Spring Data JPA) 를 사용하다보면 종종 HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 의
Spring Data
fail_on_pagination_over_collection_fetch
firstResult/maxResults specified with collection fetch; applying in memory
+ 더보기
HHH000104
hibernate
JPA
N+1
Spring Batch
0
0
41
읽기모드
1y
2023 인프콘 회고
올해 2월부터 준비한 인프콘이 2023.08.15 에 성황리에 마무리 되었다.
인프콘의 모든 발표는 인프런에 무료로 공유되어 있다.
회고 써야지 써야지 하다가, 이제야 쓴다.
인프콘 컨퍼런스 운영에 대해서는 관여를 하지 않았다.
생각정리
infcon 2023
개발바닥
+ 더보기
인프런
인프콘
인프콘 2023
0
0
4
읽기모드
1y
소설에 몰입하기
고민 상담을 하다보면 자존감에 대한 고민을 많이 듣는다.
타인과의 비교
타인의 비난, 시기, 질투
내가 어쩔 수 없는 상황에 대한 불안감
등등 부정적인 감정을 만나게 될 때가 많다.
이런 부정적인 감정, 태도, 상황에서 어떻게 자
생각정리
1 ON 1
감정 회복
+ 더보기
소설
자존감
주인공
회복 탄력성
0
0
1
읽기모드
1y
좋은 예외(Exception) 처리
좋은 예외 처리는 견고한 프로그램을 만들고, 좋은 사용자 경험을 줄 수 있다.
예외 처리를 통해 애플리케이션이 예기치 않게 종료되는 것을 방지하고,
갑작스런 종료 대신 사용자는 무엇이 잘못되었는지, 그리고 가능하다면 어떻게 바
Architecture
clean code
exception
+ 더보기
Exception Handling
예외처리
좋은 코드
좋은 함수
0
0
4
읽기모드
1y
미국 유학가서 중국어 공부하지 않기
빅테크 회사분들의 시니어분들과 사석에서 만날때와 스타트업으로 이직하신 시니어분들을 만날때 서로 대화의 주제가 다름을 체감한다.
예를 들면, 우리팀의 주니어가 평균 레이턴시 1초인 API를 0.1초로 개선했다 를 이야기한다고 하면
생각정리
개발자
빅테크
+ 더보기
성장
스타트업
0
0
7
읽기모드
1y
테스트 메소드 (함수) 이름은 비즈니스 내용을 사용하기
테스트 메소드 (함수) 이름은 비즈니스 내용을 담아야한다.
이는 테스트의 의도를 명시적으로 표현하기 때문에 중요한데, 테스트 코드를 작성하는 것에 집중한 나머지 이름에 대해서는 크게 신경쓰지 않고 넘어가는 경우가 많다.
예를 들
테스트코드
Naming your tests
Unit Test
+ 더보기
테스트 메소드
테스트 코드
0
0
7
읽기모드
1y
PostgreSQL 11 에서의 add column not null & default 성능 개선
Aurora MySQL 5.7까지만 써본 경험에서 Online DDL 은 여전히 부담스럽다.
그럼에도 대량의 데이터가 쌓인 테이블에 DDL을 수행하는 것은 서비스를 운영하다보면 피할 수 없다.
100GB 이상의 테이블에 Onli
atthasmissing
attmissingval
NOT NULL
+ 더보기
PostgreSQL
기본값 추가
컬럼 추가
0
0
2
읽기모드
1y
원하는 프로젝트에 참여 하고 싶을때
팀에서 일을 하다보면 어떤 프로젝트가 진행될때 나도 함께 하고 싶을때가 종종 있다.
누가 봐도 커리어에, 성장에 도움이 될 것 같은 그런 프로젝트들이 진행되고 나 역시도 그런 프로젝트에 참여 하고 싶은 그런 경우 말이다.
리더가
생각정리
개발자
소라의날개
+ 더보기
프로젝트
0
0
5
읽기모드
1y
JetBrains IDE AI Assistant EAP 후기 (2023.07.12)
2023년 6월 26일, JetBrains에서 AI Assistant 기능이 추가 되었다.
JetBrains IDE의 AI Assistant
현재 (2023.07.12) 까지 정식 기능은 아니며 EAP 버전에서만 사용 가능하다.
IDE
AI
ai assistant
+ 더보기
GPT
IntelliJ
jetbrains
webstorm
리팩토링
0
0
736
읽기모드
1y
AWS Lambda를 활용한 동적 Redirect Server 구축하기 (Dynamic HTML Serving)
기존 프로젝트에서 신규로 페이지를 만들었지만, 해당 페이지의 공유 링크는 기존 프로젝트의 meta tag가 아니라 신규 페이지 전용 meta tag 가 필요할 때가 종종 있다.
카톡방 공유 링크의 미리보기나 여러 크롤러들의 수집등
DevOps
AWS Lambda
dynamic rendering
+ 더보기
Server Side Rendering
SSR
0
0
2
읽기모드
1y
지표 일회일비
어제 저녁 우리 회사의 2번째 서비스인 랠릿의 팀원분들과 이야기를 나누었다.
신규 서비스가 런칭하고, 약 1년간 운영을 해왔다.
그리고 계속해서 신규 기능을 넣고 있지만 지표가 내맘같이 오르지 않고 있다.
이럴때 보통 해당 제
생각정리
그로스
데이터
+ 더보기
랠릿
멘토링
스타트업
인프런
지표
0
0
0
읽기모드
1y
인연은 어디서나
최근에 영한님을 만나서 2~3시간 이야기를 나누었다.
영한님 차 타면서 집으로 가는 길에 예전에 함께 일하던 때에 대한 것들을 다루다보니 과거 생각이 많이 났다.
그러면서 그때 참 같이 일해서 좋았고, 선물 같은 시간이였다는
생각정리
개발자
김영한
+ 더보기
스타트업
이직
인프런
커리어
0
0
1
읽기모드
1y
3. 좋은 함수 만들기 - Null 을 다루는 방법
여기서는 null 과 undefined 를 구분하지 않고 null 로 통일해서 표현한다.
정적 분석 서비스 rollbar 에서 1000개 이상의 JS 프로젝트에서의 소프트웨어 결함 통계를 공개했다.
(출처: top-10-javas
Architecture
Good Function
null
+ 더보기
Null Problem
Optional Channing
좋은 함수
0
0
1
읽기모드
1y
좋은 API Response Body 만들기
기존 SSR 시스템(jquery + Server Template)을 API 기반의 신규 시스템으로 전환하는 작업을 하면서 팀의 백엔드 개발자분들께 Response Body 관해서 종종 코멘트를 한다.
이런 코멘트들이 쌓이다보니 그
Architecture
API
api best practices
+ 더보기
api principles
API 설계
json body
response body
0
0
43
읽기모드
1y
100미터 17초에 달리기
최근에 교육생분들을 대상으로 신입 개발자를 준비할때 있었던 일들에 대해 이야기를 나누는 시간을 가졌다.
이제막 개발을 시작하게된 분들도 계시고, 컴퓨터 공학을 전공했지만 계속해서 취업에 실패해서 교육기관에 참여하신분들도 계시고
생각정리
습관
신입 개발자
+ 더보기
커리어
태도
0
0
3
읽기모드
1y
Number와 boolean 은 최대한 Not Null로 선언하기
테이블 설계시 종종 받는 질문 중 하나가 Boolean과 Number 컬럼의 Not Null 유무이다.
비즈니스적으로 기본값이 있는 경우가 아니면 유연하게 하기 위해 nullable 로 선언하는 경우를 자주 본다.
테이블의 Boo
Architecture
boolean
database
+ 더보기
NOT NULL
nullable
table
테이블 설계
0
0
4
읽기모드
1y
도둑맞은 집중력
2번의 연휴 동안 (5월 5,6,7 / 27,28,29) 도둑맞은 집중력을 읽었다.
외부 발표에서 산만함을 관리하기 위해 여러가지 시도를 하고 있다는 이야기를 했는데, 산만함과 집중력에 대해서 훨씬 더 정확하고 좋은 내용을 담고
도서
도둑맞은 집중력
독서
+ 더보기
멀티태스킹
몰입
산만함
식단
0
0
5
읽기모드
1y
스타트업이 받을 수 있는 클라우드, SaaS 혜택
요즘 스타트업 제품팀과 종종 미팅을 한다.
제품은 이미 출시되었는데, 이제 시작 단계라 계속해서 속도전으로 기능을 붙이는 팀들이다.
대부분 전체 팀원이 10인 이하이거나 개발팀원이 3 ~ 7이다.
그러다보니 고정비에 대한 고민
생각정리
aws
Google Workspace
+ 더보기
jetbrains
notion
startup program
무료
스타트업
스타트업 프로그램
크레딧
할인
0
0
5
읽기모드
1y
나를 위해 남을 도와주기
3년차가 안되던 주니어 개발자일때를 돌이켜보면 "과연 내가 이 팀에서 필요한 사람인가" 하는 의문이 들때가 많았다.
당시에 내가 속해있던 팀은 연차에 관계 없이 잘하는 사람들이 많았다.
나보다도 어린, 나보다도 연차가 낮은 개발
생각정리
멘토링
쓸모
+ 더보기
장영희
주니어 개발자
0
0
1
읽기모드
1y
Promise Pool로 성능 개선하기 (feat. Promise.all)
Node.js 환경에서는 다수의 비동기 작업을 처리하기에 적합하다.
예를 들어, 다음과 같은 상황이 있다고 가정해보자.
ID 별로 조회만 가능한 외부 서비스에서 대량의 건수를 API로 조회해야하는 경우
join, subquery
JavaScript & TypeScript
JavaScript
node.js
+ 더보기
Performance
promise
Promise Pool
Promise.all
Promiseall
typescript
0
0
38
읽기모드
1y
선뻥 후 노력
언니네이발관이 결성된 계기를 참 좋아한다.
(이미지 출처: 나무위키)
아래 이야기는 루리웹에서 가져온 것이지만, 대부분의 커뮤니티에서 이미 공개되어 있는 이야기이다.
PC통신시절 하이텔 메탈 음악 동호회에는 mypsb라는 전설의
생각정리
국비교육
부트캠프
+ 더보기
사이드 프로젝트
스터디
취준생
0
0
7
읽기모드
1y
1. 효율적으로 로그 모니터링하기 - 로그 레벨 구분하기
365/24 로 관리하는 시스템에서 로그는 굉장히 중요하다.
하지만 로그가 중요하다는 생각에 무분별하게 남기는 것은 좋지 않다.
대표적인 예로 습관적으로 예외 상황이 발생하면 ERROR 레벨로 로그를 남기는 경우이다.
보통의 서
Architecture
logback
Logger
+ 더보기
nodejs
SLF4J
Winston
로그
로깅
모니터링
0
0
7
읽기모드
1y
AWS RDS PostgreSQL에서 Slow, Error, DDL 쿼리 발생시 Slack 발송하기
이전 글 에서 RDS에서 Slow Query가 발생했을때 Slack을 발송하는 것을 구현했다.
이번 시간에는 해당 코드를 발전시켜서 Slow, Error, DDL 쿼리들을 각각의 채널에 발송시키도록 Lambda 코드를 개선해보자
DevOps
aws
CloudWatch
+ 더보기
DDL
error
PostgreSQL
Query Alarm
RDS
slow
데이터베이스
0
0
14
읽기모드
1y
전염시키기
최근에 배민에서 세미나 발표를 했다.
끝나고 별도의 자리에서 와주신 분들과 한분씩 고민 상담을 진행했다.
(사실 책 사인하는 시간이였는데… 사인하면서 하나 궁금한점이 있다고 하시면서 본격 고민 상담 시간..)
그때 가장 많이
생각정리
개발문화
신뢰자본
+ 더보기
이직
주니어
코드리뷰
팀원설득
0
0
0
읽기모드
1y
ChatGPT와 함께 춤을
최근 여러 개발 리더분들을 뵐 기회가 있어서 이런 저런 이야기를 나눴다.
그러다보면 공통적으로 하는 이야기가 ChatGPT 로 인한 개발자의 자리에 대한 것이다.
어떤 분들은 그간 시니어들이 설계를 하고 구현은 주니어들이 하던
생각정리
AI
chatGPT
+ 더보기
MS
선언형 프로그래밍
아이폰
인공지능
커리어
0
0
5
읽기모드
1y
(AWS RDS) PostgreSQL 필수 Log 관련 Parameter
DB를 활용한 365/24시간 서비스에서 가장 중요한 설정 중 하나가 DB 로그를 어떻게 남기고 관리할 것인가이다.
MySQL을 주로 사용하다가 PostgreSQL 을 사용하게 되면서 PostgreSQL에서 지원하는 다양한 로그
Database
aws aurora
aws rds
+ 더보기
parameter group
PostgreSQL
파라미터 그룹
0
0
28
읽기모드
1y
DataGrip 에서 안전하게 Command 수행하기
DataGrip을 포함한 GUI 도구로 운영 DB에 쿼리를 수행하는건 항상 조심해야한다.
하지만, 매번 모든 쿼리를 사람이 주의해서 수행하는건 불가능하며, 사람이라면 무조건 실수를 할 수 있다.
사람인 이상 잘못된 쿼리를 실행할
IDE
database
datagrip
+ 더보기
jetbrains
데이터 복구
데이터베이스
0
0
3
읽기모드
1y
유효기간
SNS에 글 올렸다가 기록차 + 추가적인 생각이 들어서 블로그에 남깁니다.
우리팀은 AWS ECS Fargate 를 대부분의 애플리케이션에서 사용한다.
그러다보니 예전처럼 로그 관리에 크게 신경을 쓰지 않게 되었다.
모든 출력에
생각정리
노하우
성장
+ 더보기
커리어
학습
0
0
0
읽기모드
1y
Giscus 댓글, 텔레그램 (Telegram) 으로 알람 받기
최근에 Giscus로 댓글 시스템을 이관하면서 새 댓글이 생성될때 알람을 받을 방법이 없었다.
그래서 간단하게 Github Action과 Telegram을 통해 알람을 받도록 구성했다.
1. 텔레그램 Bot 생성
BotFather
DevOps
giscus
giscus alarm
+ 더보기
giscus telegram
github 댓글
텔레그램
0
0
2
읽기모드
1y
Utterances 에서 Giscus 로 마이그레이션하기
블로그의 댓글을 Utterances 에서 Giscus 로 마이그레이션 했다.
기존 댓글을 잘 사용하고 있었지만, 장점이 훨씬 많은 Giscus로 이관하게 되었다.
1. Giscus 장점
Giscus 는 Utterances에 비해
기타
giscus
giscus migration
+ 더보기
github comment
utterance
깃헙 댓글
마이그레이션
0
0
24
읽기모드
1y
2. 좋은 함수 만들기 - 암묵적 입력/출력
지난 시간 에 부작용 (부수효과) 함수에서 어떻게 최대한 부작용과 거리두기를 해서 좋은 함수를 만드는지 간단한 예제로 연습해봤다.
이번 시간에는 좋은 함수가 되기 위해 관리해야할 부작용이란 어떤 것들이 있는지 알아보자.
1. 암묵
Refactoring
Bad Code Good Code
Good Function
+ 더보기
jest
mocking
TEST CODE
Unit Test
단위 테스트
테스트 코드
0
0
8
읽기모드
1y
다른 관점에서 보기
최근에 읽었던 전국이라는 춘추+전국시대 배경의 소설책에서 나온 이야기인데 꽤 와닿는게 많았다.
지리소라는 꼽추가 있었다.
그는 흉측하고 장애도 있어 남들이 멸시했으나 바느질과 키질로 곡식을 불려 10명이나 되는 식구를 먹여 살렸
생각정리
스타트업
전국
+ 더보기
0
0
0
읽기모드
1y
일의 난이도 높이기
요즘 여러 채널을 통해 고민 상담을 받다보면 빈번한 사례가 "더이상 성장한다는 느낌을 받지 못해서 이직을 고민중이다" 라는 것이다.
그래서 성장한다는 느낌은 어떤 것인지 물어보면 사람마다 답변이 다양하다.
다만, 많은 경우 "
생각정리
개발자의 성장
이직
+ 더보기
커리어
퇴사사유
0
0
2
읽기모드
1y
PostgreSQL14 Memoize 성능 비교 (feat. 13 vs 14 Nested Loop)
PostgreSQL에서는 3가지의 Join 알고리즘을 지원한다.
Nested loop join
Hash join
Merge join
이 중 Nested loop join 은 가장 보편적인 Join 방식으로 그 작동 방식에는 결국
Database
enable_memoize
lateral
+ 더보기
memoization
Nested Loop Join
PostgreSQL
Row caching
0
0
3
읽기모드
1y
no-return-await 는 항상 정답일까
보편적으로 JS/TS 에서는 async 함수를 사용할때 return 만 필요한 경우에는 굳이 await를 명시하지 않았다.
실제로 ESLint 룰 상에서도 이에 대한 규칙을 갖고 있다.
no-return-await
하지만 해당
JavaScript & TypeScript
async await
no return await
+ 더보기
promise
Promise.all
비동기 함수
0
0
0
읽기모드
1y
Spring Boot 3.x 실행이 안될 경우 (feat. IntelliJ)
스프링 부트 3.0 이 출시되었다.
(현재 최신은 3.0.1 이지만)
3.0 부터는 Java 17부터 지원된다.
그러다보니 기존에 Java8, 11등을 사용하시던 분들은 3.x 스프링 부트 프로젝트를 실행할때 에러들을 만나게
Java & Kotlin
gradle
Java 17
+ 더보기
No matching variant of org.springframework.boot
spring boot 3
스프링부트3
0
0
8
읽기모드
1y
1. 좋은 함수 만들기 - 부작용과 거리두기
요즘의 개발에서 프레임워크나 라이브러리 사용이 없는 개발은 생각하기 어렵다.
특히 DDD 등의 개념까지 기본지식처럼 취급되어 점점 추상화된 개발에 익숙해지고 있다.
복잡한 애플리케이션 구현을 하다보면 이러한 것들에 대해 당연히
테스트코드
Bad Code Good Code
mocking
+ 더보기
단위 테스트
리팩토링
순수 함수
좋은 코드
좋은 함수
테스트 코드
0
0
2
읽기모드
1y
2022 개인 회고
2021년엔 개인 회고를 작성하지 않았다.
일기장에 있는 내용들을 모아서 2021년부터 작성할까 하다가, 그럼 또 2022년 개인 회고를 미루게 될 것 같았다.
회사와 관련된 2022 CTO 회고는 이미 작성했기 때문에,
회사
생각정리
2022 회고
개발바닥
+ 더보기
개발자 원칙
개인 회고
리디페이퍼
일일커밋
집무실
0
0
1
읽기모드
1y
2022 CTO 회고
지난 회고에 이어 올해도 CTO 회고를 쓴다.
개인 회고를 2021년에도 못써서, 2021 + 2022년 개인 회고를 쓸 계획이다…. 제발…!
작년에 다짐했던 기술, 조직 관점에서 많은 시도들과 시행착오들이 있었던 해였다.
개발
생각정리
2022 회고
CTO
+ 더보기
CTO 회고
inflab
Inflearn
인프런
0
0
2
읽기모드
2y
NodeJS에서 데이터베이스 통합 테스트 성능 개선하기 (TypeORM, Jest, PostgreSQL)
보통 통합 테스트는 SQLite, H2와 같은 InMemory 데이터베이스를 사용한다.
메모리상에만 존재하기 때문에 실제 ORM (SQL) 을 검증이 가능하면서도 병렬로 테스트를 수행할 수 있고, 고속의 쿼리 수행이 가능하기 때
테스트코드
benchmark
docker
+ 더보기
jest
nodejs
non durable
performance tunning
PostgreSQL
TypeORM
0
0
0
읽기모드
2y
욕망 관리하기
최근에 범준님을 만나서 들었던 조언 중에 가장 크게 와닿았던 것이 있다.
"구성원들의 기대 수준을 관리하셔야 해요"
여러 사람들과 함께 이야기를 나누던 자리였지만, 나에게는 너무 와닿는 조언이였다.
아차 싶은 것도 있었다.
나는
생각정리
개발조직
기술 부채
+ 더보기
조직 관리
0
0
0
읽기모드
2y
다른 언어로 성장하기
썸네일 이미지는 데브경수님의 인스타툰에서 가져왔습니다.
작년 4월까지 JVM 언어 / Spring 을 사용하면서 커리어를 쌓다가, 최근 이직을 하면서 Node.js (JS / TS) 에서 개발경험을 쌓고 있다.
처음 Node.js
생각정리
nest vs spring
nestjs
+ 더보기
node vs java
nodejs
Spring
typescript vs kotlin
0
0
0
읽기모드
2y
소프트웨어 원칙 만들기
유튜브와 블로그를 하다보면 여러 사람들에게 고민 상담 메일을 받게 된다.
그 중 자주 받는 질문은 다음과 같다.
"일정을 지키고자 버그가 많은 소프트웨어를 출시하는 것이 마음에 들지 않습니다.
어떻게 하면 일정을 연기해서 안정
생각정리
강대명
개발자 원칙
+ 더보기
공용준
김정
박미정
박성철
박종천
소프트웨어원칙
이동욱
장동수
0
0
3
읽기모드
2y
데이터 변환 계층 (Data Transfer Layer)
Express와 JS/TS만을 가지고 프로젝트를 진행하다보면 데이터 변환 계층의 기준이 정해져있지 않은 경우를 많이 본다.
사람마다 다르기도 하고, 혹은 같은 사람이 작성한 코드에도 천차만별이다.
이에 대해서는 팀에서 확실하게
Architecture
data transfer object
DTO
+ 더보기
MikrORM
nestjs
TypeORM
날짜 변환
데이터 변환
0
0
0
읽기모드
2y
링 위로 올라가기
최근에 외부 취업준비생 분들을 대상으로 한 멘토링을 몇번 진행한 적이 있다.
사전에 질문을 받아서 그 질문에 대해 답변을 하는 형태로 진행을 하는데, 대부분의 질문이 "어떻게 면접을 준비해야하냐" 였다.
기술 면접을 처음 준비하는
생각정리
개발자
면접
+ 더보기
신입
이력서
채용
취업
0
0
0
읽기모드
2y
5. 테스트하기 좋은 코드 - SQL
지난 시간까지 애플리케이션 코드를 어떻게 개선하면 좋을지에 대해 이야기를 나눴다.
1. 테스트하기 어려운 코드
2. 제어할 수 없는 코드 개선
3. 외부에 의존하는 코드 개선
4. 검증이 필요한 비공개 함수 개선
이번 편에서
테스트코드
nodejs
testable code
+ 더보기
TestCode
Unit Test
리팩토링
테스트 코드
0
0
1
읽기모드
2y
기술 부채와 이율
기술 부채와 이율
인프랩에 합류하고 난뒤부터 일기를 조금씩 쓰고 있다.
시리즈 A 확정 일주일전 (실제 통장에 돈 들어오기 한달전) 에 합류한 시니어 개발자가 겪는 경험들을 남겨두면 좋겠다는 생각이 들었기 때문이다.
다음에 또
생각정리
기술부채
스타트업
+ 더보기
0
0
13
읽기모드
2y
4. 테스트하기 좋은 코드 - 검증이 필요한 비공개 함수
지난 시간까지 테스트하기 어려운 코드를 어떻게 개선하면 좋을지에 대해 이야기를 나눴다.
1. 테스트하기 어려운 코드
2. 제어할 수 없는 코드 개선
3. 외부에 의존하는 코드 개선
지금까지 글들의 결론은 간단하다.
테스트 하기
테스트코드
jest
JUnit
+ 더보기
private test
private 함수
Unit Test
단위 테스트
0
0
0
읽기모드
2y
3. 테스트하기 좋은 코드 - 외부에 의존하는 코드 개선
지난 시간에 테스트하기 좋은 코드에 대해 이야기를 나눴다.
(1) 테스트하기 어려운 코드
(2) 제어할 수 없는 코드 개선
이번 편에서는 테스트하기 어려운 코드를 개선하는 2번째 방법인 외부에 의존하는 코드를 개선하는 방법에 대
테스트코드
jest
JUnit
+ 더보기
testable code
TypeORM
Unit Test
단위 테스트
테스트하기 쉬운 코드
0
0
12
읽기모드
2y
가지고 있는 무기로 싸우기
7월에 개발팀 첫 퇴사자가 발생했다.
7명에서 26명이 될때까지 퇴사자가 없다가 처음으로 발생했다.
1년 4개월만에 개발팀 퇴사자가 나온 것이다.
최근에 입사한 팀원들 입장에서는 처음 퇴사자를 만나게 되는거라서 당황스러워 했다
생각정리
CTO
개발조직
+ 더보기
빅테크
스타트업
이직
퇴사자
0
0
11
읽기모드
2y
인프콘 2022 회고
우리 회사에서 첫 오프라인 대형 컨퍼런스인 인프콘 2022을 개최했다.
입사 초기에 대표님인 쭈와 컨퍼런스에 대한 이야기를 잠깐 나누곤 했다.
당시 직원수가 20명+ 일때라 "아 나중에 그런거하면 너무 좋겠네요!" 하고 넘어갔다
생각정리
INFCON
개발자
+ 더보기
인프랩
인프런
인프콘
컨퍼런스
0
0
2
읽기모드
2y
람보르기니와 지프랭글러
슈퍼카의 대명사인 람보르기니는 오프로더의 대명사인 지프랭글러 보다 더 빠른 자동차일까?
이 질문에 대해 당연하게 답을 내리는 사람이 있고, 답을 할 수 없는 사람도 있다.
이 주제에 대해 한번 이야기해보고 싶다.
개발을 시작하고
생각정리
date-fns
dayjs
+ 더보기
enum
Java
js-joda
moment
TS
typescript
타입스크립트
0
0
2
읽기모드
2y
2. 테스트하기 좋은 코드 - 제어할 수 없는 코드 개선
1편 을 통해 테스트하기 어려운 코드에 대해 이야기를 나눴다.
이번 편에서는 테스트하기 어려운 코드 중 첫번째인 "제어할 수 없는 코드를 개선하는 법"을 이야기해보자.
2-1. 문제 상황
먼저 앞에서 보았던 discount()
테스트코드
jest
JUnit
+ 더보기
testable code
typescript
리팩토링
0
0
10
읽기모드
2y
신뢰 자본
몇달전에 미정님을 만나 짧은 대화 시간을 가졌다.
그간 온라인에서만 뵙다가, (기억상으로는) 처음으로 오프라인으로 뵈었다.
전 직장을 같이 다녔지만 미정님은 베트남에서, 나는 서울에서 근무하다보니 뵙지도 못해봤다.
그래서 이번
생각정리
개발자
성과
+ 더보기
이직
조직
커리어
0
0
10
읽기모드
2y
1. 테스트하기 좋은 코드 - 테스트하기 어려운 코드
팀 분들과 함께 NextStep - 이펙티브 코틀린 강좌를 수강하고 있다.
최근에 과제 회고를 처음 진행했는데, 이때 나온 주제가 테스트 하기 좋은 코드였다.
이 주제는 사실 이미 너무 많이 회자된 주제이긴하다.
대표적으로
테스트코드
jest
JUnit
+ 더보기
TDD
testable code
Unit Test
테스트 코드
테스트하기 좋은 코드
0
0
15
읽기모드
2y
IntelliJ (Kotlin) 매 파일마다 newline 자동으로 추가하기 (feat. EditorConfig)
Github 의 코드리뷰를 보면 다음과 같이 No newline at end of file 메세지를 보여준다
이는 파일 끝에 개행문자(newline)이 없습니다 라는 의미인데, POSIX 기반의 규칙에 기반한다.
EOF 가 없으
IDE
editorconfig
kotlin
+ 더보기
ktlint
No newline at end of file
0
0
3
읽기모드
2y
현실 세계의 속성에 의존하지 않기
최근에 들었던 질문 중 현실 세계의 식별자를 데이터베이스 기본키로 써도 되냐는 것이 있었다.
이를테면 현실 세계에서 유일함을 보장하는 값들이다.
주민 등록 번호
전화 번호
여권 번호
이들을 데이터베이스의 기본키 (PK) 로 지정
Architecture
database
PK
+ 더보기
기본키
데이터베이스
식별자
0
0
2
읽기모드
2y
(Kotlin) 단일 함수만 존재하는 경우 파일명은 어떻게 해야할까?
NextStep의 이펙티브 코틀린 with TDD, Refactoring, Clean Code 을 수강중이다.
내가 작성한 코드에 대해 이렇게 많이 리뷰 받는게 오랫만이다
이번에 받은 리뷰중에서는 납득이 잘 안되는게 있어서 리뷰어
Java & Kotlin
convention
kotlin
+ 더보기
컨벤셔
코틀린
파일명
0
0
0
읽기모드
2y
Jira Release 발생시 Slack에 Release Notes 발행하기
회사 업무를 진행하다보면 매번 자주 하는 작업 중 하나가, 배포공유이다.
배포가 완료되고, Jira의 티켓들을 Release 하고나면, 어떤 티켓들이 이번에 운영에 배포되었는지를 Slack에 공유하는 것이다.
매번 하는 것이 귀
DevOps
JIRA
Release Notes
+ 더보기
slack
업무자동화
0
0
42
읽기모드
2y
WebStorm에서 TypeScript 파일 단독으로 실행하기
WebStorm에서 기본적으로는 TypeScript 파일만 단독으로 실행할 수는 없다.
단독으로 실행이 필요할 경우 JS 파일로 컴파일 후, 실행해야만 한다.
Run server-side TypeScript with Node.js
IDE
Debug
IntelliJ
+ 더보기
run configuration
TS
typescript
webstorm
0
0
156
읽기모드
2y
release 브랜치 merge시 Tag 생성, 브랜치 삭제하기 (feat. Gihtub Action)
최근에 상권님의 포스팅을 보고나서 기존 프로젝트의 배포에 대한 추가 자동화를 진행했다.
앱 배포후 Jira에서 버전 Release처리 자동으로 하는 방법(feat. GitHub Action)
상권님의 포스팅에서는 다음과 같이 Gi
DevOps
delete branch
github action
+ 더보기
Merge
Release
tag
브랜치 삭제
0
0
6
읽기모드
2y
엔지니어의 세심함
제일 싫어하는 개발자의 유형 중 하나가,
개발자가 일을 잘하기 위해서 하나부터 열까지 기획자가 다 챙겨야 한다고 생각하는 분들이다.
"A ~ Z까지 엣지케이스, 예외 상황 하나도 빠짐없이 다 기획서에 넣어주세요"
"아 그건 기획
생각정리
po
개발자
+ 더보기
기획자
문서화
스타트업
커뮤니케이션
협업
0
0
8
읽기모드
2y
CloudFront 모니터링 하기
최근에 AWS의 서울/도쿄 리전에서 CloudFront 장애가 발생했다.
(착한 트위터의 세계에서는 실시간으로 공유가 된다)
EC2, RDS, ElasticCache에 비해 CloudFront는 모니터링을 잘 안하게 되는데, 장애
DevOps
+ 더보기
0
0
17
읽기모드
2y
SonarLint와 SonarCloud 연동하기 (WebStorm Plugin)
지난 시간에 프로젝트와 SonarCloud 연동을 했습니다.
이번 시간에는 프로젝트와 연결된 SonarCloud를 개발환경인 WebStorm의 SonarLint 플러그인과 연동해서 IDE로 개발 중에도 SonarCloud 검증이
테스트코드
IntelliJ
sonarcloud
+ 더보기
SonarLint
sonarQube
webstorm
소나큐브
0
0
45
읽기모드
2y
expect에서 false와 falsy 구분하기
Jest로 테스트 코드를 작성하다보면 습관적으로 IDE의 자동완성으로 toBeFalsy 와 toBeTruthy 를 사용하곤 했다.
저 둘이 아닌 toBe(false) 와 toBe(true) 는 한 번의 자동완성으로 안되기 때문에
테스트코드
Expect
jest
+ 더보기
node.js
toBeFalsy
typescript
테스트 코드
0
0
0
읽기모드
2y
단언문 (expect/assert) 안에서 비교하지 않기
간혹 코드를 보면 expect 에서 비교를 하는 코드를 보곤 한다.
이를테면 다음과 같은 경우이다.
it('getCount의 결과는 5보다 크다', () => {
const result = getCount();
e
테스트코드
better assertion
jest
+ 더보기
JUnit
TEST CODE
Test Smell
xUnit
테스트 코드
0
0
2
읽기모드
2y
SonarCloud를 통한 Node.js & Jest 프로젝트 정적 분석하기
일반적으로 프로젝트의 코드 퀄리티를 올리기 위해서는 단위 테스트를 비롯해 여러가지 장치를 도입한다.
이때 가장 가성비가 좋은 작업이 정적 코드 분석을 도입하는 것이다.
정적 코드 분석은 코드내에서 발견할 수 있는 코드 스멜, 잠
테스트코드
CI
github action
+ 더보기
JavaScript
jest
sonarcloud
sonarQube
typescript
소나큐브
정적 분석
테스트 커버리지
0
0
111
읽기모드
2y
어떻게 준비하면 인프랩에 입사할 수 있나요.
아래는 인프랩의 채용 담당자를 통해 전달받은 메일의 답변을 옮긴것입니다.
비슷한 메일이 많이 와서 블로그에도 정리하게 되었습니다.
안녕하세요 A님.
인프랩 개발팀입니다. :)
퇴근하고나서 이메일 주신 내용을 읽어보고나서 답변을
생각정리
신입
인프랩
+ 더보기
인프런
채용
커리어
합격
0
0
39
읽기모드
2y
공급자 지향 플랫폼
요즘 재밌게 보고 있는 웹툰 & 웹소설 중에 네이버 시리즈에 있는 화산귀환이 있다.
웹 소설로 시작해서 그 인기에 힘입어 웹툰으로 나오게 된 작품이다.
웹 소설의 경우 누적 조회수가 2.6억이다.
네이버 시리즈 최고 히트작 중
생각정리
개발자
부트캠프
+ 더보기
온라인 교육
인프런
코드잇
패스트캠퍼스
프로그래밍
0
0
0
읽기모드
2y
Github Action 빌드 결과 Telegram Bot으로 보내기
팀 단위의 프로젝트에서는 Github Action 빌드의 결과를 Slack으로 보내겠지만,
개인적인 프로젝트에서는 Telegram을 사용할 때가 많다.
메세지 제한이 없고
슬랙은 무료 Plan에서는 채널당 메세지가 10,000개
DevOps
github action
telegram
+ 더보기
telegram-action
깃헙액션
챗봇
텔레그램
0
0
50
읽기모드
About
Badge
Contact
Activity
Terms of service
Privacy Policy