마음찍어둔 문서 읽기 - 03

Reading time ~7 minutes

트위터 마음함에 있는 아티클 리뷰

오늘의 성과: 899개 → 865개

하루 사이에 5개가 더 늘어났었다… 그리고 제목을 바꿀까 고민이네 마음찍어둔 문서 읽기 라니 뭔가 멋없다 그래도 꼬박꼬박 30개씩은 줄고있네 ㅠㅠ

리뷰

Getting Started on Geospatial Analysis with Python, GeoJSON and GeoPandas

예전에 담아뒀던 아티클이 GeoJSON에 관련된 내용이었는데 같이 봐야할 것 같다. 도시공학과를 다니면서 ArcGIS나 QGIS를 사용해 이런 지리적 정보를 다루고 편집하곤 했는데 여기서 소개되는 shapely, geopandas, geojsonio를 이용하면 재밌는 프로젝트를 할 수 있을 것 같다. 과연 한국쪽도 지원이 될지는 모르겠지만… 베셀이랑 프로젝션이 있으려나?

Functional Programming in JavaScript? Yes, Please.

js의 filter를 사용해 함수형 프로그래밍의 맛을 보여준다. 복잡한 조건이면 나도 필터나 맵같은 걸 쓰겠지만 웬만하면 리스트 컴프리헨션으로 하는 버릇이 있다. 한 두번씩 써버릇하면 손에 익지 않을까 싶다. 재사용성을 따지자면 필터가 나은 듯 하고.

// 기존의 for loop 방식
const cats = [];

for (let i = 0; i < animals.length; i++) {
  if (animals[i].species === cat) {
     cats.push(animals[i]);
  }
}

// filter 사용
const isCat = function(animal){
  return animal.species === cats;
});

const cats = animals.filter(isCat);
[i for i in animals if i["species"] == "cat"]

Using Python and Docker for data science

Data science글이라기 보단 docker에 대한 글이다. 도커로 파이썬 컨테이너를 띄워 numpy, scipy, scikit-learn을 설치하고 Decision tree로 과일을 예측한다. 이 글은 아래의 이미지가 제일 유용하다.

Intro to Threads and Processes in Python

프로세스와 스레드를 잘 설명하고 그래프로 멋지게 시각화한 글이다! 프로세스안에 여러 개의 스레드가 동작하고 있고, 파이썬의 GIL때문에 IO바운드 작업에서는 멀티스레드가, CPU바운드 작업에서는 멀티프로세스가 좋다고 한다. 멀티스레드와 멀티프로세스를 각각 API calls, IO Heavy Task, CPU Intensive상황에서 비교 그래프로 보여준다! 이건 번역해보고 싶은 글이다.

Building a RESTful API with Go

Go언어로 간단한 RESTful API서버를 만드는 글. golang도 다음에 크롤러 만들 일이 있으면 써보려고 하는 언어인데 C언어랑 무척 비슷하단 느낌을 받는다. 파이썬 보다 아름답진 않지만 고루틴을 통한 병렬 프로그래밍이 쉽다는 점과 성능이 나름 매력적이다.

Why you should use standard HTTP methods when designing REST APIs

REST API에 있는 HTTP 메소드들에 대해 설명한다. GET, POST, PUT, PATCH, DELETE에 대해 설명해주고 특히 PUT과 PATCH모두 리소스를 업데이트 하는 메소드인데 무엇이 다른가에 대해 Idempotence(멱등성) 개념으로 설명해준다! 이 멱등성이란건 메소드를 반복해도 결과가 동일함을 의미하는데 PUT은 카운터를 6으로 set하는 idempotence 메소드, PATCH는 카운터를 1 증가시키는 non-idempotence 메소드로 풀이한다. RESTful API를 만든다면 이런 개념을 확실히 알아놔야겠다. 참고로 GET, PUT, DELETE는 멱등 연산, POST, PATCH 는 비멱등 연산이라 보는데 PUT과 DELETE는 서버의 상태를 변경시키긴 하지만 여러번 반복해도 결과는 똑같으니 멱등이라 본단다.

Micro frontends—a microservice approach to front-end web development

프론트엔드도 마이크로서비스적 접근이 가능한지 처음 알았다. 앵귤러로 짠 부분, 리액트나 뷰로 짠 부분을 마이크로하게 독립시켜 다른 URL에 다른 SPA를 실현한다. 서로는 공유된 이벤트 버스(e.g. chrisdavies/eev)를 사용해 통신한다고 한다. 흥미롭네~

Rythm.js: A javascript library that makes your page dance

음악에 맞춰 컴포넌트들을 움직이게 해주는 라이브러리인데 재밌다ㅋㅋ 나중에 쓸 일이 있을 것 같다.

Building a movie app interface with Vue.js

