Марк Лутц. Изучаем Python

Дочитал книгу Марка Лутца «Изучаем Python», выход которой ждал еще с ноября прошлого года. Книга, как и ожидал, оказалась просто отличная, особенно понравилась манера изложения автора. Похоже именно так и надо писать технические книги.

А манера эта состоит в том, что сначала Лутц начинает рассказывать о какой-то теме в общих чертах, чтобы было понятно даже новичку (книга все-таки считается учебником по Python, хоть и предполагает средний уровень подготовки читателя), но постепенно доходит до очень низкоуровневых вещей, которые будут интересны и тем, кто язык Python уже знает, а элементы языка разбирает буквально по косточкам, чтобы не осталось ни одного недопонятого момента.

Например, в главе, посвященной общей работе интерпретатора, начинается все с того, как вообще можно запускать скрипты (двойной клик, командная строка и т.п.), затем рассказывается о том как работает виртуальная машина Python, какие файлы и когда она создает, а затем рассказывается о разновидностях Python — CPython, IronPython, JPython, после чего коротко говорится о способах ускорения скриптов с помощью сторонних библиотек (Psyco, Shedskin C++) и кратко упоминает библиотеки для создания полноценных exe-шников (py2exe, PyInstaller и Freeze). В конце каждой главы находится раздел, где автор описывает возможные ошибки при использовании элементов языка, рассмотренные в текущей главе. Некоторые моменты Лутц повторяет по несколько раз для тупых в течение одной главы, но это не раздражает, а новичкам, думаю, это должно сильно облегчить понимание.

Благодаря такому подходу книгу будет интересно читать и тем, кто с Python уже знаком. Я, например, в книге выяснил для себя вопрос, который меня давно волновал: является ли класс list связанным списком. Оказалось, что нет, внутри языка это обычный массив, в некотором роде аналог std::vector из C++. За одно я узнал о существовании некоторых конструкций вроде «a < X < b«. Некоторые конструкции, которыми пользовался до этого, стали казаться более логичными, чем до прочтения книги. Да и вообще появилось ощущение, что все элементы языка выстроились в законченную мозаику.

Понравилось, что Лутц постоянно сравнивает элементы языка Python с похожими элементами других языков (в основном C). Кроме того автор постоянно делает сноски на возможности Python 2.6 и 3.0, которые еще только планировались, когда писалась книга, и в то же время он пишет в какой версии языка появилась та или иная фича.

Из недостатков могу назвать только цену книги. Я ее покупал на Савелке за 1100 рублей, а, как потом выяснилось, в Интернет-магазинах ее продают за 800 рублей. Я эту книгу покупал нам на кафедру, но теперь подумываю купить ее и себе домой. А может быть просто дождусь, когда ее выложат в инет 🙂

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

PS. Оказывается, «Programming Python» все-таки переводили на русский — http://www.ozon.ru/context/detail/id/1299270/. В электронном виде ее выложил Gluek у себя в блоге.

Склеротичное

Склеротичное

Только что с удивлением узнал, что у меня есть аккаунт на Twitter, откуда он взялся понятия не имею, потому что как раз микроблоги меня как-то мало интересуют, макроблоги мне нравятся больше. А узнал я про свой аккаунт после того как мне пришло письмо, что меня кто-то начал читать.

Но то, что я забыл про аккаунт твиттере — это еще полбеды. Самое интересное, что в тот аккаунт попадали ссылки на записи в блоге и на сайте, судя по всему, через RSS, но когда и каким образом я это сделал я тоже не помню. Самое интересное, что отправка записей в твиттер прекратилась в конце ноября, как раз в это время я перевел RSS-каналы на FeedBurner.

