Advertisement

Podoroges O'Blakami [entries|archive|friends|userinfo]
                                          

Предел милосердия [November 21st ]
Для каждого человека должен существовать предел.
При достижении которого близкие люди вокруг перестают умирать.
Или умирает он сам.
Link

Дом на колесах #11 [September 7th ]
Рабочее место [info]podoroges-a.

Link40 comments|Leave a comment

Перерождение [September 4th ]
Как профессору королевской академии наук, Стиву полагался личный автомобиль с водителем. Водитель уже привык к загадочным ежемесячным поездкам хозяина, и ничему не удивлялся.

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

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

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

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

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

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

- На вашем счету один миллион восемнадцать тысяч кредитов - подытожила машина - Желаете что-либо приобрести?
Стив желал. Машина вывела на экран список. Стив принялся неспеша его просматривать, хотя давно знал его наизусть.

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

- Вы выбрали Перерождение. Подтвердите ваш выбор. Спасибо. На вашем счету осталось восемнадцать тысяч кредитов. Поздравляем с приобретением.

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

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

Помещение затряслось. Сквозь крышу капсулы Стив увидел, как с потолка посыпался песок. Верхняя плита сдвинулась, и помещение залил яркий свет прожекторов. Сверху появился Малыш. Выплюнул сигару, спрыгнул вниз, отключил питание капсулы. Вода перестала циркулировать и Стив перестал ощущать покалывание. Спускались люди. Малыш извлёк из капсулы батареи и положил их в знакомый Стиву ребристый ящичек. Стив почему-то вспомнил Потомка, его умные и грустные глаза. Рабочие привычными движениями вскрыли крышку капсулы, кто-то принёс коробку со шприцами. Длинные тонкие иглы вонзились в Стива, и всё исчезло.
Link20 comments|Leave a comment

Эволюция [September 3rd ]
Кто вам сказал, что натуральные продукты есть вредно. Это типичное заблуждение. Практика показывает, что натуральные продукты могут быть полезными. Главное, всё должно быть в меру. Вспомните, что было время, когда вместо исскуственных витаминов древние люди употребляли в пищу свежие ягоды и фрукты без особого вреда для своего здоровья.
К счастью, эволюция не стоит на месте.

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

И помните, поменьше этих новомодных элленитовых добавок. Не верьте рекламе. Безвредность элленита для нашего организма учеными пока еще не доказана.
Link5 comments|Leave a comment

Культ крылатых [August 31st ]
Среди культов, практикующих человеческие жертвоприношения, особым цинизмом выделяется культ "крылатых", со своими самобытными и загадочными ритуалами. Несчастного одевают в ритуальный балахон с перепонками, символизирующий крылатость божества, которому приносится жертва. Жрец, одетый в торжественный костюм с ритуальной аттрибутикой, проверяет, правильно ли одеты "крылья", трижды обходит вокруг жертвы, бормоча специальные заклинания. Затем подходит к краю и смотрит на волшебную ленту, надетую на магический жезл. Так он определяет волю божества. Выбрав подходящий момент для жертвоприношения, жрец дает знак, и жертва с разбега бросается с обрыва вниз. В зависимости от силы ветра и везения, жертва может остаться целой и невредимой. Тогда несчастного опять поднимают на вершину и ритуал повторяют. Если жертва падает и получает травмы различной степени тяжести, жрец с протяжными воплями сбегает вниз к жертве, это означает, что ритуал успешно завершен, и божество довольно жертвоприношением. Жертвы, которым посчастливилось уцелеть достаточно долгое время, считаются отмеченными особенным расположением божества, и сами становатся жрецами. Время от времени жрецы сами бросаются в пропасть, чтобы подтвердить свой статус избранника. Этот культ особенно интересен в сравнении с прочими подобными культами этой планеты, см. Инки и Майя.

(с) Путеводитель по Галактике: планета Земля.
Link13 comments|Leave a comment

Новый рекорд "Мрии" [August 21st ]
11 августа 2009 года при выполнении рейса Ханн-Ереван самолёт Ан-225 "Мрия" поднял в воздух груз массой 187.6 тонн.

Link17 comments|Leave a comment

