После долгого перерыва вышел новый номер журнала "Практика функционального программирования". В новом номере опубликованы интервью с Саймоном Пейтон Джонсом и Джо Армстронгом, а также несколько интересных статей.
Кроме того, выпущена бумажная версия журнала. Подробнее об этом, в официальном анонсе!
12.11.10
Рабочее/файл-форматное 2
Как и было обещано, Microsoft опубликовал видео сделанное на лекциях о форматах файлах, о которых я писал в предыдущем посте. Тем, кто работает с офисными форматами файлов, будет интересно
Labels:
file formats,
microsoft,
msoffice,
work
4.11.10
Рабочее/файл-форматное
Две недели назад я побывал на семинаре в Microsoft (в офисе в Редмонде) посвященном работе с файлами Microsoft Office. Поскольку я давно общаюсь с соответствующими подразделениями Microsoft на темы работы с различными форматами файлов, то было очень интересно познакомиться как с людьми, которые готовят документацию по протоколам и форматам файлов, так и с самими разработчиками Microsoft Office.
Семинар длился два дня, в течении которых разработчики MS Office рассказывали про внутреннее устройство разных частей Office, и как они соотносятся с тем, что сохраняется в файлах. Кроме того, была возможность задать свои вопросы напрямую разработчикам и людям, отвественным за документацию.
Поскольку такой семинар проводился впервые, то внешних разработчиков было не особо много (человек 15 из разных компаний), но было много представителей Microsoft, и обстановка была "рабочей", т.е. ответы на задаваемые вопросы получались практически сразу, что было очень полезно - можно было показать проблемные файлы, обсудить куски кода и т.п.
Channel9 должен вскоре опубликовать видео с прочитанными лекциями, и как только они появятся, я напишу дополнительно. Кроме того, был создан отдельный блог, в котором будут публиковаться анонсы о будущих семинарах, посвященных работе с файлами Microsoft Office, и сопуствующим тематикам. И я надеюсь, что в будущем такие семинары будут проводиться и в Европе - все-таки достаточно тяжело добираться в центральный офис MS...
P.S. хотелось бы отметить, что за последние два года документация по форматам файлов и протоколам очень сильно улучшилась, что не может меня не радовать, поскольку уже устал заниматься reverse engineering...
Семинар длился два дня, в течении которых разработчики MS Office рассказывали про внутреннее устройство разных частей Office, и как они соотносятся с тем, что сохраняется в файлах. Кроме того, была возможность задать свои вопросы напрямую разработчикам и людям, отвественным за документацию.
Поскольку такой семинар проводился впервые, то внешних разработчиков было не особо много (человек 15 из разных компаний), но было много представителей Microsoft, и обстановка была "рабочей", т.е. ответы на задаваемые вопросы получались практически сразу, что было очень полезно - можно было показать проблемные файлы, обсудить куски кода и т.п.
Channel9 должен вскоре опубликовать видео с прочитанными лекциями, и как только они появятся, я напишу дополнительно. Кроме того, был создан отдельный блог, в котором будут публиковаться анонсы о будущих семинарах, посвященных работе с файлами Microsoft Office, и сопуствующим тематикам. И я надеюсь, что в будущем такие семинары будут проводиться и в Европе - все-таки достаточно тяжело добираться в центральный офис MS...
P.S. хотелось бы отметить, что за последние два года документация по форматам файлов и протоколам очень сильно улучшилась, что не может меня не радовать, поскольку уже устал заниматься reverse engineering...
Labels:
file formats,
microsoft,
msoffice,
work
Дайджест прочитанных книг. Октябрь 2010
Pro Git
Так получилось, что я использую Git достаточно давно, с времен когда книг по нему еще не было, но тут наткнулся на эту книжку и решил ее прочитать на предмет обнаружения неизвестных тем. Книга имеет отдельный сайт где доступна полная версия книги в виде HTML (есть еще и версия в epub), а также имеется блог где попадаюются интересные заметки. А исходники книги, вместе с примерами доступны на github.
Книга начинается с краткого обзора Git, зачем он был создан, истории и т.п. вещей. Есть небольшой раздел посвященный установке и первоначальной настройке Git.Во второй главе повествование переходит к использованию Git, начиная с простейших вещей, типа внесения (commit) изменений, просмотра истории изменений, отмене изменений и т.п. вещам. Также даются необходимые сведения по работе с удаленными (remote) репозиториями. Третья глава полностью сосредоточена на вопросах, связанных с созданием веток (branching), начиная с простых команд для создания веток и переключения между ними, и заканчивая достаточно подробным описанием использования rebase. Отдельный раздел посвящен возможным схемам разработки используя несколько веток.
4-я глава посвящена вопросам создания удаленного репозитория Git, включая рассмотрение доступных протоколов, предоставление публичного доступа к серверу, а также рассматриваются различные утилиты, предназначенные для упрощения создания разделяемых репозиториев, таких как Gitosis, Gitolite и т.д. А 5-я глава посвящена вопросам использования Git для коллективной разработки, начиная с рассмотрения различных подходов к организации разработки (доступ к общему репозиторию, выделение отдельной роли интегратора изменений, и т.п.), и рассматривая отдельно роли контрибьютора и мейнтенера проекта.
В 6-й главе рассматриваются различные "нестандартные" вопросы использования Git, которые реже встречаются в работе — использование внешних модулей в репозитории, слияние под-деревьев, переписывание истории изменений и т.п. 7-я глава достаточно подробно рассматривает вопросы настройки Git, включая создание хуков. А 8-я глава посвящена вопросам интеграции Git и SVN, а также вопросам миграции на Git с других систем контроля версий.
И заканчивается книга главой о внутреннем устройстве Git, как хранятся объекты и прочая информация, как эта информация передается используя различные протоколы и т.д.
Заключение: хорошее введение в Git, рекомендуется для тех, кто собирается начать использовать Git. А те, кто уже работает с Git тоже могут найти что-то интересное в книге, например, описание утилит для организации репозиториев, или другую полезную информацию.
Data-Intensive Text Processing with MapReduce
В свободное время (а иногда и на работе) я развлекаю себя различными задачами для решения которых нужно обрабатывать большие объемы данных. В качестве платформы был выбран Hadoop, и задачки пишутся с использованием clojure-hadoop и других утилит.
Я уже писал про книгу "Hadoop: The Definitive Guide" (кстати, сейчас вышло второе издание, которое было обновлено описанием свежих версий Hadoop), но в отличии от этой книги, книга Data-Intensive Text Processing with MapReduce не описывает детали программирования для Hadoop или какой-то другой системы основанной на принципах Map/Reduce, а посвящена вопросам проектирования алгоритмов которые будут выполняться в таких системах. В книге также рассматриваются реализации известных алгоритмов, таких как создание инвертированных индексов для поиска, адаптированных для параллельной обработки данных. У данной книги есть отдельный сайт, где вы можете найти дополнительную информацию, а также свободно скачать бета-версию книги. Кроме того, для экспериментов с алгоритмами, описанными в книге, авторы создали библиотеку Cloud9, которую вы можете использовать в своей работе.Книга начинается (глава 1) с небольшого описания основных концепций Map/Reduce, как задания выполняются в фреймворке, как происходит разделение задач между mappers & reducers. Кроме того, приводится небольшое описание основных подсистем Hadoop, чтобы читателю было понятно как происходит распределение заданий, хранение обрабатываемых данных и т.п. вещи.
Вторая глава рассматривает различные подходы к реализации алгоритмов для Map/Reduce, начиная с наивных реализаций, и затем рассматривая вопросы оптимизации алгоритмов (например, путем объединения результатов прямо в mapper, или использования дополнительных combiners), сортировку результатов, объединение результатов (joins), и т.д.
Глава 3 показывает как можно в рамках Map/Reduce реализовать генерацию инвертированного индекса, который используется при поиске по документам. Сначала приводится наивная реализация генерации индекса, которая оптимизуется в следующих главах, вводя возможность сжатия индекса и т.п. вещи.
4-я глава полностью посвящена реализации алгоритмов на графах в рамках Map/Reduce. В качестве первого примера рассматривается поиск кратчайших путей в графе, и показана реализация для этой задачи, вместе с описанием недостатков, присущих параллельной реализации. А в качестве второго примера используется вычисление PageRank для набора страниц. И в последнем разделе этой главы рассматриваются проблемы, которые возникают при обработке графов при помощи Map/Reduce и даются ссылки на дополнительную литературу.
В 5-й главе рассматривается использование Map/Reduce для решения задач machine learning на примере одного из класса алгоритмов — expectation maximization. В первом разделе главы описываются сами алгоритмы expectation maximization, а в следующих разделах описывается hidden markov models как класса задач, к которому применимы алгоритмы expectation maximization, и затем показывается реализация expectation maximization на базе Map/Reduce.
И в заключении авторы вкратце рассматривают недостатки парадигмы Map/Reduce и рассматривают альтернативные подходы к масштабным вычислениям.
Заключение: Если вы программируете для Hadoop или другой системы Map/Reduce (включая самописные), то книжку читать обязательно — в ней достаточно много советов по "правильной" организации обработки данных. Кроме этого, в конце книги имеется внушительная библиография, которая может послужить отличным источником дополнительной информации по соответствующим темам.
Подписаться на:
Сообщения (Atom)