«Но ведь он работал всё это время!» — с мольбой в голосе произнесла подруга. Мои попытки объяснить ей, что такое ржавчина и как она влияет на чуткую электронику, наткнулись на бескомпромиссное утверждение: «Компот же свежий был!» — и моё мировоззрение рухнуло.
1. Через ExternalInterface вызываем специальную JS-функцию.
2. Специальная JS-функция, пользуясь тем, что работает в IE8, через ActiveX вызывает WScript Shell.
3. WScript Shell, пользуясь тем, что он скрипт-шелл, вызывает скрипт, вызывающий требуемый десктопный клиент с нужными параметрами.
4. Десктопный клиент шлёт запрос на веб-сервис, который предоставляет нужную информацию и обновляет контент нужной директории на сервере.
5. Сервер нашего приложения проверяет обновление директории и, найдя его, производит обработку содержимого. Параллельно с этим приложение, которое мы пишем, стучится на наш сервер и ждёт обновления.
Ржу до слёз. Но и это не всё: дело в том, что сотрудники госструктуры — умелые пользователи Excel, и XML-формат принципиально не подходит для работы аналитического отдела. Ваяем мост «JS — Flash», в JS обращаемся ко всё тому же забытому богом ActiveX и, пользуясь тем, что мы внутри IE8, работаем с XLS через IExcelApplication.
Работаю и плáчу, плáчу и работаю.
Приспичило мне недавно написать приложение для мобильного телефона. Знатоки подсказали, что писать лучше всего на Java, которую я до этого в глаза не видел. Пожаловался коллеге, спросил, сильно ли сложный там синтаксис. Коллега сделал удивлённое лицо:
— Дык ты же на ней уже писал!
Оказалось, пару лет назад я участвовал в онлайн-конкурсе на лучший алгоритм управления космическим корабликом и даже прошёл во второй тур. Да-да, языком программирования там была Java.
Однажды я потерял мать на старом ПК из-за грозы. Сижу и думаю, как же защитить себя от стихии. Входящий от провайдера кабель я завёл, как тут советовали, через медиаконвертеры, везде стоят UPS, но вайфай-точка остаётся угрозой. Как её отключать при грозе, не лазя на антресоли?
Ещё на втором курсе мы писали прогу управления LPT-портом на Паскале. Суть была простой: на определённые пины подавать пять вольт. Но как её запустить на маке? На виндовую тачку ставим прогу, к LPT цепляем реле, через реле пускаем питание вайфай-точки. Создаём bat-файл, «слушающий» текстовик в расшаренной папке. На маке пишем командный файл для консоли, который записывает в текстовик строку «wifi-off». Когда виндокомп, сработав, отключает точку, командник на маке реагирует на «wifi-off-ok» в файле и выплёвывает окошко: «Wi-Fi погашен».
Так прошло недели две-три. Теперь эта связка из двух систем, реле и кипы проводов включает мне чайник, открывает и закрывает шторы на окнах, включает и выключает свет, — и всё по запросу из диалогового окна на маке.
Локальная среда разработки 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 КБ памяти и приставили суровых советских Учителей-Программистов с плёткой, приговаривающих: «Много памяти не бывает! И процессорного времени — тоже!»
Меня с тех пор мучает один вопрос: а что же трибуны кричали футболисту, промазавшему по воротам?
В СУПЕРМАРКЕТЕ: Предъявителю пистолета - скидка 100% в любом отделе.
НА ДВЕРЯХ ВАГОНА-РЕСТОРАНА: Вагон-ресторан не работает. Ближайший вагон-ресторан находится в поезде Санкт-Петербург - Одесса.
В ТУАЛЕТЕ РЕСТОРАНА (НИЗКО): Света, если ты читаешь эти строки, я люблю тебя!
НА ЖОПЕ: Не сюда!
НА ВИДЕОКАССЕТЕ: Фильм защищен от копирования законом.
НАД ДВЕРЬЮ МГУ: Много будешь знать - скоро.
НА ТРЕХКОЛЕСНОМ ВЕЛОСИПЕДЕ: Велосипед борется за звание двухколесного.
В МЕТРО: Дежурный по эскалатору приезжим не дает.
НА ДВЕРЯХ ХИМЧИСТКИ: Вход с мороженым всячески приветствуется.
НА КРЕПОСТИ: Крепость временно неприступна. Попробуйте взять ее позднее.
НА СОКОВЫЖИМАЛКЕ: Не годится для добывания березового сока.
НА ЭЛЕКТРИЧЕСКОМ ЩИТКЕ В ЦЕРКВИ: Внимание! Без бога в сердце не работать!
НА ЭЛЕКТРИЧЕСКОЙ БУДКЕ: Для садо-фазо.
ПРЕДУПРЕЖДАЮЩАЯ НАДПИСЬ НА СТОЛБЕ: Высоко.
В ЗООПАРКЕ: Уважаемые посетители! Будьте осторожны! При несварении эта сторона слона наиболее опасна.
РФ | |
![]() | В 2015 году в России начнется крупнейшая земельная реформа (15.01.2015) Муниципальные земли можно будет купить по цене гораздо ниже рыночной Подробнее... |
![]() | Какие льготы имеют пенсионеры (18.11.2014) На чем удастся сэкономить за счет государства Подробнее... |
Экономика | |
![]() | ЦБ обнародовал три новых сценария развития российской экономики (11.09.2015) Банк России переписал сценарии развития российской экономики. Новый оптимистичный сценарий предполагает цены на нефть на уровне 60 долл./барр. в 2016 году. Подробнее... |
Транспорт | |
![]() | В России запретят продавать подержанные авто с рук (16.04.2015) Купить авто с пробегом в России с рук, возможно, скоро будет нельзя Подробнее... |
Нижний Новгород | |
![]() | Жильцы треснувшего дома на проспекте Ленина в Нижнем Новгороде срочно эвакуированы (13.02.2015) Жители дома уже неоднократно жаловались на трещины, но специалисты отвечали им, что необходимости в эвакуации жильцов нет. Подробнее... |
Экономика | |
![]() | Богатые россияне скупают зарубежную недвижимость ради валютной выручки (09.02.2015) Резко вырос интерес к таким объектам в Западной Европе, как помещения для уличной торговли, офисные помещения, доходные дома Подробнее... |
США | |
![]() | Америка обнародовала подробный план развязывания войны против России (09.02.2015) Старший директор по вопросам прав человека и демократии в Институте Маккейна Дэвид Креймер опубликовал в Wall Strеet Journal подробный план по развязыванию полномасштабной войны против России Подробнее... |
Экономика | |
![]() | Китай готов к валютной войне (09.02.2015) Народный банк Китая принял решение смягчить монетарную политику и сократил норму обязательных резервов. Несколько ранее для поддержки экономического роста Банк Китая понизил ставку по годовым кредитам Подробнее... |





