Как составить резюме в LaTeX: пример CV оформленного в LaTeX



39 коммент.
Задача создания красиво оформленного резюме не из лёгких, однако её может облегчить LaTeX. С помощью пакета modernCV можно сделать красиво оформленное резюме быстро и красиво. Немного терпения, и получаем качественный полиграфический результат.


Что нужно для составления резюме 

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

Итак, нужно скачать moderncv, и распаковать его. Вместе с пакетом идёт пример составления резюме для John Doe (типа Василий Пупкин), который можно найти в файлах template_en.tex или jdoe_classic.tex в архиве moderncv. 


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


Рецептура составления резюме с помощью moderncv и LaTeX
По умолчанию классическое резюме цветное, хотя для удобства печати его можно сделать чёрно-белым:
\moderncvtheme[grey]{classic}
Можно использовать и цвета (возможные значения 'blue', 'orange', 'red', 'green', 'grey'). Так же вместо классического стиля CV можно использовать более свободный:
\moderncvtheme[grey]{casual}
В любом случае стоит поставить кодировку UTF8 внутри документа:
\usepackage[utf8]{inputenc} % replace by the encoding you are using
Это даст возможность копировать текст из PDF документа любыми средствами и на любых языках, что в случае с резюме весьма важно.

Дальше пойдёт заполнение разделов: образование, опыт работы и так далеее. Здесь есть небольшая тонкость: в стилевом файле предусмотрен объект \cventry{}{}{}{}{}{} с кучей опций внутри. Это пригодится, когда нужно одним блоком разместить много информации. Например:


\cventry{2006-2009}{Ph. D. (planned) Physics and Math}
{Moscow Engineering Physics Institute, Russia}
{\newline Subject: optical cryptography in an incoherent quasimonochromatic light, digital image processing, and high dynamic range imaging}
{\newline Supervisors: Manykin~E.A.~(RRC Kurtchatov Institute), Bykovskiy~A.Y.~(Lebedev Physical Institute, LPI), Starikov S.N.~(MePHI)}
{}

Каждый блок текста в фигурных скобках будет продолжать текущую строку, и чтобы начать новую строку, надо оповестить об этом LaTeX. Поэтому не стесняйтесь вставлять для \newline перехода на другую строку.

Для более коротких строчек в резюме используется \cvline{}{}
Вот например так:

\cvline{2005}{Moscow Telecommunication Conference Award.}
Есть в moderncv такой раздел, как Computer Skills, и там реализовано перечисление \cvcomputer. Оно будет набирать ваши компьютерные таланты в две колонки - не знаю, удачный ли это ход. Если что, можно вместо \cvcomputer использовать \cventry что в приводимом здесь примере и делается.

% Publications from a BibTeX file
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{publications} % 'publications' is the name of a BibTeX file

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

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

После всех вышеописанных движений у вас должно получиться красиво оформленное резюме (которое в англоязычном мире называется CV, оно же Curriculum Vitae), например:




Это сокращённое резюме Василия Пупкина, LaTeX код которого можно скачать по этой ссылке. 


Изменение начертаний шрифтов 
Шрифты по умолчанию вполне разумны, но если хочется изменить шрифт, то можно попробовать следующее:
  
%%%% <======== Changing fonts in the CV - select one of the options %%%%%%%%%  
\renewcommand{\rmdefault}{cmr} % Шрифт с засечками  
\renewcommand{\sfdefault}{cmss} % Шрифт без засечек  
\renewcommand{\ttdefault}{cmtt} % Моноширинный шрифт %%%% 
<======== Changing fonts in the CV - select one of the options %%%%%%%%%

При этом шрифты поменяются во всём резюме.


Русский язык в резюме modernCV
Вообще-то считается хорошим тоном составлять резюме на английском языке, дабы бляснуть своими глубокими познаниями языка вероятного противника :-) Если же блистать нечем или этого не требуется, можно заставить moderncv переваривать русский язык. Для этого требуется вставить следующее в преамбулу документа:

%%%%% <======== THIS IS FOR RUSSIAN RESUME %%%%%%%%%
\documentclass[11pt,a4paper,russian]{moderncv} 
\usepackage[T2A]{fontenc} 
\usepackage[utf8]{inputenc} 
%%%%% <======== THIS IS FOR RUSSIAN RESUME %%%%%%%%%

При этом стоит проверить, что у вас кодировка текста в редакторе выставлена как utf8.

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




Вместо заключения

Пакет moderncv переделывается авторами часто и весьма агрессивно, так что этот пост может несколько устареть. Дополнительные детали по шрифтам можно найти на ЛОРе. Тем не менее, приведённых рекомендаций должно быть достаточно для старта.
Читать далее

Рассылка дисков - и как это всё происходит на самом деле



23 коммент.
Как-то у меня коллега Garfeild спросил, как лучше упаковывать диски при отправке. Думаю, эта информация будет полезна тем, кто решил / решает заняться этим хлопотным, но полезным делом. Накопленные ошибки и наступленные грабли выложены ниже

Предисловие
Время от времени при рассчётах за оплату дисков для отправки приходится сталкиваться с откровенно хамскими личностями. Они начинают высчитывать до копейки стоимость отправлений, придираются к непрезентабельной упаковке, требуют десятки дисков за себестоимость носителей и начинают сокрушаться о "погибели опенсорс-духа" вообще и в моём лице в особенности. Таким гражданам я по возможности вежливо отказываю и / или посылаю в линуксцентр. Там им называют совсем другие цены, и желающие купить по почте 20 дистрибутивов за 200 рублей в графе "Итого" наблюдают астрономические цифры.

