Outsider's Dev Story

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

기술 뉴스 #111 : 18-10-01

웹개발 관련

그 밖의 프로그래밍 관련

  • Rethinking JavaScript Test Coverage : JavaScript 커버리지 도구인 Istanbul의 리드 개발자인 Benjamin Coe가 Node.js에서 커버리지를 측정하는 방식을 개선하는 과정을 설명한 글이다. 이전에는 기존 JavaScript 코드에 커버리지 측정용 코드를 넣어서(보통 instrument라고 하는...) 측정하게 되는데 새로운 언어 기능을 따라가기가 어렵고 300%나 속도가 느려지는 문제가 있었다. V8 팀과 얘기하다가 V8에서 제공하는 커버리지 기능을 활용하는 아이디어를 얻어서 테스트 결과 필요한 기능이 모두 있진 않아서 해당 기능을 V8 팀과 협업해서 개선하고 Node.js에서 인스펙터를 연결해서 사용하는 불편함 때문에 Node.js 코어 팀과 협업해서 쉽게 사용할 수 있게 변경되었다. 이는 Node.js v10.10.0 이상부터 사용할 수 있는데 Instanbul 리포터와 함께 사용할 수 있는 c8을 공개해서 바로 사용할 수 있다.(영어)
  • Upgrading GitHub from Rails 3.2 to 5.2 : GitHub에서 1년 반에 걸쳐서 Rails 3.2에서 5.2으로 업그레이드한 과정을 정리한 글이다. Gemfile.lock 파일을 두 가지 버전으로 관리하면서 여러 버전을 지원하는 코드를 동시에 운영해서 길게 유지되는 브랜치를 관리하지 않았고 사용자의 영향을 최소한으로 하면서 버전을 올렸다. 이렇게 오래 걸린 이유로는 Rails 업그레이드가 원래 쉽지 않고 GitHub의 코드가 10년이나 되었고 이전에 메이저 업그레이드를 해보지 않아서 경험이 없었음을 뽑았다.(영어)
  • 점진적인 레거시 웹 애플리케이션 개선 과정 : 배민찬에서 기존 레거시 시스템을 개선하면서 고민한 부분과 접근 방법을 정리한 글이다. 오래된 레거시 시스템을 점진적으로 바꾸면서 구버전의 백엔드 프론트엔드와 신버전의 백엔드 프론트엔드를 같이 운영하면서 안정적으로 개선한 내용이 잘 나와 있다.(한국어)
  • The definitive Node.js handbook : 미디엄에 올라온 Node.js를 어떻게 사용하면 되는지 설명하는 글로 PDF 등의 이북 형식으로도 받을 수 있다. 내용을 다 보지는 않고 목차 정도만 보았지만, 꽤 최신 내용으로 작성되었다는 점에서 Node.js를 배우려고 할 때 좋은 자료로 보인다.(영어)

블록체인 관련

볼만한 링크

  • 테라노스(Theranos)가 스타트업들에게 주는 교훈 : 9조 원 가치로 평가받은 스타트업 테라노스가 사기로 밝혀지면서 이 내용을 책으로 쓴 "Bad Blood"를 읽고 스타트업에서 관심 가질 필요가 있는 내용을 정리한 글이다. 실제 기술이 없음에도 그 정도 평가를 받을 정도로 놀라운 스토리텔링 능력, 기밀관리, 대기업과의 협상 능력 등은 꼽았다.(한국어)
  • 나는 어떻게 오픈소스 커뮤니티를 통해 성장했나 : 업무로 Mattermost 기술지원을 하다가 직접 참여해서 기여를 하게되고 이를 통해서 배우게 된 점을 정리한 글이다. Mattermost는 이름 정도만 알고 있었는데 이 글을 보니 기여자나 사용자에게 상당히 친절하고 잘 구성된 커뮤니티라고 생각되고 개발 문화와 리뷰 등을 통해서 회사에서 배우지 못한 부분도 상세하게 나와 있는 좋은 글이다.(한국어)
  • 해커톤 매뉴얼 : 오픈핵이라는 대학교 대상 오픈소스 해커톤을 운영한 경험을 바탕으로 해커톤을 할 때 고려해야 할 부분과 준비해야 하는 내용을 자세하게 잘 정리해 놓은 문서이다. 세미나와 콘퍼런스와는 또 다른 성격의 해커톤도 준비할 부분이 많다고 생각하는데 이런 경험이 정리되어 다 같이 개선할 수 있게 되었다는 점에서 반가운 문서다.(한국어)
  • 프랑스 파리 에꼴42 방문기 : 이글을 통해 처음 알았지만, SW 교육의 혁신이라고 불린다는 프랑스의 SW 교육기관 에꼴42에 방문해서 실제로 어떻게 운영하는지 살펴보고 인터뷰까지 한 글이다. 5년 된 사립 교육기관이라는데 학비랑 교사가 없이 자발적 참여로만 진행하고 상당히 잘 만든 것으로 보이는 교육 프로그램으로 스스로 공부하게 한다는 점이 흥미로웠다.(한국어)
  • Remote only : 원격 근무의 가지와 장단점 등을 보기 좋게 정리한 페이지이다. 원격 근무에 관심 있다면 원격 근무를 위해서 어떤 가치를 지켜야 하고 어떤 장점이 있는지 읽어볼 만하다.(영어)