Из любопытства решил посмотреть каким образом я мог умудриться перенаправить RSS в твиттер и по запросу «twitter RSS» наткнулся на сайт twitterfeed.com, который для этих целей и предназначен. Этим сервисом я не пользовался точно, потому что при заходе в него с помощью OpenID из ЖЖ, сервер ЖЖ сказал, что я туда захожу в первый раз (а другим OpenID я тогда еще не пользовался). Но из любопытства добавил через этот сервис RSS из сайта и блога.

АнтиSEO

АнтиSEO

Как же все-таки надоели SEO-шники (для тех, кто не знает кто это такие — упыри, которые продвигают свои сайты в поисковиках разными полулегальными способами, а SEO — сокращение от Search Engine Optimization). Надо сразу сказать, что я не против в принципе оптимизации под поисковики как таковой. Но когда на первые позиции в гугле/яндексе попадают сайты, где кроме порнобаннеров ничего нет, это раздражает.

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

Или я вот недавно искал чехол для телефона, и на казалось бы правильный запрос «название_телефона чехол» на первых местах в поисковике стояли сайты, похожие друг на друга как однояйцевые близнецы, действительно продающие запчасти к телефонам, но в списке товаров даже не было намека на подходящий чехол. А когда стал смотреть как тогда эти сайты-клоны вообще попали под такой запрос, увидел, что внизу страницы полужирным шрифтом написана фраза «название_телефона купить название_телефона чехол название_телефона аккумулятор…» и так далее с другими частями телефона.

Вот за такое гугл должен беспощадно банить подобные сайты. Ведь по сути такая «оптимизация» — это мошенничество или спам с той лишь разницей, что обычный спам приходится получать через почту, а SEO-спам через поисковики.

Кроме того, я через RSS подписан на некоторые digg-образные сайты для блоггеров, том числе и по раскрутке. Те методы продвижения сайтов, которые там предлагают использовать вызывают, прямо скажем, брезгливость. Нет, как правило там не предлагают спамить явно, но некоторые методы не далеко ушли от спама. Такие SEO-шники загаживают сайты социальных закладок кучами специально созданных аккаунтов, делают десятки, если не сотни, «фальшивых» аккаунтов в других социальных сетях, только чтобы получить побольше ссылок на свой сайт, создают сайты, единственная цель которых — ссылаться на раскручиваемый сайт. К счастью, поисковики периодически банят таких мошенников, но силы слишком уж не равны.

Да и вообще, по некоторым блоггерским сайтам создается впечатление, что блоггеры только и занимаются обманом поисковиков. К счастью, это не совсем так. 🙂

SEO-блоггеров легко узнать по оформлению их записей. Это такой монохромный вариант блогов на mail.ru. Только если на mail.ru почему-то постоянно попадаются блоги, оформленные в стиле «новогодняя елка», когда текст пестрит разными шрифтами и раскраской букв, то у SEO-шников блоги пестрят выделением ключевых слов полужирным шрифтом, чтобы придать больший вес этим словам для поисковиков. Причем такие выделенные ключевые слова в тексте идут через слово. А ведь обычному белковому человеку такие записи читать невозможно — в глазах рябит.

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

Ну вот, вроде весь негатив вылил 🙂

EQATECProfiler. Бесплатный профайлер для .NET

EQATECProfiler. Бесплатный профайлер для .NET

На днях искал чем можно потестировать программу, написанную на C#, в плане узких мест по производительности, и с удивлением наткнулся на бесплатный профайлер с заковыристым названием EQATECProfiler. Этот профайлер отказался очень простым в использовании и поэтому очень удобным, чтобы определить на скорую руку в каком месте программа больше всего тормозит. Официальный сайт программы расположен здесь. Там же есть ссылка на страницу скачивания. Чтобы скачать программу надо оставить свой e-mail, на который пришлют ссылку на другую страницу, с которой можно будет скачать профайлер. На вопрос о том почему разработчики сделали EQATECProfiler бесплатным, на этой странице они отвечают, что хотят понять на сколько востребован такой продукт (именно поэтому они собирают статистику скачиваний), так что не факт, что программа останется бесплатной и в будущем. Я думаю, что лучше всего показать работу EQATECProfiler’а на каком-нибудь простом примере. Читать далее…

