BLOG 블로그
서론 nginx 와 spring boot, 그리고 spring boot 가 기본적으로 제공하는 embedded tomcat 의 조합은 이제는 너무 흔하게 쓰는 조합이다. tomcat 은 서블릿 컨테이너를 제공하고, spring boot…
서론 mongoDB 스터디를 앞두고 있어, 상당히 빠르게 NoSQL 을 훑어야할 니즈가 생겼다. 마침 부교재로 <NOSQL: 빅데이터 세상으로 떠나는 간결한 안내서> 를 받았으니 이 안내서를 타고 한번 쭉 가보려고한다. 201…
k8s 의 단순 사용자로서, 내가 했던 건 배포 시스템에 정의한 메니페스트를 통해 애플리케이션을 배포하고, 잘 뜬 pod을 확인하고, 서비스의 IP…
어떤 습관은 내 삶에 뿌리 내리기도, 어떤 것은 있는 줄도 없다는 듯이 사라지기도 한다. 분명한 건 그 모든 것이 흔적을 남기고 다음번에 추적과 연결을 시작할 때 쯤에 도움이 된다는 것이다. 그 생각을 붙들고 2024년을 시작하기 전 202…
서론 오늘 트위터를 들어가보니 꽤 난리가 나있었다. 일론 머스크가 트위터의 verified account (즉, 파란 체크 - 어느 시점부터 돈내고 받을 수 있게 바뀌었다.) 는 하루에 600…
서론 블로그 쓰기를 급하게 준비하려고 최근 궁금했던 디스코드는 어떻게 수조개의 메시지를 다룰까요 블로그를 보다가 snowflake 를 알게 되었다. snowflake 는 트위터에서 제안한 유니크한 id 생성기로, 분산시스템 상에서 id…
서론 웹 성능 최적화 스터디를 참여하고 있는데, HTTP 의 역사가 나왔다. 머릿속에서 휘발되기 전에 하나의 개념으로 묶어놓는 편이 나에게 유리할 것 같아 정리하는 HTTP 1-2-3 그리고 HTTPS 까지! HTTP…
서론 jvm 과 그 메모리 에 이은 JVM 의 GC 종류 정리다. 사실 이미 스프링 어플리케이션을 띄울 때의 스크립트를 주의해서 보면 GC 의 종류를 명시해준 걸 때때로 발견할 수 있는데, GC…
서론 최근 성능테스트를 하면서, minor-gc 와 major gc 에 대해서 다시 한번 볼 기회가 있었다. 하다보니 조금씩 모자란 지식을 채워야겠다는 생각이 들어 적어보는 jvm, memory. 참고한 기준 문서는 java SE…
들어가며 최근 회사 서버 구조를 보면서 낯선 이름을 듣게 되었다. ' GSLB ? 뭐.. 글로벌..로드...밸런싱...인가? 로드 밸런서 종류?' 라고 생각했고, 반쯤 맞았다. GSLB 는 Global Server Load Balancing…
새로운 팀에서, 일부 모듈은 spring, 일부 spring boot 로 구현되어 있다는 점을 발견했다. 친절한 온보딩 가이드 덕분에 얼기설기 spring + tomcat 조합으로 spring 모듈을 띄웠지만, 매번 boot…
서론 스프링에서 로컬 캐시를 적용할 때 항상 나오는 그 이름. ehcache ! 코드로 먼저 접하다보니, 영문도 모르고 ehcache.xml…
회고를 시작하면 작년의 회고를 본다. 개인적인 기록은 역시 작성자에게 제일 재미있는 법이어서, 재작년으로 넘어간다・・・ (끝나지 않음) 그러다 도달하게 되는 글이 201…
서론 jenkins 를 프로젝트 전반에 사용하고 있습니다. 제일 자주 사용되는 CI 부터, Spring Batch 까지도 Jenkins로 돌리고 있는데요. 최근 jenkins 취약점 으로 인해 jenkins를 업데이트할 일이 생기면서 jenkins…
서론 gradle! 이 블로그로 이전한 뒤 첫 글이 gradle facts 였을 정도로 오랫동안 내 머리에 있었던 주제였다. 그러나 번번히 공부에 실패했었다. 그런데 최근 jar SDK…
서론 2018년, 인턴 프로젝트에서 github 인증 및 프로젝트 로그인을 위한 jwt를 발행했었다. 이때jwt 개념 자체를 몰라서, 글을 한번 썼었다. 참고: 토큰으로 토큰을 만들자 - pyjwt 이정도 공부였으면 충분할 줄 알았지만, jwt…
Grapheme, Database, Unicode, Encoding
글자수 세기의 딜레마, 이 글자의 길이는 DB 상에서 얼마일까?서론 글자수를 센다는 것은 무엇일까? 이 글을 본 개발자라면 아마도 각자 언어의 length() 함수를 떠올렸을 수도 있겠다. length() 는 개발자가 글자를 세지않아도 빠르게 길이를 알려준다. 그런데 이 length…
서론 Github 의 인증 시스템이, 기존에 가능하던 id/pw 인증 방식을 제거했습니다. 아이디-패스워드 방식은 해당 키만 알면 로그인할 수 있다는 점에서 보안적으로 약하다고 보았고, 이를 개선하려고 한 것입니다. 따라서 2021년 8월 1…
히스토리 팀에서 유니버셜 링크 담당하시던 분이 휴직하시면서 이번 프로젝트에서는 어떻게 제공해야하는지 내용을 남기고 가셨다. 추적하면서 서버입장에서는 어떻게 해야하는 건지 다시 또 정리해보고싶다. updated…
서론 notice : 모던 자바 인 액션 관련 글은 책의 저작권 이슈를 우려해서 삭제했습니다. CompletableFuture 의 비동기 처리 를 공부하다가 비동기 작업을 다시 merge하는 작업, 즉 thenCompose 와 thenCombine…
그날이 왔다. 여러가지 api 콜을 합쳐서 다시 하나의 응답으로 만들어 내보내주는 코드를 보는데, 이해를 전혀 못하겠는 때가.. 그래서 이번주는 Reactive Programming 101이다. 처음에 구현체로 내가 마주한 건 바로 Project…
왜 vimwiki인가? vim이라고 하면 굉장히 어려워보이고, 나에게는 아직도 굉장히 어렵다. 그럼에도 서버 개발자로 길을 시작한 이상 vim은 넘어야할 산이었다. 언제까지 마우스를 만지작하며 GUI…
서론 혼자만의 프로젝트든, 함께하는 프로젝트든, 기본적인 코드컨벤션이 있다면 코드의 가독성은 확 높아집니다. 그런데 이런 코드 컨벤션을 세워도, 매번 기억하거나 유의하기 어려울 때도 있죠. PR…
개발 블로그들을 구독하다보면 유난히 눈에 띄게 잘 쓴 글들이 보였습니다. 프로필을 보면 저와 같은 주니어 개발자인 것 같은데 수려하고 잘 정리된 글을 작성하는 모습을 보면 완전한 프로 ! 그 아래에는 가끔 '글또…
WebRTC 를 공부하기로한다. WebRTC가 뭔데 - 이름 그리고 비전 webRTC는 plugin-free web - Real Time Communication…
gatsby 블로그와 험난한 싸움중이다. 분명히 SEO 가 자동으로 적용되는 테마를 가져왔는데, 왜 작동이 안하는 것인지? 구체적인 문제상황은 글에 설정한 배너가 안떠요 였다. 시간이 좀 남아서 webrtc…
DB 단에서 특정 두 칼럼의 조합이 유일하도록 하려면, unique contraint 를 걸어주면 됩니다. mysql에서 이 제약조건은 index로 표시되고, 이 index…
LeetCode를 시간이 날때마다 풀고 있습니다. 워낙 알고리즘에는 잼병이기도 하고, 생각의 폭을 넓히기 위해서 푸는데요. easy에 있는 Maximum subarray 를 풀게 되었습니다. 처음에는 효율이 굉장히 낮게 for…
안녕하세요, junebuug입니다. 어느날 저는 jenkins job을 구성하다가 PR 이 닫히면 jenkins job이 동작하는 걸 만들어야했습니다. 그런데 jenkins에서 자주 쓴다는 github pull request builder…
geohash 관련한 PR을 보고 있었는데, 다른 팀원분이 Trie로 접근해볼 것을 제안해주시더군요. Trie 자료구조, 분명히 입사 전에는 알고 있었는데 기억안나서 정리해봅니다. 😉 Trie 자료구조 🌴 어.. 어떻게 읽어야할까요? Trie…
과거에 썼던 dev 지식 모음을 보다가 아직 업로드하지 않은 것이 있어서 올립니다. Exception의 이해에 꽤 도움이 되었어서, 원문을 보시면 더 좋을 것 같습니다. Exception Handling in Java: A Complete…
이런 현대미술전시같은 이름의 블로그 포스트라니. 매번 찾아놓고 기억하지 못하는 주제를 가볍게 정리합니다. 서블릿이란 (Servlet…
Spring Security 업무에서 사용하고 있으면서도, 쉽게 정리하기는 어려운 것 중 하나가 spring security 였는데요. 간단한 예제로 spring security…
매번 일반 API 만 하다가 처음으로 Spring Batch 를 작성할 일이 생겼습니다. 이럴 때를 대비해서 저장해둔 jojoldu님의 Spring batch 가이드 를 참고해서, 기본적인 내용을 학습하고 Tasklet으로 실제 Batch…
이번에 외부 시스템과 연동을 진행하면서, 인증을 HMAC Signature 로 하게 되었는데요. HMAC이 가물가물해서 =) HMAC에 대한 간략한 소개와, Spring에서 어떻게 requestBody를 받아와서 HMAC Signature…
TIL (Today I Learned) 는 매일 매일 배운 점을 적는 것인데요. 매일 매일 무언가를 지속해나간다는 건 참으로 힘든 일이네요. 그래도 다달이 하나쯤 공유하는 건 어렵지 않을 테니, 열심히 정리해보려고 합니다. DTO (Data…
발표자료는 올라올테지만, 가장 인상깊게 들었던 발표를 들으며 적었던 노트를 날것으로 (ㅋㅋ) 공유합니다. <FIFA 온라인 4> 서버 포스트모템 김에스더님 From EA Korea…
프로젝트에서 like 를 Redis로 관리하고 있다. 관련해서 한번 짚고 넘어가려고한다. Redis? 기본적으로 Storage, 즉 저장소이다. 가장 큰 특징은 메모리 기반의 Key-value…
테스트를 8개 정도밖에 만들지 못했지만, 일단 원하는 바에 부합하는 정규식인 듯 하여 블로그에 작성해 둡니다. http나 https로 시작하는 경우에는 ://가 반드시 붙는다. Optional. www. 로 시작하는 경우가 있다. Optional…
이전에 내가 처음으로 받은 받은 JAVA 코드리뷰 모음 이라는 제목으로 글을 올렸었는데, 그 이후에도 이건 꾸준히 하면 좋겠다! 라는 생각이 들어서 또 다시 적습니다. 2월에는 Vue 공부도 조금했는데, Java…
Zuul 을 만나다 사건의 발단 서비스용 Stat 페이지를 운영툴에 붙이고 싶었다. 이 Stat 페이지는 vue 코드가, elastic search API를 찔러야하는 구조로 되어있고, elastic search…
vue를 어설프게 써보려고, vue-cli 모듈로 프로젝트를 만들면 이런 설명부터 나온다. '그냥 디폴트 스펙(webpack & babel) 깔아줄까? 아니면 다른 모듈쓸래? ^_^' 물론 webpack이랑 babel…
가장 먼저 코드로 본 web 요청 인터페이스는 WebClient였고, 명확하고 직관적이여서 자주 썼다. 그런데 현재 프로젝트에서는 RestTemplate과 WebClient…
상황 어떤 값이 유효한지 검사를 해야 하는데, 해당 값은 entity나 DTO에서 받을 때 매번 유효성 검사를 해야한다. 이런 경우 대개 Validator를 사용해야하는데, Validator와 Annotation…
상황 기존에 통합테스트로 돌고 있던 web client 테스트가 있다. 외부 API를 찔러보는 테스트인데, 이에 필요한 파라미터는 해당 web client 내부에서 가져오는 방식이다. 이때 무거운 통합테스트가 아니라, 직접 파라미터를 set…
2017 회고를 쓰면서 2018에는..! 하는 마음이 있었던 것도 어제 같은데, 벌써 12월의 마지막 날이다. 시간 순으로 할까, 주제 순으로 할까, Good, Bad로 할까 고민했는데, 일단 주제순으로 가도록 한다. 졸업, 그리고 ..…
??: 준영님 이 Date 무슨 형식으로 보내야해요? 그동안은 date는 무조건 서버에서 만들어서 넣어주는 것이어서 몰랐는데, date를 클라이언트(iOS앱) 에서 받을 일이 생겼다. DTO에는 해당 필드(createdDate…
맨날맨날 봐도 맨날 맨날 헷갈리니까 정리. 왜 웹에서 API 서버에 요청 안가는 거에요? 😭 웹 개발 시에 자바스크립트로 야심차게 외부 서버 경로로 ajax 요청을 날리면 요청이 실패한다. 요청한 리소스, 즉 서버에서 내려준 응답에 Access…
참고 https://www.zerocho.com/category/HTML&DOM/post/5918515b1ed39f00182d3048
별것아닌거 같은데 삽질을 했던게 바로 어제다. redirect_uri 를 인코딩해서 내리는 게 금방 될 줄 알았는데!(그래서 url in url 형태를 막고 브라우저가 명확하게 인식하도록 하는 것) 삽질 과정을 정리해본다. 결론: Spring…
DB 시간에 어려워서 대충 들은 부분이라 상당히 후회된다. 스키마 작성하는 중에 계속 정규화 얘기와 무결성 얘기가 오가게 되어 정리를 다시 꼭 한번 짚고 넘어가려고 한다. 이상 현상(Anomaly…
Generic 개념을 제대로 정의하지 않고 넘어가니 계속해서 의문점이 생기는 경우가 늘어난다. ArrayList<String> 으로만 접한 Generic을 좀더 잘 정의해보도록 한다. Generic…
단위테스트는 뭔가요? 외부에 의존성이 없는 소프트웨어 단위의 테스트. 단위테스트는 빨라야한다. Working Efficiently with Legacy Code 의 저자는 테스트 실행시간이 0.1초가 넘어가면 단위테스트가 아니라고 말했다. BDD…
Spring을 공부하던 중에, 멘토님께서 JPA의 중요성을 강조해주셨습니다. Django 는 ORM 으로 간단하게 DB를 다루고 쓸 수 있었는데, Spring에서는 어떤 식으로 DB…
Modern Code Review: A Case Study at Google 위 문서를 요약 - 번역합니다. INTRODUCTION Peer Code Review…
Logger SLF4j 를 일단 기본 로깅 파사드로 생각하고 말해보자. Log4j 는 두가지 버전이 있다. Log4j 1, Log4j 2 Log4j 1을 보완하려고 나온 Logback 이 있다. 현재 우리 프로젝트 에서는 SLF4j…
iterm 테마 한번 깔려면 매번 npm 과의 싸움을 벌이게 됩니다. 왜 나는 sudo 권한으로 npm install 을 설정해도 permission…