20090721

microsoft делает вклад в linux-сообщество драйверами для gnu/linux. part 3.

начало: http://sash-kan.blogspot.com/2009/07/microsoft-linux-gnulinux.html

presspass: какую пользу могут извлечь клиенты из этих самых linux device drivers?

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

клиенты говорили нам, что им хотелось бы остановиться в вопросах виртуализации на одной платформе. и linux device drivers позволят клиентам, работающим с gnu/linux, запускать свои gnu/linux и windows-серверы на одной платформе виртуализации, уменьшая общую сложность инфраструктуры.
следовательно, у них будет больше выбора в том, как разрабатывать и развертывать решения, управляя при этом всем дата-центром из одной консоли управления.

presspass: что подвигло microsoft на этот шаг?

Ramji: нынешний экономический климат вынуждает многие компани консолидировать их аппаратное и программные активы, откладывая приобретение нового программно-аппаратного обеспечения и снижая расходы на поездки и обучение, - делать все возможное для того, чтобы сократить расходы на контролируемую инфраструктуру и получить максимальную отдачу от своих квалифицированных сотрудников.
многие компании часто обращаются к microsoft с просьбой помочь им добиться успеха в гетерогенном технологическом мире потому что мы понимаем, что уменьшение сложности является ключевым фактором для снижения затрат. мы рассматриваем совместимость как рычаг для роста бизнеса.
можно сказать так: повышение производительности gnu/linux при запуске поверх windows server будет взаимовыгодно и для наших клиентов, и для microsoft, и для коммерческих, и для свободных дистрибутивов gnu/linux.

presspass: есть ли ещё примеры работы microsoft на ниве opensource?

Ramji: многие люди весьма удивляются, когда узнают, сколько opensource-разработок и контактов с opensource-community проходит через microsoft. это, вероятно, имеет непосредственное отношение к факту, что мы сосредоточены на получении результата и привлечении сообщества на основе персональных контактов, не особо это афишируя. мы в настоящее время участвуем и сотрудничаем в ряде opensource-проектов, предоставляя техническую поддержки и код.
примеры могут быть найдены в работе, которую мы проделали с php-community: был сделан вклад в php engine, оптимизация php 5.3 для работы в windows, повышение производительности многочисленных php-приложений в windows. ещё — продолжающееся участие в различных проектах apache software foundation, таких как hadoop, stonehenge и qpid. в дополнение к этому мы работали над улучшением взаимодействия с axis2 и оказывали поддержку firefox community в оптимизации firefox для vista и windows media player.
примеры подобного рода разбросаны по всей компании.

presspass: каковы перспективные планы microsoft по работе с сообществами opensource на ближайшие три-пять лет?

Ramji: мы сосредоточены на создании устойчивых бизнес-стратегий в области opensource в Microsoft.
исходя из этого, мы видим, что opensource играет в трёх ключевых областях, одна из которых заключается в использовании "входящего (inbound)" открытого исходного кода и opensource-ной модели развития, что делает наши процессы разработки более эффективными. наглядными примерами этого является то, что мы делали в последнее время с jquery в visual studio 2008, внедрение коннекторов openpegasus и адаптеры в system center operations manager, а также работа, которую команда microsoft high computing проделала совместно с argonne national lab (anl) над их реализацией mpich2 (переносимая реализация message passing interface (mpi)), используемой в кластерных вычислениях и супер-компьютерах.
другая область — «евангелизм продукта (product evangelism)» — привлечение людей к принятию наших технологий. в течение 34 лет у microsoft была стратегия open-edge, в соответствии с которой мы предоставляем открытые интерфейсы прикладного программирования и наборы средств для разработки п.о.. opensource - следующий уровень в наших усилиях, направленых на создание широкого принятия платформы (to create broad platform adoption). пример этого - ajax control toolkit. наши усилия в плане функциональной совместимости — также часть процесса «евангелизма продуктов» microsoft (пример: предоставление большей видимости функциональных возможностей windows из php-приложений).
третья область — использование opensource для уменьшения маркетинговых расходов и цен или тестирование новых фич, которые пользователи до этого в глаза не видели. opensource образовательные инструментальные средства, недавно выпущенные для microsoft office, — хороший пример. в частности, add-in-ы для математической и химической нотации позволяют учителям и студентам увидеть, что они могут использовать office для диапазона новых вещей, о которых они и не знали. в дополнение к использованию latex-а, сильной, но сложной системы подготовки документов, для описания математических проблем, учителя увидят новые возможности, доступные из microsoft word.
поскольку opensource адаптирован на ряде платформ, понимание, привлечение и поддержка opensource-разработки продолжает оставаться фундаментом для предоставления клиентам большего выбора.

