Skip to content

Instantly share code, notes, and snippets.

😂
I enjoy

Taeho Kim dittos

😂
I enjoy
Block or report user

Report or block dittos

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View app.py
class Handler(BaseHandler):
@property
def db(self):
if not hasattr(self, '_db'):
self._db = Session(bind=self.app.engine)
return self._db
def teardown_request(self):
db = getattr(self, '_db', None)
if db:
@dittos
dittos / gist:60e80da8e8d11b475c9f
Created Aug 12, 2014
Example Upstart Configuration
View gist:60e80da8e8d11b475c9f
start on runlevel [2345]
stop on runlevel [016]
respawn
setuid www-data
setgid www-data
env PORT=11000
chdir /home/ditto/animeta
exec env/bin/gunicorn animeta.wsgi --bind 127.0.0.1:$PORT --error-logfile -
View gist:ce26fdf91c7855ebd07f
var NewStatus = React.createClass({
render: function() {
return <div className="new-status">
<h2>New monolog</h2>
<form action="" onSubmit={this.handleSubmit}>
<textarea ref="text" /><br />
<input type="submit" value="Post" />
</form>
</div>;
},
View gist:a5550bfbf9cecff2aa22
/** @jsx React.DOM */
import React from 'react';
var popupId = 0;
function addStyle(doc, cssCode) {
var styleElement = doc.createElement("style");
styleElement.type = "text/css";
var head = doc.getElementsByTagName("head")[0];
View gist:b85564b263d637d33ee2
var PENDING = 0,
FULFILLED = 1,
REJECTED = 2;
export var PromiseMixin = {
getInitialState: function() {
return {promiseState: PENDING};
},
componentWillMount: function() {
@dittos
dittos / gist:8802445
Last active Aug 29, 2015
Custom Twitter CSS
View gist:8802445
@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("twitter.com") {
.is-preview img {
transition: 0.2s linear opacity;
}
.stream-item:not(.open) .is-preview,
.stream-item:not(.open) .multi-photo {
@dittos
dittos / env.py
Created Jan 26, 2014
Alembic with Flask-SQLAlchemy
View env.py
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
# ***
View bitcoin-explained-slightly-detailed.md

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

비트코인 주소

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

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

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

@dittos
dittos / gist:7556829
Created Nov 20, 2013
Poor man's New Relic (WIP)
View gist:7556829
import time
import inspect
import psycopg2
class QueryOperation(object):
def __init__(self, op, paramlist):
self.op = op
self.paramlist = paramlist
def __enter__(self):
@dittos
dittos / aheui.hs
Last active Dec 27, 2015
aheui.hs (r2: refactoring WIP)
View aheui.hs
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
You can’t perform that action at this time.