IT 업계 뉴스

프로젝트

  • Sublime Merge : Sublime Text를 만드는 Sublime HQ에서 만든 Git 클라이언트.
  • MMKV : WeChat에서 만든 iOS/Android에서 사용할 수 있는 키-밸류 스토리지.
  • GrapesJS : GUI로 웹페이지를 만들 수 있는 오픈소스 웹 빌더.
  • os-tutorial : C로 OS를 처음부터 만들어 보는 튜토리얼.
  • ColorBox : Lyft에서 만든 원하는 대로 컬러스킴을 쉽게 만들 수 있는 웹사이트.
  • Trix : Basecamp에서 만든 웹 텍스트 에디터.
  • MS-DOS : Microsoft에서 MS-DOS의 v1.25와 v2.0의 코드를 공개했다.

버전 업데이트

2018/10/01 12:28 2018/10/01 12:28

Probot: Scheduler 사용하기

이전에 Probot 관련 글을 올렸는데 GitHub과 연동하는 대부분 프로그램이 그렇듯이 GitHub에 커밋이 올라오거나 이슈가 등록되는 등 이벤트가 발생했을 때 이를 받아서 프로그램이 실행되게 된다. 하지만 프로그램을 작성하다 보면 이벤트가 없이 동작해야 하는 경우가 있다.

예를 들어 하루에 한 번씩 오픈된 이슈라 Pull Reqeust를 가져와야 한다거나 리뷰를 기다리고 있는 Pull Reqeust의 목록을 가져와서 슬랙에 알려줘야 한다거나 할 때는 GitHub의 이벤트가 없이도 원하는 때에 프로그램이 동작하도록 해야 한다.

Probot: Scheduler

Probot: Scheduler는 원하는 시간에 함수가 실행되도록 할 수 있는 Probot의 스케쥴러다.

const createScheduler = require('probot-scheduler')

module.exports = robot => {
  const scheduler = createScheduler(robot, {
    interval: 24 * 60 * 60 * 1000 // 1 day
  })

  robot.on('schedule.repository', (context) => {
    // your logic here
  });
}

index.js에서 위처럼 스케쥴러를 사용할 수 있다. 스케쥴러의 간격은 createScheduler에서 옵션으로 지정할 수 있고(위에서는 1시간마다 실행된다.) 이때 schedule.repository 이벤트가 발생하므로 콜벡에서 context를 인자로 받아서 다른 이벤트처럼 사용할 수 있다.

createScheduler 옵션에는 다음 두 설정을 넣을 수 있다.

  • delay: DISABLE_DELAY를 설정하지 않으면 기본값은 true이다. false이면 앱 시작시 바로 실행되고 true이면 0부터 interval 간격 사이의 랜덤 값으로 지연시켜서 모든 앱의 스케쥴러가 동시에 실행되지 않도록 한다.
  • interval: 밀리초 단위의 스케쥴 시간이고 기본값은 1시간이다.
2018/09/23 17:40 2018/09/23 17:40