microsoft делает вклад в linux-сообщество драйверами для gnu/linux. part 2.

начало: http://sash-kan.blogspot.com/2009/07/microsoft-linux-gnulinux.html

presspass пообщался с Ramji и Hanrahan, чтобы узнать больше о сегодняшнем заявлении.

presspass: microsoft всерьёз сватается за opensource community. какую роль сегодняшние новости сыграют в общей opensource-стратегии microsoft?

Ramji: мы видим, что сообщества microsoft и opensource растут вместе, что, в конечном счете, идёт на пользу нашим клиентам. сообщество linux, например, создало платформу, у которой много пользователей. поэтому наша стратегия состоит в том, чтобы укрепить взаимодействие между платформой windows и многими opensource-технологиями (включая gnu/linux), с целью обеспечить возможность выбора, о которой просят нас наши клиенты.
центральной частью нашей стратегии является работа в ostc, которую мы начали около трех лет назад. ostc имеет глубокие технические познания в gnu/inux, unix и opensource-технологиях, а также прочные социальные связи в opensource-сообществах. мы многому научились у лидеров этих сообществ в плане того, как эффективно работать вместе, и полны решимости продолжать диалог.
наша работа в этой области — предоставление большей свободы действий и выбора, и запросы наших клиентов и партнеров действительно задают импульс этим усилиям. мы слышим всё больше и больше рассказов от клиентов и opensource-партнёров о том, что они получают одни из наилучших показателей при развертывании новых oss-решений поверх существующих платформ microsoft. сегодняшний релиз был бы неслыханным со стороны microsoft всего лишь несколько лет назад, но это яркий пример, что потребительский спрос является мощным катализатором перемен.

presspass: так что же вы, собственно, зарелизили сегодня?

Hanrahan: сегодня мы выложили код linux device driver-а для разработчиков ядра linux. это является важной вехой, поскольку мы в первый раз зарелизили код непосредственно для linux community. не менее важен тот факт, что выпустили мы его под лицензией gplv2, являющейся предпочтительной в linux-сообществе.
первоначальной нашей целью при написании кода был запуск gnu/linux как виртуальной машины поверх hyper-v (гипервизора от microsoft) и, собственно, осуществление виртуализации.
драйверы устройств linux, которые мы выложили, сконструированы таким образом, что ядро linux может работать в прогрессивном (enlightened) режиме, дающем ему те же оптимизированные искусственные устройства, что и виртуальной машине windows, работающей поверх hyper-v. без этого кода gnu/linux, конечно, может работать поверх windows, но с далеко не таким же высоким уровнем производительности. мы работали в очень тесном контакте с командой hyper-v, чтобы этого добиться.
продолжение

microsoft делает вклад в linux-сообщество драйверами для gnu/linux. part 1.

круглый стол «вопросов и ответов»: Sam Ramji, старший директор по стратегии на платформе microsoft, а также Tom Hanrahan, директор центра opensource-технологий microsoft, обсуждают релиз linux-драйвера, сделанный компанией под general public license v2.

редмонд, штат вашингтон, 20 июля, 2009 - сегодня, ломая обыденность, microsoft выпустила 20000 строк кода драйверов для linux-сообщества. код, который включает в себя три linux-драйвера, был передан сообществу ядрописателей для включения в дерево исходников linux. драйверы будут доступны linux-сообществу и позволят повысить эффективность работы операционной системы gnu/linux в виде виртуальной машины под windows server 2008 hyper-v и windows server 2008 r2 hyper-v.

