понедельник, 23 февраля 2009 г.

xorg-x11-drv-ati-6.11.0 build

Последняя версия драйвера xorg-x11-drv-ati в репозитории федора 6.10.0. На моем ноутбуке эта сборка разогревает процессор до 80 градусов и работа с ноутбуком становится крайне не приятна. Да и тем кто хоть раз готовил яишницу на алюминевой сковородке будет понятно, что класть на такой ноутбук руки без масла и соли покажется не целесообразно.

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

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

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

# mkdir source
# cd source

# git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-ati
# cd xf86-video-ati

# git checkout xf86-video-ati-6.11.0 -b xf86-video-ati-6.11.0
# git archive --format=tar --prefix=xf86-video-ati-6.11.0/  xf86-video-ati-6.11.0 | bzip2 > ~/rpmbuild/SOURCES/xf86-video-ati-6.11.0.tar.bz2

# patch << EOF
--- xorg-x11-drv-ati.spec    2009-01-07 06:18:45.000000000 +0300
+++ xorg-x11-drv-ati.spec    2009-02-23 16:36:47.000000000 +0300
@@ -4,8 +4,8 @@

 Summary:   Xorg X11 ati video driver
 Name:      xorg-x11-drv-ati
-Version:   6.10.0
-Release:   1%{?dist}
+Version:   6.11.0
+Release:   0%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X Hardware Support
@@ -14,12 +14,6 @@
 Source0:   http://www.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
 Source1:   radeon.xinf

-Patch1:     radeon-modeset.patch
-Patch4:     radeon-6.9.0-remove-limit-heuristics.patch
-Patch5:        radeon-6.9.0-panel-size-sanity.patch
-Patch6:     radeon-6.9.0-bgnr-enable.patch
-Patch7:     radeon-mode-fix-rotate.patch
-
 ExcludeArch: s390 s390x

 BuildRequires: xorg-x11-server-sdk >= 1.4.99.1
@@ -40,11 +34,6 @@

 %prep
 %setup -q -n %{tarball}-%{version}
-%patch1 -p1 -b .modeset
-%patch4 -p1 -b .remove-limit-heuristics
-%patch5 -p1 -b .panel-size
-%patch6 -p1 -b .bgnr
-%patch7 -p1 -b .fix-rotate


 %build
EOF


# cd ~/rpmbuild/SPECS
# rpmbuild -ba xorg-x11-drv-ati.spec

# sudo rpm -U ~/rpmbuild/RPMS/i386/xorg-x11-drv-ati-6.11.0-0.fc10.i386.rpm

вторник, 17 февраля 2009 г.

Fast coding

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

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

char a1, a2, a3, a4;

В коде, запускаете цикл и инкриминтируете каждую переменную в отдельном цикле.

Вообщем, пошлость скажите вы.

Так и есть, пошлость. Но она необходима, во всех ее современных проявлениях, кроме тотального ей поклонения.

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


Если бы я был в Москве, — думал Николай Николаевич, — я бы не дал этому зайти так далеко. Стыд необходим, и в некоторых границах... 

Б. Пастернак

The best language in the World!

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

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

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

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

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

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

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

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

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

Итак что у нас получилось:

Язык это:
- синтаксис
- библиотеки
- среда выполнения

Программирование это:
- язык
- архитектурные решения

, где:

Синтаксис - это язык и его правила определния функций\методов\переменных\классов

Библиотеки - это набор готовы алгоритмов и правил обработки данных

Среда выполнения - это механизмы выделения памяти (куча), преобразования кода в операции процессора и оптимизация этих процессов, ассмеблер, байткод и оптимизация обектных файлов, сетевые особенности транспорта данных, работа с переферийными устройствами (общая область памяти, регистры и пулинг)

Арихтектурные решения - это шаблоны проектирования, транспортный уровень, алгоритмы.

Хорошее професионал это: человек полноценно владеющий языком программирования на уровне чтобы его код и его архитектурные решения эффективно исполнялись целевой среде исполнения.

Из чего следует, что самая эффективная конструкция может быть создана только на шаблонном С++. Так как в результате инстанциации шаблона  создается то самое единственное и уникальное понятие идеального объекта, который в свою очередь оптимизируется компилятором в объектном файле для конкретного процессора.

