Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

기술 뉴스 #89 : 17-11-01

웹개발 관련

  • 그런 REST API로 괜찮은가 : Deview에서 발표된 발표자료로 API를 개발할 때 REST API라는 용어를 많이 사용하는데 로이 필딩이 만든 REST API라는 개념이 실제로 어떤가를 아주 잘 설명하고 있다. 이응준 님의 발표는 믿고 보는 편인데 여기서도 Spec에 나온 REST API의 정의와 실제 현실에서 구현하고 있는 REST API의 차이점을 제대로 보여주고 Spec에 맞게 구현하려면 어떻게 해야 하는 지도 나와 있어서 우리가 REST API라고 불러야 할지에 대한 질문을 던져주고 있다.(한국어)
  • TLTR; Redux : Redux의 사용법과 구조를 정리한 글인데 아주 간결한 설명으로 모든 사용방법이 다 나와 있다. 간단한 코드로 Redux가 동작하는 방식을 설명하고 React 컴포넌트와 연결해서 사용하는 방법과 Redux를 비동기로 사용하는 방법까지 나와 있다. Redux를 아직 잘 모르는데 제대로 쓸 때 이 글을 다시 보면 Redux를 이해하는 데 도움이 많이 될 것 같다.(영어)
  • (번역) CSS에 대한 깊은 이해: 폰트 매트릭스, line-height와 vertical-align : Deep dive CSS: font metrics, line-height and vertical-align의 번역 글로 CSS로 line-hight와 vertical-align을 제대로 다루는 것이 왜 어려운지를 설명하기 위해서 CSS가 각 폰트에서 line-height를 결정하는 기준과 vertical-align의 기준을 잡는 원리를 아주 상세하게 설명하고 있다. 이 글만 읽어도 얼마나 복잡한지를 알 수 있을 정도고 다 읽고도 실제로 사용할 때 제대로 쓸 수 있을지 걱정되긴 하지만 항상 디자이너와 협업해서 CSS에서 간격을 맞출 때 고생하는 부분이라서 두고두고 보기에 좋은 글이다.(한국어)
  • Saying Goodbye to Firebug : 2005년부터 파이어폭스의 개발자도구로 만들어진 Firebug가 이제 Firefox Quantum 릴리스를 앞두고 종료를 선언했다. 이글에는 그간 Firebug의 12년의 히스토리가 담겨있다. 지금은 안 쓰지만 예전에는 Firebug가 없으면 웹 개발을 못할 정도로 잘 쓰고 있었고 지금의 개발자도구에 Firebug가 준 영향이 크다고 생각하기 때문에 종료가 맞는다고 생각하면서도 애잔하게 느껴진다.(영어)
  • sonar: Linting the web forward : 웹사이트를 검사해서 접근성, 성능, PWA, 보안등을 검사하는 도구를 Microsoft에서 공개했다. Sonar는 온라인으로 이용할 수도 있고 npm으로 설치해서 커맨드라인으로도 사용할 수 있다.(영어)
  • Mozilla brings Microsoft, Google, the W3C, Samsung together to create cross-browser documentation on MDN : MDN 문서화에 Mozilla뿐만 아니라 Microsoft, Google, W3c, 삼성도 참여하기로 했다.(영어)

그 밖의 프로그래밍 관련

  • 책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 : 특정 사람의 음성을 딥러닝으로 학습시켜서 임의의 텍스트를 읽게 하는 내용이다. 딥러닝을 잘 몰라서 발표내용을 다 이해는 못 했지만 데모 페이지에서 음성을 들어보면 완벽하진 않아도 꽤 흥미롭고 해당 소스가 공개되어 있어서 실제로 사용해 볼 수 있다.(한국어)
  • DOCKER PLATFORM AND MOBY PROJECT ADD KUBERNETES : Docker가 Swarm뿐 아니라 Kubernetes도 네이티브로 지원하게 되었다.(영어)
  • AWS VPC with Terraform Modules : Terraform의 모듈을 이용해서 VPC를 정의하는 방법을 설명한 글이다. VPC 자체가 꽤 복잡해서 VPC에 대해서 자세히 알지 못하면 글이 좀 어려울 수도 있는데 이 글을 통해서 모듈에서 사용할만한 많은 인터폴레이션 팁이나 모듈의 관리 부분이 잘 정리되어 있다.(한국어)
  • VIM AFTER 15 YEARS : Vim을 사용할 때 유용한 플러그인 및 tmux와 함께 터미널에서 사용하면서 유용한 사용방법을 꽤 자세하게 설명하고 있다. Vim을 헤비하게 사용하는 편은 아니고 플러그인 등을 너무 잘 갖춰놓으면 다른 곳에서 개발하기가 어려우므로 적당히만 쓰는 편이지만 이 글을 보니 하나하나 적용해보면서 나에게 맞는 플러그인을 찾아볼까 하는 생각이 들었다. 글이 길지만, 기본 사용법 외에 플러그인 위주로 좋은 사용방법을 알기 좋은 글이다.(영어)
  • Node.js Best Practices : Node.js로 코드를 작성할 때 좋은 사용사례를 모아놓은 저장소이다. 이런 부분을 많이 찾아놨다면 엄청 새로운 내용이 있는 것은 아니지만 구조를 어떻게 나누고 오류를 어떻게 처리할지를 알기 쉽게 잘 정리해 놓았다.(영어)
  • Introducing the Graphcool Framework : Graphcool에서 GraphQL 백엔드를 쉽게 작성해서 배포할 수 있는 프레임워크를 공개했다.(영어)

