16/1/2018

Understanding decorator and closer on the Python

def deco1(deco_args, ):
    print('deco1 s')
    def deco1_inner(func):
        print('deco1_inner s')

        def wrapper(*args):
            print('deco1.wrapper')
            print('deco_args: ', deco_args)
            return func(*args)

        print('deco1_inner e')
        return wrapper

    print('deco1 e')
    return deco1_inner


def deco2(func):
    print('deco2 s')

    def wrapper(*args):
        print('deco2.wrapper')
        return func(*args)

    print('deco2 e')
    return wrapper


@deco2
@deco1(['name', 'age', 'sex'])
def origin_func(*args):
    print('origin_func s')
    print('origin_func args:', args)
    print('origin_func e')


if __name__ == '__main__':
    origin_func(*['hello', 'selo'])
decorator closer python
16/1/2018

PEP8 Main Concept

Introduction

This document gives coding conventions for the Python code comprising the standard library in the main Python distribution.

문서는 파이썬 배포판 표준 라이브러리를 구성하는 파이썬 코드의 코딩 컨벤션을 제공합니다.

This style guide evolves over time as additional conventions are identified and past conventions are rendered obsolete by changes in the language itself.

스타일 가이드는 시간이 지남에 따라 발전합니다. 추가적인 컨벤션이 명시되거나 언어의 변화로 과거 컨벤션이 필요없을갱신됩니다.

Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

A Foolish Consistency is the Hobgoblin of Little Minds

One of Guido’s key insights is that code is read much more often than it is written. The guidelines provided here are intended to improve the readability of code and make it consistent across the wide spectrum of Python code. As PEP 20(Zen of Python) says, Readability counts.”

One of Guido’s key insights is that code is read much more often than it is written. 우리는 코드를 작성하기보다는 훨씬많이 읽는다.” by Guido

A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is the most important.

However, know when to be inconsistent — sometimes style guide recommendations just aren’t applicable. When in doubt, use your best judgment. Look at other examples and decide what looks best. And don’t hesitate to ask!

python pep pythonic coding convention
15/1/2018

pyenv-vritualenv install and venv setup

clone pyenv-virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv
$ brew install pyenv-virtualenv
add following script to your shell profile
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
check the versions installed
$ pyenv versions
* system (set by /Users/selochanlee/.pyenv/version)
install specific version
# check the installable version list
$ pyenv install --list
...
# install specific version
$ pyenv install 3.6.1
...
# confirm it whether installed or not
$ pyenv versions
...
create virtualenv with pyen and activate it
$ pyenv virtualenv 2.7.13 <venv_name>
...
# activate the installed version
$ pyenv activate <venv_name>
...
python pyenv virtualenv
12/1/2018

3분 비트코인 개요

비트코인은 분산화암호화 화폐이자 결제 시스템이다.

1. 분산화

중앙은행 등의 신뢰받는 제3자(TTP: Trusted Third Party)가 필요없이, (신뢰) 프로토콜을 따르는 분산화된 컴퓨터 네트워크에 의해 발행되고, 거래가 검증된다.

  • 인간이 하는 모든 거래는 신뢰기반. 현 시대는 TTP가 개인의 신뢰를 검증한다. 하지만 비트코인은 TTP없이 신뢰검증이 이루어 질 수 있다.
  • 기존 시스템은 신뢰를 획득하는데 너무비용이 든다. 분산화된 시스템 비트코인은 TTP에게 지불하는 신뢰를 얻기 위한 비용을 엄청나게 감소시킨다.
  • 네트워크에만 연결가능하면 은행이나 정부와 같은 중앙기관 없이 거래가 가능해진다.
  • 분산화로 인해 비트코인은 기존시스템을 혁신할 조건들을 갖게된다.

2. 암호화

비트코인은 암호학적 원리에 기반하여 거래를 확인하고 기록한다. 구체적으로는 공개키 암호화를 사용하여 거래에 대한 검증과 인증을 수행하며, Hashcash(SHA-256)을 사용한 작업증명(PoW: Proof of Work)을 통해 블락체인의 동기화에 필수적인 연산작업의 양을 측정검증한다.

  • 블락들은 이전 블락과 연결되어 블락 체인을 구성한다. 거래를 해킹하기 위해서는 거래내용이 기록된 블락을 해킹해야하는데, 모든 블락은 연결되있음으로 해킹이 불가능해진다.

