LINUX.ORG.RU

Сообщения DRVTiny

 

Редактор Kate: куда делось окно консоли/терминала?

Форум — Desktop

Раньше я мог под своим кодом открыть окно встроенного в Kate терминала для того, чтобы выполнять какие-то Linux'ячие команды.

Ныне же то-то случилось с Kate: я все менюшки перерыл, а терминала этого не нашёл.

Может, эта фича стала каким-то плагином, и его нужно подключать отдельно?

Кто знает, подскажите, please.

Спасибо!

 ,

DRVTiny
()

Удаление элементов из hash reference в рекурсивной функции

Форум — Development

Я сделал вот так:

sub doRDKFH {
 my ($hr,$k)=@_;
 if (ref($hr) eq 'ARRAY') {
  map {doRDKFH($_,$k)} grep {ref($_) eq 'HASH' or ref($_) eq 'ARRAY'} @{$hr}
 } else {
  delete @{$hr}{ref($k)?@$k:($k)};
  map {doRDKFH($_,$k)} grep {ref($_) eq 'HASH' or ref($_) eq 'ARRAY'} values $hr
 }
}

Предложите варианты @более_рациональной{быстрой,короткой} функции?

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

 , , recursive

DRVTiny
()

Возможна ли подобная инкапсуляция в Perl?

Форум — Development

Очень хочется делать так:

Описание класса:

package Object;
use strict;
use warnings;
our @EXPORT_OK=qw(new set_a get_a);
my $a='Hello';

sub new {
 bless {},shift
};

calc_a {
 my $v=shift;
 $v.=' here'
}

sub set_a {
 my $slf=shift;
 $a=calc_a(shift)
};

sub get_a {
 return $a
};

1;

Использование класса:

package main;
use strict;
use warnings;
use Object;

my $inst1=Object->new;
my $inst2=Object->new;

$inst1->set_a('Hot dog');
$inst2->set_a('Hot girl');

print join(' ','1)',$inst1->get_a,'2)',$inst2->get_a)."\n";

# $inst1->calc_a('Crazy man');

В результате должно быть выведено:

1) Hot dog 2) Hot girl

А если я раскомментирую последнюю строчку в main - Perl мне должен сказать «No such symbol calc_a in package Object» или что-то вроде этого - я же эту процедуру не экспортировал, а значит это «приватный метод».

Правильно ли я понимаю, что в Perl нельзя сделать так, чтобы переменные уровня пакета, в котором описан класс, были всё-таки переменными инстанса класса (конкретного объекта), а не просто переменными пакета?

Хранить данные в виде чего-то вроде $Config{refaddr $self}{'verbose'} - это по-моему извращение ещё более дикое, нежели хранение вообще всех данных внутри этой несчастной «благословлённой» (blessed) ссылки...

То есть чего бы хотелось:

1) чтобы при создании нового объекта происходило примерно то же, что и при fork'е процесса: все переменные пакета с их значениями копировались бы в адресное пространство объекта либо сразу, либо при первой же записи в них (а то копировать прямо всё и сразу может быть накладно).

2) нужно обязательное разделение методов на «приватные» и «публичные», чтобы я мог внутри объекта использовать те или иные процедуры, разрешая пользоваться извне лишь небольшим их подмножеством.

Можно ли как-то вот этак сделать в Perl или категорически нельзя?

P.S. Кстати, хранение всех собственных данных объекта в каком-нибудь громадном хэше, доступном по ссылке $ObjectData{refaddr $self}, то есть что-то вроде $ObjectData{refaddr $self}{'options'}{'user-defined'}{'var-a'} - это разве эффективно хотя бы с точки зрения скорости работы приложения? Как бы ни были эффективны хэши в Perl, по-моему все эти многоуровневые индексы куда менее эффективны, нежели простые переменные.

 ,

DRVTiny
()

Нужен обработчик изменения свойства объекта

Форум — Development

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

Вопросов на самом деле 2:

1) Как сделать так, чтобы $frog->color('бело-оранжевый') вызывал пользовательский обработчик? (trigger?)

2) Как вы думаете, почему разработчики Moose не любят (судя по их примерам) подобный подход? Ведь ну очевидно же, что при изменении свойств объекта с этим самым объектом должно что-то интересное происходить - не обязательно смена политической ориентации...

 ,

DRVTiny
()

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

Форум — Talks

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

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

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

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

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

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

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

DRVTiny
()

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

Форум — Web-development

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

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

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

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

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

 , ,

DRVTiny
()

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

Форум — Development

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

Вот у меня есть /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-программер ищет полезную для ума работу

Форум — Job

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

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

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

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

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

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

 , , oodbms,

DRVTiny
()

Как вы оцениваете «юзабилити» современных OpenSource-офисных пакетов на фоне их проприетарных конкурентов?

Голосования — Голосования
  1. Хорошо, но можно бы лучше 521 (41%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Можно использовать для большинства задач, но без проприетарщины не обойтись 261 (21%)

    ****************************************************************************************************************************************************************

  3. Отлично! 230 (18%)

    *********************************************************************************************************************************************

  4. На фоне коммерческих конкурентов очень слабо, но изредка пользоваться можно 145 (11%)

    *****************************************************************************************

  5. Затрудняюсь ответить 56 (4%)

    **********************************

  6. Полный отстой, нужно себя не уважать, чтобы этим пользоваться 37 (3%)

    **********************

  7. Свой вариант (в комментарии) 17 (1%)

    **********

Всего голосов: 1267

 ,

DRVTiny
()

Как вы отправляете почту с серверов во внешний мир?

Голосования — Голосования

Поясню, в чём суть вопроса:

у меня сложилось (почему-то :)) впечатление, что в инете слишком мало информации, предупреждающей неопытных админов *nix-систем о такой коварной штуке, как настройка отправки почты. Я думаю, не ошибусь, если скажу, что многие, если не все, поначалу шлют почту с сервера на всякие гмылы и майлру так, словно её просто обязаны принять на другом конце.

И вот в этом-то кроется фатальная ошибка :) Потому как для отправки почты в современном нехорошем мире, полном злобных спамеров, нужно либо авторизоваться на внешнем сервере под учётной записью пользователя из домена, обслуживаемого данным сервером, либо - отправлять от имени пользователя на своём локальном MTA, но тогда нужно соблюсти кучу геморройных условий: иметь правильные A и PTR записи, соотв. MX-записи в DNS, очень и очень желательно SPF, просто необходимо - нормальный IP-шник, при обратном резолвинге которого не будет даже намёка на всякие dsl и прочую dial-up муть, постоянно следить за попаданиями во всякие DNS blacklist'ы... и это только то, что сразу на ум приходит.

Настройка же MTA со смартхостом даже в случае с Postfix'ом - оно хоть и быстро, но требует обязательной отладки.

Причём удивительно, что о наболее простом и надёжном smtp-клиенте (не путать с MUA) - программе SSMTP, почему-то редко упоминают. То ли у всех итак уже всё хорошо, то ли всё настроено через дефолтную Ж., и это никого не чешет ;)

  1. У меня нет серверов / мне просто надо что-то нажать 483 (61%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. С использованием MTA через свой smarthost 117 (15%)

    *****************************************************************************

  3. На каждом сервере полностью настроенный MTA 98 (12%)

    ****************************************************************

  4. С использованием MTA через чужой smarthost (с авторизацией) 63 (8%)

    *****************************************

  5. Пользуюсь настройками MTA "по умолчанию" и надеюсь на лучшее 45 (6%)

    *****************************

  6. С использованием MUA (консольного почтоколиента) и авторизации на внешнем сервере 43 (5%)

    ****************************

  7. Другое (в комментарии) 26 (3%)

    *****************

Всего голосов: 875, всего проголосовавших: 789

 , , , ,

DRVTiny
()

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

Форум — Development

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

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

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

 ,

DRVTiny
()

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

Форум — Development

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

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

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

 data generation,

DRVTiny
()

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

Форум — Development

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

DRVTiny
()

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

Форум — Development
#!/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
()

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

Форум — Development

В своё время немало напрограммировал на ассемблере и непонаслышке знаю, что стандартная целочисленная операция 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: чего он валится-то?

Форум — Talks

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

 slashdot-эффект,

DRVTiny
()

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

Форум — Development

Почему-то 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

Форум — Desktop

Нашёл «забавную» багу в 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?

Форум — Desktop

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

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

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

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

 , , ,

DRVTiny
()

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

Форум — Development

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

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

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

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

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

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

 , ,

DRVTiny
()

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