Как стать автором
Обновить
6
0

Пользователь

Отправить сообщение

Пайпы, the pythonic way

Время на прочтение3 мин
Количество просмотров18K
Одни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ля
xs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то так
result = [x for x in range(100)] \
    | where(lambda x: x % 3 == 1)) \
    | sum \
    | my_function

Не в Питоне?
Зря так думаете...
Всего голосов 83: ↑81 и ↓2+79
Комментарии81

GitHub Reflog v1.4.12

Время на прочтение2 мин
Количество просмотров1.1K
Добро пожаловать в четвертое издание GitHub Reflog — еженедельную хронику замечательных репозиториев на GitHub и активности сообщества. Предыдущие изданиях можно получить в архиве Reflog.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии8

Plasma Active для портативных устройств

Время на прочтение3 мин
Количество просмотров5.1K
В рамках проекта Plasma Active подготовлен начальный прототип новой концепции организации пользовательского интерфейса для широкого спектра встраиваемых устройств, выходящих за рамки обычных ноутбуков и ПК, например, для интернет-планшетов, медиацентров и смартфонов. Ключевым направлением разработки новой оболочки является развитие средств для обеспечения интерактивного, насыщенного и удобного интерфейса пользователя.

image

Под катом изображения интерфейса, а также видео
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии36

Как я боролся с кодировками в консоли

Время на прочтение6 мин
Количество просмотров172K
В очередной раз запустив в Windows свой скрипт-информер для СамИздат-а и увидев в консоли «загадочные символы» я сказал себе: «Да уже сделай, наконец, себе нормальный кросс-платформенный логгинг!»

Об этом, и о том, как раскрасить вывод лога наподобие Django-вского в Win32 я попробую рассказать под хабра-катом (Всё ниженаписанное применимо к Python 2.x ветке)
Читать дальше →
Всего голосов 63: ↑56 и ↓7+49
Комментарии35

Issues 2.0: Новое поколение

Время на прочтение2 мин
Количество просмотров8.8K
image

Система управления проектом: последний рубеж. Почти два года назад в этот день, GitHub запустил трекер задач (issue tracker). Некоторые люди его полюбили, некоторые люди возненавидели его, — но давайте не будем обращать внимание на прошлое (мы живем в будущем, так как наше настоящее в прошлом). Давайте поговорим о версии Issues, которые запускаются сегодня.
Читать дальше →
Всего голосов 98: ↑93 и ↓5+88
Комментарии29

Многопоточное приложение под Tornado

Время на прочтение5 мин
Количество просмотров38K


В документации к неблокирующему вебсерверу Торнадо красиво расписано как здорово он справляется с нагрузкой, и вообще является венцом творения человечества в области неблокирующих серверов. Отчасти это верно. Но при построении сложных приложений за рамками «еще одного чата» выявляется много неочевидных и тонких моментов, о которых желательно знать до вояжа по граблям. Под «катом» разработчики клуба интелектуальных игр Трельяж готовы поделиться своими мыслями о подводных камнях.
Читать дальше →
Всего голосов 70: ↑66 и ↓4+62
Комментарии28

О стандартах документации

Время на прочтение4 мин
Количество просмотров97K
Документация – такая штука, к которой мало кто питает тёплые чувства: скучно, занудно, однообразно. И, тем не менее, иногда не возникает сомнений в её необходимости: ведь кому-то после вас этим пользоваться или, тем паче, модифицировать. И тогда появляется вопрос: как сделать документацию правильно?

Существует тьма статей на тему «как писать документацию», но если вы решили взяться за неё в первый раз, то в новой для вас области не сразу понятно, дело ли пишет автор, или отсебятину выдумывает.

Для того чтобы сформировать своё мнение без перелопачивания статей, можно пойти двумя путями: довериться некому авторитету или посмотреть в стандарты – уж там-то с наибольшей вероятностью проблему обдумали со всех сторон.

Читать дальше →
Всего голосов 78: ↑74 и ↓4+70
Комментарии46

CSS Pivot: платформа для совместного дизайна веб-сайтов

Время на прочтение1 мин
Количество просмотров3.2K
Многие пользуются различными плагинами, чтобы улучшить внешний вид любимых сайтов: избавить их от рекламы, поменять дизайн и т.д. Например, есть хороший плагин Stylebot для Google Chrome. Всё это замечательно, но только одна проблема: результатами своей работы по изменению дизайна сайта вы не можете легко поделиться с другими. Сервис CSS Pivot (от разработчиков Stylebot) призвана решить эту проблему.