3. 화폐

화폐의 3대 기능을 수행한다. 거래의 수단, 가치의 저장, 가치의 척도 기능을 수행한다.

  • 다른 화폐와 마찬가지로 공급과 수요에 의해 가격이 측정된다.
  • 화폐의 효율성 측면이 매우 높다.
  • USD, KRW같은 법정화폐와 같이 공급이 무한정 가능한 인플레이션 화폐와 달리, 발행 총량이 정해진 디플레이션 화폐이다.

4. 결제 시스템

비트코인은 화폐인 동시에 Visa와 같은 결제 시스템으로 비트코인으로 이루어지는 거래를 안전하게 처리한다.

  • 비트코인은 금과 같은 화폐이자 비자, 마스터카드, 은행시스템과 같은 결제시스템이기도 하다.

내용은 비트코인 개요 강좌 | block 2 | 블록체인ers | The Blockchainers 영상을 토대로 요약정리한 내용입니다.

Reference

비트코인 개요 강좌 | block 2 | 블록체인ers | The Blockchainers

bitcoin blockchain cryptocurrency
2/1/2018

2017년 반성2018년 방향

2017년은 개인적으로 만족 스럽지 못한 한해였다. 이것 저것 (이직, 세미나, 스터디, 주말출근 등등) 열심히 많은 것을 한 것 같아 보이는 한해였다. 하지만 개인적으로는 성공스럽지 못한 한해였다.

나는 개인 테스크를 트렐로 보드를 사용해 관리한다. 회고를 위해 트렐로 보드를 살펴보았고, 2017년 나는 실패한 한해라는 것을 너무나 쉽게 깨달을수 있었다.

인간은 실수를 반복한다.”또한 몇 년 동안 같은 실패를 반복했다. 한해 한해 계획을 세웠고, 실패해왔다. 그래서 올해 새해 계획은 조금 다르게 세워보려 한다. 반기새목 (반성 기반 새해 목표 설정)

반기새목 (반성 기반 새해 목표 설정)

먼저한해 실패한 부분과 성공한 부분을 구분하고, 실패한 부분은 실패 요소를 명확히하고 이를 토대로 개선 방향을 찾는다. 성공한 부분은 성공 이유를 알아보고 실패한 부분에 적용한다.

잡식

나는 개발자다. 뒤늦게 개발을 시작했고, 열등감 덕분에 방향성 없이 정보를 무작정 입력하려는 안좋은(?) 학습 버릇이 있다. 이러한 학습방법은 나를 빠르게 성장시키고 커리어를 정하는데도움이 되었다. 이러한 학습법이 잘못됐다는 것이 아니다. 학습자의 수준에 따라 효율적인 학습방법이 존재한다고 생각하며, 현재의 나의 수준에서 기존 학습방법은 한계가 있었기에 변경은 불가피했다. 올해는 학습 방향은 UnManaged Language를 기반으로 알고리즘자료구조 학습 이며, 이를 달성하기 위한 커리큘럼을 세우고, 테스크로 만들어 학습할 것이다.

테스크는 최대한 구체적이며, 작게, 실행가능한 수준으로 수립

2017년 한해 트렐로에 수많은 카드들이 만들어졌다. 이 중에 과연 나에게 의미가 있는 카드가장이나 될 것인가? 대략 20% 정도 되는것 같다. 왜 이렇게 의미없는 카드들이 많이 만들어 진것일까?

상사가 계획없이, 생각없이 부하직원에게 업무를 지시해 고통을 주듯, 나 또한 나에게 고민없이 테스크를 할당하고 좌절감에 빠지게 만들었다. 그렇다고 이러한 테스크들이 할가치가 없고 신경쓰지 않아도 될것들은 아니다. 다만 따로 괸리되고 인지되어야필요가 있다. 2017년에 하나의 보드에 모든 테스크를 관리했다면, 올 한해는 TODO, BACKLOG, BUCKET 으로 보드의 성향을 구분할 것이다. 한단계나아가 TODO 같은 경우는 월별로 보드를 만들어 관리할 것이다.

목표는 버킷리스트가 아니다.

