profile
Software Engineer + Product Manager
태그 목록
전체보기 (321)개발일기(76)토비의 스프링(26)더 나은 코드(23)테스트(20)Netty(18)Java(18)더 나은 테스트(15)How to work(13)생각(12)trouble shooting(11)프로그래머스(10)트러블슈팅(10)코딩테스트(10)회고(9)tcp(8)토비의스프링(8)커뮤니케이션(8)더 나은 설계(8)git(7)프로덕트 오너(7)(6)agile(6)C(6)우주지상국(6)network programming(6)비동기(5)읽기모임(5)자세(5)TDD(5)고민(5)더 나은 도구(5)asynchronous(5)junit(5)aop(5)dll(5)알고리즘(5)2021(5)매니지먼트(4)배움(4)Spring(4)JNA(4)github(4)windows(4)코드리뷰(4)커리어(4)wireshark(4)독서(4)IntelliJ(4)인프콘(4)추상화(4)문제(4)debug(3)Telnet(3)예외(3)사람(3)객체지향(3)학습(3)연역적(3)데이터(3)네트워크 패킷분석(3)multithreading(3)오브젝트(3)프로젝트 매니저(3)awaitility(3)Software Engineering(3)2022(3)관계(3)습관(3)협업(3)협력(3)문제해결연습(3)test(3)의존관계(3)네트워크 프로그래밍(3)실시간(3)Software Enginerring(2)가치(2)사용자(2)마인드(2)문서화(2)주석(2)ci(2)함께자라기(2)컨퍼런스(2)TROUBLESHOOTING(2)networking(2)http(2)배포(2)Mockito(2)test case(2)귀납적(2)더 나은 디자인(2)Locale(2)clean architecture(2)문제 해결 연습(2)제품(2)리더(2)디버깅(2)collaboration(2)stream(2)분석(2)코드로 문제해결 연습(2)cherry-pick(2)온보딩(2)클린 아키텍처(2)leak(2)목표(2)리팩토링(2)소프트웨어 개발자(2)jackson(2)기획(2)User Manual(2)개발문화(2)(2)mock(2)management(2)개방폐쇄원칙(2)실용주의 프로그래머(2)변경(2)태도(2)figma(1)Pain Point(1)PacketSender(1)StringUtils(1)커뮤니티(1)개선(1)주간보고(1)유틸리티(1)불편(1)시니어개발자(1)데이터 엔지니어(1)코드작성외에(1)Memory Leak(1)응집도(1)software engineer(1)Pair Programming(1)힙 메모리(1)TCP Connection Persistence(1)균형(1)아이들(1)고객(1)객체지향의사실과오해(1)성경(1)Device Driver(1)Thread Pool(1)OXM(1)help(1)지상국(1)비실시간(1)실험(1)SNMP(1)면접(1)사표(1)Strategy Pattern(1)동료주도개발(1)소수점(1)프로토타입(1)메모리가시성(1)Interrupt(1)인증(1)요구사항(1)공유(1)어려움(1)캐시일관성(1)예측(1)프로세스(1)Q&A(1)util(1)Functional(1)사용자중심(1)메모리(1)ux(1)volatile(1)Copilot(1)가짜필요(1)자동화(1)결합도(1)문서(1)Persona(1)대역(1)동료(1)조직(1)aws(1)아주힘듬(1)변화(1)SOLID(1)network(1)branch(1)XML(1)세미나(1)네이밍(1)Feedback(1)다름(1)User Journey(1)삶의자세(1)흥미(1)아두이노(1)병렬(1)모델링(1)작업난이도(1)코드변경관리(1)CI/CD(1)부족함(1)Manangement(1)cdd(1)Transction(1)switch(1)고통(1)Nginx(1)authentication(1)json(1)주니어(1)설계(1)트러불슈팅(1)자유(1)삶의일기(1)exception(1)더나은코드(1)DTO(1)철학(1)환경(1)1553B(1)프로그래밍(1)redmine(1)크리스찬(1)스프링(1)impact(1)신뢰성(1)템플릿(1)우주(1)메타포(1)행복(1)메시지큐(1)aspect(1)snmp4j(1)String(1)동반자(1)인터뷰(1)algorithm(1)부모참여수업(1)감정(1)복잡성(1)일기(1)클린코드(1)어설프다(1)InvalidMemoryAccess(1)독서메모(1)Ideation(1)di(1)커밋(1)인사이트(1)MVP(1)PSA(1)이슈관리(1)putty(1)기록(1)lazy(1)JIRA(1)어린이(1)성과(1)화면중심(1)템플릿/콜백(1)경계값(1)도구(1)short circuit(1)clean software(1)kotlin(1)누수(1)예외처리(1)Native(1)노이즈캔슬링(1)데이터 통신(1)더 나은 개발(1)SDLC(1)발표(1)핀란드(1)제약사항(1)마음 가짐(1)중복(1)제안서(1)heap memory(1)동등분할(1)생존(1)notion(1)alignment(1)테스트케이스(1)생각의프레임(1)회사(1)개발자(1)memory(1)준비(1)Reflection(1)교보문고(1)관심(1)사업(1)창업(1)lua script(1)도전(1)split()(1)멀티쓰레드(1)Csharp(1)Messaging Service(1)함께(1)의존(1)코딩(1)assembly(1)projects(1)IoC(1)집중(1)문제정의(1)actions(1)SI 프로젝트(1)svn(1)신뢰(1)문화(1)warning(1)rebase(1)죽음(1)빌더 패턴(1)약함(1)리드잇(1)백로그(1)Thread(1)Product Designer(1)캐시불일치(1)장애회고(1)S3(1)우선순위(1)Pull Request(1)garbage collector(1)아쉬움(1)디자인 패턴(1)프로젝트(1)ObjectMapper(1)iteration(1)비정상종료(1)Product Design(1)VxWorks(1)문제해결(1)(1)
post-thumbnail

