반응형

분류 전체보기 47

[Clean Code] 자신의 기억력을 자랑하지 마라

세상에 수많은 어려운 것 중에 한 가지는 바로 작명이라고 생각합니다. 이 블로그를 처음 만들 때에도 블로그 이름과 닉네임을 생각하는데 많은 시간을 썼던 것 같아요 (나름 열심히 지은 이름이랍니다 ㅋㅋㅋㅋ) 이것 외에도 반려 동물, 자동차, 가방.. 등 우리는 대부분의 사물에 이름을 붙이려고 합니다. 어떤 이름이 좋은 이름일까요? 의미를 가진 이름? 부르기 쉬운 이름? 좋은 뜻을 가진 이름? 비속어와 같은 나쁜 단어를 포함하지 않는 이름? 짧은 이름? 긴 이름? 제 답은 "그때그때 달라요" 입니다 어떤 조건을 가진 이름이 좋은 이름인지 아직도 잘 모르겠지만 상황에 따라 다르지 않을까 싶습니다. 이번 포스팅은 프로그래밍에서의 좋은 이름에 대해 다뤄보려고 합니다 :) 소스 코드에서는 어떤 이름이 좋은 이름일까..

ETC/Books 2021.10.17

[JPA] JPQL (Java Persistence Query Language) 객체 지향 쿼리

JPQL? 객체 지향 쿼리? JPA를 학습하던 중 조금 신선한(?) JPQL을 알게 됐습니다. 일반적으로 알고 있는 SQL는 데이터베이스의 테이블을 대상으로 한다면 JPQL은 객체를 대상으로 합니다. 객체를 대상으로 한다고? 위 코드의 결과물을 예상 해보세요 :) 네, 맞습니다. sout 으로 출력되는 결과물은 5개의 객체의 name값이 출력될 겁니다. 5개의 객체가 저장 되는 과정은 1. 엔티티매니저의 메서드를 활용하여 queryString과 객체 타입을 전달하고 2. 결과물의 1번 부터 5번까지의 객체가 3. List로 선언된 result 에 저장이 됩니다. 4. 끝 * SQL을 따로 작성 하지 않습니다. * JPQL의 특징 중 한가지가 SQL을 추상화하여 특정 Database에 의존적이지 않기 때문..

Spring/JPA 2021.10.12

[Spring Boot] Spring boot 버전에 맞는 Dependency 버전 찾기

Spring이나 Spring Boot와 같은 프레임워크를 이용하여 개발을 진행할 때 외부 라이브러리 (API)를 사용하기 위해서 Dependency를 사용하는데 이때 내가 쓰는 프레임워크의 버전을 지원하는 라이브러리 버전을 Import 하는 것이 중요합니다. 그래서 이번 포스팅은 프레임워크에 맞는 Dependency 버전을 확인 하는 방법을 알아보겠습니다. 사소한 내용이라고 생각 할 수 있지만 많은 시간을 아끼게 될 수 있습니다 😉 1. https://spring.io/ 로 접속 2. 상단 메뉴 중 Project > Spring Boot 또는 Spring Framework 클릭 (사용하고 있는 Framework 클릭) 3. 하위 탭에서 LEARN 클릭 후에 원하는 버전의 Reference Doc 클릭 4..

Spring/Java,Spring 2021.10.11

[JPA] 패러다임의 불일치 와 해결책 (feat. JPA)

길지 않은 개발 경력이지만 한 가지 사실은 명확하게 알고 있습니다. 바로 그 명확한 사실은 "프로그램은 천년만년 그대로 있지 않는다."입니다. 프로그램 변화의 이유는 1) 요구 사항이 변경되어서 2) 기능을 추가하기 위해서 3) 보안을 강화하기 위해서... 등등 비슷한 듯 보이지만 조금씩 다른 이유가 있습니다. 제가 운영하고 있는 시스템에 수정 요청이 접수되었는데, 수정이 필요한 부분의 규모와 범위가 작다면 수정하는데 큰 무리가 없겠지만 수정 규모와 범위가 크고 넓다면 상당한 부담이 될 것입니다. 설상가상으로 수정에 필요한 적정 수준의 일정이 아닌 굉장히 타이트한 일정이라면 더 상황을 최악입니다. 위와 같은 상황이라면, 정말 뛰어난 개발자도 사람인지라 충분히 실수를 하지 않을까요? 실제로 주변에서 있을 ..

Spring/JPA 2021.10.07

