LINUX.ORG.RU

Сообщения DRVTiny

 

OpenLDAP'щики, инвентаризируем вселенную!

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

Поскольку мне удобен OpenLDAP, идея моя и OpenLDAP конечно лучше всего стыкуется с таким же сервером каталогов - давайте реализовать на нём.

Идея такая: начиная от «пустого» корня, который суть есть «universum» (вселенная) выстраивать согласованную всеми участниками этого дуремарства иерархию. При этом (важно!) не рассчитывайте покидать всё в один каталог: если есть возможность, делайте свой и линкуйте его ref'ами к центральному. То есть в идеале у каждого участника должен быть свой сервер каталогов, обслуживающий свою собственную ветку, прозрачно «встроенную» в центральный каталог. Тем самым мы наглядно покажем SQL-щикам и прочим подобным товарищам, что их будущее наступило ещё 20 лет назад, только они его проспали (а теперь спрашивают «зачем нужен LDAP» - спать надо было меньше!).

Я интересуюсь хорошими московскими кофейнями, начну с cn=Caffee,cn=Organizations,l=Moscow,c=Russian

По существу можно добавлять всё, что угодно - мелкая собачонка соседа тоже подойдёт :)

Кто «ЗА» и у кого из тех, кто «ЗА» есть сервер/виртуалка с внешним IP-адресом

 , вселенной, , каталогизируем

DRVTiny
()

Ищу веб-движок, показывающий таблицы

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

Он должен уметь подгружать CSV-файл с таблицей И, что наиболее важно, прицеплять к результирующему коду страницы «магический» java-script код, который бы позволял сортировать содержимое того или иного столбца пользовательским тычком во что-нибудь над отображаемым столбцом.

В качестве совсем уж изощрённого пожелания - поддержка отображения заголовка таблицы (первая строка CSV), содержимое которого не должно подпадать под сортировку (а то пользователь обхохочется).

UP: Пока нашёл довольно привлекательное на вид вот это: http://www.datatables.net/examples/data_sources/js_array.html

Перемещено stave из development

 , ,

DRVTiny
()

Как на Java сказать «Hello, world!» ?

Как-то вдруг заинтересовался этой темой.

Вот у меня есть /usr/bin/java, есть некий код, который делает System.out.println(«Hello, world!»);

Ну то есть мне ничего от него пока что больше и не нужно. Сам код готов написать с помощью конструкции «документ здесь» (cat <<EOF) или даже настоящего echo -e!

Для «самого сложного» языка программирования - Си, это делается так:

1) Пишем код в 4 строчки

2) Компилируем код с помощью gcc в объектный файл

3) Комплируем объектный файл в elf

А как это происходит в случае с Java?

Мне неоднократно доводилось слышать что вроде как Java - это простой язык и там почти совсем нет ничего лишнего. Вот мне по существу нужно увидеть на консоли «Hello, world!», что для этого требуется сделать?

P.S. Просьба установку Eclipse, IntelliJ IDEA и прочей подобной мути не предлагать - нужно сделать с использованием только java runtime и java compiler.

P.P.S Я не дурной, и это не провокация: если вы поищете в Google, то найдёте исключительно примеры Hello, world'ов на Java, созданные в каких-то феерических IDE.

 ,

DRVTiny
()

Junior-программер ищет полезную для ума работу

Весьма интересно зарабатывание на велокомпоненты программированием на Perl

В силу особенностей обучения нейронной сети головного мозга интересны object-oriented storage'ы - такие как старый-добрый LDAP и «новый» MongoDB.

А также: мудрёная обработка текстов, «умные» разветвлённые алгоритмы, преобразование ежа в ужа и «невозможного» в диетический готовый к лёгкому проглатыванию API - на этом собаку съел, так что многое захэшировано и готово к reuse'у.

Но реальной работы программёрской сейчас - кот наплакал.

Рассмотрю интересные предложения, резюме пришлю.

При необходимости - использовать drvtiny в гугль-почте-дот-ком, which is $mailboxes->find({«uid»=>«drvtiny»})->next->{«mail»}

 , , oodbms,

DRVTiny
()

use Switch в Perl: насколько это ужасно?

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

Кто что думает по этому поводу?

И точно ли Moo с Moose такие штуки не используют? Уж больно там подозрительным образом синтаксис не похож на нативный перловый...

 ,

DRVTiny
()

Подскажите инструмент для генерации данных

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

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

Что можете посоветовать на этот счёт? Думаю, не я один сталкивался с такой ситуацией, когда для отчётности нужно тупо «заткнуть дыры» ;)

 data generation,

DRVTiny
()

Как получить JSON-список всех улиц в Москве

Во так:
http://mpgu.mos.ru/common/js/forms/oo_bti_addr.js.php?type=basic&ter=moscow
И не говорите потом, что вы этого не видели :)

DRVTiny
()

Громко ругаем реализацию List to CSV line

#!/usr/bin/perl
sub csvLine {
 my ($csvSep,$csvQuo)=map {substr($_,0,1)} (shift,shift);
 return join($csvSep,map {
                           length($_)==0 || /^[0-9]+(?:\.[0-9]+)?$/
                           ?
                            $_
                           :
                            do {
                             (my $t=$_)=~s/$csvQuo/${csvQuo}${csvQuo}/og;
                             $csvQuo.$t.$csvQuo
                            }
                         } @_
                  );
}
print csvLine(',','"',('', 'a " b',12,14.75,'c')),"\n";

Недостатки с моей т.з.:

- Использование «лишней» переменной $t ($t нужна из-за того, что $_ нельзя менять)

- Использование do {}

 ,

DRVTiny
()

Как получить результат целочисленного деления списком?

В своё время немало напрограммировал на ассемблере и непонаслышке знаю, что стандартная целочисленная операция div там даёт в качестве результата и частное от деления, и остаток.

Был немало удивлён тому факту, что такая полезная особенность CISC-архитектуры Intel нигде не используется!

В том же Perl - было бы логично сделать так:

$minutes=78;
($hours,$minutes)=div($minutes,60);
print "Duration: $hours:$minutes\n";

То есть вопрос не совсем в том, что можно написать такую замечательную функцию div, которая выдаст нам нужный список, а в том, что как минимум в такой функции нужно будет один раз делить и один раз умножать, а как прямолинейный максимум - вообще 2 раза делить.

А зачем? Ведь в итоге-то, если речь идёт о целочисленном делении и архитектуре Intel, всё равно будет выполнен тот же div в результате которого будет сразу получено в разных регистрах процессора частное и остаток. Но почему-то уровнями выше «теряется» либо остаток, либо частное от деления...

Может быть, где-то эту проблему уже решили и есть соотв. модуль на CPAN?

 , ,

DRVTiny
()

search.cpan.org: чего он валится-то?

Кто-нибудь в курсе, почему в последнее время search.cpan.org частенько «лежит»? И может ли быть такое, что где-то есть mirror для search.cpan'а, а я об этом ещё не знаю? :)

 slashdot-эффект,

DRVTiny
()

Странное поведение map

Почему-то map в «блочном исполнении» синтаксически захватывает в качестве входного списка всё разделённое запятыми, то есть:

$ perl -e '@a=(1,2,3); @b=(4,5,6); @c=map { ">$_<" } @a,@b; print join("\n",@c)."\n"'
>1<
>2<
>3<
>4<
>5<
>6<
Я бы понял, если бы в данном случае такой эффект достигался при указании: map {} (@a,@b), но map объединяет эти списки даже без скобок!

Особенно лютый батхерт эта особенность доставляет при передаче параметров в функцию.

Например, map внутри join...

join("\n",map { $_*$_ } @a,@b)
...вернёт результат преобразования и @a, и @b.

В общем, вопрос околонаучного плана (как обойти это скобками - очевидно) - а почему, собственно, так получается?

 concatenation, , ,

DRVTiny
()

Жёсткая бага в virsh

Нашёл «забавную» багу в virsh под Ubuntu 13.04:

Оно командой virsh snapshot-create-as создаёт файл снэпшота с правами...

~/Virtual Machines$ ls -l Snapshots/Tiberius/
total 7944
-rw------- 1 libvirt-qemu kvm 8192000 июня   4 15:29 snp20140604141710.qcow2

При этом, уж поверьте мне на слово, я не работаю под пользователем libvirt-qemu и да, я вхожу в группу kvm.

Интересно, это баг Ubuntu или libvirt'а, который своим идиотизмом и холостым замахом на «большое и толстое» на Ubuntu очень сильно похож, словно бы сам рождён в недрах Ubuntu?

 , ,

DRVTiny
()

virt-manager: как подобрать keymap?

Выбирал уже и «ru», и «local», всё равно печатает вместо «/» - «<».

Кто знает, как победить в virsh+QEMU+KVM эту проблему с keymap'ом?

P.S. Для меня полной загадкой является факт возникновения подобных проблем: раньше KVM запускал под Proxmox VE и никаких проблем с клавиатурой не было...

P.P.S Только что проверил чистый QEMU (даже без KVM) - тоже клавиатура работает корректно. Видимо, какие-то траблы с VNC...

 , , ,

DRVTiny
()

Как элегантно запушить в список N одинаковых элементов?

Собственно, если быть точным, то задача:

Есть @a, в который нужно запихнуть количество пустых строк, равное количеству элементов @b. Т.е. соотв. элементы @a перестанут быть undefined, там будут просто "

Как это сделать без foreach и чем короче, тем лучше? printf и split просьба не предлагать: я не стреляю из пушки по воробьям.

Одно из «кривых» решений, которые можно использовать только временно:

push @a, map { '' } @b;

Здесь очень хреново то, что без надобности перебираются все элементы @b, хотя по сути всё, что нам нужно знать о @b - это какая у него длина.

 , ,

DRVTiny
()

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

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

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

Конструкция 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) ?

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

 , , reporting

DRVTiny
()

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

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

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

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

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

 ,

DRVTiny
()

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

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

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

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

 , кодер,

DRVTiny
()

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

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

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

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

 ,

DRVTiny
()

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

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

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

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

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

 , ,

DRVTiny
()

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