Так вот, ежели кто сомневается в духе опенсорс - отвечаю словами Ричарда Столмена: "free market from any kind", то бишь "свободный рынок чего угодно". Есть я, есть местные аксакалы и есть Линуксцентр/Nixp.ru. Выбирайте.



Технология отправки дисков почтой
Очень надеюсь, что это не прочтут работники почтовых отделений,
в которых я отправляю письма :-)


Этап 0. Формулировка заказа
Добиться точной формулировки заказа и точного адреса. Это бывает нелегко: постоянные жители Интернета в ряде случаев не помнят свой точный адрес, а некоторые не подозревают о существовании почтовых индексов. Заказ должен формулироваться точно, никаких разночтений. Способы оплаты - минимум геморроя, минимум экзотики. Лучше всего сбербанком, на мобильник или электронными деньгами. Переводить лучше в систему электронных денег, которая позволяет быстро отслеживать приход и выводить деньги в наличность / счёт в российском банке. У меня это яндекс.деньги.
Короче:
  • точный (документальный) заказ
  • точный (полный) адрес
  • способ оплаты


Этап 1. Подготовка
Диски лучше всего покупать на шпинделе, и сразу штук 100 - дешевле и удобнее. Никаких no-name / Мань-Лянь и прочей безродной китайщины - только честную китайщину типа Verbatim и TDK.

Далее, на почте закупаемся конвертами за 1р30коп (они формата 23х16 см). Именно таких - в них помещается с запасом для упаковки диск по высоте. И по ширине можно запихнуть два в ряд, если очень постараться. В такой конверт без скрипа влезает 8-9 дисков. И ещё парочку покупаем полноформатных конвертов А4, за 4 рубля. Туда насовать дисков можно до одури.

Кроме того, пойти на рынок и купить простой китайский клей-карандаш, фломастер для дисков, шариковую ручку и скотч, а так же где-нибудь найти пупырчатый упаковочный материал (можно купить или, идя по улице, смотреть по сторонам и не упускать момент) и картонные коробки - например, от купленного оборудования.

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

Короче, потребуется:
  • конверты 23x16 см и 21х29см
  • клей-карандаш
  • шариковая ручка
  • фломастер для дисков
  • скотч
  • упаковка (картон и пупырчатый полиэтилен)

Этап 2. Пропаливание
Оплата получена - можно палить диски. Лучше это поставить на скрипты - тыкать по цветастым кнопкам быстро надоест. Лично у меня каждый диск проходит проверку на совпадение контрольных md5-сумм после прожига. Это удлиняет время обработки заказа, но даёт гарантию, что диск читается.
Поначалу я иногда отправлял диски с упреждением - то есть ещё до оплаты. В честности некоторых линуксоидов пришлось разочароваться: от троих деньги так и не пришли. Так что после этого я жёстко следую формуле "утром деньги - вечером стулья", отступая от неё лишь в крайних случаях (вопрос жизни и смерти / прокуратура стучит сапогами у дверей по поводу ворованного софта / угроза выхода из строя стратегических объектов жизнеобеспечения).
Скрипты пропаливания и проверки есть у меня в блоге. Готовые диски подписываются, и сразу складываются на уже заполненный конверт - чтобы потом не забыть, что и кому отправляется.
Короче:
  • пропаливаем диск
  • проверяем md5-суммы
  • подписываем диск


Этап 3. Упаковка

Здесь начинается всё самое весёлое. Упаковка! То, о чём так часто забывают скрупулёзные и скуповатые рыцари духа Опенсорс. Если вы просто накидаете дисков в конверт и отправите - к месту назначения придёт кучка сверкающих обломков.

Методом проб и ошибок найдены несколько технологий упаковки, которые дают хороший результат: диски приходят в нормальном состоянии и всё читается. Читаются даже те, что приходят с возвратом! Итак:
3.1 Картон + пупырчатый полиэтилен + бумага
Берём картонку, вдвое превышающую по формату конверт, сгибаем пополам, вкладываем туда отрезанный под размер пупырчатый полиэтилен (это очень эротичное занятие, поверьте мне). Теперь накладываем туда диски, стараясь класть их в "шахматном" порядке. Разделяем старой бумагой / газетой. В итоге получился бутерброд из дисков, картона и пупырышков. Теперь - важный момент! - несильно сжимаем этот бутерброд и перетягиваем его скотчем.
Скотчем клеем не только по вертикали, но и по горизонтали, стягивая друг к другу края "бутерброда" из дисков.
Если этого не сделать, диски в процессе транспортировки будут болтаться по конверту и поцарапаются!
Это если дисков мало (до 8 штук), а если много (больше 10) - такой способ не пройдёт. Тут нам пригодятся крупные конверты и старые глянцевые (или не очень) журналы, а так же красочные буклеты от купленного когда-то железа.
3.2 Картон + буклет
Берём журнал / буклет и набиваем его дисками, помещая между страницами. Шахматный порядок дисков тут тоже важен. Потом подкладываем под одну сторону картонку (для жёсткости), на первую и последнюю станицу вкладываем пупырчатую упаковку и всё это перетягиваем скотчем. Получится тоже бутерброд, только больше :-)
Ешё более простой и демократичный способ:
3.3. Части книги
Можно использовать ненужные книжки или методические пособия. Разрываем их на нужное количество половинок и вкладываем диски в шахматном порядке между страниц. Первую и последнюю страницу, содержащие диски, лучше всего склеивать скотчем, чтобы диски не болтались при транспортировке. Доходит превосходно, как и в предыдущих случаях.
Теперь осталось это всунуть в конверт - море положительных эмоций гарантировано. В деле запихивания упакованных дисков в конверт могут пригодиться навыки игры в тетрис, ножницы и линейка.

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

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

