bash.im ithappens.me zadolba.li
7084

25-й, но не кадр

25 августа 2011, 10:00

Контора занимается аутсорсингом. Наблюдаю диалог ведущего программиста проекта с младшим коллегой:

— Саня, пропиши часы для логов.
— Какие часы?
— Ну, обычные человеческие суточные часы. От 0 часов до 24.

Проходит два дня, тестирую логи. 0:00, 1:00… 23:00, 24:00.

В качестве наказания Саня вторую неделю ходит с беджиком: «Привет, земляне!»

7083

Сдадим на удобрения

25 августа 2011, 10:00

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

Название документа — «Акт дефектации». Конечно, первая мысль — прочесть без буквы «Т» и поржать. А потом призадумался я: смысл ведь совпадает. Действительно, это документ об официальном признании оборудования говном.

Велик и могуч русский язык.

7082

Практик-самоучка наведёт коннект

25 августа 2011, 08:00

Эникею в общаге. Большинство жильцов — девушки-биологи. Почти каждый день кто-то заходит и спрашивает всякую ерунду: где выставляются настройки сети (распечатал и повесил на видном месте), какая версия фотошопа лучше, почему может не включаться ноутбук?

Со временем я придумал универсальный ответ на все вопросы: «Я не знаю теоретических основ чёрной магии, я просто пользуюсь ей».

7081

Наши пингвинутые друзья

25 августа 2011, 08:00

Мануал по настройке вайфая на ноутбуке в нашем универе.

Windows ХР — пять страниц с рисунками и подробным пояснением.
Windows Vista/7 — семь страниц с рисунками и очень подробным пояснением.
Linux — только одна фраза: «Если на свой компьютер вы сумели поставить операционную систему семейства Linux, то мы не сомневаемся, что и с настройкой Wi-Fi проблем у вас не возникнет!»

7080

Затычка по-Гоблински

24 августа 2011, 11:45

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

7079

Секретарша Лентопротяжкина

24 августа 2011, 11:45

— Зайди к нам, документы не печатаются.

По пути к рабочему месту сотрудника я прокручивал в голове возможные варианты: чернила кончились, бумага замялась, проблемы с дровами?

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

7078

Powered by magic

24 августа 2011, 11:45

Пишу проект на Delphi. В работе использую нестандартные компоненты из набора AlphaControls. Есть там такой симпатичный TFramebar — панель со сворачивающимися вкладками, на которых размещаются фреймы. И удобно, и красиво.

И было бы всё тихо-мирно, не понадобись мне воплотить следующую идею. Есть два фрейма, реализующих пользовательские интерфейсы для поиска и сортировки в БД. Эти фреймы помещаются на вкладки упомянутого фреймбара. Получается очень кошерная менюшка для манипуляции данными. А в приложении несколько таблиц, и каждой такую менюшку нужно прикрутить. Как это сделать? Ну конечно — кинуть саму менюшку на новый фрейм и разместить его экземпляры везде, где понадобится. Получится фрейм, на котором находится контейнер фреймов, в котором лежит два других фрейма (фрейм на фрейме и фреймом погоняет), но выглядит идея здраво. Начинаю воплощать.

Оказалось, что фреймы на фреймбарe нельзя просто взять и разместить (как, например, на привычном TPageControl — накидал, и готово). Здесь у каждой панельки прописывается событие OnFrameCreate, в котором нужно указать тип создаваемого фрейма. Только в runtime экземпляр будет создан и размещён на вкладке.

И вот тут-то подкрался капец. Привычный механизм наследования, когда потомок имеет доступ к свойствам и методам предка, у этого компонента почему-то сбойнул. То есть экземпляры моего фреймоконтейнера понятия не имели, что где-то там, в родительском модуле, у TFramebar прописаны обработчики и типы для фреймов на вкладках. При запуске я лицезрел пустые панельки с надписью: «Frame creation event has not been defined».

Когда гугление, медитация и маты не помогли, в дело вступил метод научного тыка. Я попробовал создать обработчик уже для экземпляра фрейма-контейнера. Он создался, при этом обязательный в таких случаях вызов соответствующей процедуры из родительского класса в нём не прописался, что подтвердило предположение о том, что этот потомок своих предков не помнит. Попробовал прописать вызов вручную — куда там, не знает оно о его существовании. Ладно, тупо скопировал код из родительского обработчика — при запуске словил невнятный эксепшн. Убрал обработчик — снова «has not been defined». Плюнул, создал событие обратно, поставил внутри комментарий (чтобы Delphi не удаляла пустой обработчик) и запустил. Моё долгожданное меню сортировки смотрело на меня со вкладки контейнера.

Я не поверил. Повторил все пройденные пункты — та же фигня. Создал пустой обработчик с одним только комментарием внутри для второй вкладки — менюшка поиска встала в строй. Минут пять я медитировал на это дело. Потом вздохнул — и пошёл лепить эти костыли во всех экземплярах контейнера.

