전체 글
-
2024 if(kakaoAI) Day 3 참석 후기 - 백엔드 위주개발 일기장/직장 생활 2024. 10. 28. 04:09
기억과 필기에 의존해서 작성한 거라 발표자가 전달한 정보와 다른 부분이 있을 수 있음! 기업에서 개최하는 컨퍼런스를 처음 가보았다. 갔다온지 얼마 안됐을 때 후기를 정리해두려한다. 수기로 썼으면 날림으로 필기해놨을 수준으로 메모장에 적혀있다. 올해의 핵심 키워드는 역시 AI였다. (AI 모르는 백엔드 개발자는 웁니다 ㅜ) 백엔드 개발자가 들을만한 주제는 Day 3에 몰려있어 Day 3를 신청했는데 당첨되어 ifKakao에 다녀왔다. 글을 쓰려고보니 올해는 ifKakao가 아니라 if(kakaoAI)인걸 알아차렸다. 장소는 용인시 고기리에 위치해있는 AI 캠퍼스라고 하는데, 접근성이 떨어져서 카카오측에서 셔틀을 제공해주었다. 요즘은 기업 테크 컨퍼런스는 코엑스에서 많이하는 추세인거 같은데 역세권과 멀리 떨..
-
[Kotest, Mockk, JUnit] 테스트 중 자주하는 착각 모음웹 개발/Spring Framework 2024. 3. 12. 00:27
업무 중에 테스트 코드를 작성하다가 착각해서 잘못 사용해뒀던 것들을 정리하기. 알아두면 테스트 코드 작성하다 왜 안되지? 왜 이상하지하는 시간을 줄여줄 것이다! 별거 아닌 것처럼 보이는지만 원인을 알아채는데도 시간을 꽤 썼다. 1. Mockk 사용 시, Mocking 하지 않았는데, Mock 함수를 호출한다.실제 인스턴스를 생성하더라도 mockk 기능을 쓰면 해당 객체의 함수 리턴 결과를 조작할 수 있을거라 생각하지만 그렇지 않다. mock 처리된 객체만 mockk 기능이 동작한다. 착각하는 예시// 클래스 class Confusion { fun getHello(language: String): String { return when(language) { "kr" -> "안녕" else -> "Hello"..
-
6년차 중니어(?) 백엔드 개발자의 2023 회고개발 일기장/직장 생활 2024. 1. 11. 01:50
어느새 한 해가 흘렀다. 벌써 만으로 5년차 개발자가 되었다. 현재 다니는 회사는 내 길지 않은 커리어 중 가장 오래다닌 회사로 매일 갱신 중이다. 재직기간 2년을 돌파했기 때문! 이제 회사는 더이상 주니어 역할을 기대하지 않는 듯 하다. 주니어와 시니어 사이를 중니어(?)라고 하던가. (시니어 개발자가 끌어주면 끌어주는대로 따라갈때가 편했지...) 뭐든 중간이 애매하듯 지금 경력을 어떻게 잘 쌓아야 멋진 시니어로 넘어갈 수 있을까 고민이다. 커리어를 고민하지 않을 날이 올까나. 그런 의미에서 내가 작년에 세운 목표를 잘 실천했는지 되돌아보았다. ▶ 우선 순위 1. 올해도 그렇지만 회사 업무가 1순위다. 작게 시작하지만 크게 키울 프로젝트를 맡아서 잘 해내고 싶다. 맡은 일만큼은 최선을 다했고, 능동적으..
-
validation과 verification 차이가 무엇일까?개발 일기장/개발 일상 2024. 1. 4. 03:01
파라미터나 상태에 대해 확인 또는 검증을 할 때 메서드 명을 뭘로 해야할까...? 딱히 관심을 안 가지다보니 어떤 메서드는 validate**, 어떤 메서드는 verify** 형태로 작성했다. (개발업계 외에도 자주 혼용해서 사용하는 영어 단어로 보인다.) 그 차이도 있겠지만 일관성 없는 코딩을 하고 있다는게 마음에 들지 않아서 그 차이를 살펴봤다. Validate 1. to make something officially acceptable or approved, especially after examining it 2. to prove that something is correct 1. 무언가를 공식적으로 허용하거나 승인한다. 특히, 그것을 검사한 후에 2. 무언가를 옳은지 증명한다. Verify 1..
-
[Spring boot + JPA] Hibernate 성능 분석을 위한 로깅하기웹 개발/Spring Framework 2023. 12. 28. 17:43
1. 하이버네이트 세션 관련해서 걸린 시간들을 통계내기 * 주의: 성능 이슈를 유발하므로 운영환경에선 쓰지말자. // application.yaml spring.jpa.properties.hibernate.generate_statistics=true // logback.xml 2. 슬로우 쿼리 찾기 필요한 경우, 운영환경에 적용해서 모니터링 해보자. // application.yaml spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=1 // logback.xml (스크린샷 내용하고 다름)아래처럼 찍힌다 2021-08-15 10:54:52.397 INFO 31972 --- [ main] org.hibernate.SQ..
-
[java, kotlin] DecimalFormat은 Thread safe하지 않다.프로그래밍 언어/자바 & 코틀린 2023. 12. 9. 14:16
회사에서 외부로 api 요청을 하는데, 말도 안되는 값이 들어가서 외부 서비스에서 sql 에러가 발생했다. LocalDate로 타입을 아예 정해뒀는데, 로그를 확인해보니 들어간 값이 예를 들어, "-E3498230"로 들어간 것이다. 응? 타입이 정해져있는데 이런 값 자체가 어떻게 넘어갔지하고 디버깅, 테스트, 구글링해보니 원인은 DecimalFormat에 있었다. 결론부터 말하면 DecimalFormat(NumberFormat 또한 같다)은 제목에 적힌것처럼 Thread safe하지 않다. 동시성 이슈는 재연이 어려워서 놓치기 쉽고 발견도 쉽지 않다. 다행인건 빨리 찾아서 이슈를 해결했다는 것이었다. 재연해보기 당시 이슈가 생긴 코드 object ExampleFormatUtils // top-level..
-
[트러블 슈팅] Spring 3.1 이상, Hibernate(JPA) 사용시 발생할 수 있는 이슈 및 내부동작 파헤치기웹 개발/Spring Framework 2023. 11. 24. 01:11
하이버네이트 6.2 마이그레이션 가이드 https://docs.jboss.org/hibernate/orm/6.2/migration-guide/migration-guide.html#ddl-changes 문제 상황 스프링 부트 3.0 → 3.1 버전업을 하면서 하이버네이트도 덩달아 6.1 → 6.2로 업그레이드 되었다. 이 영향으로 timezone을 다루는 date 타입이 DB에 저장될 때 의도와는 다른 시간으로 저장될 수 있다. 각자 상황에 따라서 의도된대로 잘 동작할 수 있다. (별 다른 설정이 없으면 하이버네이트에서 시간 변환을 UTC로 강제하기 때문에 DB의 타임존이 UTC로 쓰고 있으면 문제가 없을 수 있다 또는 MySQL 이외에 타임존을 지원해주는 DBMS 사용하면 UTC를 강제하진 않는다) 결론..
-
[백엔드 개발자] 대학교에서 직업 강연을 해보았다.개발 일기장/개발 일상 2023. 9. 24. 23:26
블로그로 알게 됐지만 지금은 아주 친한 사이가 된 친구와 술자리 중에 자신의 모교에 직업 강연을 권유받았다. 백엔드 개발자 취업을 준비하는 대학생들에게 해당 직무에 대한 주제로 하는 강연이었다. 남들 앞에 나서서 이야기를 해본지가 오래되어 당황스러웠다. 누구 앞에 나가 발표하는게 대학생 때가 마지막이었을 것이다. 다음날까지 답을 주면 된다고했다. 편하게 술을 먹고 집에 와서 생각해봤다. 원체 '인생에 경험이 된다 싶은건 다해보자'는 주의라 깊이 고민하진 않았고, 다음날 하겠다고 친구에게 답해주었다. 대상 학교 담당 선생님과 연락을 하게됐는데, 1시간 정도일 줄 알았던 강연 시간이 3시간을 해야한다는 것이었다. 어우.. 발표 제일 많이 하던 대학생 때도 30분 이상 발표를 해본적이 없는데, 3시간을 어떻게..