четверг, 26 января 2012 г.

Питер Сейбел "Кодеры за работой"



Аннотация

Программисты - люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Джейми Завински, Саймона Пейтон-Джонса, Питера Норвига, Дугласа Крокфорда, Джошуа Блоха, Брендана Айка, Джо Армстронга, Брэда Фицпатрика, создателя Живого Журнала, и других.
Все они "подсели" на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.
Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.

Хорошая книга, для медленного чтения, по главе в день. Автор своё дело знает и почти везде где надо интервьюируемых дожимает, но некоторые места все же так и хочется откомментировать :)

Джейми Завински
...мы всегда выпускали версии под все платформы одновременно. Это решение они тоже считали глупым: "У 90% пользователей версии под Windows, так что мы сосредоточим усилия на работе версии под Windows, а позже портируем ее под остальные платформы". Так поступали многие компании, потерпевшие крах. ... Если вы действительно хотите выпускать кроссплатформенное решение, то разрабатывать всё нужно одновременно. А портирование приводит к паршивому результату на второй платформе.
...
Была и еще одна книга, которую все считали величайшим трудом своего времени: "Design Patterns". По-моему, отстой. Там учили программировать методом "вырезания и вставки".
Copy-paste идиом программирования . Есть такое подозрение, что "Design Patterns" ему Рабинович по телефону напел :))

Брендан Айк
Объектно-ориентированное програмиирование, шаблоны проектирования - это не для меня. Я так и не купил книгу Эриха Гаммы.
...
У меня страшная аллергия на всякого рода эзотерические решения, шаблоны проектирования, доступные немногим. Питер Норвиг, работая в Harlequin, сказал о том, что шаблоны проектирования - всего лишь дефекты в вашем языке. Возьмите язык получше!
Вот здесь хотелось бы по конкретнее. Есть, например, протокол, реализованный как State-машина на C++, берем более лучший язык и? состояния-то и переходы между ними ни куда не делись... Или более лучший - это со встроенной State-машиной? Непонятно...

Джошуа Блох
- Есть ли книги, которые должен прочесть каждый программист?
- Разумеется, "Design Patterns", хотя я отношусь к ней не совсем однозначно. Она дает общий для всех словарь. И в ней масса хороших идей. С другой стороны, мешанина стилей и языков.
Мешанины языков не заметил, а вот написана отвратительно, факт. Сейчас лучше брать сразу "Паттерны проектирования" Фрименов и Со

Джо Армстронг
Некоторые говорят: "Хотите знать, что делает программа? Читайте код". Думаю, это непрофессиональный подход. Код показывает мне, что программа делает, а не то, что она должна по идее делать. Код - это решение задачи. Если нет спецификации или какой-либо документации, приходится догадываться о задаче по решению. Догадка может быть неверной. Я хочу иметь объяснение - в чем состоит задача.
Вот это - Я хочу иметь объяснение - в чем состоит задача - отлить в граните и сбрасывать на каждый флейм про то нужны или нет комментарии.

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

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

Берни Козелл
Впервые попробовав Java - еще совсем молодой тогда язык, - я сказал себе: "А, еще один язык, призванный помочь посредственным программистам встать на путь истинный, ограничивая их". Но, возможно, сейчас это и правильно.
...
Наверное, Си - идеальный язык для по настоящему хороших системных программистов, но увы, его много используют и программисты похуже, а не стоило бы.
...
После этого на планерках они спорили со мной: "Почему вы жалуетесь, что я прописал глобальные переменные здесь, что я делаю то-то и то-то, что вам не нравится моя структура подпрограмм? Программа же работает?"
Их удивлению не было предела, когда я отвечал: "Конечно, программа работает. Вас взяли сюда именно потому, что вы умеете писать работающие программы. Написание программ - чисто ремесленный навык, и у вас он есть. А теперь вам нужно научиться программировать."
Как я до сих пор никому не дал в лоб за вот это Программа же работает?, просто поражаюсь :) своему ангельскому терпению