CSS Pivot позволяет применить собственные стили CSS к любому сайту — и поделиться этим URL с другими людьми. Не требуется ни установка расширений к браузеру (то есть работает в любом браузере), ни регистрация в сервисе. Сайты грузятся в iframe.
Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии14

PhantomJS: Webkit в консоли

Время на прочтение2 мин
Количество просмотров124K
image

PhantomJS это все плюшки WebKit из консоли с управлением на JS и поддержкой различных стандартов и технологий: DOM, CSS, JSON, Canvas и SVG.

Внутри несколько примеров использования
Читать дальше →
Всего голосов 97: ↑91 и ↓6+85
Комментарии35

Наш опыт работы с Django, или 10 полезных модулей, облегчающих жизнь

Время на прочтение4 мин
Количество просмотров38K
Бесценный опыт работы с Django, или Django для блондинок, брюнеток и всех-всех-всехПоследние 15 недель мы активно работали над проектом «Стиллион», первым нашим мейнстрим-проектом, написанным на Django. Был приобретен интересный опыт, которым мы хотели бы поделиться с сообществом.
Статья, прежде всего, будет интересна новичкам в Django.
За катом список полезных плагинов, которые мы использовали, и ещё немного клёвых фич
Всего голосов 108: ↑100 и ↓8+92
Комментарии59

Lift: самый мощный и безопасный веб фреймворк из всех?

Время на прочтение4 мин
Количество просмотров8.7K
Весьма амбициозное утверждение можно увидеть на официальном сайте проекта. Там же предлагается в этом убедиться на примерах. Лично мне судить сложно, я пользовался только Java веб фреймворками, и то далеко не всеми. Поэтому я попробую рассказать об этом подробнее, а выводы пусть каждый сделает сам.



Самое важное, что нужно отметить — это отсутствие утверждения «лучший из всех». И это понятно, хотя бы потому, что Lift — сложнее большинства фреймворков. Во-первых, потому что он активно использует функциональную сторону Scala, во-вторых, потому что Scala — язык с сильной статической типизацией. Но, для тех, кто готов учиться, Lift — инструмент действительно адски мощный (знаю по опыту, последние несколько месяцев использую его в работе).
Читать дальше →
Всего голосов 67: ↑61 и ↓6+55
Комментарии67

Рисуем цветной кубик в Mayavi

Время на прочтение10 мин
Количество просмотров6K
Приветствую, хабравчане!

Сегодня хочу вам рассказать о том, что такое Mayavi и с чем его запивают его едят.

Mayavi — это кроссплатформенное приложение для визуализации научных данных (и не только). Распространяется по лицензии BSD, что позволяет использовать его в коммерческих приложениях.
image

Что умеет?
  • Строить 2D и 3D модели на основе скалярных/векторных данных
  • Открывать файлы VTK, PLOT3D
  • Сохранять результаты рендера в различных графических форматах
  • Может даже рендерить результаты MRI(Магнитно-резонансная томография)


Работать с ним можно тремя способами:
1) Работать непосредственно в интерфейсе Mayavi.
2) Подгружать/передавать в Mayavi уже готовые данные.
3) Написать питоновский скрипт, в котором можно задать для Mayavi все желаемые возможности.

Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии19

Простая библиотека для парсинга HTML

Время на прочтение2 мин
Количество просмотров10K
Недавно зарелизил Leaf, это небольшая библиотека для парсинга HTML на Python.
Она уже довольно долгое время покрывает все мои нужды в парсинге, но еще есть идеи для развития.
Эта библиотека по сути обертка над lxml, которая делает работу с ней гораздо приятней.
далее...
Всего голосов 59: ↑54 и ↓5+49
Комментарии27

Непрерывное тестирование питонопроекта

Время на прочтение7 мин
Количество просмотров24K
Программист зверь ленивый, поэтому всё, что будет делаться больше одного раза надо непременно заскриптовать.

Я уже некоторое время ковыряю TDD и задача постоянного контроля качества для меня становится всё актуальней. Особенно при пополнении команды новыми разработчиками.

Сначала я запускал тесты руками: save, switch, $ nosetests. Потом к тестам добавились проверялки качества кода и пришлось всё засунуть в скрипт:
pyflakes *.py
pep8 *.py
pylint *.py
nosetests


