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 generic.ts
interface X<T> {
// m(o: T): void; // is ok
(o: T): void;
}
class A {
f: X<this>;
}
class B extends A {
@dittos
dittos / JpaBugTest.java
Created Sep 3, 2018
Saving lazy-loaded entity with IdClass throws TypeMismatchException
View JpaBugTest.java
package org.sapzil;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.ManyToOne;
@dittos
dittos / gist:6396622
Last active Jul 2, 2018
Two concurrent sessions in Flask-SQLAlchemy
View gist:6396622
# coding=utf-8
import flask
from flask.ext.sqlalchemy import SQLAlchemy
app = flask.Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
log_db = SQLAlchemy(app, session_options={
@dittos
dittos / Application.kt
Last active Nov 2, 2017
Kotlin data class + JPA
View Application.kt
package org.sapzil
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
open class Application
@dittos
dittos / fbautoaccept.js
Last active May 18, 2017
Accept Facebook group join request automatically.
View fbautoaccept.js
/**
* Install PhantomJS to run: http://phantomjs.org/
* Needs jQuery 2.0.3 in the same directory (Name it as: jquery-2.0.3.min.js)
*/
var webpage = require('webpage');
config = {
email: '',
pass: '',
View gist:0abf8b6dc79d08d6700e9c04b87dfc7f
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
View calc_annotated.py
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 / 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):
You can’t perform that action at this time.