분류 전체보기

🏃🏻 Daily/🤔 회고

너무 바빴네용

열심히 TIL, 블로깅 할거라고 다짐했던 1월... 회사 적응하고, 새로운 피쳐 개발들어가면서 소화하기 힘들었지만 이젠 하고싶은거 막 올려야지 🥹 백엔드 관련 외에도 평소에 해보고 싶었던 것들 위주로 재밌게 코딩해볼예정입니다.

🏃🏻 Daily/🤔 회고

[후기] 프로그래머스 클라우드 기반 백엔드 데브코스 수료

소감 올해 7월 말 부터 12월 말 까지 5개월 동안의 프로그래머스 데브코스를 수료하였다. 시작하기 전까지 반려견 펫케어 스타트업에서 nodejs 개발자로 일을 하였고, java 개발자로 전환을 위해 지원하였다. 하지만 이 과정에서 가장 얻어가고 싶었던 점은 - 개발자로써 성장하는 방법 - 협업 방식과 자세 - 데브코스 동료들 였다. 그리고 과정속에서 내가 얻고자 하는 점들을 다 얻었다고 생각한다. 개발자로써 성장하는 방법 학부시절 그리고 스타트업 백엔드 개발자로 근무때를 생각해보면 코드를 이렇게 이렇게 짜면 되는 느낌만 알았지 이것을 왜 써야하며, 현재 위치에서 더 나아가는 방법을 알지 못했다. 데브코스에서는 강사분들의 강의 뿐만 아니라 교육생들의 질문을 받는 세션 등을 통해 개발자가 갖춰져야할 자세와..

👨🏻‍💻 Development/🍃 Spring Boot

Raw SQL vs Query Builder vs ORM

요즘 기업 면접을 본다고 매우 정신이 없다. IntellIJ도 정말 오랜만에 켜보는 것 같다. 이번 정리글은 면접 과정에서 질문에서 준비할려고 했지만 준비하지 못한 질문을 받아서 해당 글이 잘 정리되어있는 원문을 번역해보려고 한다. Raw SQL vs Query Builder vs ORM How to talk with your relational database https://levelup.gitconnected.com/raw-sql-vs-query-builder-vs-orm-eee72dbdd275 Raw SQL vs Query Builder vs ORM How do you talk with your relational database? levelup.gitconnected.com 데이터베이스는 거의 모..

👨🏻‍💻 Development/🍃 Spring Boot

JPA - Attribute Converter

중고 게시글 상태가 (판매중, 예약중, 판매완료, 숨김) 4가지로 나타낼 수 있는데 Database에서는 integer형태로 저장하여 효율을 높이고, Spring에서는 숫자에 따른 Enum type으로 관리한다면 얼마나 좋을까? Database에서는 Enum type으로 저장한다면, 효율측면과 유지보수 측면에서 알 수 없는 오류가 나기 쉽상이다. (Enum.value vs Enum Ordinary) 그래서 JPA에서는 중간에 추상화 객체를 두어 변환이 매우 쉽게 될 수 있도록 기능을 제공한다. Entity & Enum // entity @NoArgsConstructor @Getter @Entity(name = "posts") @DynamicUpdate @Builder public class Post ex..

👨🏻‍💻 Development/🤯 SoftSkills

IntelliJ를 JIRA와 연동해서 사용

참고 IntelliJ를 JIRA와 연동해서 사용하기 JIRA를 사용하다보면 key값이 보인다. 이 key값을 이용하면 github와 연동을 쉽게 할 수 있다. 연동 설정 Atlassian(JIRA) API 토큰 생성 계정 설정 → 보안 탭 → API 토큰 만들기 및 관리 Intellij에 JIRA 연동 IntelliJ → Preferences → Tools → Tasks → Servers + 버튼을 누르고 JIRA 선택 url 및 email, 발급 받은 API Token 넣고 OK 버튼 누르기. test해보고 연동이 완료되면 좋습니다. 👏🏻👏🏻👏🏻 JIRA 업무들을 IntelliJ 로 가져오자. Mac OS 기준으로 option+shift+n 을 사용하시면 아래와 같이 본인에게 할당된 티켓 목록을 볼 수..

👨🏻‍💻 Development/🗂 etc

[Network] ssh 키인증 방식

SSH는 대칭키 방식과 비대칭키 방식을 모두 사용하여 인증과 암호화를 진행. 암호화 방식의 종류 대칭키 방식 동일 키 값으로 암호화 복호화 비대칭키 방식 암호화와 복호화를 서로 다른 키를 사용하는 방식 aws에 ec2 서버를 만들고 private key (mykey.cer)를 받았다. 서버 인증 과정 클라이언트에서 ssh -i mykey.cer ec2-user@123.123.123 명령어를 통해 접속 시도 공개키를 받을지 묻는 메세지 나오면 yes -> 클라이언트 pc의 .ssh/knwon_hosts 파일에 공개키 저장됨. 클라이언트는 난수값을 발생시키고 난수값에 대한 해시값 생성해 저장함. 난수값을 공개키로 암호화하여 서버에 전송함. 서버에서는 암호화된 데이터를 비밀키로 복호화한 후 난수값을 알아낸다...

👨🏻‍💻 Development/🧩 OOP

instanceof 연산자와 LSP(리스코프 치환 원칙)

LSP LSP는 OCP(개방폐쇄원칙)을 받쳐주는 다형성에 관한 원칙을 제공한다. 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. instanceof 그래서 instanceof 연산자는 타입을 확인하는 기능을 사용하기 때문에 LSP 원칙이 깨지는 주요 현상이다. Example before) public class Order { public int calcuateDiscountAmount(Item item) { if (item instanceof Food) // LSP 위반 return 0; return item.getPrice() * discountRate; } } after) public class Item { public boolean isDi..

👨🏻‍💻 Development/☕️ Java

JUnit의 @BeforeClass 와 static block {}

Static Initializer (static block{}}는 JUnit이 아닌 JVM에 의해 호출 된다. 만약 예외가 static initializer 내부에서 발생된다면 테스트 프레임워크는 예외를 처리하고 보고하는 작업을 못 한다. 더 나아가 static initializer의 호출 시간은 @BeforeClass 메서드와 비교하여 잘 정의되지 않는다. static initializer는 정적 속성, 정적 메서드 또는 생성자 중 하나의 접근과 같은 첫 번째 실제 사용 시 클래스 로더당 한 번만 실행된다. 때론 이게 언제가 될지 가늠하기 어려울 때가 있다. (그래서 static initializer는 미래에 복잡한 버그를 야기할 수 있다.) 반면에 @BeforeClass는 각 클래스의 테스트 코드가 ..

황일용
'분류 전체보기' 카테고리의 글 목록 (2 Page)