Outsider's Dev Story

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

Issues translator for GitHub 크롬 익스텐션

이 크롬 익스텐션은 사실 작년에 사이드 프로젝트로 만든 것이다. 프로젝트의 성격은 달라지지 않았으므로 자세한 내용은 이전 글을 읽어보면 된다.

Google Translation API

전에 익스텐션을 만들고도 크롬 웹스토어에 배포하지 않은 이유는 새로 나온 딥러닝 기반의 구글 번역 API가 클로즈 베타 상태로 공개되어 있지 않았기 때문이었다. (아마도) 작년 중순부터 딥러닝 기반의 번역이 기본이 되고(이전에는 파라미터로 지정해야 했다.) 구글 클라우드를 사용하는 사람이라면 누구나 API를 발급받아 사용할 수 있게 되었으므로 이를 바탕으로 변경해서 크롬 웹스토어에 배포했다.

참고로 Translation API는 유료 API이다. 백만 글자당 20달러인데 그동안 사용해 본 경험으로는 댓글을 읽으면서 번역을 이용해도 가격이 그리 많이 나오진 않았다. 아직까진 1달러 이상 나와 본 적은 없어서 유료 API임에도 필요하다면 충분히 과금할 정도는 된다. 이 크롬 익스텐션이 유료인 게 아니므로 비용 지급은 Google 쪽에 하는 것이다. 다만 기술 용어가 많은 GitHub에서 구글 번역의 품질이 아주 좋지는 않고 Markdown을 그대로 번역 요청하기 때문에 문맥이 깨지는 경우는 꽤 있다. 최근에 댓글 읽을 일이 많아져서 문장이 이해 안 될 때 참고용으로 사용하고 있다.

README에도 적어놨지만, Google Cloud Platform에서 이 익스텐션에서 사용할 프로젝트를 생성하고 Google Cloud Translation API을 활성화한 뒤 생성한 API 키를 이 익스텐션의 옵션에 넣으면 사용할 수 있다.

이후 GitHub의 이슈나 Pull Request에서 각 댓글에 나오는 지구본 모양의 아이콘을 클릭하면 하단에 번역된 글이 나타난다.

0.5.x에서의 변경사항

오랫동안 업데이트를 안 하고 있었기 때문에 새로운 API에서 제대로 동작하는지 확인하고 그사이에 GitHub의 마크업이 달라졌는지 동작을 제대로 하지 않는 부분을 수정했다. 기능을 새로 추가하거나 그런 건 없다. 그리고 이전에는 Webpack으로 빌드하고 있었지만 작은 프로젝트에서 테스트해 볼 요량으로 Parcel로 바꾸었다. Parcel은 Webpack처럼 다양한 옵션을 제공하고는 있지 않았지만, Parcel이 제공하는 기능을 그대로 사용하면 아주 쉽게 빌드를 할 수 있었다.

저번에 다 만들고도 배포를 못 해서 GitHub 저장소에만 남겨두었는데 이번에 크롬 웹스토어에 배포할 수 있게 되어 만족스럽다.

2018/05/05 18:56 2018/05/05 18:56

기술 뉴스 #101 : 18-05-01

웹개발 관련

  • Designing very large (JavaScript) applications : Google 내부에서 사용 중인 JavaScript 프레임워크를 만든 경험을 공유한 글이다. 이 프레임워크는 오픈소스로 공개되진 않았다. 시니어 엔지니어는 다른 사람이 소프트웨어를 작성하는 방법에 영향을 주어야 하고 이러한 관점에서 프로그래밍 모델에 영향을 주는 방향으로 개선해야 한다는 내용이 초반에 나오고 이러한 관점에서 삭제하기 쉬운 코드를 위해 import 대신 기본 코드를 enhance 해서 사용하는 방식에 대해서 설명하고 있다. 개인적으로는 뒷부분보다는 초반에 시니어 엔지니어에 대한 부분이 훨씬 좋았다.(영어)
  • 카카오페이지 웹 React 포팅 후기 : 카카오페이지를 React 기반으로 개편하면서 TypeScript, Next.js, 포매팅, 성능 개선 등 기술 선택 및 개선 작업을 하면서 고민했던 내용을 정리한 글이다. 웹서비스의 규모가 크면 이런 개편 작업에 고민할 부분도 많아지고 지원 브라우저나 디바이스도 많아서 전환 과정에서 고민한 내용일 실용적이라 도움이 된다.(한국어)
  • Blogged Answers: Redux - Not Dead Yet! : Redux 메인테이너 중 한 명인 Mark Erikson가 Redux는 이제 끝냤냐?라는 질문에 대한 대답을 정리한 글이다. 먼저 Redux가 모든 상황에 다 적합한 도구는 아니라는 점을 강조하고 React의 Context API와 GraphQL + Apollo가 Redux를 대체할 것이라는 점에서 왜 대체한다는 얘기가 나왔고 그럼에도 Redux가 필요한 상황에 대해서 정리했다.(영어)
  • Why React needed yet another animation library. Introducing: react-spring : React에서 애니메니션을 구현할 수 있는 react-spring 라이브러리에 대한 소개이다. 이미 존재하는 애니메이션 라이브러리에 대해 설명하고 react-spring은 훨씬 간단한 선언으로 애니메이션을 사용할 수 있고 고급 사용을 위해 절차식으로 구현할 수 있으면서 성능도 좋다고 얘기하고 있다.(영어)
  • 리액트 도움닫기 한국어 번역서를 출간하며 : 리액트 도움닫기 (The Road to learn React 한국어판)를 번역해서 Leanpub에서 출간하면서 그 과정을 설명한 글이다. 이 글은 Robin Wieruch가 The Road to learn React 책을 공개해서 쓰면서 직접 각 번역가를 찾아서 번역을 하고 책의 판매 금액 전부는 기부를 하고 있다. 이렇게 공개된 형태로 책을 쓰면서 번역까지 같이 커뮤니티를 구성해서 하는 경우는 흔치 않은데 이글에 그 과정이 다 나와있어서 흥미로왔다.(한국어)
  • Hello wasm-pack! : Rust로 작성한 코드를 WebAssembly로 컴파일해서 npm registry에 배포할 때 JavaScript 개발환경을 몰라도 쉽게 할 수 있게 하는 wasm-pack를 소개하는 글이다. Rust 프로젝트 내에서 wasm으로 컴파일하고 wasm-bindge를 실행하고 npm 모듈로 패키징 해서 배포해준다.(영어)