А это означает, что будущее за С++ и его парадигмами, которые не усыпно копируют все современные направления и клоны этого единственно верного языка!

воскресенье, 15 февраля 2009 г.

GNU is not UNIX

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

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

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

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

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

Но не все так гладко на его страницах.

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

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

Начнем с формы публикации: pdf. Заглянув в свойства файла ваш лоб сразу покрывается испариной и вы начинаете нервно протирать монитор от росы, почему электронная версия журнала выпускаемая под идейной эгидой продвижения линукса до сих пор распространяет файлы pdf журнала подписанные Acrobat Distiller 6.0 (Windows)!?

Поразительно такой журнал, готовит вам прошлое, которое они на протяжении долгих лет отрицали. Удивительно что утверждая что линукс должен входить в цикл любого производста, Linux Format до сих пор сама не попыталась перейти на использование указанной операционной системы. В результате журнал показывает вам свое полное не уважение и непонимание вопроса публикуемого на протяжении 8 лет. Как они до сих пор публикуют PDF версию которая позорит их самих?

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

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

Итак. Большинство авторов статей иностранцы, видимо это сотрудники одноименного иностранного журнала, так что все стати попадают к нам из за бугра, и требуют работу по адаптации к настоящим реалиям. Так во всяком случае я могу понять почему тексты содержят так много идеологических косяков и нелепых утверждений. Текст обрабатывается нашими авторами, и переводчики дополняет их ошибками. Во всяком случае я крайне надеюсь, что оригинальные издание никогда бы не обозвало OpenTTD проект windows приложением, что как истина красуется на первых страницах и обведено рамкой. Создается впечатление, что талантливые головы учились в институтах только с одной целью - переводить оригинальные тексты, причем не думая. В результате чего получаются такие не точности и публикуются статьи с ошибками описанными ниже.

Потом, наскоро переведенные стати попадают нашим верстальщикам, которые лепят pdf на виндусе Acrobat Distiller 6.0 (Windows), почему-то забывая добвить такую мелоч как заголовок для pdf файла. В нашем случае там красуется "untitled". Я уж не говорю о том, что любой уважающий себя pdf, и вообще электронный документ, содержит оглавление по которому так удобно перемещаться и находить нужную информацию. Гипер ссылки в содержимом, на внешние источники, из текста подсвеченного синем, верстальщики наверно удаляют вручную, из вредности, поэтому каждую из них приходится копироать и переносить в браузер самостоятельно. Естественно, отверстаный текст выделяется сразу блоками и вы не сможете ни скопировать этой ссылки, ни абзаца, который хотите отослать или вставить в качестве цитаты. Ну это мелочи, кому-то покажется вообще не существенные мои притензии. Согласен, вопросы чисто дискуссионные, тут есть над чем работать и не это должно пугать читателя, ведь главное не внешний вид, а содержимое!

Соедржимое журнала требует более внимательного подхода. Я не буду заниматься граматикой, тут все в порядке, чего например не скажешь про мой журнал (хехе). Но вот идейную составляющую давайте изучим подробней.

Как могут заметить внимательные читатели содержимое журнала насквозь пронизано одной операционной системой - Ubuntu. Этот факт сам по себе ничего плохо не представляет. Однако, как я уже говорил читателям необходимо дать обективную картину. Для этого показать что необходимо показать объяснить что откуда берется, а не просто вставлять сухие факты, что мол в убунту это так.

Мне повезло, именно на этот вопрос отвечают в январской версии журнала. Авторы раскрываю святые святых и дают нам немного истории. И не успев сказать о самом дистрибутиве ни слова, с первых строк, успевают обвинить дедушку дебиан, на котором строится Убунту, в нестабильности и наличии множетва последних версий пакетов. Подводя читателя не хитрыми домыслами мол были новые не стабильные, а в убунту появились старые и надежные. Так мол и зародилась стабильная и неподводящая пользователей операционная система убунту. На первый взгляд выглядит все хорошо, не почему-то учитывая и не освещая тот факт, что все было наоборот. Убунту изначально создавалась как клон дебиан, содержащий все последние пакеты. Именно потому, что дебиан сидел на старой версии фаефокс, оконных менеджеров, опенофиса и не торопился обновляться до последних, по мнению сообщества дебиана, глючных версий. А новое течение, которое хотело скорости и красивых плюшек и неудобных ограничений и стандартов, на этой идеи и была построена ОС Убунту.

