LINUX.ORG.RU

Сообщения dilmah

 

а что с опросами?

захожу -- висит опрос про видеочипы который уже был когда-то -- это теперь старые опросы оживают? Хм, или я видел этот опрос в неподтвержденных?

>>>

dilmah
()

perl, сделать таймаут

Есть функция solve которая в 0.001% случаях может зависнуть.  Ее
нужно прервать по таймауту.

Пишу:

      warn "started solve\n";
      my $solution;
      eval {
        local $SIG{ALRM} = sub { die };
        alarm 5;
        $solution = solve($lp);
        alarm 0;
      };
      my $is_timeout = $@;
      delete_lp($lp);
      if ($is_timeout) {
        warn "time out\n";
      } else
      {
        warn "sol $solution\n";
        if ($solution == $INFEASIBLE)
        {
          # INCONSISTENCIES DETECTED
          return 0;
        }
      }

Пишет в stderr "started solve" и все, по таймауту не выходит,
висит в 100% CPU.  В чем проблема?  как решить?

>>>

dilmah
()

Перл: как сделать use переменного модуля

В текущей директории генерируется файл со случайным именем и расширением .pm -- в нем модуль, в переменной $var имя модуля. Как сделать use этого модуля и вызывать его функции?

>>>

dilmah
()

порекомендуйте ложу

вот думаю вступить в ложу во славу Творца и Законодателя.

В каких ложах состоят братья юниксоиды? Что там происходит? Что скажете о Достопочтенной Ложе Северная Звезда?

>>>

dilmah
()

perl ithreads, shared и загадочное изменение адресов

Пытаюсь использовать threads. Пока _никаких_ тредов я не порождаю. Все что я делаю -- это вставил в некоторых местах share. В очень ограниченном числе мест. Без этих share/shared все работает как часы.

Так уж получилось что я в некоторых местах закладываюсь на адреса -- то есть на то как стрингифицируется референс -- для последующего использования как индекс хэша.

Отладочная печать показывает, что до и после выполнения абсолютно безобидных строчек. Например таких: if (!defined($some_var))

адреса некоторых объектов _МЕНЯЮТСЯ_. Это происходит постоянно. Сами объекты не меняются.

КАКОГО ХРЕНА??

>>>

dilmah
()

адаптировать distcc?

есть желание проводить некую обработку данных на кластере. В принципе задача может лечь на distcc

У кого нибудь был опыт адаптации distcc к другим задачам? Или может есть какие-то аналоги?

>>>

dilmah
()

подскажите по геометрической поддержке в БД

есть всякие проекты типа postgis. Не нашел в FAQ: сколькимерные объекты они поддерживают? Любые или только 2-3-4?

>>>

dilmah
()

Теоретик языков программирования на ixbt

http://forum.ixbt.com/topic.cgi?id=64:1312

Из его трудов, определение свойств ЯП:

Косноязычие - плохое построение, непоследовательное, неясная структура, неговорящие имена операторов.
Костыль - нарушение базовой идеологии языка, путём латания в ней дыр.
Крендель - затруднённый несбалансированный синтаксис при описании конструкций.

>>>

dilmah
()

Перл: опции

нужно распарсить опции, где может быть несколько одинаковых опций: -U aaa -U bbb

Для одинаковых опций нужно получать список [ aaa, bbb ]

Каким модулем, как сделать?

>>>

dilmah
()

GNU grep — тормозилово

есть 12 мегабайтный файл.

Задача банальная -- отгрепать ^NODE.

С помощью gnu awk:

$ time { cat file | awk '/^NODE/ { print }' > /dev/null; }
real    0m0.929s
user    0m0.900s
sys     0m0.020s

Даже если делать вывод в терминал, все равно это занимает всего 25 реальных секунд!

А теперь великое Тормозилово grep (GNU grep) 2.5.1 из генту:

$ time { cat file | grep '^NODE' > /dev/null; }

real    4m11.329s
user    4m0.123s
sys     0m0.692s

>>>

dilmah
()

ixbt

у всех такая петля?

 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

>>>

dilmah
()

у кого есть подписка ACM?

dilmah
()

вопрос по перл

есть хэш, что-то вроде:

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" }();

что не так?
dilmah
()

гарантирует ли позикс реальную потоковость потоковых утилит?

есть потоковые утилиты -- типа awk -- которые на каждую входную строку могут генерировать выходную.

