승돌 쓰다

[정리] 그냥 저냥 #위클리뉴스 #42

seungdols 2019. 6. 1. 16:30

JavaScript

  • 레거시 코드에서 이해하기 쉬운코드로 리팩토링: 카카오 i 오픈 빌더 프로젝트를 하면서, 어떻게 리팩토링을 해나갔는지? 소개하는 글입니다. JavaScript 관련하여 좋은 글을 많이 써주시고 계신데요. 실제 카카오 프로젝트 구조를 설명하고 계신 것 같아서 자세하게 써주셔서 이해하기 쉬웠고, 리팩토링에 관해서도 약간의 설명과 진행한 방향을 소개하고 계셔서 읽어보면 도움이 많이 됩니다. Angular는 데이터 흐름이 양방향이 가능한데, 이를 단방향으로 제한하여 리팩토링 한점 또한 생소하지만, 이유가 있어 한 번쯤 다들 생각해보면 좋겠다. 읽으면서 "컴포넌트들의 분리와 영역을 설정하고, 어떻게 응집도를 낮추고, 결합도를 높일 수 있는지에 대해 깊은 고민을 많이 하셨구나" 라는 생각을 했다.

  • PM2를 활용한 Node.js 무중단 서비스하기 - LINE ENGINEERING: 최근에는 Node.js를 이용하는 회사들이나 서비스가 엄청 많아지고 있다. 그래서 이를 잘 운영하는 것도 굉장히 중요한데, Process Management를 할 수 있도록 지원해주는 Tool들이 많이 있다. 그 중에서도 PM2가 최근에는 가장 핫하다고 볼 수 있는데, 이를 이용해 운영 하면서 무중단 서비스를 위해 알아야 할 점을 소개하고 있다. 특히, pm2 reload app을 통해 어플리케이션을 새로 동작 하는 방식은 처음 봐서 그런지 신기했다.

  • LINE Search UI 개선기 - LINE ENGINEERING: LINE의 UI 개선을 하면서 웹뷰 영역에서의 이미지 뷰어 처리에 대한 어려움이 어떤 점이었는지? 어떻게 해결했는지를 소개하고 있습니다. 다양한 샘플도 만들어보고, 실제 피드백을 받아 리뷰 반영을 함으로써 개선을 하는 프로세스가 참 좋다고 생각 합니다. 이미지 뷰어에 관련해서 실제로 작업을 해야 하거나 하시면, 참고 하시면 좋겠습니다.

  • Code Formatting 자동화 : Jbee님이 Code Formatting을 어떻게 자동화 하는지에 대해서 여러 tool과 함께 설명을 해주셨다. 자동화는 도움을 정말 많이 주는 것 같다. 코드 리뷰시에도 indent가 맞지 않거나, Format이 맞지 않는 것에 있어서 리뷰하는 시간을 줄여주기 때문이다. lint-staged라는 툴을 쓰고 있는데, 쓰고 있지 않다면, 한 번 적용 해봐도 좋을 것 같다는 생각이 들었다. 특히, 코드의 수정 사항에 대해서만 검사를 하기 때문에 훨씬 안전한 방지책이라고 생각이 들었다.

  • 어댑터 패턴 Adapter Pattern : Aapter Pattern에 대한 설명인데, 사실 패턴은 알면 알수록 어렵다고 생각한다. 막상 이렇게 예시 코드를 보고 하더라도, 실제 프로젝트에서 쓰기는 어려운 건 나 혼자뿐일까? 패턴을 잘 쓰면 좋지만, 어렴풋이 쓰다가는 그 패턴을 버리는 게 더 어려울 때가 있어서 그렇다. 적용하기 쉽지 않은 게 패턴이라고 생각하는 편이다.

