[ d ] [ b / cu / dev ] [ r ] [ a / ts ] [ ci ] [ gnx / int ] [ misc ] [ dev / stat ]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]

Файл: [HorribleSubs] YuruYuri - 08 [720p]_mkv_201301119_.jpg -(59 KB, 506x662, [HorribleSubs] YuruYuri - 08 [720p]_mkv_201301119_.jpg)
59 No.9607  
Такой невнятный вопрос сейчас задам, держитесь, няши. Для перлобогов. Допустим есть перловый скрипт, допустим в нем есть много потоков. Допустим в каком-то потоке что-то происходит и родитель получает sig alrm. Внимание вопросы:
1. Что такого может произойти в потоке.
2. Как родителю узнать в каком треде это происходит и захендлить все это дело, в не вылетать по "сигнал таймера"?

На пике Аяно смущается от моего невежества.
>> No.9614  
>>9607
1. Поток может послать этот сигнал самостоятельно просто так, никто не мешает посылать сигналы, если автору будет угодно, хоть SIGKILL.
2. Немного не уверен, с потоками давно не работал, на перле не писал несколько лет. Плохо помню, как соединяются родитель и дочерний процесс и каким образом они ловят сигналы друг друга, но разве идентификации пайпа, по которому он пришел недостаточно?
>> No.10206  
Файл: Hayate no Gotoku! Can`t Take My Eyes Off You - 03 .jpg -(203 KB, 1371x995, Hayate no Gotoku! Can`t Take My Eyes Off You - 03 .jpg)
203
Я в смятении. Почему вот это:

my @nya;
tie @nya, 'Tie::File', $file, mode => O_RDONLY;
#туева хуча вайлов, форов по этому массиву и пр.
untie @nya;

работает медленнее, чем вот это:

open(NYA, $file) or die "Hallelujah!";
my @nya = <NYA>;
close(NYA);
#туева хуча вайлов, форов по этому массиву и пр.

??

Файлики большие, и по уму надо Тай делать, но какое же оно медленное. Что же мне теперь делать?
>> No.10211  
>>10206
Переходи на няшную сишечку же.
>> No.10212  
Файл: Kanamemo - 03 (TVO 1280x720 H_264 AAC)_mp4_2013071.jpg -(125 KB, 1340x754, Kanamemo - 03 (TVO 1280x720 H_264 AAC)_mp4_2013071.jpg)
125
>>10211
>> No.10235  
Файл: [Commie] Yuyushiki - 02 [7A4486FD]_mkv_20130619_18.jpg -(127 KB, 1299x731, [Commie] Yuyushiki - 02 [7A4486FD]_mkv_20130619_18.jpg)
127
На этот раз жабаскрипт.

Хочу из десятичного числа получить номера двоичных разрядов, в которых есть единичка. Разрядов максимум может быть 48. Есть что-то, принятое json-ом, одно из свойств "Obj.loopback" содержит нужное нам число (3153920 в данном случае).
Вот что примерно делаю:

var loopback = "";
for (var j = 1;j < 49;j++){
if (Obj.loopback & (1 << (j - 1))) loopback += j + " ";
}

В итоге получаю в строке "14 21 22 46". Откуда тут берется 46? Где порылась собака?
>> No.10238  
>>10235
Нашел решение. Как оказалось, в яваскрипте смещение работает максимум на 32 разряда, в итоге рабочий код:
var loopback = "";
for (var j = 1;j < 49;j++){
if (Obj.loopback & 1 * Math.pow(2,(j - 1))) loopback += j + " ";
}

Хотя всем похуй же.
>> No.10240  
>>10238
Долго думал, зачем нужно 1*.
>> No.10241  
>>10240
тут вроде сначала лог. операция Obj.loopback & 1, а затем уже *.
>> No.10243  
>>1024
Нет. Сначала умножение на один, которое не нужно,потом побитное И.
>> No.10244  
>>10243
ты случайно с sql не перепутал? Или в яве умножение "старше" операции and?
>> No.10247  
>>10244
С тобой не согласны как педивикия http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages , так и разрабы явоскрипта https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Special_operators (табличка внизу).
>> No.10248  
>>10247
хм, мой борланд говорит, что and по крайней мере на одном уровне с *, а вот javascript говорит, что борланд врет. На разных языках одна и та же формула будет давать разный результат.
>> No.10249  
>>10248
По-этому паскаль мало кто признает вменяемым языком.
en.wikipedia.org/wiki/Comparison_of_Pascal_and_C#Precedence_levels
>> No.10302  
Няши, ищу нормальный таббер на чистом явоскрипте с возможностью динамически содавать и удалять табы. Есть что-то подобное в природе?
>> No.10479  
Файл: 1374654404_1_13_a02d0affaef96dfcf731c35241cf1bfb51.jpg -(108 KB, 600x338, 1374654404_1_13_a02d0affaef96dfcf731c35241cf1bfb51.jpg)
108
Няши, возможно ли в люнепсе "слушать" файловый дескриптор? Поясняю. Допустим есть текстовый файл, в который некоторая программа что-то пишет построчно периодически. Я хочу сделать скрипт (демон), который бы "слушал" данный файл, т.е. не читал его полностью, а принимал бы строчку, которая была в данный момент записана в этот файл (будто это строчка пришла по сети).
Пока не могу понять в какую сторону гуглить.
>> No.10482  
>>10479
Размеры файлов сравнивай и бери себе дельту.
Насколько я помню, в апи линупса нет таких вещей как "подвешивание" на события записи своих хендлеров, хотя, ты всегда можешь хэкнуть драйвер файловой системы.
>> No.10483  
>>10482
> Насколько я помню, в апи линупса нет таких вещей как "подвешивание" на события записи своих хендлеров

man inotify
>> No.10484  
>>10483
>inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13,

НИИНТЕРПРАЙЗНО.
>> No.10558  
>>10479
man fifo
>> No.10574  
>>10479
http://freethreads.wordpress.com/2010/10/20/how-tail-f-work/
>> No.10575  
>>10574
Да. Именно это я и пытался сделать. Но сейчас я уже понял, что сия затея - хуита, ибо главная моя задача решилась более простыми и очевидными способами.
>> No.10602  
Файл: [Yousei-raws] K-On 09 [BDrip 1280x720 x264 Vorbis].jpg -(34 KB, 310x524, [Yousei-raws] K-On 09 [BDrip 1280x720 x264 Vorbis].jpg)
34
Кстати, про язык богов. Я хотел тут спросить, но все забывал.
Паттерны пака и анпака для меня оказались еще хуже, чем регекспы в плане понимания. Допустим есть строка, каждый символ которой есть число от 0 до F. Я хочу разбить эту строку на шестнадцатеричные числа по два разряда, преобразовать каждое в десятичный эквивалент и записать их через точку в сохраненной последовательности (лишние нули слева при этом нужно убрать). Результат д. являться тоже строкой.
Родил вот это:
$nya_str = join('.', map(hex, unpack('(A2)*',$kawaii_str)))
С тех пор меня мучает вопрос, а можно ли это сделать всего одним анпаком, но с каким-нибудь хитрым-прехитрым паттерном?
>> No.10659  
​​>>10602
Одним unpack'ом вряд ли можно обойтись, но можно сделать pack'ом и последующим unpack'ом:
$nya_str = join '.', unpack 'C*', pack "H\052", $kawaii_str
Исполнятьcя будет быстрее, но последний символ будет обрабатываться по-другому, если длина строки нечётная.
>> No.10660  
>>10659
Длина строки всегда четная и постоянная. Что делает pack "H\052" я, как не пытался сейчас вкурить, так и не понял.
>> No.10661  
>>10660
> Что делает pack "H\052" я, как не пытался сейчас вкурить, так и не понял.

Это 'H*'. Движок Автобуса не умеет экранировать разметку, поэтому приходится выкручиваться.
>> No.11282  
Няши, можно ли эти два паттерна объединить в один?
s/[\r\n]// for @array;
s/[\r\n]{2}/\n/g for @array;
>> No.11284  
>>11282
Но зачем?
>> No.11285  
>>11284
Интересна сама возможность.
>> No.11288  
>>11285
s/^[^\r\n]*\K[\r\n]|[\r\n]{2}/"\n"x(length($&)-1)/ge for @array;
>> No.11291  
>>11288
Неа, никакого эффекта. Или автобус съел какие-то символы?
>> No.11292  
>>11291
Зачем ты до сих пор пользуешься Perl 5.8? Или какая у тебя версия?
>> No.11330  
>>11292
v5.10.1 есличо
>> No.11332  
>>11330
Тогда для какого массива >>11282 и >>11288 дают разный результат?
>> No.11333  
>>11332
Ну для вот такого например:
$VAR17 = '123123
';
$VAR18 = '123123123
';
$VAR19 = '234234234

123123123

123123132
';
Ожидаемый результат:
$VAR17 = '123123';
$VAR18 = '123123123';
$VAR19 = '234234234
123123123
123123132';
>> No.11339  
>>11333
Если я правильно понял, то тебе нужно не совсем то, что делает >>11282 , а просто удалить перевод строки в конце и сдвоенные переводы сделать обычными. Тогда так: s/[\r\n]{2}|[\r\n]$/"\n"x(length($&)-1)/ge for @array;
>> No.11340  
>>11339
Теперь всё няшно, воистину язык Богов.
Поставил на заметку "х" и $&.
>> No.11341  
>>11340
А на хаскелле можно так писать
flip $ foldr (:)
>> No.11342  
>>11341
Лучше бы "flip $ flop (:)" :3
Говорящие функции доставляют:
https://www.google.ru/search?q=perl+poetry
>> No.11343  
>>11342
http://www.perlmonks.org/?node_id=1065235
>> No.11348  
https://metacpan.org/pod/Sub::Lambda

(fn qw(h -t) => '@t')->(1..5) => [2,3,4,5]
>> No.11349  
И совсем хаскелл https://metacpan.org/pod/Sub::Lambda::Filter

(\h -t -> { @t })->(1..5) => [2,3,4,5]
>> No.12048  
Файл: Sm2na25.jpg -(16 KB, 350x190, Sm2na25.jpg)
16
Кто-нибудь тут сталкивался с POE?
>> No.13890  
Почему вот это array ref: \@foo
А это нет: \@foo[3..6]
?
>> No.13891  
>>13890

Не силён в перле, но не врубаюсь: зачем брать ссылку на объект, который не хранится в памяти - на ломтик массива? Это уже лямбда-исчисление какое-то.
>> No.13893  
>>13891
Ну есть функция, которой в аргументах надо отдать array ref, однако мне надо отдать не весь массив, а только его часть.
>> No.13895  
>>13893

Массив можно использовать в большем числе случаев, чем ломтик, верно? Ломтик - это таки не массив (опять же, не силён в Перле, но раз нельзя сослаться на ломтик, значит, так просто быть не должно, так разработчик решил, и что-то на это решение завязано).

Нагуглил: http://stackoverflow.com/questions/15160882/perl-slice-an-array-without-creating-a-whole-new-array
>> No.13896  
>>13895
Твой поток сознания я не понял.
Но по твоей ссылке чётко написано:
>The syntax \@array[1..2] would return a list of references to each element in the slice, but not a reference to the slice.
Окай. И выше пример [ @array[1..2] ], с которым у меня всё и заработало. Спасибо.
>> No.13898  
>>13896

Хорошо всё то, что хорошо кончается.



[ d ] [ b / cu / dev ] [ r ] [ a / ts ] [ ci ] [ gnx / int ] [ misc ] [ dev / stat ]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]