Принципиально идея убунту - отменить все старое и по мнению Убунту ненужное. Взяв на вооружение такую анархическую идею убунту начала наступление на стандарты. Моментально подверглись критике слова Столмана, стандарты LSB, правила включения пакетов и так далее. Все это я постараюсь затронуть по содержимому январского выпуска журнала Линукс Формат. Например известно, что КДЕ вообще нигде не была десктопом по умолчанию, только в красивой и переводой убунту появилась - дескать нам молодым пользователям убунту все равно, что нету стабильной версии ведь мы сами по себе. Так сообщество выбросило все правила присуще всем дистрибутивам и начала свой путь.

Несколько отходит от того, что сказано в январской подборке, неправдали?

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

А ответ очень простой, GNU GPL означает всего лишь вид лицензии и направление, которое с ним ассоциируется. Сама лицензия имеет конкретный номер и отсутсвие которое, показывает не компетентность автора или переводчика делавшего перевод. Суть простой цифорки легко объясним. На сайте http://www.fsf.org/ есть целый раздел посвященный идеологии направления свободного программного обеспечения. Раздел этот живет и развивается вместе с нашим современным миром и дополняется существующими реалиями. Например в поседней версии раздела делается четкое указанаие, что ваши свободы целиком и полностью зависят на наличие патентной свободы в разработках. Что недостаточно просто иметь право использовать код, но так же патент на технологию защищающий его. Данная свобода, учтена только в последней версии свободной лицензии GNU GPLv3, которая настоятельно рекомендуется к использованию в замен GNU GPLv2.

Приведу простой пример. Всем известный проект Майкрософт, включающий репозитории открытых проектов поддерживает тучное множество различных лицензий кода, включающий GPLv1, GPLv2, но в этом списке отсуствует лицензия GPLv3. То есть майкросфт не позволит вам разрабатывать проект в их системе по лицензии GPLv3, так как эта версия лицензии разрушает комерческую пирамиду майкрософт и дает вам свободу.

Следовательно отсутствие простой циферьки в версии лицензии, показывает неграмотность издательства в таких вопросах.

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

Статья "Создай свой дистрибутив" полна сюрпризов и неточностей, так что даже можно издавать свой журнал по материалам с ошибками, раскрывающий все эти неточности в более объективном виде. А еще можно и зарабатывать на этом денег если брать за подписку по рублю.

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

Сама статья безусловно ориентирована на специалистов, ведь создать дистрибутив это не задача по созданию образа диска. Который лучше изучать по соотвествующей документации. Ведь за простым убунту диском кроется сложный процесс: загрузки бутсектора, инициализации загрузчика, ядра, монитрование initrd, обработка скриптов инициализирующих демоны и запускающих иксы, тема довольно интересная и требуется более детальный анализ. А в широком понимании этой стати будет процесс образования сообщества людей способных на взаимопомщь и прежде всего подкованного стандартами линукс давшими ему жизнь. То есть ваша задача популизировать идеи образованные Ричардом Столманом, а не набивание бездумно (именно так и делают в убунту) пакетов на компакт диск.

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

Не без участия я прочитал так же утверждение о том, что есть пакеты совместимые с дебиан, а есть не совместимые. Это упрощает видение ситуации до комичного, что в очередной раз вводит неподготовленного читателя в заблуждение. У каждого дистрибутива есть своя политика вклчения не включения пакета и признаки совместимости пакетов с дистрибутивом. Для точного понимания этих правил необходимо обратится к документации проекта и сообществу. В целом эти вопросы занют люди, которые называют себе мейнтенерами. Они сверяются с руководством по сборке пакетов или в системе вики, доступной всегда для чтения. Среди ограничений на помещения пакетов есть, например, лицензия, по которой распростроняется код. Некоторые дистрибутивы не включают пакеты с закрытыми исходными кодами. Другие дистрибутивы имеют специфические правила, так например федоа запрещает включение флагов государств в дата файлы пакетов, так как некоторые флаги могут оскарблять недружественные народы и является причиной ограничивающий использование дистрибутива. Конечно, молодое сообщество убунту до таких высот еще не доросло.

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

Вообщем на лицо не профессиональный подход - галиматья!