볼만한 링크

  • 스타벅스 연결러 앱 공개 & 개발 후기 : 예전에 개발기 올리시던 걸 읽은 기억이 있는데 최근에 스타벅스에서 WiFi에 연결할 때 개인정보 동의하는 부분을 자동화한 스타웍스 앱을 공개하고 그 개발 후기를 올린 글이다. 그동안 개발이 멈춘 사정과(사이드 프로젝트를 하는 사람으로서 공감 가는...) ES6와 한글 코딩을 도입한 점, 그리고 기프트웨어로 공개한 관점 등이 꽤 재미있다. 이분은 흥미로운 접근을 많이 하셔서 작업하시는 내용을 공유해 주시는 부분이 재미있다.(한국어)
  • 알파고는 스스로 신의 경지에 올랐다 : 딥마인드가 공개한 네이처 논문을 기반으로 알파고 Fan, Lee, Master, Zero가 어떻게 다르고 이 발표를 어떻게 봐야 하는지 설명한 글이다. 딥러닝 쪽은 잘 몰라서 직접 원문을 읽고 이해하기가 어려운 편이라서 이렇게 깊은 수준으로 해설을 해주는 글은 어느 정도 사전 지식을 쌓는 데 크게 도움이 된다.(한국어)
  • 더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장 : How Developers Stop Learning: Rise of the Expert Beginner의 번역 글로 기술을 배울 때 Novice, Advanced Beginner, Competent, Proficient, Expert로 발전하게 되는데 Advanced Beginner에서 Competent 단계를 넘어서기가 쉽지 않으므로 이 과정에서 Competent로 가지 않고 Expert Beginner 즉, 자신이 전문가라고 착각하는 상황에 빠지게 되는 개발자들을 설명한 글이다. 이렇게 분석적으로 생각해 본 적은 없어서 처음에는 맥락이 어색하게 느껴졌지만 곰곰이 생각해 보면 소프트웨어 업계에 이런 개발자가 은근히 많이 있고 나도 많이 경험해 봤다는 걸 깨닫게 되었다. 이런 상황에 빠지지 않으려고 오픈소스나 커뮤니티 속에 있는 거긴 하지만 상황을 아주 잘 분석해 놓은 글이라 생각해 볼 여지가 많다.(한국어)
  • 실리콘 밸리의 잘나가는 5개 기업과 인터뷰를 봤는데 다 붙고만 썰 : 실리콘 밸리에 있는 Airbnb, Google, Facebook, LinkedIn, SalesForce에 면접을 보고 다 붙은 과정을 설명하고 있다. 제목을 처음 봤을 때는 가볍게 봤는데 2~3달 준비하면서 문제풀이나 시스템 디자인을 공부하고 각 전화면접이나 온사이트 면접에 대한 준비 자세와 과정이 나와 있어서 정말 많이 준비해서 저런 결과가 나오는 거구나 싶었다. 번역도 재밌게 되어 있어서 편안하게 읽을 수 있다.(한국어)

IT 업계 뉴스

  • Key Reinstallation Attacks : KRACKs로 알려진 WPA2 취약점 공격이 발견되었다. 같은 네트워크 안에 있는 공격자가 이 취약점을 이용하면 안전하다고 여겨지던 민감한 정보를 공격자가 탈취할 수 있다. 이 취약점은 업데이트로 해결할 수 있으며 HTTPS를 이용하는 경우는 안전한 것으로 알려졌습니다.(영어)
  • MongoDB prices its IPO at $24 per share : MongoDB가 나스닥에 상장했다.(영어)