ICQ. Фронтовые хроники

В свете участившихся в последнее время проблем с аськой решил собрать в одном месте список козней AOL’а в хронологическом порядке.

Читать далее…

Калькулятор SpeedCrunch

Калькулятор SpeedCrunch

Несколько лет подряд я пользовался калькулятором NumLock Calculator, которым был очень даже доволен не смотря на то, что он уже давно не обновляется. Все в нем удобно: можно в строку записывать длинные выражения, калькулятор понимает тригонометрические функции (углы можно задавать и в градусах, и в радианах), знает что такое число пи, сохраняет историю до перезапуска программы. Я даже и не знал чего от него еще можно хотеть. Теперь знаю.

Неделю назад на одном буржуйском сайте наткнулся на калькулятор SpeedCrunch, теперь судя по всему вместо NumLock Calculator’а буду использовать его. Во-первых, он кроссплатформенный, есть его сборки под Винду, Линух и Мак ОС, хотя для меня это и не особо актуально. Даже, как оказалось, в Kubuntu он уже встроен. Во-вторых, все перечисленные возможности NumLock Calculator’а в нем тоже присутствуют. Единственное, что NumLock Calculator, в отличие от SpeedCrunch, поддерживает скины, но я ими ни разу за последние несколько лет не пользовался, думаю, что эта возможность на любителя. Ну и, в-третьих, у SpeedCrunch’а есть возможности, отсутствующие у NumLock Calculator’а, вот о них и поговорим поподробнее.

Читать далее…

Iron. Браузер на движке Google Chrome

Iron. Браузер на движке Google Chrome

Ну вот и началось. Умельцы из немецкой компании SRWare сделали свой браузер на основе исходников Google Chrome. Название для браузера они выбрали простое — Iron. Немцы начали с того, что удалили из Chrome все шпионские замашки, как то уникальный идентификатор для каждой машины с этим браузером, отправку статистики гуглу, оповещения разработчиков об ошибках и другое. Полный список этого другого можно найти здесь.

Но самое интересное, что разработчики сделали какую-никакую, но блокировку рекламы. Для нее еще нет никакого интерфейса, а все фильтры нужно добавлять вручную в файл adblock.ini, который расположен в папке с программой. По умолчанию этот файл пустой, но с сайта Iron (отсюда) можно скачать некоторые фильтры. Как я понял, эта банерорезка работает так же как и в Opera и фильтры из Opera подходят и Iron. Я пробовал подсовывать фильтры из AdBlock Plus от Firefox, но с теми фильтрами Iron вылетает.

На немецкой части сайта есть упоминание про пре-бета-версию Iron 2 с поддержкой скриптов GreaseMonkey. В английской версии сайта этой новости почему-то нет. Там же есть ссылка на статью про то как запустить Iron на Mac OS X (правда, на немецком языке).

Скачать Iron можно отсюда (там есть ссылка и на портабельную версию), а если хотите скачать пре-бету, то вам дорога на немецкую страницу загрузки.

А вообще тенденция мне нравится. Вон на движке от Firefox’а сколько всего понаделали, включая плееры и IM-клиенты. Для этих целей Chrome походит, ИМХО, лучше, все-таки он не такой тяжелый, как Firefox. Посмотрим, может быть и сделают на движке Chrome что-нибудь интересное. Только главное, чтобы он у меня перестал периодически вешать видеокарту.

FreeLaunch

FreeLaunch

В продолжение недавней записи про лаунчер программ Executor поговорим про другой лаунчер, которым я пользуюсь сравнительно давно, но в основном для упорядочивания редко используемых программ. Это программа FreeLaunch.

Своего сайта у FreeLaunch нет, а есть только тема на форуме ру-борда, куда автор выкладывает ссылки на новые версии программы, и где заодно идет тихое и неспешное обсуждение.