Анекдот: Стук в дверь:
- Кто там?
- Галиматья!
- Что что?
- Га-ли-ма-тья!
- Чушь какая-то!

Собственно все несооствествие технологиям и идеологии opensource вполне предсказуемо, авторы почти всех статей использует дистрибутив Ununtu в качестве примера, к моему сожалению, данные вопросы, освещенные мной выше вообще не затрагиваются. Так что крсующееся на облошке слоган "Будущее стандарта Linuxа" очень сомнителен. Неслучайно что все меньше известных людей перестают пользоваться этим хламом на базе убунту, как например Линус Торвальдс.

Что касается создание дистрибутива и сообщество очень интересны вот эти стати, прочтите их в свободное время. Лучше их прочитать взамен этой неуместной стати из журнала Линукс Формат:

Кругозор автора позволил ему заметить на горизонте наличие других дистрибутивов. И похоже, по его мнению сложных и черезчур мудреных. Так выдвигая утверждение, что источник доходов компании RedHat дистрибутив RHEL это видимо проведение простой аналогии с формулировкой - Источник дохода Майкрософт - Виндус. Это вызывает ироническую улыбку. Сам дистрибутив доступен для скачивания абсолютно бесплатно под и распростроняется умельцами под брендом centos. Автор статьи наверно и этого незнает, и незнает что опенсорс компании зарабаывают не на дисках и лицензионных картинках, а на поддержке пользователей, разработке программ и поддерживанию инфрастуктуры предпряетий в рабочем состоянии. Впрочем хватит об грусном.

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

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


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


Жалко что авторы следующей статьи "Так ли умен Smart", забывают упомнять о куда более интересном исследовании специалистов гугл, и зывабют сказать что: температурные условия никак не сказываются на продолжительности работы жестких дисков. Ну а то что смарт может ошибаться, думаю никого и не волнует.

Вот что мне понравилось в журнале это статья про создание свой игры Башни Ханоя! В моем случае, являясь подписчикам электронной версии журнала, исходный код программы и проьче содержимое компакт диска я не нашел. Издатели ограничились простой рассылкой, не добавляя контент на какой нибудь локальный закрытый треккер. Жаль, я бы посмотрел и поковырялся и точно чего нибудь нашел! Ну в этом случае журналу есть куда рости ведь цели уже поставлены. Что бы издательство в этом случае не чувствовала мое не внимание к их статье, добавлю грусную нотку :) Статьей выше давались наставления для ментейнеров дистрибутива, который так подробно был составлен и разжеван. И если бы с этот вопрос был затронут, основательно, то мы с вами бы увидели не только исходный код, но и примеры по включения приложения в дистрибутив убунту. С небольшими примерами правил и структуры apt пакетов. Думаю, автор, который бы затронул вопросы создания пакетов сразу же исправился и переложил файлы данных от находящихся рядом с исполняемыми, да и содержимое пакета чуточку бы изменилось. Так что это недосмотр: сначало мы учим создавать дистрибутивы, а потом сами не следуем тем правилам о которых пишем - нехорошо, товарищи издатели.

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

Конечно, любой пользователь линукс в душе хакер, так как до сих пор эта операцинная система считается не дружелюбной к пользователю. Устанавливая его и решив попробовать что-то новое и возможно то, что принесет вам успех вы начинаете лазять по системным функциям и читать манулаы. Только обясните зачем писать тонны инструкций по настройке bluetooth соединения через консоль и хитрые системные утилиты, когда на свет уже давно вышла удобная графическая среда blueman? Недосмотр. Раз хотите поломать пользователей, скажите, что мол, тут вот и тут проще.

В слудющей статье, про графическую библиотеку опять оплошность. Еще Страуструп писал: не пишите в своем коде using namespace std; У автора стати "Старый конь", на это свои взгляды. Хотелось бы послушать аргументацию. Да боюсь он пологался на авось, И собственно библиотека с глобальными статическими переменными, не внушает довреия. Чего стоит только использование ее в мультипоточной среде, которая либо будет падать, либо начнет входит в поточные синхронизаторы, чтобы гарантировать порядок вызовов. Вообщем, стиль разработки нездоровый. Утверждать же какой тип редакторов лучше я бы не стал так наспех. Так как автор забывает указать на одно не оспоримое, преимущество редактора хранящего значения в коде. Это отсутствие ресурс файлов, а проект после компиляции получает цельный исполняемый файл. Что в совю очередь увеличивает переносимость среды уменьшая зависимости от файловой системы.