Sam Ramji отвечает за создание устойчивых партнерских отношений с opensource-сообществами в рамках его роли старшего директора platform strategy в организации microsoft’s server and tools. роль включает в себя надзор за функционированием microsoft’s opensource technology center (ostc), который выступает в качестве целевой точки для opensource-сообществ и компаний, заинтересованных в сотрудничестве с microsoft, и ресурса для microsoft product groups, заинтересованных в opensource-технологиях. Том Hanrahan, который также играет решающую роль в повседневных взаимоотношениях microsoft — opensource, является директором этого самого ostc. его команда сыграла ключевую роль в создании драйвера, и будет вести дальнейшую его разработку.

продолжение

20090706

пересборка erlang R13B01 в debian lenny

в репозиториях debian lenny лежит erlang версии R12B3.
в testing-е (в данный момент) — R13B.
и лишь в unstable (в данный момент) — последняя версия с erlang.org — R13B01.

чтобы собрать пакеты для lenny, потребуются три файла со страницы http://packages.debian.org/sid/erlang:
$ cd /usr/src/
$ wget http://ftp.de.debian.org/debian/pool/main/e/erlang/erlang_13.b.1-dfsg-3.dsc \http://ftp.de.debian.org/debian/pool/main/e/erlang/erlang_13.b.1-dfsg.orig.tar.gz \http://ftp.de.debian.org/debian/pool/main/e/erlang/erlang_13.b.1-dfsg-3.diff.gz
/usr/src — это общепринятое место для сборки. чтобы рядовой пользователь мог писать в этот каталог, он должен входить в группу src (по крайней мере в debian это так).
имена актуальных на момент прочтения файлов имеет смысл брать непосредственно с вышеуказанной страницы.

для начала должны быть установлены по крайней мере пакеты build-essential и devscripts.
какие ещё пакеты понадобятся для сборки erlang-а, проще всего узнать методом «научного тыка».
итак, распаковываем исходники с одновременным наложением debian-овских патчей:
$ dpkg-source -x erlang_13.b.1-dfsg-2.dsc
$ cd erlang-13.b.1-dfsg
$ dch -i
у вас открылся редактор с уже загруженным файлом ./debian/changelog. и сразу же в нём добавился шаблон для новой записи. я привёл её первые строки к примерно такому виду:
erlang (1:13.b.1-dfsg-2.1-backport) stable; urgency=low
* Non-maintainer upload.
* backport to lenny
т.е., добавил в имя пакета слово «-backport» (не обязательно, но полезно), заменил «testing» на «stable» и вписал соответствующий комментарий.
после сохранения файла всё готово для сборки:
$ dpkg-buildpackage -sa
если каких-то пакетов не хватает, именно сейчас вы об этом и узнаете (улыбка).

после завершения сборки (процесс длительный) в каталоге /usr/src вы обнаружите собранные пакеты. установить их можно, как обычно, программой dpkg:
$ sudo dpkg -i пакет1 пакет2 …


p.s. ежели кто из читателей знает более короткое/правильное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man dpkg-source dch dpkg-buildpackage
http://wiki.debian.org/DebianRussian/DebinstPackages

20090705

select * from таблица;

это, ясное дело, sql.
а как оно будет звучать в случае mnesia (естественно, на erlang-е)? а примерно так:
mnesia:dirty_match_object(mnesia:table_info(таблица,wild_pattern)).

ввиду того, что eshell «больно вумный», и выдаст на такой запрос из большой таблицы всего несколько строк, лучше просматривать порционно, записей, например, по десять::
lists:sublist(mnesia:dirty_match_object(mnesia:table_info(таблица,wild_pattern)),1,10).
lists:sublist(mnesia:dirty_match_object(mnesia:table_info(Table,wild_pattern)),11,10).
и т.д.

краткая расшифровка:
mnesia:table_info(Table,wild_pattern).
возвращает шаблон для получения записей для заданной таблицы Table. фактически — это запись (кортеж), в которой первым элементом идёт название самой таблицы, остальные элементы — анонимные переменные '_' в нужном количестве.
mnesia:dirty_match_object(шаблон)
это, собственно, и есть поиск по шаблону. а так как полученный с помощью table_info шаблон содержит только анонимные переменные, то, в переводе на sql это означает, что условие where мы не задали (или задали where true (улыбка)), и в результате получим _все_ строки таблицы.
почему dirty? а это чтобы с транзакциями не заморачиваться. зачем, спрашивается, нужна транзакция при выборке данных?

