January 7, 2020

Linux на Fujitsu Primergy RX1330

Всем привет. Ниже будет пафосный лонгрид про Linux, RAID и Fujitsu. Тем, кто равнодушен к этим словам, можно смело пропустить этот пост. Как обычно, пишу в основном для себя, чтобы впоследствии вспомнить ход мыслей и пути решения проблемы.

Год назад возникла необходимость поднять сервер сетевых дисков на Fujitsu Primergy RX1330. Моя любимая операционка для таких задач - Debian. Уже несколько лет я её использую и как серверную, и как бытовую операционку на личном ноутбуке. В комплектацию RX1330 входит аппаратный RAID контроллер. В моём распоряжении было два SAS диска по 1 ТБ, и я решил создать зеркальный RAID1 массив. С наскоку поднять RAID не удалось, а так как работать пришлось в жестком дефиците времени, я временно развернул сервер только на одном диске, решив вернуться к вопросу позже.

И вот момент настал. За это время у меня появился успешный опыт подъёма RAID1 и установки Windows Server на Fujitsu Primergy RX200. Удалось не с первой попытки. Мне не хватило терпения дождаться завершения инициализации массива. На недоинициализированном массиве установка операционки начиналась, но в процессе вылетала в BSOD. Вскоре я понял свою ошибку, изучая сообщения RAID-а с помощью сервисного DVD от Fujitsu. После окончания инициализации установка завершилась успешно.

С этими сведениями я вернулся к RX1330, решив, что год назад совершил аналогичную ошибку. Но инициализация массива завершилась, а Debian по-прежнему устанавливаться в режиме RAID не захотел. Пришлось углубиться в изучение вопроса.

Ошибка возникала на этапе установки GRUB, при этом установщик спрашивал путь установки, предлагая на выбор /dev/sda и /dev/sdb - физические диски, из которых состоит RAID. Любой выбор приводил к ошибке, а после перезагрузки RAID оказывался деградированным, целостность массива была нарушена. Завариваем кофе и начинаем курить форумы.

Здесь я бы хотел "поблагодарить" форумных охотников за репутацией, которые не имея доступа к соответствующему оборудованию, начинают давать советы из гугла. Так, я впустую потратил время на ключ установки dmraid=true (как оказалось, он нужен для дешевых неполноценных RAID-контроллеров в составе бытовых материнских плат, так называемых fakeraid), на попытки ручного ввода путей установки GRUB (/dev/md1, /dev/md126, /dev/md126p1, /dev/md127...), на установку GRUB одновременно на оба физических диска (это, разумеется, не спасало RAID от деградации).

К этому моменту я начал понимать, что Debian не видит железного RAID как устройства, а пытается работать с software RAID. Это говорит об отсутствии драйвера (спасибо, кэп). Название драйвера отсутствует в спецификациях на сайте производителя, но его можно увидеть в утилите ServerView Installation Manager из сервисного DVD. Нужный нам драйвер называется megasr, и в Debian он действительно отсутствует (в интернете можно найти следы его поддержки, но тут, похоже, сыграла роль доступности исходников). Заявленные производителем поддерживаемые операционки - Red Hat Linux и Suse Linux, оба rpm-дистрибутивы.

Некоторое время я рассматривал, как вариант, программный RAID от Debian. Но тогда нужен отдельный маленький раздел GRUB вне RAID, что приводит к ассимметричной геометрии, и соответственно, к потере возможности горячей замены повреждённого диска. Это была основная причина, по которой я решил отказаться от идеи использовать Debian на этом сервере. Начинаем изучать альтернативы.

Red Hat и Suse - платные дистрибутивы, стоимость подписки начинается от 349 долларов в год. Но у них есть бесплатные близнецы, на которых производится обкатка новых программ. Для Red Hat это Fedora, для Suse - OpenSuse. Мне не удалось найти упоминания о наличии поддержки megasr в Fedora. Эксперимент это подтвердил - установщик Fedora не смог увидеть RAID контроллер. Но OpenSuse Leap 15.1 успешно справился с задачей.

Что меня искренне радует в Linux, не смотря на различия менеджеров пакетов, большинство программ идентичны для всех дистрибутивов. После запуска сервера на настройку сетевых дисков ушли минуты - ssh, samba, ufw, crontab в OpenSuse те же самые, что и в Debian. Менеджер пакетов zypper от aptitude, разумеется, отличается, но не критично.

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

December 31, 2019

Книги, прочитанные в 2019

Джон Кракауэр - В разреженном воздухе
Фильм по этой книжке мы с Сашкой и Жекой впервые увидели в кинотеатре в Мананге, на высоте 3500м. В фильме и книге описывается трагедия, когда в 1996 году при восхождении на вершину Эвереста погибли 8 альпинистов. Самая высокая гора в мире по-прежнему притягательна, не смотря на то, что на такой высоте жизнь и здоровье уходят из человека очень быстро, и в гонке со смертью счёт идёт на часы. Автор - журналист и участник одной из коммерческих экспедиций, и эта книга, судя по всему, наиболее полное описание этой жуткой истории. Жуткой еще и потому, что трупы погибших на Эвересте чаще всего годами остаются неубранными. Единственный спорный момент, негативное отношение автора к Анатолию Букрееву. Букреев после восхождения на вершину спустился в штурмовой лагерь, отдохнул, и смог подняться и спасти жизни троих альпинистов. Кракауэр считает, что Букреев должен был оставаться на верху, с людьми. Но так поступили лидеры экспедиций, и оба погибли. Лично я считаю Букреева положительным персонажем, его книга ожидает своей очереди.

Джон Кракауэр - Под знаменем Рая
Тем не менее, Кракауэр - хороший журналист, и пишет интересно. Следующая известная его книга - про секту Мормонов, Церковь Святых Последних Дней, про которую каждый из нас как минимум слышал в связи с полигамией, многоженством. Автор проводит журналистское расследование, и показывает, как благодаря строгой иерархии и подчинению, все выборные должности в округе, включая судей, присяжных и шерифов, быстро оказываются в руках одной церковной общины. Хоть главная ветвь СПД официально отказалась от полигамии, огромное количество мормонов продолжает её практиковать. Хотя в понимании харизматичных основателей СПД, это была невинная попытка изменить окружающий мир под свои интересы, то когда на сцену выходят фанатики-фундаменталисты, появляются насилие и жестокость. Книга написана по следам жестокого убийства женщины и ребёнка братьями-мормонами в 1984 году. Для меня открытие, что полигамия, в понимании мормонов, часто означает педофилию.

Алан Купер - Психбольница в руках пациентов
Я спросил у Е.Д., знает ли она хорошую книгу про пользовательские интерфейсы, и она посоветовала мне эту. Начинал читать в надежде, что здесь будет написано про порядок кнопок, про расстояние до края окна в пикселях, про пропорции, шрифты и золотое сечение - но нет, эта книга оказалась лучше. Эта книга про то, нужна ли здесь эта кнопка, это окно, и вообще, эта программа. Традиционно разработкой ПО заправляют программисты, далёкие от пользователей. Я столкнулся с этим на своей работе - официальный отдел разработки ПО создал программу, в которой были заложены строгие требования к количеству пробелов при вводе расписания. А так как расписание проходило из разных источников, работа диспетчера превращалась в удаление лишних пробелов, и добавление недостающих. После чего мне пришлось написать свою программу, которой пользуются и по сей день. Книга - маст рид для любого айтишника.

