Книга Агурова «C#. Разработка компонентов в MS Visual Studio 2005/2008»

coverКогда-то давно мне попалась англоязычная книжка по разработке компонентов для .NET под названием «.NET Windows forms custom controls» (думаю, что эту книгу можно найти без проблем в электронном виде, а еще она есть на google books). В тот момент, когда она вышла, только появился .NET 1.0, но она все-равно оказалась полезной. Спустя какое-то время, когда стал активно использовать .NET, я удивлялся, почему у нас не издают подобных книг (в переводе или своих авторов), вроде тема интересная, но в то же время в MSDN как-то все, что связано с созданием компонентов описано обрывочно, и найти там нужный класс, не зная его имени, не так просто.

И вот примерно месяц назад в книжном магазине случайно увидел книгу Павла Агурова «C#. Разработка компонентов в MS Visual Studio 2005/2008», которую на днях и дочитал.

В целом книга тоже оказалась полезной и иметь ее под рукой при создании собственных компонентов стоит. Несмотря на то, что на обложке книги упоминается Visual Studio 2008, про WPF ничего не написано, о чем автор честно признается на первых страницах, а все 400 с лишним страниц посвящены Windows Forms, что для меня даже лучше, потому что на WPF я так и не перешел, и пока переходить не хочется.

По структуре книга напоминает что-то вроде HOWTO или сборника рецептов. Каждая глава посвящена какой-нибудь одной теме (архитектура компонентов, дизайнеры, сервисы, конвертеры типов, сериализация и т.д.), а внутри каждой главы разные пункты описывают как сделать ту или иную вещь, например, например, как работать со Smart Tags, как добавить к компоненту новые маркеры и т.п. В каждом разделе есть пример разработки какого-нибудь простенького компонента.

С одной стороны такая структура — это то, чего не хватает в MSDN, и по ней можно быстро отыскать как делать ту или иную штуку, а с другой — хотелось бы поподробнее почитать про внутреннюю работу дизайнеров и других частей .NET, в том числе хотелось бы получше узнать описываемые классы, не заглядывая в MSDN. Поэтому недостаток такой структуры изложения в том, что после прочтения книги все-равно будет трудно понять что нужно делать, если появится задача, не описанная в книге. В уже упомянутой книге «.NET Windows forms custom controls» в одной из глав есть полный (надеюсь) список классов, интерфейсов и атрибутов, связанные с дизайнером, а в книге Агурова есть только список атрибутов.

В итоге все-равно книжка мне понравилась, читается она очень даже легко и может неплохо дополнить MSDN, или точнее MSDN может неплохо дополнить книгу, потому что начинать поиски нужного класса проще именно с этой книги. Ее содержание можно посмотреть, например, здесь.

Две программы для ведения списка дел

Две программы для ведения списка дел

Давно собирался рассказать про программу для ведения списка дел TaskCoach, а недавно попалась еще одна подобная программка Doit.im, которая меня заинтересовала, поэтому в этом посте решил сделать их сравнение. Разумеется, все они бесплатные, а кроме того они все кроссплатформенные.

Для начала коротко о каждой из перечисленных программ.

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

Раздача приглашений на Google Wave

Появилось 12 приглашений на Google Wave. Если кому нужно, пишите.

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

Животные Бабушкинского района

В сентябре мы бродили по Бабушкинскому району и по Лосиному острову. Во время этой прогулки удалось сфотографировать на удивление много всякой живности, особенно котов.

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

Книга Уоррена «Алгоритмические трюки для программистов»

algПрочитал недавно книгу Уоррена «Алгоритмические трюки для программистов» (в оригинале она называется «Hacker’s Delight»), любопытная оказалась книжка, хотя алгоритмы, рассмотренные в ней, довольно специфические.

Эта книга отличается от других изданий про алгоритмы тем, что в ней не рассматриваются такие глобальные вопросы как сортировка, оптимизация функций, структуры данных и тому подобные. В ней описываются большей частью алгоритмы, связанные с двоичной логикой и представлением чисел (в основном целых) в компьютере. Основной упор сделан на алгоритмы оптимизации небольших операций, таких как целочисленное деление, извлечение корня или взятие логарифма от целых чисел.

Многие алгоритмы явно предназначены для того, чтобы их реализовали на ассемблере, причем иногда для процессоров, более редких, чем x86 (например, часто упоминаются процессоры IBM, а иногда опоминаются и древние компьютеры еще 60-ых годов прошлого века). Автор пишет, что многие примеры из книги могут пригодиться тем, кто создает компиляторы. Для примера приведу описание некоторых задач, разбираемых автором: как обнулить крайний справа единичный бит (01011000 -> 01010000), округление к кратному степени двойки, подсчет единичных битов в слове, поиск строки битов и тому подобные. Почти для каждого алгоритма автор пытается оценить количество необходимых тактов процессора, иногда с учетом распараллеливания.

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

