[bash.org.ru] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.
292827• • •1716151413• • •321

#1595: Полуночные алгоритмы

6 декабря 2009, 09:00

рейтинг: 1625

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

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

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

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

Из соображений цензуры не буду показывать то, что он мне прислал в ответ на мою одинокую строчку:

return (a > b) ? a : b;

А мораль проста. Граждане программисты! Здоровый сон — основа качественного кода!

 

#1544: Всё своё ношу с собой

1 декабря 2009, 09:00

рейтинг: 1094

Как-то раз дорабатывал я чужой проект, написанный на РНР. Конечно, использовалось ООП — известно, что только ламеры пишут процедурный код, а реальные пацаны без объектов и «хеллоу ворлда» не напишут.

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

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

 

#1534: Первый прямой отжим

30 ноября 2009, 09:00

рейтинг: 2407

С архиваторами у меня давние и тёплые отношения. Самый мощный в мире архиватор написал я на втором курсе института в качестве курсовика. Файл любого размера он сжимал до двух байт: 0x00 и 0x01. На растерянный вопрос препода: «И что же теперь с ним делать?» — я честно ответил: «Понятия не имею. Было задание написать архиватор, а задания писать разархиватор не было».

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

Делать нечего — через неделю архиватор был предъявлен. Он сжимал любой файл раз в пять лучше RAR на максимальной компрессии и делал это раз в десять быстрее. Выгодно отличало его от моего первого детища то, что этот умел разархивировать файлы. Руководитель сиял, как стоваттная лампочка, и на предъявленный исходник отреагировал мимолётным взглядом и снисходительным кивком. А зря, потому что среди 30 КБ bitwise-операторов и булевой логики сиротливо ютились несколько вызовов к внешним DLL. Один из них со скромным названием RightAlignDWORD получал хэндл открытого файла, копировал его на последние незанятые кластеры жесткого диска и возвращал список кластеров — FAT, разумеется, оставался нетронутым. Этот список кластеров и был единственной полезной информацией в получившемся «архиве».

Защита прошла на ура, я забрал диплом и выписался из общежития. Пути наши с моим (теперь уже бывшим) руководителем разошлись. По слухам где-то через год он меня упорно искал через знакомых. Зачем бы, интересно?

 

#1526: Квадратный байт

29 ноября 2009, 09:00

рейтинг: 880

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

Никогда не декларируйте координаты типом byte.

 

#1514: [eq.pas

28 ноября 2009, 09:00

рейтинг: 1060

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

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

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

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

 

#1512: Пока дятел в полёте

27 ноября 2009, 20:30

рейтинг: 2157

Если бы программисты были архитекторами, то...

1. В день сдачи здания приезжал бы крупный начальник, говорил бы, что ему не нравится вон то восточное крыло и вопрошал: «А можно ли это переделать за два часа?»

2. Половина зданий была бы похожа на барачные конструкции с кучей подпорок по периметру — время не резиновое.

3. Вторая половина зданий была бы нормальной, но недостроенной.

4. Утвержденный план здания по ходу бы дополнялся пулеметами на крыше (чтобы враги не подступились), легкомысленными статуями на фасаде (чтоб красиво было) и окнами, через которые можно смотреть только изнутри — и вся эта красота за те же деньги, в те же сроки и за три дня до окончания проекта.

5. Если бы легкомысленные статуи и пулеметы уместить в одном здании не получилось бы, начальник заглядывал бы в глаза и спрашивал: «А почему нельзя? А вон я видел вон там вон это вон».

6. «Вон там вон это вон» — здание, возведенное международной строительной компанией при поддержке правительств трёх государств.

7. И вообще, плита перекрытия между этажами — это просто, доступно и легко, почему её поднимают на кране? Вон, египтяне еще до нашей эры пирамиды строили, а это вам не хухры-мухры, давайте-ка пошустрее!

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

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

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

Считаете программистов бездельниками, лентяями и прохиндеями? Зачастую это правда (иначе бы я не потратил четверть часа рабочего времени на написание этой истории). Несмотря на это, уважайте труд программиста — зачастую им ставят задачи из разряда «найти снеговика в Сахаре и привезти его живым», и многие справляются!

 

#1497: Патриотичный порнобейсик

26 ноября 2009, 09:00

рейтинг: 1631

В конце восьмидесятых только-только начали появляться персональные компьютеры Д3-28 (ввод с магнитофонной кассеты), Электроника-60 (ввод с перфоленты), ДВК-2 (ввод с 5" дискеты аж на 360 КБ). И вот одна из наших кафедр закупила 3 ПК «Искра» (номера модификации уже не помню). Всё это происходило в период борьбы партии и народа с иностранщиной.

Так вот, в эти «Искры» был уже прошит бейсик на русском. Перевод был поразительным. INPUT — «вводим». Догадались, как будет END? Правильно, «кончаем».

Мы так эти «Искры» и прозвали: «Вводим-кончаем». Правда, проработали они у нас месяца три и поумирали (скончались?) Вместе с этим порнобейсиком отправили их на завод-изготовитель, и больше они к нам не возвращались.

 

#1488: Быстрее, выше, правее

25 ноября 2009, 11:00

рейтинг: 921

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

Неимоверными усилиями превозмогая противодействие мыши, таки запустил NOD32. Фиг вам — «нод» свежий, но ни черта не ловит. Полез в панель управления глянуть, что с мышой. Опять-таки бешено гоняя грызуна по коврику вверх-вправо, еле залез на закладку «Оборудование». Там значились:

— PS/2-совместимая мышь (PS/2);
— Microsoft BallPoint трекбол (COM2).

На COM2 и висел мой девайс. Более того, выяснилось, что устройство помимо прочего бросает в COM-порт данные со встроенного акселерометра. Теперь всей конторой, подкручивая коэффициенты, пытаемся настроить его для игры в «сапёра».

 

#1477: Русский код, бессмысленный и беспощадный

23 ноября 2009, 16:45

рейтинг: 1716

Было это в универе на втором курсе. В это время мы учили программирование двоичных деревьев в Паскале. У меня неплохо получалось, потому я — человек нежадный и открытый — консультировал почти всю группу по этому вопросу, как, впрочем, и по многим другим.

Подзывает как-то меня на паре одна из одногруппниц, которая не отличалась особым умом и сообразительностью. Показывает мне синенькое окошко Turbo Pascal и спрашивает: «Что делает эта программа?»

Смотрю код. Глаза у меня начинают округляться, а волосы вставать дыбом. Текст программы набран русскими буквами, причём о правильном синтаксисе не идёт и речи. Я не пойму, что происходит: то ли лыжи не едут, то ли со мной что-то не так. Ошалело спрашиваю: «Она компилируется?!» Девушка отвечает, что нет.

Говорю, что тут я ничем не могу помочь. Она тут же открывает еще один аналогичный кусок «кода» и снова спрашивает, что делает программа. Я, офигев окончательно, всё-таки нахожу в себе силы спросить:

— Кто же это написал?!
(гордо) Я!

 
292827• • •1716151413• • •321
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
на сайте
Утверждено: 3708
Сегодня: 5
В рассмотрении: 1876
тэги
лучшие последних семи дней
статистика
Рейтинг@Mail.ru