Стивен Хокинг - Краткие ответы на большие вопросы
Сборник последних статей С.Х., опубликованный уже после его смерти. Предисловие к книге написано актёром, исполнявшим главную роль в фильме "Вселенная Стивена Хокинга", а трогательное послесловие - дочерью Хокинга. В статьях - ответы на экзистенциальные вопросы с точки зрения физика, а также отчёт о прогрессе в деле "великого объединения".

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

Ален Бомбар - За бортом по своей воле
Французский медик, исследовавший вопрос выживаемости жертв кораблекрушений. Изучил проблему с диетической, медицинской и психологической точки зрения, и поставил эксперимент на себе. Пересёк в одиночку Атлантический океан, провёл 65 суток в открытом море. По мнению автора, главная опасность, подстерегающая людей, вынужденных покинуть судно - психологическая. «Жертвы легендарных кораблекрушений, погибшие преждевременно, я знаю: вас убило не море, вас убил не голод, вас убила не жажда! Раскачиваясь на волнах под жалобные крики чаек, вы умерли от страха». Для меня открытием было то, что пить морскую воду не так опасно, как это принято считать. Несколько дней утолять жажду исключительно морской водой в небольших количествах не наносит непоправимого вреда организму.

Виктор Пелевин - iPhuck 10
Пелевин один из немногих авторов, книги которые я покупаю в бумажном виде в качестве благодарности за доставленное удовольствие. И второй после Гайдука, который в моих глазах оправдывает употребление писателями наркотиков :) Его шутки про Евросоюз в составе России, Эстонии, Латвии, Белоруссии и Украины, Европейский Халифат, surveillance capitalism, соперничество между Самсунь Адрогином и АйФаком заставляют улыбаться, а фантазии на тему ИИ и Random Code Programming я считаю пророчеством. Рекомендую.

Борис Акунин - Часть Азии. Ордынский период. (История Российского государства - 2)
Книга по истории, написана простым понятным языком, для людей, которые историю знают плохо, но хотят для себя разобраться. Кто читал Фандорина, знают, как увлекательно умеет писать Акунин. Особенность книги в том, что как правило, период монгольского ига воспринимается труднее всего, как позорная и неприятная страница истории. Акунин первый из известных мне авторов делает акцент на событиях, происходящим внутри Золотой Орды, а потом объясняет, как они влияли на Русь. В результате, хаотические и трудно объяснимые школьным учебником истории события, получают причину, смысл и внутреннюю логику. Книга толстая, но она того стоит.

Хол Клемент - Экспедиция «Тяготение»
Гигантская планета с огромной силой тяжести, 700 g на полюсах, 3 g на экваторе. Исследовательская станция землян на орбите, ракообразные туземцы на поверхности. Взаимовыгодное сотрудничество для того, чтобы добраться до потерпевшей аварию на полюсе автоматической ракеты с исследовательским оборудованием. Не смотря на то, что это научная фантастика, и при каждом удобном случае в повествование вставлены короткие лекции по физике, химии, биологии и астрономии, автору удалось создать уютный комфортный мир, который увлекательно исследовать, сидя вечером в кресле. Отличная книга для релакса.

Роберт Грин - 48 законов власти
Эту книгу подарила мне на день рождения Инна. Вначале, увидев название, я, признаться, расстроился, решив, что это очередные “1001 совет, как стать миллионером”. Но послушно начал читать, и оказалось, что книга отличная. По жанру она близка к “Историческим миниатюрам” Пикуля, когда история излагается в виде коротких, легко запоминающихся анекдотов, несколько историй объединяются, формулируется короткое правило, к которому тут же приводится история - исключение. Познавательно-развлекательное чтение, мой самый любимый жанр.

Фредерик Пол - Война торговцев космосом
Я наткнулся на эту книгу случайно, пока искал совсем другую книгу. Название напомнило произведения Андре Нортон, скачал :) Дело чуть не испортило фото автора - жизнерадостный американский дедушка. Решил прочитать пару страниц, чтобы понять жанр :) Потом, еще пару страниц, чтобы убедиться, что это антиутопия. Потом, еще немного, чтобы убедиться, что его подруга действительно погибла, а вместо неё - венерианка после пластической операции. Потом, когда главный герой попал в армию лейтенантом, и сержант учила его премудростям службы, книга мне начала даже нравится (я её читал, будучи сам в армии :) Вердикт - не шедевр, но тем не менее, хорошая фантастика.

Всеволод Овчинников - Калейдоскоп жизни
Писатель и журналист, написавший великолепные книги: “Ветка сакуры”, в которой описывает национальные особенности характера японцев, и “Корни дуба”, о национальном характере британцев. В этой книге он пишет о своём китайском периоде. Для меня эта книга ценна доходчивым объяснением понятий конфуцианства, даосизма и буддизма. Конфуцианство - этика, буддизм - религия, даосизм - диалектическая философия. Даосизм проповедует недеяние, а буддизм — нежелание. Конфуцианство является моральным кодексом. Переплетаясь, конфуцианство, даосизм и буддизм составляют важную основу восточной культуры.

Пётр Бормор - Книга на третье
И снова Бормор - короткие истории с великолепным юмором, удивительной философией, и неожиданными развязками:
"Прекрасный Принц наклонился над Спящей Красавицей и поцеловал ее в губы.
— Который час?.. — сонно спросила Красавица.
— Пол-второго, — ответил Принц.
— А день?
— 12 сентября 1567 года.
— Ты бессовестное чудовище! — вздохнула Красавица. — Я же могла спокойно спать еще целых пять лет!"
"— Поздравляем! Вы — десятимиллионный житель планеты и имеете право на специальный приз. Любое желание!
— Любое?
— Да.
— Эээ… хм. Я бы хотел подумать…
— Отлично, записано! Итак, Соломон Давидович, Вы выбрали свой выигрыш."


Гарри Каспаров - Шахматы как модель жизни
Книга, хоть и про шахматы, вполне динамичная и совсем не скучная. Прежде всего, это биография Каспарова. Автор обсуждает шахматную стратегию, проводит параллели к Наполеону и Microsoft, плавно переходит к обсуждению современной политики, личностей и особенностей характера известных гроссмейстеров и разбирает знаменитые шахматные партии. Размышляет над военной и экономической стратегией. Книга интересная, рекомендую.

