Skip to content

juneyr.dev

BLOG 블로그

Community

글또 4기가 끝났다.

글또 4기가 끝났다. 지난 2월 24일, 글또 4기 참가합니다 =) 라는 글로 시작해서 유효한 글을 약 9개 작성했다. 블로그를 안써온게 아니어서, 가볍게 데드라인을 설정하는 정도겠지 하며 조금 가볍게 시작했는데, 내내 조금 고단했다. 글또 데드라인은 왜이렇게 빨리 돌아오는 것 같은지! 그리고 남에게 본격적으로 보여주는 글이어서 좀더 신경을 써야했다. 그래서 썸네일도 넣고 og tag…


Mysql

MySQL 에서 차집합 : Anti-join 의 세가지 방법

쿼리와 로직 에서 확장된 글입니다. 안그러고 싶지만, 하나의 테이블에는 존재하는데 다른 하나에서는 존재하지 않는, 그런 값을 뽑고 싶을 때가 있다. 이번에는 유저 차단 정보 테이블에 없는 유저만 뽑는 케이스가 그랬다. 아니, 이런건 어떻게 뽑아? 1시간 동안 팀분의 설명을 듣고, 찾아보고서야 left-join / is null 방식으로 PR을 올렸다. 그런데 다음날 달린 코멘트. anti-join…


OS

하드웨어 스레드와 소프트웨어 스레드

서론 CompletableFuture 의 비동기 처리 를 공부하다가 비동기 작업을 다시 merge하는 작업, 즉 thenCompose 와 thenCombine 등에서 두 가지 버전을 지원한다는 사실을 알게 되었다. thenCompose 는 넘겨받은 함수 작업을 현재와 같은 thread에서 실행한다. thenComposeAsync 는 넘겨받은 함수 작업을 새로운 thread…


Java

Java 8 스트림

아래 모든 내용은 모던 자바 인 액션 (2019) 를 정리한 내용입니다. Java 8 에서 달라진 점에 대해서 참고하려면 모던자바인액션: 무슨 일이 일어나고 있는가? 글을 참조하세요. 4장 스트림 소개 4.1 스트림이란 무엇인가? Stream은 자바 8 API 에 새로 추가된 기능이다. 스트림을 사용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 선언형은 SQL…


Spring, Reactive Programming

Reactive Programming 101 : 리액티브 프로그래밍이 뭔가요

그날이 왔다. 여러가지 api 콜을 합쳐서 다시 하나의 응답으로 만들어 내보내주는 코드를 보는데, 이해를 전혀 못하겠는 때가.. 그래서 이번주는 Reactive Programming 101이다. 처음에 구현체로 내가 마주한 건 바로 Project Reactor다. Project Reactor 는 Spring 프레임워크를 만든 pivotal…


Java

타입 속 타입 : Parameterized Type

List<T> 형태를 알아보자구


Nginx, Server

나는 nginx 설정이 정말 싫다구요

nginx 설정 nginx.conf와 conf.d를 알아보자


JPA, Java

transient : 두가지 사용례, 비슷한 의미

java에서도, JPA에서 볼 수 있다


Conference

We are just ordinary IT people 웨비나 요약

#2 나의 힘으로, 다른 나라


유니버셜 링크, 딥링크... 이게 다 뭐야! 유니버셜 링크와 구현

히스토리 팀에서 유니버셜 링크 담당하시던 분이 휴직하시면서 이번 프로젝트에서는 어떻게 제공해야하는지 내용을 남기고 가셨다. 추적하면서 서버입장에서는 어떻게 해야하는 건지 다시 또 정리해보고싶다. updated 기준일에는 이미 돌아오셔서 내용을 보충해주셨다 =) 유니버셜 링크? 딥링크? 먼저 짚고 넘어가자. 유니버셜 링크라고 이야기하지만, 유니버셜 링크는 iOS…


Serverless, Netlify

링피트 체커를 fauna로 만들어보자

fauna와 netlify 활용하기


Writing

글또 4기 참가합니다 =)

개발 블로그들을 구독하다보면 유난히 눈에 띄게 잘 쓴 글들이 보였습니다. 프로필을 보면 저와 같은 주니어 개발자인 것 같은데 수려하고 잘 정리된 글을 작성하는 모습을 보면 완전한 프로 ! 그 아래에는 가끔 '글또…


WebRTC

실시간 통화 어떻게 하는 거지 : WebRTC 기초

WebRTC 를 공부하기로한다. WebRTC가 뭔데 - 이름 그리고 비전 webRTC는 plugin-free web - Real Time Communication 이다. 그러니까 별도의 플러그인 설치없이 실시간 소통(비디오, 오디오) 이 가능하도록 만들어주는 기술. 기존에는 내가 영상통화를 하고 싶으면 디스코드, 스카이프, 구글 행아웃을 설치하는 과정이 필요했는데, webRTC…


web

og tag를 적용했는데도 이미지가 안뜬다면

gatsby 블로그와 험난한 싸움중이다. 분명히 SEO 가 자동으로 적용되는 테마를 가져왔는데, 왜 작동이 안하는 것인지? 구체적인 문제상황은 글에 설정한 배너가 안떠요 였다. 시간이 좀 남아서 webrtc 글로 테스트를 해봤다. 분명히 구체적으로 url을 적었는데도 블로그 자체의 이미지가 나간다. 맞다, 글에 이미지 등록을 안했지. 리액트는 잘 모르지만.. SEO 컴포넌트를 들여다보니, 이런 html…


gatsby, web

jekyll to Gatsby 블로그👩‍🔧

jekyll 블로그를 gatsby 블로그로 옮기기


k8s, orchestration, Devops

쿠버네티스에 ImagePullBackOff 떠본적이 있다면

쿠버네티스 트러블슈팅


Postmortem

2019, 세번째 회고

회고를 작성하는 것이 벌써 세번째다.


Data, Database

Mysql 에서 unique 제약 삭제하기

DB 단에서 특정 두 칼럼의 조합이 유일하도록 하려면, unique contraint 를 걸어주면 됩니다. mysql에서 이 제약조건은 index로 표시되고, 이 index를 삭제하면 이 제약조건도 해제됩니다. 유용하게 쓸 수 있는 기능입니다. 그런데 unique contraint를 풀어줄 일이 생겼습니다. 처음에는 unique index…


Algorithm

Maximum Subarray 최대 부분합을 푸는 방법 : 카데인 알고리즘 👩‍🏫

LeetCode를 시간이 날때마다 풀고 있습니다. 워낙 알고리즘에는 잼병이기도 하고, 생각의 폭을 넓히기 위해서 푸는데요. easy에 있는 Maximum subarray 를 풀게 되었습니다. 처음에는 효율이 굉장히 낮게 for 문 여러개를 돌려서 풀었는데요 (거의…


Devops, Data

커맨드라인에서 json을 정제해봅시다 📋 : jq

안녕하세요, junebuug입니다. 어느날 저는 jenkins job을 구성하다가 PR 이 닫히면 jenkins job이 동작하는 걸 만들어야했습니다. 그런데 jenkins에서 자주 쓴다는 github pull request builder는 이런 기능을 지원하지 않더군요. 😢 jenkins url 에 hook을 걸어서 event를 받는 기능이 있지만, 모종의 이유로 제대로 동작하지 않았습니다. 그래서 그냥 github…


Data Structure

Trie 구조 츄라이🙆‍♀️

geohash 관련한 PR을 보고 있었는데, 다른 팀원분이 Trie로 접근해볼 것을 제안해주시더군요. Trie 자료구조, 분명히 입사 전에는 알고 있었는데 기억안나서 정리해봅니다. 😉 Trie 자료구조 🌴 어.. 어떻게 읽어야할까요? Trie의 용어를 만든 Edward Fredkin은 retrieval…


Security

SSL이 모요

HTTPS의 S는 SSL이고.. SSL 인증서가 필요하고.... TLS는 또 뭐야.. 다른거야..? 블라블라 😔 매번 스리슬쩍 넘어갔던 내용들을 정리합니다. 간단한 정보보안개념 + 네트워크 개념이 포함되어있습니다. 잘못된 내용이 포함되어있는 경우 둥글게 수정 요청 주세요. SSL/TLS 이름 어려워! 위에서 말했던 의문을 먼저 해결해보면... SSL와 TLS…


Java

[번역] 자바에서의 예외처리

과거에 썼던 dev 지식 모음을 보다가 아직 업로드하지 않은 것이 있어서 올립니다. Exception의 이해에 꽤 도움이 되었어서, 원문을 보시면 더 좋을 것 같습니다. Exception Handling in Java: A Complete Guide with Best and Worst Practices 위 문서를 요약, 번역하고 합니다. 필요한 경우 다른 정보를 추가합니다. Exception과 Exception…


Devops, Server

웹서버, 웹 어플리케이션 서버 + tomcat 이란

이런 현대미술전시같은 이름의 블로그 포스트라니. 매번 찾아놓고 기억하지 못하는 주제를 가볍게 정리합니다. 서블릿이란 (Servlet) 😗 서블릿은 웹서비스를 위한 자바 인터페이스 입니다. 서블릿을 쓴다는 건 웹 서비스를 제공한다는게 되겠지요. 웹 상에서 들어오는 요청 (request)를 가공하여 로직을 수행하고, 응답(response…


Security, Spring

Spring Security 개념 잡기

Spring Security 업무에서 사용하고 있으면서도, 쉽게 정리하기는 어려운 것 중 하나가 spring security 였는데요. 간단한 예제로 spring security를 적용할 기회가 있어 개념과 예제 코드를 정리해보려고 합니다. 설정은 다루지 않으니 이미 있는 코드를 보고 이해를 하시려는 분들께 추천합니다. Spring Security란? 자, 나는 토이프로젝트를 시작했다. 그리고 야심차게 form…


Batch, Spring, Data

처음 해보는 Spring batch, Tasklet 작성하기

매번 일반 API 만 하다가 처음으로 Spring Batch 를 작성할 일이 생겼습니다. 이럴 때를 대비해서 저장해둔 jojoldu님의 Spring batch 가이드 를 참고해서, 기본적인 내용을 학습하고 Tasklet으로 실제 Batch를 작성했던 내용을 정리합니다. 배치 어플리케이션이란 간단하게 배치 어플리케이션이 무엇인지 정리해봅니다. 배치(batch…


intelliJ, QueryDSL

QueryDsl intelliJ 루트 설정 안될 때 해결법

설정 하나만 켜면 된다


DesignPattern, Java

싱글턴 패턴 🌚

하나의 인스턴스를 만들어보자


DesignPattern, Java

옵저버 패턴 🌚

HEAD FIRST DESIGN PATTERN 을 정리합니다. 01 스트레티지 패턴 보기 02 옵저버 패턴 WeatherData 예제 기상정보를 알려주는 Weather Data 객체를 기반으로 디스플레이 장비를 만들어봅니다. WeatherData는 기상스테이션에서 받아오는 온도, 습도, 압력 정보가 있고 - 이를 표시하기만 하면 됩니다. 조건 데이터가 변할 때마다 measurementsChanged…


DesignPattern, Java

데코레이터 패턴 🌚

HEAD FIRST DESIGN PATTERN 을 정리합니다. 01 스트레티지 패턴 보기 02 옵저버 패턴보기 03 데코레이터 패턴 스타버즈 예제 커피전문점의 예제로 시작합니다. 스타버즈 커피점은 워낙 빠르게 성장해서, 이제야 주문 시스템을 구축하려고 합니다. 처음에 사용했던 음료클래스들은 Beverage 클래스를 HouseBlend , DarkRoast…


Java, Auth

Spring에서 HMAC-SHA256 인증해보기

이번에 외부 시스템과 연동을 진행하면서, 인증을 HMAC Signature 로 하게 되었는데요. HMAC이 가물가물해서 =) HMAC에 대한 간략한 소개와, Spring에서 어떻게 requestBody를 받아와서 HMAC Signature로 만드는지 샘플코드를 적어봅니다. HMAC? SHA-256? 이게 다 뭐야 😭 HMAC은 해싱기법을 이용해서 메시지의 위변조가 있었는지 체크하는 기법입니다. (Hash-based…


Java, Code Review

MIL(Monthly I learned) 4월 공유

TIL (Today I Learned) 는 매일 매일 배운 점을 적는 것인데요. 매일 매일 무언가를 지속해나간다는 건 참으로 힘든 일이네요. 그래도 다달이 하나쯤 공유하는 건 어렵지 않을 테니, 열심히 정리해보려고 합니다. DTO (Data Transfer Object) 만들 때 annotation 팁 필드 하나만 바꿔야 하면 JsonProperty, 클래스 레벨에서 전략을 적용해서 일괄로 바꾸려면 JsonNaming…


Conference

NDC(Nexon Developer Conference) 2019, <FIFA 온라인 4> 서버 포스트모템 후기

발표자료는 올라올테지만, 가장 인상깊게 들었던 발표를 들으며 적었던 노트를 날것으로 (ㅋㅋ) 공유합니다. <FIFA 온라인 4> 서버 포스트모템 김에스더님 From EA Korea 런칭 이전에 서버 준비과정부터 런칭 이후 운영 이슈까지 공유하고자 함 Microservices on Kubernetes(오케스트레이션 툴) 서버 아키텍쳐 피파온라인4는 FIFA시리즈 바탕 온라인 게임 아시아 4개국, PC…


DesignPattern, Java

스트레티지 패턴 🌚

HEAD FIRST DESIGN PATTERN 을 정리합니다. 02 옵저버 패턴보기 01 디자인 패턴 소개 , 그리고 스트레티지 패턴 상속의 문제점 서브 클래스에서 코드가 중복된다 모든 서브클래스의 행동을 알기가 어렵다 코드를 변경했을 때 원치 않는 서브클래스들에게 영향을 끼칠 수 있다 Duck 예제 Duck 종류를 총괄하는 Duck 클래스가 있다. 이를 상속하는 청둥오리도 있고 고무오리도 있다. Duck…


Redis

Redis 뭔지나 알고가자

프로젝트에서 like 를 Redis로 관리하고 있다. 관련해서 한번 짚고 넘어가려고한다. Redis? 기본적으로 Storage, 즉 저장소이다. 가장 큰 특징은 메모리 기반의 Key-value 저장소라는 점이다. 빠르고, 다양한 데이터 구조체(String, Set, Sorted Set ..)를 지원한다. 그래서 큐로도, Cache로도, Dictionary…


Java, Regex

JAVA url 매핑 정규식 공유

테스트를 8개 정도밖에 만들지 못했지만, 일단 원하는 바에 부합하는 정규식인 듯 하여 블로그에 작성해 둡니다. http나 https로 시작하는 경우에는 ://가 반드시 붙는다. Optional. www. 로 시작하는 경우가 있다. Optional. 알파벳 혹은 숫자를 포함한 문자열이 반드시 1개 이상 있다. 이후에 . 이 반드시 하나 포함된다. ( . ) . 를 기점으로 이후에 소문자가 반드시…


JPA, Java

JPA 영속성 컨텍스트 정리

영속성 컨텍스트 JPA를 사용하고 테스트를 짜다보면 영속성 컨텍스트를 몰라서 오류를 겪게되는 일이 생긴다. 그래서 한번은 짚고 넘어가야겠다는 생각에 참고글을 나름대로 정리해보았다. 정의 영속성 컨텍스트는 엔티티를 저장하는 환경이다. 엔티티 하나하나를 식별자 값( @Id )로 구한다. 이 컨텍스트는 EntityManager 객체 당 하나가 만들어진다. (Manager…


Java, Code Review

내받코리 1월,2월

이전에 내가 처음으로 받은 받은 JAVA 코드리뷰 모음 이라는 제목으로 글을 올렸었는데, 그 이후에도 이건 꾸준히 하면 좋겠다! 라는 생각이 들어서 또 다시 적습니다. 2월에는 Vue 공부도 조금했는데, Java 코드리뷰가 아닌 관계로 제외되었더니 양이 적네요. 보안이슈로 이전 API Deprecated 나중에 없앨 계획이시면 @deprecated…


FE, Javascript

Webpack과 babel이 뭐요

vue를 어설프게 써보려고, vue-cli 모듈로 프로젝트를 만들면 이런 설명부터 나온다. '그냥 디폴트 스펙(webpack & babel) 깔아줄까? 아니면 다른 모듈쓸래? ^_^' 물론 webpack이랑 babel을 모르면 무슨 얘기인지 모르고 'ㅇㅇ.. 깔아줘...' 할 수밖에 없지만, 그러기에는 너무 바보같으니까 정리해보기로 한다. 뭐 자바스크립트는 모듈 import…


Network, Zuul

Netflix Zuul - 요청을 다른데로 보내고 싶다면

Zuul 을 만나다 사건의 발단 서비스용 Stat 페이지를 운영툴에 붙이고 싶었다. 이 Stat 페이지는 vue 코드가, elastic search API를 찔러야하는 구조로 되어있고, elastic search가 설치된 서버는 물론~ 운영툴의 도메인과는 다른 도메인 이다. 같은 vue로 되어있는 운영툴 frontend에 떡하니 붙여보니, 운영툴 FE 도메인이 다른 도메인에 요청을 보내므로 CORS…


Spring, Java

RestTemplate 말고 WebClient

가장 먼저 코드로 본 web 요청 인터페이스는 WebClient였고, 명확하고 직관적이여서 자주 썼다. 그런데 현재 프로젝트에서는 RestTemplate과 WebClient가 혼재되어있어서, 이 둘에 대해서 조금 알아볼까 한다. 뭐가 더 먼저 나왔을까 : RestTemplate WebClient vs RestTemplate으로 치면 스택오버플로우 글 하나가 나온다. "야 Spring…


Spring, Annotation, Java

json을 펼쳐주는 @JsonUnwrapped

DTO DTO (Data Transfer Object) 는 클라이언트와 데이터를 교환하기 위해서 형식을 정해놓은 것이다. 예를 들어 화면에 상품과 그에 대한 리뷰가 같이 필요하다면, 와 같이 여러개를 감싸서 클라이언트에서 사용할 데이터만 쏙쏙 골라서 내려줄 집합인 것이다. json 모양이 복잡해 : nested json 그런데 위와 같은 DTO는 json…


Java, Spring, Annotation

Custom Annotation으로 유효성 검사하기

상황 어떤 값이 유효한지 검사를 해야 하는데, 해당 값은 entity나 DTO에서 받을 때 매번 유효성 검사를 해야한다. 이런 경우 대개 Validator를 사용해야하는데, Validator와 Annotation을 함께 사용하여 깔쌈하게 만드는 법을 알아본다. Annotation은 뭐더라 Annotation…


Test, Mockito

Mockito when으로 repository save 구현하기

상황 Test를 mockito로 작성하던 도중, repository의 save을 모킹해줄 일이 생겼다. 테스트하려는 메소드의 로직이 respository의 행동을 포함하고 있었기때문인데, 실제로 repository가 들고 있거나 DB에 저장되지 않아도 save 한 것 처럼 넣은 객체를 그대로 받고 싶었다. 일반적인 when - return 으로는 해결되지 않아 스택오버플로우를 참조했다. 해결방법 https…


Java, Spring

Setter 설정안하고 set하기

상황 기존에 통합테스트로 돌고 있던 web client 테스트가 있다. 외부 API를 찔러보는 테스트인데, 이에 필요한 파라미터는 해당 web client 내부에서 가져오는 방식이다. 이때 무거운 통합테스트가 아니라, 직접 파라미터를 set해주는 가벼운 단위 테스트를 만들고 싶다. 기존 통합테스트 Custom Client 테스트해보고 싶은 메소드 요청에 필요한 baseUrl은 다음과 같이 @Value…


Postmortem

2018. 회고

2017 회고를 쓰면서 2018에는..! 하는 마음이 있었던 것도 어제 같은데, 벌써 12월의 마지막 날이다. 시간 순으로 할까, 주제 순으로 할까, Good, Bad로 할까 고민했는데, 일단 주제순으로 가도록 한다. 졸업, 그리고 .. 1월 :: 2월 휴학이 끝나고 겨우 2학기를 마친 후, 숨돌릴 틈도 없이 코드스쿼드 에서 인턴을 했다. (개인 블로그지만) 이 자리를 빌어 JK…


Java

Java8 Datetime 대.정.리

??: 준영님 이 Date 무슨 형식으로 보내야해요? 그동안은 date는 무조건 서버에서 만들어서 넣어주는 것이어서 몰랐는데, date를 클라이언트(iOS앱) 에서 받을 일이 생겼다. DTO에는 해당 필드(createdDate라고 하자.) 가 ZonedDateTime인 건 알았는데, json 에서 어떻게 보내야하지? String 으로 말고..! 이러던 와중에 최근에 LocalDateTime DTO…


Web, CORS

CORS 맨날 봐도 모르겠어

맨날맨날 봐도 맨날 맨날 헷갈리니까 정리. 왜 웹에서 API 서버에 요청 안가는 거에요? 😭 웹 개발 시에 자바스크립트로 야심차게 외부 서버 경로로 ajax 요청을 날리면 요청이 실패한다. 요청한 리소스, 즉 서버에서 내려준 응답에 Access-Control-Allow-Origin…


Web, Storage

쿠키, 로컬 스토리지, 세션 스토리지 5초만에 알기

참고 https://www.zerocho.com/category/HTML&DOM/post/5918515b1ed39f00182d3048


Java, Lambda

자바 8의 함수형 인터페이스는 뭐에요

자바! 학교에서도 지속적으로 배우는 가장 익숙한 프로그래밍 언어 중 하나이다. 졸업때까지(2018) 만 해도 학부에서 파이썬이나 go 같은 트렌디한 언어가 아니라 자바를 한다고 하면 ??? 하고 바라보고, 고루한 언어처럼 여겨지기도 했다. 자바를 제대로 처음 배울 때는 2014년이었는데, 사실 이때 Java8이 릴리즈됐다. 그러나 그때의 자바 강의는 자바의 OOP…


Java, Code Review

내가 처음으로 받은 Java 코드리뷰 모음

같은 실수를 반복하는 멍청이는 되지말자는 의미에서ㅎㅎ PR을 쭉 보면서 받은 코드리뷰를 정리해보았습니다. 여러 번 반복해서 나오는 리뷰도 있네요.( 상수를 ~~제발~~ 위로 빼주세요ㅜ ) 스프링은 여태까지 했던 것 중에 제일 감을 못잡겠어서, 다른분들의 코드를 보면서 이해하고 있는데 리뷰를 받으면서 틀린 거 짚어주시니까 너무 기분이 좋고 호호 #…


Java

URL Encoding과 Java로 URL 뜯기

별것아닌거 같은데 삽질을 했던게 바로 어제다. redirect_uri 를 인코딩해서 내리는 게 금방 될 줄 알았는데!(그래서 url in url 형태를 막고 브라우저가 명확하게 인식하도록 하는 것) 삽질 과정을 정리해본다. 결론: Spring-Java에서 URL 뜯고 자원별로 뜯을 거면 URLComponentBuilder 쓰세요 첫번째 삽질 - split("&")로 query를 다 뜯어? 위와 같은 url…


Data

데이터베이스 기초 - 정규화와 무결성

DB 시간에 어려워서 대충 들은 부분이라 상당히 후회된다. 스키마 작성하는 중에 계속 정규화 얘기와 무결성 얘기가 오가게 되어 정리를 다시 꼭 한번 짚고 넘어가려고 한다. 이상 현상(Anomaly)을 막아주세요! 스키마를 작성하다보면 특정 정보를 중복해서 저장하는 경우가 생긴다. 한쪽에도 유저 June의 전화번호가 010-1234-1234 라고 적고, 다른 쪽에도 동일하게 적어둔다고 해보자. 그런데 June…


Auth, Kerberos, Security

커버로스 Kerberos 프로토콜 이란

커버로스 이미지로 알아보기


Hadoop, Data

하둡 이란

팀 내에서 하둡 시스템 케이스 스터디를 보고, 또 커버로스와 하둡이야기가 계속 오가기에 늦기전에 정리해야겠다고 생각했다. 🙂 학교에서는, 코끼리 마크를 가진 분산형 파일시스템 정도로만 가르쳐주었기에 실제로는 어떻게 쓰는지 궁금해졌다. 참고 http://www.itworld.co.kr/print/73626 왜? 하드 디스크의 용량은 엄청나게 증가했지만 이를 읽는 속도는 상대적으로 느리게 증가했다. 옛날에는…


Generic, Java

Java Generic 자바 제네릭

Generic 개념을 제대로 정의하지 않고 넘어가니 계속해서 의문점이 생기는 경우가 늘어난다. ArrayList<String> 으로만 접한 Generic을 좀더 잘 정의해보도록 한다. Generic (제네릭) 일반적인 자료형이라고 하면, 우리는 int, double, String…


Test, Spring, Java

스프링에서는 어떻게 테스트하나요?

단위테스트는 뭔가요? 외부에 의존성이 없는 소프트웨어 단위의 테스트. 단위테스트는 빨라야한다. Working Efficiently with Legacy Code 의 저자는 테스트 실행시간이 0.1초가 넘어가면 단위테스트가 아니라고 말했다. BDD Behavior Driven Development Given : 조건. ~가 주어졌을 때 When: ~를 한다면 (행위) Then: 이래야한다. AAA Arrange / Act…


JPA, Java

JPA 가 뭔데 쓰는건가요?

Spring을 공부하던 중에, 멘토님께서 JPA의 중요성을 강조해주셨습니다. Django 는 ORM 으로 간단하게 DB를 다루고 쓸 수 있었는데, Spring에서는 어떤 식으로 DB에 접근하고 데이터를 읽어오는 지 궁금해졌습니다. 설마 학교에서 하던 것 처럼 현업에서 직접 DB에 커넥션 맺고 길고 긴 코드로 가져오는 건 아닐테니 말입니다. 🤨 이 포스트에서는 JPA가 무엇인지, 왜 등장했는지와 QueryDSL…


Spring, library, Java

Actuator 사용하기

Spring-boot 를 intelliJ에서 사용하면, 설정 시에 Actuator 를 사용할 수 있습니다. actuator는 스프링 부트 어플리케이션의 상태를 편리하게 확인할 수 있는 도구이지만, 그렇기 때문에 실 서비스에서는 공격 등을 대비하여 막아두어야하는 도구이기도 합니다. 오늘은 간단하게 actuator 의 명령어와, 실 배포 대비 방법을 알아봅니다. 소개 및 설치 Spring Boot Actuator…


Code Review

Code Review in Google

Modern Code Review: A Case Study at Google 위 문서를 요약 - 번역합니다. INTRODUCTION Peer Code Review는 코드 작성자가 아닌 동료 개발자들이 직접 코드를 검사하는 방식으로, 소프트웨어 프로젝트의 질을 향상시키는 것으로 여겨졌습니다. 최근들어 많은 기관들이 좀더 가벼운 방식의 코드 리뷰를 받아들이고 있습니다. 1) informal (Fagan 방식의 정반대)…


Logger, spring, slf4j

Logger in Spring

Logger SLF4j 를 일단 기본 로깅 파사드로 생각하고 말해보자. Log4j 는 두가지 버전이 있다. Log4j 1, Log4j 2 Log4j 1을 보완하려고 나온 Logback 이 있다. 현재 우리 프로젝트 에서는 SLF4j 와 Logback의 조합을 사용하고 있다. Log4j 2 가 Logback 보다 성능이 더 낫고, Async Logger를 지원함. Logback…


npm, Web

NPM INSTALL SUDO 일때도 안돼요!

iterm 테마 한번 깔려면 매번 npm 과의 싸움을 벌이게 됩니다. 왜 나는 sudo 권한으로 npm install 을 설정해도 permission 에러가 뜨는 걸까? 이번에 한 블로그 글을 보고 해결하게 되어 여기에 적습니다. 여기서 저는 prefix 가 /usr/local 로 설정된 것을 확인했습니다. 이렇게 현재 유저로 노드 모듈 폴더 권한 설정을 변경해주면 잘 동작합니다.


Git

Rebase와 Merge

협업의 git


Serializable, Java

왜 직렬화는 직렬화일까

직렬화 이름이 궁금해


Java, Spring, Effective java, clean code

좋은 JAVA 생성자를 만드는 법[EFFECTIVE JAVA 2E]

생성자는 어떤 방식으로 만들어야할까?


Spring, Java, AOP

AOP(Aspect Object Programming) 이란

Spring에서의 AOP


Java

Effective Java 2E 정리하기 1편

자바를 좀더 잘 쓰려면 어떻게 해야할까


network, gRPC

gRPC 뽀개보기

RPC도 모르는데 gRPC는 뭐야?


go

golang 기초

gopher


wtm

Women techmakers 2018 운영진 리뷰

가장 가까이, 빠르게


python, django, csv

CSV파일을 읽어서 django 모델을 bulk_create하기

엑셀로 관리하던 DB를 이식해오자


python, jwt, token

토큰으로 토큰을 만들자 - pyjwt 사용기

json web token 너 부르기 좀 껄끄럽다


Postmortem

2017 회고

도약을 위한 한해


etc

간헐적 코딩

마음 다잡기


Django, Python

Django에 가상환경이 없다면

pycharm에서 venv 편하게 설정하기


우아한테크캠프, 후기

넌 강해졌다, 돌격해!

우아한테크캠프를 마치며


iOS, firebase, swift

iOS에서 Firebase 이중 필터하기

험난한 RealtimeDatabase 적용기


mysql, database

Mysql 기본 쿼리 공부하기

mysql 기본


AWS, ubuntu, mysql, CLI

Ubuntu LTS에 mysql 설치하기

mysql, CLI로 설치하기