Архив

Архив Март 2013

Nginx: Включаем gzip-сжатие на лету.

31 марта 2013 6 комментариев

Для начала, обсудим для чего это нужно.

Раньше я не уделял внимания этому, но, закрыв тикет о включении gzip-сжатия на одном из текущих проектов, над которыми я работаю, - задумался, а зачем? Скорее всего, вам, как и мне, не жалко траффика с вашего сервера, да и уже много где есть безлимитные высокоскоростные каналы связи. Однако, это не всегда так, и основная цель - не уменьшить траффик с сервера (хотя это логичное следствие), а уменьшить траффик для клиента. Сейчас достаточно популярны мобильные устройства, но, мобильный интернет по прежнему отстаёт от проводного как по скорости, так и по цене (особенно в роуминге). Поэтому, это, в первую очередь, забота о пользователях. Читать далее...

PIP: Как установить pylibmc под Ubuntu Linux.

Мини-заметка о том, как установить последнюю версию pylibmc с помощью pip в Linux. Читать далее...

PIP: Как установить MySQL-python под Ubuntu Linux.

В очередной раз, при установке через pip MySQL-python, наткнувшись на отсутствие требуемых библиотек, решил записать процесс установки. Читать далее...

Zsh: Переход по словам, удаление слов целиком.

Не знаю где я это впервые встретил, но мне очень нравится фича в shell'е когда можно удалить слово целиком или переместится на целое слово. Обычно это делается в виде комбинации ctrl+стрелка для перехода и ctrl+delete/ctrl+backspace для удаления слова целиком (или, вместо ctrl можно использовать alt). Однако, в Ubuntu под zsh у меня "из коробки" работает только alt+backspace. Поправим досадное недоразумение. Читать далее...

MySQL: создаём БД в правильной кодировке.

17 марта 2013 2 комментария

Изначально пост хотел озаглавить "о кроказябрах в сотый раз", но решил обойтись более официозной формулировкой, хотя, быть может, первый вариант более отражает суть, т.к. все эти вещи описаны уже много раз, но всё равно с ними периодически возникают проблемы. Читать далее...

Linux: Управление процессами в командной строке.

В этом посте будет немного рассказано о "магии" командной строки linux. А именно, о работе с процессами: перевод выполнения из background'a (фоновый режим) в foreground (передний план) и наоборот. Читать далее...

Python: Виртуальное окружение для разработки с помощью virtualenv.

15 марта 2013 2 комментария

Для Python существует отличный инструмент - virtualenv. Если вы являетесь разработчиком, то для вас он должен быть незаменимым. Как вы могли догадаться, он создаёт виртуальное окружения для Python’а. Наверное, вы сталкивались с проблемой когда разные проекты используют разный набор пакетов, но это ещё пол беды, всё гораздо хуже, когда эти множества пересекаются, но требуются разные версии одних и тех же пакетов, которые, к тому же, не полностью совместимы друг с другом. Virtualenv позволяет решить эту проблему достаточно легко. Читать далее...

Три вещи, которые вы никогда не должны хранить в БД.

Данная статья является переводом другой, в целом, лично я согласен с автором и некоторые советы были бы полезны для меня в своё время. Стоит заметить, что под базами данных тут имеются ввиду реляционные базы данных, если не оговорено другое. Ссылка на оригинал в конце.

Как я уже говорил на некоторых выступлениях, лучший путь улучшить вашу систему - это, в первую очередь, не делать глупых вещей. Я не имею ввиду что вы или ваши разработчики глупые, достаточно легко проглядеть последствия подобных решений и не осознать насколько они плохи для поддержки, не говоря уже о масштабировании. Работая в качестве консультанта, я постоянно встречаю подобные вещи и ещё ни разу не встречал чтобы они работали хорошо хотя бы для кого-нибудь. Читать далее...

Django: Настраиваем STATIC_ROOT, STATICFILES_DIRS и MEDIA_ROOT правильно.

5 марта 2013 4 комментария

Для начала определимся с разницей между статикой и медиа-файлами в терминах Django. Первое - это все ваши файлы, которые вы сами создавали: css-стили, js-скрипты, картинки для дизайна и т.п. Медиа-файлы - всё, что загружает пользователь на ваш сервер (автарки, фотки), т.е. пользовательский контент. С пользовательским контентом всё более-менее просто и поэтому мы рассмотрим настройку только в конце поста. Читать далее...

Linux: Как архивировать с помощью zip.

4 марта 2013 1 комментарий

zipПриветствую всех.

На самом деле, всё описанное тут, весьма тривиально, но, лично у меня, возникли достаточно большие проблемы как с попыткой интуитивного использования командной утилиты для архивирования zip, так и с чтением документации. Почему-то, tar и gzip для меня гораздо проще и понятней, а для того чтобы заархивировать директорию с помощью zip ушло далеко не 5 минут и наш диалог с zip, какое-то время, заканчивался заявлениями "zip error: Nothing to do!" - мол, ничего не поделать тут. Man-pages для zip тоже показались весьма запутанными. Поэтому, чтобы не гуглить в следующий раз, выкладываю краткую инструкцию по архивирования с помощью zip'а в linux из-под консоли. Читать далее...

Python: PIP не хочет ставить нужную версию.

Всем привет.

Сегодня столкнулся с проблемой, хотел откатить django-tastypie до пердыдущей версии, т.к. в новой половина тестов начала падать. Но тут меня ждал сюрприз - pip отказался ставить нужную версию пакета, при этом нагло заявляя в лицо: "вы просили версию X, но я поставлю Y". Читать далее...

Безопасность: Выявление недетектируемых вредоносных файлов.

Каждый пользователь, наверно, периодически сталкивается с ситуацией когда его ПК проявлял подозрительную активность - "тормоза", частые ошибки приложений и самой системы. При этом ваша антивирусная система упорно молчит и при каждом очередном сканировании утверждает что ПК "чист".

Причина тому могут быть разные обстоятельства: возможно это некорректная установка (или удаление) ПО, может быть не правильная настройка какого-либо используемого специализированного ПО или другая, вполне легальная, причина. Но чаще всего,  примерно с вероятностью 75-80% из всех случаев (прошу строго не судить за цифры, т.к. они взяты из личного опыта, и вполне возможно могут отличаться от Ваших), это "вирусное заражение ПК". Читать далее...