Обновить
57
1.8

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

Отправить сообщение
по-моему, аналогичный эффект можно получить с помощью композиции функций. т.е. «идеалистический» код может выглядеть следующим образом:
wtf = compose([where(lambda x: x % 3 == 1),
               sum,
               my_function])

result = wtf(x for x in range(100))

удобно если планируется реиспользовать функцию, хотя немного громоздко для однострочников. «библиотека», в первом приближении:
from functools import partial

compose2 = lambda f, g: lambda *args, **kws: g(f(*args, **kws))
compose = partial(reduce, compose2)
where = partial(partial, filter) # %) ?

большое спасибо за подсказку: нашел ещё более замечательный ответ — недавно этот баг все-таки исправили, но релиза пока нет.

git clone git://github.com/ipython/ipython.git
cd ipython
python setup.py install

IPython 0.11.dev -- An enhanced Interactive Python
..
In [1]: u"привет"
Out[1]: u'\u043f\u0440\u0438\u0432\u0435\u0442'

:)
ipython замечателен. но при вводе юникода у меня возникает вот такой баг:
Python 2.7.0+ (r27:82500, Sep 15 2010, 18:14:55) 
IPython 0.10.2 -- An enhanced Interactive Python
..
In [1]: u"привет"
Out[1]: u'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'

чяднт?
никогда этого не делаю, но тут почему-то ужасно захотелось насрать тебе в плохую карму. остановился. передумал. жамнул ап. :)
на радикальное улучшение скайповского гуя в линуксе, надежд особых нет. поэтому пользуюсь чатом skype из Empathy, где есть вкладки. главное, чтобы продолжали развивать интерфейс через dbus. :)
то, о чем написано в преамбуле статьи ближе к TRADITIONAL mode, заставляющий сервер кидать исключения на большинство ошибкок. по возможности использую:

SET sql_mode ='TRADITIONAL,ANSI';
многое от реализации зависит. год тому назад сравнивал www.gnu.org/software/coreutils/ и heirloom.sourceforge.net/tools.html, и последние на отдельных юникодных тестах выигрывали в несколько раз.
на счет обучения вы отлично придумали! жду статьи от ваших интерфейс-дизайнеров про то, какие методы проектирования они используют, и как было принято самое удачное, на их взгляд, интерфейсное решение в 10-ке. хочется увидеть характеристики перснон, для которых они дизайнят (надеюсь, что это не геймеры-маньяки?), гипотезы из которых они исходили, пользовательские сценарии.

и, plss… выкиньте из продукта, всю хрень, которая вот нафиг не нужна для работы (почему я вынужден платить за неё? — я не маньяк и не геймер).
отправляйтесь в меню Сервис -> Опции на вкладку Распознать. Здесь в группе Обучение нужно установить флажок в положение Распознать с обучением и нажать кнопку Эталоны, которая вызывает диалог создания нового эталона…

Эти и другие интересные функции FineReader описаны в справке, поэтому рекомендуем вам иногда туда заглядывать.
любопытно, чем руководствовались проектировщики интерфейса, делая доступ к функциональности аж в 6 хопов?

наличие неочевидных возможностей это не плюс продукту, а минус его интерфейсу. в 10-ке он получился ещё более запутанным, по сравнению с 9-й версией. хотя, справка в FR чудесна: напоминает солюшен к компьютерной игре — для тех кто ниасилил разобраться в диалогах, или же застрял где-то на половине квеста. =)
откроется диалог Ручное обучение эталона с изображением этого символа

почему-то у автора статьи диалоги открылись на английском. неочевидно. ^)
заколебетесь переубеждать. ;) неожиданно вспомнится, что ключи могут содержать символы ], [ и $ (ни к то ж не утверждал обратного), а элементы с цифрами валидны только на третьем уровне.

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

задачкой проверяется то, насколько соискатель вообще адекватен. ведь дальше с ним придется работать вместе и доверять решение практических задач.

встречаются разные неудобные типажи. если претендент сразу бросается писать закорючки на php, — перед вами скорее «кодер». если начинает до упора мусолить постановку, значит — «формалист». ну и т.п.

в общем случае, лучше начинать с уточнения требований. ведь через 10 минут может выясниться, что строк в конфиге бывает over 9K, а памяти в обрез, ключи содержат юникод, и кучу т.п. причин, которые превратят весь ваш труд в бесполезную трату времени (кстати, отличный способ троллить «кодеров» :))

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

писанина на бумажке сильно отличается от привычного текстового редактора, т.к. не допускает вставок. для многих программистов это не привычно — нужно писать последовательно. но есть и плюсы — можно псевдокодить. короче, если подозреваете, что на собеседовании могут быть подобные упражнения, лучше потренируйтесь заранее, решив несколько головоломок из интернета именно на листочках.
не-а. мотаем на ус, как отслеживать распространение статьи в Сети. www.google.com/search?q=2101163379 =)
для qt есть варианты коммерческого лицензирования. если конечный продукт будет под пропиетартной лицензией (а не под lgpl/gpl), то проблем быть не должно.
Очень хотелось бы, чтоб какая-нибудь коммерческая организация бы взялась за релизацию этого порта и представила миру (пусть даже за деньги) Lighthouse плагин,

developer.qt.nokia.com/forums/viewthread/1759/ — как раз для lighthouse и, кажется, за деньги :)
многоголосный перевод. финальные титры. «Роли озвучивали: Шрек — Google, Осёл — Яндекс, принцесса Фиона — Аби». :)
даже для конференции по пайтон. :)
загрузчик html достаточно сообразителен, чтобы исправить ошибки, поэтому валидность не имеет особого значения — можно парсить даже полный бред:
$crazyHtml = 'd<dd';
$dom =new  DomDocument();
$dom->loadHtml($crazyHtml);
echo $dom->saveHtml();

другое дело, что алгоритмы исправлений могут отличаться у разных библиотек и браузеров, давая на выходе разные деревья. например php, этот пример интерпретирует вот так:
PHP Warning:  DOMDocument::loadHTML(): Couldn't find end of Start Tag dd in Entity, line: 1 in /tmp/a.php on line 3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>d</p><dd></dd></body></html>
здесь терминологическая путаница — понятие first-class object (aka значение) и object в ООП (который содержит свойства и методы) — это две разные штуки.

функции в С не являются first-class object — ими являются указатели. а функции в python и то и другое. ;)
Нет )
>>> os.path.join('a/b', 'c')
'a/b\\c'

функция лишь вставляет os.sep между аргументами. а файл открывается потому, что винда понимает и прямые и обратные слеши (см os.sep, os.altsep ).

Информация

В рейтинге
1 542-й
Зарегистрирован
Активность