Ближе к концу книги есть глава, посвященная системам счисления с необычными основаниями, такие как -2, -1+i, -1-i. Такие системы счисления никто в здравом уме применять не будет, но почитать про них все-равно интересно.

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

Не сказал бы, что эту книгу нужно обязательно прочитать всем, но для общего развития вполне можно, тем более она не такая большая (меньше 300 страниц). Читается книга не очень легко, а местами и тяжеловато, в ней приличное количество математических формул, иногда даже попадаются доказательства каких-то теорем. Мне было интересно читать даже не столько про сами алгоритмы, сколько про сами задачи, которые решались.

Книгу можно рассматривать как небольшой сборник рецептов про битовые операции. Книга издавалась несколько раз, последнее издание 2007 года.

В электронном виде найти ее можно без проблем.

Фотоотчет о поездке в Серпухов

Фотоотчет о поездке в Серпухов

Неделю назад на сайте dbtwalks.ru была организована поездка в Серпухов, спасибо Олегу (ака Калий О Аш) за отличную экскурсию по городу.

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

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

Хотелось бы услышать ваше мнение, вообще кому-нибудь интересно здесь читать/смотреть такие фотоотчеты, или лучше ограничиваться совсем избранными фотографиями?

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

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

Waver. Клиент для Google Wave

Waver. Клиент для Google Wave

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

Клиент называется Waver. Итак, Waver — это приложение, написанное для Adobe Air, поэтому автоматически становится кроссплатформенным.

Должен сразу предупредить, что этот клиент еще ооочень сырой, и хотя он уже гордо носит номер версии 1.0, я бы его скорее отнес к ранним альфа-версиям, однако поиграться с ним вполне можно.

waver_01

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

Feedly for Chrome

Feedly for Chrome

Есть такой замечательный сайт feedly.com, который представляет собой альтернативную читалку для Google Reader. Причем это альтернатива именно для Google Reader, а не просто онлайн-ридер для RSS, потому что каналы (ака фиды) берутся именно из гуглоридерного аккаунта.

Многим нравится внешний вид ленты на feedly, но я в первую очередь им пользуюсь, потому что он заметно быстрее RSS-читалки от гугла. Как раз после того как мне попался этот сайт на одном форуме, я полностью перешел на чтение RSS в онлайне, а до этого пользовался оффлайновой прогой FeedDemon.

Так вот к чему это я. feedly.com работает только через плагины к браузерам. До сих пор был плагин только для Firefox, а на прошлой неделе разработчики пообещали, что скоро начнут раздавать инвайты на бета-версию плагина для Хрома. Так как я как раз пытаюсь перейти на этот браузер, то меня это заинтересовало.

Для получения инвайта достаточно оставить им свою почту или зафолловить (ну и словечко) их в твиттере (feedly_chrome). Я выбрал последнее, и сегодня все в том же твиттере разработчики сообщили, что отправили первые сто инвайтов. Мне они пока не достались, но любопытство взяло верх, и я решил поискать в гугле вдруг уже где-то лежит ссылочка на заветный плагин для Хрома. Как же у меня округлились глаза от удивления, когда вторая же ссылка в гугле вывела на страницу официального блога, где написано откуда можно скачать плагин и как им пользоваться.

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

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

PPS. Вот уже и мне тоже прислали ссылку, которую вчера нашел в гугле.

Google Chrome vs. Firefox

Google Chrome vs. Firefox

Для Google Chrome стало появляться все больше и больше расширений и скриптов, поэтому решил попытаться перейти на этот браузер с Firefox. Для этого составил список расширений, установленных у меня в огнелисе, и попытался найти их аналоги для Хрома. К сожалению, для Хрома нет какого-то одного официального сайта, где бы располагались все расширения, поэтому расширения приходится искать по всему интернету.

AdBlock Plus. Первое, что меня интересовало — банерорезалка, без нее в интернете бродить просто невозможно. Для Хрома такие расширения появились одни из первых — AdBlock. Есть еще расширение AdSweep, которое не показывает баннеры, но все-таки загружает их. Вместе эти два расширения работают замечательно.

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

TiddlyWiki

TiddlyWiki

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

На этот раз хотелось бы рассказать про еще одно хранилище заметок с веб-интерфейсом, которое называется TiddlyWiki.

Как только мне попалась на глаза TiddlyWiki, на меня произвела впечатление сама идея этой вики. Дело в том, что TiddlyWiki — написан полностью на JavaScript и по сути представляет собой один html-файл, но в тоже время это довольно мощный вики-движок. TiddlyWiki можно настраивать с помощью плагинов, которых написано огромное количество, наверное, на все случаи жизни. Пустая, только что скачанная вики  занимает чуть больше 300 килобайт (90% в нем — это код на JavaScript).

При добавлении новых записей все они будут хранится всё в том же html-файле. Если не боитесь таких тяжелых страниц, то на этой вики можно построить полноценные веб-сайты, официальный сайт именно на этом движке и работает, хотя эта возможность на любителя. Там же можно посмотреть на внешний вид, на анимацию элементов управления и тому подобное.

tiddiwiki

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