Skip to content

Instantly share code, notes, and snippets.

View dittos's full-sized avatar
💥
뿌슝빠슝

Taeho Kim dittos

💥
뿌슝빠슝
View GitHub Profile
def fix_orientation(img):
try:
orient = img.orientation
except IndexError:
return
if orient in ('left_top', 'right_top'):
img.rotate(90)
elif orient in ('bottom_right', 'bottom_left'):
@dittos
dittos / gist:6912391
Last active December 25, 2015 03:49
Banks in Korea
# -*- coding: utf-8 -*-
import io
# codefilex.text: 금융결제원에서 다운로드
# http://www.kftc.or.kr/kftc/data/EgovBankListMove.do > 전체코드(txt)
banks = []
legacy_mapping = {
u'SC': u'SC(제일)'
@dittos
dittos / gist:6971124
Created October 14, 2013 05:19
IE <script> lazy loading bug

요즘 소셜 플러그인 등 외부 스크립트를 삽입할 때 많이 사용하는 기법이 <script> 태그를 비동기로 추가하는 겁니다.

<script>
(function() {
    var js = document.createElement('script');
    js.async = true; // ...
    
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(js, s);
})();
#77
for c in 5,5,4,3,2,0,2,3,4,5,5:s=(c*' 'or'*')+'* '[:6-c];print s+s[-2::-1]
@dittos
dittos / aheui.hs
Last active December 27, 2015 02:09
aheui.hs (r2: refactoring WIP)
import System.Exit
{-
Data Structures
-}
data Dir = SetDir Int Int | FlipX | FlipY | FlipXY | KeepDir
data Op = DivOp | AddOp | MulOp | ModOp | DupOp | SwitchOp Int | MoveOp Int
| CmpOp | BranchOp | SubOp | SwapOp | ExitOp | PrintNumOp
@dittos
dittos / gist:7556829
Created November 20, 2013 02:49
Poor man's New Relic (WIP)
import time
import inspect
import psycopg2
class QueryOperation(object):
def __init__(self, op, paramlist):
self.op = op
self.paramlist = paramlist
def __enter__(self):

적당히 자세한 비트코인의 원리

비트코인 주소

31uEbMgunupShBVTewXjtqbBv5MndwfXhb (비트코인 주소의 예.)

비트코인을 보내거나 받을 때 사용하는 주소다. 다른 사람의 주소를 알면 그 주소로 내 비트코인을 송금할 수 있다. 반대로 다른 사람에게 내 주소를 알려주고 비트코인을 부쳐달라고 할 수도 있다. 비트코인 주소는 누구나 얼마든지 만들 수 있어서 누가 소유한 주소인지 추적하기 어렵다. 따라서 익명성을 보장해준다. 실제로 거래를 할 때마다 주소를 새로 생성해서 사용할 것을 권장하고 있다.

먼저 공개키/비밀키 쌍을 만든 뒤, 공개키를 적절한 방법으로 해싱해서 비트코인 주소를 생성한다. 물론 비밀키는 다른 사람에게 알려주면 안되고 안전하게 보관해야 한다. 비밀키로 거래 내역을 서명하면, 공개키를 알고 있는 사람들이 올바른 거래인지 검증할 수 있게 된다.

@dittos
dittos / env.py
Created January 26, 2014 15:20
Alembic with Flask-SQLAlchemy
from __future__ import with_statement
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
# ***
import sys
sys.path.insert(0, '.')
from app import app, db
# ***
import sys
from ctypes import *
from math import isfinite
'''
1) 수식을 파이썬 바이트코드로 컴파일
수식이 바이트코드로 컴파일 될 때 constant folding이 돼서 너무 간단해져 버리지 않도록 함
lineno table에서 연속된 두 바이트코드의 실제 코드상 라인 번호가 255 이상 차이나면 최적화하지 않는 것을 이용
참고: https://github.com/python/cpython/blob/e4091c77026088cb0611b6e896b1579805253f5b/Python/peephole.c#L403
@dittos
dittos / gist:0abf8b6dc79d08d6700e9c04b87dfc7f
Created April 5, 2017 09:13
Scala + Java serialization size
import java.io._
def sizeOf[T](x:T, y:T): (Long, Long) = {
val buf = new ByteArrayOutputStream
val oos = new ObjectOutputStream(buf)
oos.writeObject(x)
val initSize = buf.size
oos.writeObject(y)
val size = buf.size - initSize
oos.close