bash.im ithappens.me zadolba.li
11522

Работа-работа, перейди на Федота

18 октября 2013, 07:15

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

За всё время работы по пальцам одной руки можно пересчитать количество компьютеров, на которых я не нашёл нарушений, и все эти компьютеры были настроены с довольно ограниченным доступом. Доменные пользователи без прав администратора с софтом, необходимым исключительно для работы. Для каждого юзера в определённом количестве выделялся интернет-трафик через корпоративный прокси. Не было стандартных кодеков, игр, проигрывателей, флеш-плеера в браузере. В общем, без прав администратора можно было только работать на том, что установлено. Хотя некоторые умудрялись проносить мелкие игры, не требующие установки…

С другими компьютерами была совсем беда. Почти на всех были права администратора, стояли игры, из каждого второго торчал USB-модем, про видео и музыку развлекательного характера и говорить не стоит.

Вот тут и возникает вопрос: кто из указанных выше пользователей работал, а кто просто проводил время на работе? Как по мне, так ответ очевиден.

Желаю всем взаимопонимания между ПК, рядовыми пользователями и сотрудниками, обеспечивающими работоспособность корпоративных компьютеров.

11521

В погоне за тактами

17 октября 2013, 07:45

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

Изначально этот программатор разрабатывался как проект с открытым кодом и идеологией «максимальные возможности с как можно более простым для повторения аппаратным обеспечением». Следствием такого подхода стали использование порта LPT для подключения к PC, реализация устройства на микросхемах низкой степени интеграции (в основном регистры и инверторы). Вся логика управления была сосредоточена в софте. Как и случается с многими опенсорс-проектами, как только замаячила перспектива возможных доходов, всё стало потихоньку засекречиваться: сначала перестали выкладывать исходники софта, затем в софт добавили защиту от дизассемблирования и трассировки, а потом и аппаратное обеспечение для реализации подключения через USB переехало на микроконтроллер, прошивки для которого в открытом доступе не появлялись.

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

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

Процедуры чтения и стирания были реализованы без особых затруднений, а вот на самом главном — записи — всё чуть не рухнуло. Проблема была в том, что данные для записи надо было успевать отправлять в жёстко ограниченный промежуток времени — 200 мкс. Такой расторопности не способствовали ни Windows с её многозадачностью, ни мой кривой код на Delphi (скорее всего, в большей степени). Доставляло и то, что если снизить искусственные временные задержки между формированием импульсов, то их не успевала отрабатывать логика LPT-порта и программатора.

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

Первоначальный вариант алгоритма формирования адреса тормозил из-за использования операций возведения в степень и округления (с его помощью удалось обойти часть ограничений на битовую арифметику). Первая пришедшая в голову идея: перенести часть кода в ASM-вставку и использовать для возведения двойки в нужную степень команду FPU FSCALE. Какой-то выигрыш это дало, но временной интервал в 200 мкс продолжал нарушался с завидной регулярностью. Когда до меня дошло, что во вставке мне никто не мешает использовать операции сдвига над DWORD, удалось полностью избавиться от операции возведения в степень, но выигрыш по времени всё равно был недостаточным. Более-менее приемлемый результат удалось получить после шести переписываний куска кода с нуля. К этому времени за пределами ASM-вставки остались только вызовы процедур формирования импульсов и временных задержек, полностью исчезли операции возведения в степень, сдвиг DWORD тоже оказался ненужным, везде, где можно, использовались предварительно рассчитанные константы. Количество ошибок, возникающих из-за нарушения предельного интервала, свелось к минимуму, что позволяло реализовать коррекцию неправильно записанных блоков при контрольном чтении. В принципе, на этом можно было бы и остановиться, так как программа уже позволяла решить поставленную задачу, но мне захотелось сделать всё красиво.

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

