Частенько возникает необходимость поадминить удаленную юзерскую машину, которая в данный момент выключена. Раньше приходилось просто время от времени пинговать, чтобы отследить, когда машина появится в сети. Сейчас написал не шибко большой скрипт, выполняющий эту работу за меня. Скрипт написан на Perl и использует sqlite и libnotify. Сам скрипт и пример использования под катом.
Виндобред
Февраль 8, 2010Как же достала меня майкрософт и винда с их дебильными самобытными “стандартами”. У нас корпоративный стандарт – WinXP и почтовый клиент Outlook Express. Ставим пакет офис 2003 или 2007 – нате, распишитесь. Теперь клиент по умолчанию перебит на офисный Outlook. Для всех юзерских профилей. Ну да в принципе все привыкли к тому, что МС всегда себя считают единственными в мире ПО. Идем в юзерском профиле в настройку и меняем клиента почты обратно на OE. Винда охотно соглашается. Но не тут то было. Пока у админа в профиле стоит клиент почты Outlook – он будет у всех юзеров на машине.
Скажите, а нахрена тогда вообще раздельные профили для юзеров придумали? Я думал для хранения персональных настроек, в том числе и предпочтений в плане используемого ПО.
Керберос плющит
Январь 21, 2010Керберос из нестабильной дебиановской ветки уже вторую неделю плющит. В стейбле лежит версия 1.6, в тестинг/анстейбле 1.8-альфа. Так вот эта альфа нивкакую не хочет стыковаться с виндосетью. Winbind не может авторизоваться в домене. Из-за этого файловый сервак с привязкой прав из домена не может выполнять свои обязанности. Причем регулярно появляются апдейты, но косяк не исчезает.
Откатил на 1.6 и захолдил до лучших времен.
А ларчик просто открывался
Январь 20, 2010Некоторое время назад начал сталкиваться с проблемой. Суть проблемы: на удаленной машине стоит некая софтина, запущенная в screen’e. К машине подключаюсь через ssh. При попытке воздействия на софтину комбинацией клавиш Ctrl-s, сессия ssh вешалась намертво. Спасало лишь убиение ssh из соседней консоли. При этом удаленная софтина так и не получала комбинацию клавиш. Приходилось лезть к ней через веб-морду.
Сегодня в очередной раз обломашись, решил наконец нагуглить решение. Оно пришло в первых же ссылках. Корень зла оказался в программном управлении потоком. Комбинация Ctrl-s останавливает поток. Разморозить его обратно поможет комбинация Ctrl-q.
Но при этом до удаленной стороны так и не дойдет, что какая-то клавиша была нажата – управляющее воздействие не будет воспринято софтом. Чтобы решить проблему, надо после подключения к удаленной машине выполнить команду:
stty -ixon -ixoff
Я прописал эту строчку в bashrc на удаленной машине, для автоматического срабатывания. Проблема решена.
Пример настройки Linux-based точки доступа WiFi на дешевой карте
Январь 13, 2010Еще осенью получил в наследство старый системник на базе Pentium III. Сделал из системника домашний сервер-роутер под Debian Linux для раздачи инета, качания торрентов и т.п. В том числе, хотелось раздавать по квартире беспроводную сеть. Для этого была куплена недорогая вайфай-карта от D-Link на базе чипа Ralink RT2561/R61. Но настройка оказалась не такой тривиальной, как хотелось.
Этика и качество программирования
Декабрь 8, 2009Периодически приходится править чужие исходники. Как правило, это работы людей, которые либо уже уволились, либо заняты в данный момент какой-то приоритетной работой. Хочется поделиться с читателями накипевшим – такого насмотришься, зла не хватает.
Ладно, черт бы с ними комментариями в коде. Сам пишу без комментариев, лишь потом, позже проставляю краткие комментарии о назначении того или иного куска кода. Я готов даже простить коллегам кривое форматирование кода – не у всех есть чувство эстетики программирования, когда код приятно читать.
Что бесит меня больше всего, так это абсолютно безымянные переменные и контролы. За что отвечает Edit19, кто-нибудь может сходу сказать? Правильно, надо отвлекаться, лезть на форму, читать подпись к едиту. А подписи еще не всегда бывают информативны в плане функционала, ибо их часто придумывают пользователи. Это очень неприятно, неудобно, некрасиво. Ну неужели самому не приятно назвать переменную или переименовать контрол во что-нибудь осмысленное? И самому потом же проще будет вспоминать, чего понаписал.
И еще один момент, который пострашнее всякого неэтичного программирования. Отношение к разработке, как к халтуре. Халтурное проектирование БД. Халтурное программирование. Входные данные нигде и никак не проверяются. Просто берется текст из едита и пихается в базу – пофигу, текстовое поле в базе или числовое. В итоге процесс вода данных сопровождается букетом исключений. Но самый прикол начинается, когда я беру такую разработку и начинаю прикручивать к ней отчет. Я то предполагаю, что в базе лежат уже валидные данные.А потом юзер звонит и говорит что мой отчет неправильно работает,. и мы начинаем сидеть вместе с юзером по уши в отладчике и в SQL, ищем косяки в данных.
Вот мне было бы стыдно сдавать проекты с таким качеством. Это просто непрофессионально. А между прочим. товарищи, пишущие такое с пафосом рассказывают, что они закончили МГТУ – это, мол, не то что там какой-то МаГУ,. Вот в горном, мол, готовят настоящих квалифицированных программистов, а не учителей информатики.
Обидно за себя, за отдел, за профессию.
Подвижки в проекте АРМ
Ноябрь 16, 2009Наконец все сдивнулось с мертвой точки в проекте “АРМ руководителя”. Как уже писалось, мне поручили развитие и поддержку этого проекта. И задача номер один – разработать отчет “Суточный рапорт”. Этот отчет уже работает – разработан и функционирует внутри КИС “Галактика” (на языке Атлантис или VIP). Для его формирования нужно произвести достаточно много настроечных телодвижений – отчет достаточно нетривиальный и одним селектом его не сформировать. Суть отчета вот в чем. Собираются все накладные за заданный период времени (как правило, за прошедшие сутки). Строчки из этих накладных по большому количеству правил разбираются и раскидываются по дереву аналитик. Отчет показывает, как отработал завод по отдельным характеристикам относительно плана. Это вкратце.
Полезность отчета для топ-менеджера очевидна. Но существующая разработка совсем не годится для использования руководителями.
Во-первых, топ-менеджер не хочет заморачиваться с изучением КИС. Ему нужно нажать на кнопку и получить информацию. Это правильно.
Во-вторых, по той же причине нужно переработать интерфейс. Руководителю не интересны десятки настроек отчета. Максимум – период времени.
В-третьих, нужна интеграция с уже существующим АРМом, а это Java EE. Атлантис нам совершенно не подходит.
Итак, я начал разрабатывать отчет практически с нуля. Самое неудобное заключается в том, что никто на заводе не в состоянии дать более-менее детальное и точное опеределение, что требуется от отчета. Разработкой под КИС занимался человек, который сейчас пытается меня консультировать. Поскольку в перспективе есть вероятность перехода на новую версию КИС, где можно будет пользоваться процедурами на PL/SQL, решили сделать общий пакет процедур, который в будущем можно будет использовать и из КИС. Но сказывается разница в подходах. У его разработки нет интерактивности. Настроил отчет, нажал на кнопку, получил на выходе отчет и система забывает о том, что формировала его. У меня ситуация иная. Руководитель должен иметь возможность по щелчку мыши углубляться в данные, все больше увеличивая детализацию отчета. Это означает, что система должна сохранять свое состояние между запросами. При этом стоит учесть, что системой сможет воспользоваться несколько человек одновременно.
Как все это увязать – думаем сейчас напару. Радует, что работа сдвинулась с мертвой точки.
Модификация скрипта NetMon
Октябрь 14, 2009Сегодня с утра модифицировал свой скрипт мониторинга сети. Что сделал:
- Увеличил число посылаемых пингов до 5
- Добавил вывод сообщений о качестве связи – не только UP/DOWN а еще и количество удачных пингов
Чем это полезно. Сегодня с утра лежал один из узлов. Причем не просто лежал, а вроде как бы работал, но с большими потерями на линке. Старая версия скрипта не детектила такое состояние. А было бы полезно узать, в какой момент начались проблемы. Теперь эта информация пишется в лог и выводится через libnotify.
Особенности LVM в Linux и AIX
Октябрь 13, 2009Никогда до прошлой зимы не сталкивлся с необходимостью поднимать софтовый рейд в линуксе. Когда делали оракловый сервер под КИС, изучали ОС IBM AIX 5L. Так вот там в составе ОС, есть такое замечательное средство – LVM, позволяющее управлять томами, в том числе создавать программные зеркала, страйпы и т.п. Другое дело, что при использовании внешних хранилищ, вроде DS4700, надобность в софтовом рейде отпадает. Зеркалирование настраивается средствами системы хранения.
И вот той зимой понадобилось создать сервер для резервных копий. В качестве ОС был выбран Debian GNU/Linux 5.0, только вышедший. Задачка в общем то казалась не очень сложной, тем более, что в линуксе тоже есть LVM. Но не тут то было. Создал группу томов, добавил физические тома, начал создавать логические с зеркалированием. Тут то и оказалось, что LVM для использования зеркал требуется журнал.Для этих нужд LVM в AIX выделяет область внутри самого зеркального тома, а линуксовая версия предлагает создать отдельный логический том. Это мне не понравилось. Ставить эксперимент не стал, но предполагаю, что в случае смерти одного из винтов, LVM не сумел бы подняться.
На помощь пришел программный рейд на базе mdraid. С помощью этой программы, я создал программные зеркала из четырех пар винтов. Программа создает виртуальные диски /dev/md0, /dev/md1 и так далее. А эти устройства уже можно использовать в качестве физических томов для LVM.
Кстати, еще одна особеннось. В AIX в качестве физического тома может выступать сам винт. В Linux LVM требует наличие на винте раздела и использует уже этот раздел. С чем связано, не знаю.
В итоге всех этих махинаций я имею на севере зеркальный софтрейд на базе mdraid и гибкий LVM поверх этого рейда. Проводил испытания – все отлично работает при выдергивании винта и добавлеении резервного вместо него.
Локальная база знаний
Октябрь 13, 2009Давно назревала идея поднять в отделе сервис для сохранения наработок по разнообразным вопросам, например решению проблем с софтом. Часто бывает так: возникает проблема, ты теряешь пол дня на поиск решения, а потом оказывается что кто-то из сослуживцев уже сталкивался с ней и знает простое решение.
В качестве движка для такого сервиса неплохо подходит wiki- движок от Wikimedia. Есть конечно ряд особенностей, специфичных для википедии. Например, создали разделы: Софт, Железо, Сети. В разделе Софт еще разделы, в частности ОС и КИС. В этих разделах свои подразделы, среди которых есть совпадающие имена, например Администрирование. Википедия так устроена, что ссылка на раздел Администрирование ведет на одну и ту же страницу, не зависимо от того, из какого родительского раздела пришел юзер. В качестве обходного маневра приняли такой: ссылка пишется как
Windows:Администрирование|Администрирование
Что в итоге делает ссылку с надписью “Администрирование” и ведущую на “Wndows:Администрирование”. Получается некое подобие иерархии. Во всем остальном движок очень удобен, правда вики-форматированиек еще не все освоили.