Дональд Кнут
Я узнал очень много нового, пока работал над этим проектом. В частности узнал, как много ресурсов вашего мозга съедает разработка ПО. Это оказалось намного более сложным заданием, чем я ожидал. Я не мог одновременно преподавать на полную ставку и полноценно заниматься разработкой ПО. Но я мог преподавать на полную ставку и полноценно заниматься написанием книг; ПО же требовало невероятного внимания к мельчайшим деталям. Мой мозг был забит только программным обеспечением, так что я не мог думать ни о чем другом.
Про съедение мозга дедушка Кнут заметил архиверно :(

Ну и отдельное спасибо товарищам maniac, Алёна C++ и sergeyteplyakov, которые сделали так, что книгу битком набитую программистским жаргоном можно без содрогания (и даже более того) читать на русском.

пятница, 20 января 2012 г.

Автотюнинг БД MSSQL с Database Engine Tuning Advisor

Ну и запросы у вас - сказала база данных и повисла

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

  • Запускаем SQL Server Profiler ("C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\PROFILER.EXE"), Файл - Создать трассировку (Ctrl-N), включаем сохранение в файл, увеличиваем размер файла:



  • Нажимаем Запустить, открывается окно с трассировкой:



  • Открываем приложение(я), которое работает с БД и выполняем все операции, которые так или иначе обращаются к БД, ну или как вариант выполняем только ту операцию, с тормозами которой надо разобраться.
  • Останавливаем трассировку Файл - Остановить трассировку.
  • Запускаем Помощник по настройке ядра СУБД (Database Engine Tuning Advisor, "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\DTASHELL.EXE"):



  • Указываем файл, созданный профайлером и имя БД (можно и отдельные таблицы в этой БД), обращения к которой надо анализировать:



  • Давим кнопку Начать анализ
  • По завершению анализа программа выдаст рекомендации по тюнингу БД:



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

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

понедельник, 16 января 2012 г.

Сканирование книг в djvu

Сохраню-ка я порядок действий и имена программок, а то через год все снова позабудется.

Сканирование

  • Не надо заморачиваться указанием правильных границ страницы при сканировании - обрезать можно потом
  • Если страница книги значительно меньше, чем окно сканера, можно включить в ПО сканера исправление наклона текста, сканер сам выровняет даже очень косо положенную страницу:


  • Сканировать лучше с хорошим качеством, минимум 600dpi, буквы в djvu в этом случае получаются более читаемые
  • Сканировать в jpg нельзя, только в формат без потерь - bmp или tiff
  • Имена файлов отсканированных страниц должны быть единообразные с встроенным номером, например Image0001.bmp, Image0002.bmp и т.д.

Обрезка страниц

Для обрезки можно использовать ScanKromsator. Нужно использовать версию 5.92beta, по ссылке есть еще 5.93, но она почему-то убирает цвет независимо от настроек. Там же по ссылке есть инструкции к ScanKromsator, но общий порядок такой:
  • Открываем в ScanKromsator сразу все отсканированные файлы - File - Open images
  • Делаем Draft Kromsate (Черновая расстановка резаков, кнопка с ножницами), после этого появится возможность двигать границы страниц
  • Делаем чистовую расстановку границ каждой страницы (синие линии) руками:


  • Если нужно сохранить естественный фон страниц лучше убрать опцию Page - Deskew (выравнивание текста), иначе по краям появятся белые скосы от поворота страниц при выравнивании
  • Опять же, если нужно сохранить естественный фон страниц надо убрать опцию Automargins (авторасстановка полей), чтобы ScanKromsator не умничал, а использовал вручную заданные границы
  • Чтобы опция была применена ко всем страницам, при выборе ее удерживаем Ctrl
  • Сохраняем проект - File - Save task
  • Нажимаем Process!, в выходном каталоге начнется запись файлов с обрезанными страницами
  • Это упрощенное использование ScanKromsator, там есть всякие умности, см. инструкцию.

Сборка в djvu

  • С той же странички берем программу DjVu Small, запускаем
  • Добавляем файлы, созданные ScanKromsator
  • Профиль можно брать Default (далее в порядке ухудшения качества и уменьшения размера: Map, Clean, Manuscript, Scanned):

  • Задаем выходной каталог и, в опциях, имя результирующего файла, давим Пуск

Результат - Сережа Тарабука - вождь племени Вамбы-Намбы

пятница, 13 января 2012 г.

Андрей Козлович «Тёмное пламя»

Темное пламя
XXIII век. Множество вещей, предсказанных более чем два века назад мыслителем Эрф Ромом в романах "Туманность Андромеды" и "Час Быка", сбылись с пугающей точностью. Кроме одной: предсказания о великой войне, в которой погибнет не менее половины человечества. Звездолет "Тантра", отправленный к планете Ирида, чьи передачи по Великому Кольцу внезапно оборвались, обнаруживает, что цивилизация на планете погибла. Ученые полагают, что виной тому были рискованные эксперименты иридиан с расщепляющимися материалами. Однако это не так. Новая экспедиция обнаруживает страшную правду: планету уничтожил массированный ядерный удар из космоса. Межзвездный фашизм существует. Разгадать "код Эрф Рома" - значит, спасти Землю.
Интересная задумка, когда рекламный отрывок прочитал, сразу купился. Сюжет тоже неплох. Так что продолжения, планируемые автором я читать буду.

Теперь что напрягло - персонажи к сожалению совершенно картонные, автор похоже настолько был поглощен своими идеями, что на людей ни времени ни желания уже не осталось :(
Чисто логически напрягает то, что персонажам XXIII века похоже нечего обсудить и не от чего оттолкнуться, кроме России рубежа XX-XXI веков :), отсылки в этот период (для XXIII века) просто непропорционально подробны и многословны.
Вообще количество авторских проповедей, вложенных в уста разных персонажей близко к критическому, я понимаю, что идеи прут, но надо бы осторожнее, бо "когда писатель становится проповедником, он кончается как писатель." ©

вторник, 10 января 2012 г.

Семинар по кендо А.Глушко

6-7 января 2012 года в Челябинске на базе клуба "Кеншо" прошел семинар Александра Глушко (5 дан кендо). Участвовали Челябинск, Магнитогорск и Миасс, всего человек 15. Из-за небольшого количества народу семинар здорово отличался от тех, на которых я был раньше (на том же Кубке Урала) - там носилось человек по 40-60 и хорошо если тебя замечали хоть один раз. В этот раз все были на виду, всех при необходимости правили, можно было спокойно задать вопросы и уточнить все непонятки.

Первый день был полностью посвящен изучению 9 форм bokuto ni yoru kendo kihon. Выглядеть это должно примерно так:



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

На второй день повторили тот же ni yoru kendo kihon уже с синаями и богу, отрабатывали работу рук в ударах до и коротких ударах мен и котэ. После обеда была подготовка к аттестации - кирикаяси и учикоми-кейко. Аттестовались 5 человек (двое на 4 кю и трое на 2й), все сдали (в том числе и я, на 2-й кю :) ).

Ну и после аттестации - джикейко. Обнаружил, что если с атакой у меня более-менее, то с контратаками полные дрова.

Фотка на память:



И подарок на память сенсею :)



з.ы. Собственно с семинара фоток нет, тут или прыгать или снимать :(, ожидается небольшое видео от автора фильма Do [ПУТЬ], ждёмс.

воскресенье, 8 января 2012 г.

Do [ПУТЬ]



Отлично сделано, и по содержанию и по форме.

Fkniga.ru

В нашу деревню оказывается пришел прогресс, теперь можно заказать книжку на сайте Fkniga.ru и получить ее в магазине "Книжный город" на Машгородке или на Автозаводе. Заказал 24 декабря - получил 30-го, и уж совсем чудо - заказал 29 декабря, привезли 06 января.

В это же время заказ с ozon.ru от 21 декабря, судя по трекингу, к 2 января доехал только до Челябинска и там видимо провалился в черную дыру, больше никуда не едет.