웹개발 관련
- The Google Analytics Setup I Use on Every Site I Build : 글쓴이가 수없이 웹사이트에 GA를 설정해 보면서 얻는 경험으로 GA 스크립트의 로딩 자체를 최적화하는 방법과 커스텀 디멘션을 사용해서 유용한 추적설정을 한 내용을 모두 설명하고 있다. 설정 방법과 어떻게 보고 참고할 수 있는지까지 잘 나와 있어서 웬만한 사이트는 이 글의 내용을 그대로 따라 해도 될 정도고 여기 나온 내용을 바탕으로 사이트에 필요한 추적을 추가하기에도 좋다. 이 사람은 GA를 엄청나게 연구했는지 비슷한 작업을 매번 하다가 결국 autotrack 플러그인을 개발했고(이 플러그인만 사용해도 엄청 편하다) 이 글에서 설명한 코드를 참고할 수 있도록 analytics.js boilerplate를 만들어서 공유하고 있다.(영어)
- This browser tweak saved 60% of requests to Facebook : 정적 리소스의 캐시 만료시간이 지나면 서버에 조건부 GET 요청을 보내서 확인하는데 페이스북은 hash로 URL을 만들므로 파일이 바뀔 일이 없다. 이런 경우 GET 요청이 필요가 없으므로 Chrome팀과 Firefox팀과 협의해서 이 부분을 개선했다. Chrome은 긴 캐시를 가진 파일에서는 GET 요청을 줄이고 Firefox는
cache-control: immutable
헤더를 추가해서 이 문제를 해결했다. 이를 통해 사용자는 페이지를 더 빨리 볼 수 있고 서버는 요청을 훨씬 적게 받을 수 있게 되었다. 정적 리소스 URL에 Hash를 사용하고 있다면 이 글의 내용을 참고해 볼 만하다. 서버에서 적용할 작업도 그다지 없다.(영어) - 구글 Test My Site를 통해 사이트 모바일 친화도를 측정해 보세요! : 구글이 웹사이트의 성능을 분석하는 Test My Site의 한글 보고서를 지원하기 시작했다. 사실 구글에서는 PageSpeed Insights와 모바일 친화성 테스트도 제공하고 있는데 각기 얼마나 다른 지까진 잘 모르겠다.(한국어)
- Annotation is now a web standard : 웹사이트에 댓글을 달거나 메모를 했을 때 이를 표준으로 다른 서비스와 공유할 수 있도록 웹 어노테이션이 W3C의 표준이 되었다.(영어)
- JavaScript Garden : JavaScript 언어에서 자주 겪는 실수나 미묘한 버그 등을 설명하는 javaScript Garden을 번역한 페이지.(한국어)
그 밖의 프로그래밍 관련
- Google, SHA-1 해쉬함수 충돌쌍 공격 발표 : 더는 안전하지 않다고 판단되던 SHA-1의 충돌이 실제 가능하다는 것이 공개되었다. 이를 설명하는 shattered 사이트를 만들어서 공개했고 내용이 다른 두 개의 PDF가 같은 SHA-1 해시를 가져서 공격할 수 있음을 증명했다. 이 소스코드는 90일 뒤에 공개하기로 했다. 이미 SHA-1을 쓰면 안 된다고 얘기되고 있었지만 실제로 공격할 수 있음이 증명되었으므로 정말 SHA-256등으로 갈아타야 한다. SHA-1을 쓰는 git에는 암호화처럼 큰 영향은 없고 git도 sha-1을 벗어날 거라고 리누스 토발스가 글을 쓰기도 했다.
- Docker Swarm을 이용한 쉽고 빠른 분산 서버 관리 : Docker Swarm으로 서버 오케스트레이션 하는 방법을 설명한 글이다. 현재 사용 가능한 오케스트레이션 도구들의 장단점도 정리되어 있고 Swarm이 제공하는 기능을 설명한 후 실제로 따라 해 보면서 테스트해볼 수 있게 글이 작성되어 있어서 오케스트레이션 도구를 검토하고 있다면 찬찬히 읽어봐야 할 글이다. 얼마 전에 Docker Swarm을 보고 간단하면서 기능이 강력해서 꽤 좋은 인상을 받았는데 정리된 글이 나와서 반갑다.(한국어)
- Node 6 at Wikimedia: Stability and substantial memory savings : Wikimedia에서 Node.js v4를 사용하던 시스템은 Node.js v6으로 올린 과정과 결과를 정리한 글이다. 실제로 코드를 바꾼 것은 없고 생길지 모르는 문제에 대한 준비와 성능 테스트에 관한 얘기가 대부분이다. v6으로 올린 것 만으로도 프로덕션 서버의 메모리 사용이 전반으로 줄어든 것을 볼 수 있다.(영어)
볼만한 링크
- A glimpse into GitHub's Bug Bounty workflow : GitHub이 버그 바운티 프로그램을 3년간 운영하면서 GitHub 내부에서 올라온 각 버그를 어떻게 처리하고 위험도 등급을 어떻게 나눈 뒤 엔지니어링팀과 애플리케이션 보안팀이 이슈를 처리하는지를 설명한 글이다.(영어)
- 텐센트를 모바일 왕좌에 앉힌 주역 '쟝샤오룽' : 텐센트에서 위챗을 만든 쟝샤오룽에 대한 글이다. 이전에 폭스메일을 만들어서 매각하고 텐센트에서 QQ 메일을 만들면서 위챗을 만들어서 성공하기까지의 과정이 나와 있다. 중국 서비스의 흐름은 잘 모르는 터라 재미있게 읽었다.(한국어)
IT 업계 뉴스
- Incident report on memory leak caused by Cloudflare parser bug : Cloudflare의 HTML 파서의 버그로 인해서 Cloudflare를 사용하는 사이트의 비밀번호, API 키, 토큰 등이 메모리를 통해서 유출되는 상황이 벌어졌다. 이 버그는 구글 등 검색엔진이 크롤링하면서 해당 비밀 정보를 크롤링하면서 Cloudflare에 보고되었고 해당 검색엔진의 캐시를 삭제하고 발표되었다. 버그의 흐름을 보면 최초는 작년 9월부터 메모리를 통한 유출이 시작된 것으로 보고 있다. sites-using-cloudflare에 Cloudflare를 사용하는 웹사이트들이 정리되어 있는데 여기 있는 사이트가 모두 유출된 것은 아니지만 유출된 사이트 목록을 따로 보고하지 않았기 때문에 Cloudflare를 이용하는 웹사이트를 사용하고 있다면 비밀번호 등을 바꾸기를 권고하고 있다. 이 사건은 Cloudbleed라고 불리는데 Cloudbleed Simple Checker에서 자신이 이용하는 사이트를 간단히 확인해 볼 수 있다.(영어)
- Amazon AWS S3 outage is breaking things for a lot of websites and apps : 미국 태평양 타임 기준 2월 28일 오전 11시 반 정도부터 3시간 정도 Amazon의 스토리지 서비스 S3 버지니아 리전(US-EAST-1)에서 장애가 발생했다. S3에서 장애가 발생해서 US-EAST-1을 이용하는 다수의 서비스가 해당 시간에 영향을 받은 것으로 보고 있다.(영어)
- Mozilla Acquires Pocket : Mozilla가 북마킹 서비스인 Pocket을 인수했다.(영어)
프로젝트
- awless : Go로 작성된 AWS CLI.
- autocannon : Node.js로 작성된 간단한 HTTP 벤치마크 도구로 autocannon-ci를 쓰면 빌드할 때마다 결과를 출력하게 할 수 있다.
- trevor : travis.yml로 다양한 버전의 Node.js를 로컬에서 Docker로 테스트해볼 수 있게 하는 프로젝트.
- Prophet : Facebook에서 오픈 소스로 공개한 시계열 데이터의 예측 도구로 R과 Python으로 작성되었다.
- neutrino : Webpack을 이용해서 웹 애플리케이션이나 Node.js 프로젝트 설정을 구성하는 프로젝트.
- AR.js : three.js와 jsartoolkit5를 이용해서 웹에서 증강현실을 구현한 프로젝트.
- Upspin : 구글에서 공개한 Go로 작성한 실험 프로젝트로 파일이나 데이터를 안전하게 공유하는 프레임워크이다.
버전 업데이트
- TensorFlow v1.0.0 : 기계학습, 딥러닝 라이브러리, 릴리스 공지
- Go v1.8 : 프로그래밍 언어, 릴리즈 공지
- Git v2.12.0 : 분산 형상관리 도구, 변경 내용
- Lighthouse v1.5 : Progressive Web Apps용 성능 분석 도구, 릴리스 공지
- Hyper v1.2.0 : Electron으로 만든 터미널 앱, 릴리스 공지
- Vue.js v2.2.0 : JavaScript 프레임워크, 릴리스 공지
- d3.js v4.7.0 : JavaScript 시각화 라이브러리, 릴리스 공지
- pino v4.0.0 : Node.js 로거, 변경사항
- flow v0.40.0 : JavaScript 타입 체커, 변경사항
- Jest v19.0.0 : JavaScript 유닛 테스트 프레임워크, 릴리스 공지
- Serverless Framework v1.7.0 : AWS Lambda에서 앱을 만드는 프레임워크, 릴리스 공지
- Unreal Engine v4.15 : 게임 개발 툴셋, 릴리스 공지
- gradle v3.4 : Java 빌드 도구, 릴리스 공지
Comments