у всех такая петля?
6 m9-cr01-po1.msk.stream-internet.net (195.34.59.53) 16.653 ms 18.176 ms 19.642 ms
7 anc-cr01-te4-2.ff.stream-internet.net (195.34.53.226) 61.901 ms 56.566 ms 62.184 ms
8 de-cix1.rt721-001.retn.net (80.81.192.73) 60.303 ms 63.157 ms 64.182 ms
9 ge100-3.RT741-001.stk.retn.net (81.222.15.105) 59.792 ms 60.362 ms 58.577 ms
10 * * *
11 po1-1000.cerber.citytelecom.ru (217.65.1.246) 62.554 ms 63.774 ms 58.787 ms
12 po1-1000.br1-msk.citytelecom.ru (217.65.1.245) 286.910 ms 404.715 ms 413.324 ms
13 po1-1000.cerber.citytelecom.ru (217.65.1.246) 61.315 ms 60.739 ms 64.846 ms
14 po1-1000.br1-msk.citytelecom.ru (217.65.1.245) 461.855 ms 248.340 ms 268.963 ms
15 po1-1000.cerber.citytelecom.ru (217.65.1.246) 60.161 ms 60.565 ms 58.563 ms
16 po1-1000.br1-msk.citytelecom.ru (217.65.1.245) 130.354 ms 119.446 ms 222.136 ms
есть хэш, что-то вроде:
my %switcher_0 = (
'00FB' => \&node_1,
'0341' => \&node_124,
'0143' => \&node_12846,
"\n" => sub { return },
);
есть код:
sub node_0
{
$parameter[ 5 ] = fetch_parameter( 'ID' );
my $fref = $switcher_0{ $parameter[5] }();
if (defined($fref))
{
&$fref();
}
else
{
&$switcher_0{ "\n" }();
}
}
ругается так:
Global symbol "$switcher_0" requires explicit package name at ruler.pm line 15665.
syntax error at ruler.pm line 15665, near "$switcher_0{ "
syntax error at ruler.pm line 15667, near "}"
15665 это строка &$switcher_0{ "\n" }();
что не так?
есть потоковые утилиты -- типа awk -- которые на каждую входную строку могут генерировать выходную.
Есть ли гарантия в стандарте, что если я создам процесс, скажем awk '{ print }' и прилеплю ему на вход/выход пайпы, то если я кину на вход строку (не закрывая пайп), то я получу строку на выходе -- то есть не будет происходить никакой буферизации в пределах нескольких строк??
грубо говоря их нужно привести к чему-то типа КНФ. Неважно -- главное хоть как-то распарсить. Я коенчно могу построить AST, и обработать его как обычно. Но меня не покидает ощущение что на шелле можно сделать какой-то трюк с передачей этого выражения expr или awk, чтобы они распарсили его сами (они же все равно это умеют). Никаких идей?
обычная позиксовская утилита сорт.
Смотрим как она работает на линуксе.
Вот такой файл:
E0_1_0_0_1_0_T
E0_1_0_0_1_0T not E0_1_0_0_1_0_T
E0_1_0_0_1_0_T terminal @3T
Сортируем:
$ sort sss
E0_1_0_0_1_0_T
E0_1_0_0_1_0T not E0_1_0_0_1_0_T
E0_1_0_0_1_0_T terminal @3T
я не понял логики по которой оно так отсортировалось.
Я ожидал такое:
E0_1_0_0_1_0_T
E0_1_0_0_1_0_T terminal @3T
E0_1_0_0_1_0T not E0_1_0_0_1_0_T
Это традиции ГНУ/Линукс? Заниматься всякой цветной фигней и
неправильно реализовывать базовые вещи? Или это я неправ?
У кого есть под рукой нормальный Юникс/БСД? можете проверить как
там сортируется такой файл?
есть линуксовая машина, Генту, какое-то ядро из последних. Несколько раз повторялось -- во время тестирования забивался своп полностью апачами. И ядро валилось в панику: Out of memory and no killable processes. Непонятно почему ядро не может убить эти апачи? Судя по топу они находились в состоянии S
пишу первый раз XSD:)
кусок xml должен выглядеть примерно так:
<download_file_list>
<item type='File'>
<attribute name='FileDescription' value='Cool Game' />
<attribute name='Url' value='http://freeciv.org/' />
сейчас для этого пишу специальные типы:
<xs:simpleType name="downloadable_type">
<xs:restriction base="xs:string">
<xs:enumeration value="File" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="file_attr_name_description">
<xs:restriction base="xs:string">
<xs:enumeration value="FileDescription" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="file_attr_name_url">
<xs:restriction base="xs:string">
<xs:enumeration value="URL" />
</xs:restriction>
и потом их использую:
<xs:element name="download_file_list">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="attribute">
<xs:complexType>
<xs:attribute name="name" type="file_attr_name_description"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="attribute">
<xs:complexType>
<xs:attribute name="name" type="file_attr_name_url"/>
<xs:attribute name="value" type="url_type"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" use="required" type="downloadable_type"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
Есть вопросы: можно ли как-то обойтись без создания отдельного типа
file_attr_name_description? то есть как-то прямо написать в том
месте где нужно FileDescription.
Можно ли как-то создать тип name_value который будет матчить любой узел вида:
<attribute name='FileDescription' value='Cool Game' />
и ограничением этого типа получать частные случаи для FileDescription и URL.
вообще любые советы как это упростить приветствуются..
Есть такая задача (она кажется на удивление стандартной и общей, у
меня к ней сводятся сразу несколько задач, на первый взгляд
несвязанных):
Есть объекты, которые можно описать вектором параметров.
Есть набор правил:
Condition1 -> Action1
..............
ConditionN -> ActionN
Нужно сгенерировать код который выполнит те Action для которых Condition
выполнен.
Каждый Condition это булевская комбинация примарных выражений. Примарное выражение это тест из достаточно ограниченного набора типов:
например это может быть тест одной переменной на равенство, или меньше-больше
Это может быть тест на то матчится ли переменная регэкспом.
Это может быть тест на то что линейный функционал от набора переменных
больше нуля.
Таким образом для примарных выражений очень часто можно автоматически
вывести информацию о логическом следовании: например зная значение
одного выражения можно узнать значения некоторых других.
Более того в случае когда примарные выражения это тест линейного
функционала от нескольких переменных, то там можно автоматически
вывести отношения следования когда зная значения нескольких выражений
можно узнать значения многих других.
Разумеется нужно сгенерировать tree-like код, который сможет
учитывать зависимости выражений и не будет делать лишние вычисления.
Алгоритм который я собираюсь использовать таков: я беру набор всех
встречающихся примарных выражений. Дальше я смотрю каждое
примарное выражение. Каждое примарное выражение это разделение пространства на две части. Так как примарные выражения имеют
фиксированную структуру, то как правило я могу определить совместность
набора примарных выражений, таким образом я могу подсчитать L -- кол-во
Action'ов не имеющих пересечения с одной части пространства, я смогу подсчитать
R -- кол-во Action'ов не имеющих пересечения с другой частью пространства.
Еще могут быть Action'ы лежащие и там и там.
Дальше я возьму примарное выражение для которого минимально
выражение max(L, R). И сгенерирую код который вычислит его
и разветвит код на 2 бранча.
Далее в каждом бранче я проведу редукцию набора правил
с учетом знания значения этого выражения.
И повторю процесс для каждого бранча.
Теперь вопросы, является ли эта задача стандартной, есть ли у нее имя?
Какие другие алгоритмы для ее решения есть?
Эта задача кажется ложащейся на Пролог. Умеет ли Пролог ее оптимально
решать? Или какие-нибудь другие языки?
такая задача -- есть два регекспа, для начала basic regexps. Нужно уметь проверять совместны ли они, то есть существует ли строка которая удовлетворяет им обоим. Есть какие-то стандартные алгоритмы?
Сейчас на верхнем уровне есть 2 шаблона для одного и того же узла:
<xsl:template match="/shim/hardware">
... code 1
<xsl:template match="/shim/hardware">
... code 2
Если любой из них закомментировать, то оставшийся успешно отрабатывает. Если же они присутствуют оба, то срабатывает только один (последний). Как сделать чтобы срабатывали оба?
Я конечно могу слить их в один, но они концептуально отделены, поэтому хочу иметь их раздельно.
допустим апаче принимает сжатый запрос POST. Потом апаче расжимает его и передает скрипту. Если злоумышленник берет 500 мегабайт нулей, сжимает его в 500 кбайт и дает апачу. И так несколько запросов. Апач накроется расжимая их? Можно как-то настроить апач, чтобы он отвергал такие запросы?
Есть некое базовое множество, кол-во элементов в нем измеряется в сотнях. Оно фиксировано.
Есть набор подмножеств этого базового мн-ва. их могут быть тысячи. Этот набор тоже фиксирован.
Теперь нам предъявляют еще одно подмножество базового мн-ва и просят список всех подмн-в из набора, которые содержатся в нем. Это можно как-то реализовать эффективнее чем пройдя по всему набору и посчитав битовые маски?
я сегодня обнаружил одну вещь от которой прифигел. Эта вещь пошла в
мою копилку доказательств что линукс пионерская поделка..
Итак имеем 2-процессорный сервер с обычным генту:
$ uname -a
Linux some_srv 2.6.16.19 #1 SMP Sat Jun 23 19:35:24 MSD 2007 x86_64 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz GenuineIntel GNU/Linux
Запускаю 3 процесса тупо жрущих CPU.
Имеем:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13081 user 25 0 6992 868 740 R 100 0.0 4:48.62 a.out
13080 user 25 0 6988 868 740 R 50 0.0 2:24.87 a.out
13082 user 25 0 6992 868 740 R 50 0.0 2:24.73 a.out
мы видим что одному из процессов тупо отдано в 2 раза больше CPU.