Size: a a a

2020 April 13

a

allter in Modern::Perl
Vladimir Zhavoronkov
Эта ошибка встречается в логах, в эксепшенах, например 'package=HASH(0xb335db0)string is not in UTF-8', пытаюсь найти баг в движке.
Гугль говорит. то это ошибка на setAttribute.
Ещё, я в своё время написал велосипед: https://github.com/allter/XML_DOMUtil/blob/master/lib/XML/LibXML/DOMUtil.pm , что бы не путаться с toString на документе (в котором возвращаются байты) и на узлах (там возвращается юникод) - всегда пользовался toUnicodeString/toByteString для определённости.
источник

VZ

Vladimir Zhavoronkov in Modern::Perl
allter
Гугль говорит. то это ошибка на setAttribute.
Ещё, я в своё время написал велосипед: https://github.com/allter/XML_DOMUtil/blob/master/lib/XML/LibXML/DOMUtil.pm , что бы не путаться с toString на документе (в котором возвращаются байты) и на узлах (там возвращается юникод) - всегда пользовался toUnicodeString/toByteString для определённости.
Гугль прав, это setAttribute.
источник

VZ

Vladimir Zhavoronkov in Modern::Perl
Похоже придётся решение свести к проверке входящих данных .
источник
2020 April 15

DF

Denis F in Modern::Perl
Граждане фанаты бинарных форматов, а как эту поебень asn1parse превратить в нормальный хекс?
Получаю эту каку отсюда - https://metacpan.org/pod/Crypt::OpenSSL::X509#value-(-)
источник
2020 April 16

M

Max in Modern::Perl
есть ли в перле возможность работы с condvar кроме как в AnyEvent? нашёл MCE и его MCE::Shared::Condvar, но не хочется тянуть такого монстра ради единственной функциональности.
источник

M

Max in Modern::Perl
собственно, в одном из тестов для нашей библиотеки понадобилось синхронизировать исполнение процессов. поддержки барьеров или condvars сходу в кор модулях не нашёл
источник

AP

Anton Petrusevich in Modern::Perl
между процессами?
источник

AP

Anton Petrusevich in Modern::Perl
если надо синхронизировать какие-то ресурсы между процессами и они на одной машине, то можно воспользоваться flock
источник

AP

Anton Petrusevich in Modern::Perl
если процессы на разных машинах, то можно сделать общую нфс шару и там лочить файл, правда не флок, есть модуль
источник

AP

Anton Petrusevich in Modern::Perl
посмотрел на MCE — во пипец автор заморочился
источник

VG

Vadim Goncharov in Modern::Perl
Max
есть ли в перле возможность работы с condvar кроме как в AnyEvent? нашёл MCE и его MCE::Shared::Condvar, но не хочется тянуть такого монстра ради единственной функциональности.
а что конкретно нужно-то? в AnyEvent это весьма своеобразное внутреннее понятие
источник

M

Max in Modern::Perl
как-то забыл что существует sem* функции, как-то semget, etc. и вообще, что существует IPC::SysV
источник

VG

Vadim Goncharov in Modern::Perl
позиксовые функции тоже есть
источник

AP

Anton Petrusevich in Modern::Perl
если это то, о чём я подумал, то флок проще всего
источник

M

Max in Modern::Perl
Vadim Goncharov
а что конкретно нужно-то? в AnyEvent это весьма своеобразное внутреннее понятие
у нас рейсы возникают (раз в квартал разные машины кластера выполняют операцию в одну и ту же 100-ю долю секунды, и генерят идентификатор с коллизией (так уж исторически сложилось. его формат мы не можем поменять). я код пофиксил, но хочу чтобы тест это эмулировал - подводил несколько процессов в барьеру и отпускал их одновременно, проверка того, что коллизий теперь не будет
источник

AP

Anton Petrusevich in Modern::Perl
Max
у нас рейсы возникают (раз в квартал разные машины кластера выполняют операцию в одну и ту же 100-ю долю секунды, и генерят идентификатор с коллизией (так уж исторически сложилось. его формат мы не можем поменять). я код пофиксил, но хочу чтобы тест это эмулировал - подводил несколько процессов в барьеру и отпускал их одновременно, проверка того, что коллизий теперь не будет
я точно то же самое пофиксил в одном проекте через лок на файле, который лежал на NFS. вот каким именно модулем не уверен, но, кажется, этим: https://metacpan.org/pod/File::NFSLock
источник

M

Max in Modern::Perl
прикольно, спасибо
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
если надо синхронизировать какие-то ресурсы между процессами и они на одной машине, то можно воспользоваться flock
Плохой вариант. Flock в зависимости от пути к файлу сначала будет по недрам vfs выбирать способ блокировки, потом, в зависимости от реализации фс, может откатиться не vfs flock (который на file descriptiON), в любом случае будет выполняться vlookup, который по пути может несколько фс зацепить... В общем, это крайне медленное решение.
Лучше уж shm или semop.
источник

SZ

Sergey Zhmylove in Modern::Perl
Даже прикрученный редис, отдающий сиквенс, будет быстрее работать :)
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
Даже прикрученный редис, отдающий сиквенс, будет быстрее работать :)
то есть, чтобы донести жопу из пункта а в пункт бэ надо обязательно брать авто? или иногда достаточно велосипеда, а иногда и пешком?

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