среда, 22 августа 2018 г.

Python: асинхронное веб программирование - наглядный и не обычный пример

О том что такое асинхронное программирование написано уже не мало, а вот о практических преимуществах как то не много. Ниже я покажу наглядный пример о том что это такое, как работает и почему это хорошо.

среда, 24 января 2018 г.

суббота, 16 декабря 2017 г.

Релиз расширения current TODOs для MS Visual Stido Code

Недавно сделал публичный релиз расширения для vscode которое занимается тем, что подсвечивает классические аннотации вида TODO: FIXME: и т.д. Также снизу в статусной строке ведется счетчик этих самых аннотаций по текущему открытому файлу.

Называется оно current TODOs и может быть установлено стандартным способом - через маркет расширений.

Проект с открытым исходным кодом доступен на github и распространяется под лицензией MIT.

История возникновения этого мини проекта такова...

вторник, 28 февраля 2017 г.

Python. Как перейти между внутренними циклами глубокой вложенности.

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


воскресенье, 18 октября 2015 г.

Python: модуль SymPy. Пример символьных вычислений.

SymPy - это обширный Python модуль реализующий символные вычисления. В качестве примера будет разобрана реальная математическая задача.

четверг, 3 сентября 2015 г.

Как маленькая деталь "убила" мой смартфон

Недавно случилось беда, мой смартфон Lenovo P780 начал самопроизвольно выключаться. На вид это выглядело просто - в хаотичный момент времени жизнь в нем моментально гасла. Это могло быть и после пары минут работы и во время старта загрузки. Типичный алгоритм решения проблемы начинается с понимания источника проблемы - программной или аппаратной. Так как никаких обновлений, софта или иных действий программной направленности не производилось, то решено было переключиться на аппаратную сторону проблемы. В интернете легко нашлась статья как без лишних проблем разобрать корпус и добраться до электронной начинки. После снятия всех нужных панелек был обнаружен свободно болтающийся маленький болтик. Тут на памяти вспоминается, что уже с год-полтора внутри телефона при тряске что то явно болтается. Но как маленький болтик так упорно мешает работе телефона? Может быть он замыкает какие то контакты и коротит телефон? Но почему только сейчас и так явно и постоянно? Несколько поразмыслив, наряду с этой версией, я выдвинул и вторую. Внутри телефона присутствует кнопка аппаратного reset'а, вполне вероятно что болтик закатывается и нажимает ее. Какой бы не была правильная версия виной всему маленький болтик, который по какой то причине открутился и отправился в свободное плавание внутри корпуса телефона.

суббота, 23 мая 2015 г.

Еще один сервис тестирования на знание Python

mypythonquiz - Небольшая серия тестов на знание Python, которая может освежить в памяти некоторые тонкости языка. Надоедливая видео реклама сбоку успешно ликвидируется Adblock расширением вашего браузера.

четверг, 23 апреля 2015 г.

Python: как обойти ошибку cx_freeze при сборке с модулем obspy

Попытка сборка на ОС Windows заканчивается ошибкой при выполнении программы "Import error: could not load shared library from obspy.signal". Я расскажу как быстро преодолеть эту ошибку.

пятница, 21 ноября 2014 г.

Отслеживаем завершение процессом загрузки CPU (для задач pywinauto)

pywinauto - это Python модуль для автоматизации процессов над графическим интерфейсом Microsoft Windows. Другими словамия, модуль позволяет эмулировать действия мыши и клавиатуры над объектами окна.

Порой случается такая ситуация что приложение выполняет какое либо трудоемкое задание, при этом не выдает никаких "внешних" признаков по которым можно было бы отследить средствами pywinauto факт завершения выполнения задачи. Использование простой задержки time.sleep() черевато проблемами, если таймаут наступит, а процесс все еще будет занят.
Все что мы знаем в такой ситуации это то что процесс потребляет ресурсы CPU, так почему бы этим не воспользоваться?

понедельник, 20 октября 2014 г.

Android: неожиданный сюрприз от ES Explorer

