Понадобилось тут дёрнуть все привязанные к карте во Фликере фотки назад на компьютер, причём так, чтобы геотеги как-нибудь сохранились в EXIF.
Наваял небольшой скриптик ffg.py, который использует Python FlickrAPI и сохраняет все фотки с геотегами из аккаунта в локальной папке. Для записи геотегов я не нашёл ничего лучше, кроме как генерировать кучку вызовов exiv2(1) (мощная утилита для работы с EXIF, IPTC, XMP — всякими метаданными в фотках, короче; можно было бы юзать и какой-нибудь exiftool(1)).
То есть, юзается так:
./ffg.py --photos-directory=~/flickr-photos/ --exiv-script=~/flickr-photos/exif.sh
(в браузере появится запрос на подтверждение из Flickr)
А потом проставляем геотеги:
sh ~/flickr-photos/exif.sh
Можно грузить на Panoramio, там геотеги из EXIF подцепляются автоматически, чего не скажешь о Flickr — из-за этого и приходится извращаться.
Не имея готовых GPS-данных сегодня не так уж много путей по привязке фотографий к местности. Если не считать Веб-решений (Flickr, Panoramio), между которых без костылей типа описанного скрипта нет взаимозаменяемости, остаётся только digiKam (спасибо AP, подсказавшему о существования этой фичи), в котором используется Marble widget.
Микроформаты — это хорошо, просто и понятно.
Как можно извлечь микроформатированный контент из документа и сделать с ним миллион классных штук?
Удобно для запросов в XML-документе на извлечение микроформатированного контента использовать выражения XPath.
Читать далееДолгое время на месте дат постов здесь выводились фразы, лишь временами верные грамматически, типа «5 недель назад», «1 недель назад», a то и вовсе «2 дней назад». Джанговский фильтр timesince лишь берёт перевод английских «weeks» или «days» из локали системы, где не предусмотрена поддержка падежей.
Органично также смотрятся даты вроде «2 марта» или «15 мая», но
фильтр
date
при передаче F в составе форматирующей строки возвращает имя
месяца в именительном падеже без возможности склонения. С днями
недели то же самое.
Можно переделать перевод Django на свой лад (там используется gettext), однако есть весьма приятный пакет PyTils для Python, который встраивается в том числе и в Django, предоставляя функции для работы с русским языком.
После установки в Django становится возможным использовать
вкусные плюшки. Во-первых, russian-aware фильтры форматирования
даты — ru_strftime и ru_strftime_inflected. Такой код:
{{ entry.add_date|ru_strftime:"%d %B" }}
выведет дату в виде «19 марта».
На замену встроенному в Django фильтру timesince приходит distance_of_time:
{{ entry.add_date|distance_of_time }}
выведет дату в виде «5 дней назад».
Есть также славная работа с числами. choose_plural выбирает правильное окончание в зависимости от числа (варианты передаются как для чисел 1, 2, 5):
Всего {{ hits }} запис{{ hits|choose_plural:"ь,и,ей" }}
выведет текст «Всего 5 записей» или «Всего 121 запись».
Есть и несколько других приятных возможностей.
Вчера с утреца попедалил на велосипеде, употелся, уже через 2 с половиной часика с языком на плече припёрся домой.
Написал на Python программку, помогающую смотреть телевизионные каналы в сети Corbina Telecom без браузера. Работает хитро: открывает соединение с веб-сервером, из полученной странички вырезает уникальную ссылку на видеопоток вида mms://blah-blah-blah и передаёт её в mplayer для просмотра. Для гуя используется PyGTK+glade; также задействованы модули urllib и re для выдёргивания адреса.
Сегодня ночью что-то не дрыхлось. Писал в блокноте тексты на пыхпыхе для своей новой системы. Потом проснулся снова от жуткой грозы (спросонья вообще не мог разобраться поначалу, что происходит). Потом к утру по телефону прозвонился какой-то хмырь и разбудил всех.
Увлёкся фракталами наконец. Фракталы — удивительные структуры, главным свойством которых является самоподобие. Фракталы бывают разные, геометрические, алгебраические, стохастические.
Самыми, на мой взгляд, простыми для понимания являются геометрические фракталы. Получаются они при помощи изменения исходной фигуры по определённым правилам и применения этих правил к получившимся фигурам некоторое количество раз, которое по определению фрактала стремится к бесконечности, а на практике же для визуализации ограничивается. Геометрические фракталы наиболее наглядно демонстрируют самоподобие фракталов.
Чтобы было понятнее, вот здесь можно посмотреть на изображения геометрических фракталов: здесь и здесь
Алгебраические фракталы строятся при помощи применения определённых формул к числам, в основном комплексным.
В интернете море примеров изображений разных фракталов, достаточно в любом поисковике ввести «фрактал» и посмотреть по ссылкам.
Фракталы имеют широкое практическое применение, в частности при визуализации сложных природных случайных объектов: деревьёев, береговых линий и т.п.
Меня заинтересовали алгоритмы построения простейших геометрических фракталов.
Реализовал на Python с использованием PIL построение простейшего фрактала — треугольника Серпиньского. Получилось здорово, алгоритм универсален для любого исходного треугольника, можно раскрашивать треугольники одного поколения в один цвет или красить всё случайным образом. Чистых source lines of code — 43.
Начал изучение Python. Очень приятный язык, простой, понятный, много модулей. Освоил glade - замечательно. Как появится много времени, можно будет реализовать ряд интересных идей на Python + PyGTK + glade.