Ычан: [d | b / bro / hr / l / m / mu / o / s / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / vn]
[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 9607)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5120 кБ.
  • Ныне 3654 unique user posts. Посмотреть каталог
  • Предельное количество бампов нити: 500
No. 9607  
Такой невнятный вопрос сейчас задам, держитесь, няши. Для перлобогов. Допустим есть перловый скрипт, допустим в нем есть много потоков. Допустим в каком-то потоке что-то происходит и родитель получает sig alrm. Внимание вопросы:
1. Что такого может произойти в потоке.
2. Как родителю узнать в каком треде это происходит и захендлить все это дело, в не вылетать по "сигнал таймера"?

На пике Аяно смущается от моего невежества.
No. 9614  
>>9607
1. Поток может послать этот сигнал самостоятельно просто так, никто не мешает посылать сигналы, если автору будет угодно, хоть SIGKILL.
2. Немного не уверен, с потоками давно не работал, на перле не писал несколько лет. Плохо помню, как соединяются родитель и дочерний процесс и каким образом они ловят сигналы друг друга, но разве идентификации пайпа, по которому он пришел недостаточно?
No. 10206  
Я в смятении. Почему вот это:

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  
>>10211
No. 10235  
На этот раз жабаскрипт.

Хочу из десятичного числа получить номера двоичных разрядов, в которых есть единичка. Разрядов максимум может быть 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  
Няши, возможно ли в люнепсе "слушать" файловый дескриптор? Поясняю. Допустим есть текстовый файл, в который некоторая программа что-то пишет построчно периодически. Я хочу сделать скрипт (демон), который бы "слушал" данный файл, т.е. не читал его полностью, а принимал бы строчку, которая была в данный момент записана в этот файл (будто это строчка пришла по сети).
Пока не могу понять в какую сторону гуглить.
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  
Кстати, про язык богов. Я хотел тут спросить, но все забывал.
Паттерны пака и анпака для меня оказались еще хуже, чем регекспы в плане понимания. Допустим есть строка, каждый символ которой есть число от 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.67KB, 350×190)
12048
Кто-нибудь тут сталкивался с 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

Хорошо всё то, что хорошо кончается.
Удалить сообщение []
Пароль  
[Mod]