프로젝트

  • PROBOT : GitHub에 연동해서 이슈를 닫거나 댓글을 다는 등 작업 흐름을 자동화할 수 있는 봇.
  • Chatfuel : 코딩 없이 Facebook 봇을 만들 수 있는 서비스.
  • Froala Design Blocks : Bootstrap 4에 기반을 둔 170여 개의 디자인 블록을 모아놓은 프로젝트.
  • minideb : Bitnami에서 만든 Debian 계열로 경량화된 Docker 이미지.
  • Napa.js : V8 위에서 멀티스레드를 구현한 JavaScript 런타임으로 Microsoft에서 오픈소스로 공개했다.
  • VimAwesome : Vim의 인기 플러그인을 볼 수 있는 웹사이트.

버전 업데이트

2017/11/01 04:16 2017/11/01 04:16

기술 뉴스 #88 : 17-10-15

웹개발 관련

  • Lessons from migrating a large codebase to React 16 : Discord에서 React로 만들어진 코드를 React 16 기반으로 변경한 과정을 설명한 글이다. 먼저 codemod를 이용해서 코드를 수정하고 수동으로 빠진 부분을 수정하는 방식으로 적용했다. Discord에서는 React.PropTypes, React.createClass의 사용과 React 내부 API를 직접 사용하는 부분이 주요 문제가 되었다고 한다.(영어)
  • React v16 무엇이 바뀌었나 : React.js의 새 메이저 버전인 v16의 바뀐 점을 정리한 글이다. 내부적으로는 React Fiber가 도입해서 성능 개선을 한 게 중요한 차이이고 render()에서 배열을 반환할 수 있고 에러 핸들링이 추가된 게 주목할 부분이라고 생각한다.(한국어)
  • JavaScript's Promise Leaks Memory : JavaScript의 Promise에 구조적인 메모리 누출 문제를 지적한 글이다. Promise/A+ 스펙을 따른 것이므로 구현체에 누출이 있는 것은 당연하다고 보통 얘기하는데 여기에 동의하지 않는다는 논지의 글이다. 예제 코드를 돌리면 현재 Node.js와 Chrome에서 모두 문제가 생기는데 Bluebird 같은 구현체나 다른 언어나 라이브러리의 구현체는 실제로 이런 문제가 있지 않으므로 이 부분이 차후 문제가 될 수 있다는 얘기를 하고 있다. 네이티브 Promise에 메모리 누수가 있는지도 모르고 있었다.(영어)
  • Asynchronous stack traces: why await beats .then() : JavaScript에서 비동기를 쓸 때 Promise를 이용한 .then() 체인이 있고 await를 이용해서 Promise를 사용할 수 있다. 후자가 가독성이 훨씬 좋지만, 그 이상으로 스택트레이스를 유지하기 위해 전자의 경우 JS 엔진이 스택 정보를 저장하고 있어서 메모리를 차지하지만 await는 실제 함수의 실행이 멈춰있으므로 별도로 유지할 필요가 없다고 한다.(영어)

