Outsider's Dev Story

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

기술 뉴스 #143 : 20-02-03

웹개발 관련

  • React Native is the Future of Mobile at Shopify : Shopify에서 자사의 모바일 앱 개발에 React Native를 주로 쓰기로 결정했다. 3개의 앱으로 2019년에 실험을 했는데 iOS 버전만 있던 Arrive 앱에서 2배 이상의 생산성 향상이 있었고 React Native로 재작성한 덕분에 Android도 지원할 수 있게 되었다. Point of Sale 앱에서는 iOS는 네이티브로 만들고 Android는 React Native로 만들면서 두 기술의 개발 속도를 비교해 볼 수 있었고 Compass 앱에서는 99%의 코드를 두 플랫폼 간 공유할 수 있었다고 한다.(영어)
  • Advice from a GraphQL Expert : NodeSF 밋업에서 GraphQL 발표를 정리한 글로 GraphQL을 도입할 때 모델 설계에 다 같이 참여하는 게 중요하다고 한다. 스키마를 변경하기 좋은 구조로 설계하고 @deprecated 디렉티브를 활용하고 nullable 설정을 잘 활용하면 편하고 페이징 지원은 GraphQL에 없지만 오프셋 등을 이용해서 구현할 수 있다고 설명하고 있다.(영어)
  • New year, new browser – The new Microsoft Edge is out of preview and now available for download : 크로니움 기반의 Microsoft Edge 브라우저가 공식으로 공개되었다. Windows, macOS 뿐 아니라 iOS, Android에서도 사용할 수 있다.(영어)
  • What's new in ECMAScript 2020 (ES11) : ECMAScript 2020에 추가되는 옵셔널 체이닝, Nullish coalescing Operator, globalThis, 다이내믹 임포트 등의 새 기능을 정리한 글이다.(한국어)
  • clean-code-javascript : 자바스크립트 클린 코드의 한국어 번역본으로 변수, 함수, 예외 처리, 테스트에서 좋은 접근과 안 좋은 접근을 비교해서 설명한다.(한국어)

그 밖의 개발 관련

  • 알아두면 도움되는 iTerm2 고급기능 : macOS 용 터미널 앱인 iTerm2의 편리한 기능을 정리한 글이다. 정규식으로 특정 패턴을 찾아서 액션을 실행할 수 있는 Smart Selection, 마우스 클릭에서 사용할 수 있는 Pointer Actions, 프로필 변경 방법 등이 나와 있다. iTerm2를 사용하면 생산성을 높일 수 있는 팁이 잘 정리되어 있다.(한국어)
  • 잘가, 클린 코드 : Redux를 만든 Dan Abramov가 협업 과정 중 동료의 코드를 더 깔끔하게 추상화했던 경험을 적은 글이다. 클린 코드에 집착해서 코드를 변경하고 이를 롤백하게 되었지만, 이 과정을 통해 동료와 상의하지 않고 진행한 실수를 저질렀고 클린코드는 목표가 아니라 코드를 발전시켜 나가는 하나의 과정일 뿐임을 배웠다고 하고 있다.(한국어)
  • Browse good first issues to start contributing to open source : GitHub에서 초심자가 기여할 이슈를 주제별로 찾을 수 있는 github.com/topics/<topic>와 특정 프로젝트에서 찾을 수 있는 github.com/<owner>/<repository>/contribute를 공개했다. 이는 라벨과 머신러닝 기반으로 구현되어 있다.(영어)
  • 기술 부채도 자산인 이유 : 자산이라는 건 부채 + 자본이기 때문에 기술 부채도 꼭 나쁜 것만은 아니고 다른 성과를 낼 수 있도록 하고 기술 부채를 측정해서 적절한 시기에 부채를 줄이는 접근을 할 수 있다는 글이다.(한국어)

인프라 관련

  • Diving Deep Into Kubernetes Networking: Docker와 k8s 네트워크 분석 : Diving deep into Kubernetes networking과 Udemy의 강의를 보고 Docker와 Kubernetes의 네트워크가 어떻게 동작하는지 정리한 글이다. Docker에서 컨테이너간 통신이나 외부 인터넷에 대한 통신이 어떻게 이뤄지는지를 설명하고 Kubernetes에서는 Pod 간의 통신을 위해 CNI, Overlay Network, CoreDNS 등이 왜 필요한지 어떻게 동작하는지를 설명한다.(한국어)
  • TOC Votes to Move Falco into CNCF Incubator : 클라우드 네이티브 보안 프로젝트인 Falco가 CNCF의 인큐베이터 프로젝트가 되었다.(영어)

볼만한 링크

IT 업계 뉴스

프로젝트

  • Yorkie : 동시 편집 가능한 협업 애플리케이션을 위한 프레임워크
  • AutoGluon : Amazon에서 만든 딥러딩 자동화 도구.
  • report-toolkit : IBM에서 만든 Node.js 진단 리포트 툴킷.
  • web-servers : 로컬에서 정적 웹서버를 띄울 수 있는 커맨드라인 명령어를 정리한 페이지.

버전 업데이트

2020/02/03 22:24 2020/02/03 22:24

기술 뉴스 #142 : 20-01-15