Недавно я обнаружил что на моем Lenovo P780 закончилась память, та что зовется встроенной. При условии что я ее целенаправленно не забиваю, пользуясь картой памяти мне это показалось странным. Подключив смартфон к домашнему ПК на базе Linux и воспользовавшись программой Baobab я довольно красочно пронаблюдал картину что 73% памяти отведено сюда /Android/data/com.estrongs.android.pop/tmp/remoteimg. Оказывается ES Explorer после шаринга через sftp не подчищал за собой временные файлы. В чем дело и разбираться не стал, просто буду иметь ввиду. P.S. Вообще полезно проверять программами наподобие Baobab свои телефоны, жесткие диски и т.д. порой хлам скапливается в местах неожиданных.

понедельник, 13 октября 2014 г.

Плата расширения ODROID USB IO

Эта небольшая заметка демонстрирует некоторые возможности платы расширения ODROID USB IO Board. Ядром которой является микроконтроллер PIC18F45K50-QFN.

пятница, 22 августа 2014 г.

Библиотека pysteim - реализация алгоритма сжатия STEIM (I,II) для формата файлов miniSEED

Со второй попытки, но таки был написан и теперь вышел в свет, написанный мною, Python модуль для работы с miniSEED файлами. pysteim в первую очередь реализует алгоритм сжатия STEIM применяемый в miniSEED файлах, которые в свою очередь, являются стандартом обмена данными в мировой сейсмологии и прочих геофизических направлениях. На данный момент в библиотеке реализовано чтение STEIM версии 1 и 2 и запись файлов в STEIM2.

Для удобства использование предоставляется класс miniSEED который берет на себя все рутинные операции по чтению блоков, возвращая желаемый результат.

Модуль доступен на Pypi, а значит может быть установлен в систему командой

pip install pysteim

Проект (включая тесты и образцы файлов) доступен на Битбакете

среда, 4 июня 2014 г.

Как скачать оффлайн карты для MapsWithMe!


Несколько неявная процедура, поэтому выкладываю здесь.
По данной ссылке на официальном сайте расположен архив с последними версиями оффлайн карт для различных стран мира. Скачиваем, ложись на карту памяти телефона (и т.п.), пользуемся.

воскресенье, 8 сентября 2013 г.

Запуск Python программы открепленной от консоли

Иногда бывает так, что нужно что бы программа выполнялась в фоне т.е. не была бы привязана к тому месту откуда была вызвана, например при написании демонов на UNIX системах и сервисоподобного ПО в Windows системах.

понедельник, 25 марта 2013 г.

Django: ошибка not enough arguments for format string


Столкнулся с проблемой при использовании Django и MySQL, которую подробно описал на созданном для этого баг тикете. В кратце, если вы захотите минуя ORM сделать запрос к БД вида

четверг, 28 февраля 2013 г.

Python: модуль signal. Перевод документации. Примеры.

Модуль предоставляет механизм использования обработчиков сигналов.

среда, 16 января 2013 г.

Радикальное решение скользкой подошвы ботинок Grinders - шипование.

Я не был в Англии, поэтому не знаю - то ли снега так мало, то ли дороги и тратуары чистят настолько хорошо, что разработчики обуви Grinders Bulldog 2 не уделили внимание проблеме сцепления подошвы в зимний период.

понедельник, 19 ноября 2012 г.

Python: PyE24lib - библиотека для работы с АЦП E24

По работе понадобилось мне сделать программу для работы с АЦП E24 фирмы L-Card. Железка общается по COM порту, описание протокола взаимодействия доступно


Исходный код: bitbucket.org/john_16/pye24lib

вторник, 23 октября 2012 г.

Python: rename.py небольшая программа для переименовывания файлов

Столкнулся однажды с задачей - необходимо из группы архивов извлечь файлы и сложить в одну директорию. Проблема оказалась в одинаковых именах разных файлов, в разных архивах. И тогда я решил написать небольшую программу которая бы помогла мне справиться с этим. Помимо выполнения основной задачи, данная программа писалась также ради дополнительного опыта программирования, использования системы контроля версий Mercurial и хостинга проектов BitBucket.

Исходный код, manual страница с подробным описанием, расположены здесь:

https://bitbucket.org/john_16/rename.py