p.s. ежели кто из читателей знает более короткое/элегантное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man -erl mnesia lists

20090704

show tables;

это sql. а как узнать список таблиц mnesia (естественно, на erlang-е)?

вариант 1.
mnesia:info().
заметный недостаток: выводится ещё много (в данный момент ненужной) информации.

вариант 2.
mnesia:system_info(tables).
недостаток: если таблиц много, список обрезается.чтобы список был полным, можно добавить немножко «обвязки»:
lists:foreach(fun(X)->io:fwrite("~s~n",[X])end,mnesia:system_info(tables)).
краткая расшифровка:
lists:foreach(функция,список).
применение функции к каждому элементу списка.
io:fwrite(шаблон,данные).
вывод данных согласно шаблону.

p.s. ежели кто из читателей знает более короткое/элегантное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man -erl mnesia lists io

20090703

подключение к ejabberd. часть 2.

в предыдущем посте из серии 100000 речь шла о подключении к локальному узлу ejabberd@машина.
для того, чтобы удалённо подключиться к erlang-узлу с таким именем, нужно чтобы имя «машина» разрезолвилось в нужный ip-адрес. проще всего — добавить строку
ip-адрес машина
в файл /etc/hosts.

проверяем резолвинг:
$ host машинамашина has address такой-то

подключаемся:
$ erl -sname новый_узел -setcookie <cookie> -remsh ejabberd@машина
пояснения смотрите в предыдущем посте

p.s. ежели кто из читателей знает более лучшее/универсальное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man hosts host hostname

20090702

подключение к ejabberd.

для начала нужно узнать erlang-cookie, используемый узлом (node) ejabberd. сам узел по умолчанию так и называется: «ejabberd@машина».
где находится cookie? скорее всего — в домашнем каталоге пользователя, от имени которого запущен ejabberd. а запущен он, скорее всего, от имени пользователя ejabberd. смотрим выдачу
$ ps aux|grep ejabberd
первым полем и будет имя пользователя, от имени которого запущен процесс (тавтология в компьютерных науках, увы, практически неодолима).
узнать домашний каталог пользователя проще всего так:
getent passwd пользователь
предпоследнее поле (поля разделены двоеточием) и будет искомым каталогом. в нём должен лежать файл «.erlang.cookie». на содержимое этого файла я в дальнейшем буду ссылаться так: <cookie>

теперь собственно подключение.
на той же машине, где крутится ejabberd, подключиться к нему можно так:
$ erl -sname новый_узел -setcookie <cookie> -remsh ejabberd@$(hostname -s)
что такое «новый_узел»? просто какое-нибудь уникальное имя. например, «n0».
что такое «$(hostname -s)»? подстановка (средствами bash-а) результата выполнения команды «hostname -s», которая возвращает короткое имя машины. чаще всего узел, на котором работает ejabberd, называется именно по короткому имени. уточнить можно по выводу ps (см. выше): если среди аргументов присутствует -sname — используется короткое имя машины, если -name — полное (возвращаемое командой hostname без опции -s).
небольшое отступление. допустим, полное имя машины — «машина.domain.org». короткое имя — «машина». так вот ejabberd, скорее всего, запущен на узле «ejabberd@машина». и обращаться к нему следует именно так. а узел «ejabberd@машниа.domain.org» — это уже будет совершенно другой узел.
вот, собственно, и всё подключение.

p.s. ежели кто из читателей знает более лучшее/универсальное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man erl ejabberd hostname getent ps grep bash

20090701

серия 100000

ровно в 1246500000 секунд от начала эпохи unix в этом блоге появится первый пост из несуществующей пока серии 100000.
почему 100000? потому что планирую в дальнейшем раз в сто тысяч секунд публиковать очередной пост из этой серии.
формат этих постов будет выдерживаться в духе «простое решение маленького вопроса».
так как в данный момент в ареале моих интересов расплодились всякие erlang-и с mnesia-ми, именно о них речь поначалу и пойдёт.

p.s. получить текущее время в секундах с начала эпохи unix:
$ date +%s
получить время в человеческом формате из секунд с начала эпохи unix:
$ date -d @секунды
например, время выхода первого поста из серии 100000:
$ date -d @1246500000

♺ man date