LINUX.ORG.RU

Сообщения DRVTiny

 

do «file.pl» и области видимости

Форум — Development

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

Но сохранить - это только четверть дела, ведь самое важное - правильно загрузить сохранённое.

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

Ну и решил я загрузить файлик конструкцией do «file.pl»

И жестоко обломался, потому что variable scope содержимого файлика почему-то отличается от scope'а вызывающей программы, что по сути конечно немного треш и угар. То есть если даже сказать в основной программе «my $a='hello';» и потом загрузить файлик, содержащий «$a='Hows that';», то в $a, внезапно, останется строка 'hello'.

$ echo -e '#!/usr/bin/perl\n$a="bye";' > a.dat
$ cat a.dat
#!/usr/bin/perl
$a="bye";
$ perl -e 'my $a="hello"; do "a.dat"; print "$a\n";'
hello
$ perl -e 'our $a="hello"; do "a.dat"; print "$a\n";'
bye
$ perl -e 'my $a="hello"; open(FH,"<a.dat"); undef $/; eval <FH>; print "$a\n";'
bye

Вопрос: как сделать include файла на языке perl в программе на языке perl, чтобы variable scope всего включаемого совпадал со scope вызывающей программы? Возможно ли это сделать без eval?

 , ,

DRVTiny
()

Универсальный API для write(Структура_данных, Файл_в_формате_smth) ?

Форум — Development

Кто нибудь в курсе, как в Perl см помощью некоего стороннего модуля получить возможность универсальной записи файлы различных форматов?
Классический пример: у меня есть «табличная» структура данных, я хочу написать скрипт, который умеет выводить в CSV, HTML, XLS, ODT или ещё что-нибудь, но при этом я как перфекционист до мозга костей хочу записывать содержимое своей чудесной структуры данных в любой из форматов, указывая минимум дополнительных параметров, специфичых для формата.
В принципе подойдёт даже какой-нибудь REST-API, получающий на вход XML-ку, а на выходе дающий мне файл в нужном формате.
Есть такое? Нет такого?

 , , reporting

DRVTiny
()

Как извлечь строку внутри кавычек, при этом не «запоминая» сами кавычки?

Форум — Development

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

