Такой невнятный вопрос сейчас задам, держитесь, няши. Для перлобогов. Допустим есть перловый скрипт, допустим в нем есть много потоков. Допустим в каком-то потоке что-то происходит и родитель получает sig alrm. Внимание вопросы: 1. Что такого может произойти в потоке. 2. Как родителю узнать в каком треде это происходит и захендлить все это дело, в не вылетать по "сигнал таймера"? На пике Аяно смущается от моего невежества.
>>9607 1. Поток может послать этот сигнал самостоятельно просто так, никто не мешает посылать сигналы, если автору будет угодно, хоть SIGKILL. 2. Немного не уверен, с потоками давно не работал, на перле не писал несколько лет. Плохо помню, как соединяются родитель и дочерний процесс и каким образом они ловят сигналы друг друга, но разве идентификации пайпа, по которому он пришел недостаточно?
Я в смятении. Почему вот это: my @nya; tie @nya, 'Tie::File', $file, mode => O_RDONLY; #туева хуча вайлов, форов по этому массиву и пр. untie @nya; работает медленнее, чем вот это: open(NYA, $file) or die "Hallelujah!"; my @nya = <NYA>; close(NYA); #туева хуча вайлов, форов по этому массиву и пр. ?? Файлики большие, и по уму надо Тай делать, но какое же оно медленное. Что же мне теперь делать?
>>10206 Переходи на няшную сишечку же.
>>10211
На этот раз жабаскрипт. Хочу из десятичного числа получить номера двоичных разрядов, в которых есть единичка. Разрядов максимум может быть 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? Где порылась собака?
>>10235 Нашел решение. Как оказалось, в яваскрипте смещение работает максимум на 32 разряда, в итоге рабочий код: var loopback = ""; for (var j = 1;j < 49;j++){ if (Obj.loopback & 1 * Math.pow(2,(j - 1))) loopback += j + " "; } Хотя всем похуй же.
>>10238 Долго думал, зачем нужно 1*.
>>10240 тут вроде сначала лог. операция Obj.loopback & 1, а затем уже *.
>>1024 Нет. Сначала умножение на один, которое не нужно,потом побитное И.
>>10243 ты случайно с sql не перепутал? Или в яве умножение "старше" операции and?
>>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 (табличка внизу).
>>10247 хм, мой борланд говорит, что and по крайней мере на одном уровне с *, а вот javascript говорит, что борланд врет. На разных языках одна и та же формула будет давать разный результат.
>>10248 По-этому паскаль мало кто признает вменяемым языком. en.wikipedia.org/wiki/Comparison_of_Pascal_and_C#Precedence_levels
Няши, ищу нормальный таббер на чистом явоскрипте с возможностью динамически содавать и удалять табы. Есть что-то подобное в природе?
Няши, возможно ли в люнепсе "слушать" файловый дескриптор? Поясняю. Допустим есть текстовый файл, в который некоторая программа что-то пишет построчно периодически. Я хочу сделать скрипт (демон), который бы "слушал" данный файл, т.е. не читал его полностью, а принимал бы строчку, которая была в данный момент записана в этот файл (будто это строчка пришла по сети). Пока не могу понять в какую сторону гуглить.
>>10479 Размеры файлов сравнивай и бери себе дельту. Насколько я помню, в апи линупса нет таких вещей как "подвешивание" на события записи своих хендлеров, хотя, ты всегда можешь хэкнуть драйвер файловой системы.
>>10482 > Насколько я помню, в апи линупса нет таких вещей как "подвешивание" на события записи своих хендлеров man inotify
>>10483 >inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, НИИНТЕРПРАЙЗНО.
>>10479 man fifo
>>10479 http://freethreads.wordpress.com/2010/10/20/how-tail-f-work/
>>10574 Да. Именно это я и пытался сделать. Но сейчас я уже понял, что сия затея - хуита, ибо главная моя задача решилась более простыми и очевидными способами.
Кстати, про язык богов. Я хотел тут спросить, но все забывал. Паттерны пака и анпака для меня оказались еще хуже, чем регекспы в плане понимания. Допустим есть строка, каждый символ которой есть число от 0 до F. Я хочу разбить эту строку на шестнадцатеричные числа по два разряда, преобразовать каждое в десятичный эквивалент и записать их через точку в сохраненной последовательности (лишние нули слева при этом нужно убрать). Результат д. являться тоже строкой. Родил вот это: $nya_str = join('.', map(hex, unpack('(A2)*',$kawaii_str))) С тех пор меня мучает вопрос, а можно ли это сделать всего одним анпаком, но с каким-нибудь хитрым-прехитрым паттерном?
>>10602 Одним unpack'ом вряд ли можно обойтись, но можно сделать pack'ом и последующим unpack'ом: $nya_str = join '.', unpack 'C*', pack "H\052", $kawaii_str Исполнятьcя будет быстрее, но последний символ будет обрабатываться по-другому, если длина строки нечётная.
>>10659 Длина строки всегда четная и постоянная. Что делает pack "H\052" я, как не пытался сейчас вкурить, так и не понял.
>>10660 > Что делает pack "H\052" я, как не пытался сейчас вкурить, так и не понял. Это 'H*'. Движок Автобуса не умеет экранировать разметку, поэтому приходится выкручиваться.
Няши, можно ли эти два паттерна объединить в один? s/[\r\n]// for @array; s/[\r\n]{2}/\n/g for @array;
>>11282 Но зачем?
>>11284 Интересна сама возможность.
>>11285 s/^[^\r\n]*\K[\r\n]|[\r\n]{2}/"\n"x(length($&)-1)/ge for @array;
>>11288 Неа, никакого эффекта. Или автобус съел какие-то символы?
>>11291 Зачем ты до сих пор пользуешься Perl 5.8? Или какая у тебя версия?
>>11292 v5.10.1 есличо
>>11330 Тогда для какого массива >>11282 и >>11288 дают разный результат?
>>11332 Ну для вот такого например: $VAR17 = '123123 '; $VAR18 = '123123123 '; $VAR19 = '234234234 123123123 123123132 '; Ожидаемый результат: $VAR17 = '123123'; $VAR18 = '123123123'; $VAR19 = '234234234 123123123 123123132';
>>11333 Если я правильно понял, то тебе нужно не совсем то, что делает >>11282 , а просто удалить перевод строки в конце и сдвоенные переводы сделать обычными. Тогда так: s/[\r\n]{2}|[\r\n]$/"\n"x(length($&)-1)/ge for @array;
>>11339 Теперь всё няшно, воистину язык Богов. Поставил на заметку "х" и $&.
>>11340 А на хаскелле можно так писать flip $ foldr (:)
>>11341 Лучше бы "flip $ flop (:)" :3 Говорящие функции доставляют: https://www.google.ru/search?q=perl+poetry
>>11342 http://www.perlmonks.org/?node_id=1065235
https://metacpan.org/pod/Sub::Lambda (fn qw(h -t) => '@t')->(1..5) => [2,3,4,5]
И совсем хаскелл https://metacpan.org/pod/Sub::Lambda::Filter (\h -t -> { @t })->(1..5) => [2,3,4,5]
Кто-нибудь тут сталкивался с POE?
Почему вот это array ref: \@foo А это нет: \@foo[3..6] ?
>>13890 Не силён в перле, но не врубаюсь: зачем брать ссылку на объект, который не хранится в памяти - на ломтик массива? Это уже лямбда-исчисление какое-то.
>>13891 Ну есть функция, которой в аргументах надо отдать array ref, однако мне надо отдать не весь массив, а только его часть.
>>13893 Массив можно использовать в большем числе случаев, чем ломтик, верно? Ломтик - это таки не массив (опять же, не силён в Перле, но раз нельзя сослаться на ломтик, значит, так просто быть не должно, так разработчик решил, и что-то на это решение завязано). Нагуглил: http://stackoverflow.com/questions/15160882/perl-slice-an-array-without-creating-a-whole-new-array
>>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] ], с которым у меня всё и заработало. Спасибо.
>>13896 Хорошо всё то, что хорошо кончается.
- wahaba + wakaba 3.0.9 + futaba + futallaby -