И в разделе ответов нашлось пару оплошностей. Во-первых рекомендовать использовать dns сервер для получения имени это кощунственно. Любой специалист знает о наличии служб zeroconf, если конечно является специалистом. Именно ее я рекомендую для настройки сетей с тремя операционными системи включая OSX. Если вспомнить статью в начале выпуска, там автор не осторожно рекомендут отключить службы AVAHI, так как вы врядли ими будете пользоваться. Так что в этом ответе я вижу идеологическое нарушение и из за которого, потом начинают страдать пользователи. Идеологическая ошибка, которых журнал Линукс ФОрмат обязан не допускать. Опять же если вы хотите побыть хакерами - пожалуйста, но как экспервы вы обязаны предупредить что есть человечное решение! Я планирую написать статью про эту настройку в будущем.

Раздел в рамке победителя действительно серезная тема для обсуждения. А вот ответ не полный. Есть такая штука как файловая система для флешек, и опять незатронута в ответе:

Подведя итоги: журнал линвкс формат уделяет не достаточно внимания оригниальной идиологии, благодоря которой эта открытая система родилась. Этот журнал меняет историю и представляет читателям уже искаженные факты, и свои выдумки выдвая их за оригинальные течения. Поэтому читая журнал вы забываете, что направление и идея журнала зародилась в GNU Ричардом Столманом и движется вперед только благодоря этому человеку. А такие мелочи как LSB(linux standard base) вообще опускаются, так как у нас в руках революционно новый и простой подход к жизни - убунту. Но такой подход не нов в истории, атеизм рождался и умирал забирая с собой много людей и их свободы. Так и сейчас, роджая новый дистрибутив облегченный историей и не ориентирующийся на устоявшиеся правила перевернется и заставит разочероваться всех ее последователей.

четверг, 12 февраля 2009 г.

Code reuse в широчайшем понятии

12.02.2009 небольшие правки

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

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

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

Наконец, последнее. Не о чем беспокоиться. Смерти нет.

Смерть не по нашей части. А вот вы сказали талант, это другое дело, это наше, это открыто нам. А талант — в высшем широчайшем понятии есть дар жизни.

Б.Л. Пастернак

среда, 11 февраля 2009 г.

Чай в студию!

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

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

четверг, 5 февраля 2009 г.

Наш правильный RnD

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

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

Однако, у такого подхода могут быть подводные камни. Углубление и анализ при решаемой задачи может привести к потери объективности в простых вопросах может приводить к неожиданным результатом. Самостоятельное развитие и переваривание одного направления может начаться с того, что вы оцените современный технологический парк слишком правильно. Это приведет к тому, что вы выбрасываете потенциально хорошие технологии, которые в данный момент ущербны и не внушают доверия, к тому же не сулят перспектив в развитии. Возмем пример, пока еще не совершивший революции, но предположим, что среда PHP изменит свою основную линию. В неподходящий для вашей компании момент, сделавшей упор на perl взорвется как бомба. Любому специалисту занимающемуся вопросами веба, очивидно, PHP не самая быстрая среда, иногда очень с большими потенциальными уязвимостями. Об этом свидетельствуют ошибки безопасности простаивающие в треккерах по несколько месяцев и обсуждаемые во всех форумах. Вы как специалист, дойдя до этого уровня, целиком и полностью игнорируете ущербную среду PHP. Не обращая внимания на ее развитие. Однако, в результате перемены или новой организации работ в команде PHP, в какой-то момент принципиально меняется подход к исправлению ошибок и вводятся дополнительные уровни безопасности. Скажем, аналогичные уровню SELINUX в ядре линукса, которого тоже никто не ждал. Вы однако, к этому моменту убежали далеко вперед и умете работать только с перлом. Создав свою систему, среду и интерфейсы, базирующейся только на языке perl. И все время с пренебрежением посматривали в сторону PHP. Однако, в определенный момент понимаете, что тех разработчиков которые могут писать на PHP в разы большие. Так как selinux все круче. Модернизация их среды происходит постоянно и не прерывно и вы уже не можете угнаться за теми изменениями и доработками, которые появляются как грибы на дюжинном поле новых голов. В результате вы остаетесь в проигрыше.

Приведу другой пример, более печальный. Возьмем одну компанию занимающуюся созданием и проработкой своих внутренних корпоративных стандартов. Такая работа ведется во всех направлениях в совокупности с созданием внутренней инфраструктуры дело очень серьезное и затратное. Вы должны четно подобрать персонал способный выдерживая направление развивать среду и двигаться изолированно (так как разработка закрытая) от рынка, не разглашая идеи и не отвлекая разработчиков на новые направления, которыми в данный момент не пересекаются с интересами компании. Ваша RnD группа создает среду, отвечающую всем требованиям современного технологического парка и всем требованиям внутри корпорации. Вы вкладываете колоссальные бюджеты на быстрое развитие, создание и написание дополнительных интерфейсов\графических библиотек, баз данных с эффективным доступом и продумываете снижение нагрузки через использование кластерной модели. Это направление поглощает все больше хороших специалистов, которая ваша компания воспитывает и учит работать с вашей внутренней технологией. Вы начинаете заниматься развитием обучения внутри компании, наращивания потенциала, поиском новых кадров затягиваете все больше людей и узел на своей шее из за гигантского бюджета пожираемого этой системой. И вдруг все становится лишено смысла! Ваша компания боролась на рынке и производила искусственную закрытую среду поглотив тысячи и десятки тысяч людей и разработчиков начинает судорожно метаться и пытаться оправдать те затраты и ту чумовую совокупную стоимость своих решений, под натиском новых современных бесплатных предложений основанных, на ставшими так привычными, открытых технологиях. В этот момент вы понимаете что ваша компания работающая как часы, потребляя гигантский ресурс - отстала лет на десять. Ни вы ни ваши специалисты и понятия не имеют что такое совместная работа энтузиастов выстроенная по модели opensource. Вы понимаете, что ваша база данных разработанная сильнейшими специалистами последние 10 лет, и работающая с поддержкой кластеров ничем не уступает, какого нибудь открытого решения в связки mysql+sqllite и вам все трудней убедть в этом своих клиентов. И для того, чтобы догнать новый рынок вам необходимо измерить модернизацию либо колоссальными денежными ресурсами, либо людьми в штуках. В этом случае единственный выход как-то не потерять рынок и заставить использовать вашу, никому не нужную, старую машину - это подарить ее, бесплатно, наделов при этом много шума. А после того как вы ее подарите, начать продавать масло, колеса, запчасти и услуги по ремонту. Таким образом - вы сдаетесь, и меняете направление, чтобы хоть как то заинтересовать мировое сообщество в своей, давно уже умершей технологии, тем самым привлекая неисчерпаемый ресурс людей - открываете и делаете доступным технологию по открытой лицензии. Правильно, я говорю про erlang.

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

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

Ссылки по теме:

воскресенье, 1 февраля 2009 г.

gpt msftres flag

02.02.2009 rewrite

Работая с 3 разделами жесткого диска os x, linux, windows я столкнулся с проблемой установки тестовой Windows 7 на свой ноутбук. Ситуация заключалась в том, что установщик ругался на наличие Microsoft Reserved Partition и отказывался продолжать установку на указанный свободный раздел.

Операционная система OS X требует наличие на винчестере GPT разбивки разделов, это отличная от стандартной и привычной всем схемы MBR разделов.

Вкратце: GPT диск состоит из разделов, аналогичным 4 партициям стандартного MBR диска. Однако, в GPT диске, помимо того, что число партициям увеличено до 128, так теперь каждая из них имеет уникальное имя, набор флагов и уникальный uuid идентификатор - определяющий ее назначение.

Подробная статья, не нуждающаяся в комментариях, о GPT диске и  его структуре находится в википедии:


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


Для справки, вот 4 основных типа раздела:
  • msftres E3C9E316-0B5C-4DB8-817D-F92DF00215AE
  • boot C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  • linux/windows data EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  • os x 48465300-0000-11AA-AA11-00306543ECAC
Для исправления данной ситуации вы можете в ручную открыть системный диск утилитой hexedit, пробежаться по разделу GPT диска и отредактировать его, изменив GUID msftres раздела на GUID linux data раздела.

[root@axet-laptop ~]# hexedit /dev/sda
00000400   28 73 2A C1  1F F8 D2 11  BA 4B 00 A0  C9 3E C9 3B  (s*......K...>.;
00000410   81 A8 24 AF  75 A2 25 46  8D AD FC 4D  FA E5 DE 6F  ..$.u.%F...M...o
00000420   28 00 00 00  00 00 00 00  27 40 06 00  00 00 00 00  (.......'@......
00000430   01 00 00 00  00 00 00 00  45 00 46 00  49 00 00 00  ........E.F.I...
00000440   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000450   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000460   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000470   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000480   00 53 46 48  00 00 AA 11  AA 11 00 30  65 43 EC AC  .SFH.......0eC..
00000490   88 FA 3C 3A  5C 2E EA 4D  A4 53 B7 A2  7C AA E4 09  ..<:\..M.S..|...
000004A0   28 40 06 00  00 00 00 00  27 40 02 04  00 00 00 00  (@......'@......
000004B0   00 00 00 00  00 00 00 00  4C 00 65 00  6F 00 70 00  ........L.e.o.p.
000004C0   61 00 72 00  64 00 00 00  00 00 00 00  00 00 00 00  a.r.d...........
000004D0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000004E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000004F0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000500   A2 A0 D0 EB  E5 B9 33 44  87 C0 68 B6  B7 26 99 C7  ......3D..h..&..
00000510   8E 92 E5 FD  F1 F2 67 41  96 95 FA 13  78 4F FF 39  ......gA....xO.9
00000520   AB 4A 06 04  00 00 00 00  36 79 44 0B  00 00 00 00  .J......6yD.....
00000530   00 00 00 00  00 00 00 00  46 00 65 00  64 00 6F 00  ........F.e.d.o.
00000540   72 00 61 00  00 00 00 00  00 00 00 00  00 00 00 00  r.a.............
00000550   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000560   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000570   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000580   A2 A0 D0 EB  E5 B9 33 44  87 C0 68 B6  B7 26 99 C7  ......3D..h..&..
00000590   C4 0D 90 C4  C0 51 46 41  B3 D5 13 8B  2C BB 62 92  .....QFA....,.b.
000005A0   47 65 48 0B  00 00 00 00  C0 37 F9 0D  00 00 00 00  GeH......7......
000005B0   00 00 00 00  00 00 00 00  57 00 69 00  6E 00 64 00  ........W.i.n.d.
000005C0   6F 00 77 00  73 00 20 00  37 00 00 00  00 00 00 00  o.w.s. .7.......

Из привиденного выше дампа видно, что GUID находится первой строчкой начиная со смещения 0x400, затем 0x480 и так далее.

Если же для исправления ситуации с зависшем msftres флагом, вы не рискуете исправлять эти значения в ручную можете перекомпилировать parted утилиту с небольшим пачем:

diff -ur parted-1.8.8/libparted/labels/gpt.c
parted-1.8.8.new/libparted/labels/gpt.c
--- parted-1.8.8/libparted/labels/gpt.c 2009-01-31 23:33:06.000000000 +0300
+++ parted-1.8.8.new/libparted/labels/gpt.c 2009-01-31 23:33:00.000000000 +0300
@@ -1299,29 +1299,6 @@
   return 1;
  }

- if (fs_type) {
-  if (!strncmp (fs_type->name, "fat", 3) == 0
-      || !strcmp (fs_type->name, "ntfs") == 0) {
-   gpt_part_data->type = PARTITION_MSFT_RESERVED_GUID;
-   return 1;
-  }
-  if (!strncmp (fs_type->name, "hfs", 3) == 0) {
-   if (!guid_cmp (gpt_part_data->type,
-           PARTITION_APPLE_TV_RECOVERY_GUID)
-       || gpt_part_data->atvrecv) {
-    gpt_part_data->type =
-     PARTITION_APPLE_TV_RECOVERY_GUID;
-   } else {
-    gpt_part_data->type = PARTITION_APPLE_HFS_GUID;
-   }
-   return 1;
-  }
-  if (strstr (fs_type->name, "swap")) {
-   gpt_part_data->type = PARTITION_SWAP_GUID;
-   return 1;
-  }
- }
-
  gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
  return 1;
 }


Ссылки по теме: