2007-12-30

Работать по-японски

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

В новой части знаменитого кладбища Окуно-ин — целые ряды корпоративных могил. Право покоиться здесь получили только лучшие из лучших, самые преданные и самые старательные. Корпоративная могила знаменитой фирмы UCC, производящей кофейные напитки, выполнена в форме огромной мраморной чашки, в которой перемешан прах всех верных сотрудников компании. А на могильном камне корпорации, производящей бытовую химию, выбита надпись: «Мы просим прощения у всех невинно убитых тараканов».

http://cldlune.livejournal.com/164511.html

2007-12-28

Data generator

Онлайн генератор небольших таблиц для тестов http://www.generatedata.com/. Весьма приятные оформление и функциональность
Вырезка из feature-list
  • Many data types available: names, phone numbers, email addresses, cities, states, provinces, counties, dates, street addresses, number ranges, alphanumeric strings, lorem ipsum text and more.
  • Option to generate data in XML, Excel, HTML, CSV or SQL.
  • Country specific data (state / province / county) for Canada, US, Netherlands and UK.

2007-12-25

Ok/Cancel vs Cancel/Ok

Долгое время не мог найти объяснения, почему мигрирующий с *nix-ов окошечный софт, как правило, имеет в диалогах кнопку "Ok" справа. Каюсь, поверхностно грешил на общую гуевую криворукость юниксоидов. Сегодня поработав с добротно сделанным kuler-ом, увидел в окошке логина такое же решение. Кулер не идеал с точки зрения юзабилити, но ляпы там немного другого порядка, поэтому стало очевидно, что решение поместить кнопку "Ok" было не случайным. Помозговав немного построил для себя (позже подтвердившееся) объяснение: большинство пользователей читают слева направо и сверху вниз. Таким образом после просмотра диалога, пользователи первым делом натыкаются на часто используемую кнопку "Ok" (по сравнению с "Cancel").
Объяснить для себя "правый Ok" я так и не смог, поэтому сломав голову полез в гугл. Пояснение нашлось сравнительно быстро - сторонники "правого Ok" аналогично, аппилируя к опыту большинства, утверждают, что левая сторона и расположенная слева кнопка ассоциируются с термином "Назад", а правая "Вперед" (как косвенный аргумент приводится расположение кнопок вперед/назад в браузерах). К счастью, мнение (от Holger Maassen) было сформулировано достаточно нейтрально, чтобы моментально прийти к выводу, о глобальной неразрешимости этой проблемы - у обоих решений всегда будут свои сторонники и противники.


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


Во время поисков наткнулся на любопытный пост в котором автор кратко описывает "историю жизни" кнопок Ok/Cancel или более грамотно, с точки зрения юзабилити Primary/Secondary action.


А еще чуть позже нашел подробное пояснение для самых маленьких о причинах такой эволюции. Если кратко, то основной аргумент - желание выделить "Primary Action" без особого ущерба для "Secondary Action" (в качестве тяжелой артиллерии для аргументации такого решения привлекается Закон Фиттса). Кроме того, автор заметки рекомендует использовать вместо Ok/Cancel что-то более domain specific (в его примере "Save title"/Cancel).

Далее нашел замечательную статью LukeW: Primary & Secondary Actions in Web Forms. Специалисты (Luke Wroblewski & Etre) сделали шесть дизайнов страницы с различным расположением (и дизайном) кнопок Submit (Primary Action) и Cancel (Secondary action) и попросили 23-х человек, заполнить формы фиксируя действия пользователей. В результате оказалось, что предпочтительным является размещение Primary Action слева, на одном уровне с input-ами формы. Кроме этого, авторы рекомендуют семь раз подумать, а сильно ли требуется тот самый Secondary Action и если не сильно - моментально выкинуть его :)

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

2007-12-20

"SetUnhandledExceptionFilter" and VC8

The are many situations in which your user-defined Unhandled-Exception-Filter will never be called. This is a major change to the previous versions of the CRT and IMHO not very well documented.

источник
Неприятно.

Что характерно, ссылка на одну из статей битая (Compiler Security Checks In Depth).

Тем не менее, статья существовала, т.к. ссылки на нее есть в других статьях, например здесь http://msdn2.microsoft.com/en-us/library/8dbf701c(VS.80).aspx

2007-12-19

RAMDisk для быстрой компиляции

Некоторое время назад решил попробовать сабж. Основная идея - размещать временные файлы проекта в оперативке, тогда время компиляции уменьшится (собранные объектники не будут гоняться на диск и обратно). Бесплатную программу для создания RAM диска можно взять здесь http://ramdisk.nm.ru/ramdiskent-rus (ссылку нашел на рсдн)
Устанавливается софтина весьма легко, единственная опция которая потребовала внимания - требуемый объем оперативки выделяемой под диск. Махнув рукой отдал 256 мб из гигабайта.
Для моих проектов (время ребилда меньше минуты) существенных изменений не заметил - время осталось таким же или стало чуть меньше.
Вывод - взять сфотинку на заметку, возможно окажется полезной в будущем, но сейчас смысла использовать нет.

2007-12-18

R.I.P. Numega

Оказывается полгода как закрылась Numega Lab
via

Crash Report

Crash report__После того, как с большим трудом удалось продиагностировать Unhandled exception у пользователя (юзер раздражителен, плохо читает инструкции, да и ему проще снести софтину, чем разбираться в ее проблемах), стало очевидно, что необходим простой способ для оповещения разработчиков об ошибках. В закромах давно лежала вкусная ссылка (то же самое на google code), с которой осталось разобраться и подключить к приложению.
Первые впечатление были как у Кусто нашедшего дельфина с тремя глазами - библиотечка (crashrpt) генерирует замечательный отчет: crash dump + красивое сообщение об ошибке, к которому можно подключить несколько пользовательских файлов (например конфиги и логи). Более того, потом crashrpt сохраняет все это добро одним zip файлом и создает письмо к которому аттачит отчет. Пользователю остается только нажать кнопку отправить.
Все было чудесно до тех пор, пока не начал подключать либу к проекту - библиотека потребовала WTL. У меня ее нет за ненадобностью и раньше интересовался ей только поскольку-постольку (реального опыта ноль целых ноль десятых). Скачал, поставил (если такое слово применимо - библиотека поставляется только в хидерах), после чего выяснилось, что WTL не способно жить без ATL. На этом месте радость закончилась - т.к. в состав Express-ов ATL не входит.
Поманили морковкой, дали пооблизывать, после чего жестко обломали.

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

Мимоходом попытался проверить всплывшую в памяти информацию, что ATL входит только в состав платных студий.
Поиск в "базе знаний" Майкрософт. Как они сами с такой помойкой работают?

PS В закромах остались ссылочки
"XCrashReport : Exception Handling and Crash Reporting" By Hans Dietrich. Буду разбираться.
http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx
http://www.codeproject.com/KB/debug/XCrashReportPt2.aspx
http://www.codeproject.com/KB/debug/XCrashReportPt3.aspx
http://www.codeproject.com/KB/debug/XCrashReportPt4.aspx

PPS Когда апдейтил пост произошли ошибка на блогспоте, о чем пришел соответствующий репорт :)


При этом никакой ошибки, кроме сообщения о ней мне обнаружить не удалось, как ни искал :)

2007-12-04

Переименование папок в Thunderbird

Thunderbird только что учудил.
Решил я переименовать одну из папок с письмами из верхнего в нижний регистр. На что тут же получил предупреждение

:)
Правда позже, почтовик честно обновил все фильтры связанные с этой папкой за что ему большое спасибо.

const char* filename

На днях Александр Авраменко постил на рсдн список новых библиотек, которые войдут в свежую версию буста 1.35. Прочитав его, был сильно удивлен, т.к. не ожидал, что бустоводы (в большинстве своем) когда-нибудь повернутся лицом к ... хм... всяким реальным проблемам: планировались библиотеки для работы с изображениями, сетью, межпроцессного взаимодействия. Меня помимо вышеназванных, привлекла property_tree library.
property_tree - рекурсивное дерево с поддержкой загрузки/сохранения в форматах XML, INI, JSON и в реестр Windows.

Именно такая штука сейчас бы очень пригодилась для хранения опций в Spy - особенно порадовала возможность сохранять дерево в JSON.
Сегодня решил собрать пример. Первое, что бросилось в глаза
void read_json(const std::string &filename, ...)
void write_json(const std::string &filename, ...)

Тоска зеленая, 256 символов на все прихоти планеты - фарева.

Автор, очевидно, в курсе проблемы, т.к. в том же файле предусмотрены интерфейсы:
void read_json(std::basic_istream &stream, ...)
void write_json(std::basic_ostream &stream, ...)

Вместе с (очевидно MSVC-specific) конструктором basic_ofstream(const wchar_t *_Filename, ... ) становится возможным малой кровью обойти проблему.

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

2007-12-01

HTMLayoutSpy. Альфа.

Качать здесь http://htmlayoutlab.com/2007/11/30/spy-alpha/
Русская и английская демки
http://htmlayoutlab.com/2007/11/30/russian-flash-demo/
http://htmlayoutlab.com/2007/11/30/english-flash-demo/

Как ни странно, успел почти все, кроме сохранения опций. Доволен.

2007-11-29

WordPress + Google Analitycs


Подружить WordPress и Аналитику оказалось крайне простым делом. На выбор есть два популярных плагина (я остановился на первом) Ultimate Google Analytics и Google Analyticator.
После инсталляции разные интересные задачи, вроде отслеживания кол-ва закачек, решаются простановкой галок в контрольной панели.
Домашняя страничка плагина.

2007-11-27

HTMLayoutSpy. В паре дней от альфы.


Практически доделал спай.
Пока еще есть несколько неприятных моментов, кое-где встречаются шероховатости, но в целом, все работает :)
На скриншоте - спай приаттаченный к свежему примеру HTMLayout.
Слева отображается дерево документа, текущий узел выделяется с помощью инструмента Inspect непосредственно в пользовательском приложении. Чуть правее - вся информация, которую можно собрать по элементу, правый див - логи событий. Снизу путь до элемента над которым находится мышка. В самом документе подсвечены div-ы и li.

Google alert

Что-то качество работы сабжа не радует.
Для тех кто не в курсе, цель сервиса - оповещать клиентов, если в сети появляется что-то новое по интересующему их запросу.
Т.е. если клиент создает алерт по запросу "Вася Пупкин", то весь свежачок по этим ключевым словам будет отправляться клиенту на мыло.
Конечно, отслеживать популярность "Васи Пупкина и ко" смысла нет никакого, а вот в случае шаровары, такой сервис позволяет быть моментально в курсе отзывов пользователей о программе и новостей вокруг прочих интересных тем.

Сам сервис имеет минимальное количество настроек alert-ов, аскетичный дизайн. Казалось бы, проще некуда, поэтому google alert обязан работать как часы? Не тут-то было.
Первый скелет сервиса раскрылся уже во время попытки создать alert - если мыло отличается от gmail, то нет возможности настроить alert.
Только что оказалось, что сервис может не присылать оповещения о появившихся alert-ах.

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

Хуки в WinAPI

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

Разводка в обменниках

На выходных наблюдал сабж. Сам при этом выступал в роли лоха :)
На днях Катька улетает в Париж по поводу чего было решено зайти в обменник, поменять ерво. Зашли в первый попавшийся ларек-обменник (грязно, тесно, наружная дверь не закрывается) на Речном вокзале. Деньги кассиру передаются, по классической для обменников схеме, через закрывающийся стальным листом отсек. Перед тем как отдавать деньги, Катька дважды пересчитала (15'000р тысячными купюрами) бумажки (вызывая мое недовольство пустой тратой времени), после чего положила их в отсек и произнесла "400 евро". Кассирша сразу после того как деньги были положены, закрыла заслонку и взяв деньги в руки замялась, после чего сказала "У нас евро нет" (смотрелась она натурально, никаких подозрений не вызывала) и положила деньги обратно. Все это заняло секунду-две. Катька взяв стопку обратно перечитала деньги (это важно - и до и после!), оказалось, что не хватает одной бумажки. Пересчитала деньги еще раз (я уже начинал плеваться, т.к. до сих пор не понимал в чем дело), после чего заглянула в отсек - бумажка лежала с противоположной стороны. Когда Катька выуживала бумажку, в глазах кассирши читалось плохо скрытое раздражение.
Возвращаясь и проигрывая в памяти эпизод нужно сказать, что действовала засранка весьма умело и естествено. Деньги находились в руке буквально секунду, возвращала она их одной рукой, при этом мы не видели пачку с деньгами какую-то долю секунды, но кассирша успела откинуть одну бумажку вплотную к своей стенке (увидеть ее можно было только специально заглянув в неудобно расположенный отсек), остальные деньги оказывались у нас под носом - бери и иди.
Вышли из обменника, прошли метров 300, наткнулись на сбербанк - чистое помещение, более выгодный курс, прозрачный контейнер для обмена денег.
Будьте бдительны :)

2007-11-26

Автобиографическая повесть 'Плен'


Из вступления
Давайте взглянем на цифры безвозвратных потерь вооруженных сил. Официальные источники (Министерство Обороны, Генеральный штаб, Академия военных наук) приводят такие данные, которые, впрочем, многими исследователями считаются заниженными: общие безвозвратные потери вооруженных сил – 8,8 млн. чел. В Германском плену оказались 5,7 млн., из них были расстреляны, погибли от голода, ран, болезней и непосильного рабского труда – 3,3 млн., т.е. 58%. Количество красноармейцев и командиров, погибших в плену – 38% от общего числа погибших в войне.
Несмотря на столь трагические последствия войны много ли опубликовано книг, снято кинофильмов о судьбах военнопленных, их борьбе и страданиях? Разве судьба 1/3 всех, вставших на защиту Родины и погибших за нее, не является неотъемлемой частью истории страны?


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

http://ldb1.narod.ru/rus.index.html

Дмитрий Борисович, низкий поклон...
http://lomonosov.livejournal.com/

2007-11-22

Россия на чемпионате Европы

Англия Хорватия 2:3
Андорра Россия 0:1
Фантастика!

2007-11-21

HTMLayout. Неявная модификация DOM-tree

Существует несколько ситуаций, когда генерируемое HTMLayout DOM-дерево не соответствует передаваемый пользователем html. Знания об этих исключениях необходимы для правильной записи селекторов и манипуляций с DOM-деревом.

  1. Чаще всего HTMLayout изменяет DOM-tree для упрощения форматирования строк внутри структурных блоков (например div-ов). В таких случаях HTMLayout обрамляет строку тегом text. Простой пример применения этого правила можно найти в спецификации CSS 2.1 http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level

  2. В некоторых случаях behavior может взять на себя обязанности по "достраиванию" DOM-tree, что позволяет упростить html-код и избавить пользователя от рутинных описаний реализации. Типичный пример - упрощение комбобокса.
    <select name="Alignment" size="1">
    <option value="left">Left</option>
    <option value="right">Right</option>
    <option value="center">Center</option>
    </select>

    ( код взят из примера HTMLayoutSDK\html_samples\form-test.htm)
    Данная структура точно описывает семантику комбобокса с точки зрения человека, однако совершенно не годится для HTMLayout, поэтому строчки преобразовываются в
    <select name="Alignment" size="1">
    <caption value="center">Center</caption>
    <button role="dropdown" tabindex="-1"></button>
    <popup type="select">
    <option value="left">Left</option>
    <option value="right">Right</option>
    <option value="center">Center</option>
    </popup>
    </select>

  3. Особенность реализации таблиц внутри HTMLayout.
     <table>
    <tr><td colspan="2">colspan</td></tr>
    <tr><td>1</td><td>2</td></tr>
    </table>

    1. Первая строка будет иметь двух детей
    2. Хендл второго ребенка будет нулевым.


Отдельное спасибо Jim Epler за пост со ссылкой на HTML Encoder

2007-11-19

Цветовая схема

Насущный вопрос при создании программы - где взять симпатичную цветовую схему.

1. Стандартное решение - виндовая схема, морально устарела лет 10 назад. Критиковать ее настолько просто, что даже не хочется тратить на это время. Когда делал "свою" схему основанную на стандартной виндовой потратил столько времени, что даже не хочется говорить об этом вслух и получил довольно хреновое решение.
2. Самопал, несмотря на наличие качественных инструментов ( http://www.colorschemer.com/, http://kuler.adobe.com/) делать чудовищно сложно.
3. Остается тупо переть решения у крупных компаний и успешных продуктов.

Есть надежда, что упустил что-то очевидное. Задал вопрос на rsdn, может получится найти что-то интересное.

2007-11-16

HTMLayoutSpy. Последняя миля

Добил вчера последнюю фичу.
Направления для дальнейшей работы:
  • Оптимизация
  • Баг фикс
  • Наполнение "тривиальной функциональностью" - базовые механизмы готовы и отлажены, осталось вбить несколько простых строчек кода/настроить конфиг.
На следующей неделе планируется альфа.

Раньше всегда затягивал завершение последнего кусочка работы. После ряда таких ошибок, провел с собой работу и надеюсь рецидивов не будет. В любом случае, скоро узнаем :)
Хорошая свежая статья на тему Проблема последней мили , базовый термин из которой использован для заголовка.

2007-11-15

HTMLayoutSpy. Настройка логов


Так будет выглядеть настройка логов для спая. После реализации, идея о resizable-options уже не кажется такой изящной как казалась изначально :)

2007-11-09

Scroogled aka выгуглен

Симпатичная антиутопия на несколько страничек. На злобу дня.
Русская версия
Оригинал
via Бёрд Киви

Когда заходят разговоры теоретиков на тему "google is evil", вспоминается один старый (с год назад) пост шароварщика, который установив и попробовав кучу обновок: Sitemap, Google Analitycs и AdSense неожиданно проникся сознанием куда все катится :) Тут речь, конечно, не о нарушениях прайвиси, но о том, что гугл знает откуда ходит клиент, как часто приходит, сколько платит и (гугл) подкручивая результаты поиска, через AdSense может выкачивать из мелких вендоров столько денег, сколько захочет.
Поэтому я всеми руками за развитие Яху/ МС/ Яндекс/ новичков и здоровую конкуренцию :) По поводу новичков - это безусловно, утопия, но должно же быть хоть что-то светлое на антиутопичном фоне :)

2007-11-06

HTMLayout Spy о текущем

HTMLayout Spy плавно катится в альфа-версии. На этой неделе сделаю демку и выложу на htmlayoutlab.com - сайт давно пора обживать.

Сейчас Spy выглядит так:

История создания HTMLayout

Решил собрать всякие интересные факты о HTMLayout в одну кучу.
История создания HTMLayout

2007-11-01

Несколько слов об особенностях HTMLayout

По мотивам http://guicci.ru/2007/10/28/htmlayout-web-20-prishel-na-desktop/

Дисклаймер.
Мне не доводилось работать с библиотеками UI отличными от HTMLayout, поэтому не возьмусь сравнивать HTMLayout и например QT. Есть небольшой опыт веб-разработки, поэтому кратко расскажу чем отличается HTMLayout от IE (и IWebBrowser2).

Прежде всего - верстка. HTMLayout это HTML движок с человеческим лицом (и это лицо улыбается разработчику :) )

Небольшое отступление.
Когда впервые столкнулся с задачей разработки сайта меня поразило насколько сложно сделать корректный сайт с несколькими вертикальными колонками контента - веб-разработчики пишут по этому поводу статьи (разные для обсуждения деталей двух/трехколоночной верстки), активно обсуждают, устраивают холивары на тему "верстка table vs div" и т.д. Поначалу, я воспринимал эти статьи как какой-то нелепый розыгрыш, но вскоре выяснилось, что это тяжкая реальность :). Для человека знакомого с HTMLayout подобные вопросы звучат дико. Поясню на примере:

Пример 1. Требуется сделать двухколоночную страничку. Левая колонка имеет фиксированную ширину (допустим 100px), правая - резиновая.
Код:
<html>
<head>
<style>
div { border: 1px solid black; margin: 5px; }
body { flow: horizontal; }
#left { width: 100px; height: 100%%; }
#center { width: 100%%; height: 100%%; }
</style>
</head>
<body>
<div #left >
<div #center >
</body>
</html>
Здесь используется два расширения html: style attribute flow и единица измерения %%.
flow: horizontal говорит, что мы будем укладывать потомков body не вертикально, а горизонтально. %% - определяют размер элемента в процентах от свободного места на страничке. С помощью записи width: 100%%; height: 100%%; мы отдаем элементу #center все свободное место не занятое фиксированной колонкой.
Скриншот прилагается.
http://htmlayoutlab.com/tmp/columns.example1.png

Пример 2. Требуется модифицировать предыдущий пример добавив справа еще одну фиксированную колонку.
#left { width: 100px; height: 100%%; }
#center { width: 100%%; height: 100%%; }
#right { width: 200px; height: 100%%; }
Колонка готова.
http://htmlayoutlab.com/tmp/columns.example2.png

Пример 3. Теперь мы захотели модифицировать предыдущий пример так, чтобы в центре было две резиновых колонки. Потребуется добавить одну строчку в css, одну (еще один div) в html:
#left { width: 100px; height: 100%%; }
#center1 { width: 50%%; height: 100%%; }
#center2 { width: 50%%; height: 100%%; }
#right { width: 200px; height: 100%%; }
http://htmlayoutlab.com/tmp/columns.example3.png

Детальное описание атрибута flow: http://www.terrainformatica.com/htmlayout/flow.whtm
Отдельный бонус - значения h-flow, v-flow, но о них позже.
Описание %% http://www.terrainformatica.com/htmlayout/fspu.whtm

Другая проблема верстки - создание "сложных" элементов на страничке. Например описание линка на http://www.dzone.com/links/ - каждый линк имеет пиктограмму (уменьшенный скриншот), описание, автора, кнопку для голосования, теги. Обычно, создание/переделка подобного (или более сложного) лэйаута - это борьба с таблицами или непослушными дивами. HTMLayout для сохранения значительной части нервных клеток разработчика имеет еще одно значение атрибута flow: table.
Если у Вас есть несколько минут, рекомендую глянуть
HTMLayout SDK http://www.terrainformatica.com/htmlayout/HTMLayoutSDK.zip имеет несколько готовых примеров использования flow: table.
bin\browse.exe - стандартный браузер для просмотра тестовых примеров
html_samples\flows\grid*.htm - примеры flows
Там же можно найти примеры использования h-flow, v-flow
http://htmlayoutlab.com/tmp/flow.grid.png
http://htmlayoutlab.com/tmp/flow.grid2.png

Далее.
Каждый веб-дизайнер сталкивался с ситуацией, когда на нескольких страницах присутствуют одинаковые фрагменты кода (например меню). Оставаясь только в рамках html, мы не можем вынести дублирующийся код в отдельный файл. HTMLayout для решения такой задачи имеет тег <include>, его использование тривиально
<include src="menu.htm"> <em>Ooops! menu.htm is unavailable!</em> </include>
Дополнительный бонус - в коде приложения мы можем перехватывать загрузку файлов и изменять стандартное поведение - грузить menu.htm не с диска, а например, из ресурсов приложения, или архива, БД, генерировать файл на лету - HTMLayout не накладывает на пользователя никаких ограничений.

Далее, я тезисно перечислю другие вкусные особенности (то что помню сейчас) (описывать их подробно, сейчас просто нет времени).
  • Поддержка "обычного" внешнего вида стандартных контролов. Например, background-image: url(theme:button-normal); Естественно, контролы можно стилизовать с помощью css
  • Существует совершенно замечательная возможность определять собственные теги (для этого требуется добавить одну строчку в код Вашего приложения) и атрибуты css.
  • Легкая разработка собственных behaviors. Это тема для отдельного и большого разговора :)
  • Высокая скорость работы, малый размер библиотеки.
  • Высокое качество и дружелюбность саппорта - обнаруживаемые баги обычно фиксятся в течении нескольких дней после обнаружения http://www.terrainformatica.com/htmlayout/logfile.whtm (да, баги к сожалению присутствуют - библиотека активно развивается.)
  • Все это удовольствие можно использовать совершенно бесплатно http://www.terrainformatica.com/htmlayout/prices.whtm :)
  • Наличие мобильной версии (http://www.terrainformatica.com/htmlayout/HTMLayoutMobileSDK.zip)

Если какие-то моменты заинтересуют более подробно, я буду рад ответить на вопросы :)
Форумы посвященные HTMLayout
Официальный http://www.terrainformatica.com/forums/
Неофициальный русскоязычный форум на рсдн http://www.rsdn.ru/forum/group/htmlayout.aspx


Примеры использованные в посте и скриншоты http://htmlayoutlab.com/tmp/flows.zip

2007-10-31

Toshiba Satellite A11

