Skip to content

Instantly share code, notes, and snippets.

View hwshim0810's full-sized avatar

Hyunwoo Shim hwshim0810

View GitHub Profile
@hwshim0810
hwshim0810 / git.sh
Created April 4, 2018 14:28
Copy git repository to new repository with reservation history
git clone --mirror [OriginRepo.git]
cd [OriginRepo.git]
git remote set-url --push origin [New Repo.git]
git push --mirror
@hwshim0810
hwshim0810 / function.py
Last active March 26, 2018 07:51
get ip in django
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
return x_forwarded_for.split(',')[0]
else:
return request.META.get('REMOTE_ADDR')
@hwshim0810
hwshim0810 / views.py
Created March 15, 2018 07:07
Django queryset filter : group by max limit 1
"""
class SampleCategoryModel
id = primary
class SamplePostModel
category = foreignkey(SampleCategoryModel)
created_at = datetimefield
"""
from django.db.models import Max
@hwshim0810
hwshim0810 / queryset_util.py
Last active March 15, 2018 07:01
Django queryset filter by builderpattern
import operator
from functools import reduce
from django.db.models import Q
class QueryBuilder:
"""
Continuous queryset filtering
"""
@hwshim0810
hwshim0810 / model_utils.py
Created March 6, 2018 04:11
Generate unique key with django model
import string
from random import SystemRandom
def generate_key(field_name, model, size=8):
charset = string.ascii_lowercase + string.digits
key = ''.join(SystemRandom().choice(charset) for _ in range(size))
is_exist = model._default_manager.filter(**{field_name: key}).exists()
while is_exist:
key = generate_key(size, model)
@hwshim0810
hwshim0810 / python_overloading.py
Created March 6, 2018 04:08
Overloading in python
registry = {}
class MultiMethod(object):
def __init__(self, name):
self.name = name
self.typemap = {}
def __call__(self, *args):
# a generator expression
@hwshim0810
hwshim0810 / getkeyhash.java
Created December 14, 2017 02:45
Use for SDK : KeyHash
try {
PackageInfo info = getPackageManager().getPackageInfo("myandroid.package.name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
DebugLogger.d("==============================");
DebugLogger.d("KeyHash:" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
DebugLogger.d("==============================");
}
} catch (PackageManager.NameNotFoundException e) {
@hwshim0810
hwshim0810 / dynamic_favicon.js
Created November 6, 2017 06:57
Dynamic favicon using javascript
(function() {
var link = document.querySelector("link[rel*='icon']") || document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'shortcut icon';
link.href = 'http://www.stackoverflow.com/favicon.ico';
document.getElementsByTagName('head')[0].appendChild(link);
})();
@hwshim0810
hwshim0810 / box.css
Created October 4, 2017 13:18
Css change box postion
#blockContainer {
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
}
#blockA {
-webkit-box-ordinal-group: 2;
@hwshim0810
hwshim0810 / functions.py
Created September 6, 2017 00:38
Django custom csv action
def export_as_csv_action(
description="CSV 파일로 출력", fields=None, exclude=None, header=True, force_fields=None):
"""
CSV 출력을 하는 Django Admin Action Function \n
:param description: Action 에 표시할 문구
:param fields: 출력 할 Model Field(Column)
:param exclude: 출력에서 제외할 Model Field
:param header: Field(Column) 이름을 첫번째 행으로 출력할지 여부
:param force_fields: Django admin 의 list_display 의 Custom field (문자열) 을 사용할 지 여부 False 인 경우 Model 에 없는 필드는 제외한다.
"""