Skip to content

Instantly share code, notes, and snippets.

View mckabi's full-sized avatar
😼
물거나 해칠 수 있습니다

McK KIM mckabi

😼
물거나 해칠 수 있습니다
View GitHub Profile
@mckabi
mckabi / get_full_RTers.php
Last active September 27, 2015 00:27
Get all of RTers by tweet
<?php
/*
* 공식 트위터 사이트에서는 트윗을 RT한 사람 목록을 볼 수가 있는데
* 숫자가 조금만 많아도 줄여서 보여주기 때문에 모두 확인하기가 어렵다.
*
* 트위터 API를 써서 모두 확인하는 방법
*/
$tweet_id = '101450759463383041'; // 트위터 사이트에서 트윗한 시간을 누르면 확인 가능
@mckabi
mckabi / hello.py
Last active December 18, 2015 13:39
The decorator 'foo' works fine in flask 0.9, but it does not work in 0.10.1. http://flask.pocoo.org/snippets/18/ is also same result.
Traceback (most recent call last):
File "./hello.py", line 31, in <module>
def hello(name=None):
File "./hello.py", line 15, in deco
@wraps(f)
File "/Users/mckabi/Documents/Sandbox/flask_ex/env/lib/python2.7/site-packages/flask/app.py", line 1013, in decorator
self.add_url_rule(rule, endpoint, f, **options)
File "/Users/mckabi/Documents/Sandbox/flask_ex/env/lib/python2.7/site-packages/flask/app.py", line 62, in wrapper_func
return f(self, *args, **kwargs)
File "/Users/mckabi/Documents/Sandbox/flask_ex/env/lib/python2.7/site-packages/flask/app.py", line 984, in add_url_rule
@mckabi
mckabi / RC4crypt.py
Created December 16, 2013 16:54
Rc4 python implement
def RC4crypt(data, key):
'''
http://en.wikipedia.org/wiki/RC4
'''
box_range = 256
box = range(box_range)
i = 0
for j in range(box_range):
i = (i + box[j] + ord(key[j % len(key)])) % box_range
@mckabi
mckabi / test_weighted_choice.py
Last active February 17, 2021 07:48
Weighted choice
if __name__ == '__main__':
print 'weighted_choice test'
picked_items = []
weights = {'1st': 50, '2nd': 30, '3rd': 15, '4th': 5, '5th': 0}
for i in xrange(100000):
picked_items.append(weighted_choice(weights))
for code in sorted(set(picked_items[:])):
@mckabi
mckabi / flask_converters.py
Last active August 24, 2022 02:18
Flask Converters
class ListConverter(BaseConverter):
def to_python(self, value):
if isinstance(value, (set, list, tuple)):
return list(value)
try:
parsed_value = json.loads(value)
except:
parsed_value = None
@mckabi
mckabi / json.py
Created December 16, 2013 17:19
My JSON Encoder & Decoder
import json
def convert(obj):
if isinstance(obj, dict):
return dict((convert(key), convert(value)) for key, value in obj.iteritems())
elif isinstance(obj, list):
return [convert(element) for element in obj]
elif isinstance(obj, unicode):
return obj.encode('utf-8')
else:
@mckabi
mckabi / Dockerfile
Created December 15, 2018 14:15
pipenv + docker
FROM python:3.7
RUN apt-get -qq update && \
apt-get -q -y upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get install -y locales locales-all
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#ENV PYTHONDONTWRITEBYTECODE 1
document.querySelector('input[type=email]').addEventListener('keyup', event => {
const element = event.target;
const valueParts = element.value.split('@');
if (element.getAttribute('list') && document.getElementById(element.getAttribute('list'))) {
document.getElementById(element.getAttribute('list')).remove();
}
if (valueParts.length > 1 && valueParts[0] && valueParts[1]) {
const suggestionsId = (element.id || element.name) + 'Suggestion';
const suggestions = makeDatalist(suggestionsId, valueParts[0], valueParts[1]);
document.querySelectorAll("td[colspan=full]").forEach(td => {
const table = td.closest("table");
const columns = table.querySelector("tr").querySelectorAll("th, td");
const column_count = Array.from(columns).reduce((acc, cell) => acc + (cell.getAttribute('colspan') || 1), 0);
td.setAttribute('colspan', column_count);
});
@mckabi
mckabi / drf_urls.py
Last active October 25, 2019 00:11
DRF router.register(CustomViewSet(parameters, …))
"""
Django REST Framework router + ViewSet + parameters
- https://www.django-rest-framework.org/api-guide/routers/
"""
class OriginViewSet(ModelViewSet):
...
@classmethod
def as_custom_viewset(cls, **kwargs):
class CustomViewSet(cls):