(예제와 함께 보는) 기술을 학습하는 3단계

1. “Hello World”로 간단히 빠르게 사용법 익히기 2. 서비스를 만들며 만나는 문제를 깊이 있는 학습 가이드 삼기 3. 테스트 코드로 분명하게 이해하기

3일 전
·
0개의 댓글
·

Java Stream: 좋은 설계 표본

변하지 않는 것과 변하는 것 그리고 함께 변하는 것과 따로 변하는 것을 구분한 좋은 표본

2023년 3월 9일
·
0개의 댓글
·
post-thumbnail

메시지 큐를 활용한, 유연한 전송 구조 만들기

특정 하드웨어 시스템을 제어하기 위해 Netty 기반 메시징 서버를 개발중입니다. 시험 중 특정 조건이 되면 타겟 시스템에서 일부 메시지를 처리하지 못하는 문제가 발생했는데요. 문제를 해결하기 위해 메시징 서버의 구조를 개선한 사례를 소개합니다.문제가 발생한 서버 시스

2023년 3월 2일
·
2개의 댓글
·

Simple Made Easy

이 글을 읽어서 좋습니다.

2023년 3월 1일
·
0개의 댓글
·
post-thumbnail

좋은 코드를 만드는 이유, 좋은 코드를 만드는 방법

개발자가 코드를 작성하는 기본적인 이유는 어떤 기능을 구현한 제품을 만들기 위해서입니다. 그런데 종종 우리는 좋은 코드를 만들어야 한다는 말을 듣습니다. 기능을 똑같이 구현하는데 좋은 코드를 만들어야 하는 이유는 무엇일까요? 그리고 좋은 코드는 어떻게 만드는 걸까요?

2023년 2월 28일
·
0개의 댓글
·
post-thumbnail

성공하는 코드 서비스들의 숨겨진 철학 (대신하고, 숨기고, 드러나게)

성공하는 코드 서비스들은 사용자가 복잡해 하는 기술적인 영역을 대신 구현하고, 그것을 구현한 자신은 서비스 뒤에 숨기며, 사용자가 자신의 비지니스 로직 구현에 집중하고, 비지니스 로직만 코드에 드러날 수 있게 함을 목표한다는 공통된 철학을 가지고 있는 것 같습니다.

2023년 2월 16일
·
0개의 댓글
·
post-thumbnail

왜 비동기 코드를 작성하시나요?

동기와 비동기의 개념 / 코드 구현(Java) 상의 차이 / 성능 차이 측정 / 장단점 / 그리고 왜 사용하고 어떤 분야에 적합한지 개인적으로 정리해 보았습니다.

2023년 2월 16일
·
0개의 댓글
·
post-thumbnail

API 통신 컴포넌트 설계와 SOLID 원칙

좋은 기회였던 것 같습니다. 특정 도메인에서 다양한 외부 API 서버와 통신하는 컴포넌트를 연이어 개발할 수 있었습니다. 1년 동안 7개 정도의 통신 컴포넌트를 개발했네요. 통신 프로토콜은 모두 달랐지만 처리하는 구조는 유사했기 때문에 점진적으로 통신 컴포넌트를 개선해

2023년 2월 6일
·
0개의 댓글
·
post-thumbnail

주석을 달지 않는 이유, 달아야 하는 이유

동료와 주석을 달아야 하는지, 달지 말아야 하는지 대화를 하다가 생각난 것들을 정리해봅니다. 예를 들면 이런 주석이 있습니다. frequency 라는 변수명에 주파수라는 주석을 달아놓았습니다. 영어를 그냥 한글로 해석한 것인데 javadoc으로 문서 생성을 할 때에만

2023년 1월 7일
·
0개의 댓글
·

개발일기 #84 : 코드 변경의 이유를 잘 설명하는 방법

내가 작성한 코드를 다른 사람에게 설명하기 위해 다시 들여다 보고 있다. 꽤 유익한 경험이다. 나는 주석을 잘 달지 않는 편인데 가능하면 코드를 읽고 의미가 드러나도록 노력하기 위해서 그리고 코드에 드러난 의미를 다시 주석으로 다는 중복을 피하기 위함이다. 그런데 내

