Истории с тегом: программизмы

Всего историй: 896

10507

С полуслова, или VB-фонетика

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

До появления первого ACDSee оставалось ещё полтора года, а вопрос единого вьюера востребованных в газетном деле графических форматов стоял ребром. Решили написать сами. На свет божий был извлечён Visual Basic, и как-то вечером засели. Моя роль была скромна. Нет, программировать на Basic и Turbo Basic я умел, но более продвинутые в этом плане друзья к Visual меня просто не подпустили. Моё участие свелось к рисованию нескольких красочных BMP-заставок, которыми надо было оформить интерфейс и инсталляцию.

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

— Э-э-э, у! На! Э-э-э… А-а-а, не…

— А! Э-э-э… У-у-у… Не, а э-э-э — да!

— Не-е-е… У-у-у… Э-э-э!

Я говорю:

— Пацаны, я закончил. Смотреть будете?

Они хором:

— Не мешай!

И следом:

— Э-э-э… У… А-а-а…

— Не-е-е… У-у-у… Э-э-э!

Посмотрел я на это и тихо пошёл ставить чайник.

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

10498

Костыль в законе

Разрабатываем онлайн-проект. Как это бывает, серверная часть на пре-альфе ложится по пять раз на дню.

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

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

— А на фига, если мои ребята так и не смогли его уронить?

Мораль: хорошо сделанный костыль становится протезом.

10496

Перекуём доллары на солнышки

В стародавние времена были у нас уроки информатики в школе. Стояли там компьютеры БК (насколько помню, 16 КБ памяти). Вела предмет учительница астрономии, физики и информатики в одном лице, она же бухгалтер школы. Мучила нас Бейсиком, заставляла рисовать CIRCLE и LINE. Я к тому времени уже немного программировал — тоже на Бейсике, но для ZX Spectrum.

Попался мне в журнале листинг игры типа тенниса или арканоида под QBasic, который на Спектрум я без проблем портировал. Притащил журнал в школу и спросил, можно ли мне попробовать вместо рисований кружков и линий написать игру. Разрешила. В предвкушении пятёрки начал копипастить из журнала. Набираю код, а компилятор выдаёт сплошные ошибки. Подозрение пало на оператор INKEY$ — на клавиатуре БК принципиально не было знака «$». Учительница ответила, что это замечательные советские компьютеры, и никакие доллары нам не нужны. Предложила заменить на «S».

В общем, игра так и не заработала, а я получил трояк — видимо, из жалости, так как видно было, что код я честно набрал (строк сто как минимум). Мораль, конечно, в том, что даже если копипастишь чей-то код, то стоить хотя бы понимать, что к чему, и знать обе системы: с которой портируешь и на которую. А значок «$» надо было менять на «¤».

10474

Настолько сурово

Мой сосед, баптист и айтишник, сделал себе электронную версию книги «Песнь Возрождения» для чтения с нетбука. Зачем, если таких программ и так полно для всех платформ? Но он решил не искать лёгких путей. Каждую песню оформил в виде файла к утилите man. Теперь, как только объявят номер песни, достаточно набрать man song%number% — и можно петь.

Челябинск? Угадали!

10441

Лампочки и дырочки

Я компьютерный юзер. Ну, скорее «эдвансд юзер». То есть тот, кто знает, где на клавиатуре находится клавиша «эни кей». И профессия у меня другая, некомпьютерная. Но с компьютером я знаком. А стаж моего знакомства — 35 лет. Как это? А вот так.

Начиналось всё задолго до эпохи 640 КБ оперативки, DOS 3.0 и косых флопов. Впервые компьютер (точнее, тогда это называлось ЭВМ) я увидел в школе, и был это «Минск-22». В те времена небо было голубее, трава зеленее, а компьютеры — больше. И наш «Минск» — 8192 37-битных слова МОЗУ, или, как легко посчитать, ровно 37 килобайт оперативной памяти — занимал большое помещение размером с класс на втором этаже. Устройствами ввода ему служили телеграфные телетайпы, стоявшие в отдельном помещении. Учили нас языку под названием АЛГАМС — диалекту Алгола-60, с которым я никогда в жизни больше не сталкивался. Программа писалась на бумаге, а потом с помощью упомянутого телетайпа набивалась на пятипозиционную перфоленту. Занятие это было довольно опасное — иногда лента застревала в телетайпе, а при попытках её поправить могло ощутимо ударить током. Опечатки исправлялись не бекспейсом, а заклеиванием ненужных дырочек в перфоленте, пробиванием нужных, а также переклейкой участков ленты. Готовая лента неслась в машинный зал и вставлялась в устройство ввода. Если лента при считывании не застревала на неаккуратных склейках, то «Минск» подгружал транслятор, громко хлопая накопителями с магнитной лентой. Какой винчестер?