Бен Рич - Skunk Works: личные мемуары моей работы в Локхид
Книгу посоветовал Артём Казачанский. Причём, не просто посоветовал, а цитировал большими фрагментами, после которых книгу невозможно было не прочитать. Мемуары руководителя Локхид - легендарного подразделения, создавшего легендарные самолёты, включая U-2, летавший во времена холодной войны над СССР на высоте 24 км, первый в мире самолёт по стелс технологии F-117 (по мотивам которого была создана компьютерная игра F-19, без которой я не могу представить своё детство :), SR-71 Blackbird, летавший с фантастической скоростью 3,2 Маха, и, конечно, C-5 Galaxy, по мотивам которого был создан Ан-124 "Руслан". Для меня еще книга важна, как подтверждение, что задача хорошего руководителя перспективного подразделения - оградить коллектив от бюрократии. В книге также приводятся воспоминания лётчиков, пилотирующих самолёты во время холодной, персидской и вьетнамской войны. Рассказано про технологию "стелс", разработка которой стала возможной благодаря советской книге по радиолокации, и почему первые самолёты были сделаны из плоских поверхностей, а все последующие - нет. Считаю, что это лучшая книга, прочитанная в этом году. Фрагмент из книги:
– Привидение поймано, сэр. – говорит оператор молодому капитану, командующему расчётом.
На секунду я пугаюсь, наблюдая движущуюся точку, которой не должно быть. Она довольно большая, никакой ошибки быть не может.
– Выглядит как T-38, сэр. – продолжает оператор.
Я выдыхаю. Их радар поймал самолёт сопровождения T-38. Оператор понятия не имеет, что на экране должно быть два самолёта, а не один, и он не увидел пролёт “Хэв Блю” над собой.
– Извините, сэр, – говорит мне молодой капитан с самодовольной улыбкой, – похоже, ваша штуковина работает недостаточно хорошо.
Будь это реальная боевая ситуация, пролетевший самолёт сбросил бы на фургон высокоточные бомбы с лазерным наведением и этот самодовольный капитан так и не узнал бы, кто их поразил. Может быть, это научило бы его хорошим манерам.
Дверь фургона открывается и в прохладную темноту входит молодой сержант, всё ещё ошарашенный галлюцинацией, как ему кажется, вызванной пустынной жарой – только что своими глазами он видел странное привидение, которое оказалось невидимым для их зенитного комплекса.
"Капитан, – начинает он, – вы не поверите..."


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

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

Ли Якокка - Карьера менеджера
Когда Е.Д. узнала, что я читаю книжку Форда, она посоветовала мне "Карьеру менеджера". Автор - топ менеджер Форда, создатель успешных моделей авто, уволенный со скандалом и позором. Потом он стал топ менеджером Крайслера, и сумел спасти компанию от кризиса. Не смотря на всю пользу, что Якокка принёс компании Форда, его увольняют. Все кого он считал друзьями, делают вид, что с ним незнакомы. Читая эти страницы, я говорил про себя: "Парень, я знаю, каково тебе тогда было". Но эта книга не о жертве обстоятельств, а о том, как собрать все силы и сражаться вопреки всему, и что увольнение - не конец, а начало новой жизни. Читать лучше всего имея под рукой википедию, чтобы видеть автомобили, описанные в книге. Еще, в этой книге доходчиво показана разница между демократами и республиканцами. Всё дело в направлении иерархии. Республиканцы строят иерархию от государства к людям, а демократы в обратном порядке. Таким образом, можно сказать, что республиканцы - идеалисты, а демократы - материалисты.

Николай Никулин - Воспоминания о войне
Вторая мировая война без прикрас. Без романтического патриотизма, который привычно ожидаешь от книги на такую тему. Автор объясняет почему так, фронтовики выживают лишь случайно. А мемуары в массе пишут тыловики. Книга интересная, местами жуткая. Начинаешь заново переосмысливать судьбы ветеранов, которых знал в детстве.
"Существующие мемориалы не памятники погибшим, а овеществленная в бетоне концепция непобедимости нашего строя. Наша победа в войне превращена в политический капитал, долженствующий укреплять и оправдывать существующее в стране положение вещей. Жертвы противоречат официальной трактовке победы. Война должна изображаться в мажорных тонах. Урра! Победа! А потери — это несущественно! Победителей не судят".
"И потек у костерка неторопливый солдатский разговор. Говорили каждый о своем, но постепенно я уловил три лейтмотива нашей беседы, заключавшие в себе основные проблемы военной жизни: смерть, жратву и секс".


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

Федор Михайлович Достоевский - Братья Карамазовы
Книга, которую мне пришлось прочесть, по тем же причинам, что и первый том Игры Престолов - чтобы лучше разбираться в современной культуре. Различные авторы слишком любят ссылаться на Алёшеньку, Грушеньку и Смердякова, чтобы эту книгу можно было долго игнорировать. Когда в очередной статье сослались на старца Зосиму, я понял, что момент настал. Произведение грандиозно, я его не опишу в одном абзаце. В трёх не похожих друг на друга братьях легко увидеть самого себя в разных состояниях души. В старшем Карамазове тоже легко увидеть, до чего можно докатиться, если не быть к себе достаточно строгим. Книга об убийстве, но это не детектив. Не мрачная, что удивительно. Хочется узнать дальнейшую судьбу Дмитрия, но увы. Это последняя книга в жизни Достоевского.

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

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

Адам Кей - Будет больно. История врача, ушедшего из профессии на пике карьеры
Автобиографические зарисовки из жизни британского врача. Сначала автор проходит практику интерном в общеврачебной государственной клинике, потом выбирает специализацию акушера-гинеколога (или «детки-письки», как они ласково называли эту специализацию в мединституте). У автора отличное чувство юмора, большинство историй трагикомические. Черного юмора, правда, тоже достаточно. Спустя несколько лет практики, происходит трагический случай, после которого автор оставляет медицину. Если вы тоже любите реальные истории про реальных врачей, эта книга для вас.

Книги, прочитанные в 2018
Книги, прочитанные в 2017
Книги, прочитанные в 2016
Книги, прочитанные в 2015
Книги, прочитанные в 2014
Книги, прочитанные в 2013
Книги, прочитанные в 2012

November 19, 2019

Флайтдиспатч и рыбка

Поймал однажды флайтдиспатч рыбку. Да не простую, а золотую. И взмолилась золотая рыбка:
— Отпусти меня, — говорит, — добрый опс! Всё, что попросишь — всё исполню!

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

И ответила рыбка, едва он закончил перечислять:
— ЖАРЬ!!!

May 23, 2019

La Citadelle de Québec

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

April 14, 2019

Армия, день 518



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

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

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

Любители репостить карту, на которой Украина показана на последнем месте по зарплатам-доходам-пенсиям (нужное подчеркнуть), не задумываются, что эта карта совсем о противоположном. Это карта стран, где можно отлично прожить _без зарплат-доходов-пенсий_ (нужное подчеркнуть), и здесь Украина как раз на первом месте. Большинство людей, которые жаловались мне на бедность, имели смартфон, как минимум один автомобиль, и не знали точную цену хлеба в магазине. (Тест на бедность. Спроси, почём батон. Если ответит с точностью до копейки, немедленно купи. Если скажет "не помню, кажется гривен 10", улыбнись и иди дальше).

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

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

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

March 24, 2019

Армия, день 496



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

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

Потом нас отправили в Харьков в учебку. Мы ходили в наряды и жили в палатках. После выпускных экзаменов зачитали список распределения. Мне выпала должность "начальник директрисы". Подполковник Р. объяснил, что это рубеж для стрельбы по подвижным мишеням.

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

Эта фантазия тоже оказалась мимо. Когда мы с Вовой и Ромой прибыли на полигон, оказалось, что мы будем инструкторами. Майор Р. еще сказал нам тогда, что "він не в захваті", но выбора ни у него, ни у нас не было.

Нам на выбор предложили три вида вооружения. "Шайтан-труба" ПЗРК, двуствольный мегапулемёт ЗУ-23, и ракетно-пушечный танк "Тунгуска". Я выбрал Тунгуску. Она была сложной и страшной, совсем как моя жизнь. Я влюбился в неё с первого взгляда.

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

Как вы наверное уже догадались, не суждено было сбыться и этой фантазии. Тунгуска жрала 300 литров топлива на 100 км, и из бокса выезжала не часто. Гораздо интереснее оказалась ЗУ-23. К ней было легко достать боеприпасы, и она регулярно и много стреляла. У "шайтан-трубы" был крутой компьютерный тренажер с 3D-очками. Правда, как оказалось впоследствии, согласно бумагам Тунгуска регулярно совершала многокилометровые походы.