Скрипт запускать каждый раз ужасно лениво, поэтому небольшая оболочка на inotifywait стала запускать тесты и проверки после каждого сохранения:
while true; do
inotifywait -e modify project/*.py -qq; clear
./do_tests
done


Тут я стал более-менее доволен происходящим и даже на некоторое время расслабился. Но ведь программист кроме того, что ленив ещё и горд, поэтому результаты хочется кому-нибудь показать. Чтобы вести историю происходящего (которая очень помогает когда заходит начальник начальника и спрашивает: «ну-с, чем вы занимались последний месяц?») уже есть система контроля версий. Но она показывает только, что сделано и не даёт обзора успешности каждой ревизии. Получается что код лежит, но непонятно в каком он состоянии и что где ещё надо сделать.

Кроме того довольно тяжело следить за коллегами, которые тоже могут что-то сделать и забыть прогнать тесты, в результате в репозитории лежит битый код, не прошедший code review и при очередном pull может внезапно начаться clusterfuck.

И тут очень вовремя kmmbvnr@lj выпустил скринкаст, в котором он демонстрировал интеграцию тестирования для django-проектов с сабжем Jenkins (бывш. Hudson). Посмотрел я на все эти красоты, графики и отчёты и тоже захотел чтобы всё само пело и играло. Но у него django-jenkins, как и следует из названия, встраивается в джангу и генерит отчёты используя хитрую систему. Мой проект до джанги не дорос и скорее всего не дорастёт — это достаточно тривиальное WSGI-приложение, которое правда стремительно разрастается. Пришлось поднимать всё с нуля.

Воскресенье я на это убил, но в целом всё довольно прямолинейно и теперь у меня есть симпатичные отчёты:



Что внутри?
Читать дальше →
Всего голосов 61: ↑56 и ↓5+51
Комментарии20

Организация и оптимизация стилей

Время на прочтение9 мин
Количество просмотров24K
В этом посте я приведу пример организации стилей на типичном проекте.

Небольшое вступление, попробую объяснить актуальность проблемы и зачем это нужно.
Рассмотрим такую ситуацию. Разработчику ставят задачу, реализовать очередной функционал на сайте. Это допустим включает добавление новых разделов, блоков, элементов. Разработчики зачастую не доверяют чужому коду, и когда доходят до верстки, находят css-файл с названием типа main.css и дописывают в конец свои новые стили.
Проходит некоторое время, приходит новый разработчик, ему ставят подобную задачу, он если и пытается разобраться в стилях, то видит, что там нет никакой закономерности, и повторяет то же, что делали предыдущие.
Руководство ставит сроки, разрабатывается все новый и новый функционал, проект растет. В итоге css файлы превращаются в мусорку, сайт грузится дольше, появляется больше дефектов и т.д..
Я думаю, многим это знакомо.

Читать дальше →
Всего голосов 85: ↑70 и ↓15+55
Комментарии92

Используем console на полную

Время на прочтение6 мин
Количество просмотров458K
Метод console.log() — отличный способ вывести отладочную информацию, не мешая пользователю. Но знаете ли Вы, что объект console имеет еще уйму других не менее полезных методов? Очень редко разработчики используют этот функционал, ограничиваясь неблокирующим alert'ом. Что-ж, давайте исправим это положение.

Вкусности console
Всего голосов 172: ↑168 и ↓4+164
Комментарии29

Паттерн проектирования «Команда» / «Command»

Время на прочтение4 мин
Количество просмотров84K
Почитать описание других паттернов.
A

Проблема


Необходимо иметь эффективное представление запросов к некоторой системе, не обладая при этом знаниями ни об их природе ни о способах их обработки.

Описание


Существует по крайней мере три мотивации к использованию шаблона “Команда”:
  • инкапсулирование запроса в виде объекта для последующего протоколирования/логирования и т.п.
  • наделение сущности “вызов метода объекта” свойствами самостоятельного объекта;
  • объектно-ориентированный обратный вызов (callback);

Читать дальше →
Всего голосов 50: ↑42 и ↓8+34
Комментарии18

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Время на прочтение20 мин
Количество просмотров315K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Всего голосов 335: ↑318 и ↓17+301
Комментарии244

TOP'ай сюда

Время на прочтение5 мин
Количество просмотров180K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

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

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →
Всего голосов 401: ↑389 и ↓12+377
Комментарии122

Linux: запуск графических приложений в фоне

Время на прочтение3 мин
Количество просмотров61K
Приветсвую, коллеги!

— Вы хотите запустить linuxdcpp из консоли на домашнем компьютере находясь на работе?
— Вы хотите, чтобы он запускался сразу после загрузки системы, но не желаете использовать автологон?
— На вашем сервере есть программа, которая работает только в графическом режиме, но вы не хотите держать графическую сессию пользователя всё время включенной?

Если ответ хотя бы на один из вопросов «да», то эта статья для вас.

Читать дальше →
Всего голосов 89: ↑84 и ↓5+79
Комментарии28

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность