목록분류 전체보기 (368)
잡동사니
안녕하세요. yeTi입니다. 오늘은 막연한 스킬 UP 활동을 구체화 시켜보려고 합니다. 계기 최근에 프로그래머스에서 주관하는 2022 Dev-Matching: 웹 백엔드 개발자(상반기)-2 에 참여했습니다. 처음에는 가벼운 마음으로 시작했는데 막상 결과를 받고보니 부족한 실력에 씁쓸한 마음을 감출 수는 없더군요.ㅜ 사내 개발 커뮤니티를 만들고 싶어 소소한 활동을 시작했는데요. 한달동안 진행한 #1일1콭 챌린지가 실력 향상에는 많은 도움을 주지 못한다는 느낌도 받아서 개선방안을 내야할거 같습니다. 회고 이력 10년차 개발자의 넋두리 좋은 시니어가 되자 좋은 문화를 가진 팀을 만들자 좋은 컨텐츠를 생산하자 10년차 개발자의 커리어 회고 좋은 기업에 꾸준히 지원해보자 목표 설정 구글 입사 하드 스킬 UP, 소..
안녕하세요. yeTi입니다. 오늘은 JPA를 사용하면서 자주 사용하는 Fetch Join 의 특성에 대해 알아보고자 합니다. 공부 계기 공부가 부족한 탓에 엔티티의 @OneToOne 관계 설정 후 fetch join 으로 조인 대상을 필터링 하려는 시도를 했습니다..ㅜ 하지만 원하는 결과가 나오지 않아 원인을 찾기 위해 구글링을 하게 되었고 인프런에 계신 김영한님의 답변들을 보면서 궁금증을 해소하게 됐습니다. JPA 강의도 정주행을 해야하지만 현재 보고 있는 이펙티브 자바 완벽 공략 1부 를 완강 후 보도록 해야겠습니다. 원인 JPA 표준 스펙에는 fetch join 대상에 별칭이 없지만, 하이버네이트는 허용합니다. 즉, fetch join 대상에 별칭을 사용은 할 수 있지만 DB 일관성 문제들이 발생할..
안녕하세요. yeTi입니다. 오늘은 백기선님의 디자인 패턴 강의를 본 후기를 기록하려고 합니다. 수강 계기 디자인 패턴은 주기적으로 공부를 시도하는 영역인대도 불구하고 끝을 보기가 쉽지 않은거 같습니다. 같은 이유로 시도할 때가 되서 본게 아닌가 싶습니다. 싱글톤 패턴 싱글톤 패턴은 프로그램내에 유일한 인스턴스를 가지게하고 싶을 때 사용할 수 있는 패턴입니다. 구현 방법으로 간단하게 syncronozed 키워드를 사용하는 방법과 클래스 로드시점에 인스턴스를 생성하는 eager initialized 방법 인스턴스를 생성하는 시점에 syncronozed 를 활용하는 double checked locking 방법 static 키워드의 단일 인스턴스의 특성을 활용하는 static inner class 방법이 있..
이동욱님의 회고를 보고 깨달음 저는 이동욱님을 2017년에 기억보단 기록을 (tistory.com)로 알게되어 개발자로써 방향성을 잡고 나아가는데 많은 도움을 받고 있습니다. 하지만 근래에 인프런으로 이직을 하시면서 블로그를 통해서 공감을 받을만한게 적어져 방문이 뜸했던 요즘이었는데.. 2021년 CTO 회고 (tistory.com)를 읽고 여러모로 아직 따라가기엔 멀었다는것을 새삼 느끼게 되었습니다. (기술적으로 커뮤니케이션적으로 인성적으로 ...) 개발자의 회고를 보고 깨달음 그 중 빠삐코님의 2021년 회고 (이동욱님의 팀원) 에서 아래 인용문을 읽고 공감이 됐습니다. 향로가 오셨을 당시 나는 프로젝트에 나를 너무 투영시켰다. 보편적인 기술 스택에 대한 설명이 현재 기술 스택에 대한 비난같았고, 새..
안녕하세요. yeTi입니다. 오늘은 백기선님의 강의 중 자바의 열거 타입를 보다가 받은 숙제인 HashMap, HashSet과 EnumMap, EnumSet과의 차이점 확인해보고자 합니다. EnumSet의 구조 EnumSet 은 내부적으로 bit vector를 사용하기 때문에 메모리 효율이나 성능면에서 뛰어나고 64bit를 넘어가는 경우도 대응할 수 있습니다. 다만 thread-safe 하지 않기 때문에 multi-thread 환경에서 사용하려면 Collections.synchronizedSet() 을 사용하여야 합니다. 따라서 Bit 필드 사용해야될 경우 EnumSet 을 사용하면 효율이나 성능측면에서 득이 됩니다. public class Text { public enum Style { BOLD, IT..
안녕하세요. yeTi입니다. 오늘은 Java 의 Enum 을 지역 변수처럼 사용하려고 시도하면서 겪은 현상을 공유하고자 합니다. 현상 다음 테스트 코드와 같이 enum 을 여러 곳에서 지역 변수로 할당받아 Enum의 내부 변수(message)를 변경하는 작업을 수행했더니 의도와는 다르게 message 의 값이 이전 값을 계속 유지하는 버그가 나타났습니다. class EnumTest { @Test void constructor() { EnumType responseType1 = EnumType.INTERNAL_SERVER_ERROR; responseType1.changeMessage("yeti"); EnumType responseType2 = EnumType.INTERNAL_SERVER_ERROR; res..
안녕하세요. yeTi입니다. 오늘은 백기선님의 유튜브 강좌 중 하나인 이팩티브 자바 의 완주 후기를 공유하려고 합니다. 강의 수강 계기 지난 후기 이후로 요즘 너무 기초 강좌만 보고 있나 라는 생각이 들면서, 좀 더 발전적인 다른 무언가를 해야겠다는 생각을 막연하게 가지고 있었습니다. 그러던 차에 백기선님의 지금까지 만들었던 강의들은 결국 이 강의를 만들기 위한 준비 작업이었습니다. 라는 영상이 이목을 끌었고, 궁극의 강의의 주제는 무엇일까? 라는 궁금증으로 바로 영상을 보게 되었네요. 영상에서 이펙티브 자바 Effective Java 3/E - YES24 는 모든 자바개발자에게 권장하는 필독서중 하나 이지만 모든 개발자가 소화하기는 힘든 어려운 책 이라고 하는데요. 그래서 이펙티브 자바를 주제로 강의를..
안녕하세요. yeTi입니다. 오늘은 테이블 명세서를 쉽게 만들어주는 오픈소스를 소개하려고 합니다. 배경 프로젝트를 진행하다보면 Excel 문서로 명세서를 작성해야할 일이 생깁니다. 이 때 테이블 수가 적다면 부담없이 업무를 진행할 수 있겠지만 테이블이 많거나(100개 이상) 관리하고 있는 데이터베이스의 수가 많다면 일일이 찾아가며 문서를 만들고 갱신하기는 것은 꽤 많은 업무시간을 할애하기도 하거니와 개발자 스스로 현타가 올 수 있는 시간입니다..ㅜ 이런 문제를 손쉽게 해결해 줄 수 있는 오픈소스가 나왔습니다!!! Solution 사용법은 다음과 같습니다. Python을 설치합니다. 소스를 다운로드 받습니다. 라이브러리는 다운로드 합니다. (requirements.txt) config.py 에 원하는 정보..
안녕하세요. yeTi입니다. 오늘은 Springframwork에서 제공하는 Transactional 의 옵션은 Isolation 의 특성을 MySQL 8.0의 공식 문서 를 통하여 정리하고자 합니다. 개요 모든 Database System은 ACID의 원칙을 준수하는 방향으로 만들어지는데요. ACID는 트랜젝션의 개념과 밀접하게 관련이 있습니다. 하지만 ACID 를 준수하면 높은 수준의 성능을 기대하기 어렵기 때문에, 데이터의 격리 수준을 나눠 성능과 데이터 일관성을 적절하게 조절하여 사용할 수 있도록 지원하고 있습니다. ACID Atomicity : 한 프로세스에서 보장되어야하는 데이터의 변경점이 일괄적으로 변경되거나 변경되지 않는 특징입니다. Consistency : 트랜젝션이 진행되는 동안에는 다른..
안녕하세요. yeTi입니다. 오늘은 Entity 에서 하나의 필드로 다수의 관계를 가지는 경우에 대해 생각해보려고 합니다. @OneToOne 관계 설정 GiftEntity 와 UseEntity 에 대해서 1:1 관계설정을 다음과 같이 설정했습니다. public class GiftEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seq", length = 20, nullable = false, columnDefinition = "BIGINT(20)") private Long id; ... @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "useSeq") private..