Первые месяцы я был просто ассистентом майора Р. Таскал за ним книжки, и занимался с экипажами по пультам, которые успел выучить. Со временем, старшие офицеры решили, что натаскали нас достаточно, и отправились на годик в ООС (т.е. в АТО). Мы остались одни.

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

Я выходил из ситуации следующим образом. Честно предупреждал, что я теоретик. Просил рассказать о буднях ООС. Чаще всего, ребята начинали увлечённо рассказывать. В процессе рассказа всплывали теоретические пробелы. Тут подключался я. Меня слушали, даже с интересом.

- Что делает Тунгуску способной поражать воздушные цели? - Ракеты? - Нет. - Снаряды? - Тоже нет. Вот этот серый ящичек. Это примитивный советский мегакалькулятор "Аргон". Самолёт летит вон там (взмах рукой вперёд), но чтобы его сбить, нужно вести огонь вот сюда (взмах рукой налево). Вот этим и занимается "Аргон". А сейчас посмотрим, в каких режимах он работает...

Основное, чем мы занимались, это оформлением отчётов. Если верить бумагам, то мы, супергерои, готовили супербойцов. На самом деле мы просто готовили суперотчёты. Потому что... правильно, УПА.

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

Мне бы хотелось жить именно в такой стране. Где офицеры запаса после военной кафедры не прячутся от повесток. Перефразируя Роберта Р. Уилсона, наша служба в армии, даже если и не имеет прямого отношения к защите нашей страны, но она имеет отношение к тому, ради чего её стоит защищать.

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

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

Научился наслаждаться жизнью здесь и сейчас, а не ждать счастья от завтрашнего дня. Обнаружил, что улыбчивый аккуратный лейтенант, который светски проводит время в небольшом городке, пьёт кофе и посещает театры, поднимает престиж ЗСУ лучше, чем рекламный ролик минобороны. Обнаружил, что когда я в форме, ко мне стараются подойти поговорить различные люди. На удивление, вместо вопросов о военных перспективах, они начинают просто рассказывать о себе, о своих родных - просто плакаться в жилетку. Я не нашел объяснения этому феномену, но исправно слушал и кивал.

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

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

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

Это то, что меня всегда выводило из себя во время работы на Антонова. Как вы можете нам доверять самые большие самолёты в мире, если не доверяете 100 долларов на оплату отеля? Как вы можете доверять командирам частей защиту страны, если не доверяете им мелкую хозяйственную самостоятельность?

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

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

И конечно, алкоголь. Это беда всех збройных сил. К сожалению, к выпивке до сих пор относятся, как к нелёгкому, вредному, но необходимому мужскому занятию. Выходить на зарядку и заниматься спортом в ЗСУ считается девиантным поведением. Гораздо более соответствующим образу воина считается с заговорщицким видом собраться, пронести таинственно звенящий пакет, в предвкушении нарезать и разложить закусон по тарелкам. В изменённом состоянии сознания нужно рассказывать сокровенное о своей жизни. О грустных событиях повествовать с приличествующей случаю долей трагического надрыва, потом резко переключаться на безбашенные приключения. Плавно перейти к глупостям. Успехом считается, если в компании присутствуют военнослужащие женщины, и они тоже начитают делать глупости (если майор Р. дочитает до этого места, он снова набежит в комменты, чтобы рассказать, что я ничего в настоящей армии не понимаю).

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

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

И, для ровного счёта зрады, когда основная масса ЗСУ перешла на новую систему питания и наслаждается красной рыбой и ананасами, в нашей части по прежнему кормят помоями.

Армия, день 496. До дембеля осталось меньше двух месяцев. Вова завёл дембельский календарь, и считает оставшиеся дни. Я скачал дискографию Янки Дягилёвой, и слушаю, как она кричит сквозь годы и километры прямо мне в душу. Кажется, пришла весна.

March 5, 2019

Runway length parser

Написал скрипт на питоне для быстрого парсинга сайта skyvector в поисках длин ВПП.
Пусть побудет здесь, вдруг еще пригодится.

import urllib2
import re
# Тут список ИКАО, в каждой строчке один аэропорт
f = open("1.txt", "r")
# Сюда будем писать результат в форме ИКАО=999m
f2 = open("2.txt","w")
lines = f.readlines()
for x in lines:
 # Цикл по строкам файла
 icao = x.strip()
 url = "https://skyvector.com/airport/"+icao
 text = ""
 # Скачиваем страничку с вебсайта
 try:
  text = urllib2.urlopen(url).read()
 except:
  text = ""
 maxrwylen = 0
 for rwy in re.findall('<tr><th>Dimensions:</th>(.+?)</tr>', text):
  # Цикл по блокам данных о ВПП (все подстроки между "<tr><th>Dimensions:</th>" и "</tr>")
  print icao+" "+rwy
  rwylen = 0
  try:
   # Получаем длину ВПП в футах (подстрока между ">" и "x")
   rwylen = int(re.search(">(.+?)x",rwy).group(1).strip())
  except:
   rwylen = 0
  if rwylen>maxrwylen:
   maxrwylen = rwylen
 # Переводим футы в метры
 maxm = int(round(maxrwylen*0.3048))
 # Выводим на экран и пишем в файл
 print icao+" max:",maxm
 f2.write("{}={}m\n".format(icao, maxm))
f.close()
f2.close()

December 31, 2018

Книги, прочитанные в 2018

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

Пётр Бормор - Запасная книжка
Гениальные короткие сказки от создателя “Игр Демиургов”. Масса удовольствия, новых идей и мыслей, и бесконечная зависть силе фантазии автора.
Цитата (хотя и тяжело выбрать, все книга - сборник прекрасных цитат):
"Халфлинг хлопнул кулаком по ладони.
— Не надо никакого двуручника. Есть средство получше.
Он полез в Инвентарь, достал детский складной велосипед и сунул его в руки Темному Властелину.
— А-а-а!!! — завыл и забился в судорогах Темный Властелин.
И сразу начал добреть."

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

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

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

Михаил Ардов - Мелочи архи..., прото... и просто иерейской жизни
Сборник забавных и трагических историй из церковной жизни, современной и периода СССР. На мой взгляд, именно такая подача материала усваивается лучше всего, и даёт достаточно разностороннее представление о жизни того времени. Не удержусь от цитирования:
"У наших бюрократов, да и вообще у всех "советских людей" было о нас, клириках, вполне устойчивое мнение: это или жулик, или ненормальный. В этой связи мне вспоминается разговор между московским уполномоченным Плехановым и отцом А.Б., который до семинарии был генетиком, кандидатом биологических наук. Выдавая ему справку о регистрации, Плеханов глядел на него с изумлением и сказал:
— Как же так? Вы — кандидат наук, генетик, и вдруг становитесь служителем Церкви?
На это отец А. отвечал:
— А вы разве никогда не слышали, что основатель генетики был священником и даже настоятелем монастыря?"
"Батюшка выходит на амвон и начинает проповедь:
— Братия и сестры! Жизнь наша...
В это время он сует руку в карман подрясника, чтобы достать приготовленный текст своего поучения...
— Жизнь наша..., — машинально повторяет проповедник, но не находит своей шпаргалки.
— Жизнь наша..., — опять произносит он, судорожно проверяя все свои карманы, — Жизнь наша...
Но текста нет нигде, и проповедник, махнув рукой, произносит:
— В старых штанах осталась...
С этими словами он удаляется с амвона."
И еще, актуально для нынешних событий:
"И вспоминается мне горькая шутка одного моего друга, тоже священника:
— У нас есть такие батюшки, которые вполне были бы готовы отречься от Христа, если бы им при этом оставили Церковь..."