Про эту программу можно даже ничего не рассказывать, потому что все понятно из скриншота.

freelaunch

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

Из недостатков этой программы я бы назвал только то, что можно создать максимум 8 вкладок.

На самом деле FreeLaunch задумывался как бесплатный аналог шароварной программки TurboLaunch. Вообще TurboLaunch давно не обновлялась (несколько лет), а сегодня, когда зашел на ее сайт, с удивлением обнаружил, что новая версия вышла буквально десять дней назад.

В отличие от TurboLaunch, FreeLaunch хранит все настройки в папке с самой программой, что, на мой взгляд, является более идеологически верным. Кстати, только на сайте TurboLaunch я увидел хранение настроек в реестре в качестве преимущества программы.

Во FreeLaunch я храню в основном программы, которыми пользуюсь не часто, потому что быстрее ввести ключевое слово в Executor, чем тыкать мышкой по иконке, потом на нужную группу, а потом уже на нужную прогу. Зато в FreeLaunch проще искать программы, название которых не помнишь.

Возможно, в будущем я вообще откажусь от FreeLaunch, потому что Executor тоже поддерживает группы, но там  нужно запоминать как нужная группа называется (хотя бы первые буквы названия).

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

Если я все-таки сразу не забыл про скаченную программу, то я ее ставлю, а ярлык вывожу на рабочий стол. Именно поэтому у неизвестных программ, если есть выбор между инсталятором и просто запакованным exe-шником, я обычно качаю инсталяторы, а потом, если прога мне понравится, качаю только exe-шники. И именно поэтому на рабочем столе у меня всегда находится в основном всякий хлам (и игры 🙂 ).

Если после первого запуска понимаю, что прога мне не подходит, то она сразу же отправляется в топку унинсталл. Иначе, ее ярлык остается какое-то время на рабочем столе.

Если прога меня заинтересовала, то ярлык на нее отправляется к FreeLaunch или (и) в Executor. А уж если я этой прогой начинаю часто пользоваться, то ей разрешается проникнуть в святую святых — на панель быстрого запуска.

Вот как-то так ярлыки и перемещаются, как видите, меню «Пуск»  я вообще не пользуюсь.

UPDATE: Вынесу сюда комментарий Joker-jar:  «Проект FreeLaunch стал опенсорсным, расположен здесь. Любой желающий может принять участие в разработке, высказать свои пожелания и замечания».

Поменял телефон

Поменял телефон

Примерно 8 лет служил мне мой старенький Siemens S35, я уже так привык к его недостаткам (самый существенный из них — отсутствие русской клавиатуры) что уже не обращал на них внимания. За это время он ни разу не подводил, менял ему только пару раз аккумулятор, и больше ничего ему не требовалось. Но в этот раз, когда в очередной раз аккумулятор начал умирать, причем умирать интересно — аккумулятор для телефона якобы полностью заряжен, но телефон вырубается, решил его предать поменять.

Сначала не знал выбирать обычный телефон или коммуникатор, чтобы заменить им заодно и КПК. Но прикинув, что большую часть времени КПК я использую для чтения книг, а у коммуникаторов экран будет заведомо меньше, то решил ограничиться телефоном.

Оказалось, что выбор телефона — это какой-то кошмар, выбирать приходится из сотен практически одинаковых трубок, отличающимися только мелочами, но этих мелочей куча, причем не обо всех из них можно узнать по характеристикам. Полазил несколько дней по сайтам с телефонами и сначала хотел купить Motorola L9, его в основном хвалили, хотя и писать про тормознутость при работе с большой флешкой. Прихожу на Горбушку — такого телефона в нормальных палатках нет, есть только в каких-то мелких шарашках, которые продают чуть ли не б/у.