@l=$v=~m/(?<q>['"])(.*?)\g{q}/g;

Собственно, мне вообще нафиг не надо кавычки в @l, но фильтровать grep'ом - не совсем правильный вариант.

Можно ли как-то иначе это сделать?

 ,

DRVTiny
()

Считаю целесообразным работать Perl-программистом, а не сисадмином, что делать?

Форум — Job

Написал кода на Perl уже немеряно, особой маниакальной склонности в системному администрированию, которым занимаюсь почитай с 2005-го, не имею, а вот к программированию - имею.

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

Коллеги, прошедшие уже этот этап преодоления кастового барьера, поделитесь опытом, как правильно выйти из подобной ситуации, при этом не оказавшись без работы на полгода или не попав в подмастерья на 40К зарплаты?

 , кодер,

DRVTiny
()

Проблема с кодировками: аргумент командной строки и переменная кодируются по-разному?

Форум — Development

Если передаю perl-скрипту параметр - слово кириллицей, то функция, которая использует этот параметр для поиска, не отрабатывает правильно. Если объявляю внутри скрипта переменную, равную той же строке, которую раньше передавал в качестве параметра и получал shift'ом - всё работает.

Изначально у меня скрипт запускался #!/usr/bin/perl -CS и юзал модуль utf8 («use utf8;»), но я попытался поиграться с этим, убирая то одно, то другое - это ничего не даёт. Всё равно полученное из комадной строки и записанное в теле скрипта на уровне байтовом - совершенно разные значения.

Как избавиться от этой «кириллической» проблемы?

 ,

DRVTiny
()

Ubuntu: процесс check-release-upgrade жрёт все ресурсы ввода-вывода

Форум — Desktop

Стал у меня как-то внезапно тормозить комп на работе, да так, что прямо встало всё колом и не хочет шевелиться ни в какую. Полез я vmstat'ом проверять, а там по 6 процессов блокировано в ожидании ввода-вывода, посмотрел iotop - а там... А там на 97% диск занят некоей Ubuntu-утилитой, проверяющей наличие нового релиза!

Я грохнул это бесовское отродие, но возмущению моему нет предела: что это вообще такое, откуда оно взялось, какие ... пишут такое ... на пихтоне?!

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

Так в чём загвоздка? В Ubuntu, в пихтоне или в том, что-де у меня комп какой-от не такой? И как отключить к чертям все эти проверки новых релизов? Может, просто смувить куда-нибудь проклятый интерпретатор тормозного языка с убогим синтакисом, на котором криворукие ламеры из каноникал пишут свои кошмарные поделки?

 , ,

DRVTiny
()

Утилиты для работы с ActiveSync (cli)?

Форум — Desktop

Нужно для чудесного мониторинга сделать проверки работоспособности базовых функций ActiveSync на чудесном же сервере Exchange заказчика (не буду уточнять какого, просто скромно упомяну, что Exchange заказчиком (внезапно) куплен на наши с вами деньги).
Собственно, вопрос в том, что я не нашёл ни одного cli-шного клиента ActiveSync под Linux - и это при том, что некоторые вещи (например, получение Folder Hierarchy) у меня отлично получаются даже на чистом BASH+curl.
Собственно, утилит для работы с AS'ом под Linux действительно нет вообще или я плохо искал?
P.S. Реализовал бы все проверки AS на баше, но сейчас есть затыка в командой SendMail: оно мне отвечает, что-де я ему неправильно сформированный wbxml подсунул. И честно сказать, я уже слегка задолбался с этим бороться, хочется просто готовое решение или хотя бы вменяемый пример в исходниках.
Заранее всем спасибо размером с типичный образчик продукции БелАЗ'а :)

 , ,

DRVTiny
()

Что можно промониторить у PostgreSQL, имея zabbix agent и больше ничего?

Форум — Admin

Собственно, есть zabbix agent, установленный на системе клиента, куда нет доступа по ssh и в принципе нет доступа. Никаких специфических UserParameter'ов на агенте не прописано, он такой вполне себе голый как сокол.
Есть PostgreSQL, который работает на системе клиента и наружу доступен портом 5432. Никакого доступа туда тоже нет (для мониторинга не заведён пользователь).
AllowRemoteCommands установлен в 0, так что с этой стороны не подлезть
Известно, что система - RedHat ES 6.x

Внимание, вопрос:

Что можно промониторить в такой немного странной, но реально имеющей место быть ситуации?
Я добавил proc.num[postgres] и net.tcp.service[postgresql]
Следующим шагом промониторить ошибки в логах Postgres
Есть ещё какие-нибудь оригинальные идеи? :)

 ,

DRVTiny
()

Поругайте опции mysqldump для дампа Master'а

Форум — Admin

Хочу использовать такой набор опций для дампа мастера. Уточню, что все create table делаются перед этим дампом, посредством парсинга show create table (думаю использовать тот же mysqldump для этого. а то с учётом блокировок на запись слишком длинно получается, да и непонятно, зачем было изобретать велосипед :) ).
Вот. Итак, сами опции:

--no-create-info --master-data --single-transaction --quick --add-locks --disable-keys --extended-insert --routines --triggers
ЧЯДНТ? Или ПЯВДП? :)
Заранее гигантское спасибо всем мускул-фанам, к которым я и сам себя всё больше причисляю, ибо usability&ergonomic&documentation во многом компенсируют все огрехи!
P.S. Есть подозрение, что лучше --master-data=2, поскольку дефолтное 1 весьма навязчиво устанавливает начало репликации.

 ,

DRVTiny
()

Неубиваемый процесс

Форум — General

На своей системе (Ubuntu 13.10) уже не в первый раз замечаю странную особенность: при запущенном VirtualBox'е в какой-то момент может перестать убиваться тот или иной процесс.
Например, сейчас я птаюсь убить проклятый Firefox, который стал уже тупее и ужаснее самого ослика, а потому использовать его приходится со скрежетом зубовным исключительно ради хорошей поддержки стандартов.
Говорю процессу Firefox: kill -9 899 - а он всё «работает», продолжает жрать 99% одного ядра, ничего полезного при этом не делая (даже *лядский flash не показывая). При этом до запуска VirtualBox'а я прекрасно использовал xkill (забинден на Ctrl+Alt+K - всем советую) для ритуального убийства огнелисов - и всё было нормально, дохли с одного клика!
Скажите, может слышал кто про такой баг - вдруг все уже давно в курсе, что загрузка модулей ядра VirtualBox приводит к таким глюкам и только я всё ещё в танке? :)

 , , ,

