Skip to content

Instantly share code, notes, and snippets.

View jckdotim's full-sized avatar
💭
I may be slow to respond.

jckim.xyz jckdotim

💭
I may be slow to respond.
View GitHub Profile
### 랜딩페이지 텍스트 작성 규칙
- 30대 중후반의 열정적 소상공인을 생각하며
- 설명은 모호하지 않는 선에서 최대한 간결하게
- 훅 메세지는 세련되고 위트있게
- 맞춤법은 기본
  • 도도페이지
    • 썸네일 서비스 셋업 (실패)
    • 페이지 크기 줄이기
  • 도도 3.0
    • 도도 3.0 아이콘 교체
    • 카이도모 에러 씸에게 전달
  • 리모트콜 결재
  • 스웬 pr 리뷰
  • 메타시티 전화
  • 코드 리뷰하기
  • 그랜트 출장보고서 작업 완료
  • Flux 발제자료 만들기
  • 주간 업무 쓰기
print "hi!!!"
class LocationMixIn(object):
lat = db.Column(db.Float(25), nullable=True)
lng = db.Column(db.Float(25), nullable=True)
from Crypto.Cipher import AES
import binascii
aes_key = '1234567890123456' # it must be 128-bit.
def aes_encrypt(data):
cipher = AES.new(aes_key)
expected_length = 16 * ((len(data) / 16) + 1)
padding_length = expected_length - len(data)
data = data + chr(padding_length) * padding_length
class EncryptedLocationMixIn(object):
encrypted_lat = db.Column(db.String(64), nullable=True)
encrypted_lng = db.Column(db.String(64), nullable=True)
@hybrid_property
def lat(self):
return float(aes_decrypt(self.encrypted_lat))
@lat.expression
def lat(cls):
decrypted = expr.func.aes_decrypt(
expr.func.unhex(cls.encrypted_lat), aes_key)
return cast(decrypted, db.Float(25))
@lat.setter
def lat(self, value):
self.encrypted_lat = aes_encrypt(str(value)[:16])