2017년 트렐로 보드에 생성된 테스크를 살펴보면 오픈소스, 기술 문서 번역, 세미나 발표 등과 같은 버킷리스트 비슷한 테스크들이 있다. 올해는 버킷리스트와 목표는 구분해서 계획을 세울것이다. 예를들면 오픈소스 기여와 같은 막연한 목표는 트렐로 보드를 따로 만들어 관리, 2018년 올해 목표계획과 같이목표와 세부목표를 나눌것이다.

패턴 그리고 습관

2017년 11월, 12월은한해가장 바쁜 시즌이었다. 총 15번의 온/오프라인 면접코딩테스트. 이외에도 파이썬 격월 세미나 스피커, 회사 프로젝트 릴리즈, 인수인계, 퇴사기념 세미나, 퇴사, 영어스크립트 암기, 무엇보다 충실한 신혼생활 등… 어느날은 면접을 보고 출근해 일하고, 퇴근면접을보는 미친일정을 진행했다. 물론 이런 날은정신이 아니었다.

당연한 얘기지만 개인일정이 바쁘다고 회사일정에 지장을 주면되었기에 주말 출근 혹은 1~2시간 일찍 출근하고 퇴근했다.

평상시 새로였다면 위와 같은 일들을 절대해내지 못했을 것이다. 이 기간동안 나는 새로운 생활패턴 혹은 습관을 적용했다.

얼또 - 얼리또라이

일찍 일어나는 또라이가 세상을 바꾼다

일명 얼또 라는 이름의 페이스북 그룹인데, 한정된 시간에 너무 많은 과업에 스트레스를 받던중 나에게 맞는 시간관리 기법을 찾기 시작했고, 간단한 생활 패턴의 변화로 이를 시도해보기로 했다. 찾았던 여러가지 장법중 하나가 새벽형 인간이었고, 이를 실행하는 그룹인 얼리또라이가입하고 활동하게 되었다. 이 그룹의 목표는하나다 일찍일어난다. 이토록 단순한 실천이 얼마나 많은 파급효과를 갖는지는 깊게 고민해보지 않은 사람들은 쉽게 얻을없다.

최대한 간단히 정리해보자면, 아침에 일정하게 얻을있는 개인 시간이 생긴다. 나와 같이 의지가 약한 사람에게 퇴근 후에 2~3시간 정도의 개인시간을 지속적으로 갖는다는 것은 너무나 어려운일이다. 의지가 약한데 아침이나 저녁이나 뭐가 다를까? 라는 의문을 가질있다. 이런 의문이 생긴다면 조금고민해 보거나 실제로 일찍일어나 보길 바란다. 아침과 저녁의 차이가 무엇인지 깨달을있을 것이다.

어쨌든 아침 일찍 일어난다는 생활 패턴 하나로 2~4시간의 통제가능한 개인 시간을 얻었고, 이직 준비와 자기개발에 투자했다. 부가적인 효과로 집중 가능한 개인시간을 충분히 갖음으로서, 집중해서 일하지 못했을발생하는 극도의 스트레스 또한 제거할있었다. 정리하자면 11월, 12월은 2017년짧은 시간에 많은 것을 이룩한달이었다. 결국 나머지 실패한 기간과 성공한 기간의 가장차이는 패턴안에서 일정관리였다. 일정한 패턴이 있을때 시간 통제가 가능해지고, 정확한 계획 수립이 가능해지며, 실행 가능성은 높아졌다.

정리

생각나는 대로 정말 두서없이 정리를 해보았다. 쓰고 보니 크게 3가지 대명제가 정해 졌다. 첫 번째는 학습할 주제방향 선정, 두 번째는 계획수립관리 방법, 세 번째는 성공적인 목표달성을 위한 습관. 개인적으로 가장 중요하게 생각되는 명제는번째 습관이며, 2018년의 성공 실패여부는 습관 얼또달려있다. 기억해 새로야. 얼또!! 대강 방향은 정해졌고, 이제 2018년 희망찬 계획을 세우러!!! Here we go!!!

셀프 공약: 2018년 공휴일 68일1주당 하루(스페셜찬스) 52일 합을 제외한 245일(365-(68+52)) 얼또를 실천한다. 홍석희에게 20만원 스벅상품권을 선물한다.

28/12/2017

[2017 파이썬 연말 세미나 라이트닝토크] Dream of selo in the hello world - 이새로찬

Python Seminar Pycon 2017 파이썬 연말 세미나