Skip to content

Instantly share code, notes, and snippets.

@Suor
Suor / README.md
Last active August 29, 2015 14:18
Sublime Reform plugin showcase

Sublime Reform plug-in showcase

Here I will demonstrate a few things Reform plug-in is capable of.

Navigation

You can move up and down by function declarations, blocks of code and words.

@Suor
Suor / test_works.py
Created March 12, 2015 09:31
Test against real database with pytest-django
import pytest
@pytest.fixture()
def real_db(_django_cursor_wrapper):
_django_cursor_wrapper.enable()
def test_index(client, real_db):
response = client.get('/')
@Suor
Suor / keybase.md
Created March 2, 2015 05:11
keybase.md

Keybase proof

I hereby claim:

  • I am Suor on github.
  • I am hackflow (https://keybase.io/hackflow) on keybase.
  • I have a public key whose fingerprint is 6702 5527 9A65 45AE AADD 4C03 19CE B1F1 C0BE 3351

To claim this, I am signing this object:

@Suor
Suor / 0_initial.py
Last active August 29, 2015 14:16
Text Justify Code Review
import textwrap
# def task_with_text(text, width):
# new_text = textwrap.TextWrapper()
# new_text.width = width
# return new_text
#print task_with_text("Napoleon was born on the island of Corsica to a relatively modest family of noble Italian ancestry.", 7)
# def justify_line(line, width):
@Suor
Suor / pre-commit
Last active August 29, 2015 14:15
Never commit prints again
#!/bin/sh
PRINTS=`git diff --cached -U0 | grep ^+ | grep -E '\bprint(\b|_)'`
if [ -n "$PRINTS" ]; then
echo "ERROR: you are going to commit prints:\n"
git diff --cached -U0 -G'\bprint(\b|_)'
exit 1
fi
@Suor
Suor / Review.md
Last active August 29, 2015 14:15
WaypointsMover review

Отступы

Не нужно смешивать табы с пробелами. Конкретно для тебя проблема решается автозаменой таба на 4 пробела по всему коду. Также стоит настроить редактор, чтобы он заменял табы на пробелы при вводе.

Функциональность

Класс реализует две пересекающиеся функциональности. Возможно, имеет смысл разделить на два? Стоит помнить, что разделение, хоть и упрощает каждый класс в отдельности, всю систему может усложнить или хотя бы банально привести к большему количеству кода.

Альтернатива разделению - обособление частей кода отвечающих за линейное и за криволинейное движение. Сейчас это сделано для методов, но остаются аттрибуты, вызовы этих методов и хак в конструкторе.

@Suor
Suor / test.js
Created February 1, 2015 08:46
test.js
alert('Hello world')
@Suor
Suor / pickle_buffer.py
Created July 16, 2014 07:19
Picklable buffers
# Just two lines anywhere, still copies data before pickling
import copy_reg
copy_reg.pickle(buffer, lambda b: (buffer, (bytes(b),)))
@Suor
Suor / method_as_decorator.py
Created June 12, 2014 11:08
Using @decorator with methods
# Say we have this
class BaseCache(object):
def cached(self, timeout=None):
"""A decorator for caching function calls"""
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
cache_key = get_key(func, args, kwargs)
try:
result = self.get(cache_key)
@Suor
Suor / view.py
Last active August 29, 2015 14:02 — forked from ir4y/view.py
# Предполагая m2m такого вида
class Tag(model.Model):
text = model.CharField()
class News(models.Model):
tags = models.ManyToManyField(Tag)
def index(request):
# Текущий мастер умеет инвалидировать по событиям на связанных моделях,