Skip to content

Instantly share code, notes, and snippets.

@Suor
Suor / mediavault.conf
Created February 27, 2014 09:34
mediavault nginx config
proxy_cache_path /home/mediavault/cache-mem levels=2:2 keys_zone=ram:400m inactive=48h max_size=26G;
proxy_cache_path /home/mediavault/cache-ssd levels=2:2:2 keys_zone=ssd:800m inactive=30d max_size=160G;
client_body_temp_path /home/mediavault/cache-mem/tmp;
open_file_cache max=5000 inactive=600s;
open_file_cache_valid 1200s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
server {
@Suor
Suor / pull_db
Created March 10, 2014 06:38
Pull DB to development environment script
#!/bin/bash
BACKUP_SERVER=kronos.metadesign.ru
BACKUP_DIR=/backup/zeus/all/
RUAUTO_BACKUP_PATH=/db/dumps/pgsql/ruauto.sql.gz
DUMP_TMP=tmp/db.sql
DUMP_TMP_GZ="$DUMP_TMP.gz"
# Text color variables
@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):
# Текущий мастер умеет инвалидировать по событиям на связанных моделях,
@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 / 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 / test.js
Created February 1, 2015 08:46
test.js
alert('Hello world')
@Suor
Suor / Review.md
Last active August 29, 2015 14:15
WaypointsMover review

Отступы

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

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

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

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

@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 / 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 / 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: