Пользователь
Python: метапрограммирование в продакшене. Часть первая
Многие считают, что метапрограммирование в Python излишне усложняет код, но если использовать его правильно, то можно быстро и элегантно реализовать сложные паттерны проектирования. Помимо этого, такие известные Python-фреймворки, как Django, DRF и SQLAlchemy, используют метаклассы, чтобы обеспечить легкую расширяемость и простое переиспользование кода.
В этой статье расскажу, почему не стоит бояться использовать метапрограммирование в своих проектах и покажу, для каких задач оно подходит лучше всего. Еще больше о возможностях метапрограммирования можно узнать на курсе Advanced Python.
Python: метапрограммирование в продакшене. Часть вторая
Мы продолжаем говорить о метапрограммировании в Python. При правильном использовании оно позволяет быстро и элегантно реализовывать сложные паттерны проектирования. В прошлой части этой статьи мы показали, как можно использовать метаклассы, чтобы изменять атрибуты экземпляров и классов.
Теперь посмотрим как можно изменять вызовы методов. Больше о возможностях метапрограммирования вы сможете узнать на курсе Advanced Python.
Как сделать функции на Python еще лучше
Поскольку очень не хотелось оставлять в тексте важный термин латиницей, мы позволили себе перевести слово «docstring» как «докстрока», обнаружив этот термин в нескольких русскоязычных источниках.
Автоматизация тестирования с нуля. Часть 1
Хочу рассказать об опыте построения системы автоматизации тестирования, когда на проекте или совсем нет тестирования, или ее степень минимальная.
Надеюсь статьи будет полезна начинающим автотестерам.
- В первой части пофилосовствуем в общем про подход.
- Во второй части (Часть 1) на примерах сделаем проект автотестов на JAVA + научим быстро тестировать API.
- В третьей части дополним проект для UI тестирования, сделаем параллельное выполнение тестов.
Конференция про Python и про общение
Хотя, подождите, не спешите перескакивать на следующую тему. На картинке выше написано: «Профессиональная конференция» — то есть, предназначена она для профессиональных разработчиков. Но гостями мы видим не только собственно Python-разработчиков, но еще программистов, преимущественно использующих другой стек, но заинтересованных в возможностях Python для вспомогательных задач. Последним должны зайти доклады, например, про Apache Kafka, Wagtail, SQLAlchemy или линтеры.
Колония. Глава 1: Пробудившаяся жизнь
Ветер гулял по взлетной площадке, закручивая и унося за собой пыль и мелкий мусор. Сегодня он был сильнее обычного, что неудивительно – близилась буря. Во всяком случае, последний прогноз, сделанный два дня назад, утверждал именно это.
– Да уж, тут неплохо было бы прибраться, – подумал Райтнов, бросая взгляд вокруг.
Но робот-мусорщик был неисправен, а самому собирать мусор не хотелось. Да и не было в этом смысла. Сейчас все силы необходимо было бросить на ремонт ровера – последней надежды выбраться отсюда.
Райтнов посмотрел на часы. Шел восьмой час, а это означает, что поспать удалось лишь три с небольшим часа. Что ж, немногим больше, чем вчера. До темноты оставалось пятнадцать часов – конечно, этого едва ли достаточно, чтобы в одиночку починить ровер, но других вариантов нет. Выбраться отсюда можно только на нем. Но перед тем, как взяться за дело, нужно было сделать еще кое-что. То, что Райтнов делал каждый день без исключений последние три месяца, – с того самого дня, когда прибыл на эту планету в составе экспедиционной группы.
Создатель мультфильма «Крепость» представил «Последний день войны»
Без малого три года назад Дмитрий Федотов выпустил впечатляющую работу, короткометражный мультфильм под названием «Крепость». Чтобы вспомнить о чем речь, вот сам мульт:
Сюжет таков: «Фильм притча, фантастика. Прошло 10 лет с начала последней войны. Люди постепенно выбывали из строя и автопилоты брали на себя часть их функций, вплоть до полного замещения. Теперь, когда все живое мертво, роботы продолжают бессмысленную войну в автоматическом режиме. В этом мире, гильза кассетной бомбы объемного взрыва стала крепостью для травы, а самолет стал крепостью и могилой для пилота. Любая система созданная человеком, как бы велика и совершенна она ни была, разрушится без него. Природа же — будет созидать даже на руинах».
Сохранение данных Google Reader
Найденные решения, в том числе и на хабре(здесь и здесь), не подошли в основном по двум причинам: нет возможности сохранения в БД и медленная скорость работы. Пришлось собрать свой велосипед — grbackup, который
grbackup -e fake@gmail.com -p password -ba -o mongodb://localhost:27017 -w 20
за 20 минут сохранил 328250 записей из 102 подписок в локальную БД MongoDB.
Основные возможности:
- сохранение всех записей, которые можно получить при помощи Google Reader API
- сохранение записей в различные хранилища
- использование формата идентичного тому, что отдает Google Reader через API
- параллельное получение/сохранение записей
- расширяемость: возможность добавить новый вид хранилища
Доступные виды хранилищ определяются расширениями(плагинами) и задаются при помощи опции (-o, --output) вида type:uri.
На момент написания статьи доступны следующие расширения:
- simple: вывод в терминал (используется только в режиме просмотра)
- json: запись в json-файл (json:/path/to/file.json)
- mongodb: запись в MongoDB (mongodb://[username:password@]hostN[:portN]]][/[db][?opts]])
- redis: запись в Redis (redis://username:password@host[:port]/dbindex)
Работоспособность проверена на Ubuntu(64) и Win7(64).
Книгу предложений и замечаний можно найти здесь.
Ниже находится подробное описание утилиты.
Ebay. Украина. О таможне и пересылках — 2012
Вчера вечером со мной неожиданно связался aevdox и сообщил, что, во-первых, ему пишут, что информация 2010 года устарела и было бы полезно привести статью в актуальное состояние, во-вторых, он готов стать моим хабрапапой. Таким образом и получился этот пост. Далее по тексту я предполагаю, что читатель уже знаком с первоначальным постом и воспринимает этот как его логичное продолжение.
А теперь к сути. С принятием в 2012 году нового Таможенного кодекса Украины (далее – ТК) и его вступлением в силу информация в статье «Ebay. Украина. О таможне и пересылках» сразу же безнадёжно устарела. Прежде всего потому, что новый кодекс отменил нормативно-правовые акты, на которые я ссылался в своём дополнении (Закон № 2681-III, Постановление Кабмина № 1652), и теперь эти отношения регулирует сам кодекс. Регулирует он их уже иначе. Я попытался разобраться с тем, что же изменилось для нас, простых покупателей с Ebay, и соответственно актуализировать информацию в статье.
Если вкратце – «жить стало легче, жить стало веселей».
Обновленный Raspberry Pi с 512 МБ ОЗУ по прежней цене
Сейчас на рынке компьютерных устройств представлено достаточно много мини-ПК. Но самым известным мини-компьютером является, без сомнения, Raspberry Pi. Как известно, стоимость этого устройства составляет 35 у.е., и это полноценный ПК, который способен выполнять широкий ряд задач. Если вы планировали приобрести Raspberry Pi, но пока не сделали этого, самое время сделать заказ обновленной модели. Разработчики предлагают теперь модель с 512 МБ ОЗУ вместо 256, по прежней цене в 35 долларов США.
Китайцы ворвались на рынок мини-компьютеров
У Raspberry Pi и Cotton Candy появился китайский конкурент. Компьютер размером с флешку стоит 74 доллара — как раз посередине между Raspberry Pi (25 — 35 долларов) и Cotton Candy (200). Внутри — одноядерный процессор ARM Cortex A8 AllWinner A10 1.5GHz, графический чип Mali 400, 512 мегабайт DDR3 RAM и 4 гигабайта встроенной флеш-памяти. Есть полноразмерный слот USB, microUSB, кардридер micro TF, порт HDMI и беспроводной модуль WiFi 802.11b/g. Размеры «китайца» — 8.8 х 3.5 х 1.2 см, вес — 200 граммов.
Обзор программ для web-разработки на android
Bash-script с gui для проигрывания видео из Vkontakte в обычном плеере
Поэтому ( а еще потому, что в плеере Vkontakte отсутствует playlist, и это заставляет отвлекаться от основного занятия, когда заканчивается серия), взвесив все плюсы и минусы и посмотрев на исходный код страниц с видео, я понял, что в большинстве своем, они не сильно отличаются, и возможностей bash вполне достаточно, для реализации родившейся идеи — всё, что требуется для получения со страницы ссылки на видео — подобрать необходимые регулярные выражения и разобрать полученные wget-ом данные с помощью стандартных команд, таких как grep, sed и tr.
Операция «посредник» или доставка товаров из США — проще, надежнее, дешевле
Новый бюджетный 3D принтер
Появляются всё новые 3D принтеры в семействе RepRap. Printrbot был разработан с целью сделать принтер дешевым, максимально простым в сборке, а значит доступным широким кругам. Девиз проекта — "Printrbot — твой первый 3D принтер". Забегая вперед — планируемая цена на базовую модель 549$.
Карманный роутер Sapido RB-1632
Не могу не поделиться восторгом от недавно купленного устройства.
Роутер, несмотря на свои размеры, имеет множество функций. Помимо стандартных Ethernet -> Wi-Fi, может выступать wifi-клиентом, имеет USB-хост для подключения модема и смартфонов, может одновременно создавать несколько Wi-Fi сетей с разными настройками и прочее. Питается при помощи USB либо от адаптера.
Broadcom Crystal HD: аппаратное ускорение HD видео «от А до Я»
Думаю, многие знают, что HD (720p) H.264 видео так просто на нетбуке не посмотришь. Мощности Intel Atom просто не хватает на декодирование. Я использую свой Acer Aspire One в качестве видеоплеера во время командировок и длинных поездок и тоже с этим сталкивался. Есть несколько способов решить эту проблему:
- перекодировать с более низким разрешением/битрейтом
- использовать программные ухищрения
- использовать аппаратное ускорение
Первый способ слишком медленный и унизительный (т.к. типичен для портативных плееров вроде iPod и т.п.).
Второй — не универсален и ограничен. Мне известны два способа — установка кодека CoreAVC и опережающий воспроизведение буфер Crystal Player-а (см. Настройка нетбука на максимальную производительность для HDTV). В принципе, это вполне сносное решение для 720p. Однако, есть два больших минуса: 100% загрузки процессора и полная несостоятельность в случае с 1080p.
Третий кажется мне наиболее «правильным». Можно сразу купить нетбук с Nvidia ION — универсальное решение, которое дает дополнительные плюшки вроде вычислений CUDA и возможности играть в 3D игры (впрочем, удовольствие на маленьком экранчике сомнительное). К сожалению, Nvidia ION-powered нетбуки появились лишь недавно и пока еще дороги. Да и что поделать, если уже купил себе нетбук без всяких «понтов»?
Есть выход! Называется он Broadcom Crystal HD, и «ускорить» им свой EEE PC или Aspire One вполне реально и дешево.
Как мне стало удобнее жить
Я долго пытался написать текст, который понравился бы вам. Который бы передал всю радость, которую испытываю я. Но в виду того, что из меня хреновый литератор, поэт и человек, я не смог написать ничего приемлимого. Поэтому я просто начну сумбурное изложение.
На дворе 21-ый век, и в головах каждого из нас хранится море информации. Ежедневно мы сталкиваемся с множеством информации. Лично я «потерял» множество интересных ресурсов, лишь потому, что не мог заставить себя занести ссылку в бук-марки :) Я постоянно терял море паролей. Я постоянно забывал сделать море дел.
И вот, в один день я узнал о существование to-do сервисов (todoist.com / ремемберthemilk и тд.). И кажется это было то, что мне нужно. Но и тут я ошибался. Мне кажется, что опираться только на todo-листы слишком скучно :) Хочется чего-то большего. Хочется и ссылку записать в конце концов :)
И вот, каким-то чудом я узнал о супер-решении: Emacs+org-mode :) Не стоит пугаться и полагать, что это решение для супер-гиков. Я же разобрался, значит разберется и любой другой ;)
Написание расширения для Оперы и Хрома: взгляд на процесс
Как многие из вас помнят какое–то время назад Гугл во второй раз спрятал ссылку на Ридер, заменив ее ссылкой на Фотографии. В первый раз это вызвало волну недовольства пользователей и Гугл вернул все назад, сославшись на ошибку. Тогда, сразу же, появилось расширение для Хрома, возвращающее ссылку на Ридер. Я портировал это расширение для Оперы.
Когда второй раз Гугл перенес ссылку, волна возмущения уже была не такой сильной. Сначала мне даже показалось, что никто не обратил внимания. Сообщество было занято более важными новостями. Но появилось обсуждение на форуме поддержки Гугла и даже официальный ответ о том, что Гугл всегда стремится улучшить свои продукты и такое улучшение может приводить к действиям подобным случившемуся с ссылкой на Ридер. Я вспомнил про свое расширение, расчехлил запылившийся код и решил сделать расширение более приятным и более осмысленным. А именно — дать пользователю возможность задавать структуру ссылок самому. Расширение должно динамически выдергивать все ссылки со страницы, показывать их пользователю в виде двух колонок и позволить перетаскивать их мышкой. Оказалось, что для Хрома такого расширения тоже не было и дополнительно я задался идеей написать два расширения с общим кодом.
Информация
- В рейтинге
- Не участвует
- Откуда
- Херсон, Херсонская обл., Украина
- Дата рождения
- Зарегистрирован
- Активность