Монитора тоже не было. Правда, были другие элементы мультимедиа, и немало. Во-первых, на пульте в такт работе мигали многочисленные лампочки, указывающие на состояние регистров процессора. Вдобавок к одному из разрядов была подсоединена типовая настенная радиоточка, поэтому процесс работы сопровождался характерными звуками. Советские фильмы про космос видели? Там рубка космического корабля, бороздящего просторы Вселенной, обычно оформлялось примерно такими же спецэффектами — лампочки на пульте и таинственные завывания. Так что определить, на какой фазе трансляции находится программа, при некотором опыте можно было на слух. А на последней фазе с грохотом включалось АЦПУ (алфавитно-цифровое печатающее устройство, если кто не в курсе) и выдавало на-гора распечатку программы, обычно — с ехидными комментариями типа «Syntax error». Лента изымалась, дырки заклеивались или пробивались (между прочим, чтобы сделать это быстро и правильно, рекомендовалось знать код EBCDIC наизусть). Длительность цикла отладки «поиск ошибок — исправление ошибок — повторная компиляция» была немаленькой, поэтому в день удавалось прогнать программу раза три, не больше. Тем больше было стимулов писать код аккуратно.

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

Ну, а в остальном всё было примерно так же, как сейчас.

10418

Китаец посередине

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

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

Дизассемблировать код запрещено соглашением, да и лень. Вспоминаем про скилл сетевого админа, даём сегменту сети нужные адреса, делаем там сервер, вносим этот сегмент в таблицу маршрутизации сети… Немного плясок с бубном — и всё готово. Без исходников. В литературе приём называется «мужик посередине» (man in the middle).

10410

Уже вот-вот

Неделю назад заходит в комнату к девелоперам корпоративного ПО директор отделения.

— Так, ребятки, закрывайте «косынку», сейчас нормальная работа будет. Вот вам задание на работу по желанию.

— Есть! Наконец-то!

Пасьянсы позакрывали. Шеф продолжает рассказ:

— Нужно построить высокоуровневую корпоративную сеть мыслей. Другими словами, сеть с shared-чартами, документами, мыслями, видео- и аудиозаписями. Такой себе MS OneNote расширенный. Всё понятно? ТЗ через секунду будет у вас в почте.

Достаёт из кармана телефон и неловким движением руки отправляет всем на почту ТЗ. Ага. Получил.

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

Через три дня упорного труда, когда почти ничего не готово, но уже вот-вот что-то будет, заходит директор.

— Ну что, как работа? Я смотрел, ваш репозиторий горит просто!

— Да, есть такое — трудимся… — отвечаю я.

— А я пошутил, я вас затроллил, багет, ололо! — восклицает начальник.

Все втыкают на него, как на кобылу перед родами.

— И да, Ваня, Коля, Никита — ищите новую работу. Это была проверка на уровень вашей ответственности. Не прошли вы тестик…

Только шеф выходит из комнаты, Коля начинает дико орать: «Сука @#$%ая, я тебя ненавижу!» — и закрывает на компе «Танки Онлайн».

На следующий день я уволился. Дальше работать было боязно.

10406

Код на ощупь

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

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

Сказать, что препод — зануда, это глубоко ошибиться. Нет, он не зануда, просто предметы эти ему противны и неинтересны, а то, что он преподаёт, — не более чем работа. Отчитал/отсидел и вышел. Непонятно — проблемы студента, разбирай им же написанную методичку. Методичка — она же задачник, ибо не одного примера в ней нет. Если препод считает голый код без комментариев и описания наглядным, то, боюсь, для простого студента, не смыслящего в новом языке, он так и останется непонятным языком. Ни описания функций, ничего. А учебника нет, только методичка. Ладно, с горем пополам Гугл помогает, хотя иногда, увы, помогает скорее опыт в других языках, чем выдача поисковика. За месяц преподу удалось сделать то, что не удавалось ни одному учителю до этого: я с отвращением ходил на его пары, чтобы поспать. С тем же результатом всё, что он «давал», можно было разобрать дома, но без посещения пар допуск к экзамену не светил.

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

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

10380

Распределение нагрузки

30 декабря. Все закупают продукты перед Новым годом. Мы с любимой сегодня были истинными хакерами: воспользовались уязвимостью в системе обслуживания покупателей в супермаркете оранжево-синей украинской сети.

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

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

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

10364

Говнокод: истоки

Увидел в аптеке лекарство под названием «Фортранс», предназначенное для «очищения толстой кишки». Много думал. Молодняку не понять-с…