| BZIK.INFO |
|
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} В нашей компании для разных нужд применяются виртуальные машины. Коллега создал набор программ, облегчающих работу с этими машинами. Была устроена презентация новшества для руководства и заинтересованных лиц. Представьте: пафосный конференц-зал, большой экран, в первом ряду высокое руководство, партнёры, гости; сзади толпа сотрудников. Коллега говорит вступительные слова, открывает во весь экран виртуальную машину и запускает под ней что-то из своих разработок. Пауза. Запущенная программа выдаёт сообщение об ошибке и захлопывается. Через несколько секунд виртуальная машина подвисает и тоже закрывается. Ещё несколько секунд консоль управления этими машинами застревает намертво. Бедный сотрудник пытается реанимировать консоль, но на экран массово выпадают уведомления об ошибках разного калибра. В конце концов основная ОС перестаёт отвечать на устройства ввода, жужжит диском и вываливается в синий экран. В конференц-зале — продолжительная немая сцена. Наконец виновник торжества с энтузиазмом произносит: — Ну, отрицательный результат — тоже результат! Сидел я как-то в пятницу на работе. Делать было нечего, а пытливый ум хотел что-нибудь натворить. Окинув взглядом офис, я начал думать, что бы мне оптимизировать. Через всю комнату к столу начальника тянулся телефонный провод, и, проезжая по нему на кресле с колёсиками, можно было без труда навернуть аппарат. Провод был слишком коротким, чтобы проложить его вдоль стены. Сисадмина с обжимкой у нас не было, а в соседних компьютерных лавках телефонного провода длиннее пяти метров не продавали. Скручивать провода — не наш метод! Я стал думать, как бы нарастить провод с минимальными потерями. На бесперебойнике я обнаружил розетку под RJ-45, но что-то мне подсказывало, что туда залезет и телефонный штекер. Влез. Проверил — сигнал нормальный, все отлично. Теперь, когда начальник болтает по телефону, он знает, что его подслушивают два старых UPS, а я могу от своего рабочего места беспрепятственно доезжать до его стола. Если бы программисты были архитекторами, то... 1. В день сдачи здания приезжал бы крупный начальник, говорил бы, что ему не нравится вон то восточное крыло и вопрошал: «А можно ли это переделать за два часа?» 2. Половина зданий была бы похожа на барачные конструкции с кучей подпорок по периметру — время не резиновое. 3. Вторая половина зданий была бы нормальной, но недостроенной. 4. Утвержденный план здания по ходу бы дополнялся пулеметами на крыше (чтобы враги не подступились), легкомысленными статуями на фасаде (чтоб красиво было) и окнами, через которые можно смотреть только изнутри — и вся эта красота за те же деньги, в те же сроки и за три дня до окончания проекта. 5. Если бы легкомысленные статуи и пулеметы уместить в одном здании не получилось бы, начальник заглядывал бы в глаза и спрашивал: «А почему нельзя? А вон я видел вон там вон это вон». 6. «Вон там вон это вон» — здание, возведенное международной строительной компанией при поддержке правительств трёх государств. 7. И вообще, плита перекрытия между этажами — это просто, доступно и легко, почему её поднимают на кране? Вон, египтяне еще до нашей эры пирамиды строили, а это вам не хухры-мухры, давайте-ка пошустрее! 8. А зачем нам эти плиты покупать? Не-е-ет, это очень дорого. Проще выдать задание на создание рукотворных плит силами доблестных архитекторов. А то, ишь, сидят, чего-то рисуют в автокаде, жизни не видели. 9. Если бригада таджикских джамшутов сотворила бы с внутренними помещениями какое-то непотребство, то в этом виноваты были бы снова архитекторы (джамшутам должно быть интуитивно понятно, что ламинат на стены не укладывают и обои на пол не клеят, а у вас подписей на стенах и полу нет). Если в здании после его постройки и сдачи в эксплуатацию случился бы пожар из-за курения в постели пьяного жильца, в этом тоже были бы виноваты архитекторы (а здание у вас не пожароустойчивое). 10. Злые архитекторы по вечерам, проклиная всё на свете, отправлялись бы отдыхать от этого бардака куда-нибудь подальше в надежде, что завтра им не выдадут техзадание на постройку очередного колосса в нереальные сроки. Считаете программистов бездельниками, лентяями и прохиндеями? Зачастую это правда (иначе бы я не потратил четверть часа рабочего времени на написание этой истории). Несмотря на это, уважайте труд программиста — зачастую им ставят задачи из разряда «найти снеговика в Сахаре и привезти его живым», и многие справляются! Вспомнил сон, который мне приснился около года назад. Сижу на работе, беру в руки витую пару (обычно я всегда работаю через wi-fi), чтобы воткнуть ее в свой ноут, касаюсь контактов и чувствую сильный удар током. Через секунду я понимаю, что чувствую каждый бит, проходящий по витой паре, и обрабатываю пакеты на физическом уровне. Ещё через секунду я начинаю сам формировать и отправлять пакеты. Не в силах выпустить кабель из рук, чувствую полное блаженство. Через некоторое время начинаю ловить волны wi-fi, а еще через несколько секунд ломаю силой мысли все доступные мне точки доступа. Бросаю кабель и отправляюсь гулять по городу (почему-то по Москве, хотя живу я в Калининграде). Дошёл до кафе, заказал пива, сижу довольный. Подключился к своим серверам, проверил их состояние, разгрёб почту. Полез на Википедию, за полчаса прочитал всю, но мне было мало. За пятнадцать минут я выучил инглиш и за час перерыл всю Википедию (на этот раз на английском), а потом отправился в гугл пополнять багаж IT-знаний. Через пару-тройку часов я уже чувствовал себя всемогущим гуру, и мне захотелось приключений. Я полез на правительственные и военные ресурсы, нашёл более девяти тысяч критических уязвимостей, но не стал ничего ломать, а разослал уведомления админам. Зазвенел будильник. Я открыл глаза, пару часов лежал в кровати и матерился. Так жалко было терять настоящее админское блаженство... Программил я несколько лет назад в фирме, занимавшейся выпуском приборов с хитрыми датчиками. В одно прекрасное утро главный инженер поставил задачу реализовать в ПО поддержку нескольких датчиков на одном COM-порту. На первый взгляд всё было просто: 1) устанавливаем бит чётности в настройках порта в 1; 2) пишем в порт адрес нужного датчика; 3) устанавливаем бит чётности в настройках порта в 0; 4) пишем в порт команду; 5) читаем ответ. Пишу (очистки буферов и очереди после операции записи в порт, все как положено), компилирую, несу в соседнее здание на флешке инженеру, запускаю на его древнем ноуте с COM-портом — всё работает! Несу датчик к себе, запускаю на своей мощной машине — облом! Вставляю в код проверки результата каждой функции, запускаю, все функции отрабатывают правильно, но датчик молчит. Меняю порты, датчики, провода, машины — везде облом, кроме одного убитого ноутбука. Иду к инженеру в соседнее здание, прошу осциллограф. Получаю отказ: «Это единственный осциллограф с памятью, он мне тут нужен». Не беда! Приношу версию программы с максимально подробным ведением логов, цепляюсь осциллографом на вход микрухи датчика, запускаю, медитирую... Порт открывается, бит чётности становится в 1, идёт адрес, идёт команда, порт закрывается. В логах все солнечно: судя по ним, бит чётности перед отправкой команды таки 0, а вот судя по осциллографу — 1. Естественно, датчик команду не воспринимает. Я больше верю осциллографу. Спрашиваю у гугла, форумов и знакомых спецов — ответа нет. Нервы, психологическое давление со стороны инженера, ожидание Нового года на работе... На третий воскуривания даташита Super-IO-чипа, установленного на «волшебном» ноутбуке, всё становится ясно. Микруха на моей и других новых мамках по каким-то причинам не успевает переключить чётность, а на древнем ноуте успевает благодаря врожденной тормознутости последнего. Загадочным образом при этом API на обеих машинах сообщает, что все переключилось. Вставляю в код задержку в 1 мс — датчик радостно мигает индикаторами на любых компах! Читайте мануалы. В них сила. Я понимаю, техподдержка, конечно, часто вынуждена объяснять всё пользователям в стиле «для даунов». Жаль, что некоторым такой стиль общения въедается насовсем. Итак, техподдержка провайдера, слоганом которого в нашем городе считается «%ПровайдерNet% — инета нет!»: — Техподдержка, здравствуйте. — Добрый день. Следует отработанная в сотнях диалогов схема: — Третий день интернета нет, физический адрес ***, линк горит, шлюз не пингуется. — Ага. А-а-а. Э-э-эм. А там вот лампочка сзади компьютера такая зелёная есть, она горит? Дело было в школе, классе в 10-11. На уроках информатики мы учились программировать на турбо-паскале. Обычно я быстро справлялся с заданиями и большую часть урока страдал разными вариантами ничегонеделания. В один из таких дней я напрограммировал примитивную анимацию интересной части тела с поясняющей надписью из трёх букв. Проверил, сохранил под случайным именем и забыл. Программа всплыла неожиданно спустя месяц. Был такой же урок, только я прохлаждался, сидя за другим компом. Учитель куда-то вышел; одноклассница, ничего не понимающая в предмете, искала в сохранённых файлах уже выполненное задание. Нашла, взглянула на код (исходник был похожим), запустила, тихо пискнула и в шоке чуть не сползла под стол. Я понял, что происходит что-то неординарное, когда вокруг неё столпились все, кто были в классе, издавая утробный гогот. Через несколько секунд анимация закончилась, а в класс вошёл учитель и удивился собравшейся толпе. «Проблемы?» — спросил учитель, запуская программу. Секунд через десять он гневно прервал выполнение и жестоко затёр исходник. С тех пор я никогда не сохраняю результаты ничегонеделания под непонятным именем, хоть меня тогда и не поймали. На какой-то дискете до сих пор жива копия той злополучной программы, только вот флоповодов у меня давно уже нет. Звонит к нам в саппорт клиент из Китая и на ломаном английском пытается описать ошибку. Прошу скопировать и прислать мне сообщение об ошибке. Клиент интересуется, подойдет ли изображение экрана, и отключается. Через некоторое время в почту приходит JPG-файл. Наши чудесные китайцы маркером перерисовали сообщение об ошибке (с границами окна и контролами) на салфетку, отсканировали и отослали нам. Распечатка в рамочке висит у нас в офисе до сих пор. На днях понадобилось мне дотащить до друга системник. Искать пакет или сумку соответствующего размера, естественно, было лень, поэтому я потащил его как было: без боковины, держа за верхнюю стенку корпуса. По пути позвонил друг и попросил купить хлеба. Стою в очереди; люди начинают на меня косо поглядывать. «Это ж надо так жестоко с процессором!» — пробубнила одна тётка. Я достоял, купил буханку хлеба, закинул её в системник и пошёл. Стоящие в очереди провожали меня взглядом, разинув рты. Работаю админом в небольшом офисе — в парке тридцать машин. Интернет подаётся через роутер, который, в свою очередь, раздаёт айпишники. Как-то два компа перестали получать IP, и я отправился разбираться. Когда я в первый раз взглянул на роутер, мне стало не по себе — провода были заботливо запутаны в клубок, а подписано было только два конца. Ни «Андрюша», ни «Лерочка», судя по всему, в офисе уже не работали. Я решил заново подписать все провода, но дёргать кабели по одному и ходить проверять, где потухла сеть, мне было лень. Почесав голову, я родил гениальную идею. Я создал по одному аккаунту аськи на машину и добавил их в свой список контактов. Поглядывая на экран ноутбука, я выдёргивал из свитча по одному концу и смотрел, у кого аська уйдёт в офлайн. Кабели я подписал в считанные минуты, и, конечно же, нашёл парочку повреждённых. {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.INFO |