[주저리주저리] Goodbye Mentor

누구나 한 번쯤은 신화에 나오는 신 또는 영웅의 이야기를 접해본 적이 있을 겁니다. 조셉 캠벨은 에서 시대의 고금과 지역의 동서를 가리지 않고 신화 속 영웅 이야기에는 일정한 패턴이 존재한다고 밝혔는데 "영웅은 일상적인 삶의 세계에서 초자연적인 경이의 세계로 떠나고 여기에서 엄청난 세력과 만나고, 결국은 결정적인 승리를 거두고, 영웅은 이 신비로운 모험에서, 동료들에게 이익을 줄 수 있는 힘을 얻어 현실 세계로 돌아오는 것이다."라고 했습니다. 이 서사 구조는 많은 사람들을 열광하게 했었습니다. 저도 굉장히 격하게 공감을 했는데요. 영웅이 주인공이 되어 등장하는 영화나 드라마를 보면 해피엔딩으로 끝나는 경우가 많은데, 해피엔딩으로 마무리되기 위해서 영웅(주인공)이 결정적인 순간에 위기를 극복하거나 치열한..

[Clean Code] 우리는 모두 author 이다.

javadoc에서 @author 필드는 저자를 소개한다. 우리는 저자다. 저자에게는 독자가 있다. 그리고 저자에게는 독자와 잘 소통할 책임도 있다. -출처 Clean Code 내용 중- 오늘 읽었던 몇 안 되는 문장 중에 인상 깊었던 문장 중 하나입니다. 이 문장은 읽자마자 "꼭 포스팅해야지"라고 생각했습니다. 오늘 파트 후배가 본인이 받은 프로젝트에서 새로운 기능을 개발해야 하는데 legacy를 어떻게 활용해야 하는지, 어떻게 코드를 짜면 좋을지에 대한 질문을 했었는데, 그 질문에 두루뭉술하게 대답을 해줬었던 기억이 떠올랐습니다. 제가 했던 대답은 비슷한 기능을 하고 있는 코드에 의존하지말고 참고용으로만 생각하는 것이 좋다. 기존의 코드를 얼마나 잘 활용했는지가 중요한게 아니라 구현하고자 하는 기능이 ..

ETC/Books 2021.09.29

[Jenkins] FTP 를 이용한 자동 배포 설정 (from Windows to Windows)

Jenkins를 활용해 Windows to Windows 자동 배포를 SSH를 활용하여 설정하기 위해 여러 가지 시도를 해보았지만 실패하여 결국 FTP 방식을 선택했습니다. 아래 가이드는 Jenkins 플러그인을 이용하여 FTP 방식의 자동배포 설정에 대한 가이드입니다. 준비사항 1) 출발지 서버와 도착지 서버 간 방화벽이 열려있어야 합니다. 2) 도착지 서버에서 FTP 포트(21번)가 인바운드 규칙에 추가되어 있어야 합니다. 1. [도착지 서버] FTP 서버 활성화 기본적으로 Windows 10 이후 서버라면 FTP 가 설치되어 있을 겁니다. 1) powershell을 실행 net start ftpsvc 2. [출발지 서버] Jenkins 플러그인 설치 1) Jenkins 관리 > 플러그인 관리 2) ..

ETC/Tools 2021.09.28

[Book] 자바 ORM 표준 JPA 프로그래밍 과 인연

JPA를 처음 알게 된 건 회사에서 업무 외에 진행하고 있는 토이 프로젝트에서 Spring Security를 쓰면서 우연히 알게 되었습니다. 그때 그 멍~했던 기분을 아직도 잊을수 없어요! Spring Security의 동작 원리를 파악하기 위해서 브레이크 포인트를 찍고 디버깅을 하는데 쿼리가 없다?! 어 내가 F8(다음 중단점으로 이동 단축키)를 눌렀나?라고 생각해서 4~5번은 돌려본 것 같아요 내 눈에 보이는 건 몇개의 어노테이션과 CRUD로 추정되는 함수들이 전부 ㅋㅋㅋ 이게 머선 129?!?! 오늘도 또 물음표로 시작합니다 우연히 알게 된 JPA라는 녀석에 관심이 생겨서 이것~저것~ 알아보다 보니 굉장히 흥미롭다고 생각이 들어서 한번 배워보고 싶다!라는 생각에 이곳저곳 수소문을 하고 다녔어요 (J..

ETC/Books 2021.09.27
반응형