Пару дней назад впервые столкнулся с ремонтом ноутбука. Общие впечатления.
  1. S.M.A.R.T. действительно работает (по крайней мере в нашем случае) - за несколько часов до выхода винта из строя было выдано предупреждение.
  2. WinXP имеет готовые средства для работы со S.M.A.R.T. И это здорово.
  3. Разобрать незнакомый ноутбук несколько сложнее, чем простой комп, но вполне по силам. Найти информацию относящуюся к модели A11 (сделанной для внутрияпонского рынка) не получилось, однако оказалось вполне достаточно инструкции по разбору A10/A15. Найти в рунете сайт посвященный ремонту тошибовских ноутов не удалось.
  4. A11 оказался весьма продуманной штукой - чтобы произвести базовый ремонт: очистить процессор-кулер от пыли (хотя за год эксплуатации ее практически не накопилось!) / добавить память / изъять модем / поменять винт достаточно открутить два-три винта. Еще одно наблюдение - ни один винт не закручивается "до предела", но при этом ни одна деталь никогда не болтается - все сделано очень солидно.
  5. Самой сложной задачей оказалось найти новый IDE винчестер для ноута. Вопрос решился поездкой на Савеловский рынок - в первой же палатке был взят тошибовский 60-гб винт (вместо 40). Цена вопроса - 1700р.

2007-10-22

CSS Sandbox

http://aurelio.net/css-sandbox/
Nice CSS sandbox. Split page, click the properties on the bottom to see their effect on the top.
Отличная идея - на одной страничке удалось сделать доступными для теста сразу кучу возможностей CSS. Наглядно и максимально просто. Именно такой штуки мне не хватало, когда начинал разбираться с CSS.
todo собрать на днях аналогичный пример для HTMLayout.

2007-10-13

Дерево

Вкратце о текущей работе - HTMLayout Spy проект для отладки приложений сделанных на HTMLayout .

Для представления пользовательского документа (DOM-tree), потребовалось сделать дерево (как оказалось, стандартное, не подходит для работы с изменяющимися данными и больше служит демонстрационным целям).
Никогда не думал, что разработка этого элемента может потребовать такую тьму времени :(

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


Самым сложным оказался апдейт дерева. Путаница с индексами, одновременным созданием-удалением детей оказалась настоящим кошмаром. Еще один момент - пожалуй, это первый behavior разработанный с возможностью сделать его обобщенным. Думаю, после мелких доделок (небольшие переработки, создание примеров) выложу его в лаборатории.

2007-10-08

WordPress и (программный) код

Без дополнительных телодвижений, вместе сочетаются довольно хреново. А если говорить откровенно, просто так написать заметку содержащую, скажем html-код, без поллитры не получится.
Нагугленные линки для изучения вопроса (собственный поиск wordpress.org по словосочетанию "publish code" дает очень странные результаты)
  • http://codex.wordpress.org/Writing_Code_in_Your_Posts - после беглого просмотра складывается впечатление, что функциональность в самом WordPress очень бедная. По всей видимости, придется навешивать плагины.
Со следующими линками придется поразбираться вечером.

Ссылочка

http://www.boostcookbook.com/
Совсем молодой сайт. Думаю название делает ненужными комментарии.
todo Посмотреть, что там будет через месяц.

2007-10-05

WordPress. Текущие задачки

Что было сделано по ходу работы.
  • Теперь WordPress доступен из корня сайта. Операция оказалась хорошо документированной, поэтому процесс занял несколько минут
За время доводки сайта напильником, с http://themes.wordpress.net/ куда-то девались наиболее удачные темы. Например, ссылка на Stardust уже ведет на 404 :(

Последнее не очень приятно, т.к. хочется видеть работающими favicon и search. Да и спасибо разработчику темы сказать :)

Аналитика (тьфу*3) прикрутилась без проблем.


Скелет №2. WordPress глотает все пользовательские теги p, div вообще не обращая на них никакого внимания. Свинство.
Это просто песня лебединая. Если задать теги br (хоть десять штук) WordPress нормально отобразит их. Однако если начать редактировать пост, то их уже не будет и при следующем показе текст снова окажется смещенным.
Если в режиме Visual поместить несколько переводов каретки, то они не окажут никакого влияния при рендеринге. Понятно, что html их игнорирует, но совершенно непонятно почему WordPress не вставляет в код заглушки.
(Зачем это вообще нужно. Есть картинка, справа от нее располагается список. Как только картинка заканчивается, пункты списка прыгают пикселов на 40 влево. Получается очень некрасиво)

Upd Теперь понятно почему (здесь)

Use HTML
You don't have to use HTML when writing your posts. WordPress will automatically add it to your site, but if you do want control over different elements like boxes, headings, and other additional containers or elements, use HTML.
Интересно, почему они после этого не пишут, как делать таблицы :\
Upd2 Решение нашлось здесь.

in case anyone's interested, this problem has been solved on my side (thanks to the french WP support) by upgrading tinymce, and commenting out the following line of code in plugins/wordpress/editor_plugin.js
(around line 240)

// Remove anonymous, empty paragraphs.
// quentin: no don't, this prevents multiple line breaks
// content = content.replace(new RegExp('(\\s| )*', 'mg'), '');


Ну нафиг такие пляски с кодом. Сделал разрыв с помощью таблицы. Тег table WordPress жрать отказался :)

WordPress. Выбор темы.

Выбор темы для сайта.
Требования
  1. Тема обязана быть красивой :)
  2. Большой или "растягивающийся" столбец для постов. Узкий столбец удобен для чтения и заставляет даже самый плюгавый пост выглядеть самостоятельной статьей, однако для наполнения информацией годится слабо.
  3. Ссылки на другие страницы сайта должны быть четко выделены и находиться в заголовке (а не висеть рядышком, написанные стандартным шрифтом). Нельзя допускать, чтобы у пользователя возникли проблемы с поиском кнопки Buy Now :) (которая скоро появится)

Список кандидатов
  • SpotLight 1.3 Имеет дополнительные настройки - можно блокировать отображение выбранных страниц и устанавливать порядок сортировки страниц по заголовку, дате, порядковому номеру страницы
  • Blueprint 1.0
  • Stardust v1.0 Не отличает странички от постов (на страницах оставлены date, tags, comments), но выглядит очень ярко и красиво. Не умеет хватать favicon :(
  • Colorful 1.0
  • Fluid Blue 1.0.1 слишком минималистично для сайта (для блога, однако, нормально)
  • Mimetastic 1.0 мдя... что-то не то
  • Sade 1.1 слишком много информации к каждому посту.
  • Classy 1.0 Не поддерживает стандартного редактирования виджетов, однако смотрится симпатично
  • Andreas04 2.0 В целом неплохо
Общие выводы.
пару слов о http://themes.wordpress.net/
В основном, все сделано удобно для выбора пользователя - категории, предпросмотр, достаточное количество результатов поиска на страничке. Недостаток один - совершенно непонятно, как отсортировать темы по популярности.
Тем много (на оф. сайте заявлено больше 1600, при общем кол-ве закачек более 7'000'000), немало по-настоящему хороших. В первую очередь стоит смотреть темы пережившие первую версию ;)

