bash.im ithappens.me zadolba.li

Давным-давно

7990

Ты помнишь, как всё начиналось?

Недавно я наткнулся на свой инженерный калькулятор, с которым связаны мои самые яркие (как ни грустно это звучит) воспоминания о школе. Когда я учился в шестом, кажется, классе, родители решили подарить мне на день рождения его — инженерный калькулятор Casio CFX-9950GB аж с трёхцветным и невероятно большим на те времена (127×63 пикселя) дисплеем. Я особо не понимал, зачем он вообще нужен, но было достаточно забавно строить какие-то хитрые графики и вообще щёлкать по кнопкам. Ах да, забыл сказать, что к нему прилагалась толстенная инструкция, которую по понятным причинам я читать не стал и убрал куда-то в стол. Да и зачем читать, если и так всё понятно было в меню:

RUN — калькулятор;
GRAPH — рисовать графики;
DYNA — рисовать динамические графики;
PRGM — типа, программы;
MEM — показывает память;
CONT — меняет контрастность экрана;
STAT, MAT, LIST, TABLE, RECUR, CONICS, EQUA, TVM, LINK — неинтересно.

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

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

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

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

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

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

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

Хэппи-энд есть, только немного запоздалый. Я уже почти год на работе, которую безумно люблю: я разработчик на Java/Groovy.

7918

2 Screens 1 Line

1 декабря 2011, 10:00

Год 92-й. ПТУ, компьютерный класс на основе «Корветов», все машины стоят в ряд вдоль стены. Дело уже к весне идет, детишки научились кое-что самостоятельно писать.

Один продвинутый мальчик написал программу, закрашивающую экран, рисуя вертикальные линии в цикле. «Корвет» — машинка неторопливая даже по стандартам 90-х, плюс Бейсик… Полная закраска экрана занимала около двадцати секунд.

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

— Сейчас оно второй экран закрашивать будет.

Стоящие рядом учитель и лаборант переглядываются и насмешливо хмыкают.

* * *

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

7905

Бабайка не пройдёт

30 ноября 2011, 10:00

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

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

7873

Этот порт работает на вывод

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

— У меня сзади дырка чёрная, что в неё можно засунуть?

Ну и что на такое ответить?

7845

Пи-пижды пи-пи-пи

В начале девяностых в школе, где я учился, все БК-0010 отдали ученикам после того, как их заменили на IBM PC. Одна машина досталась мне.

Наступило лето, собрались на дачу. Я стал уговаривать родителей взять компьютер с собой. Они очень удивились, ведь там нет телевизора. Но я уговорил: «Вот увидите, я и там найду ему применение».

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

7790

Столик заказан

Вспомнилось, как Гриша, работник кафедры гидродинамики, на 8086-м в DOS прятал свои файлы. Он запускал нортоновский Diskedit и ставил файлам метку «удалён». Я, как это увидел, прослезился и задал вполне естественный вопрос: а ну как кто поверх удаленных файлов что запишет? Ответ меня свалил с ног.

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

Да, FAT16 — это было всё-таки круто.

7710

Майор Реализм

7 ноября 2011, 10:00

В некой воинской части регулярно готовились отчёты командованию. В Экселе составлялись таблицы «поступило — израсходовано» и т. п. Естественно, внизу итоги, суммы, проценты — всё по формулам. После набивания всех цифр и распечатки результата специальный майор сидел над листами бумаги с калькулятором и пересчитывал за Экселем цифры. Выглядело это глупо и смешно.

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

7708

Как завещали предки

В самом начале нового тысячелетия занесла меня судьба на самый край Европы — в Португалию. Немного помыкавшись, нашёл я себе работу в небольшой семейной типографии. Печатала она в основном самокопирующиеся бланки: фактуры, путевые листы и т. д. Работал я оператором печатного станка, иногда заменял нашего дизайнера, благо CorelDraw знал хорошо, а также решал всякие мелкие компьютерные проблемы типа переустановки бессмертного творения американской корпорации Millennium-редакции, умирающего с завидным постоянством в среднем через три месяца не особо активной работы.

Был у нас комп со специальным принтером, который печатал на фотоплёнке. Плёнка проявлялась в хитром устройстве и потом использовалась для создания матриц для печатного станка. Комп уже по тем временам был достаточно древний; стояла на нём Windows NT 4.0, CorelDraw (кажется, шестой версии) и специальная программа для принтера, которая выполняла сразу три функции: во-первых, устанавливала в систему драйвер для того самого спецпринтера; во-вторых, устанавливала виртуальный принтер, на который и выводился файл из Корела; в-третьих, обладала собственным интерфейсом (кажется, ещё под DOS), в котором напечатанный файл можно было подправить. Перенести это всё на более современный комп и новую систему не представлялось возможным: работало только на NT. Как оказалось впоследствии, были ещё некоторые подводные камни.

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

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

Я получил целый пакет инсталяционных дисков: Windows NT 4.0, CorelDraw 6, эту самую программу и зачем-то ещё Windows NT 3.51, о существовании которой я до этого даже не подозревал. Ну, думаю, что может быть проще: переустановить систему, Корел, эту самую программу, и всё заработает. Но не тут-то было! Система и Корел прекрасно установились, а вот программа заартачилась: встала только частично, виртуальный принтер настраивать отказывалась, матерясь на какую-то несовместимость с ОС.

Уже отчаявшись, я обратил свой взор на отложенную в сторону NT 3.51. Думаю, чем чёрт не шутит. Устанавливаю её, пробую ставить программу. Ура, программа встаёт прекрасно, но… не ставится Корел. Получается замкнутый круг: в одной системе нет принтера, без которого никак, а в другой не ставится Корел, без которого тоже ни в какую.

Три часа ночи, квадратная голова. В полном отчаянии решаюсь на последнюю попытку: устанавливаю заново NT 4.0, при этом забыв снести NT 3.51. Загрузчик последней, естественно, умирает: винда того времени ещё не умела делить с подругой один диск.

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

7696

Четвёрка на коногонке

1995 год. Самая распространённая машина — 486DX4-100. Студенты приносят системник на ремонт: «Что-то хлопнуло, работать перестало. Ничего не делали, чесслово».

В процессе диагностики выяснил: на проце питание немногим выше нуля, хотя должно быть 3,3 В. Заодно стало ясно, что у студентов «хлопнуло»: линейный стабилизатор питания проца. Позже, конечно, заменил, но сначала провёл эксперимент. Выпаял дохлый стабилизатор, на шину 12 В с блока питания прицепил релюшку, через её контакты подключил к процу батарею шахтёрской коногонки (3*КНГК-10Д). Десяти ампер-часов хватало на день работы. Напруга гуляла от 3 до 3,6 вольт, но проц совсем не обижался и работал без сбоев.