그 밖의 개발 관련

  • Tips for High Availability : Netflix가 서비스의 고가용성을 위해서 배포 및 운영을 어떻게 하고 있는지를 정리한 글이다. Netflix가 지속적 배포 도구로 사용하는 Spinnaker를 중심으로 설명하고 있는데 블루/그린 배포, 배포 윈도우를 이용해서 근무 외 시간이나 휴일엔 자동 배포되지 않도록 하는 점, Chaos Monkey와 연동, 배포전에 코드 검증 등이 나와 있다. 이 글을 보니 Spinnaker에 더 관심이 가게 된다.(영어)
  • Instant Feedback in iOS Engineering Workflows : Instagram에서 iOS 앱을 개발할 때 다시 컴파일하고 재시작하는 시간을 줄이기 위해 React Native의 코드를 이용해 동적으로 리로딩하도록 적용한 과정을 설명한 글이다.(영어)
  • Kubernetes 02 – ReplicaSet : Kubernetes의 ReplicaSet의 사용방법과 동작 방식을 설명하는 글이다.(한국어)
  • Open sourcing Terratest: a swiss army knife for testing infrastructure code: Terraform이나 Packer로 Infrastructure as Code를 적용할 때 작성한 코드를 테스트할 수 있도록 Gruntwork에서 만든 Terratest에 대한 소개 글이다. Go로 테스트를 작성하는데 유용성은 고민해 봐야겠지만 테스트가 필요하다는 부분에는 동의한다.(영어)
  • Fabric Branch로 사용자 행동 분석하기 : 앱에서 사용자 분석을 하려고 Deferred Deeplink를 사용하기로 결정하고 Fabric Branch을 이용해서 이를 구현하는 방법을 설명한 글이다. 예전에 서비스 마케팅을 위해 데이터를 수집할 때 앱 쪽에서 데이터가 추적이 끊겨서 고생했던 기억이 있어서 더 관심이 갔다.(한국어)
  • FoundationDB is Open Source : Apple이 [분산 키-밸류 스토어인 FoundationDB를 오픈소스로 공개했다.(영어)
  • New PyPI launched, legacy PyPI shutting down April 30 : 파이썬 패키지 저장소인 PyPi의 새 버전이 공개되었다. 기존 PyPI는 4월 30일에 종료된다.(영어)
  • Elasticsearch Reference : Elasticsearch 레퍼런스 문서의 한국어 번역본이다.(한국어)

볼만한 링크

  • 사이드 프로젝트, 10년 간의 기록 #1 : 10년 동안 사이드 프로젝트를 하고 연별로 진행한 사이드 프로젝트를 정리한 글이다. 개발자가 사이드 프로젝트를 하는 걸 좋아하는 터라 다른 사람이 어떻게 아이디어를 내고 개발했는지 정리된 글이 재미있었다.(한국어)
  • 2018 Women Techmakers Korea 참가 후기 : 2018 Women Techmakers에 부스로 참가한 스포카에서 직원들이 들은 세션을 정리한 글이다. Women Techmakers에 참가 못해서 궁금했는데 이 글에서 어떤 얘기가 오갔는지 살펴볼 수 있다.(한국어)
  • 4월 23일, 중국에서 누군가가 쏘아올린 작은 트랜잭션 : 북경대의 성폭행 사건이 중국 내 온라인 게시판에서 계속 삭제되자 누군가 이 내용을 이더리움 트랜잭션에 담아서 블록체인에 저장했다. 이제 이 데이터를 영원히 지워지지 않는 데이터가 되었는데 거래 자체는 의미 있는 거래가 아니지만 중국처럼 통제된 국가에서 통제 못하는 기록을 남겼다는 면에서 의미하는 바가 크다.(한국어)

IT 업계 뉴스

프로젝트

  • Titus : Netflix에서 오픈소스로 공개한 컨테이너 관리 플랫폼. AWS에 통합되어 있으며 Netflix 내부에서 사용하던 플랫폼을 오픈소스로 공개한 것이다.
  • mdx : Markdown을 파싱해서 JSX와 함께 쓰게 해주는 프로젝트
  • VuePress : Vue.js에 기반을 둔 정적 웹사이트 생성기.
  • CSS Blocks : 컴포넌트마다 하나의 CSS 파일을 작성하는 요즘 분위기에 맞춰서 CSS를 컴포넌트에 맞춰서 작성하고 최적화해주는 오픈소스를 LinkedIn에서 공개했다.
  • GraalVM : Oracle에서 공개한 통합 가상머신으로 JavaScript, Python, Ruby, R 외에도 Java, Scala같은 JVM 기반언어돠 C/C++ 같은 LLVM 기반 언어를 돌릴 수 있다.

버전 업데이트

2018/05/01 22:19 2018/05/01 22:19