Еще не поздно [August 18th ]
Смерть внезапно приходит, а разве бывает иначе. Руки врач виновато разводит, медсестра заплачет, отключит водитель сирену, закурит, потреплет за плечи: Так бывает каждую смену, скажет он, человек не вечен. Всем придётся пройти сквозь это, людям там не бывает больно. Без заката не будет рассвета. Лишь тогда я внезапно понял, что он мне всех людей был ближе. Вздрогнул я от испуга: я его никогда не увижу, не скажу что он был лучшим другом, не пожму его крепкую руку, не услышу его рассказов. Смерть приходит без стука. И всё. Вдруг я понял сразу, сколько я не успел сказать всего своим сёстрам и братьям, позвонить, отыскать, навестить, заключить в объятья, посидеть, поболтать. Время есть, но спешить мне надо. Я решил, что мне нужно начать с моего пожилого дяди. Со всех ног побежал к нему. Опоздал. Он уже не дышит.

Всё сойдётся одно к одному. Жаль, никто меня не услышит.

(c) podoroges 18Aug09
Link15 comments|Leave a comment

Грустные уроки арабского [August 16th ]
УкрАния = Украина
шухрА = спасибо
сундУк = гроб


За неделю в Арабских Эмиратах набегался по госпиталям, моргам, полициям, прокуратурам, министерствам, консульствам, судам, военным базам, накатался в дешевых такси. Насмотрелся всякого. Хлебнул ориентальной жизни вдоволь.

Не скоро меня теперь потянет в рейс.

халАс = всё, хватит, довольно
Link34 comments|Leave a comment

Чёрная полоса [August 12th ]
В полночь прилетел Ан-74 с запчастями, мы с техниками еще с вечера сидели на самолёте, ждали. Под утро потребовалась гонка двигателей, я ездил в гостиницу за командиром, инженером и бортрадистом. Выезжая, командир звонил в номер Мишечкину, но тот не взял трубку. А когда взошло солнце, мне позвонил командир Ан-74, и сказал, что Мишечкина нашли в постели мёртвым.

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

Он был отличным пилотом, всегда весёлым и бодрым, с ним было интересно и спокойно. Спасибо, что нам довелось полетать вместе.
Link

День за днём [August 9th ]
Нас опять не увидишь вдвоём
И друзья вспоминают с трудом
Сотни наших совместных историй
Там, где раньше под сердцем был дом
Там теперь лишь фантомные боли
Просыпаемся с мыслью об этом
За пятнадцать секунд до рассвета
В чёрном космосе шар голубой
Это бедная наша планета
Целый мир между мной и тобой
И по ней мы рассыпаны где-то
В каждом ниточка к ангелу света
Он родной, он у каждого свой
А пока ни звонка ни привета
Жди, мы скоро вернёмся домой

(c) podoroges 08Aug09
Link7 comments|Leave a comment

Дом на колесах #10 [August 8th ]
I. На земле не осталось людей, совершающих крупные преступления. Если надо совершить масштабное злодеяние, строится цепочка людей с ограниченной ответственностью, и каждый идёт на мелкое нарушение в рамках своей власти. А в результате на планете царит кошмар, в котором мы живём.

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

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

II. Самолёт рассыпается. Лопаются трубопроводы, сгорают приводы, высыпаются подшипники. Самолёт дюралевый, нервы стальные. Правило игроков в покер - ноль эмоций до самого проигрыша.

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

IV. Мне рассказали про Ил-76, на котором не осталось ни одного рабочего прибора. Работали лишь двигатели и управление. Лётчики купили дешёвую GPS и летали по ней несколько месяцев. Втроём - зачем больше, если приборы и так в отказе? Надеюсь, подобный опыт нам не пригодится.

V. Во время пылевой бури небо тёмное, солнце похоже на луну необычного серебрянного цвета. Белое солнце пустыни.

VI. В дюралюминевой сковородке плавятся мозги. Холодая вода не помогает совсем. Чай помогает лишь частично. Приходится представлять себе, что ты вышел в предбанник в деревенской бане - да, тут очень жарко, но в самой бане еще жарче. Работать можно, но тяжело.

VII. Я люблю этот самолёт и тоже чокаюсь со шпангоутами.
Link26 comments|Leave a comment

Не читай [August 3rd ]
Не целуйся в троллейбусах, правил не нарушай
Не груби контроллёрам, зайцев не защищай
Красть невест не мешай, не напивайся

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

Одноклассницу на руки не поднимай
Летней ночью каштаны не собирай
Если вдруг пригласили на чай, не соглашайся

Людям не доверяй, под дождём не гуляй
Самую-самую не повстречай
Не ищи, не дрожи, не страдай. Не встречайся.

У костра не сиди, песням не подпевай
Из палатки на склоне звёзд не считай
Над Днестром не летай, высоты не пугайся