Java

  • 도움이 될수도 있는 JVM memory leak 이야기 - 우아한형제들 기술 블로그 : 문제가 되는 부분을 찾기 위해 배포 이력을 조회하고, Memory Leak이 발생하는 부분을 [PinPoint](https://github.com/naver/pinpoint)을 통해 분석하고, 왜 발생했는지 찾고, 먼저 GC의 정책을 바꿔서 해결 해보려고 하셨다. 그럼에도 불구하고, 동일한 문제가 발생하자 Heap Memory Dump 파일을 분석해 원인을 찾는 모습을 진솔하게 써 주셨다. 어떤 문제가 생겼을 때, 어떻게 진단하고 어떻게 접근 해야 하는지 상세하게 흐름을 기술 해주셨다. 이런 일련의 흐름을 기술 해주는 것은 상당히 소중하다고 생각하는 편이다. 주니어 개발자들이 원인을 어떻게 찾아야 하는가? 에 대한 길잡이를 해줄 수 있으니 말이다.

  • 우아한 feign 적용기 - 우아한형제들 기술 블로그 : Netflix에서 개발한 Http client binder라고 하는 feign을 적용한 후기를 남겨주었는데, 사실 처음 보았다. Spring Cloud에서 Netflix가 개발했던, zuul, ribbon, eureka 등은 많이 들어보고 어떻게 사용을 다들 하는지는 봤는데, feign을 처음 봤는데, 진짜 신기할정도로 간소화 되어 쉽게 Rest API를 사용할 수 있도록 해준다. 고로, 설정의 간소화가 있다면 비즈니스 로직에 정말 집중 할 수 있겠구나 생각이 들었다.

  • Webinar Recording: What's New in JDK 12 - DZone Java : Java 12의 웨비너인데, 사실 나도 보지 못했다. Java 12에서 literal string이었던 기능이 제외되서 아쉽긴 한데, 다양한 기능이 추가 되는 걸로 알고 있다. 정말 빠르게 업그레이드 되고 있다. 이렇게 되다간 아마 8 이하의 버전에 대한 호환성을 끊을 수도 있지 않을까 생각이 들었다.

  • Double Dispatch in DDD | Baeldung : Double Dispatch에 관한 글인데, DDD(Domain Driven Development)에서 어떻게 적용하는지에 대함이다. 그런데, 사실 나도 Double Dispatch를 왜 써야 하고, 어떻게 써야 하는지는 감이 잘 오지 않는다. 해당 지식에 관해 모호함이 존재한다고 해야 할까? 그래서 매번 기억이 안날때는 토비님의 영상을 보곤 한다. 먼저, 이 영상을 보고 위 글을 이해하려고 노력 해보자.

개발자에게 도움이 되는

  • (자막)[NDC19] 좋은 로그란 무엇인가?: 좋은 로그를 위해 고려해야 할 것들

  • Facebook F8 2019 후기 #1 :: Outsider's Dev Story : 아웃사이더님의 F8을 위해 샌프란시스코를 가셨던 경험기입니다. 위워크의 혜택이나, 자유로움이 놀랍긴 한데, 이용 해 본적이 없어서 아쉽다. 더구나, Postman의 업데이트가 빨라서 좋은 것 같은데, 요새는 주로 IDE에서 제공하는 Rest Client를 이용하거나, Plugin을 쓰고 있는데, 한 번 다시 설치 해봐야겠다.

  • Facebook F8 2019 후기 #2 :: Outsider's Dev Story : F8은 해커톤을 신청하면, 비행기와 호텔을 지원해주는 것은 정말 좋다고 생각한다. 해커톤을 하면서 특색 있는 아이템들이 나올 수도 있으니 말이다. 그런 경험으로 빗대어 보면, 이렇게 해커톤을 통해서 다양한 사람과 다양한 프로그래밍 ? 경험을 쌓는 것도 좋을 것 같다는 생각이 들었다.

  • Kaleido 팀 : Naver Kaleido팀에서 일한 후기를 남겨주셨습니다. 분산 처리 환경에서 데이터 공유를 위한 플랫폼인데, 이를 직접 구현하기 위해 * CRDT :에 대해 직접 학습하시고, 구현을 하셨다고 후기를 남겨 주셨다. 나도 잘 모르는 분야였다. 검색을 해 보았고, 굉장히 어려운 분야가 아닐까? 라는 생각을 하게 되었다. Vector Clock이나, Gossip Protocol에 대해서는 잘 모르는데, 확실히 그런 느낌을 받긴 했다. "과연 나는 내가 모르는 분야에서도 논문과 지식을 잘 쌓아서 바로 바로 구현을 할 수 있을까?" 그럴려면, 아무래도 미리미리 기초를 잘 공부 해 둬야 할 것 같다.

  • 내 맘대로 위클리 뉴스 - 2019년 20주(2019.5.13 - 2019.5.19) : Python, Java, JavaScript 관련한 아티클이 정리 되어 있는데, 이번에는 대부분 Google I/O의 아티클이 인기 였다. 그런데, 가장 관심 가는 부분은 Vue.js를 통해 jQuery를 대체 하고자 하는 분들에게 추천이라는 아티클이 인상적이었다. 개인적으로나마 Vue.js를 써보고 싶긴 한데, 시간이 정말 여유가 없어서 아쉽다.

  • (Troubleshooting) 레디스 사망일기 : 세션이 빈번하게 삭제 되면, 사용자의 불편함이 있긴 하겠지만, 너무 긴 만료 정책이나 불필요하게 적재 하다보면 큰 부담으로 떠안게 될 수 있으니, Redis를 운영하거나 할 때는 조심하는 것이 좋겠다는 생각입니다.

  • 기획자와 개발자 간 절대 하지 않아야 할 말들 : 제목만 봐도 대강 무슨 내용인지 알 수 있겠지만, 실제로 저런 말들이 오고 간다. 그러니 절대 이러한 말들을 삼가도록 하자. "기획자와 개발자 사이는 개와 고양이라지만, 우린 사람이다. 서로 존중하면 틀어질 일이 없다고 생각한다. 물론, 상대방이 나를 존중 하지 않는데, 나는 존중 하기란 쉽지 않다." 라고 생각 하는 편이다.

  • 스포카에서는 어떻게 리모트, 플렉서블 근무를 할까 : 스포카에서는 Remote Working을 지원하기 위해 다양한 툴들을 통해 업무를 하고 있다는 것을 알 수 있었다. 특히, Slack Bot을 정말 잘 활용한 부분은 근무 봇들이 아침마다 공지로 누가 리모트 근무를 하는지 알려준다는 점이다. 그리고 Zapier를 잘 쓰고 있는 것 같다. 나는 IFTTT를 쓰고 있었는데, 훨씬 더 좋은지 경험을 하기 위해 한 번 써보고 싶다는 생각을 했다.

vim

  • Vim, 두 가지 관점 : 솔직히 나는 Hard한 Vim 유저는 아니다. 그렇게 VIM을 잘 쓰는 것도 아니고, 그냥 켜고, 끄는 법은 안다. 그리고 적당한 이동키를 아는 것뿐.. 물론, 좀 더 잘 하고 싶긴 하지만, 순수 VIM 유저도 아니고, SpaceVim을 주로 쓴다. 물론, NeoVim 기반이긴 하다. 그럼에도 불구하고, Vim을 잘 쓰고 싶은 니즈는 강하다. 물론, 요즘 일하느라 시간이 없어서 Practice Vim 책을 못보고 있어서 그렇지. 꼭 완독을 하고자 하는 목표는 있다. 그렇지만, 사용하게 되면 알 수 있는 Vim의 매력이 있다. 특히, 조금만 암기해도 응용 가능한 조합의 수가 정말 많다.

  • 내게 실용적이었던 프로그래밍 공부 방법들 : 자신의 공부 방법과 어떤 사이트를 주로 활용 하는지를 소개 하고 있어서 다른 개발자들도 읽어보면 좋겠다. 그리고 자신들의 공부 방법과 어떤 사이트를 주로 참고 하는지도 공유가 잘 되면, 다른 개발자들도 공부하는데 도움이 되지 않을까? 라는 생각이 들었다. 나도 브런치에 개발력 높이는 세번째 글을 쓸 때가 온 것 일까?

  • Kafka Consumer Lag 모니터링, Burrow를 알아보자 (1) : Kafka의 Consumer Lag 모니터링 툴인 Burrow에 대한 소개글입니다. 아마, 카프카를 쓴다면, 컨슈머나 브로커의 실제 메시지의 데이터나, Lag의 모니터링을 하고 싶어하는 니즈가 생기기 마련인데, Consumer Lag을 모니터링 할 수 있는 툴이 있었구나 싶어 사용하기 괜찮구나 싶은 생각이 들었다. 그렇지만, 내가 속한 팀에서는 두 가지의 툴을 사용하고 있어서 아직까지는 괜찮다는 생각이다. Kafka manager를 보통 많이 쓰는데, kafka-webview라는 툴도 상당히 좋다. 실제 메세지의 데이터를 볼 수 있다.

  • 입사 후, 벌써 1년 - 우아한형제들 기술 블로그 : 우아한형제들에서 1년간 일하면서 느낀 회고를 남겨 주셨는데, 기술에 대한 목마름이 있었고, 스스로 SI를 벗어나 기술 기반 회사로 가야겠다는 생각을 하신 점이 참 용기 있으시고, 자기 계발을 참 열심히 하신 분이 아닐까? 라는 생각을 했습니다. 읽으면서 많이 반성 했습니다. 물론 저도 모르는 기술이 많습니다. 앞으로 배워야 할 지식들이 산 더미 같군요.. :(

  • 코딩 스타일에 대해 논쟁하는 이유 - Mimul's Developer World : 코딩 스타일에 관해서 설명하고 있으며, 왜 논쟁 하는지? 에 대한 이유를 서술하신 글입니다. 사실 이 부분은 팀으로 합의가 되어야 하는 부분이 많기에, 개인적인 편의성 보다 어떻게 하면 협업을 잘 할 수 있는 코딩 스타일을 가져갈 것인지? 팀 내 합의를 어떻게 이룰 것인지?에 대한 부분을 잘 고려해야 한다는 것이 중요하다.

일반적으로 도움이 되는

React

  • React's useReducer vs Redux - RWieruch : 어떻게 둘 사이가 다른지? 그리고 어떤 점에서 다른지를 설명하고 있는 글이며, 전반적인 흐름만 이해하셔도 됩니다.

  • What are Reusable Components in React? - RWieruch : Button을 예로 들면서, Button을 다른 컴포넌트로 뽑아내어, 재활용하는 방법을 설명하면서 어떻게 재사용 가능한 컴포넌트를 만드는지 설명하고 있습니다. (실제로는 이렇게 단순하지 않습니다.)

  • How to useState in React? - RWieruch : React에서 useState를 어떻게 사용하는지 설명하고 있습니다. 그런데, 사실 저도 어떻게 Hooks를 가능케 했는지 원리에 대해서는 궁금해하지 않았습니다. 생각해보니 16.x 에서 React는 정말 많은 발전을 했다고 생각이 듭니다. React에서 Hook을 어떻게 처리 하는지 한 번 찾아 봐야겠습니다.

  • What is preventDefault() in React? - RWieruch : preventDefault()가 무엇인지?에 대해서 설명하며, Form Element에서의 예시를 통해 preventDefault 가 어떤 동작을 의미 하고, 과거에는 왜 그렇게 사용 했는지? 현재는 어떻게 사용 하는지? 에 대해서 설명을 하고 있습니다.

반응형