분류 전체보기
-
자율주행 관제로 정신없었던 2025년 회고개발 일기장/직장 생활 2026. 1. 13. 01:24
블로그를 계속 쓰는게 맞을까?GPT처럼 LLM 서비스가 발전해서 블로그는 멸종하지 않을까란 생각이 든다. 하지만 기술적인 얘기는 찾지 않더라도 사람의 경험을 듣고싶은 블로그 글은 계속 존재하지 않을까란 기대를 가져본다. 2024년 회고를 건너뛰었다.2024년 회고 글을 따로 작성하지 않았다. 2024년에도 쓸 이야기가 없었던건 아니지만 고도화가 어느 정도 완료된 서비스, 회사에서 관심도가 떨어지고 요구사항이 없는 서비스가 되어 스스로 일을 만들어서 했다. 그렇다해도 자동차검사 예약 담당자들(기획, 디자인, 프론트)과 으쌰으쌰해서 차량 데이터 확보가 목적이었던 서비스를 기대보다 훨씬 높은 매출을 만들어내는 서비스로 만들었다. (런칭 당시 일일 예약 100건이 안되었지만, 마지막 확인했을땐, 일 평균 예약이..
-
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를 강제하진 않는다) 결론..