Ну и что мы после этого говорим тем, кто жадничает нам двадцатник? :-)


Этап 4. Отправка.
Такое письмо (не менее 50 грамм) в почтовый ящик у почтамта опускать не стоит, ибо это уже не простое письмо, а как минимум заказное, что стоит больших денег. Так что начинается психология, партизанщина и дипломатия: вам предстоит завалить босса уровняобщение с сотрудниками почты.

Значит, так: посылать диски заказными письмами нельзя. Это считается "товарным вложением" и если сотрудник почты прознается, то завернёт вас на ценное ускоренное письмо / посылку. Это влетит в 80-100 рублей и больше, в зависимости от веса и дальности. Заказное письмо стоит 20-25 рублей, максимум - 30.
Насчёт "товарных вложений" - тут ваша совесть должна быть кристально чиста: вы пересылаете лицензионное опенсорсное ПО, способствуя распространению никс-систем и вытеснению подлой проприетарщины.
На самом деле, почтовикам просто не нужна дополнительная ответственность за пересылку хрупкого предмета в конверте - ведь в случае чего, чек останется у вас и вы можете крупно попортить нервы почте (дураков хватает и прецеденты были). Но если диски упакованы по технологиям, описанным выше - всё отлично доходит, дёшево и быстро, и все счастливы.

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

Если письмо заклеено не плотно - сотрудник почты может его вскрыть. Мало ли, что вы собрались посылать - может, оно тикает и вибрирует? :-)
Именно поэтому у Линуксцентра так дорого, а у меня дешевле: они - компания, и распорядок Почты для них закон. Поэтому они отправляют посылками и с солидной задержкой (никто специально ради вас на почту не ломанётся). Для частных лиц устав почты носит, скажем так, рекомендательный характер :-)
Так вот, с чувством собственной правоты, которое "достигается упражнением", убеждаем почтаря в том, что вы посылаете книжку или буклетик. Отвечаем чётко и убедительно, с ясным взглядом выдерживая этот допрос с пристрастием.

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

Это к слову о партизанщине: разузнайте, где ещё в пределах вашей досягаемости есть почтовые отделения. Отправлять письма можно откуда угодно - не обязательно с почты по месту жительства. Если вы занимаетесь отправкой таких писем часто, есть смысл наведываться в разные почтовые отделения.


Этап 5. После отправки.
Известите того, кому посылаете диски, что они отправлены. Лучше приложить отсканированный чек с почты - так можно отследить на сайте почты, что диски на самом деле отправлены.
Со сроками дохода всё сложнее: обычно - неделя или полторы. От дальности зависит слабо: в Петропавловск-Камчатский одно письмо долетело за четыре дня, а в Вологду тащилось месяц.


Резюме
Здесь я постарался описать технологию пересылки дисков - может быть, кто-то захочет заниматься отправкой дисков. И чтобы получатель не рассматривал красивые обломки вместо долгожданного диска с дистрибутивом, я поделился своим скромным (более сотни почтовых отправлений) опытом по этой части.


Эпилог
- "Виренс, ну и зачем тебе всё это надо!?" - спросит, может быть, любопытствующий читатель. Отвечаю:
  1. Время, потраченное вместо флейма на ЛОРе, можно использовать лучше. Например, помогая распространению *никс-систем.
  2. Помогать другим людям вообще приятно. Особенно получая письма, что диски пришли :-)
  3. Рассылка дисков не приносит огромных прибылей, но на оплату интернета, мобильника и коммунальных платежей вполне хватет.
  4. И, наконец, философское: когда солнце моих дней зайдёт окончательно, и меня, может быть, спросят "так что ты сделал, чтобы тот мир стал немного лучше?" - и мне будет, что ответить :-)
В общем, рассылка дисков - дело интересное, хлопотное, увлекательное, забавное, поучительное и до некоторой степени прибыльное.
Читать далее

Рассылка дисков приостановлена



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

Вот, кстати, чем мне на прощание помахал винчестер:

Mar 3 22:09:19 localhost kernel: ata2.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Mar 3 22:09:19 localhost kernel: ata2.01: (BMDMA stat 0x45)
Mar 3 22:09:19 localhost kernel: ata2.01: cmd ca/00:10:3f:ae:00/00:00:00:00:00/f0 tag 0 cdb 0x0 data 8192 out
Mar 3 22:09:19 localhost kernel: res 51/10:10:3c:ef:fb/00:00:00:00:00/fb Emask 0x81 (invalid argument)
Mar 3 22:09:19 localhost kernel: ata2.01: model number mismatch 'WDC WD4000KS-00MNB0' != ''
Mar 3 22:09:19 localhost kernel: ata2.01: revalidation failed (errno=-19)
Mar 3 22:09:19 localhost kernel: ata2.01: limiting speed to UDMA/133:PIO3
Mar 3 22:09:19 localhost kernel: ata2: failed to recover some devices, retrying in 5 secs
Mar 3 22:09:24 localhost kernel: ata2: soft resetting port
Mar 3 22:09:24 localhost kernel: ata2.01: revalidation failed (errno=-2)
Mar 3 22:09:24 localhost kernel: ata2.01: disabled
Mar 3 22:09:24 localhost kernel: ata2: soft resetting port
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Result: hostbyte=0x00 driverbyte=0x08
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Sense Key : 0xb [current] [descriptor]
Mar 3 22:09:25 localhost kernel: Descriptor sense data with sense descriptors (in hex):
Mar 3 22:09:25 localhost kernel: 72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
Mar 3 22:09:25 localhost kernel: 0b fb ef 3c
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] ASC=0x14 ASCQ=0x0
Mar 3 22:09:25 localhost kernel: end_request: I/O error, dev sdc, sector 44607
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: rejecting I/O to offline device
Mar 3 22:09:25 localhost kernel: printk: 62 messages suppressed.
Mar 3 22:09:25 localhost kernel: Buffer I/O error on device sdc1, logical block 36250668
Mar 3 22:09:25 localhost kernel: ata2: EH complete
Mar 3 22:09:25 localhost kernel: ata2.01: detaching (SCSI 1:0:1:0)
Mar 3 22:09:25 localhost kernel: EXT3-fs error (device sdc1): ext3_readdir: directory #18120705 contains a hole at offset 0
Mar 3 22:09:25 localhost kernel: Buffer I/O error on device sdc1, logical block 5570
Mar 3 22:09:25 localhost kernel: lost page write due to I/O error on sdc1
Mar 3 22:09:25 localhost kernel: Buffer I/O error on device sdc1, logical block 0
Mar 3 22:09:25 localhost kernel: lost page write due to I/O error on sdc1
Mar 3 22:09:25 localhost kernel: Aborting journal on device sdc1.
Mar 3 22:09:25 localhost kernel: journal commit I/O error
Mar 3 22:09:25 localhost kernel: ext3_abort called.
Mar 3 22:09:25 localhost kernel: EXT3-fs error (device sdc1): ext3_journal_start_sb: Detected aborted journal
Mar 3 22:09:25 localhost kernel: Remounting filesystem read-only
Mar 3 22:09:25 localhost kernel: Buffer I/O error on device sdc1, logical block 27
Mar 3 22:09:25 localhost kernel: lost page write due to I/O error on sdc1
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Synchronizing SCSI cache
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Result: hostbyte=0x04 driverbyte=0x00
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Stopping disk
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] START_STOP FAILED
Mar 3 22:09:25 localhost kernel: sd 1:0:1:0: [sdc] Result: hostbyte=0x04 driverbyte=0x00
Mar 3 22:09:34 localhost kernel: scsi 1:0:1:0: rejecting I/O to dead device
Mar 3 22:09:34 localhost kernel: Buffer I/O error on device sdc1, logical block 539
Mar 3 22:09:34 localhost kernel: EXT3-fs error (device sdc1): ext3_readdir: directory #2 contains a hole at offset 0
Mar 3 22:09:35 localhost kernel: scsi 1:0:1:0: rejecting I/O to dead device
Mar 3 22:09:35 localhost kernel: EXT3-fs error (device sdc1): ext3_readdir: directory #2 contains a hole at offset 0
Mar 3 22:11:30 localhost kernel: scsi 1:0:1:0: rejecting I/O to dead device
Mar 3 22:11:30 localhost kernel: Buffer I/O error on device sdc1, logical block 544
Mar 3 22:11:30 localhost kernel: lost page write due to I/O error on sdc1

Читать далее

Гибкая неубиваемая клавиатура



25 коммент.
Ничто не вечно - и неудачно упавшая клавиатура тому подтверждение. Многое она повидала, и пролитый чай, и хлебные крошки, и набор огромных текстов, и консольные эксперименты, но падение с полуметровой высоты стало для неё последней каплей. И отправился я на поиски замены - и вот что нашёл...

Предыдущая честная китайщина с лейблом "Dialog" прослужила 3 года и повидала всякое, но меньше всего терпела жидкости - пролитый нетвёрдой рукой чай не прощала никогда, блокируя добрую половину клавиш на несколько часов. Ну и падать не любила :-)

И тут на местном электронном рынке вижу такую занятную конструкцию. Мягкие резиновые кнопки, возможность свернуть клавиатуру в рулон и вообще оригинальное решение:

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

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


Плюсы и минусы
Определённо, в клавиатурах такого типа есть плюсы.
  • Пыле- и влагостойкость. Пролитый чай или кофе не оставит вас без возможности напечатать письмо или того хуже программу. По крайней мере, зелёный чай и Туборг Твист клавиатура выдерживает легко :-)
  • Подсветка. Вроде бы мелочь, а приятно печатать что-то глубоким вечером, когда не хочется включать свет или лампу. Мягкий синий свет, идущий от клавиатуры, подсвечивает буквы. При включённой подсветке слышен негромкий, но довольно отчётливый монотонный звук: он не мешает, и, кроме того, в моём случае легко нейтрализуется наушниками :-)
Конечно, неубиваемая клавиатура это хорошо, но есть у этого решения не только положительные стороны. Например:
  • Сравнительно большое начальное усилие нажатия. Привыкнув к отзывчивой клавиатуре с тихоходными клавишами, набирать тексты на такой клавиатуре немного непривычно, а заодно вылезают старые дурные привычки при наборе.
  • Совершенно иные тактильные ощущения. Большой ход клавиш, большая сила нажатия.
  • Клавиши расположены довольно далеко друг от друга - в общем эргономично, на мой взгляд, хотя после ноутбучных клавиатур несколько непривычно.
Так что после мягких клавиатур будет немного непривычно, особенно смущают два коротких пробела вместо одного длинного (это, очевидно, для возможности складывания). Субъективно, функциональные клавиши нажимаются немного тяжелее, чем обычные, и с непривычки нажимаешь их слегка. Немного практики - и полный порядок. Этот пост, кстати, набирается именно на новой клавиатуре, так что за очепятки строго можно не судить :-)

Резюме:
В общем, если старая клавиатура накрылась, а хочется новизны ощущений - можно попробовать разыскать подобное чудо в вашей местности. Называется Flexible Full sized keyboard. Есть ещё варианты без цифровой части и без подсветки.
Читать далее

MCBC - Мобильная система вооруженных сил



149 коммент.
К празднику Дня Советской АрмииДня Защитника Отечества решил на свой страх и риск выложить личные впечатления о работе с MCBC 3.0 - мобильной системой вооруженных сил. На самом деле я не понимаю, почему это окутано такой страшной тайной - ну старый RedHat, ну немного допиленный. Вот и всё. Почему бы военным не выложить какую-нибудь демо-версию "для устрашения вероятного противника"?

Так или иначе, но на некоторое время мне удалось поработать с этим чудом линуксостроения, о чём дальше кратко повествуется.

ПРЕДОСТЕРЕЖЕНИЕ! ВСЁ НИЖЕНАПИСАННОЕ ПРИВОДИТСЯ ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ! НЕ ПРОСИТЕ МЕНЯ ВЫСЛАТЬ ЭТОТ ДИСТРИБУТИВ - У МЕНЯ ЕГО НЕТ, А ОБРАЗ УСТАНОВЛЕННОЙ СИСТЕМЫ БЕЗВОЗВРАТНО УНИЧТОЖЕН!


Установка
Пока у меня не отобрали заветный диск с Тайной Родины :-) быстро готовлю виртуальный диск на 4 Гб и зажигаю QEMU для создания виртуальной машины, куда будет ставиться МСВС. Нас приветствует строгий экран, который сразу даёт понять, как всё серьёзно:

После чего идёт обычная ничем не прикрытая инициализация Linux-ядра. Инсталлятор сразу предупредил - перед началом установки нужно прочесть руководство Системного Программиста (!):

Я лично такие руководства читать не люблю, а люблю подходить к делу методом научного тыка. Тем, кто (надеюсь) будет устанавливать это в реальных "боевых" условиях, могу сказать, забегая вперёд: ошибиться инсталлятор вам практически не даст. Главное не намудрить при переразбивке диска и не снести свои суперсекретные данные.

Дальше всё идёт так же, как в RedHat Linux - Anaconda делает свою работу чётко, только везде пишет не RedHat Linux, а MCBC, но сути это не меняет.

Порадовал вопрос инсталлятора о том, использовать ли ему загрузчик. А вот, помнится, при установке MOPSLinux инсталлятор вообще предлагал страшное: запузырить загрузчик Lilo на дискету(!), называя её при этом диском А: Но это всё лирика, а вот MCBC-овский инсталлятор попросил ввести пароль для загрузчика, чтобы кто попало не передавал параметры ядру:


В общем, разумно, а то мало ли какие гентозавры сядут за машину - а там Linux, и давай корёжить загрузчик :-) Дальше по ходу установки начались комплексы - правда не у меня, а у инсталлятора:




Видимо, программы управления ракетными комплексами устанавливаются при выборе многообещающего пункта ВСЁ (ВКЛЮЧАЯ НЕОБЯЗАТЕЛЬНЫЕ). Вспомнив, что ракетных комплексов у меня в хозяйстве не имеется, решил ограничиться базовой конфигурацией, средствами разработки и подсистемой графического интерфейса. На всё потребовалось 1.7Гб и, получив от меня добро, система начала инсталлироваться. Даже учитывая то, что дело происходит в QEMU, установка прошла довольно быстро - всего за 12 минут.

Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.

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

Спросили пароль рута (не менее 8 символов), после чего я узрел вот это:

Однако, набор дискет. Хорошо хоть, что опционально, а то я уже забыл, как они выглядят. После удара с дискетами последовало добивание с просьбой указать объём "Видео ОЗУ":

Интересно зачем, ну не в игрушки же играть... Потом частоты монитора. Вообще-то оно должно определиться само, но учитывая общую древность системы и явно не передового оборудования, на которое это всё будет ставиться, вопрос в общем-то логичный. Заодно не даёт расслабляться в стиле "убунту - тык-тык и готово".
Ну всё, меня поздравили с успешной установкой RedHatMCBC.


Было это совсем не так сложно, как пугали в начале установки, даже не пришлось читать руководство Системного Программиста. Теперь загружаемся в свежеустановленную МСВС.



Работа

При загрузке имеем графический бутлоадер и дешёвую надпись "starting MCBC".
Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.
При входе в систему нас ждёт сурового вида приветствие с флагом:

Пользователь при входе root. Для справки - USSR это я так назвал машину. А вот и графический режим...

Хм... в справке написано (цитирую), что "были сделаны значительные доработки по части интерфейса пользователя". Страшно представить, что же было до этого. Очень надеюсь, что за компьютером будут сидеть нетребовательные к интерфейсу пользователи, ибо невесть откуда взятые страшные курсоры вкупе с глазораздирающими шрифтами комфортной работе не способствуют. Вообще шрифты определённо удались... ЛОРовским аналитикам просьба воздержаться от комментариев, а также предварительно закапать глазные капли и выпить валидолу :-) Я, конечно, не фанат шрифтоведения, но даже мои не слишком требовательные глаза этого долго терпеть не могут. Хотя МСВС это не то место, где ждут каких-то изящных изысков. Главное - чтобы работало. И оно в общем работает. И со стороны простого пользователя, работает достаточно хорошо.

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

Есть игрушки - причём довольно много. В военной ОС особенно колоритно смотрятся игры "Сапёр" и "Парашюты", что понятно: специализация системы даёт о себе знать.

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

Из плюсов - только наличие кириллической справки. Из форматов знает лишь BMP, GIF, JPG и PNG - даже поддержки TIFF нет. Теперь я не удивлён, почему наш не очень гражданский заказчик передавал нам карты аэрофотосъёмки в формате BMP :-)

Довольно забавно, однако в комплекте идёт много обоев для рабочего стола, даже для разрешений 1280х1024:
Обои идеологически выдержанные и довольно неплохие - кто-то из разработчиков в душе большой фотограф.

Панель управления тоже есть, и, судя по справке, не менялась аж с 2003 года. Для управления программами есть frontend к RPM версии 4.2.1, хотя я не очень себе представляю, где могут быть репозитории к МСВС.

В комплекте оказался MC (Midnight Commander), что приятно - будет чем с удовольствием побродить по файловой системе, чем сейчас и займёмся.


Что внутри?

Собственно, не нужно быть большим специалистом, чтобы быстро выяснить - ядро здесь 2.4.32, а это значит, что на современное оборудование МСВС вам поставить не удастся. Плакали ваши SATA-винчестеры, PCI-E видеокарты вместе с доброй половиной флешек и других USB-устройств. Очень надеюсь, что информация там, где МСВС реально работает, переносится на дискетах или по сети: когда я ещё на Debian Woody работал с ядром 2.4.28, бОльшая часть флешек просто не опознавалась.

Иксы версии 6.8.2 особых проблем на Cirrus Logic имени QEMU не повстречали. Опять-таки сильно надеюсь, что в войсковых частях продукции ATI не будет, а то искать драйвера под X.org 6.8.2 сейчас будет очень даже нелегко.

Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.

Исходники ядра лежат в /usr/src/linux-2.4.32-viins42, однако там только заголовочные файлы. Это ещё раз к вопросу о лицензии и о том, что кое-кто её не читал: зажимать исходники вообще и ядра в особенности крайне нехорошо, особенно вместе с удалением отовсюду копирайтов и самой лицензии GPL. Ну и писать в графе "Поставщик" пакета kernel своё ВНИИНС по крайней мере не вежливо по отношению к товарищу Торвальдсу.

Много интересного содержит в себе каталог /usr/share - я нашёл там целых 4 версии automake (хотя я для своих мелких поделок обходился до сих пор почему-то одной), а также библиотеки GTK и QT времён очаковских и покоренья Крыма. В качестве загрузчика исправно трудится LiLo 22.8, расшаривание файлов с помощью Samba 2.2.12, печать с помощью CUPS версии 1.1.23. А вы говорите, что Debian это старьё... :-)


Документация
Документация лежит в каталоге /usr/MCBC/doc и представляет собой HTML-файлы и кучей растровых вкраплений - ума не приложу, зачем нужно было оформлять "Систему единой документации" в виде намертво вбитых картинок. Упоминаний об истинных авторах программ нет - вытерты все упоминания о GPL, которой авторы сего обязаны решительно всем, ибо не будь Linux, они никогда бы не изваяли МСВС. На uname, впрочем, оно отзывается, как ему и положено: Linux 2.4.32.

Документация в общем неплоха, и лучше, чем вообще ничего. Но некоторое разделы просто не написаны, и справка страдает отчаянным лаконизмом. Хотя на русском, без кучи орфографических ошибок, опечаток и англо-россиянской мешанины, как в том же LinuxXP. Есть немножко документации даже по PAM и Samba, хотя для понимания дела её, конечно, мало. То есть руководство Системного Программиста читать всё равно придётся :-)

Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.


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

Ещё раз напоминаю о том, что дистрибутива у меня больше нет и МСВС выслать почтой даже не просите. Буду рад отзывам разработчиков (в частности интересует, на базе чего создан ELK) и конструктивной критике.

Ссылки по теме:
Кроме данной статьи, есть материал в Википедии и довольно интересный обзор.
(спасибо уважаемым комментаторам!).

Обновлено: есть ещё обзор
, повествующий о продолжении данного марлезонского балета МСВСфера - новая мобильная система вооруженных сил или афера?
Читать далее

Древовидные редакторы - outliners



24 коммент.
Есть такой жанр программ, как древовидные редакторы - или outliners, как называют их загадочные англичане. Такие программы очень полезны, так как являются неким промежуточным вариантом между кучей "липких заметок" (что хорошо реализуется с помощью knotes) и достаточно мощными базами данных (от Kixi до PostgeSQL и им подобных). То есть тот самый промежуточный вариант, когда липкие заметки уже не справляются с организацией данных, а городить базы данных нет нужды.