На Климухе консолью кусты не цепляй
С пяти метров ручку не выдавай
В роторах высоту не теряй, не увлекайся

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

И не спи на земле, не тони в воде, не гори в огне
Никогда не пиши стихов о самом себе

(c) podoroges 03Aug09
Link36 comments|Leave a comment

Истории веселых летчиков #16 [July 31st ]
Авиахимработы на Ан-2. Лето. Жара. (Ага, [info]Люда, привет! :)

Второй месяц в сёлах под Белой Церковью, полёты каждый день, высоты до 300 метров. Скучно.

Вечером единственное развлечение - кино. В каком клубе самый интересный фильм? Лётчики облетают окрестные сёла, проходят на предельно малой высоте, мимо проносятся афиши:
- Ты читаешь начало, я конец.
Сядут на поле поближе, и идут фильм смотреть.

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

Командир: - Даю вводную, на полосу упала бомба.
Второй пилот даёт газ, уходит на второй круг.
- Правильное решение, - хвалит командир.

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

Хрясь! "Кукурузник" с размаху прикладывает об бетонку. Сбегаются встревоженные техники.
Лётчики выходят, закуривают.

- Да, - смеётся командир, - к такому повороту событий я готов не был.

Рассказал КВС Мишечкин. Кстати, у него сегодня день рождения!

А еще, мы сидим в Тулузе, тут завод Airbus. Видели прекраснейшую кракозябру )
Link21 comments|Leave a comment

Отпусти меня [July 26th ]
В пару дней назад в Эмиратах мне потребовалось решить простенькое квадратное уравнение, и я к своему ужасу обнаружил, что очень смутно помню, как его решать. Формулу дискриминанта не удавалось вспомнить никак.

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

Я взял чистый листок бумаги и записал квадратное уравнение:
ax2+bx+c=0

Как берется производная, я помню хорошо. Значит, я легко могу найти ось параболы, это то место, где производная равна нулю:
y=ax2+bx+c
y'=2ax+b
y'=0; x=-b/2a

Тут я для себя сделал замечательное открытие. В школе и институте во мне жило ошибочное чувство, что второй коэффициент влияет на кривизну функции. Рассуждал я так: если y=x2 - это чистая парабола, y=x - это диагональная прямая, то при их суммировании y=x2+x левая половина параболы опускается, а правая - поднимается.

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

То есть, парабола общего вида y=ax2+bx+c является просто параболой y=ax2, смещенной от центра координат на некоторое значение, определяемое bx+c. В школе об этом говорили, но ясно осознать, почему это происходит, я смог только сейчас.

Если по иксу вершина параболы смещена на -b/2a, то подставляя это значение в формулу параболы, мы получим смещение по игрек:
y=ab2/4a+b(-b/2a)+c;
y=-b2/4a+c

Это значит, что наша функция y=ax2+bx+c - это просто y=ax2, смещенная по x на -b/2a, и по y на -b2/4a+c, причем -b/2a является осью симметрии.

От точки вершины рога параболы будут расти вверх (или вниз), чтобы пересечься (или не пересечься) с осью Ox. Чтобы найти корни уравнения, нужно знать расстояние между рогами в точке пересечения с осью абсцисс. Это легко, задача сводится к тому, чтобы узнать, на сколько надо измениться иксу, чтобы функция y=ax2 изменилась на -b2/4a+c.

Приравняем, меняя знак правой части:
ax2=b2/4a-c;
отсюда
x=+-sqrt(b2-4ac)/2a

От значения под корнем зависит количество решений, это и есть дискриминант!

Теперь это расстояние отмеряем справа и слева от оси симметрии:
x=(-b+-sqrt(b2-4ac))/2a

А это и есть решение!

Когда я поставил точку и сверился с википедией, меня отпустило. Кажется, вторая кафедра высшей математики во главе с Миронцом, Владимировым и Цешковским больше не будет сниться в тягучих ночных кошмарах.
Link24 comments|Leave a comment

Дом на колесах #9 [July 19th ]
Во многих странах можно легко узнать бывшие колонии. Чад, Габон, Камерун, Тунис, Мавритания - типичные французские колонии. Это значит правостороннее движение, бардак, деликатесы, "Бонжур", все говорят по-французски, никто не знает английский.

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

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

Раньше в Лахоре около самолёта стоял охранник с автоматом, а сейчас нет. Мы решили, что обстановка стала более спокойной. Спросили у хэндлинга, почему нет охранника.
- Застрелили, - ответил он спокойно.

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

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

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