Vue를 사용해 멋진 UI인터페이스를 만들어보는 글. 나는 아직 Vue를 배울 생각은 없지만 practice로써 좋은 글이다. 뭔가 뚝딱뚝딱 하더니 이쁜 효과가 들어가고 미려한 UI가 만들어지고 대단하다.

How Does the Blockchain Work?

블록체인에 대해 세세하게 짚어주며 설명해주는 글. 블록체인과 비트코인 입문으로 딱 적당한 무게감인데 굳이 영어로 된 입문 글 보다는 좋은 한글 문서도 많다. 개인적으로는 아래의 3개 한글 문서를 추천한다.

이 문서들 말고도 정리해둔게 여럿있는데 나중에 따로 블록체인 입문하기용 글을 쓰면서 첨부할 생각이다.

Modularization and dependency management: three steps to better code

좋은 코드를 위해 모듈화와 의존성 관리에 신경쓰라고 말하는 글. 직접적으로 서로 연결되어 있는 모듈보다는 래핑을 거치고 추상화하는게 좋단다. 작게는 함수를 분리하는 것 부터 크게는 API분리까지. 항상 기억하자

DelogX - Dynamic markdown-based blogging platform, Python + Flask

파이썬과 플라스크로 만든 마크다운 기반 블로그 프레임워크라길래 흥미롭지만 사실 이제와선 지킬이든 뭐든 쓰기편하고 테마만 이쁘면 뭐든 상관없다 주의가 되어버렸다. 지킬도 테마만 바꿔주고 style.css만 적당히 개조해 커스터마이징하면 써볼만한 수준이 된다.

How do you know your code is bad?

강하게 결합되고, 깨지기 쉽고, 재사용할 수 없는 코드를 나쁜 코드라고 본다. 그러면서 인용한 말이 꽤 인상적이다.

You want a banana but what you get is a gorilla holding a banana and the entire jungle with it. — Joe Armstrong

바나나를 원했지만 바나나를 들고있는 고릴라가 있는 정글가 튀어나온다는 고릴라-바나나 문제로 알려져 있나보다. 처음 들어보네. 하여튼 요약하자면 코드와 모듈의 커플링을 피해라다.

[번역] 초보자를 위한 함수형 자바스크립트 CURRYING 가이드

오랜만에 보는 한글 문서지만 번역글이었다 ㅎㅎ;; 어쨌거나 js에서 커링 함수에 대한 간단한 예제를 보여주며 세련되게 커링함수를 만드는 법을 알려준다. 함수형 프로그래밍을 배운적은 없지만 그래도 낯설지는 않아 내심 다행이다. 참고로 파이썬에서는 functoolspartial을 사용하면 커링함수를 쉽게 만들 수 있다.

Functional Programming HOWTO - Python 3.6.2 documentaion

파이썬에서 함수형 프로그래밍을 어떻게 하는지 알려주는 글일 줄 알고 담아뒀는데 그냥 레퍼런스였다. iteratorgenerator를 활용하고 컴프리헨션과 operator, functools를 잘 활용하자 정도록 요약가능하다.

Python - Simple and Concise Logging Setup

파일과 콘솔 동시에 로깅하는 간단한 예제. FileHandlerStreamHandler를 만들고 setFormatter로 포맷을 지정한 후 getLogger(__name__)으로 받아왔던 loggeraddHandler해주면 된다.

The Anatomy of ERC20

이더리움의 ERC20제안에 대해 분석하는 글이다. ERC20은 강제규약은 아니고 토큰을 만들 때 이런게 있으면 좋다 라는 정도로 제안하는 규약인데 현재 발행되는 토큰의 대부분이 이 ERC20을 기반으로 만들어지고 있다. balanceOf, totalSupply, transfer, transferFrom, approve, allowance 함수들을 포함하고 있는데 이 글에서는 각각의 함수들을 풀어 설명해주고 있다. 꽤 좋은 글 같은데 별도의 번역 포스팅으로 올려야겠다.

contract ERC20 {
   function totalSupply() constant returns (uint theTotalSupply);
   function balanceOf(address _owner) constant returns (uint balance);
   function transfer(address _to, uint _value) returns (bool success);
   function transferFrom(address _from, address _to, uint _value) returns (bool success);
   function approve(address _spender, uint _value) returns (bool success);
   function allowance(address _owner, address _spender) constant returns (uint remaining);
   event Transfer(address indexed _from, address indexed _to, uint _value);
   event Approval(address indexed _owner, address indexed _spender, uint _value);
}

TODO

File on blockchain 개발기

## 이번 글은파일의 해시값을 블록체인에 올리고, 파일이 원본임을 확인하고, 파일의 정보를 조회할 수 있는 기능을 개념 증명(Proof of concept) 수준에서 구현한 [File on blockchain](https://github.com/...… Continue reading

[번역] 파이썬 나라의 앨리스

Published on October 31, 2017