Архив

Архив автора

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 3 комментария

Для начала определимся с разницей между статикой и медиа-файлами в терминах 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". Читать далее...

Python: Сокращаем URL с помощью bit.ly API.

28 февраля 2013 Нет комментариев

bit.ly logo
Для начала стоит ответить на вопрос чего вообще сокращать ссылки. Варианты могут быть разные, но самая суть - это экономия места там, где оно действительно ценно. Т.е. если вы на форуме даёте ссылку на википедию, то, вероятно, лучше не пользоваться подобными сервисами, будет более удобно сразу видеть куда ведёт ссылка. Но в некоторых случаях это оправдано: при передаче через sms или, например, ссылку на ту же википедия иногда проще будет продиктовать голосом если она будет укорочена, при использовании, например, в рекламе, хотя тут уже спорно. Главная мысль - не надо их использовать где попало, это иногда раздражает.

Итак, к сути. На одном из проектов изначально планировалось использовать goo.gl в качестве сервиса по сокращению ссылок, но, случайно нашёл на stackoverflow инфомрацию о том, что некоторые операторы начали фильтровать SMS с такими URL от goo.gl (ответ был в сентябре 2012). Непонятно какие это операторы, скорее всего штатовские, да и было сказано что тех. поддержка twilio (облачный сервис который предоставляет различные услуги, связанные с телефонией, в том числе, отправка и приём SMS сообщений) пытается решить эту проблему, однако, не может предоставить отчёт о статусе, потому как всё зависит от тех самых мобильных операторов. Хотя с другой стороны, может не всё так плохо, я знаю как минимум один сервис который предоставляет коммуникацию с клиентами по SMS с использованием goo.gl, да и Google всё же крупная контора и, может быть, уже уладила данную проблему сама. Читать далее...

Python: PIP download cache.

27 февраля 2013 Нет комментариев

Python PIP Boy
На своих Python-проектах я всё время пользуюсь виртуальным окружением (virtualenv), как для разработки, так и для их деплоя (развёртки, установки). Обычный способ установки новой зависимости в virtualenv это использование пакетного менеджера Python - PIP. Он достаточно прост как по логике работы, так и по использованию. Так, при попытке установить пакет в virtualenv он будет тянуть каждый раз исходники с PyPi-репозитория (или с другого места, если его об этом попросили). Иногда этот процесс может занять достаточно много времени: если надо скачать много пакетов или некоторые из них скачиваются не очень быстро (например, стянуть большой репозиторий с github, помнится, ещё почему-то django скачивалась не очень шустро). Читать далее...