8224
Писал я как-то курсач по основам алгоритмизации и программирования. Курсач был первый, поэтому писал крайне старательно. До красных глаз, до мегалитров кофе, даже курить начал. Была у меня проблема — и никак она не решалась.
Эстетом меня назвать можно, хоть и с изрядной натяжкой, но так как в качестве курсача была выбрана игра, значит, и выглядеть она должна поигривей; даже кнопка закрытия должна быть весёленькой. Кнопку нарисовал, впихнул на форму, запускаю — нету. Матерюсь на чём свет стоит, проверяю всё, что можно — опять не фурычит. Возился три дня с этой мерзостью, в конце концов плюнул и дописал в пояснительной записке, что закрытие осуществляется путём нажатия волшебного аккорда Alt+F4.
Пришёл защищаться, запустил… Моя челюсть, протаранив по пути стол, придавила ногу преподавателя. Кнопочка была на месте. В чём дело? Да в разрешении, будь оно неладно! Будучи совершенно никаким программистом (первый курс, едва закончили знакомство с Паскалем, в школе видели только КуМир на «Корветах»), я всё далал по мануалам и конспектам и не придал значения злосчастному параметру 1024×768. На старичке, на котором я всё это писал, было вбито 800×600 на 60 Гц как максимально возможное.
8206
В нашей школе можно получить начальное профессиональное образование. Я хожу на курсы под названием «оператор ЭВМ», и иногда мы решаем простенькие задачки по программированию.
Очередная задача: вводим двумерный массив три на три, состоящий из цифр, а программа должна определить, симметричен ли он относительно главной диагонали. Код написал, теоретически должен работать, но что такое? Специально ввожу симметричный массив — говорит, что симметричен. Ввожу рандомно с клавиатуры — всё равно говорит, что симметричен! Пробую ещё два раза — то же самое.
Подзываю друга помочь. Он смотрит логи и замечает, что все три раза я действительно вводил абсолютно симметричный массив. Вот и верь теперь в случайность…
8203
Разбирался с одной невероятно тормозящей программой. Нашёл источник проблем — жирную библиотеку непонятного назначения. Морально подготовился к встрече с индусским кодом и долгим раскопкам. Открываю. Первый комментарий:
//TODO:
//include brains.h
//include hands.h
//exclude indian.h
Код пестрил комментариями, местами индусятина была исправлена. Неизвестный мне разработчик явно копался в коде как минимум неделю! Разобраться по комментариям было намного легче, и уже через день всё было доделано, программа летала, а к первому комменту добавились две строчки:
//DONE!
//thank you, unknown developer!
8200
Я смотрю, хорошего программиста мы на работу взяли.
if (i < 1024) {
...
} else if (i/1024 < 1024) {
...
} else if (i/1048576 < 1024) {
...
} else if (i/1073741824 < 1024) {
...
} else {
return "о$#еть, терабайтный файл!";
}
* * *
if (selected.isFile()) {
...
} else if (selected.isDirectory()) {
...
} else {
menu.add(Menu.NONE, 0, Menu.NONE, "What The Fuck?");
}
* * *
if(!selected.remove()) {
Log.v(TAG, "Да e$@л я эти пермишены, удаляйся, тварь волосатая по имени "+selected.getName());
} else {
...
}
* * *
Говорит, без всего этого код нечитабельный. Нельзя, мол, быстро найти нужный кусок кода. Но приложения он пишет отменные, да и пока что ни одна из его «пасхалок» обнаружена не была. Любим мы этого хулигана.
8198
Прошло почти полтора года с момента написания бота для браузерки. Меня нашли и забанили, причём поймали на единственном непроработанном моменте бота, и для себя я вывел мораль: если прячешь — прячь целиком. По персонажу осталось рассовано дикое количество золота (около 5 млн — я был всерьёз озадачен, куда и как их прятать), друзья по игре и соклановцы были шокированы (идеологическая конспирация держалась на уровне). Интерес к игре угас давно.
Но игр много. Недавно я подсел на ММО про космические кораблики. Интересная особенность игры: все играют на одном-единственном серваке. И англичане, и русские, и немцы, и японцы, и австралийцы, и все-все-все прочие.
Теоретически игра платная: 15 мёртвых американских президентов в месяц. Но есть возможность платить игровыми деньгами. Самое простое: копаешь руду, продаёшь и платишь. 50 часов копки — и игра на месяц оплачена. Но копать часами так скучно! А что делает программер, когда ему становится скучно выполнять однообразные действия? Правильно, он автоматизирует процесс. Тру-кодер, как известно, не кодить не может.
Написал очередной скрипт. Бот пилит астероиды, а я на халяву практикуюсь в английском с живыми людьми из других стран. А вы когда последний раз общались с кем-то, у кого сейчас лето?
8188
Немного просрочили проект. Заказчик расстроился настолько, что запросил полный возврат средств.
Мы с коллегой тоже расстроились. Возвращали по WebMoney Transfer, в примечании к платежу написали: «Фальшивые».
8186
// // /*
// // //Sleep(100);
// // //слип здесь не нужен!
// // Sleep(100); //Нужен!
// // */ //не нужен!!!
// // Sleep(100); //нужен! без него окно не до конца дорисовывается.
// //идиоты! а код поправить слабо?
// /*
// Sleep(100); //сам дурак! так проще.
// */ //правьте баги или уволю нах!
// Sleep(100); //увольняй.
// Sleep(100);
// Ладно, поправили. Теперь нормально?
// P.S. Сегодня пятница, может по пиву?
// Ладно, можно и по пиву.
// P.P.S. Хорош срать в комментах!
8162
Электроника Б3-21. 60 шагов программы, 8 ячеек памяти, обратная польская запись арифметических действий, стек в две ячейки; встроенных циклов, как в МК, нету, только условные переходы.
Впёрло нарисовать траекторию движения планеты в системе двух солнц. Всего-навсего дифурчик второго порядка. Мелочи. Но ведь хватило 60 байт кода и 8 переменных! Правда, пару недель по точкам получал траекторию и наносил на миллиметровку, но всё же справился и был доволен.
Гляжу на современные требования к железу — и как-то боязно становится. Неужели все настолько обленились, что проще заставить пользователя купить новый компьютер или пару плат, чем сесть и подумать?
8161
Пишем программу управления сложным аппаратным комплексом. На одной из закладок программы надо разместить текущие параметры системы и предусмотреть механизм перенастройки пользователем. Параметры лучше всего представляются в виде таблицы, поэтому и панель управления тоже было решено выводить в табличной форме, а пользователю дать возможность редактировать установки прямо там.
Задача именно в такой постановке решалась уже не раз, потому и сейчас делаем так же. Вариантов решения два: либо просто нарисовать таблицу и по щелчку мышкой на ячейке отрисовывать поверх ячейки выпадающий список, а после выбора в нём значения записывать новые данные в таблицу и убирать список, либо воспользоваться готовым компонентом, который делает то же самое, но сам управляет существованием выпадающего списка и хранимыми данными. Первый способ быстрее и грубее, второй изящнее и правильнее в плане разделения логики, данных и интерфейса, но немного дольше в кодировании — минут 40 против 20 у первого варианта.
Ответственный за модуль программист затихает за своим компьютером часа на четыре, после чего демонстрирует плод своего труда. Поскольку лично он ни одним из этих двух вариантов раньше не пользовался, то решил задачу по-своему. Он просто поставил на панель полторы сотни выпадающих списков в виде таблицы.Естественно, панель тормозит при перерисовке, при скроллировании приходится вручную управлять тем, какие списки видны, а какие — нет, а уж код, собирающий введённые пользователем значения для дальнейшей обработки, не поддаётся описанию. Посадили переделывать, выдав кусок старого проекта.
8160
Компилю программу под gcc. Всё проходит на ура: компиляция, линковка, запуск. Отправляю исходники на сайт, чтобы получить ещё одно решённое задание в профиле. Но не тут-то было: компилятор на сайте обидно рассказывает о наличии ошибки, но не указывает, где именно.
Путём расстановки комментариев нашёл злосчастную строчку. Задумался: почему тут есть ошибка, а у меня всё окей? Посидев на форуме, выяснил, что у них стоит Visual C.
Теперь чувствую себя русским, разговаривающим с украинцем: основа одинакова, а мелочи абсолютно разные!