В Индии, как только спустили трап, в самолёт залезли пятеро в белых чалмах и синими погонами. Это индийские пограничники - решил я. Потом залезли еще пятеро, в зеленых чалмах, с зелеными погонами. Это таможня - догадался я. Потом залезли еще семеро, в белых чалмах, с красными погонами. Может, санитарно-карантинная служба, задумался я. А они всё лезли и лезли, по три, по пять человек, в чалмах, с погонами и без, старые и молодые, мужчины и женщины. Вскоре на нижней палубе циркулировало более ста индусов, громко орущих друг на друга и по мобилкам. Смешно было наблюдать, как поднявшись на самолёт, индусы смотрели по сторонам, доставали телефон и кому-то звонили. Жаль я не знаю хинди - вот о чем можно говорить по мобилке в такой ситуации? "Шеф, всё пропало, самолёт пустой"? Или "Дорогая, я просто офигел!". Были даже степенные матроны, в ярких сари и с дамскими сумочками, они бродили по самолёту и трогали швартовочные цепи. Наконец я опомнился и выгнал всех вон.

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

На руле висит мешок муки, к багажнику приварен примус. Это не велосипед, это ресторан на колёсах.

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

Ах, да, и индусы. О, индусы.

Podoroges: Когда начинается ужин?
Портье-индус: В 17:00, сэр.
Podoroges: А когда заканчивается?
Портье-индус: Ужин у нас не заканчивается сэр, 24 часа в сутки.
У меня в голове немедленно возник ужин, который возникает ежедневно в 17:00 и никогда больше не заканчивается, рот наполнился горькой слюной и портье повис над стойкой вверх ногами, вращаясь в бесконечной рекурсии. Про индусских программистов мне стало понятно решительно всё.

Да, понятно, он имел ввиду, что ресторан работает до последнего посетителя. Но оцените эту логику!
Link10 comments|Leave a comment

Indy Http Upload [July 17th ]
Задача: написать файл-сервер для закачки файлов по http протоколу.
Казалось бы, что может быть проще для быдлокодера сваять за пять минут такое под СиБилдером. Но практика выявила некоторые подводные камни, описанием расположения которых я хотел бы поделиться.

Гугль, а он не может ошибаться, говорит про единственный способ сделать это затратив минимум усилий: Internet Direct (www.indyproject.org). Качаем, компилируем. Есть две версии Indy: стабильная девятая, и последняя десятая. На форумах советуют, как лекарство от большинства проблем, пользоваться десятой. Так как проблем действительно много, с неё и начинаем.

Подводный камень №1: Десятая версия не компилится под C++ Builder 5.0. Пробуйте. У меня не вышло. На форумах пишут, что не только у меня, и решения ни у кого нет.

Так как десятая версия под пятым билдером действительно не хочет работать, можем для очистки совести скачать C++ Builder 6.0. В нём уже стоит старая версия Indy, ставим поверх новую. И натыкаемся на:

Подводный камень №2: После установки новой версии Indy поверх старой компилятор вылетает с массой ошибок, ведущих в недра Indy. Это обычно означает, что где-то в прописанных путях остались старые заголовки (если ошибки вывалятся на этапе компиляции), либо библиотеки (если на этапе компоновки). Проходимся поиском по папке Borland и нещадно давим все старые *.hpp и *.lib имеющие отношение к Indy.

Собственно, как показала практика, для нашей задачи вполне достаточно Indy 9.0, и я с радостью вернулся под пятый билдер.

Единственная особенность для девятой версии Indy заключается в нигде не документированном подводном камне.

Подводный камень №3: Стабильная девятая версия не создаёт поток для входящего файла. Это придется сделать вручную в событии OnCreatePostStream:

VPostStream = new TStringStream("");

Кстати, с другими типами потоков (TFileStream, TMemoryStream) Indy почему-то отказывается работать.

Итак, поток создан, заголовки прочитаны. Сохранив поток на диск, мы увидим, что он закодирован как multipart/form-data (см. RFC-1867 http://www.faqs.org/ftp/rfc/rfc1867.txt). Если в двух словах, то к загружаемому файлу в начале и в конце добавлены несколько строк, в которых описывается его формат, имя и границы (на случай передачи нескольких файлов). Если мы передаём картинку, архив или исполняемый файл, пара лишних байтов могут сделать его нечитаемым, поэтому мы начинаем искать способ, как его можно грамотно раскодировать.

И вот теперь начинают попадаться самые странные подводные камни: во всей палитре Indy нет ни одного компонента, который бы это делал! Внимательно читаем гугль, самые грамотные советы по Indy даёт один из разработчиков - Remy Lebeau, который подписывается как Gambit (запросите гугль по ключевым словам Remy Lebeau Gambit и вы найдете множество советов по использованию Indy с примерами). Он предлагает делать декодировку с помощью компонента TIdMessageDecoder, причем практически вручную. MIMEBoundary надо самому прочитать как строку, скормить декодеру, и надеясь, что поток непрерывный, в цикле пройтись по всем частям MIME, вручную считывая заголовки и обрабатывая ошибки! Значит, весь веб-сервер мы создали одним кликом, бросив компонент на форму, а чтобы прочитать переданный файл - должны писать сотни строк кода, самим разбираясь в структуре MIME. Кто-то спросил Реми, почему бы не создать компонент, который бы это делал сам, так так функция очень востребованная, на что Реми ответил, что да, в будущем надо подумать, и что неплохо бы это как-то упростить.

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

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

Кончилось всё тем, что я перечитал RFC-1867 столько раз, что понял, как можно выкусить файл вручную. Если вы захотите пойти по тернистому пути быдлокодера, вот вам под катом непричесаный но вполне рабочий исходник. Хотя чего это я? Даже если вы тру-программер и будете писать веб сервер с нуля вручную, вам тем более пригодится ручная MIME-выкусывалка )
Link4 comments|Leave a comment

Истории веселых летчиков #15: Испорченный телефон [July 16th ]
В 2001 году, когда Ан-225 после долгой стоянки восстанавливали из металлолома, была выполнена серия испытательных полётов. В частности, для получение сертификата гражданского типа, на Мрию установили и испытали современное навигационное оборудование.

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

Через минуту на связь вышла станция наблюдения ПВО:
- "Цапля" вызывает АДБ два-ноль-шесть-ноль, у вас от хвоста отделился бесформенный белый предмет, повторяю, у вас от хвоста отделился бесформенный белый предмет.
- "Цапля", говорил "Мрия", это был инверсионный след, повторяю, инверсионный след.
- "Мрия", вас понял.

Еще через несколько минут на связь вышла Одесса:
- АДБ два-ноль-шесть-ноль, получена информация от военных, что у вас что-то выпало из заднего грузолюка.
- Но у "Мрии" нет заднего грузолюка.
- Значит, из переднего.

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

По рассказам КВС Моисеева
Link21 comments|Leave a comment

Икар [July 12th ]
Снова с каждой секундой минуты быстрей несутся
Только те не спасутся, кто знают к спасению путь
Только те не проснутся, кому не дано уснуть
Надевает крылья Икар, солнца хочет рукой коснуться

Да, он с каждой секундой взлетает всё выше и выше
Тот, кто рифмами дышит, не хочет открыть секрет
Ты не бойся, скажи это вслух, ведь тебя здесь нет,
Расскажи одному, и всё стадо тебя услышит

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

(c) podoroges 12Jul09
Link13 comments|Leave a comment

Соната "Руслан" [July 11th ]


http://www.youtube.com/watch?v=BkZPSDBOthY

Это короткий ролик про то, как мы не попали в гости к семье австралийских дельтапланеристов: [info]new_mikha и [info]zina_karma. Пролетели мимо Сиднея, как фанера над Парижем - Эмберли, Брисбейн, Перт.

В ролях экипаж Ан-124, оператор - [info]podoroges. Музыкальный фон - композиция группы Соната Арктика - "Клетка". Если ютуб вырежет звуковую дорожку - скажите мне, я перезалью на другой хостинг.
Link22 comments|Leave a comment

Never [July 8th ]
В эмирате Аль-Эйн много магазинов с дешёвой электроникой и всякими шмотками. Огромные многоэтажные супермаркеты: иллюминация, экскалаторы, дорогие автомобили и часы, дешёвые мобилки, фотоаппараты, кондиционеры, микроволновки, плейеры и одежда, толпы людей, разглядывающих, обсуждающих, меряющих, покупающих все эти товары.

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

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

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

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

Они были как статуи на носу корабля, который проплыл мимо.

- Ага, вот ты где, пошли еще цифровики посмотрим - потянул меня за рукав Денис, и лишь тогда я понял, что все еще стою с открытым ртом и смотрю им вслед.

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

В мире множество удивительных вещей, о которых мы ничего никогда не узнаем.
Link31 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement