#8489: Дай дураку линукс — ядро переберёт
13:00 11.02.2012, IT happens
Вот говорят: чтобы пользоваться линуксом, надо обладать высоким интеллектом. Ага, конечно.
В винде надо запомнить не только как пункт меню называется, но и где находится. А если не знаешь, приходится порой долго искать. Простое знание названия не поможет.
А в линуксе? Достаточно просто знать, как команда называется. А забыл — «два таба» к твоим услугам. Ключи команды забыл — посмотрел в мане. Что, ман на английском? Тем легче: английский ведь проще русского.
В винде программа понадобилась — полдня ищешь по всему интернету. Потом ещё полдня проявляешь креативность, чтобы придумать фразу для поисковика, которая поможет найти кряк. Кряк надо обязательно проверить на вирусы. Ах да, к антивирусу тоже надо кряк найти.
А в линуксе? Заранее знаешь, где программу взять — в репозитории. Сказал rpm -i — и вот она, установлена, пользуйся! Ну, зависимости разрешил, если требуется — он же сам подсказывает, какие ещё пакеты скачать, разве для этого много ума надо?
Железяку новую подключить? Для винды надо недюжинные умственные способности проявить, чтобы дрова найти.
А в линуксе? Подключил — железка сама и заработала. Ну, не заработала — ядро пересобрал. Это вообще процесс чисто механический, как езда на велосипеде: один раз научился, больше не разучишься.
Винда сглючила — нужно проявить квалификацию, чтобы найти причину глюка, и чтобы устранить — тоже без квалификации никуда.
А линукс просто не глючит. Ни креативности, ни борьбы. Всё само работает. Ну разве может такая спокойная, размеренная жизнь развивать интеллект, а главное — закаливать волю к победе?
#8476: Смертельная битва на костылях
16:45 09.02.2012, IT happens
Я тот самый нелюбимый быдлокодерами программист, который пишет не «2 + 2», а интерпретатор формул (благо опыт позволяет это сделать быстрее, чем некоторые кодеры напишут и отладят свой «2 + 2»). Не пишу хардкодом параметр, который «никогда-никогда не будет меняться», а сделаю настройку. Могу вместо костыля плюнуть, потратить пару часов, но переписать так, чтобы не требовалось постоянно латать.
В конце проекта вы, быдлокодеры, быстро расставляете костыли, затыкаете дыры и заливаете код в репозиторий, уверенные в своей гениальности. А потом прихожу я и делаю так, чтобы работало не только на вашем сферическом компьютере в вакууме, а на любом, удовлетворяющем заявленным системным требованиям.
Так что потом не удивляйтесь, что за хардкод путей (который запрещён), ориентацию на единственный браузер или билд DX, влезание со своими именами, повторяющими чужие в системах с глобальной видимостью объектов, наплевав на установленные правила именования, вам настучали по голове и лишили части премии.
Ещё одна особенность быдлокодеров: сделать костыль не самым простым и надёжным способом, а наиболее извращённым. Работает, естественно, лишь в некоторых случаях (которые и были протестированы), а дальше пусть тестеры разбираются. Найдут — поставим ещё костылей.
Но самое страшное — более одного быдлокодера, которые расставляют костыли в одном проекте. Тогда эти заплатки начинают драться между собой. Один затыкает дырку, заливает — рушится что-то в другом месте. Затыкает там — рушится тут или ещё где. В итоге костылей становится столько, что многоножку-инвалида легче, быстрее и дешевле пристрелить и переписать всё нормально, чем лечить.
Почему я не делаю всё сам? Физически не хватит времени писать несколько проектов, поэтому я занимаюсь наиболее приоритетными и воскрешаю смертельно больных. Опыт позволяет минут за двадцать найти и исправить баг, который до того искали полдня. Набирать код со сверхскоростью недостаточно — когда-то надо ещё и думать.
#8487: Гений: переаттестация
20:45 10.02.2012, IT happens
Опа, ещё один тру-программер (История #8476) нашёлся. Забыл я как-то про этот психотип. Универсальный всемогутер и писатель универсальных всемогутеров.
Ну, парсеров-интерпретаторов за 25 лет я написал немало, включая собственные ActiveX скриптинг-языки и парсер PDF. Не затруднит написать и ещё десяток — Yacc не забывается. Но если меня просят написать «2 + 2», я пишу «2 + 2», а не универсальный всемогутер с конфиг-файлом на пять мегабайт XML. Почему? Ошибки в коде будут всегда, а отлаживать визивиг-редактор формул несколько сложнее, чем printf("%d", 2+2), не находите?
Степень сферичности коня в вакууме тоже надо ограничивать. У меня в работе одновременно до десятка компиляторов и операционок, так что найти, где упадёт самая «несферичная» и устойчивая программа, я могу за пять минут. На 50% машин она просто не соберётся.
За полчаса багу в проекте отыскать? Вот у меня проект на двух человек с 300 мегами чужих исходников весьма разного качества, поскольку портируем. Охотно верю, что найдёте и отличите ошибку портирования от неверных входных данных или баги, пришедшей с исходной платформы. За полчаса. И поправите. Особенно если причиной падения в одном модуле послужило неправильное (знаковое-беззнаковое) представление char при компиляции другого модуля — не поправили make.
Опять-таки, в настройки можно вынести всё, включая алгоритм, и из программы получится интерпретатор кривого самопального скриптового языка без чётких правил и грамматики, который только по недоразумению считается конфиг-файлом. То есть задача программирования перекладывается на пользователя, и это программирование без IDE и отладчика по недоразумению будет называться «правкой конфига». И бедный юзер будет копаться, портить данные, мега-универсальная программа будет ломаться, а программеры будут её чинить. А автор чудо-кода уволился, искать смысл в 300 мегах исходников на С++ — дело неподъёмное. Ни в чём не повинные молодые программисты просто обязаны городить костыли, лишь бы не падало. Их не ругать, а жалеть надо. Напиши гений что-нибудь попроще — глядишь, и исправления были бы адекватнее. Вот и выходит, что польза от всемогутера вполне компенсируется в ближайший год поддержкой того, что он написал.
Я не пишу абсолютные пути, но делаю только то, что просят. Я чётко знаю, в каком вакууме и с какой сферичностью могут работать мои программы, и не строю иллюзий. Я ас в написании костылей, потому что переписывание 300 мегов как-то занимает больше времени, чем точечные правки. Правда, костыли эти потом коллекционируют и собирают в библиотеку под именем «portability layer».
Просто я не озабочен поддержанием статуса гения.
#8479: Сжёг нервы — спас дерево
13:00 10.02.2012, IT happens
Каждый раз при пользовании банкоматом у меня возникают смешанные чувства. С одной стороны, я с ужасом представляю, что эти же программисты будут работать в моей компании; с другой, я ими искренне восхищаюсь. Надо иметь недюжинный талант, чтоб наваять такое.
Начнём с самого начала. Большинство банкоматов моего города не понимают нажатие кнопки Enter на цифровой клавиатуре после ввода PIN. Только кошерная боковая кнопка, соответствующая надписи «Продолжить».
Идём дальше. У большинства банкоматов в меню выбора суммы есть пункты, которые попросту не работают, ибо номиналом они меньше, чем может выдать банкомат. Например, нажимаем мы 10 или 25, на что железный ящик радостно рапортует: «Минимальная сумма — 50».
При вводе произвольной суммы первой сверху расположена кнопка «Повторить», очищающая окно ввода, и уже потом кнопка «Правильно». Я не раз видел, как уставшие люди с притуплённым вниманием по пять раз вводили сумму и инстинктивно тыкали в удобную им кнопку. Про то что, надписи очень похожи, и уставшему человеку трудно их различить, я промолчу.
Выдавать сначала деньги, потом чек и только потом карту — особый шик. В таких банкоматах я встречал забытые карты особенно часто.
Особое внимание считаю нужным уделить угадыванию суммы, которую можно снять. Бог с ним, когда карта не того же банка, что и банкомат, — я понимаю, что железка не может знать чужих тарифов и узнаёт, прошёл платёж или нет, только по факту. Но вот когда карта вашего же банка, можно же посчитать и подсказать сумму?
Отдельный привет хотелось бы передать «П***-банку» с названием, говорящем о конфиденциальности. Его банкоматы просто божественны. Мало того, что каждое действие (даже не требующее обращения к серверу) банкомат выполняет в течение 10–30 секунд, так ещё и до, после и во время использования нам приходится три-четыре раза нажимать лишний раз «Продолжить», разглядываю «ненавязчивую» рекламу.
Отдельным шиком у «П***-банка» считается после положительного ответа на печать чека переспросить: действительно ли я уверен, что хочу поучаствовать в убийстве деревьев лично, хоть и косвенно?
И именно их банкомат однажды на попытку снять 80 сказал мне: «Недостаточно денег на счету. Рекомендуем попробовать 100».
#8497: Нечисты помыслы связистов-террористов
15:00 12.02.2012, IT happens
Как-то в далёкой моей монтажной молодости вылезли мы с напарником на крышу оптику прокладывать. Одежда в стиле милитари — комфортно, не рвётся, да и запачкать не жалко. В руках — китайский чёрно-желтый чемоданчик с инструментами и аппарат для сварки оптики.
Работаем себе, анекдоты травим. Внезапно морда оказывается в крыше, а в шею утыкается дуло автомата. Чтоб мне век Эксплорером шестым пользоваться — чуть, простите, в штаны не наделал! Маски-шоу. «Где бомба?!» — спрашивают. Какая, на фиг, бомба?..
Пришлось лёжа полтора часа ждать, пока начальник ехал подтверждать наши личности. К слову, бабульку не тронули, хотя и очень хотели настучать. Немного грела мысль, что её оштрафовали прилично так за ложный вызов.
#7869: Взлом без абстракций и метафор
15:45 25.11.2011, IT happens
На взлом пароля с помощью пластилина (История #6630) мне в детстве фантазии так и не хватило. Может, просто не успел, так как компьютер от частых разъездов довольно быстро превратился в хлам, а следующий появился лишь года через три. Но до установки пароля на BIOS родители достаточно долго пытались меня оградить от компьютера, просто запирая мышь, клаву и кабели в дипломат с кодовым замком. Навык их взлома мне пару раз в жизни всё-таки пригодился.
#7870: ТВ-терминатор
15:45 25.11.2011, IT happens
Было это в те стародавние времена, когда 256 цветов на экране вызывали восторг, а четырёх мегов оперативки хватало самому заядлому геймеру. Моему другу по случаю достался бэушный 286-й системник, и за неимением монитора он решил подключить его к телевизору. Как, спросите вы? Да очень просто! Обнаружив на задней стенке гнездо типа «тюльпан», он просто соединил его кабелем с видеовходом ТВ, разумеется, с нулевым результатом.
Когда друг поделился проблемой со мной, я сжалился и подарил ему свой старый монитор, заодно прочитав короткую лекцию по компьютерному «железу».