Артуро Перес-Реверте - Мыс Трафальгар
Знаменитая Трафальгарская битва с точки зрения побежденной стороны. Напоминает Цусиму Новикова-Прибоя, морская трагедия, море крови, гордость и достоинство несмотря на отсутствие шансов на победу. "Конец немного предсказуем", но благодаря автору, читать легко и интересно.

Лев Дуров - Байки на бис
Истории из актёрской жизни в СССР. Не столько мемуары, сколько сборник анекдотов - всё, как я люблю. Есть и про Раневскую, и про Никулина, ну а больше всего, конечно, про автора, и его нежную любовь к самому себе. Лёгкое, развлекательное чтиво. Вполне годится в качестве антидепрессанта.

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

Станислав Лем - Звёздные дневники Ийона Тихого
Это особенная для меня книга, с неё началось моё путешествие в мир фантастики. И папа и бабушка ценили “Звёздные дневники” и регулярно вспоминали цитаты, пересказывали целые фрагменты. Тогда у меня появилось ощущение, что это часть взрослого мира, к которому мне не терпелось поскорее приобщиться. Скорее всего, именно с "Антологии Современной Фантастики" и пошла моя привычка много читать. "Некоторое время тишину нарушало только чавканье осьмиолов"...

Гейнц Гудериан - Внимание, танки!
Танковый виртуоз Гудериан рассказывает о истории создания и применения танков в первой и второй мировых войнах. Забавное было узнать этимологию слова “танк”. Вообще, “танк” по-английски - резервуар для воды, цистерна. Дело в том, что в первой мировой войне возможности обороны в разы превышали возможности наступления. Хорошо продуманная система окопов и заграждений из колючей проволоки при поддержке артиллерии была практически непробиваемой защитой. На прорыв можно было бросать дивизию за дивизией, с ничтожными результатами. Собственно, первые танки создавались как “бронированные трактора для помощи пехоте в преодолении инженерных заграждений”. Для обеспечения секретности бронированных тракторов, английские военные называли их кодовым словом “танк” в значении “цистерна” (чтобы никто не догадался!), которое впоследствии прочно прилипло, и стало международным…

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

Терри Пратчетт - Последний континент
Нина Юрьевна много лет нахваливала юмор Терри Пратчетта, даже давала почитать его книги, и каждый раз у меня эти книги не шли. Брался за чтение и с начала, и с середины, и каждый раз останавливался в недоумении: - А где здесь смеются? Приходил к выводу, что у нас с Ниной Юрьевной просто разные вкусы, и откладывал книгу. Наконец, в этом году, во время очередной попытки, удалось синхронизировать свои альфа-ритмы с неторопливым темпом автора, и я начал получать удовольствие. Все шутки добрые, все повороты сюжета добрые, все персонажи смешные и добрые! Вначале, это бесит. Потом открываешь в книге источник приятных эмоций и позитива, приходит понимание, где смеяться, причем, шутки действительно классные! И, как всегда, задаешься вопросом, какой процент юмора был потерян при переводе...

Карл Саган - Мир, полный демонов
Популяризатор науки Карл Эдуард Саган с юмором рассказывает о таинственном мире паранормальных явлений. Если вас насторожила статья “следы инопланетян на Марсе” или “археологи сделали необъяснимую находку в пирамиде", эта книга поможет вам спать спокойно :) Суть работы жульналистов отлично раскрыта в эпизоде про "летающие блюдца". Лётчик, стараясь как можно более точно описать увиденное, сравнил траекторию движения небесных огней с прыжками маленького блюдца, плоско брошенного в озеро. Что за огни увидел пилот вскоре выяснилось, но благодаря “профессионализму” репортеров, все ждут визита инопланетян именно в “тарелочке”.
Абзац из книги: "Время от времени мне шлют письма люди, вступившие в «контакт» с пришельцами. Мне предлагают «задавать любые вопросы». И постепенно у меня сложился списочек вопросов. Как мы знаем, инопланетяне продвинуты — дальше некуда. Поэтому я прошу: «Дайте краткое доказательство теоремы Ферма или гипотезы Гольдбаха». Я объясняю, что это такое, ведь на другой планете не знают имен Ферма и Гольдбаха. Я пишу уравнения, комментирую их — ответа нет. Зато на вопрос «Должны ли мы быть добрее?» ответ гарантирован. Пришельцы с удовольствием порассуждают на любые расплывчатые темы, особенно если удастся приплести общепринятые моральные нормы. Но на любой конкретный вопрос, на попытку выяснить, знают ли они что-то, неведомое большинству людей, в ответ — молчание."

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

Джек Вэнс - Риальто Великолепный
Я восторгаюсь циклом "Умирающая земля" Джека Венса. Фантазия автора уносит в бесконечные дали, где так уютно и легко потеряться. Эта книга посвящена Риальто, удачливому волшебнику с аристократическими замашками.
Цитата: "...позвольте задать вам один вопрос: за что вас прозвали Риальто Великолепным?
— О, это чья-то давняя шутка, — отмахнулся Риальто. — Мне так и не удалось узнать, кто ее пустил."

Андрэ Нортон - Камень предтеч
Бывают фильмы, роскошные, как "Звёздные Войны", когда за главными героями на заднем плане видна жизнь целого мира, когда за задним планом временами наблюдать даже интереснее, чем за сюжетом. Бывают фильмы тоскливые, где главные герои скучно интригуют в закрытом помещении. Аналогично и с книгами. Если серия "Королева Солнца" относится к "роскошному" типу, то в серии "Джорн Мэрдок" луч света на главном герое, и вселенную просто не видно. Удивительно, как у одного автора могут быть такие разные произведения. "Камень предтеч" дочитал, но серию продолжать не буду.

Амбруаз Воллар, Поль Дюран-Рюэль - Воспоминания торговцев картинами
Мемуары времен расцвета импрессионизма. Сценки из быта известных художников, таких как Сезанн, Ренуар, Дега, Пикассо, Моне, Мане, Ван Гог и др. Для меня открытием стало первоначальное негативное отношение к новому направлению в живописи. Название "импрессионисты" возникло из попытки журналистов высмеять участников выставки. Увидев в каталоге пейзаж Моне "Море перед закатом", значившийся под названием "Впечатление" (Impression), пресса ухватилась за это слово, и оно прочно закрепилось за новыми художниками. Читать книгу лучше всего имея под руками интернет, чтобы иметь возможность смотреть на картины, о которых пишет автор. Книгу посоветовала Нина Юрьевна.

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

Уолтер Айзексон - Инноваторы
Как несколько гениев, хакеров и гиков совершили цифровую революцию. История ай-ти индустрии, от Ады Лавлейс до наших дней. Рассказано, как и зачем возникли стандарты RFC, показан Билл Гейтс в образе молодого хакера, кто такой Столлман и почему он требует, чтобы перед "Linux" обязательно писали "GNU", основное отличие Гугла от других поисковых систем того времени, преимущества и недостатки бизнес-подхода Стива Джобса, и т.д. и т.п.. Если ваша работа связана с ай-ти, прочитайте эту книгу обязательно. Еще Айзексон мимоходом упомянул Кена Кизи и его главную книгу, которую я тоже решил прочесть.

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

Сергей Сергеевич (Сайгон) - Грязь [*Khaki]
Думаю, что это самая важная для меня книга уходящего года. Сборник военных рассказов. Автор использует восхитительный в своей натуральности “степовий говір”, и при этом обладает узнаваемым стилем знаменитых писателей, у которых читатель становится лучшим другом и ему открывают все тайны. На фронте оружием Сайгона был автомат, на гражданке он взялся за перо и продолжает блестяще воевать за Украину. А самое для меня ценное, это первый известный писатель, с которым удалось кулуарно пообщаться.

Книги, прочитанные в 2017
Книги, прочитанные в 2016
Книги, прочитанные в 2015
Книги, прочитанные в 2014
Книги, прочитанные в 2013
Книги, прочитанные в 2012

November 23, 2018

Армия, день 376

Незаметно прошел год с момента нашего призыва, и можно подводить предварительные итоги. Вспоминаются отдельные фрагменты, ситуации и события.

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

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

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

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

Вообще, главный девиз армии - ЖДАТЬ. Если меня спросят, чем я занимался в армии, я точно знаю, что ответить. Ждал на утреннем построении, ждал в автопарке транспорт, ждал в транспорте прибытия на объект, ждал прибытия бригады, потом ждал её отбытия. Принимая дежурство, ждал, пока наступит полная соблазнов и опасностей ночь, потом с нетерпением ждал рассвета. Ждал завтрака, обеда и ужина. Ждал вечернего построения. Ждал и вот даже прямо сейчас жду дембеля.

Ждать приходится практически всем, главным образом из-за того, что в современных Збройних Силах описание деятельности на бумаге важнее реального состояния дел. Это второй девиз армии - "Папір понад усе!". Именно отсюда пошла альтернативная аббревиатура УПА - Українська Паперова Армія. И это приводит к тому, что многие умные и ловкие мужчины вынуждены сидеть сложа руки, чтобы не нарушать бумажную гармонию. Когда мы говорим о Новой армии по НАТОвскому образцу, прежде всего, мы имеем в виду организацию, при которой бумага отслеживает реальность, а не реальность пытаются подогнать под бумагу.

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

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

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

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

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

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

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

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

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

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

Девушки в армии наравне с парнями переносят все тяготы службы. Отношение к ним подчеркнуто джентельменское. 90% армейских девушек перемещаются по территории части слушая хит группы "Казка" в динамиках телефона, мечтательно всматриваясь за горизонт, и по каждой из них видно, что она "і мама молода, і закохана мала". Первые 7000 раз эту песню даже приятно слушать.

Часть готовится к проверке из Киева. Командир обходит помещения, заходит к нам в инструкторскую. Устраивает жесткий командирский разнос, хотя единственное замечание - "Опис майна в приміщенні" просто приклеен скотчем на стену, а не висит в рамочке согласно Статуту. Потому что УПА. Потом подходит к батарее отопления, уверенным движением достаёт из-за неё бутылку, о существовании которой мы даже не подозревали, и победным шагом удаляется вместе с трофеем.

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

Кстати, о диверсантах. Это одному мне в фейсбуке начали массово проситься в друзья незнакомые девушки со стоковыми фото на аватарках? На всякий случай пришлось пройтись по списку друзей и удалить всех, с кем не знаком лично.

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

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

В часть, наконец, пришел приказ "Про військове вітання". Теперь на утреннем построении командир говорит: "Слава Україні!", а мы рявкаем: "Героям Слава!". Это и чётче и веселее, чем бубнить "Бажаю здоров'я, товариш полковник". Тем более, что согласно новому приказу он теперь не "товариш", а "пан полковник". Мы, соответственно, теперь тоже "панове", что само по себе служит благодатной почвой для разнообразных шуток.

Армия, день 376. Мы продолжаем вносить посильную лепту в дело УПА. Две трети срочки позади. На горизонте впервые показались туманные очертания дембеля.



November 16, 2018

Blind leading blind



Мне, конечно, стыдно за похабщину, но это мой правдивый автопортрет :(

October 10, 2018

Армия, день 333

Когда рано утром идешь через лес на завтрак, собираешь на себя всю октябрьскую паутину.

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

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

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

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

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

Я ненавижу эту часть своего сознания. Уважаемый Моисей, если ты меня слышишь, ответь. Сколько лет нам еще блуждать по этой пустыне? И далеко ли еще до Украины?

Во время айсбрейкинга мне удалось пообщаться в неформальной обстановке с офицерами НАТО, звание которых предполагает осведомлённость гораздо выше среднего. И вот два из них независимо друг от друга высказали уверенность, что Крым снова станет украинским. - Не сегодня, конечно, улыбнулся один из них.

Нарушением Будапештского меморандума Россия вывела прецедент за рамки региональных разборок. И здесь компромисы недопустимы. Речь идёт о ядерной безопасности планетарного уровня.

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

Американские полковники мускулистые и чёткие. Умные. Собирательный образ командира підрозділу ЗСУ, на мой взгляд, это хитрый и энергичный жлоб. Потому что самообеспечение.

В последнее время американские вопли будят меня всё реже и реже. Или я крепче сплю по утрам, или это разлагающее влияние томной украинской глубинки.

Кстати, американцы свою палатку поставили прямо под роскошным дубом. Когда желуди метко падают на туго натянутый брезентовый барабан, с насеста падают даже курицы в соседнем селе.

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

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

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

Мне нравится, что "Опис майна в кімнаті" включен в "Опис майна в кімнаті". Это говорит о том, что военным тоже не чужда рекурсия.

Меня снова спрашивают, как я вообще умудрился попасть в армию. Я отвечаю стандартно - потому что дурак.

Ну не буду же я всем подряд объяснять настоящую причину. Что с детства я привык никого не бояться. Ни учителей, ни директоров, ни стоматологов. И от военкома прятаться не собираюсь.

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

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

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

Приближается осенний призыв офицеров запаса. Слушайте же. Я, лейтенант ЗСУ, в здравом уме и твёрдой памяти, сейчас даже относительно трезвый, говорю вам - не бойтесь! Дискомфортно будет только первое время, в учебке.

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

В столовой Академії Сухопутних Військ во Львове видел новый плакат - "Норми денних солдатських лайків". Успел подумать, какие в минобороны молодцы. Теперь каждый солдат будет ежедневно получать необходимую для организма порцию лайков. Потом присмотрелся внимательнее, не "лайків", "пайків". Но шутки в сторону. Я не имею в виду себя, свою норму лайков я уже получил.

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

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

Армия, день 333. Скоро год с момента нашего призыва. Даже не верится.

October 8, 2018

ppSearchMemo

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

Среди компонентов Win32 есть два компонента редактирования текста Edit Control (в Делфи - TMemo), и Rich Edit (в Делфи - TRichEdit). Первый работает с простыми текстовыми файлами без форматирования, второй - с файлами RTF. Если возникает задача выделить фоновым цветом часть текста в поле редактирования, возникает соблазн воспользоваться TRichEdit. Но это грязный метод, так как придётся бороться с паразитным форматированием, всеми этими отступами, параграфами и междустрочными расстояниями, которые будут попадать из буфера обмена, а потом невидимо жить в тексте, внезапно проявляя себя неожиданными артефактами.

Мы пойдём своим путём. Доработаем обычный TMemo, переопределив его метод OnPaint (да, да, наследование и полиморфизм). А что, если у компонента TMemo нет метода OnPaint? Напишем свой! Итак, нам понадобятся: обработчик сообщения WM_PAINT, GetDC для получения контекста рисования, EM_POSFROMCHAR для определения экранных координат нужного символа, EM_GETRECT и SelectClipRgn для ограничения области рисования (без этого на границе компонента будет появляться цветной мусор), SetBkColor для установки фонового цвета, TextOutA для вывода строки поверх системной.

Вуаля! Мы написали свой компонент, которого раньше не существовало в природе. Можете искать по форумам и книжкам, такого просто нет. Мы первые.



Результат можно скачать здесь:
https://github.com/podoroges/pplib/blob/master/ppSearchMemo.h
https://github.com/podoroges/pplib/blob/master/ppSearchMemo.cpp

Должен сказать, что из моих знакомых только Макс Шепелев умеет опускаться на уровень оконных сообщений Windows API. Именно он научил меня нырять в пучины MSDN, и возвращаться с магнитиками. Если кто-нибудь вдруг знает его ФБ, стукнитесь мне в личку.
Отдельное "Ку!" заказчику - Максу Богатову за нестандартные задачки :)

September 22, 2018

Creating Windows 7 install USB stick from Debian

1. Format USB stick to fat32 (for example, in GParted)

2. Mount it, note mount point (for example, /media/user/BF09-F91C)

3. Create empty folder "boot" (/media/user/BF09-F91C/boot)

4. Run command in terminal:
sudo grub-install --target=i386-pc --recheck --boot-directory={path to boot folder} {USB device}
(sudo grub-install --target=i386-pc --recheck --boot-directory=/media/user/BF09-F91C/boot /dev/sdb)

5. Run command in terminal:
sudo grub-mkconfig -o {path to boot folder}/grub/grub.cfg
(sudo grub-mkconfig -o /media/user/BF09-F91C/boot/grub/grub.cfg)

6. Edit grub.cfg, replace all contents with the following:

menuentry 'Windows 7 Installer' --class windows --class os {
set root=(hd0,1)
insmod part_msdos
insmod fat
insmod ntldr
ntldr /bootmgr
}

7. Extract Win7.iso into USB stick
(note, that "boot" folder exists in Win7 install as well, give your blessing to overwrite)

Source: https://gist.github.com/iamnotstanley/44424739081cb946589af999ea2bdcea

September 5, 2018

structure packing size has changed

"Borland C++ Builder 6.0" "W8059" "structure packing size has changed" - if you are reading this, there is a chance that you are experiencing the same problem, as I did.
These weeks were really bad, I had to rewrite my program from scratch. I suspected bugs within gdiplus.dll, and rewrote my program under OpenGL. But random access violation errors has returned...
After days of frustration, I found my problem. I hope that the same solution will also help you.

Some clues are there:

"...The headers pshpackX.h have a critical bug in them...."
http://edn.embarcadero.com/article/29009
"...Unfortunately, the pshpack header files that ship with BCB6 contain a flaw...."
https://www.experts-exchange.com/questions/20873011/BCB6-Warnings-about-structure-size-changed.html
And there:
"...The best solution is to change the default data alignment for the project...."
http://www.decompile.com/cpp/faq/W8059_Structure_Packing_Size.htm

In my case the problem was winsock2.h. There is #include pshpack4.h in the beginning of file, and #include poppack.h in the end. It seems that within winsock2 packing size or (data alignment) is changing on the go, and then failed to be restored back.

I have the same class CServer referenced from two different .cpp files. If I call sizeof(CServer) from .cpp where winsock2 is included, I get 72 bytes, if winsock2 is not included, I get 80 bytes... Of course, there is a reason of all these access violations errors.

According to Embarcadero website, all family of pshpackX.h including pshpack1, pshpack2, pshpack4 and pshpack8 is corrupted. I played a bit, but did not find any good solution to fix this issue gracefully. Instead, I changed Data Alignment to Double Word in my project options, and now the problem is gone, both tests show 72 bytes.

I am using Borland C++ Builder 6.0 Update #4.

September 4, 2018

.cpp memory leak

Век живи, век учись. Сегодня наткнулся на неожиданное явление в С++, которое может привести к утечкам памяти. Пишу для себя, дальше можно не читать.

Дано три файла, Файл1 - тело программы, Файл2 - описание класса "Класс1", Файл3 - в нём содержится Функция1. Класс1 состоит из конструктора, в котором выделяется память, и деструктора, в котором эта память освобождается. Например:

class Class1{
public:
char * str1;
Class1(){
str1 = new char[100];
}
~Class1(){
delete [] str1;
}
};

Основная программа в Файле1 содержит указатель на экземпляр Класса1, при этом, структуры класса не знает. Например, вот так:

public:
class Class1 * c;

(т.е. где-то есть некий класс, а здесь лежит на него ссылка)

Файл3 знает и о структуре основной программы, и о структуре Класса1. Функция1 создаёт экземпляр Класса1 (при этом вызывается конструктор класса, выделяющий память, в нашем примере 100 байт), и записывает ссылку в объект основной программы. Например, вот так:

#include "Файл1.h"
#include "Файл2.h"
void Функция1(){
Файл1->c = new Class1();
}

Основная программа в Файле1 сначала вызывает Функцию1 (которая создаёт объект), а в конце удаляет объект, вот так:

delete c;

Теперь, важный момент! Если в основной программе "Файл1" нет ссылки на описание класса (#include "Файл2.h"), то при удалении объекта (delete c) освобождаются 4 байта указателя, но деструктор Класса1 _не вызывается_, и происходит утечка памяти (эти наши 100 байт). Дебагер зарегистрирует Memory Leak, и это легко проверить, поставив брейкпоинт в теле деструктора - он никогда не будет вызван.



Логично, программа не знает о наличии деструктора у класса, но это совершенно не очевидно!

При этом, пример компилируется без ошибок, и намёков на возможную проблему никаких не даёт. Стоит лишь добавить в Файл1 строчку #include "Файл2.h", как проблема исчезает, деструктор будет вызван, и память очистится.

Понимаете? Здесь явная асимметрия. Компилятор не пропустит код, если программа не знает о структуре класса в процессе создания объекта. Но свободно пропускает код, в котором есть "слепое" удаление. Гендерное неравноправие констукторов и деструкторов, о котором я раньше и не подозревал.

Посвящаю этот пост трём часам времени, потерянным сегодня при ловле Memory Leak.

August 11, 2018

Win

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

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

Когда меня поставили дежурным по части, я отдал рацию помощнику, а сам засел за отладчик, чувствуя себя идиотом. В 10 вечера провёл построение и вечернюю проверку, и снова нырнул в код. В половину двенадцатого я расшифровал первые 130 байт, а к половине первого у меня была готова программа - расшифровщик всей базы. Отвечая на вопрос Ivan Stoikin - реверс инженирингом я не заработал пока ни копейки, но этот азарт охотника и наслаждение победителя в конце - бесценно :)

Открытие номер один: Sergey Kataev был прав. Лучший способ взломать программу - сидеть в отладчике. Читать дизассемблированный код, строить гипотезы о его работе, проверять эти гипотезы. Находить нестыковки. Строить гипотезы о нестыковках. Проверять. Снова находить. Снова строить. Снова ошибаться. Читать исходник. Учить заново ассемблер. Возненавидеть отладчик. Возненавидеть программу и её автора. Возненавидеть свою жизнь и весь мир. А потом приходит просветление. Мир снова обретает утраченное равновесие, жизнь снова обретает смысл. Катарсис. Нирвана.

Открытие номер два: у Делфи есть промежуточный уровень API. Раньше я считал, что при работе с языками программирования высокого уровня компилятор превращает текст программы сразу в машинный код. Оказывается, высокоуровневые функции компилятор переводит в набор функций среднего уровня, которые делают разные странные вещи. В частности, простые высокоуровневые операции со строками вида str1 := str2 + str3 в делфи превращаются в запутанную серию вызовов UniqueString, _SetLength, _LStrFromPChar, _LStrCat и _LStrClr (полный список в system.pas). Причем, этот набор будет отличаться от случая к случаю, в зависимости от уровня оптимизации.

Открытие номер три - для контроля над памятью каждая делфи строка содержит счетчик использования. Функция при работе со строкой прибавляет к счётчику единичку с помощью InterlockedIncrement, при завершении вычитает InterlockedDecrement, и пока счётчик не нулевой, сборщик мусора память не трогает. Вообще, структура делфи строк сложнее, чем я думал. Я ломал голову над фрагментом return *(_DWORD *)(result - 4), не понимая, зачем программе лезть в область памяти _перед_ началом строки, пока не вспомнил, что там паскаль хранит длину строки в байтах. Потом оказалось, что перед длиной есть еще 4 байта с идентификатором строки, и где-то еще должен быть счётчик интерлоков.

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

Псевдокод генератора ключа состоит всего из двух строчек. Первая: a3 = 134775813 * a3 + 1 - здесь явно видно "магическое" число 134775813 - основа шифра. Вторая строчка - запись полученного значения в буфер: *(_BYTE *)(result + i) = BYTE3(a3) - здесь result - адрес начала строки в памяти, i - смещение в байтах. Директиву BYTE3 я понимал как обрезку четырехбайтного целого а3 до размеров байта. В попытках найти, почему мой разультат отличается от дебаггера, я опустился на уровень машинного кода и после imul, inc и mov я обнаружил неожиданную ассемблерную комманду "побитовое смещение вправо": shr ebx, 18h. Я сделал такую ассемблерную вставку в свою программу, и почувствовал, как по спине поползли мурашки. Цифровой мусор на экране впервые сложился в осмысленную фразу: "Тактика: Бойові дії взводу в обороні". Потом еще я чистил код и писал модуль расшифровки, но главное дело было сделано.

Итак, чтобы расшифровать базу, выполняем следующую последовательность действий. Получим размер файла в байтах. Сформируем ключ длиной 100 байт, двигаясь от хвоста к началу, по формуле: buf[i-1] = 134775813 * buf[i] + 1, смещая результат на 24 бита вправо. В качестве начального значания берем размер файла в байтах (именно из-за этой хитрости первые несколько байт базы у разных файлов никогда не совпадают). Потом проходим по всему файлу, последовательно вычитая из каждого байта значение ключа.

Функция формирования ключа:
void subKey(char * buf, unsigned int a3){
for (int i = 100-1; i >= 0; --i){
a3 = 134775813 * a3 + 1;
buf[i] = a3 >> 24;
}
}

Функция дешифрования:
void subMix(int len, char * in, char * key, char * out){
int k = 0;
for(int i = 0; i < len; i++){ out[i] = in[i] - key[k]; if(++k>=100)k = 0;
}
}

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



Вы тоже хотите испытать бурную радость после чёрных дней тоски и отчаяния? Откройте для себя реверс инжениринг.

August 7, 2018

Fail

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

Вова попросил меня помочь с программой тестов Test Info v2.35, добыть вопросы и варианты ответов. Программа примитивная, первое впечатление, что написана на Делфи (так в последствии и оказалось). Файлы тестов закодированы, первые несколько байт у всех файлов разные, что характерно для кустарного шифрования, например, XOR по простому ключу. Есть шансы, что взглянув на функцию шифрования удастся вскрыть файлы.

Для обратной связи в программе указан емейл, гугл говорит, что автор - московский программист по имени Роман. Дальнейшее гугление говорил о том, что эта программа широко используется для тестирования на территории РФ. Совесть чиста, можно начинать работать.

IDA Pro говорит, что исполняемый файл запакован, что подтверждается его маленьким размером, 375 кб. Чтобы определить программу упаковщик, используем PEiD: https://www.aldeid.com/wiki/PEiD

Узнаём, что исполняемый файл запакован ASPack 2.12. Гуглим, распаковать его можно с помощью AspackDie. Качаем его, например, здесь: https://www.exetools.com/unpackers.htm. После распаковки файл уже занимает больше мегабайта, и отныне становится по зубам Иде (у Иды есть встроенный детектор-распаковщик, но мне не понравилось, как он работает. Ощущение, что распаковывая файл на лету, он не доводит дело до конца, не все функции доступны).

Снова смотрим на файл с помощью PEiD, и убеждаемся, что он написан на Borland Delphi 4.0 - 5.0. Открываем его в Иде, применяя соответствующие сигнатуры (File->LoadFile->FLIRT Signature File, затем bds, когда спросит - Change Compiler, Unload Library). Обратим внимание, что наиболее удачной сигнатурой оказалась bds, а не b32vcl и d5vcl, что намекает на то, что версия Делфи здесь выше, чем считает PEiD.

Здесь начинаются первые проблемы - мне не удалось найти комбинацию флирт-файлов, которая бы позволила полноценно проанализировать код. Большинство функций имеют нечитаемые названия, вида sub_4CA1A4. Гугл тоже не помог.

Дополнительную информацию удалось получить с помощью DeDe (Delphi Decompiler): http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml. Она разобрала код по формам и компонентам, и помогла найти адрес нужного метода, где и выполняется расшифровка базы с вопросами: 004С993С. Записываем адрес, возвращаемся в Иду.

Бинго! Это место показано на скриншоте. Видна функция BlockRead читающая блоки по 130 байт из файла, подпрограмма sub_4A73A8 генерирующая на лету простой 100-байтовый ключ (a3 = 0x8088405 * a3 + 1; бгг), функция sub_48D304 из них восстанавливает исходный текст.



Увы, дальше продвинутся не удалось. Главным образом, из-за наличий в коде монструозных структур следующего вида:
(*(void (__fastcall **)(int *, int))(*v38 + 52))(v38, v45)
Это не глюк дизассемблера, а вызовы методов классов, с передачей свойств объектов. Ида не умеет автоматически восстанавливать их структуру.

Статья "Classes Restoration - Useful Tips for Software Reverse Engineers" (https://www.apriorit.com/dev-blog/78-classes-restoration) показывает, как структуру можно восстановить вручную, но даже для простейших классов, на мой взгляд, это очень трудоёмкая работа. Тем более, что к этому моменту я уже так глубоко вник в программу, что увидел предусмотренный автором способ вытащить нужную Вове информацию, не прибегая к взлому (и за это вождь племени назвал меня Зорким Глазом :)

Итак, новый опыт и важный вывод для меня - программы, написанные с помощью Borland IDE взламывать труднее, чем кажется на первый взгляд (и в разы труднее, чем .Net Managed code). Следует быть готовым, что придется восстанавливать структуру классов вручную. Пока я не знаю, как это обойти, но уверен, что что-нибудь придумаю :)

Кто дочитал до этой строчки - латентный хакер :)