좋은 시스템에서 좋은 코드를 보고 배우며 성장하는 유토피아를 꿈꾸는 주니어였지만 , 현실은 하드코딩 난무하는 레거시코드와 통계업무지옥에 치이고 약간은 타성에 젖어가며... 저는 어느덧 2년 n개월차 주니어로 살고 있었습니다.😥 그때 만난 이글이 저에게 뭔가 trigger가 되었습니다! 글 내용 중 가장 와닿았던 부분은 레거시 코드는 다른 사람이 "처음" 작성해야 하는 처지였음을 잊지 말아야 한다. 레거시 코드를 만난다고 실망에 그칠 것이 아닌 적극적으로 개선시키는 태도가 필요하다. 라는 부분 이었습니다. 레거시 코드를 두고 투덜대기만 할 것이 아니라 저 스스로가 적극적인 태도를 가지고 개선하려는 마음 가짐을 갖게 하는 좋은 초석이 되었습니다. 저 조차도 6개월 전에 제가 쓴 코드를 보고도 '아니 이건 왜..
전체보기
Java8에서 선보인 Stream API를 근래 업무에서 너무 편하게 잘쓰고있어서 정리해보려 한다. 필요의 순간에 아주 유용하게 쓸 수 있는 API니 잘 알아두자! Java Stream 기존에 자바 Collection이나 Array의 요소를 가공할 때는 loop(for, foreach)를 사용해서 요소를 골라내는 작업을 했다면, Stream은 람다형(함수형 인터페이스) 으로 간단하게 요소를 처리할 수 있도록 한다 장점 코드의 양을 줄여 간결하게 표현 손쉬운 병렬처리(multi-threading) Stream 사용법 객체집합.스트림생성.중개연산.최종연산 이러한 형태의 기본문법으로 사용한다. 스트림 생성 Collection과 Array와 같은 객체집합으로 스트림을 생성한다. 이외에도 다양한 방법으로 스트림을..
PostgreSQL에는 DML(INSERT, UPDATE, DELETE) 실행 후, affected rows 갯수 대신 정보를 반환해주는 구문이 있다. 그것이 바로 RETURNING 구문이다 사용방법은 아주아주 간단하다!! INSERT, UPDATE, DELETE문 뒤에 RETURNING \* 을 쓰면 실행 결과 ROWS를 반환한다. 이 흥미로운 문법을 아래의 활용 예제를 보면서 RETURNING 을 어떻게 쓸 수 있는지 자세히 살펴보자👩🤟 Examples 활용1. SELECT KEY Spring 환경에서 우리는 insert(혹은 update)에서 SQL 실행 후 특정 값을 반환하고 싶을 때, 대게의 경우에 mybatis(혹은 ibatis)를 이용하여 이렇게 썼을 것이다. //old INSERT INTO..
💡2024년 updatepostgresql v15에서 드디어 장한 merge문도 보고가세오😘 [PostgresQL] 드디어 나온 PostgresQL 15의 Merge into 구문 사용하기'이가 없으면 잇몸으로 살겠다'_며 Postgresql의 merge문이 없음을 한탄하며 UPSERT썼던 이 글을 쓴지도 벌써 어연 4년이 지난 지금...! PostgreSQL 15 릴리즈 부터 Merge문을 공식적으로 지원하기 시작했다fascinate-zsoo.tistory.com ... List가 없이 에디터 하나로 insert/update를 해야하는 게시판을 작성하는 업무가 있어서 찾아보다가 UPSERT라는 것을 알게 되었다!UPSERT 는 일종의 MERGE문 같은 개념으로(postgresql은 merge가 없..
개인프로젝트 또는 현업에서 종종 공공데이터포털의 데이터를 활용할 일이 꽤나 있습니다. 특히 최근에는 지도API를 활용한 업무가 많아졌습니다. 그런데..! 데이터 제공처마다 각각 다른 좌표 투영계를 사용하여 좌표를 제공하여 (표준통일같은건 없는거니..) 현재 사용중인 카카오맵SDK에서 기본으로하는 위경도 좌표계(위도 38.xxxx, 경도 126.xxx의 표시방법)로 좌표계 변환이 필요했습니다. 사실 지도 투영과 좌표계에 대한 내용은 GIS에 대한 좀 더 깊은 공부가 필요하지만, 저는 라이브러리를 사용하여 빠르고 간단하게 변환하는 방법을 선택해보겠습니다.😏 사용한 라이브러리는 proj.js라는 JavaScript 라이브러리로 지리 좌표 변환 소프트웨어입니다. 현재는 8버전까지 나와있으나, 릴리즈 4버전으로도..
null 병합 연산자 '??' 프로그래밍을 할 때 우리는 필연적으로 null 체크하는 로직을 만나곤 하게 됩니다. 그때마다 우리는 if문을 통해서 null 값을 체크해오곤 했었습니다. 하지만 JavaScript ES6문법에서부터 사용이 가능해진 null 병합 연산자 ??를 사용하면, 짧은 문법으로 여러 연산자 중 그 값이 '확정'되어 있는 변수를 찾을 수 있습니다. 예를 들어 어떤 변수 x의 값은 변수 a가 null도 아니고 undefined가 아니면 a가, 그렇지 않을 경우는 b가 되도록 하고자 할 때 우리는 구식 문법으로 아래와 코드를 작성했습니다. //old //if~else문 let x; if(a !== null && a!== undefined){ x = a; }else { x = b; } or ..
개발자라면 누구나 사용하는 깃허브를 ⭐️ 뽄.새.⭐️ 나게 꾸미고 싶은 나는 잔디심기🌱에서 만족할 수 없었다! 그래서 본격! 깃허브 꾸미기, 일명 깃꾸 를해보려 한다. 프로필 만들기 Github의 Overview 페이지에 '나'라는 개발자를 가장 먼저 보여줄수 있는 프로필을 넣을 수 있다. 공식문서를 따라 첫번째로 자신의 Github 아이디와 동일한 이름의 레파지토리를 생성하여 프로필을 만든다. 나의 깃허브 아이디가 didue이므로 같은 이름의 didue 레파지토리를 public으로 생성 후, README.md 파일을 통해 프로필을 작성하면 된다. 프로필이 생성되었다면 Overview의 첫화면에 README로 작성한 프로필이 보일 것 이다! 프로필을 다채롭게 꾸며보기 그렇다면 이제 프로필을 더욱 😎 간z..
오늘은 RESTful 을 공부하다가 새로운 어노테이션을 알게되었다! 업무에서도 아주 유용하게 적용할 수 있을 것 같아서 기록해둔다ㅎㅎ 1. 문서 Spring Framework Documentation Spring MVC - URI Pattern 2. How to 기존 Spring MVC에서 URL을 통해 GET타입으로 Paramter를 넘겨받기위해서는 Controller에 @RequestParam 어노테이션을 이용하여 파라미터를 추가했다 @RequestMapping("/bookings") public ModelAndView getBooking(@RequestParam Long booking) { // ... } @PathVariable은 아래와 같이 바꿔 RESTful 서비스의 URI 형태로 쓸수 있다!..