В результате выбирал между SpotLight и Stardust. Пока остановился на Spotlight из-за большего набора шаблонов (конкретно - различия между постом и страничкой). Однако страничка SpotLight кажется узковатой. Практика покажет.

Нашел еще http://www.wpthemesfree.com/, но сил на поиск тем еще там, не осталось :).

WordPress

Решил попробовать поднять wordpress на htmlayoutlab.com. Конечная цель - использовать wordpress как простую CMS+блог. Опыта в использовании CMS никакого, в веб-девелопменте минимальный. Впечатления.
Что понравилось:
  • Доступный (+3!) хелп.
  • Легкий контент-менеджмент. Дополнительные секции (например, links, screenshots и т.д.) настраиваются простым перетаскиванием секции в нужный столбец Presentation->Widgets. Конструктор для детей :)
  • Куча готовых к использованию тем (для использования требуется просто распаковать архив и скопировать содержимое в каталог на сайте)
  • Естественно, качественный, готовый к употреблению блог
  • Поддержка permalinks (чтобы вместо ссылки domen.com/year/month/day/post-name можно было в браузере набрать просто domen.com/about/). Строго говоря, этим занимается не wordpress, а апач, однако wordpress позволяет выполнять такие манипуляции весьма легко.
Бонус
  • Оказалось, wordpress есть на godaddy (моего хостера) в составе готовых для использования тулов
При этом
  • Хрен поймешь без бутылки как поставить (оказалось, надо кликнуть по иконке Metropolis - это не очередная отвлекающая картинка, а вполне функциональная штука с маркетинговым именем)
  • Версия более ранняя, чем последняя, доступная на оф. сайте

Уже наткнулся на первый скелет
  • По умолчанию, блог закрыт для посещений поисковиками. Исправляется в Options->Privacy
Вопросы открытые для изучения:
  • Как навесить статистику (предположительно банальным редактированием нужного шаблона в Presentation->Theme Editor->Footer)
  • backup
  • на будущее: пустить несколько rss-каналов (основной, только Spy и т.д.)
Еще один открытый вопрос - установка форума (предположительно, http://bbpress.org/)

WordPress

Решил попробовать поднять wordpress на htmlayoutlab.com. Конечная цель - использовать wordpress как простую CMS+блог
  • Легкий контент-менеджмент. Дополнительные секции (например, links, screenshots и т.д.) настраиваются простым перетаскиванием
  • Куча готовых к использованию тем (для использования требуется просто распаковать архив и скопировать содержимое в каталог на сайте)
  • Естественно, качественный, готовый к употреблению блог
Бонус
  • Оказалось, wordpress есть на godaddy (моего хостера) в составе готовых для использования тулов
При этом
  • Хрен поймешь без бутылки как поставить (оказалось, надо кликнуть по иконке Metropolis - это не очередная отвлекающая картинка, а вполне функциональная штука с маркетинговым именем)
  • Версия на 0.1 меньше, чем последняя, доступная на оф. сайте

Уже наткнулся на первый скелет
  • По умолчанию, блог закрыт для посещений поисковиками. Исправляется в Options->Privacy
Вопросы открытые для изучения:
  • Как навесить статистику

2007-09-27

Археология исходников

В прошлой Компьютерре, Зверек Харьковский решивший подписаться серьезным наследственным ником Виктор Шепелев, опубликовал три любопытных (спасибо!) статьи на тему своего любимого конька - истории IT. После прочтения одной из них - "Археология исходников", появилось желание сказать несколько слов в догонку, для более полного раскрытия темы.
Сама статья посвящена исходникам, изучение/переработку которых можно смело относить к разряду археологических работ. Основной пойнт статьи, что лучший способ знакомства с кодом - это его "деятельное чтение" (чтение, в самом широком смысле) / отладка / использование / переписывание (практически в любом виде). Ближе к концу статьи делается оговорка, что это не всегда возможно по ряду причин (отсутствует нужная ОС/версия языка/библиотека и т.д. ) и конечно, не написано, что на самом деле наступает полный ёк - что делать с таким кодом не очень-то и понятно.
Как раз для последнего случая (и несколько в пику теории об "деятельном чтении") есть замечательный пример из жизни (не моей :) ). Автор рассказа, Лупин Сергей Андреевич - зам декана факультета Микроприборов и Технической Кибернетики МИЭТ (все что ниже приводится с его слов, по памяти).

Здесь потребуется сделать небольшое отступление - сказать пару слов о предмете археологических раскопок - ЦВМ (цифровая вычислительная машина) очистных сооружений на зеленоградском водоканале. Сами очистные сооружения, очевидно, были построены в первые года-десятилетия после основания города и выгодно отличаются качеством от массы других очистных сооружений в xUSSR. Город активно рос в 90-е и постепенно водоканал начал сталкиваться с прогибами производительности системы - ЦВМ слишком долго обрабатывала данные одного из техпроцессов. Я нарочно пишу ЦВМ, потому как в те лохматые годы еще не существовало рынка микропроцессоров, таким как мы его знаем сегодня и проектирование каждой вычислительной машины было своей отдельной задачей. Линус Торвальдс считающий, что настоящие мужчины сами пишут драйвера - наивный чукотский юноша, потому как настоящие мужчины собирают комп самостоятельно и знают его работу целиком, вплоть до функции отдельно взятого триггера :)
Собственно, с машиной собранной настоящими мужчинами и пришлось столкнуться Лупину. Отдельной строкой требуется сказать о документации для этого хозяйства. Общий объем документов описывающий архитектуру, приемы работы, сопряжение с периферией интерфейсы и т.д. составлял ... мм... 100 страниц? 300? 1000? несколько шкафов? - одну замусоленную страничку с системой команд и количеством пожираемых каждой командой тактов. Естественно, ни о каких refactoring tool, IDE, да даже о языках программирования речь идти не может - чистые машинные коды :) (если конечно на папке с бумагой не прилепить надпись IDE, а на ручке refactoring tool - Recoder :) )
"Настоящие мужчины", конечно же, много лет назад вышли на пенсию из давно разорившегося НИИ и даже найти их, а тем более узнать детали реализации проекта - задача совершенно непосильная (да и по-хорошему, ненужная). Собственно апгрейдом такой штуки и предложили заняться нашему зам декана (наверное именно так у человека за день может поседеть шевелюра :) ).
Все что удалось выудить дополнительно (кроме волшебного листочка) - дамп работающей программы.
(О разработке новой системы, понятное дело, даже не заикались - очень дорого)

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

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

