본문 바로가기

분류 전체보기177

[Network] ICMP 들어가기 전에다른 업체에 방화벽 허용 요청을 했는데, 방화벽이 허용된 걸 어떻게 알 수 있을까요? 위의 질문과 관련해서 ICMP에 대한 개념과 ICMP 메시지가 활용되는 방법들에 대해 정리했다. 보안 상의 이슈로 모든 네트워크 통신 문제를 ICMP를 사용해 확인할 수는 없지만 실무에서 많이 사용되기에 알아두면 좋겠다.  ICMP(Internet Control Message Protocol)ICMP의 탄생을 이해하기 위해서는 IP의 특징을 먼저 알아야 한다. IP로 데이터를 전송하면 도착한 결과를 확인할 수 있을까?  정답은 NO 다. IP에는 데이터가 제대로 도착했는지 확인할 수 있는 방법이 없기 때문이다. "데이터를 보내기 위해 최선을 다하겠지만 안 되도 어쩔 수 없지."라는 IP의 특징을 바로 Bes.. 2024. 8. 20.
[서적] 이펙티브 엔지니어 | 에드먼드 라우 이펙티브 엔지니어 | 에드먼드 라우 - 교보문고이펙티브 엔지니어 | 뛰어난 엔지니어와 일반 엔지니어는 무엇이 다른가? 열심히 일하기와 똑똑하게 일하기는 어떻게 다른가? 구글, 페이스북, 인스타그램, 드롭박스 등 세계 최고 기업의 실제product.kyobobook.co.kr  오랜만에 연락드린 멘토님께서 응원과 함께 를 선물해 주셨다. 멘토링을 받을 때도 프로그래밍 지식 외에 개발자로서 어떤 마음가짐을 가져야 하는지, 한정적인 시간을 어떻게 잘 활용해야 하는지에 대한 이야기를 많이 해주셨었는데 이 책을 통해서도 '레버리지'라는 개념을 통해 어떻게 '이펙티브 엔지니어'가 될 수 있는지에 대해 배울 수 있었다. 효율성에서 매우 중요하지만 개발자들이 종종 간과하는 것이 메타 기술이다.메타 기술은 시간과 에너지.. 2024. 7. 18.
[jOOQ] jOOQ는 처음이라 들어가기 전에이번 회사에서 처음으로 jOOQ를 사용하게 됐다. MyBatis와 JPA만 사용했기 때문에 jOOQ를 어떤 이유에서 사용하는지 정확히 파악하기 위해 여러 글들을 봤다. 그래서 이번 글에서는 jOOQ가 무엇인지 그리고 평소에 잘 사용하던 JPA와 비교해 어떤 점이 다른지를 중점으로 다뤄볼 예정이다. jOOQjOOQ는 Java Object Oriented Querying로 자바 코드를 이용해서 type-safe한 SQL 쿼리를 생성할 수 있게 해주는 데이터베이스 인터페이스를 말한다. 그렇다면 어떻게 type-safe한 쿼리를 작성할 수 있는 걸까? 아래 문구를 보면 알 수 있듯이 데이터베이스 접근을 통해 자바 코드를 생성해 주는데 개발자는 이 메타 모델을 통해서 type-safe한 쿼리를 작성할.. 2024. 7. 12.
[Spring] Server-Sent Events로 알람 서비스 개선하기 들어가기 전에 F-lab 프로젝트가 끝나고 비슷한 기술 스택을 사용하는 프로젝트 강의를 보면서 어떤 걸 더 고민하고 개선할 수 있을지 시야를 넓히려고 하고 있다. 마침 간단한 SNS 서비스를 만들면서 대용량 프래픽을 고려했을 때 어떤 점들을 개선시킬 수 있는지를 담은 강의가 있었는데 비슷한 알람 기능이 있었다. 우리도 알람 조회 API를 통해 알람을 확인하는 기능까지는 개발했다보니 그 이후에 할 수 있는 고민을 알게 되고 또 직접 구현해 보는 게 굉장히 흥미로웠다. 기본적인 기능은 게시물에 댓글을 달거나 좋아요를 클릭하는 등의 특정 이벤트가 발생했을 때 그 내용이 수신자에게 알람 데이터로 저장이 되고 수신자는 알람 조회 API를 통해 내게 온 알람들을 확인할 수 있는 것이다. 이때 조회 페이지를 새로고침.. 2023. 8. 28.
[글또 8기] 여정을 마치며 들어가기 전에 이번 년도는 시간이 어떻게 가는지 모르게 지나고 있는데 정신차려보니 글또 8기 활동도 막바지가 되었다. 나의 열두 번째 글은 회고로 마무리지어보겠다. 글또 활동 돌아보기 잔여 패스권 : 2 제출 횟수 : 11 제출글 [글또 8기] 시작하는 다짐 글 [Java] Object.hashCode()와 Hashing, 그리고 Hash Collision [DB] 무조건 정규화가 정답일 수 없는 이유 Lombok을 사용하지 말라고? Spring REST Docs를 선택한 이유 [글또 8기] 중간 회고 [글또 8기] 2차 커피드백 [Spring] 쉽게 이해하는 Spring Security + JWT 로그인 구현기 Github Actions: CI/CD 구축 (feat. shell script) - 실전편.. 2023. 7. 16.
가변 인자를 다루기 위한 Functional Interface 활용 들어가기 전에 버즈덤 프로젝트에서는 [RabbitMQ] 설치 및 적용기에 작성한 것처럼 Feed 기능을 구현했다. 이때 템플릿을 지정해놓고 스케줄 정보만 지정된 위치의 문자열에 치환할 수 있도록 아래와 같이 MessageTemplate 클래스에 상수로 템플릿 메시지를 선언해서 사용했다. MessageTemplate public class MessageTemplate { // 치환해야 할 문자열이 한 개일 때 public static final String CREATE_SCHEDULE = "%s님이 {0}로 코칭 일정을 신청했습니다."; // 치환해야 할 문자열이 두 개일 때 public static final String UPDATE_SCHEDULE = "%s님이 {0}에서 {1}로 코칭 일정을 변경했습.. 2023. 7. 1.