2023년 1월 3일
·
0개의 댓글
·

처음에는 상상하지 못했을 코드의 확장

JMS Listener로 메시지를 던지는데 메시지가 Listener로 전달되지 않았다. 이것 저것 확인해 보다가 Listener 메서드 파라미터 타입이 Super 클래스의 Sub 타입 A로 되어 있었다. 기존에 A 타입만 처리하던 것에서 B 타입까지 처리하도록 확장하면

2022년 11월 11일
·
0개의 댓글
·

토비의 스프링 | 7장 스프링 핵심 기술의 응용 (여러가지 배운것)

애노테이션은 정의하기에 따라서 타입, 필드, 메서드, 파라미터, 생성자, 로컬 변수의 한 군데 이상 적용 가능하다.애노테이션이 부여된 클래스의 패키지, 클래스 이름, 접근 제한자, 상속한 클래스나 구현 인테페이스가 무엇인지 알 수 있다.애노테이션 같은 메타정보를 활용하

2022년 11월 7일
·
0개의 댓글
·

토비의 스프링 | 7장 스프링 핵심 기술의 응용 (SQL 쿼리문을 코드에서 분리해 보자)

토비의 스프링 ‘7장 스프링의 핵심 기술의 응용’을 읽고 정리합니다. 6장까지 개선해왔던 UserDao에서 SQL 쿼리문을 분리하여 손쉽게 유지보수하고 확장가능한 구조를 만들어가는 과정에 집중합니다.반복적인 JDBC 작업 흐름은 템플릿을 이용해 DAO에서 완벽하게 제거

2022년 10월 30일
·
0개의 댓글
·

반복되는 예외처리(try-catch) 코드 템플릿으로 만들기

dev 프로파일일 때만 서비스 프로세스 내에 로드되어 테스트를 돕는 하드웨어 API 서버 시뮬레이터 N개가 있다.시뮬레이터는 스프링 빈으로 등록되어 있고 생성자에서 TCP 서버 모듈 생성과 초기화를 한다.dev 프로파일로 서비스를 실행할 때 종종 TCP 서버 포트가 이

2022년 10월 27일
·
0개의 댓글
·

개발일기 #57 : 사람들과 함께 한 것만

새로운 외부 API 서버와 연동하는 모듈 개발을 시작했다. 이 프로젝트의 마지막 개발이 될 것 같다. 기존에 개발했던 모듈의 인터페이스 문서와 비교해 보니 구조가 동일하고 메시지의 종류나 일부 값들이 조금씩 다르다. 그래서 먼저 기존 모듈을 재활용이 용이한 구조로 개선

2022년 10월 25일
·
0개의 댓글
·

개발일기 #54 : 문제를 해결하고자 적극적으로 도움을 구하는 자세

신규 안테나의 제약사항 때문에 미션을 수행할 수 없는 구간이 생기는 문제가 있었다. 하드웨어 엔지니어로부터 미션이 안되는 구간을 감안하고 운영하겠다는 이해할 수 없는 대답을 듣고 마음이 어려웠던 기억이 난다. 그 날 회고를 하면서 나 스스로 문제를 해결하겠다는 마인드를

2022년 10월 20일
·
0개의 댓글
·

개발일기 #53 : 동일한 타입, 두 개의 파라미터

생성자에 동일한 타입의 두 개 이상의 파라미터를 입력받아야 한다면 사용자 코드에 첫 번째 파라미터와 두 번째 파라미터 의미가 명시적으로 드러나지 않는다. 만약 두 파라미터의 순서를 실수로 잘못 전달해도 아무런 컴파일 오류가 나지 않고 실제 로직 상의 오류가 런타임에 발

2022년 10월 20일
·
0개의 댓글
·

개발일기 #52 : 이름 변경과 기능적 변경 분리하기

스스로 더 즐겁게 기록하자. 기능 구현 중 직접적으로 관련 없는 클래스, 메서드, 변수 이름 리팩토링이 흔하게 일어난다. 그래서 현재 집중하고 있는 수정사항과 관련이 없는 많은 파일이 함께 바뀌면서 하나의 커밋에 여러가지 수정사항이 섞이는 현상이 자주 일어났다. 이렇게

2022년 10월 18일
·
0개의 댓글
·

개발일기 #51 : 데이터를 가져오지 말고, 작업을 요청하라 (2)

계속해서 코드 작성과 테스트에 집중하고 있다. '데이터를 가져오지 말고 작업을 요청하라'는 원리가 계속 작동한다. 허용하는 범위를 초과하는 값을 메시지에 실어 보내면 채널 파이프라인의 전송 메시지 검증 핸들러에서 오류가 캐치되고 실제 타겟으로 메시지가 전송되지 않음을

2022년 10월 17일
·
0개의 댓글
·