bash.im ithappens.me zadolba.li
4819

Никитич, открой «личико»!

Какие же интересные эти менеджеры, когда их лишают «контакта»! Админов пинать начинают и всячески ненавидеть. Просят не называть офисным планктоном и во всех бедах мироздания айтишников винят. Только вот пару моментов они забывают.

Админу проще поднять сервер, в котором всё всем разрешено. Настраивать всякие access-листы и выборочно закрывать сайты — дополнительная работа, которая требует дополнительного времени. Думаете, админы из вредности подобным занимаются? Ну так спросите у директора, зачем они это делают. Ведь это по его команде закрыты аськи, скайпы и «контакты». Что, не верится? Надо, чтобы был доступ? Да без проблем. Пишите докладную записку на имя директора, чтобы тот разрешил такому-то человеку открыть доступ к такому-то сервису.

Почта многогиговый архив не пускает? Ну, бывает. Можно разрешить отправку хоть терабайтных писем. Только вот вы так же заставьте сделать админов всех почтовых серверов мира, а потом ещё и разработайте дополнение к протоколу SMTP, снижающее нагрузку на сети при таких объёмах. Действительно, есть же файлообменник. Ну так без проблем: директор, давший команду закрыть этот сервис, легко может дать команду открыть, но только после вашей докладной.

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

Уважаемые менеджеры-секретари и прочие далёкие от IT люди! Админы не безгрешны. Но иногда думайте всё-таки своими мозгами, к кому предъявлять претензии. И если в сети вашей фирмы запрещён «контакт», поверьте: админы это сделали не потому, что вредные, а потому, что ваш любимый начальник Никитич приказал его запретить. Странно, что вы до сих пор стесняетесь узнать у него почему.

4818

Совсем ни к чему

29 ноября 2010, 12:45

Только что установил рекорд: починил интернет секунд за 50.

— У меня компьютер запрашивает логин и пароль.
— Модем USB?
— Нет, Acorp.
— Раньше вводили логин и пароль для подключения?
— Нет.
— Удалите высокоскоростное подключение.
— Спасибо, заработало!

4817

Пирсинг языка

29 ноября 2010, 12:45

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

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

— Это что такое?!
— Да он заколебал: ездил туда-сюда каждые пять минут. А теперь, видишь, перестал.

4816

Аутсорсинг грязной работы

29 ноября 2010, 12:45

Дома у меня стоит Mac Pro, на рабочей машине крутится Дебиан, винды уже давно не мучал, но дома ещё после первой работы поселилась публичная файлпомойка под 2003-й, рядом стоят роутер и вайфай-точка.

Однажды я потерял мать на старом ПК из-за грозы. Сижу и думаю, как же защитить себя от стихии. Входящий от провайдера кабель я завёл, как тут советовали, через медиаконвертеры, везде стоят UPS, но вайфай-точка остаётся угрозой. Как её отключать при грозе, не лазя на антресоли?

Ещё на втором курсе мы писали прогу управления LPT-портом на Паскале. Суть была простой: на определённые пины подавать пять вольт. Но как её запустить на маке? На виндовую тачку ставим прогу, к LPT цепляем реле, через реле пускаем питание вайфай-точки. Создаём bat-файл, «слушающий» текстовик в расшаренной папке. На маке пишем командный файл для консоли, который записывает в текстовик строку «wifi-off». Когда виндокомп, сработав, отключает точку, командник на маке реагирует на «wifi-off-ok» в файле и выплёвывает окошко: «Wi-Fi погашен».

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

4815

Самому-то не совестно?

29 ноября 2010, 11:00

Одногруппник попросил помочь с расчётами по квантовой электронике. Показывает он мне запущенный Mathcad, в котором набрана система дифференциальных уравнений, а команда solve подсвечена красным — ошибка, мол. Нажимаю «Подробнее об ошибке» и получаю ответ: «Плохое решение!» Совестно программе стало от того, что решение плохое получилось, вот и покраснела.

4814

Из антимонопольных закромов

29 ноября 2010, 11:00

Монтажник общается с клиентом по телефону:

— Вы понимаете, мы не имеем права пилить ящики этого провайдера!

Подумав:
— А если и пилить, то у нас болгарки всё равно нет.

Подумав:
— Вообще-то есть болгарка, только дисков нема.

Подумав:
— Хотя сейчас что-нибудь придумаем!

4813

Тяжело в учении, тяжело в бою

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

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

* * *

Переменные могут состоять либо из одной буквы, либо из одной буквы и цифры. «ts» или «t00» — ошибка синтаксиса.

* * *

Есть вот такие строки кода:
t1 = ET1/10 − t0;
output(#0, t1);

Выполняются они по факту в такой последовательности:
t1 = ET1/10;
output(#0, t1);
t1 = t1 − t0;
output(#0, t1);

* * *

ET1/10 ≠ ET1*0,1. После обнаружения этого бага я вышел из аудитории и побился об стены. Программа вела себя по-разному: то замедляла время в десять раз, то считала время как дробную величину, а не целую.

* * *

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

* * *

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

4812

Скан с улыбкой

Потребовалось реализовать через нашу программу сканирование документов для их последующей отправки в архив. По требованиям заказчиков сделали одну большую кнопку «Сканировать».

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

4811

Показательная порка цифровых мародёров

Пожалуй, мало кто из относящих себя к IT не слышал о PHP. Лёгкость в освоении и способность прощать некритические ошибки сыграла с этим языком (или интерпретатором, как хотите) злую шутку: теперь все, кто смог написать «Hello World», могут гордо именовать себя Программистами, хотя и до кодеров им далеко. Вот и у нас в конторе есть такие экземпляры, обслуживающие корпоративный сайт-портал и несколько внутренних БД с веб-мордами. Итак, «вредные советы».

Локальная среда разработки Apache + MySQL + PHP для тестирования скриптов — излишество. Открываем файл прямо на FTP, редактируем, сохраняем. Если в код закралась ошибка, её будет видно. Всем и сразу. Подумаешь, несчастье: «HTTP 500» или «call to undefined function» посреди рабочего процесса у двадцати человек одновременно.

Базы данных и таблицы в них создаются в очень интересных комбинациях кодировок: MySQL запущен в Latin1, БД — в UTF-8, в которой таблица в CP1251, в которой поля в UTF-8 (как?!) хранят тексты опять же в CP1251. При этом взывающий к данным скрипт содержит ряд конструкций по конвертированию из одной кодировки в другую. Воркэраунд, блин.

Ах да, ложка мёда: отдельного юзера для пятка внутренних баз всё же завели... без пароля. Мы же изнутри к базе подключаемся! Если у вас входная дверь закрыта, то сейф можно не запирать, ага.

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

Если вдруг вам понадобится логин авторизовавшегося пользователя перевести в человекопонятное ФИО, то запрашивайте у контроллера домена подробную информацию сразу обо всех пользователях, включая все атрибуты. Подумаешь, надо распарсить массив на мегабайт-другой, — сервер не обеднеет! То, что у пользователей меняются атрибуты примерно каждое никогда, а количество изменяется от силы раз в месяц, навело бы на мысль о кешировании готового массива, но тут ведь думать надо. Но есть же сервер с гигом памяти — вот он пусть и думает, у него мозгов больше.

Разбирая вышеописанный массив, можно не заботиться о том, что индексом служит переменная, которая может быть NULL. Был бы C или какой другой язык — «access violation» или «index out of bound» гарантирован, но PHP это прощает, хотя и генерирует ошибку типа E_NOTICE: мол, обратите внимание. Отключаем показ ошибок — делов-то!

Человека, посвятившего программированию (в том числе на PHP) полтора десятка лет и рвавшего ягодицы ради доведения кода и вёрстки до стандартов, всё это заставляет просыпаться в холодном поту и идти за валерьянкой. После этого снится, что всех этих цифровых мародёров, разграбляющих системные ресурсы, посадили за «Поиск 8086» с 64 КБ памяти и приставили суровых советских Учителей-Программистов с плёткой, приговаривающих: «Много памяти не бывает! И процессорного времени — тоже!»