Не знаю, получил ли Лупин за археологические изыскания премию, но чистая вода льется у нас из-под крана до сих пор :)

2007-09-17

Скелеты в шкафу Visual C++ 2005 Express

После чтения статей по деплойменту C++ приложений, в т.ч. How to: Deploy using XCopy складывается впечатление, что при динамической линковке с Runtime libraries, перед инсталляцией клиенту необходимо руками устанавливать Microsoft Visual C++ 2005 Redistributable Package (x86) (рилизные версии c/c++ библиотек). Неприятно. Завтра буду искать пути обхода проблемы.

lib vs dll

Наткнулся на список преимуществ dll перед lib Advantages of Using DLLs

2007-07-27

Отпуск!

Две недели на юге! :)

2007-07-23

Крылья 2007

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

По порядку.
Группы
Наибольшее впечатления:
Ногу свело
Почему-то выступали в первой части фестиваля и всего с четырьмя песнями. Раньше воспринимал их как забавных, эксцентричных музыкантов к которым легче прилепить ярлык "милые", чем "зажигающие". Выяснилось, студийные записи, радио и телевизор сильно врут - их выступление настоящее шоу. Покровский оказался музыкантом, который может сказать "до свидания" так, что будет смеяться (!), не прыгать или орать, а именно смеяться вся публика. Еще одно поразившее открытие - звучание рок-музыки способно быть добрым.
Аматори
Жестко, энергично, отвязно. В то же самое время - без полной потери головы (и это плюс), что характерно для артистов играющих в "жестких" стилях (пишу про личные впечатления, т.к. некоторым окружающим башню сносило вполне конкретно). Очень интересные музыканты.
Billy's Band
Как пояснила Катька, эта команда крутится на радио уже несколько лет. Я благополучно забив на телевизор, как-то неожиданно для забил и на радио (что заметил только что :) ), поэтому слышал их впервые. Выступать после такой энергичной группы как Психея задача совсем не простая, однако они с ней справились и быстро переключили внимание на себя. Играли интересно, энергично и привлекательно. Обязательно скачаю их для более детального знакомства.

Организация
Есть претензии к общему планированию - обещанный посетителям VIP-а проход всюду оказался фикцией, что было не очень приятно.
На сайте была объявлена стоимость пива - 40 рублей за кружку. Перед самым началом фестиваля, пиво подорожало на 10 руб, а кружка оказалась объемом 0.4 л. Так с помощью полуправды и недоговорки можно незатейливо поднять прибыль с продажи больше чем в полтора раза :) Для випов стоимость пива оказалась вообще 70, а к концу мероприятия и вовсе 100, что есть полное безобразие.

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

По окончании Крыльев, к огромной радости, не закрыли Тушинскую, что любят делать в случае массовых гуляний. Публику выводили по коридору, что живо напомнило фотки парада немцев в Москве в 44-м. Разве что шли не строем :)

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

Итого.
В общем и целом - очень удачное мероприятие, в нашей компании (9 человек) недовольных не было :) На текущий момент - самое яркое событие за лето этого года :)

2007-07-13

building Jam

Забавная ирония - создатели boost.jam, (универсального средства для билда проектов), сами вынуждены не только обходиться без него, но и поддерживать в актуальном состоянии два разных скрипта для билда под все поддерживаемые платформы. Например, для Windows это 14-ти(!) килобайтный файлик build.bat

Jam & GPL

Еще один пинок GPL
Jam isn't under the blinkin GNU copyright, so you can incorporate it into commercial products.
http://www.boost.org/doc/html/jam.html
Blinking - дьявольский, чертовский

2007-07-12

Наблюдение мимоходом

Если хак не исправлен в течении дня после его добавления, то он останется в проекте надолго. Чем грязнее хак, тем дольше он будет жить.

2007-07-11

boost + STLPort

Решил что подошло время поставить свежую версию буста.
Веселье началось сразу и вовсе не там где ожидалось. Структура документация успела поменяться и привычная вкладка Documentation уже не содержала ссылки на руководство по инсталляции. Задумчиво поковырявшись в списке библиотек, перешел на страничку Getting Started. Там тоже было пусто. Запасшись терпением начал методично искать нужный раздел. В итоге через 20 минут он нашелся в том самом Getting Started, внизу странички, под разделителем, где вся планета пишет копирайты и прочую никогда не читаемую хрень - лежали две ссылочки.
Документация радостно утверждала, что со времени предыдущего официального рилиза установка для студии несколько упростилась. Достаточно указать в опциях компилятор msvc (1) и директории - для временных файликов (2) и куда складывать либы (3). (Почему под временную нельзя брать директорию из переменной окружения Temp не очень понятно.) Утверждалось, что все будет сделано автоматически.

Подвох был почуян сразу (не люблю всякие автоматические решения со времен первого скрепыша для 95-ого офиса), а осознан во время компиляции. Листая список полученных либ и документацию, в разделе именования библиотек, обнаружилась следующая деталь. При наличии STLPort-а к имени либы должна добавляться буковка p
p - using the STLPort standard library rather than the default one supplied with your compiler.
Естественно, либы собирались без STLPort-а.
А дальше лежал тупичок - найти, место в документации где указано, что буст требуется собрать с помощью STLPort, просто не получилось. Раздел Identify Your Toolset об этом скромно умалчивает. Призванный на помощь гугл выдавал только баг репорты из бустовой переписки. То, что это был полный тупик - стало ясно чуть позднее, когда на поиски был потрачен час времени и перерыта вся попавшаяся документация по бусту и bjam-у

Немного помозговав, решил, что вообщем-то кроме привычки за STLPort меня ничего не держит (на RSDN достаточно высоко оценивали версии STL из стандартной поставки, выходившие после шестерки) решил пойти простым путем и собрать BOOST со стандартной поставкой STL. Через час хрустения винчестером инсталляция прервалась - закончились 1.5 гига места на диске.
Долго плевался.
Завтра почищу место и перекомпиляю либы.

Еще, ради интереса, обязательно подружу boost с STLPort-ом, хотя пока и не знаю как :)

2007-06-20

Tips for New Bloggers

Пока разбирался как запостить ютубную ссылку, нашел интересную подборку статей для начинающих блоггеров. Коллекция, конечно же, оформлена в виде блога Tips for New Bloggers

В России стало одним кандидатом наук больше

Поздравления Дмитрию Булыкину :)

(утянуто)

2007-06-18

Понедельник день тяжелый

А если с утра не работает RSDN, то ваще ужасный ;)

В личный цитатник правильное сообщение о проблемах на сайте (просто, доброжелательно, исчерпывающе)
Уважаемые посетители, приносим извинения - на сайте ведутся технические работы.
Плановое введение в строй - 16:00 19.06.2007.
Спасибо за понимание и терпение.

2007-06-15

Очередное решение по делу Ульмана

http://www.lenta.ru/news/2007/06/14/ulman/
Обвиняемые по "делу Ульмана" признаны виновными с третьей попытки


Если считать серьезные претензии к президенту, за время его правления (их набирается немного) в первую очередь вспоминаются
  • Взрывы домов в Москве и Волгодонске (+ Рязанские учения)
  • Сдержанная реакция на гибель подлодки "Курск"
Данное решение суда, конечно, случай немного другой весовой категории, но... оно тоже запомнится.

2007-05-25

Preved!

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

2007-05-17

Выложил на рсдн технодемку HTMLayoutDbg

HTMLayoutDbg
Если кратко, HTMLayoutDbg планируется как мощный инструмент для использования (и помощи в освоении) HTMLayout. Подробности по ссылочке.
Положил краткое описание, сырцы, exe, скриншот и флеш-демку. Доволен. С интересом жду реакции :)
А на остаток дня - хорошая музыка, интересная книга и возможно, пиво :)

2007-05-15

Яndex vs Google.

При запросе "Судоплатов" с первой странички
Гугл выдает одну ссылку на книжный магазин, Яndex девять.
Сравнение КПД выглядит приговором :)

2007-05-12

GC и memory management

http://www.hpl.hp.com/personal/Hans_Boehm/gc/
http://www.iecc.com/gclist/GC-faq.html
http://www.memorymanagement.org
http://www.iolanguage.com/Library/Papers/MemoryManagement/GenerationalGC.pdf
http://www.concentric.net/~Rtgillam/pubs/Garbage1.html
http://www.concentric.net/~Rtgillam/pubs/Garbage2.html
http://www-plan.cs.colorado.edu/diwan/class-papers/gcsurvey.ps
http://cs.haifa.ac.il/~shuly/teaching/05/programming-languages/presentations/garbage.pdf

via Сергей Мухин, lazyden

P.S. Blogger, оказывается не преобразует автоматически линки вида "http://anylink.com" в ссылки.
P.S.S. Да и с подсветкой набранных руками ссылок в режиме "Compose" у него проблемы

Мемуары П.А. Судоплатова

Судоплатов П.А.

Дочитал на днях книгу Судоплатова
"Спецоперации. Лубянка и Кремль 1930-1950 годы." (pdf)

Очень кратко о персоне.

* Родился 7 июля 1907
* Самые известные довоенные операции - ликвидация Коновальца и Троцкого.
* В годы войны являлся начальником Четвертого управления НКВД - НКГБ, руководил партизанскими и разведывательно-диверсионными операциями в тылу противника, координировал работу агентурной сети на территории Германии и ее союзников.
* С февраля 1944 г. начальник группы "С" (группы Судоплатова) при наркоме внутренних дел СССР, руководил переводом и обобщением агентурных материалов по атомной проблеме.
( Из всех советских разведчиков только двое удостоены полководческих орденов Суворова. Это генералы Судоплатов и Эйтингон (друг и заместитель Судоплатова) )
* После окончания войны возглавлял различные диверсионные отделы НКВД-МГБ.
* 20 августа 1953 года арестован.
* В августе 1968 г. был освобожден.
* В феврале 1992 г. в соответствии с Законом РФ «О реабилитации жертв политических репрессий» был реабилитирован Главной военной прокуратурой РФ.
* Скончался 26 сентября 1996 года.
* В 1998 г. указом Президента РФ посмертно восстановлен в правах на государственные награды; ордена и медали возвращены его семье.

Книга оставляет своеобразные впечатления.
С одной стороны типично мемуарное произведение.
С другой - умудряется иногда пропускать/не упоминать значительные куски событий (по каким критериям - непонятно).

Пример 1. Ни разу не сказал о том, что Кобулов был его заместителем, несмотря на то, что регулярно упоминает его в тексте книги.
Пример 2. Несколько раз открыто указывает на проблемы во взаимоотношениях с Абакумовым (в послевоенный период) и при этом ничего не пишет о причинах.

Чувствуется косточка старой закалки :)


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

Виденные отзывы о книге разделились - кто-то восхищается, некоторые считают книгу пустой.
Мне книга понравилась. Понравился и сам Судоплатов (насколько можно судить по одной, по сути автобиографической книге)
Во время чтения чувствовалась нехватка подробных сведений об истории СССР в 30-50-x - руководителях, организации коммисариатов (министерств), происходивших событиях. Так же, хочется посмотреть на альтернативные точки зрения на описываемые события.

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

(о Катыни)
Говоря о преступном массовом уничтожении польских военнопленных и попытках Хрущева и Горбачева скрыть эту трагедию, надо отметить и то обстоятельство, что, возможно, расстрел поляков в 1940 году был своего рода мщением, сведением счетов с ярыми антисоветчиками, польскими офицерами, за уничтожение сорока тысяч (по разным данным разные цифры) наших военнопленных в польских концентрационных лагерях после поражения Красной Армии в 1920 году под Варшавой.

Безусловно, хитрый лис приплетает Хрущева и Горбачева не просто так.
Интересно, действительно ли события имели место?

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

Гугл по запросы голодный бунт Муром выдает данные о событиях 1606 года.

Не подозревал, что в 60-х годах в (отдельных областях) СССР было все так плохо.

2007-05-04

sky.fm

На днях masterx посоветовал интернет-радио http://sky.fm/
Если есть желание слушать музыку и качественный интернет, рекомендую - куча каналов по жанрам, мало рекламы, интересная музыка (слушал * Jazz, Lounge). Впечатление по сравнению с отечественным радио - земля и небо. Давно искал нечто подобное.
Список каналов:
DaTempo Lounge, Classic/Alternative/Indie Rock, Smooth/Uptempo Smooth Jazz, Top Hits Music, Best of the 80s, All Hit 70s, Oldies, Mostly Classical, Classical Guitar, New Age, World Music, Roots Reggae, Urban Jamz, Classic Rap, Countr Salsa...
Дальше копировать ломает :)