1. 실용주의 철학 실용주의 프로그래머는 태도와 스타일 그리고 문제와 해법에 접근하는 철학에 차이가 있다. 그들은 직면한 문제 너머를 생각하며, 문제를 항상 더 큰 맥락에 놓고, 항상 더 큰 그림을 보려 한다. 그들의 또 다른 성공의 열쇠는 자신이 하는 모든 일에 책임을 진다는 점이다. 책임감이 있기 때문에 프로젝트가 방치된 채로 끝장나는 걸 게으르게 옆에서 지켜보고만 있지 않는다. [ 고양이가 내 소스코드를 삼켰어요 ] 실용주의 철학의 초석 중 하나는 경력 향상, 프로젝트, 일상 업무의 면에서 자신과 자신의 행동에 대해 책임을 지는 것이다. 자신의 무지나 실수를 인정하기를 두려워하지 않고, 전문가답게 정직하고 솔직해지려고 노력한다. 자신의 능력에 대해 자부심을 가질 수 있지만, 실수나 무지와 같은 단점..

슬랙을 이용하면 많은 업무들을 자동화할 수 있습니다. 이번에는 슬랙이 제공하는 Workflow Builder(워크플로우 빌더)를 이용해 외부 요청을 접수하고, 지라 티켓을 발급하는 워크플로우를 생성해보도록 하겠습니다. 1. JIRA 티켓 생성 워크플로우(Workflow) 만들기 [ JIRA 티켓 생성 워크플로우(Workflow) 만들기 ] 1. 슬랙에서 Slash Command로 Workflow Builder를 열고 Create Workflow 버튼을 누른다. 간단한 업무 자동화의 경우에는 Workflow를 이용해 손쉽게 처리할 수 있다. 2. Start from scratch에서 From a link in Slack을 선택한다. workflow를 어떻게 시작시킬 것인지를 고르는 부분이다. From a ..

1. 코딩 중 겪는 혼란에 대한 이해 [ 세가지 종류의 혼란 ] 지식의 부족으로 인한 혼란 정보의 부족으로 인한 혼란 처리 능력의 부족으로 인한 혼란 지식의 부족으로 인한 혼란 아래는 APL으로 작성된 코드이다. 이 코드가 혼란스러운 이유는 T의 의미를 모르기 때문이다. 즉, T에 대한 지식이 없기 때문이다. 2 2 2 2 2 T n 정보의 부족으로 인한 혼란 아래는 Java로 작성된 코드이다. 여기서 혼란의 원인은 메서드에 대한 정보가 부족하다는 점이다. toBinaryString() 메서드의 동작 원리에 대한 정보를 얻으려면 메서드의 내부 코드를 따로 살펴봐야 한다. public class BinaryCalculator { public static void main(Integer n) { System..

1. 스프링 @Transactional의 동작 방식에 대해 완벽하게 이해하기 [ parallelStream에서 @Transactional을 사용하는 예제 코드 ] 다음과 같은 간단한 JPA 엔티티가 있다. @Entity @Getter @NoArgsConstructor public class MyEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; public MyEntity(String name) { this.name = name; } } 그리고 해당 엔티티를 저장하는 서비스 계층에서 조건에 따라 런타임 예외를 던진다고 하자. @Service @Transactional(rea..
1. @PathVariable 또는 @RequestParam 등의 값을 변환하여 받기 (암호화된 @PathVaraible 값 복호화) [ 컨트롤러에서 받는 값 변환의 필요성 ] 애플리케이션을 개발하다 보면 리소스에 대한 고유한 값인 식별자(identifier)을 받아 요청을 처리하는 경우가 있다. 리소스의 식별자는 시스템 내부 정보이므로, 해당 값이 1씩 단순 증가하는 값이라면 암/복호화를 해서 사용해야 한다. 예를 들어 다음과 같이 특정 멤버의 포인트를 증가시키는 API가 있다고 하자. 이때 PathVariable로 받는 memberId 값은 암호화되어 있기 때문에 컨트롤러 혹은 이를 사용하는 하위 계층에 복호화 로직을 넣어주어야 한다. @RestController @RequiredArgsConstru..