웹개발 관련

  • Building an offline first web app with RxDB & Hasura : PouchDB를 사용하는 RxDB로 클라이언트에 데이터를 저장하고 Postgres 데이터베이스에 연결된 Hasura를 이용한 GraphQL로 서버와 동기화해서 React로 만든 todo 앱을 오프라인 퍼스트 웹앱으로 구성하는 방법을 설명하는 글이다. 단계별로 어떻게 구성하는지를 예시 코드와 함께 제공하고 있다.(영어)
  • HTML attributes to improve your users' two factor authentication experience : HTML <input> 요소로 2단계 인증의 사용자 경험을 높이는 방법을 설명한다. inputmodepattern으로 숫자 키보드로 바로 입력하게 하고 autocomplete="one-time-code" 속성으로 iOS 기기에서 SMS로 받은 코드를 자동입력할 수 있게 하는 팁 등이 나와 있다.(영어)
  • How CORS (Cross-Origin Resource Sharing) Works? : 웹 프론트엔드에서 다른 도메인에 API 요청하려면 필수적인 CORS의 동작을 설명하고 있다. 간단한 글이지만 CORS이 왜 필요하고 어떤 식으로 동작하는지 나와 있다.(영어)

그 밖의 개발 관련

  • 파이썬(Python) 2.7 공식 지원 종료 : 프로그래밍 언어 파이썬 2.7이 올해 릴리스를 마지막으로 지원 종료가 되고 3 버전만 유지하게 되는데 2 버전의 역사와 종료 과정을 정리한 글이다.(한국어)
  • 프로그래밍 언어 루비 2.7 릴리스 및 주요 변경 사항 : 지난 크리스마스에 릴리스 된 Ruby 2.7 버전에서 달라진 점을 정리한 글이다.(한국어)
  • 알아두면 유익한 2019 개발이야기 : subicura님이 작년에 개발하면서 회사에서 사용한 기술 스택을 정리하고 각 기술에서 느낀 점을 정리한 글이다. TypeScript, Styled Component, Next.js, Headless CMS, GraphQL, Hasura, Apollo, Terraform까지 요즘 관심 가질 만한 수많은 기술을 subicura님이 깔끔하게 정리해 주셔서 각 기술의 특징을 쉽게 파악할 수 있다.(한국어)
  • 공식문서 만으로 iOS 개발 배우기 : iOS 개발할 때 인터넷의 많은 강좌나 글 대신 Apple에서 제공하는 공식 문서화 튜토리얼로 배우기 위해 Swift, XCode, Navigation 참고해야 할 공식 문서를 추천하고 어떤 내용과 순서로 배우면 되는지 알려주는 글이다. 자료가 넘쳐나는 시대라서 글 마지막에 나오듯이 "특히 초심자일수록, 가급적 그런 자료들은 공식문서를 이해하는 보조자료로 사용하시라고 말씀드리고 싶어요."라는 말에 동의한다.(한국어)
  • Monitoring Node.js: Watch Your Event Loop Lag! : Node.js 애플리케이션의 성능을 개선하기 위해서 이벤트 루프 동작 방식에서 이벤트를 스케쥴링하고 실행할 때까지의 시간을 계산하는 event loop lag을 어떻게 탐지하는지를 설명하고 있다. 비동기로 실행되지만 논 블록킹 코드는 아니라서 메인 스레드의 event loop lag에 영향을 주는 bcryptjs 예시로 lag이 어떻게 달라지는지 보여주고 네이티브 애드온으로 개발된 bcrypt에서 lag을 개선하는 과정을 보여주고 있다.(영어)

인프라 관련

  • 도커 컨테이너는 가상머신인가요? 프로세스인가요? : Docker 컨테이너가 가상머신인지 프로세스인지를 설명하기 위해서 PID를 추적해 보면서 동작 방식을 설명하는 글이다. 이 글을 통해서 Docker가 PID를 어떻게 사용하고 있고 이는 호스트 머신에서는 어떤 게 구분되어 있는지 프로세스임에도 왜 가상머신처럼 보이는지도 이해할 수 있다.(한국어)
  • Deploy your side-projects at scale for basically nothing - Google Cloud Run : 개인 사이드 프로젝트를 운영하기 위해 DigitalOcean, GKE 등을 썼지만 만족 못 하다가 완전히 관리되고 싸고 확장성 있으면서 언어도 원하는 대로 사용할 수 있는 솔루션을 찾다가 이를 모두 만족하는 Google Cloud Run을 쓰기로 했다고 하면서 간단한 Node.js를 배포하는 방법을 설명한다.(영어)
  • 아마존 ECR, 도커 이미지 취약점 스캔 기능 추가 : AWS의 도커 이미지 레지스트리인 ECR에 새로 추가된 취약점 스캔 기능의 사용법을 설명하고 있다. CoreOS Clair의 CVE 데이터베이스로 검사해서 도커 이미지에 취약점이 있는지 알려주고 이미지당 하루에 1번 실행이 가능하다고 한다.(한국어)

볼만한 링크

  • 위대한 제품의 특성 : 제품 담당자를 면접할 때 자주 믿는 질문인데 그 질문에 대한 답을 직접 정리한 글이다. 위대한 제품은 기본 기능이 제대로 동작해야 하고 성능이 사용자의 기대치를 뛰어넘고 기대하지 않았던 부분까지 배려하여 사용자들이 다른 사람들에게 제품에 대해 자발적으로 말하게 하면서 사용자의 행동/태도를 바꾼다고 정리하고 있다.(한국어)

IT 업계 뉴스

프로젝트

  • QA Wolf : Puppeteer와 Jest로 브라우저 테스트 환경을 쉽게 구성할 수 있는 프로젝트.
  • Snowpack : 별도의 번들러 없이 웹앱을 빌드하게 해주는 도구. IE11은 지원하지 않는다.
  • BLAKE3 : 안전하고 빠른 암호화 해시 함수.
  • Plash : 웹사이트를 macOS의 바탕화면으로 만드는 macOS 앱.

버전 업데이트

2020/01/15 03:43 2020/01/15 03:43