Показаны сообщения с ярлыком python. Показать все сообщения
Показаны сообщения с ярлыком python. Показать все сообщения

22 апреля 2008

Пугливый питон

File "/usr/lib/python2.5/encodings/koi8_r.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position 19: character maps to

Знакомо? А всё потому, что какой-то имбецил решил, будто мне, как пользователю, будет очень приятно, если программа, автор которой не подозревает о существовании кодировок, отличных от utf8, будет валиться из-за того, что стандартный модуль написан по принципу юнит-теста "Fail first".
А вот ежели заменить в этом пресловутом koi8_r.py errors на 'ignore' (то есть независимо от того, как предполагает это делать разработчик, игнорировать все ошибки), то всё работает (грязный хак, ибо накипело). "Выполняется любой ценой", что и есть, мать их, правильное поведение для пользовательского приложения.
Вот представим себе ушастого, вчера оторвавшегося от подола матушки-винды, пользователя. Запускает он программу, а там такое. Плюнул, ушёл. Или полез докапываться до истины, написал разработчику. Тот ни в зуб ногой, типа моя твоя не понимайт. И он таки прав, у него такая ситуация принципиально не возникает, потому что он, например, говорит на iso-8859-1. Плюнул, ушёл.
Ненавижуидиотов.

05 февраля 2008

Gpodder 0.10.4+svn и mp3 плеера

Допилил таки в Gpodder'е синхронизацию с плеерами на ФС vfat. Теперь он для меня окончательно стал полностью пригодным к использованию. Остаётся ещё много недоделок с usability, но это уже не ко мне, я GTK никогда в руках не держал.
Патч сделан на основе ревизии 560, желающие могут проследовать в wiki или подождать официального среза.

18 января 2008

Цели и средства

Is it possible to have the performance of C and C++ and the programmer productivity of modern programming languages such as Ruby and Python in a single language? That is the question Walter Bright, the author of the Zortech C++ compiler and the Digital Mars C/C++ compiler, asked himself when creating a successor to C++: Digital Mars D, a practical programming language first released exactly one year ago that helps you get the job done quickly.

From.
Читаешь такое и сразу хочется укусить автора в глаз. Потому что сравнивается опять мягкое с тёплым, но так, что тёплое по всему выходит круче. Между тем, цели, которые ставятся перед гибкими змеюками и многогранными камнями, сильно отличаются от оных у приплюснутых языков. Равно как и пути их достижения. И такие вещи, как inline явно подчёркивают, что одно другое не заменяет.
А к вопросу о простоте - внешняя простота Ruby (как, наверняка, и Python'а) обманчива. Да, если посмотреть на книги в стиле X - мой первый язык, то Pragmatic Programmers Learn to Program от Chris Pine выгодно отличается от первых изданий Страуструпа по C (или от последних по C++). Однако при дальнейшем рассмотрении обнаруживаются штуки, которые отравленным цпп сознанием не сразу и разберёшь.

Верно и обратное. Кажущаяся сложность и дотошность C/++ при использовании всевозможных библиотек может быть весьма сглажена. А мелочи вроде обьявлений типов... давно уже стали рефлексом.

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

06 января 2008

Mix it

Довольно интересная точка зрения на будущее использования различных языков. Ola Bini, как и Microsoft, идут хоть и разными, но схожими путями, в то же время недавно три года исполнилось проекту, реализующему "полиглотную разработку" в родном руби окружении.
Мне кажется, это идеальный способ послать подальше всех холиворщиков и писать на том, на чём хочется и что больше подходит. Потому что в конце концов только один остаётся лишь в фильме горец, а языки плодятся и множатся, и одного идеального не будет никогда.

30 декабря 2007

Про Python и работу с не unicode файловыми системами

Для хранения текстовой информации используется unicode, это аксиома.
Однако, бывают ситуации, когда это невозможно. Простейший пример - ФС вроде vfat, которые не только не поддерживают юникод, но и имеют определённые ограничения на имена файлов (подробнее - тут). Несмотря на это она повсеместно используется во всевозможных девайсах от USB Mass Storage или, проще говоря, флэшек и заканчивая кпк и фотоаппаратами.
Обходится это достаточно просто, вот кусок кода на питоне:

enc = os.environ['LANG'].split(".")[1]
str = re.sub('[|?*<>:+\[\]\"\\\]*','',str.encode(enc,"ignore"))
Я это использовал для приведения имён файлов к своей локали для дальнейшего копирования на смонтированную флэшку.
Happy coding!

20 декабря 2007

Про Python

Недавно ковырял одну программу, написанную на питоне, для добавления туда необходимого мне , но не предусмотренного автором функционала. Оставив в стороне свою неприязнь к питону как к языку, как истинный гик залез в код и дописал (отослав разработчику патч, конечно же, ave Open Source). И подумал - а не пересмотреть ли мне своё отношение к питону? Благо и преимуществ у него хватает, и кроссплатформенность связок питона с GTK, QT и wxWidgets всегда на руку, да и допиливание той самой программы не сильно меня напрягло. И совсем уж было решил взяться за изучение (ну или хотя бы запланировать таковое на будущее), да наткнулся на статью. И как-то пыл остыл, сомнения вернулись.
Видна какая-то неряшливость в реализации вроде бы очевидных операций в языке, отсутствие какого-то строгого единого дизайна.
Подожду, пожалуй, питона 3.0. Может быть, и возьмусь.