Теперь в нескольких модулях красуются потрясающие по глубине и содержанию фрагменты вида:

{ powered by magic }

procedure TfrQuoteView.sfrmbrDBmenuItems0CreateFrame(Sender: TObject; var Frame: TCustomFrame);
begin
//
end;

procedure TfrQuoteView.sfrmbrDBmenuItems0FrameDestroy(Sender: TObject; var Frame: TCustomFrame; var CanDestroy: Boolean);
begin
//
end;

И такая пара для каждой вкладки контейнера.

Не раз уже сталкивался, казалось бы, с мистическими глюками в работе, но причина всё же находилась. А здесь — увы… Powered by magic, в общем.

7077

Управление рисками, или Доля правды в шутке

24 августа 2011, 10:00

Знаете, есть такая категория фантазёров — большие дети, которым кажется, что если они расскажут всем, как «на соседней улице был пожар, а я полез по карнизу и спас маленькую девочку», то все вокруг восхищённо ахнут, как родители и младшие друзья в детстве. Конечно же, ахают далеко не всегда: взрослые люди знают цену детским фантазиям. Но на выручку фантазёрам приходит тот немаловажный факт, что можно рассказать байку о том, в чём потенциальный собеседник несведущ. Втирать, что ты в детстве задушил акулу или изобрёл вечный двигатель, вот только чертёж потерял, глупо. А вот если рассказать, что ты — потомок князей, а твоя бабушка носила фамилию Романова, то какие-нибудь впечатлительные барышни могут ведь и глазки от восхищения закатить.

Казалось бы, в невинных фантазиях больших детей ничего не может серьёзно задолбать. Ну, треплет кто-то языком о том, что его дядя лично принимал роды у лабрадора премьер-министра, пока тот утирал слёзы умиления, или о том, что лично наблюдал в телескоп НЛО на фоне Марса, — и пусть. Ан нет: иногда детские попытки привлечения внимания заставляют напрягаться множество людей.

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

Ай, молодец, деточка. Фильм он посмотрел, конечно же. В режиме слайд-шоу, наверное, смотрелось-то?

Можно долго рассуждать о системах безопасности процессинговых систем. Есть на российском рынке и отвратительно реализованные, и вполне безопасные. Но даже если и допустить, что наш фантазёр за минуту получил администраторский доступ, что не было на терминале ни «белого списка» программ, ни ограничения доступа к ресурсам, одного фактора наш чудо-хакер не смог бы избежать никак: никто и никогда не тянет выделенную высокоскоростную линию к терминалам оплаты. В них стоит до обидного банальный GPRS-модем, и часто наблюдаемая снаружи терминала антеннка принадлежит ему, а вовсе не вайфай-адаптеру. Высокая скорость терминалу не нужна, а GPRS позволяет ставить терминал где угодно, не оглядываясь на возможность протягивания Ethernet, пары для ADSL или на наличие неподалёку вайфай-хотспота. Ну, а уместить смотрибельный видеопоток в GPRS-канал вряд ли удалось бы и самому Нео, не только его подражателю-врунишке.

Возможно, вам интересно, почему же я так раздражён великовозрастным дитятком, решившим самоутвердиться в интернете?

Очень просто. Я — тот дядька, который в результате публикации вышеупомянутой истории долго и терпеливо рассказывал другим дядькам, очень богатым и важным, а также совершенно не разбирающимся в IT вообще и IT-безопасности в частности, что детское хвастовство, где бы и в каком бы тоне оно ни было опубликовано, остаётся детским хвастовством, то есть ложью от начала до конца. Показывал. Демонстрировал. Убеждал. Очень устал от этого утомительного занятия.

Пользователи терминалов оплаты, банкоматов и прочих деньговыдающих или деньгопринимающих машин! Помните: если вы обнаружите, что железяка, которой вы привыкли пользоваться, вдруг начала брать либо увеличила существующую комиссию, а то и вовсе пропала, знайте: это реакция рынка на возросшие риски. Возросшие не с точки зрения отделов ИБ, вовсе нет. Риски возросли с точки зрения ничего не понимающих в IT дядек, которых успешно напугала очередная детская шуточка.

7076

Не спасёт ни чёрт, ни пингвин

Когда-то я работал в крупной компании, в которой были на редкость тупые админы. Абсолютно классические бараны: уделяли массу времени издевательству над сотрудниками, предпочитавшими в Проводнике видеть файлы иконками, а не списком, объясняли, что списком удобнее, и, не спрашивая, переключали настройки. Докапывались с этой фигнёй и ко мне. Были посланы и начали меленько гадить.

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

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

Через час возвращается и достаёт из беленького конвертика диск, поперёк которого маркером написано: «Линекс».