DRVTiny
()

Яркость ламп внешнего (не нотубучного) дисплея: как её изменять?

Форум — Desktop

Вопрос: а как, собственно, она меняется в случае с дисплеем, подключенным по DVI или уж тем паче D-Sub?
Какой протокол используется для настройки дисплеев (разработанный VESA?) и почему настройка яркости чаще всего сводится к «притушению» выводимых цветов, а не к регулированию выходной мощности ламп подсветки?
Ну и как пример вот ссылка на некий мануал: http ://prof-labs.ru/blog/nix/167 - вот что там конфигурируется через ACPI: видюха или всё-таки дисплей?
UPD:

$ cat /sys/class/backlight/acpi_video0/brightness
cat: /sys/class/backlight/acpi_video0/brightness: No such file or directory
Дисплей у автора статьи конечно же ноутбучный, зараза.

 , , , ,

DRVTiny
()

Можно ли все новые данные поместить в партицию?

Форум — Admin

Обычно делают RANGE BY (field) ADD PARTITION lt_smth LESS THAN (smth), а можно ли сделать наоборот? Мне нужно, чтобы в НЕпартиционированной таблице добавилась партиция с «новыми» данными, можно ли так сделать. Подозреваю, что нельзя, но не понимаю, почему.

 ,

DRVTiny
()

DuMeMe: хорошая, годная обёртка для нетривиальных дампов MySQL

Форум — Admin

Использовал её для того, чтобы слить дамп, в котором будет добавляться партиционирование и сжатие перед собственно дампом базы.
Есть режим dry-run. Как пользоваться - наглядно описано в dumeme -h
Для того, чтобы утилита работала, советую скачать либо весь репозиторий на гитхабе, либо хотя бы файл my_helpers.inc: это нужный утилитке include, который должен лежать в одном с ней каталоге (предполагается использовать include совместно с другой утилитой (alter_part), поэтому он и вынесен в отдельный файл).
Почему так называется? К эмо отношения не имеет, к геям тоже. Это что-то про «Do MySQL Master dump» :)
Собственно, ссылка: https://github.com/DRVTiny/bash4-helperScripts/blob/master/mysql/dumeme

 , ,

DRVTiny
()

Поставил LMDE: WTF с консольными шрифтами?

Форум — Desktop

Поставил LMDE, выбрал при установке русский язык... Так оно теперь при загрузке с «init=/bin/bash», «1» или же просто при Ctrl+Alt+Fn из графики - печатает только по-русски и никак иначе. Я уже перепробовал порядка 100500-от вариантов переключения раскладки - но она не переключается, вот в чём засада!
Погрепил /etc - настроек, насилующих консоль кириллицей не нашёл. Где это искоренить, как напалмом выжечь?
Мне нужно NVIDIA-дрова поставить *.run'ом, а выйти из графики в консоль и напечатать там хотя бы просто ${var//+([a-z])/} не получается.
P.S. Честно вам скажу, ASPLinux в 2003-ом году был в 100 раз лучше настроен, чем это поделие. Вообще современные дистрибутивы скатились в какое-то с-ное г-вно.

 , , ,

DRVTiny
()

Установщик Zabbix-агента: 2 вопроса и никаких зависимостей

Форум — Admin

В любом RedHat или Debian-based дистрибутиве запускаете скрипт, отвечаете на вопросы об адресе сервера и хоста - и готово, у вас установлен Zabbix agent версии 2.2.1
Особенность данного установщика - в том, что он может «откреплять» (detach), «подключать» (attach) и заменять (replace) своё содержимое, т.е. собственно бинарники zabbix_agentd для 2-х архитектур. Таким образом, Вы можете собрать какую угодно версию агента и юзать её вместо той, которая включена в инсталлятор по умолчанию!

Авто-инсталлятор здесь:
https://github.com/DRVTiny/AgentMerlin/blob/master/agentMerlin.sh
2.2.1 из-за того, что используются статически прекомпилированные бинарники агента с офсайта Zabbix, а там пока ещё нет таковых для версии 2.2.2 У себя статику для amd64 собрал, а вот i386 будет чуть погодя, и тогда содержимое автоинсталлера обновится до 2.2.2

 , ,

DRVTiny
()

На чём сделать диаграмму зависимостей для системы мониторинга?

Форум — Development

Имеются:
Ресурсы:
Атрибуты ресурса: Тип: - Составной (состояние ресурса невозможно определить, не изучив состояние каких-либо иных объектов диаграммы)
- Простой (состояние ресурса можно узнать напрямую - например, считыванием состояния триггера из системы мониторинга)
Список зависимостей ресурса:
Атрибуты зависимости:
- Направленность
В данном случае предполагаем, что зависимости только однонаправленные. Соответственно, у простых ресурсов нет зависимостей, у составных зависимостями могут быть как простые ресурсы, так и другие составные
- Идентификатор ресурса-зависимости
Логическое выражение, определяющее состояние ресурса на основе вычисленных зависимостей:

ResE=(ResA OR ResB) AND (ResC OR ResD)

Эмм... Если я ещё не вынес никому мозг столь невероятно сложными вещами, скажите, есть ли язык XML-подмножества, который позволяет описать диаграмму зависимостей сервисов и несложным образом «наполнить» её программным кодом, который будет рекурсивно спускаться по графу зависимостей до простых ресурсов и подниматься, последовательно вычисляя состояния составных? Вот например абстракции UML разве подходят для данной задачи?
Если такого нет, я посыпаю голову пеплом и скромно удаляюсь.

 , dsm, ,

DRVTiny
()

Как объединить хэши, представленные ссылками?

Форум — Development

Пока только вот до такого догадался (и то не без помощи StackOverflow). А есть ли более... элегантный метод?

$h1={a=>1,b=>2};
$h2={c=>3,d=>4};
$h1={%{$h1},%{$h2}};

 , ,

DRVTiny
()

Рисовалка диаграмм объектов

Форум — Desktop

Есть ли под Linux (хотя бы даже и под Windows изначально, но хорошо работающая под wine) такая рисовалка диаграмм, в которой без всякой программисткой специфики можно было бы рисовать объекты с их взаимосвязями, да так, чтобы у объектов можно было бы указывать свойства в произвольной форме? Ну т.е. чтобы можно было выбирать объекты какого-нибудь стандартного класса (например, «компьютеры»), но при необходимости создавать собственные классы или легко модифицировать существующие?
Сразу уточню, что я перепробовал несколько UML-редкаторов, и это явно не то, что мне нужно. UML-редакторы, судя по всему, созданы для ну очень умных людей, рисующих некие абстрактные сущности. Мне же нужны совершенно обыкновенные объекты из более-менее объективной реальности (компьютеры / сотрудники организации / отделы).
Может быть, есть UML-редакторы, которые предлагают в качестве изображений объектов какие-нибудь сервера, а в качестве атрибутов «количество процессоров»? Ну или там - человеков, а в качестве атрибута - количество жён :)

 diagrams,

DRVTiny
()

OpenSource Notification Engine: Неужели не существует? Ни одного?!

Форум — Admin

Единственное, что я нашёл на эту тему: http://is.muni.cz/th/208428/fi_m/xnguyen_dp
То, что описано в доке (универсальный движок для отправки сообщений по множеству протоколов, расширяемый модульно) - меня вполне устраивает. Но... дело в том, что никакого NotX в природе на самом деле не существует.
Значит ли это, что я плохо смотрел или то, что мне нужно писать такой движок самостоятельно? :)
P.S. Идея, как это нетрудно понять из контекста, в том, чтобы отправлять сообщения в формате наподобие обычного электронного письма, но - пользуясь произвольными транспортами: SMTP, MAPI, XMPP, SkyPE, ICQ, SIP/IAX, SMS, etc. (... over 9000 :) )

 ,

DRVTiny
()

ACL на основе DynList'ов не работают

Форум — Admin

Кто-нибудь пробовал использовать динамические группы для задания ACL в OpenLDAP?
Согласно официальной документации:

Dynamic Groups are also supported in Access Control. Please see slapo-dynlist(5) and the Dynamic Lists overlay section.


В объективной же реальности группа со статическими member'ами для задания ACL'ей работает правильно, а группа с динамическими - нет . В логах я вижу серым по чёрному, что openldap сравнивает мой DN только со статически заданными членами группы, а с динамическими даже и не думает сравнивать, он их даже не начинает просматривать
У кого-нибудь получалось сделать dynlist+acl? Может, есть какой-то особый бубен, чтобы оно заработало?
P.S. У меня OpenLDAP 2.4.31, какой-то штатный из поставки Debian 7

 , dynlist, ,

DRVTiny
()

RSS подписка на новые темы