Есть ли гарантия в стандарте, что если я создам процесс, скажем awk '{ print }' и прилеплю ему на вход/выход пайпы, то если я кину на вход строку (не закрывая пайп), то я получу строку на выходе -- то есть не будет происходить никакой буферизации в пределах нескольких строк??

dilmah
()

парсинг выражений на шелле

нужно распарсить выражения вида:

(@9T) & !((! (@6T) & (@3T) & (@4T) | ! (@5T) ))

грубо говоря их нужно привести к чему-то типа КНФ. Неважно -- главное хоть как-то распарсить. Я коенчно могу построить AST, и обработать его как обычно. Но меня не покидает ощущение что на шелле можно сделать какой-то трюк с передачей этого выражения expr или awk, чтобы они распарсили его сами (они же все равно это умеют). Никаких идей?

dilmah
()

Непонятки с sort

обычная позиксовская утилита сорт.

Смотрим как она работает на линуксе.

Вот такой файл:

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

Это традиции ГНУ/Линукс? Заниматься всякой цветной фигней и
неправильно реализовывать базовые вещи?   Или это я неправ?
У кого есть под рукой нормальный Юникс/БСД?  можете проверить как
там сортируется такой файл?  
dilmah
()

их никто за язык не тянул

читал сейчас http://www.meranetworks.ru/about_us/fast_facts.php

Нижний Новгород, Россия (головной офис компании, центр рабоработки);

dilmah
()

OOM panic No killable process

есть линуксовая машина, Генту, какое-то ядро из последних. Несколько раз повторялось -- во время тестирования забивался своп полностью апачами. И ядро валилось в панику: Out of memory and no killable processes. Непонятно почему ядро не может убить эти апачи? Судя по топу они находились в состоянии S

dilmah
()

помощь в написании XSD

пишу первый раз 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.

вообще любые советы как это упростить приветствуются..
dilmah
()

Набор правил «Условие->Действие»; умеет ли такое Пролог или кто еще?

Есть такая задача (она кажется на удивление стандартной и общей, у
меня к ней сводятся сразу несколько задач, на первый взгляд
несвязанных):

Есть объекты, которые можно описать вектором параметров.

Есть набор правил:

Condition1 -> Action1
..............
ConditionN -> ActionN

Нужно сгенерировать код который выполнит те Action для которых Condition
выполнен.

Каждый Condition это булевская комбинация примарных выражений.  Примарное выражение это тест из достаточно ограниченного набора типов:
например это может быть тест одной переменной на равенство, или меньше-больше
Это может быть тест на то матчится ли переменная регэкспом.
Это может быть тест на то что линейный функционал от набора переменных
больше нуля.

Таким образом для примарных выражений очень часто можно автоматически
вывести информацию о логическом следовании: например зная значение
одного выражения можно узнать значения некоторых других.
Более того в случае когда примарные выражения это тест линейного
функционала от нескольких переменных, то там можно автоматически
вывести отношения следования когда зная значения нескольких выражений
можно узнать значения многих других.

Разумеется нужно сгенерировать tree-like код, который сможет
учитывать зависимости выражений и не будет делать лишние вычисления.

Алгоритм который я собираюсь использовать таков: я беру набор всех
встречающихся примарных выражений.  Дальше я смотрю каждое
примарное выражение.  Каждое примарное выражение это разделение пространства на две части.  Так как примарные выражения имеют
фиксированную структуру, то как правило я могу определить совместность
набора примарных выражений, таким образом я могу подсчитать L -- кол-во
Action'ов не имеющих пересечения с одной части пространства,  я смогу подсчитать
R -- кол-во Action'ов не имеющих пересечения с другой частью пространства.
Еще могут быть Action'ы лежащие и там и там.
Дальше я возьму примарное выражение для которого минимально
выражение max(L, R).  И сгенерирую код который вычислит его
и разветвит код на 2 бранча.

Далее в каждом бранче я проведу редукцию набора правил
с учетом знания значения этого выражения.
И повторю процесс для каждого бранча.


Теперь вопросы, является ли эта задача стандартной, есть ли у нее имя?
Какие другие алгоритмы для ее решения есть?

Эта задача кажется ложащейся на Пролог.  Умеет ли Пролог ее оптимально
решать?  Или какие-нибудь другие языки?

dilmah
()

RSS подписка на новые темы