В общем понял, что надо покупать что-то другое, причем что это другое — хз, по памяти из обзоров остальных кандидатов на покупку я не запомнил. Пришлось спрашивать продавцов, чтобы посоветовали что-то вроде того же L9. Большинство продавцов ничего конкретного не сказали, но попался один, который сразу указал на Samsung GT-M3510 и сказал, чем он отличается от того же L9. В общем, в итоге его и купил.

В целом телефоном доволен (еще бы, по сравнению с S35): контакты и органайзер синхронизируется с Outlook (про эту возможность я узнал уже дома, потому что на мои вопросы по этому поводу продавцы ничего не отвечали), сразу прилагается флешка на гиг (к L9 ее пришлось бы докупать отдельно), есть MP3-плеер и радио. Наушники к телефону прилагаются такие, что вставляются в ухо чуть ли не до самой перепонки, но зато снаружи их не слышно. В принципе, мне больше ничего от телефона и не надо. В обзорах пишут, что Java-приложения можно устанавливать только через WAP, но у меня они без проблем устанавливаются и с карточки из оффлайна. Поставил на всякий случай себе Bombus и Яндекс.Карты, хотя вряд ли буду ими активно пользоваться.

А сегодня в шесть утра обнаружился глюк. M3510 закачал себе все события и напоминания из Outlook’а, но время всех событий у него сдвинулось назад на 3 часа, в итоге вместо напоминания в 9 утра, он заорал в 6. Подозрение, что он как-то неправильно учитывает часовой пояс, ведь у нас тут как раз GMT +3. В общем, написал про этот глюк на сайте самсунга, посмотрим что ответят, очень надеюсь, что этот глюк исправят. Вроде софт у них обновляется, по крайней мере сразу после установки его с диска, он полез в инет и обнаружил там более новую версию.

Еще из недостатков у M3510 не очень удобное переключение между английской и русской раскладкой.

А в целом очень даже ничего телефон.

Executor

Executor

Стандартное меню «Пуск» в винде, мягко говоря, не очень удобно для постоянного использования. При частой установке разных программ, оно быстро забивается ненужными элементами — или программа не удалила после себя значки, или установленная когда-то программа уже перестала быть нужна, но еще не попала под горячую руку унинсталлера, но постепенно это меню становится настолько монстроидальным, что пользоваться им практически нереально. Главная проблем в нем — неупорядоченность. Кроме того, большинство ярлыков программ помещаются не просто в меню, а в папку, обозначающую разработчика. И вот сидишь иногда, глядя грустными глазами на простыню с иконками, которые даже не отсортированы по алфавиту, и пытаешься вспомнить как звали того Васю Иванова, который написал программу MySuperProgram 34.125 beta 2 RC 98 russian version Deluxe. И когда от безысходности начинаешь заглядывать в каждую папку с ярлыками и среди кучи ненужных ссылок натыкаешься на эту самую MySuperProgram 34.125 beta 2 RC 98 russian version Deluxe тогда только вспоминаешь, что Васю оказывается зовут Федя, а фамилия его так и остается загадкой, потому что ярлыки его программы лежат в папке Fedya’s cool software.

Вот после такого мучения и начинаешь искать какие-нибудь программы для упорядочивания установленного софта, а проще говоря лаунчеров (launcher).

Для себя лаунчеры я разделил на две группы: программы, притворяющиеся маленькими консолями, где для запуска программы нужно ввести ключевое слово, и лаунчеры, разделяющие ярлыки на группы, а запуск программы осуществляется с помощью щелчка мышью на соответствующем ярлыке из нужной группы. Сам я пользуюсь двумя лаунчерами — по одному из каждой группы. «Консольный» лаунчер я использую для запуска часто используемых программ, а «мышечный» для редко используемых программ, названия которых я могу забыть, но по крайней мере я буду знать в какой группе их искать.

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

Executor — очень простая с точки зрения юзера программа, занимающая не так много оперативки (сейчас она у меня занимает около 9 Мб) и позволяющая для каждой программы устанавливать свое ключевое слово.

Читать далее…