그 밖의 프로그래밍 관련

  • 파이썬의 개발 "환경"(env) 도구들 : Python 개발환경을 구축할 때 사용하는 pyenv, virtualenv, virtualenvwrapper 등의 도구가 어떤 역사 속에서 만들어졌고 각 도구의 용도가 어떻게 다른지 비교하면서 정리한 글이다. Python에 이런 도구들이 많이 있어서 원하는 것을 찾기 힘들었는데 이 글을 통해서 이해할 수 있고 마지막에 용도별로 어떤 도구를 쓰는지 추천가지 해주고 있다.(한국어)
  • Mitigating replication lag and reducing read load with freno : GitHub에서 MySQL을 master-replica 형태로 사용하면서 리플리카와의 데이터 불일치를 해결하기 위해서 큰 작업을 나누어서 처리하고 쓰로틀러를 도입해서 사용했다. 이는 Ruby로 만들어져 있었는데 이후 시스템이 커지면서 Perl 쓰로틀러를 만들었지만 두 구현체간의 퀄리티 차이도 존재했고 시스템이 더 커지면서 freno라는 별도의 쓰로틀러 서비스를 만들었다. 이 시스템으로 전체 시스템의 쓰로틀링을 안정적으로 제공하면서 각 리플리카의 지연시간의 매트릭을 수집해서 각 시스템이 이를 확인하면서 데이터를 처리할 수 있게 되었다. 이전에는 데이터 불일치를 해결하기 위해서 일정시간 이내에 데이터가 작성되었다면 master에 확인해서 데이터불일치 여부를 검사했는데 freno를 이용하면서는 replica의 지연시간을 알 수 있으므로 master에 읽기 요청을 하는 시간을 많이 줄일 수 있게 되었다. 각 문제의 해결 과정과 최종 솔루션인 freno의 도입효과까지 아주 잘 정리되어 있다.(영어)
  • Stretching Spokes : GitHub에서 git 저장소의 리플리카를 만드는 데 사용하는 Spokes를 설명한 글이다. 이전에는 DRBD를 쓰고 있었는데 레이턴시에 민감해서 가까운 곳에 둘 수밖에 없었지만, Spokes를 이용해서 완전히 다른 지역에도 리플리카를 만들 수 있게 되었고 이를 구현하기 위해 git 참조 업데이트의 트랜잭션을 구현하고 Spokes 체크섬으로 리플리카가 이뤄지는 과정이 보장되도록 구현한 접근방법을 설명한 글이다.(영어)
  • JUnit 5 소개 : 최근에 나온 JUnit 5가 4와 달라진 점을 바탕으로 구조를 설명하고 Junit 5를 구성해서 사용하는 방법을 설명한다.(한국어)
  • GitHub 프로젝트의 의존성 정보를 알려주는 기능 추가 : GitHub에서 자체적으로 프로젝트가 사용하는 의존성 정보를 정리해서 보여주고 해당 프로젝트를 사용 중인 저장소를 보여줍니다. 최근에 GitHub과 연동해서 의존성 라이브러리를 관리할 수 있는 서비스들라는 글을 올렸는데 GitHub에서 자체적으로 각 라이브러리의 보안 이슈를 알려주는 "Security alerts" 기능도 오픈할 것이라고 한다.(한국어)
  • Vim 배우는 법: 4주 계획 : How To Learn Vim: A Four Week Plan의 번역 글로 vimtutor로 연습한 뒤에 플러그인을 설치 않은 Vim으로 연습해보면서 익히는 4주간의 단계별 과정이 잘 나와 있다.(한국어)
  • 타입과 타입 시스템 : 연재를 시작하며 : 프로그래밍 언어에서 항상 논의되는 타입과 관련된 연재의 시작 글로 이 글에서는 타입/타입 시스템의 기본 개념을 설명하고 있다. 아직 첫 글만 올라왔는데 자세히 알지 못하는 영역이라 이후 내용이 기대되어 목록에 추가해 놓았다.(한국어)

볼만한 링크

  • 경영자와 직원이 서로를 바보로 만드는 조직: 발단은 리더가 심은 두려움 : 회사에서 리더가 직원들에게 두려움을 심어줌으로써 리더는 상황에서 고립되고 판단을 제대로 못 하게 되고 직원도 그런 얘기를 점점 안 하게 되는 악순환이 되는 과정을 설명한 칼럼이다. 이렇게 진행되는 걸 현실에서 너무 많이 보고 들어서인지 잘 정리된 글에 공감을 많이 했다.(한국어)
  • 강남 출근길에 판교/정자역에 내릴 사람 예측하기 : 지하철에서 앉아서 가기 위해 내릴 사람을 예측하려고 사람들의 특징을 분류한 뒤 데이터를 분석한 결과를 정리한 글이다. 아주 장난스러우면서도 내용을 보면 상당히 치밀하게 데이터를 구축하고 분석해서 비교해볼 결과에 웃음이 나면서 흥미롭게 볼 수 있는 발표자료다.(한국어)
  • WeWork, 1년 후 : Shakr에서 WeWork에 입주하고 1년이 지난 시점에서 내부의 사진을 포함해서 그동안의 경험을 공유한 글이다. 라운지까지는 가봤지만, 내부는 못 봤었고 실제 사용 경험이 어떨지도 궁금했는데(가격은 꽤 비싸다고 들어서) 전체적으로 만족한다는 부분에서 더 흥미가 갔다.(한국어)

IT 업계 뉴스

프로젝트

  • GraphQL::SchemaComparator : GraphQL 스키마 2개를 비교해서 차이점을 출력해 주는 Ruby 라이브러리
  • Matcha : Go 언어로 iOS/Android 앱을 만드는 패키지.
  • ZeroNet : Bitcoin 암호화와 BitTorrent 네트워크로 분산 웹사이트를 운영할 수 있는 프로그램. 웹사이트에 접속하려면 ZeroNet 프로그램이 실행되어 있어야 한다.
  • Quick : Swift/Objective-C BDD 테스트 프레임워크.
  • OpenRCT2 : 롤러코스터 타이쿤 2의 오픈소스 버전.
  • security.txt : 사이트의 보안 관련 정보를 담는 security.txt에 대한 웹사이트로 현재 RFC의 드래프트 상태라고 한다.

버전 업데이트

2017/10/15 16:47 2017/10/15 16:47