Первый же запуск обновлённой версии программы отправил WinXP в синий экран. Решив, что это была случайность, запустил программу снова. На этот раз результатом стал не только синий экран, но и сброс настроек BIOS. При пошаговой отладке выяснилось, что при первом вызове процедуры в функцию формирования импульсов передаются нормальные параметры, а при последующих вместо текущего адреса LPT-порта передаются абсолютно произвольные данные. Причина ошибки оказалась проста: желая освободить EBX для собственных нужд, я push’нул его содержимое в стек. При первом вызове процедуры формирования адреса указатель базы стека (который по умолчанию хранится в EBX) совершенно случайно оказался равен 378h, смещение на которое я и подсмотрел. При последующих вызовах база стека была уже другая, и вместо LPT-порта моя программа слала байты куда придётся.

После того как всё было отлажено и результат меня устроил (хотя полностью от процедуры контрольного чтения отказаться не удалось), я решил сравнить производительность своей и оригинальной софтины. Нашёл микросхему со схожим алгоритмом записи, но поддерживаемую оригинальной утилитой, и сравнил с помощью осциллографа временные интервалы формируемых сигналов. Результат ещё раз напомил мне о том, почему я перебежал из программистов в железячники: оригинальная софтина работала на 20–30 процентов быстрее моей. Могу лишь предположить, что вместо PerformanceCounter в оригинальной утилите используется какой-то ещё более точный таймер.

11520

Новый chmod от «Шанель»

17 октября 2013, 07:45

Еду в метро, расслабленно сканируя взглядом вагон. Взгляд цепляется за дамскую сумочку с эмблемой: фигурные буквы DIR на фоне круга. С интересом продолжаю изучение объекта. Оказывается, на каждой пряжке к тому же выгравировано «CD»! Ничего себе, думаю. Вроде сумочка на вид гламурная, под стать хозяйке — к чему бы такая отсылка к консольным командам?..

Потом доходит: Кристиан это. Диор. Сокращённо и стилизовано.

11519

Не врубаешься?

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

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

Давайте уже различать паранойю псевдо-IT и разумные ограничения. Кроме шуток: работал в фирме, где у рядовых сотрудников была запрещена альбомная печать. Это вообще как?!

11518

Опера: последний акт

17 октября 2013, 07:15

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

Квадратный интерфейс. Ладно, все эти плиточные веяния затронули многих. Значок без намёка на объём. Да, по нему как утюгом прошлись. Радостно вспоминаются времена, когда каждая иконка была не то чтобы произведением искусства, но дизайнеры всё-таки не зря ели свой хлеб…

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

Гибкие настройки. Аж целых три с половиной пункта в стиле «что делать при открытии браузера».

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

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

11517

И кому какое дело, что ширинка на болтах?

17 октября 2013, 07:15

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

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

11516

Сила в солидарности

16 октября 2013, 07:45

Ай-яй-яй, какие бедные пользователи! Блин, если открыть вообще всё, что просите, потом начинается…

Диалоги не влезают? Правильно: сами просили диалоги поинформативнее и без перелистывания закладок. Просили? Получите. Правда, при разрешении 800×600 диалог не влезет ни в какую, но кого это волнует на стадии ТЗ?

Автокадовские файлы отображаются у каждого по-своему? Ага, кому-то интересен тёмный фон, кому-то — светлый. Ну, до кучи ещё тройка экстремалов с ярко-синим, зелёным и розовым фоном. И у каждого свои цвета, свои слои, свои настройки печати. А файлы-то должны выглядеть и выводиться на бумагу одинаково независимо ни от чего. Давайте сюда ещё приплюсуем Эксель с его сводными таблицами или зафиксированными областями. А ширина и высота фиксированных областей такова, что вынужденно занимает примерно 60% экрана при разрешении 1280×1024. Ах, у тебя 640×480, потому что тебе так удобно? Не видно ни фига? Давай, ломись к автору файла, разбирайся, что и как делать.

Понравилось? А теперь умножьте на десять. Надолго хватит терпения объяснять, что все эти вопросы уже не к IT/САПР, а к авторам файлов и тем, кто составлял задания на диалоги в той же 1С?

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

Но это же работа, за которую никто не заплатит. Намного проще стонать и вешать всех собак на IT, чем узнавать, почему запрет поставлен и какие его реальные причины.

11515

Яблочко на экранчике с вырвиглазной каёмочкой

16 октября 2013, 07:15

Пришла осень, а с ней — iOS 7 и новая линейка айзвонилок. Это и стало для меня причиной смены пятого айфона на… нет, не 5S или, упаси боже, 5C, а на 920-ю Нокию.

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

Раньше я только читал об «огрызках», которые с пеной у рта доказывают, что Apple — самая лучшая компания в мире, которая производит безупречные аппараты. Если честно, не особо верил, что такие есть в природе. Однако в бедном консультанте изменилось всё: от спокойного и рассудительного молодого человека не осталось ничего. Появился странный блеск в глазах, нервное подёргивание, изменился тембр голоса. Он начал доказывать, что я абсолютно неправ и ничего не понимаю. Что iOS лидирует по количеству и качеству приложений, без которых не может жить не один человек на планете. Что у айфонов лучшие в мире дисплеи, радиомодули, камера и самая плотная батарея. На все мои доводы (в основном, конечно, о том, что iOS 7 не понравилась, откат делать не вижу смысла, так как не хочу дальше идти по такому пути эволюции вместе с Apple) я не получал ни одного вразумительного ответа и видел только тот самый нездоровый блеск в глазах. Ну да ладно. Купив телефон, я в смешанных чувствах вышел из магазина и поехал домой осваивать новый девайс.

Итак, сейчас всё приведено в соответствие с моими предпочтениям и видением своего мобильного устройства. Всё органично вписывается в мою маленькую домашнюю экосистемку: ПК на Win7, планшет на Win8 Pro (с дуалбутом на Андроид 4.2.2 — так, на всякий), NAS и телевизор на 47″. Мне комфортно: всё живёт в синергии и позволяет управлять чем угодно с чего угодно практически из любого места.

Некоторые знакомые с пеной у рта говорят, что я неправ. Хвалят iCloud (который даже фотографии нормально выгрузить не позволяет, а однажды внезапно убил годовой фотоархив), при этом называя SkyDrive «тупой и неинтеллектуальной облачной системой». Советуют сменить планшет на макбук, а роутер на Time Capsule («У тебя рядом с роутером лежит USB-HDD, это же некрасиво!»), не зная, как отвратительно это работает. Конечно же, говорят, что App Store — лучшее, что случалось в мобильной индустрии (конечно, ведь количество — это новое качество, правда?), не думая о том, что человека может устраивать десяток-другой нужных ему приложений. Хвалят железо, даже не понимая, что хвалят. Люто и бешено льют слюни на 5S, называя его «революцией в мире мобильных устройств», игнорируя всё, что происходило в этом самом мире последние года полтора.

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

Мне вот только интересно: это я последние полтора года, пока был на «яблоке», не замечал, что мир сошёл с ума, или так было всегда?

11514

Обнять и понять

16 октября 2013, 07:15

Два года работал на заводе. Обязанности — чтобы всё лазерное и ксерокопировальное печатало-работало. Парк — под сотню копиров, большинство А3, и принтеров лазерных под полтысячи. Работа в тепличных условиях: хожу по территории и чиню/заправляю всё на месте. Надо мной только директор (он в другом городе), а заводских я могу просто вежливо выслушать. И вообще, я очень вредное существо, а так как на весь завод я один, ссориться не рекомендуется.

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

— Принтер косо печатает!

— Выставьте ограничители правильно. Да, сейчас, при мне.

— А как близко их к бумаге ставить?

— Ограничители должны обнимать бумагу, как любимую девушку: чтобы двинуться могла, но не хотела.

Эту формулировку понимали все.

Мне за это не платили. «Тогда зачем?» — спросите вы. Когда человек понимает, что он сделал неправильно и как надо работать правильно, он перестаёт ломать технику и экономит мне время и нервы, да и уважения прибавляется.

Спокойствия всем и грамотных пользователей.