BZIK.INFO
[ bzik анекдоты ] [ bzik афоризмы ] [ bzik истории ] [ bzik башизмы ] [ bzik ИТ истории ] [ bzik тосты ]
[ bzik неразобранное ] [ bzik прислать свежий ]
BZIK.INFO



{671} {670} {669} {668} {667} {666} {665} {664} {663} {662} {661} {660} {659} {658} {657} {656} {655} {654} {653} {652} {651} {650} {649} {648} {647} {646} {645} {644} {643} {642} {641} {640} {639} {638} {637} {636} {635} {634} {633} {632} {631} {630} {629} {628} {627} {626} {625} {624} {623} {622} {621} {620} {619} {618} {617} {616} {615} {614} {613} {612} {611} {610} {609} {608} {607} {606} {605} {604} {603} {602} {601} {600} {599} {598} {597} {596} {595} {594} {593} {592} {591} {590} {589} {588} {587} {586} {585} {584} {583} {582} {581} {580} {579} {578} {577} {576} {575} {574} {573} {572} {571} {570} {569} {568} {567} {566} {565} {564} {563} {562} {561} {560} {559} {558} {557} {556} {555} {554} {553} {552} {551} {550} {549} {548} {547} {546} {545} {544} {543} {542} {541} {540} {539} {538} {537} {536} {535} {534} {533} {532} {531} {530} {529} {528} {527} {526} {525} {524} {523} {522} {521} {520} {519} {518} {517} {516} {515} {514} {513} {512} {511} {510} {509} {508} {507} {506} {505} {504} {503} {502} {501} {500} {499} {498} {497} {496} {495} {494} {493} {492} {491} {490} {489} {488} {487} {486} {485} {484} {483} {482} {481} {480} {479} {478} {477} {476} {475} {474} {473} {472} {471} {470} {469} {468} {467} {466} {465} {464} {463} {462} {461} {460} {459} {458} {457} {456} {455} {454} {453} {452} {451} {450} {449} {448} {447} {446} {445} {444} {443} {442} {441} {440} {439} {438} {437} {436} {435} {434} {433} {432} {431} {430} {429} {428} {427} {426} {425} {424} {423} {422} {421} {420} {419} {418} {417} {416} {415} {414} {413} {412} {411} {410} {409} {408} {407} {406} {405} {404} {403} {402} {401} {400} {399} {398} {397} {396} {395} {394} {393} {392} {391} {390} {389} {388} {387} {386} {385} {384} {383} {382} {381} {380} {379} {378} {377} {376} {375} {374} {373} {372} {371} {370} {369} {368} {367} {366} {365} {364} {363} {362} {361} {360} {359} {358} {357} {356} {355} {354} {353} {352} {351} {350} {349} {348} {347} {346} {345} {344} {343} {342} {341} {340} {339} {338} {337} {336} {335} {334} {333} {332} {331} {330} {329} {328} {327} {326} {325} {324} {323} {322} {321} {320} {319} {318} {317} {316} {315} {314} {313} {312} {311} {310} {309} {308} {307} {306} {305} {304} {303} {302} {301} {300} {299} {298} {297} {296} {295} {294} {293} {292} {291} {290} {289} {288} {287} {286} {285} {284} {283} {282} {281} {280} {279} {278} {277} {276} {275} {274} {273} {272} {271} {270} {269} {268} {267} {266} {265} {264} {263} {262} {261} {260} {259} {258} {257} {256} {255} {254} {253} {252} {251} {250} {249} {248} {247} {246} {245} {244} {243} {242} {241} {240} {239} {238} {237} {236} {235} {234} {233} {232} {231} {230} {229} {228} {227} {226} {225} {224} {223} {222} {221} {220} {219} {218} {217} {216} {215} {214} {213} {212} {211} {210} {209} {208} {207} {206} {205} {204} {203} {202} {201} {200} {199} {198} {197} {196} {195} {194} {193} {192} {191} {190} {189} {188} {187} {186} {185} {184} {183} {182} {181} {180} {179} {178} {177} {176} {175} {174} {173} {172} {171} {170} {169} {168} {167} {166} {165} {164} {163} {162} {161} {160} {159} {158} {157} {156} {155} {154} {153} {152} {151} {150} {149} {148} {147} {146} {145} {144} {143} {142} {141} {140} {139} {138} {137} {136} {135} {134} {133} {132} {131} {130} {129} {128} {127} {126} {125} {124} {123} {122} {121} {120} {119} {118} {117} {116} {115} {114} {113} {112} {111} {110} {109} {108} {107} {106} {105} {104} {103} {102} {101} {100} {99} {98} {97} {96} {95} {94} {93} {92} {91} {90} {89} {88} {87} {86} {85} {84} {83} {82} {81} {80} {79} {78} {77} {76} {75} {74} {73} {72} {71} {70} {69} {68} {67} {66} {65} {64} {63} {62} {61} {60} {59} {58} {57} {56} {55} {54} {53} {52} {51} {50} {49} {48} {47} {46} {45} {44} {43} {42} {41} {40} {39} {38} {37} {36} {35} {34} {33} {32} {31} {30} {29} {28} {27} {26} {25} {24} {23} {22} {21} {20} {19} {18} {17} {16} {15} {14} {13} {12} {11} {10} {9} {8} {7} {6} {5} {4} {3} {2} {1}


Конец 2010 года. Интернет-провайдер в подмосковном Долгопрудном гордо заявляет: новые тарифы «работают только по новой технологии IPoE (IP over Ethernet)». Вот это инновация! А раньше мы IP через Ethernet передавать и не догадывались!



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

А теперь нюанс, которым хочу поделиться. В качестве пароля, особо не заморачиваясь, я выбрал словосочетание на русском языке в английской раскладке. Запоминается легко — но попробуйте ввести его на экранной клавиатуре КПК, планшетника или смартфона! Не получается? А гости, основные пользователи моего домашнего беспроводного интернета, приходят именно с такими устройствами. Пароль пришлось менять.



Есть у меня на работе одна женщина, несколько неадекватная. У неё бзик на почве того, что её все стараются уволить. Как-то подняла шум из-за того, что один из «программистов» что-то ей испортил. Когда она выключает компьютер, тот её спрашивает: «Завершить работу?»

— Мне завершить? Совсем — и с вещами на выход? Я ещё вас тут всех пересижу, вы меня не уволите!



Отважусь провести краткий ликбез на тему «ху из ху», чтобы нормальные программисты не считали самих себя быдлокодерами.

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

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

Оверинжиниринг — вот мировое зло, вот дьявол всеохватный. Надо же обязательно показать всему миру длину своей пиписьки, свою «современность» и владение всякими супер-пупер-технологиями. Как? Ты до сих пор ищешь четыре максимальных элемента в массиве при помощи цикла? Так ведь в последней версии надстройки для последнего Visual C++, которая продаётся всего за $1600, давно реализован готовый класс для этого! Или можно взять готовую функцию qsort, которая всего-то отсортирует зря остальные 4 миллиона элементов, зато ты потом просто сможешь взять e[0], e[1], e[2], e[3] — и всё!

Головоломщик пишет красиво, компактно, оптимально. Задача легко охватывается одним взглядом, блоки отделены один от другого логично и изящно, пусть и с нестандартным форматированием. Отличается от хорошего программиста тем, что не комментирует свой код и даёт всему сущему идиотские названия. Иногда доходит то такой изощрённой пытки, как некомментированная ассемблерная оптимизация, идеальная с точки зрения кода, но с читаемостью на уровне клинописи:
for (b=a=0, a<c, a++) if (b<d[a]) b=d[e=a];

Возможно, после пары тумаков он станет нормальным программистом и начнёт писать так:

for (MaxVal=i=0, i<ARRAY_SIZE, i++)
if (MaxVal<DataArray[i]) MaxVal=DataArray[MaxIndex=i];
// Ищем максимальный элемент и его номер. Массив полностью нулевым не бывает (проверено выше), поэтому MaxIndex всегда определён.

Только не переборщите с тумаками, а то он начнёт писать всё это в десять строк со скобками, что затрудит чтение громоздкостью — это вечный бич опенсорса.



Нужно было мне от одного знакомого, не особо сильного в компах, получить файлик — ISO-образ в 600 метров весом. Пока я думал, поднять у себя FTP или объяснить, как пользоваться файл-хостингами, человек написал, чтобы я готовился принимать по электронке.

К вечеру я получил от него 30 писем, в каждом из которых лежал 20-метровый RAR-архив. Сразу же вспомнились старые добрые времена, когда на двух пачках дискет носили игры друг другу. Но сюрприз ожидал меня в конце. Распаковав этот многотомный архив, я получил… запароленный RAR-архив с нужным мне диском. Пароль мне знакомый потом сообщил по телефону, а причины решения объяснил так: «Ты же рассказывал мне, что надо осторожнее быть с информацией в сети, что важную информацию не стоит пересылать по небезопасным соединениям. Я не знаю, безопасна ли почта или нет, поэтому решил подстраховаться».

Люблю таких пользователей. Хоть и не всегда знают, как сделать, но стараются.



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

— Что такое класс?

Ответа закономерно нет.

— Ладно, что такое полиморфизм?

Бедный студент начинает рыться в памяти на предмет знакомых ему понятий:

— Ну, я знаю, что такое гомоморфизм, изоморфизм, эндоморфизм, автоморфизм и даже диффиоморфизм, а о полиморфизме слышу впервые.



Студенты сдают первую лабораторную по C++, я бегаю принимаю. Их сорок человек, я один, времени всего час, поэтому конвейер и никакого индивидуального подхода. Одна из задач: используя рекурсию, написать функцию, вычисляющую факториал. Студент показывает программу на два или три экрана кода. Разбираться некогда, поэтому предлагаю запустить с мыслью, что сейчас факториал семи окажется равен 143 или вроде того, и со спокойной совестью оставлю студента копаться в этой каше дальше. Но программа считает, и считает совершенно правильно, по крайней мере, для чисел от 1 до 10. Смотрю код. int fktrl(int n, int p)… Собственно, факториал считается через вызов fktrl(n, 0).

— Что такое p?
— Сколько произведений.
— Каких произведений?
— Которые уже есть. А то иначе не работает.

Понятно, думаю, такой безумный вариант я уже видел. Смотрю код дальше. Ничего подобного! Какие-то проверки, сравнения, штук пять разнообразных рекурсивных вызовов — и fktrl(n−1, p), и fktrl(n, p+1), и совсем загадочное fktrl(n−2, 3). Умножений нет вообще, зато есть сложения.

Времени не остаётся. Ставлю студенту плюсик (потом по моим плюсикам проверят только, кто присутствовал, — хотя студенты этого, конечно, не знают, маленькие ещё) и бегу принимать дальше. Но два вопроса меня теперь мучают: как это работало и как такое можно было придумать и отладить?



Дело было утром 4 января 2011 года. Весь рабочий состав офиса провайдера в сборе и готов к работе после окончившихся праздников. В 9:15 раздаётся звонок:

— Доброе утро! Не работает интернет.

Смотрю на карту сети — лежит сегмент из пяти домов. На одном из домов изредка подвисает медиаконвертер. Отправляю монтажника. Через пять минут он перезванивает и сообщает мне тревожным голосом:

— Тут это… Мужик висит.
— %name%, если это шутка, то она неудачная и не смешная совсем!
— А вот и не шутка! Висит и смотрит на меня. Я на техэтаж не полезу!

Отправляю вдогонку другого — перезванивает и говорит, что таки висит и таки смотрит.

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



Вы считаете, что быдлокод — проблема нашего образования? Если бы.

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

Вы представляете, как сейчас выглядит код, который я набросал? Я всё доделаю и заставлю работать как надо. Мне это ново и интересно. Но я заранее прошу прощения перед всеми, кто может с моим кодом столкнуться в дальнейшем. Я не специально. Меня заставили.



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

Через неделю опять звонит этот товарищ и в панике полупьяным голосом объясняет, что случайно оторвал провода с передней панели, и комп не запускается. Объяснять, как вернуть всё назад, в лом, тем более по телефону — проще прийти и сделать. Договорились на следующий день.

Первое, что меня насторожило, это как оторвались провода: не просто выскочили из матери, а были реально оторваны почти под корень со стороны кнопки и диодов, причём концы проводов были зачищены сантиметров на пять, а некоторые скручены. «Клиент» объяснил, что порвал их случайно, когда вкорячивал неон. Ну, думаю, ладно, скручены были провода относительно правильно: ресет и включение. Отсоединил провода совсем, включил БП — на пару секунд закрутились вентиляторы и встали. Подозрения стали обрастать догадками. Тут-то мне и открылась правда: когда один раз знакомому удалось запустить комп, он зачистил провода и принялся поочерёдно тыкать ими куда попало на материнке, замкнул накоротко плюсы светодиодов PW_LED и HD_LED, а проводом от PW_SW ткнул куда-то в разъём кулера.

Поздравил я знакомого с геморроем метровой длины, собрал манатки и убрался восвояси. Не оскудеет земля идиотами.


ЕЩЁ БЗИКОВ!        ПРИСЛАТЬ СВОЙ!

{671} {670} {669} {668} {667} {666} {665} {664} {663} {662} {661} {660} {659} {658} {657} {656} {655} {654} {653} {652} {651} {650} {649} {648} {647} {646} {645} {644} {643} {642} {641} {640} {639} {638} {637} {636} {635} {634} {633} {632} {631} {630} {629} {628} {627} {626} {625} {624} {623} {622} {621} {620} {619} {618} {617} {616} {615} {614} {613} {612} {611} {610} {609} {608} {607} {606} {605} {604} {603} {602} {601} {600} {599} {598} {597} {596} {595} {594} {593} {592} {591} {590} {589} {588} {587} {586} {585} {584} {583} {582} {581} {580} {579} {578} {577} {576} {575} {574} {573} {572} {571} {570} {569} {568} {567} {566} {565} {564} {563} {562} {561} {560} {559} {558} {557} {556} {555} {554} {553} {552} {551} {550} {549} {548} {547} {546} {545} {544} {543} {542} {541} {540} {539} {538} {537} {536} {535} {534} {533} {532} {531} {530} {529} {528} {527} {526} {525} {524} {523} {522} {521} {520} {519} {518} {517} {516} {515} {514} {513} {512} {511} {510} {509} {508} {507} {506} {505} {504} {503} {502} {501} {500} {499} {498} {497} {496} {495} {494} {493} {492} {491} {490} {489} {488} {487} {486} {485} {484} {483} {482} {481} {480} {479} {478} {477} {476} {475} {474} {473} {472} {471} {470} {469} {468} {467} {466} {465} {464} {463} {462} {461} {460} {459} {458} {457} {456} {455} {454} {453} {452} {451} {450} {449} {448} {447} {446} {445} {444} {443} {442} {441} {440} {439} {438} {437} {436} {435} {434} {433} {432} {431} {430} {429} {428} {427} {426} {425} {424} {423} {422} {421} {420} {419} {418} {417} {416} {415} {414} {413} {412} {411} {410} {409} {408} {407} {406} {405} {404} {403} {402} {401} {400} {399} {398} {397} {396} {395} {394} {393} {392} {391} {390} {389} {388} {387} {386} {385} {384} {383} {382} {381} {380} {379} {378} {377} {376} {375} {374} {373} {372} {371} {370} {369} {368} {367} {366} {365} {364} {363} {362} {361} {360} {359} {358} {357} {356} {355} {354} {353} {352} {351} {350} {349} {348} {347} {346} {345} {344} {343} {342} {341} {340} {339} {338} {337} {336} {335} {334} {333} {332} {331} {330} {329} {328} {327} {326} {325} {324} {323} {322} {321} {320} {319} {318} {317} {316} {315} {314} {313} {312} {311} {310} {309} {308} {307} {306} {305} {304} {303} {302} {301} {300} {299} {298} {297} {296} {295} {294} {293} {292} {291} {290} {289} {288} {287} {286} {285} {284} {283} {282} {281} {280} {279} {278} {277} {276} {275} {274} {273} {272} {271} {270} {269} {268} {267} {266} {265} {264} {263} {262} {261} {260} {259} {258} {257} {256} {255} {254} {253} {252} {251} {250} {249} {248} {247} {246} {245} {244} {243} {242} {241} {240} {239} {238} {237} {236} {235} {234} {233} {232} {231} {230} {229} {228} {227} {226} {225} {224} {223} {222} {221} {220} {219} {218} {217} {216} {215} {214} {213} {212} {211} {210} {209} {208} {207} {206} {205} {204} {203} {202} {201} {200} {199} {198} {197} {196} {195} {194} {193} {192} {191} {190} {189} {188} {187} {186} {185} {184} {183} {182} {181} {180} {179} {178} {177} {176} {175} {174} {173} {172} {171} {170} {169} {168} {167} {166} {165} {164} {163} {162} {161} {160} {159} {158} {157} {156} {155} {154} {153} {152} {151} {150} {149} {148} {147} {146} {145} {144} {143} {142} {141} {140} {139} {138} {137} {136} {135} {134} {133} {132} {131} {130} {129} {128} {127} {126} {125} {124} {123} {122} {121} {120} {119} {118} {117} {116} {115} {114} {113} {112} {111} {110} {109} {108} {107} {106} {105} {104} {103} {102} {101} {100} {99} {98} {97} {96} {95} {94} {93} {92} {91} {90} {89} {88} {87} {86} {85} {84} {83} {82} {81} {80} {79} {78} {77} {76} {75} {74} {73} {72} {71} {70} {69} {68} {67} {66} {65} {64} {63} {62} {61} {60} {59} {58} {57} {56} {55} {54} {53} {52} {51} {50} {49} {48} {47} {46} {45} {44} {43} {42} {41} {40} {39} {38} {37} {36} {35} {34} {33} {32} {31} {30} {29} {28} {27} {26} {25} {24} {23} {22} {21} {20} {19} {18} {17} {16} {15} {14} {13} {12} {11} {10} {9} {8} {7} {6} {5} {4} {3} {2} {1}




BZIK.INFO
[ bzik анекдоты ] [ bzik афоризмы ] [ bzik истории ] [ bzik башизмы ] [ bzik ИТ истории ] [ bzik тосты ]
[ bzik неразобранное ] [ bzik прислать свежий ]
BZIK.INFO

админу в мыло