Древовидная организация данных
Самый простой вариант в этом случае - просто создавать документы с нужными данными в любом удобном формате и хранить их в каталогах файловой системы. Подход простой, но не гибкий. Поэтому хорошо бы найти такую программу, которая хранила бы "липкие заметки" в виде какой-то организованной структуры. Вот тут-то мы и начинаем искать по репозиторию с ключевыми словами outliner и tree-like. На выходе имеем:
vim-vimoutliner - script for building an outline editor on top of Vim
postgresql-contrib-8.1 - additional facilities for PostgreSQL
postgresql-contrib-7.4 - additional facilities for PostgreSQL
treeline - versatile tree-like structured custom data manager
Первое - для поклонников vim, про PostgreSQL уже говорилось выше. А вот treeline нам явно в тему. Кроме TreeLine, который есть в репозиториях Etch, имеется ещё замечательная программа Notecase, о которой речь пойдёт чуть ниже.

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

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


Notecase
В репозитории его можно не искать, так как лицензия у приложения BSD. Но это не мешает нам скачать тарбол с сайта автора, поставить нужные dev-пакеты и собрать себе самим это приложение.

Сборка notecase в пакет проблем не представляет - нужно только поставить немного гномовских пакетов для сборки:
aptitude install libgtk2.0-dev libgnomevfs2-dev
После сборки пакеты можно удалить. Процесс сборки ничем не отличается от уже описанного здесь.

Собрав и установив пакет, мы получаем вот такое скромное приложение:



Ничего лишнего, никаких бесполезных наворотов, но зато быстро и удобно.В программе есть русский интерфейс, включается так: Edit - Options - вкладка Global - Use system language settings.

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

Среди основных возможностей можно выделить:
  • шрифтовое оформление bold, italic, underline, strikethrough, color
  • шифрование документа
  • поиск и замена, перетаскивание фргаментов деревьев
  • вставка документов и файлов
  • метки (tags) для элементов деревьев данных
  • импорт и экспорт данных в другие приложения
В общем, если вам нужно хранить заметки в структурированном виде, то notecase это то, что вы искали.


Ссылки
Большое про древовидные редакторы можно прочесть например тут, TreeLine есть в дистрибутивах, а notecase можно скачать отсюда (там же есть пакеты под Убунту).
Читать далее

Юмор: UNIX-коаны Мастера Фу



22 коммент.
Несколько историй из замечательной книги "Искусство программирования для UNIX" Эрика Реймонда. Наверное, многие это уже читали, но всё равно - время от времени хорошо припадать к истокам и перечитывать классику.

Мастер Фу и десять тысяч строк

Однажды Мастер Фу сказал заезжему программисту: "В одной строке кода shell-сценария больше духа UNIX, чем в десяти тысячах строк кода на С!"

Программист, гордый своими познаниями в С, ответил: "Может ли быть такое? Ведь С - язык, в котором реализовано само ядро UNIX!"

На это Мастер Фу ответил: "Это так. Тем не менее, в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С!"

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

Мастер Фу сказал: "То, что ты говоришь, правда. Однако в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С".

Программист усмехнулся и поднялся, чтобы удалиться. Но Мастер Фу кивнул своему ученику Ньюби, который писал строку shell-кода на стоящей рядом белой доске, и сказал: "Господин программист, посмотрите на этот конвейер! Не заняла бы его реализация на C десять тысяч строк?"

Просматривая то, что писал Ньюби, программист что-то бормотал в бороду. В конце концов, он согласился, что это так.

"И сколько часов потребовалось бы вам для реализации и отладки этой программы на языке С?"

"Много", - признал заезжий программист. "Но только безумец стал бы тратить столько времени, когда его ждет множество более достойных задач".

"Так кто лучше понимает дух UNIX?" - спросил Мастер Фу. "тот, кто пишет десять тысяч строк, или тот, кто, сознавая тщетность этих усилий, извлекает пользу, не программируя?"

Услышав это, программист достиг просветления.




Мастер Фу и Скрипт Кидди
Незнакомец из страны Вут пришел к Мастеру Фу во время его утренней трапезы.

"Я не раз слышал о вашем величии, - сказал он. - Пожалуйста, научите меня всему, что знаете".

Ученики Мастера Фу переглянулись, смущенные варварским языком пришельца. Мастер Фу только улыбнулся и ответил: "Вы хотите изучить путь UNIX?"

"Я хочу быть волшебником-хакером, - ответил незнакомец, - и владеть всеми компьютерами".

"Я не учу этому", - ответил Мастер Фу.

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

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

Незнакомец поклонился и вышел. Мастер Фу закончил трапезу.

Прошли дни, а затем и месяцы. О незнакомце забыли.

Спустя годы незнакомец из страны Вут вернулся.

"Будь ты проклят!" - воскликнул он. - Я взломал этот сервер, это было не трудно, как ты и сказал. Но ФБР схватило меня и бросило в тюрьму".

"Хорошо", -сказал Мастер Фу. - Ты готов к следующему уроку". Он написал IP-адрес на бумаге и передал его незнакомцу.

"Вы с ума сошли?", - пронзительно вскрикнул тот. - После всего, что я прошёл, я не собираюсь снова взламывать компьютеры!"

Мастер Фу улыбнулся. "Здесь, - сказал он, - начинается мудрость".

Услышав это, странник достиг просветления.




Мастер Фу учил своих студентов

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

"Но есть и другое направление в учении Дхармы, примером которого может служить великая мантра патриарха Томпсона - "Находясь в сомнении, используй грубую силу", и различные сутры о большей ценности 90% функций прямо сейчас, чем 100% позже, что подчеркивает надежность и простоту реализации"

"Теперь скажите мне: каким программам присущ дух UNIX?"

Помолчав, Ньюби заметил: "Учитель, эти два учения могут противоречить друг другу".

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

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

Мастер Фу кивнул в знак согласия.

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

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

Мастер Фу кивнул в знак согласия.

"Каков же, в таком случае, пусть дхармы?" - спроил Ньюби.

И учитель ответил: "Когда орел летит, забывает ли он о том, что его лапы касались земли? Когда тигр после прыжка настигает свою жертву, забывает ли он о моменте, проведенном в воздухе? Три фунта VAX!"

Услышав это, Ньюби достиг просветления.



Мастер Фу и консультант по методологии
Когда Мастер Фу и его ученик Ньюби посещали святые места, по вечерам Мастер Фу имел обыкновение выступать перед неофитами UNIX тех городов и сёл, где они останавливались на ночлег.

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

"Если при доводке вы не профилируете регулярно ваш код в поисках узких мест, то вы уподобляетесь рыбаку, который закидывает сеть в озеро, в котором нет рыбы," - сказал Мастер Фу.

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

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

"Но если он уронил свою сеть в озеро, - сказал консультант по методологии, - то почему он искал ее в лодке?"

"Потому, что он не умел плавать", - ответил Мастер Фу.

Услышав это, консультант достиг просветления.




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

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

Мастер Фу не проронил ни слова, но указал на Луну. Находившийся поблизости пёс залаял на руку учителя.

"Я не понимаю вас", - сказал программист.

Мастер Фу молчал и показал на образ Будды. Потом указал на окно.

"Что вы хотите этим сказать?" - спросил программист.

Мастер Фу указал на голову программиста. Потом указал на камень.

"Почему вы не можете сказать яснее?" - потребовал программист.

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

Пока программист пытался выбраться из горы мусора, пёс ходил рядом и лаял на него

В этот момент программист достиг просветления.



Мастер Фу и фанатик UNIX

Один фанатик UNIX, услышав, что Мастер Фу обладает мудростью Великого Пути, пришел к нему поучиться. Мастер Фу сказал ему:

Когда патриарх Томпсон изобрел UNIX, он не понял этого. Потом к нему пришло понимание, но он уже не мог ничего изобрести.

Когда патриарх Макилрой изобрел канал, он знал, что это преобразит программное обеспечение, но он не знал, что это изменит его мышление.

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

Действительно, патриархи были слепы и глупы!

Фанатик был очень рассержен словами Мастер Фу.

"Просвещенные, - запротестовал он, - открыли нам Великий путь UNIX. И если мы будем насмехаться над ними, мы потеряем добродетель и возродимся как звери или MCSE".

"Бывает ли когда-либо твой код полностью без погрешностей и ошибок?" - спросил Мастер Фу.

"Нет, - ответил фанатик, - такое недоступно человеку".

"Мудрость патриархов, - сказал Мастер Фу, - в том, что они знали, что они безумцы".

Услышав это, фанатик достиг просветления.




Мастер Фу рассуждает о природе UNIX
Один ученик сказал Мастеру Фу: "Нам говорят, что фирма SCO удерживает реальную власть над UNIX".

Мастер Фу кивнул в знак согласия.

Ученик продолжал: "Однако нам также говорят, что другая фирма, OpenGroup, также удерживает реальную власть над UNIX".

Мастер Фу кивнул в знак согласия.

"Как такое возможно?" - спросил ученик.

Мастер Фу ответил: "SCO действительно владеет кодом UNIX, но код UNIX - это не сама UNIX. OpenGroup действительно владеет маркой UNIX, но название UNIX - это не сама UNIX".

"В чем же тогда сущность UNIX?" - спросил студент.

Мастер Фу ответил: "Не в коде. Не в имени. Не в мышлении. Вообще ничего материального. Вечное изменение без перемен".

"Сущность UNIX проста и пуста. Поскольку она проста и пуста, она сильнее тайфуна"

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

Услышав это, ученик достиг просветления.




Мастер Фу и конечный пользователь

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

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

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

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

"Расскажи мне, - спросил он у неофита, - о коде, который ты написал, и о работе по проектированию, которую ты проделал".

Неофит начал, заикаясь, отвечать, но не мог ничего сказать.

Мастер Фу повернулся к пользователю. "Скажи мне, - осведомился он, - зачем ты ищешь Великий Путь?"

"Мне не нравится программное обеспечение, которое окружает меня, - отвечал пользователь. - Оно ненадежно работает и не радует глаз и сердце. Услышав о том, что путь UNIX, хотя и труден, но превосходен, я пытаюсь отбросить все препоны и обман".

"И чем же ты занимаешься, если так борешься с нынешним программным обеспечением?" - спросил Мастер Фу.

"Я - строитель, - ответил пользователь. - Многие дома в этом городе построены моими руками".

Мастер Фу повернулся к неофиту. "Кошка может насмехаться над тигром, - сказал он, - но это не превратит мяуканье в рев".

Услышав это, неофит достиг просветления.
Читать далее