Архив

Архив автора

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

PySide - одна из библиотек биндингов к Qt, альтернатива PyQt. Разница между ними несущественная и код написанный под PyQt может работать почти без изменений под PySide. Основное преимущество PySide - использование LGPL лицензии против GPL PyQt, которая (LGPL) более "либеральная" и позволяет использовать линковку из проектов с закрытым исходным кодом.

Читать далее...

HTTP: Список кодов ответов и их описание.

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

Код состояния ответа на HTTP запрос содержится в его заголовке и информирует о результате запрошенного действия и о том, что клиент должен предпринять далее. Возможно, не все знают как выглядит заголовок ответа сервера, но наверняка каждый, кто пользуется интернетом, встречался со страницей 404 Not Found или 403 Forbidden. Впрочем, далеко не обязательно, что эти страницы имеют соответствующий HTTP заголовок, но, если строго следовать стандартам, - должны.

Читать далее...

WordPress: Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.

25 апреля 2013 40 комментариев

Как-то обновлял одну тему на сайте на WordPress, но вот забыл что права у директории слетели. В итоге, в очередной раз нажимая F5, увидел следующее сообщение:

WordPress: Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.

Читать далее...

Nginx: Как пофиксить редирект а админке Joomla.

19 апреля 2013 2 комментария

Продолжаю ковырять в Joomla. В целом, впечатления пока не очень: постоянно какие-то проблемы, "белый экран смерти" (когда вместо сайты вы видите пустую страничку), загромаждённый и не очень удобный интерфейс. Но, может, это я просто с непривычки думаю что это всё выглядит через чур запутанно и усложнённо.

Читать далее...

MySQL: Вывод select’а вертикально.

18 апреля 2013 Нет комментариев

Давненько не использовал консоль mysql'а для вывода результатов вертикально.

Читать далее...

Nginx: Joomla всегда отдаёт главную страницу.

17 апреля 2013 Нет комментариев

Никогда раньше не работал с Joomla, но вот возникла необходимость поднять готовый сайт на своём хостинге на связке Nginx + php-fpm + Joomla. Скопированный конфиг от wordpress'а подошёл, вроде бы сайт завёлся. Только на слудющий день я обнаружил что он отдаёт на любую ссылку главную страницу.

Читать далее...

WordPress: На пути к валидному html5 или как пофиксить «rel=”category tag”» у тегов.

15 апреля 2013 Нет комментариев

Решил подчистить ошибки в html-коде этого бложика. Половина ошибок ушла с помощью перехода с XHTML на html5, но, как обычно это бывает, появилось и кое-что новое. Так, ссылки на теги имеют атрибут:

rel="category tag"

Который заботливо генерит WordPress и который не является валидным для html5.

Читать далее...

Django: Решение проблемы с кириллицей при использовании slugify.

14 апреля 2013 1 комментарий

Далее следует более-менее подробное описание проблемы и фикса. Если о проблеме вы в курсе и вас интересует только решение - смело листайте в конец поста.

TL/DR;

В django есть функция для генерации т.н. slug'ов. Перевести одним словом этот термин достаточно сложно, но, кто имеет хоть какой-то опыт работы с django должен знать что это такое. Если раскрыть суть - часть ЧПУ (человеко-понятного URL), которая относится к заголовку сущности. Например, slug для этого поста в терминах django было бы таким: "django-fix-non-latin-slugify" (если я не поменял URL записи после написания этих строк).

Читать далее...

Flask: Создание root-пользователя в flask-security и установка хешированного пароля.

10 апреля 2013 Нет комментариев

Вкратце:
Flask - micro web framework. По сути, тонкая обёртка вокруг wsgi-сервера werkzeug.

Flask-Security - расширение (extension) для flask, которое реализует возможность аутентификации и авторизации ("входа на сайт", другими словами - логина), регистрации пользователей. Flask-Security сам по себе использует другие сторонние расширения для реализации нужного функционала (например: flask-login для логина, flask-wtf для обработки форм).

Задача: во время инициализации БД создать пользователя с паролем. Примерно как это делает Django при первом syncdb с подключенным приложением django.contrib.auth.

Читать далее...

Python: Объяснение работы yield, итераторов и генераторов.

9 апреля 2013 8 комментариев

Основной источник для этого поста - вопросы и ответы на stackoverflow.

Для понимания что делает "yield", вы должны понимать что такое генераторы. Для понимания что такое генераторы - должны знать об итераторах и итерируемых объектах.

Читать далее...

Linux: Как ускорить вставку большого объёма данных в sqlite3?

К сожалению, мой первый и, пока, единственный SSD-диск сдох около месяца назад, а вот возможность где бы он мог проявить всю свою мощь появилась буквально только что. Мне предстояло импортировать достаточно большой объём JSON-данных в БД на sqlite3 через Django, а именно - надо было перенести около 150MB в эту БД (для sqlite3 это достаточно много, на мой взгляд). Код импорта я писал сам, поэтому его ещё предстояло отладить, писать тесты почти бесполезно, т.к. исходные данные были не идеальные и не всегда консистентные, ошибки исходных данных находились и обрабатывались индивидуально. Читать далее...

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

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

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

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