[00:00:13] <valexey> genieprox: в стиле "кто подставил кролика роджера" тогда уж
[00:00:28] <valexey> только совершенно без накала страстей
[00:00:45] <valexey> и без какого-либо противостояния
[00:00:55] <valexey> и без морали
[00:01:10] <valexey> и с никакой графикой :-)
[00:02:28] <valexey> единственная зацепка, какая-то художественная ценность тут может быть попытка показать "что ощущает человек, и как быть человеку, когда он находится под прессом неодолимой силы"
[00:02:37] <valexey> но у стругацких это много лучше показано.
[00:02:46] <valexey> просто на порядок. или на порядок порядков.
[00:03:51] <valexey> genieprox: а при чем тут оберон?
[00:04:02] <valexey> /me наконец то дома.
[00:06:34] <kemiisto> я послезавтра тоже буду :D
[00:06:42] <kemiisto> ну или чуток в Москве поторчу
[00:06:48] <kemiisto> ОТПУСК!!!111
[00:08:06] <valexey> афигеть. тебя отпустили? :-)
[00:08:19] <kemiisto> а кто меня задержит?
[00:08:58] <valexey> /me радуется что теперь есть студент
[00:09:12] <valexey> в одиночку я хрен с два успею все сдалть за месяц
[00:17:56] <kemiisto> Фу использовать рабский труд в 21 веке!
[00:18:02] <kemiisto> Это нетоллерантно!
[00:18:03] <kemiisto> :D
[00:18:52] <valexey> ну, мы ему заплатим
[00:18:54] <valexey> потом
[00:18:57] <valexey> баксов 200
[08:25:00] <geniepro> не ну мультик всё же зачётный )))
[08:50:43] <geniepro> http://yantayga.livejournal.com/33443.html -- компорт на хацкеле
[09:26:05] <geniepro> Linda Hardy (игравшая ту инопланетянку) -- Miss France 1992
[11:22:48] <geniepro> http://samolisov.blogspot.com/2010/03/java_27.html
Имитируем алгебраические типы данных в языке Java

зачем -- непонятно, но всё же ))
[11:25:38] <geniepro> Как игры встроятся в жизнь и улучшат её
http://www.computerra.ru/print/617056/
[13:31:35] <geniepro> http://13-49-ru.blogspot.com/2011/06/2.html
[13:38:19] <valexey> что-то дизер стал какой-то нервный
[13:38:54] <valexey> видимо замучали студенты тупизной в сессию
[17:27:13] <valexey> /me утоптал fir-фильтр в 16ти битную целочисленную арифметику
[17:27:20] <valexey> /me доволен як слон
[17:55:36] <valexey> http://www.wisdump.com/wp-content/uploads/2009/09/google-sfida-microsoft-con-chrome-fieni.jpg
[18:18:11] <vlad2> А как же моторола? :)
[18:18:48] <valexey> а что моторолла? :-) думаешь у них есть интересные проекты? это ж унылый монстр.
[18:19:00] <valexey> аля мелкософт (не MSR)
[18:20:43] <vlad2> А если позоden& ^)
[18:20:49] <vlad2> позовут?
[18:21:55] <valexey> ну, если у них есть проект интересней моего, то почему бы и нет
[18:21:56] <valexey> ?
[18:22:16] <valexey> с другой стороны в моторолле специфика такая… не стартапёрская :-)
[18:22:47] <valexey> а у нас тут хорошо, на каждом ответственности выше крыши. могут и пришибить в случае чего. приятно.
[18:23:05] <vlad2> стартаперский но написанию почти как старперский :)
[18:23:47] <valexey> ага :-)
[18:25:40] <vlad2> У нас в унивеском слэнге было специальное обозначение: "СП" :) Коротко, прилично и понятно :)
[18:25:53] <valexey> :-)
[18:26:00] <vlad2> СП-проект - сразу понятно про что :)
[18:26:12] <valexey> Стартап проект? :-D
[18:26:15] <valexey> ;-)
[18:26:20] <vlad2> Угу ;)
[18:27:06] <valexey> Облин, MSP430 не умеет умножение
[18:27:16] <valexey> /me facepalm
[18:27:20] <vlad2> Вот если info21 когда-нибудь опубликует свое поделие - это тоже будет СП-проект :)
[18:27:28] <valexey> точнее, там для умножения есть некое переферийное устройство.
[18:27:31] <vlad2> Ужос! :)
[18:28:01] <valexey> соответственно цомпилятор умножение трактует как хрень софтварную, и реализует его через множество сложений
[18:28:11] <vlad2> Даже спектрум умел!
[18:28:12] <valexey> а для того, чтобы было быстро, нужно руками писать кот.
[18:28:22] <vlad2> И КР580ВМ80А
[18:28:25] <valexey> то есть a*b не напишешь
[18:29:45] <valexey> жестоко однако. надо будет препроцессором пройтись что-ли.
[18:30:06] <valexey> позаменять умножения на хитрожопое внеязыковое аппаратное
[18:30:55] <vlad2> Ты ж говоришь там нет аппаратного?
[18:31:10] <vlad2> Или ты про сопроцессор?
[18:31:19] <vlad2> Про который не знает компиялтор?
[18:31:21] <valexey> есть, но через перефирийное устройство, про которое компилятор нифкурсе
[18:31:24] <valexey> угу
[18:31:31] <valexey> http://www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/7.htm
[18:32:04] <vlad2> Вот если бы это был компилятор оберона, то ты бы за пару часов его допилил ;) Без всяких препроцессоров :)
[18:32:37] <valexey> ну, если бы компилятор оберона был бы писан не на обероне, а скажем на хаскеле, то наверно да.
[18:33:16] <valexey> алсо:
[18:33:20] <valexey> "Если прерывание произошло после записи OP1, но до записи OP2, а умножитель используется в процедуре обработки прерывания, исходный выбранный режим умножителя будет потерян и результат станет непредсказуемым."
[18:33:27] <vlad2> Хе-хе. Это надругательство над идеями оберона :)
[18:34:08] <valexey> а на кой компилятор писать на том же самом языке?
[18:34:11] <vlad2> велкам ту микроконтроллеры :)
[18:34:23] <valexey> если этот язык конечно не предназначен специально для написания компиляторов
[18:34:43] <vlad2> Тебе ж рассказывали - чтоб выточить правильный язык :)
[18:34:45] <valexey> такой подход может привести к излишнему упрощению языка. его примитизации
[18:35:17] <vlad2> Да! Но не больше какого-то минимимума, необходимого для создаия компилятора :)
[18:35:48] <vlad2> Т.е. все стремится к некой "оптимальной" космологической постоянной :)
[18:35:54] <valexey> угу-угу. в результате у нас получится язык идеально подходящий только для того, чтобы писать компилятор самого себя
[18:36:58] <valexey> Тем более что у оберона еще одно было условие служащее еще большей примитизации языка - компилятор должен быть не оптимизирующим и однопроходным
[18:37:14] <vlad2> Да. Ну такой язык просто допилить под конкретную задачу. Если я правильно понял теорию :) И если задача не сильно отличается от написания компилятора :)
[18:37:34] <valexey> причем компилятора такого вот простого языка, ога.
[18:38:43] <valexey> кстати, поскольку компилятор простой, не более 5-10 тыс строк кода (даже такого низкоуровнего), разработчик оного языка не успевает пострадать от неприспособленности языка для больших проектов.
[18:38:59] <vlad2> Ну там есть какой-то предел примитивизации в виде аппаруты. Грубо говоря, нельзя написать компилятр в машинные коды из одного оператора языка.
[18:39:09] <valexey> Не страдает от отсутствия стандартной либы, и вообще от работы коллективом а не соло.
[18:39:33] <vlad2> Язык - чемоданчик! :)
[18:39:46] <valexey> Который так легко и просто выкинуть на помойку!
[18:39:47] <vlad2> Пришел, увидел, победил! :)
[18:40:25] <genieprox> i8080 не умел умножение. и, думаю, z80 тоже не умел
[18:40:42] <vlad2> Имел. Так и назывался - MUL
[18:40:51] <genieprox> а что там за поделие у инфо21? почему стартапное?
[18:40:55] <valexey> "Для увеличения производительности Z80, не имеющего, как и i8080, аппаратных команд деления иумножения"
[18:40:58] <vlad2> Может не за несколько тактов, но имел.
[18:41:03] <valexey> http://ru.wikipedia.org/wiki/Zilog_Z80
[18:41:09] <vlad2> Насчет деления не уцверн.
[18:41:23] <valexey> Для увеличения производительности Z80, не имеющего, как и i8080, аппаратных команд деления и умножения, а также команд для работы над числами с плавающей запятой, использовались сопроцессоры.
[18:42:30] <valexey> А от деления я избавился. Использую для этого простой сдвиг. Мне достаточно.
[18:42:46] <genieprox> я же помню, как глазел на разные варианты подпрограмм для умножения на i8080 -- там авторы хвастались: "я уложился в 215 инструкций!"
[18:42:56] <valexey> Микроконтроллерный кот чуть менее чем на половину состоит из магических чисел :-)
[18:43:48] <valexey> И уже есть одно место где мною в коментариях написано "зуб даю, тут не будет арифметического переполнения, ибо вот рассчеты"
[18:44:54] <vlad2> Да, да, вспоминаем ариан-5 ;)
[18:45:10] <valexey> упс
[18:45:12] <vlad2> Да, видимо, запамятовал я асм z80... :)
[18:45:22] <valexey> ну, этта… у нас тут и исключений то как класса нет
[18:45:28] <valexey> и плавающей точки нет в принципе
[18:45:38] <valexey> все целочисленно.
[18:45:46] <subj_rs> ариан-5 как летал так и летает
[18:45:59] <valexey> о! больная тема! ;-)
[18:46:02] <subj_rs> булава намного чаще падала вон, да и глонасс-спутники
[18:46:25] <subj_rs> чо эт больная? будто ракетоносители не падали никогда
[18:46:29] <valexey> алсо мы все пишем на православной сишечке, без богомерзких ад да оберонов.
[18:46:42] <subj_rs> сишечка православная?
[18:46:45] <valexey> subj_rs: ну, ты же резко откликнулся, значит больная :-)
[18:46:47] <subj_rs> вы рехнулись
[18:46:48] <valexey> конечно!
[18:46:52] <valexey> аж с двумя крестами!
[18:46:56] <subj_rs> знакомое слово увидел )
[18:46:56] <valexey> бывает ;-)
[18:47:24] <valexey> Си - хороший, простой и надежный язык.
[18:47:39] <valexey> самое то для embedded систем.
[18:47:59] <subj_rs> тешь себя )
[18:48:04] <genieprox> http://nemesis.lonestar.org/computers/tandy/software/apps/m4/qd/opcodes.html
[18:48:09] <valexey> дык работает же!
[18:49:10] <valexey> ах, да. я еще и сишники в код через инклюды втыкаю
[18:49:28] <genieprox> булава падала из-за низкокачественных резиновых прокладок и тд и тп. то есть железо подводило
[18:49:43] <valexey> и строчки вроде такой - обычное дело:
[18:49:45] <valexey> val+=(b[pos]*buf[pos])>>3, ktotal+=b[pos], pos++;
[18:49:46] <subj_rs> а проектировали то на чем?
[18:50:14] <genieprox> а вот в контроллерах i8051 и i8096 есть умножение и деление
[18:51:22] <genieprox> я на крестах стараюсь ничо не писать -- нунах
[18:51:25] <valexey> я достаточно богомерзок? :-)
[18:51:56] <valexey> видимо не достаточно. такс. надо еще что-нибудь найти
[18:51:57] <valexey> во!
[18:52:11] <valexey>        while () {

           if (1>scanf("%d %d %*d", &inir, &inr) ) {
               int c = 0;
               while ('\n' != (c=getchar())) if (c==EOF) return 0;
               continue;
           }
[18:52:32] <genieprox> зачем так: val+=(b[pos]*buf[pos])>>3, ktotal+=b[pos], pos++;
если это ничем не отличается от val+=(b[pos]*buf[pos])>>3; ktotal+=b[pos]; pos++;
???
[18:52:49] <valexey> genieprox: чтобы лишние фигурные скобочки не рисовать.
[18:53:05] <genieprox> жуть! растрелять!!!111
[18:53:15] <valexey> фигурные скобочки в сях практически не нужны на самом деле
[18:53:37] <valexey> просто народ делает think не достаточно different
[18:54:16] <valexey> хорош цикл? достаточно не по феншую?
[18:54:19] <genieprox> scanf("%d %d %*d", &inir, &inr) -- тут точно нет ашыпки? я бы вот афтара порвал бы!
[18:54:31] <valexey> да, там всралать очемятка - while(1) конечно же
[18:54:36] <valexey> genieprox: точно нет ошибки
[18:54:58] <genieprox> %*в -- каков глубинный смысл этих трёх символов?
[18:55:07] <genieprox> %*d
[18:55:18] <valexey> заматчить целоче число но его не использовать нигде
[18:55:27] <valexey> поэтому там и нет третьей переменной, а только две
[18:55:49] <genieprox> а почему нет комментария про эту особую ситуацию?
[18:56:02] <valexey> потому, что это стандартный форматный ввод.
[18:56:06] <valexey> фигли там коментировать?
[18:56:07] <genieprox> растреллять!!!
[18:56:39] <genieprox> любой вменяемый прогер потом скажет: "Чоза говнокод???"
[18:56:46] <valexey> ты в хаскеле при паттерн-матчинге когда пишешь foo a _ _ = bububu — всегда коментируешь эти прочерки?
[18:57:03] <genieprox> в хаскелле это оговаривается в описании языка!!!
[18:57:17] <valexey> а тут это оговаривается в стандартной либе
[18:57:22] <genieprox> о_О
[18:57:23] <Жаба> genieprox, чо вылупился?
[18:57:26] <genieprox> это де?
[18:57:35] <valexey> если чел не знает стандартную либу, значит он не знает языка. а если не знает языка, пусть идет фсад
[18:57:36] <shaggie> не знал про звёздочку в форматной строке
[18:57:39] <valexey> man scanf
[18:58:03] <valexey> *        Suppresses assignment.  The conversion that follows occurs as
             usual, but no pointer is used; the result of the conversion is
             simply discarded.

[18:58:27] <shaggie> от жеж блин
[18:58:35] <shaggie> век живи, век учись, дураком помрёшь
[18:58:41] <vlad2> Я тоже не знал :)
[18:58:56] <valexey> man рулит :-)
[19:00:19] <genieprox> писец! си придуман говнокодерами для говнокодеров! за 15 лет знакомства с сями впервые вижу такой формат. в справочнике он и правда упоминается, но никем и нигде не используется!!!!!
[19:00:55] <valexey> это просто потому, что сишники редко на ФП программят. а я попрограммил, и переношу опыт и вижу что все то же самое в сях, только удобней :-)
[19:01:16] <genieprox> недаром си был придуман для написания говно-ОС Юнипс!!!
[19:01:55] <valexey> мощный батхерт от вскрывшегося незнания элементарных вещей? :-)
[19:03:48] <genieprox> ну ладно, положим в хаскелл _ чётко заметна, а в сях в мешанине закорючек звёздочку можно просто не заметить!!!
[19:04:26] <valexey> сложно не заметить. если после % не идет сразу идентификатор типа, а добавлен модификатор дополнительный, ты его всяко заметишь.
[19:06:09] <genieprox> меня вот чо не устраивает в scanf -- то, что он не понимает такой вариант форматной строки: "%s;%s;%s" ну и тп
[19:06:32] <valexey> а что этот вариант должен делать?
[19:06:49] <genieprox> у разбить строку csv на подстроки же...
[19:07:24] <genieprox> если разделители пробелы, то пашет, а если запятые и прочие левые знаки -- пюлюёт!
[19:07:27] <shaggie> ленивая квантификация?
[19:07:38] <genieprox> одну строку выдаст и всё на этом
[19:07:45] <shaggie> си такого не умеет
[19:08:27] <genieprox> с пробелами умеет заменять запятые на пробелы -- не вариант, потому что в подстроке могут быть пробелы
[19:08:29] <valexey> спокойно. по моему, это можно сделать.
[19:08:42] <genieprox> как? о_О
[19:09:20] <valexey> щща
[19:10:17] <valexey> "For any of the preceding specifiers, an optional separator character can be specified immediately preceding the vector size specifier. If no separator is specified, the default separator is a space unless the conversion is c, in which case the default separator is null. The set of supported optional separators are , (comma), ; (semicolon),: (colon), and _ (underscore)."
[19:11:00] <genieprox> это де? о_О
[19:12:22] <valexey> это там же :-)
[19:12:58] <valexey> но вообще, через scanf это несколько извратно, ведь есть strtok
[19:13:36] <genieprox> в моём справочнике об этом не упоминается ((
[19:14:13] <valexey> а что у тебя за справочник?
[19:15:15] <genieprox> "М.И Болски. Язык программирования Си" 1988г -- мне хватает )))
[19:15:39] <valexey> это ж даже до принятия стандарта :-)
[19:15:53] <genieprox> там аж целых 96 страниц размером 15 см на 10 см ))
[19:16:09] <shaggie> до принятия обоих стандартов
[19:16:17] <valexey> олдскул!
[19:16:20] <valexey> СП
[19:16:22] <valexey> :-)
[19:16:29] <genieprox> оригинал всего-то 1985 года -- тогда уже с++ был вовсю! )))
[19:17:50] <valexey> ща читалку csv накидаю
[19:18:44] <genieprox> "C89

В 1983 году Американский национальный институт стандартов сформировал комитет X3J11 для создания спецификации стандарта C. В 1989 году, после длительного и напряжённого процесса, стандарт был завершён и утверждён как ANSI X3.159-1989 «Язык программирования C». Именно эту версию часто называют «ANSI C», или «C89» (чтобы отличить её от C99)."

вот долботрясы! 6 лет делали стандарт! да Ада и то быстрее делалась )))
[19:32:06] <vlad2> /me подтверждает - СП :)
[19:32:55] <vlad2> Хе-хе. А вот оберон - до сих пор делается :)
[19:36:12] <valexey> genieprox: нна: http://pastebin.com/HLJ3TXkw
[19:36:40] <valexey> MacBook-Pro-Valexey:c valexey$ cat test.csv
hello world;123
321;geniepro c user
666;MacBook-Pro-Valexey:c valexey$ cat test.csv | ./a.out
field = hello world
field = 123
field = 321
field = geniepro c user
field = 666

[19:37:09] <valexey> сверхсекретные технологии :-)
[19:45:03] <shaggie> угу, сверхсекретные. не хотят гуглится
[19:45:24] <valexey> в смысле? что там гуглить то? man scanf
[19:45:29] <valexey> я оттуда все вычитал
[19:45:44] <valexey> [     Matches a nonempty sequence of characters from the specified set of
          accepted characters; the next pointer must be a pointer to char,
          and there must be enough room for all the characters in the string,
          plus a terminating NUL character.  The usual skip of leading white
          space is suppressed.  The string is to be made up of characters in
          (or not in) a particular set; the set is defined by the characters
          between the open bracket [ character and a close bracket ] charac-
          ter.  The set excludes those characters if the first character
          after the open bracket is a circumflex ^.  To include a close
          bracket in the set, make it the first character after the open
          bracket or the circumflex; any other position will end the set.
          The hyphen character - is also special; when placed between two
          other characters, it adds all intervening characters to the set.
          To include a hyphen, make it the last character before the final
          close bracket.  For instance, `[^]0-9-]' means the set ``everything
          except close bracket, zero through nine, and hyphen''.  The string
          ends with the appearance of a character not in the (or, with a cir-
          cumflex, in) set or when the field width runs out.
[19:46:46] <shaggie> нашёл, спасибо
[19:49:48] <valexey> то у них, понимаешь, линукс не работает, то сканф не сканфит :-)
[20:06:33] <genieprox> валексей, попытка, конечно, интересная, но с кансоли-то мне считывать данные ниразу нинадо.
мне надо из строки считывать, то есть через sscanf, и там проблема -- зацикливается на первом прочтённом элементе... ((
[20:10:37] <valexey> не понял. какая разница? давай кот.
[20:11:02] <valexey> дай пример входных данных на сишечке
[20:11:07] <valexey> я подгоню пример.
[20:11:09] <valexey> там элементарно все
[20:11:28] <genieprox> #include <stdio.h>

char* str = "test;123; aw w 3213 ; 3425 35r fef;12.32;";

int main()
{
   char buf[128];

   while (1==sscanf(str, "%126[^;\n\r]", buf))
   {
   printf("field = %s\n", buf),
   sscanf(str, "%126[;\r\n]", buf);
   }
   return 0;
}
[20:11:44] <valexey> ok. сейчас все будет. :-)
[20:12:06] <valexey> кстати, а почему не strtok? не хочется разрушать строку?
[20:12:49] <genieprox> оно ещё её и разрушает? ))) о_О
[20:19:36] <valexey> genieprox: наслаждайся:
[20:19:41] <valexey> #include <stdio.h>

const char* str = "test;123; aw w 3213 ; 3425 35r fef;12.32;";

int main()
{
 char buf[128];
 int len = 0;

 const char* ptr = str;

 while (1==sscanf(ptr, "%126[^;\n\r]%n", buf, &len)) {
     printf("field = %s\n", buf);
     ptr+=len;
     if (*ptr!=';' && *ptr!='\r' && *ptr!='\n') {
 printf("error in input csv\n");
         return -1;
     }
     ++ptr;
 }

 return 0;

[20:19:48] <valexey> :-)
[20:21:09] <valexey> $ ./a.out
field = test
field = 123
field =  aw w 3213
field =  3425 35r fef
field = 12.32

[20:21:15] <shaggie> strtok вставляет NULLы в строку там где должны быть делимитеры. разрушает её. если была нужна - изволь скопировать и стртокать вторую, во избежание
[20:21:48] <valexey> а еще strtok не реентерабельна :-)
[20:23:25] <genieprox> чота жутко )))
[20:23:49] <valexey> это ты про что? :-)
[20:24:04] <genieprox> про всё ))
[20:24:19] <valexey> дык просто же все :-)
[20:25:18] <valexey> си - классный высокоуровневый язык.
[20:25:43] <genieprox> дащас )))
[20:25:50] <valexey> угу.
[20:25:59] <valexey> близость к железу не делает его низкоуровневым
[20:26:24] <valexey> высокоровневые абстракции на нем выражаются? выражаются. значит высокоуровневый
[20:26:31] <valexey> всяко уровнем выше чем оберон :-)
[20:28:00] <genieprox> вот мой вариант: http://pastebin.com/9YK9HTah
намана работает, и, уверен, на порядки шустрее, чем с sscanf и прочими высокоуровневыми вариантами
[20:28:38] <valexey> а зачем быть уверенным? ты проверь :-)
[20:29:54] <genieprox> лень.
но и так очевидно, что у меня минимум операций, а разбор одной тока форматной строки с регекспом чего стоит...
[20:30:03] <valexey> алсо в таком оформлении меня убивает число пустых строк (с единственной скобочкой на строке например)
[20:30:26] <genieprox> дело в том, что у нас это узкое место, и я старался по максимуму ускорить его
[20:31:20] <genieprox> студия и сишарп делают такой стиль привычным для миллионов быдлокодеров на сишарпе ))
[20:31:29] <valexey> это ужасно
[20:31:33] <valexey> кода нет, только вода
[20:31:49] <genieprox> ужасно что? стиль? о_О
[20:31:54] <vlad2> Это ты пересидел в хардкорном линуксовом С :)
[20:31:55] <valexey> я вот одного уже отучил от такого стиля :-)
[20:31:58] <genieprox> или привычность для миллионов?
[20:31:59] <valexey> успешно
[20:32:06] <vlad2> Оберонщики, вот, тоже любят лепить :)
[20:32:19] <genieprox> миллионы мух не могут ошибацца -- в говне определённо что-то есть ))
[20:32:44] <valexey> я не люблю лепить, я не люблю пустых строк. питонисты тоже не любят, ибо жутко батхертят когда видят потраченный строчки на скобочки фигурные :-)
[20:33:11] <vlad2> Скобочки фигурные - да, должны умереть. Пустые строки - нет :)
[20:33:14] <valexey> genieprox: дык этта… может тест
[20:33:20] <valexey> прогоним какой?
[20:33:23] <genieprox> надо делать код так, что бы даже трёхлетний карапуз не смог ашыпиться, пытаясь его понять!!!111
[20:33:36] <valexey> так не бывает :-)
[20:33:55] <vlad2> Бывает, если циклы правильно писать :)
[20:34:43] <valexey> ога-ога.
[20:34:54] <valexey> каждая буква будет понятна, а в целом смысл - нет
[20:35:38] <valexey> genieprox: у тебя есть мега csv файло? :-)
[20:35:45] <genieprox> чота чат жутко тормозит ((
[20:36:01] <vlad2> ...настоящий оберонщик не боится конъюкции >3 в условии цикла :)
[20:37:06] <vlad2> ...настоящий оберонщик не боится, что эта самамя конъюкция может иметь побочные эффекты :)
[20:38:35] <valexey> зато настоящий оберонщик боится работы с памятью  и указателей :-)
[20:38:53] <vlad2> Но при этом не боится IMPORT SYSTEM :)
[20:40:21] <valexey> но боится синтаксиса.
[20:41:48] <vlad2> Синтаксис для оберонщика - священен.
[20:41:51] <valexey> да, компилятров он тоже боится
[20:42:01] <valexey> особенно оптимизирующих!
[20:42:06] <valexey> он им не доверяет!
[20:42:20] <valexey> ибо они слишком умны, и явно что-то задумали...
[20:42:22] <vlad2> Все остальные синтаксисы - вне религии :)
[20:45:05] <genieprox> нету мегафайлы ((
[20:45:42] <valexey> а почему у вас тогда это узкое место?
[20:46:40] <valexey> алсо в scanf'е форматная строка не является регулярным выражением.
[20:47:38] <valexey> ладно, пойду домой. дома доковыряю фильтр. осталось сделать эффективный кольцевой буфер вместо текущего.
[20:47:47] <valexey> и можно будет микроконтрольщикам отдавать.
[22:14:48] <valexey> http://www.opennet.ru/opennews/art.shtml?num=31113
[22:18:07] <genieprox> просто у нас куча мелких файлов постоянно обрабатывается -- вся инфа на терминалы в формате csv-файлов передаётся...
[22:19:07] <valexey> c какой частотой?
[22:19:16] <valexey> трафикогенератор написать же легко можно.
[22:19:19] <valexey> для тестофф.
[22:20:23] <valexey> по идее в этом месте (парсинг csv) узкого места не должно быть, узким местом будет сетевуха машины :-)
[22:20:35] <valexey> ну, или как там у вас данные на машину попадают в таких количествах?
[22:20:37] <genieprox> да в этом тесте мой вариант обречён на победу... )))
[22:22:03] <genieprox> сетевуха? ну нинаю... там данные копятся, копятся, потом, когда терминал освобождается от текущей операции, внутри которых обработка большинства таких файлов запрещена, вся накопившаяся куча должна быстренько обработаться
[22:22:39] <valexey> так. опиши систему :-) это хрань крутится на терминале, или на сервере куда терминалы данные сливают?
[22:22:57] <valexey> откуда есть берутся csv файлы и как попадают на машину где они обрабатываются?
[22:22:57] <genieprox> там процессоры слабые -- VIA c7 -- де 1300, де 2000
[22:24:13] <valexey> "> Готовте денежки, скоро миссионеры из Microsoft будут ходить по квартиркам и собирать подати с помощью полиции,утюга,и санкций.

Вечер. У высокого здания из красного кирпича без окон стоит человек на вид 35 лет в помятом пиджачке с отпечатком протектора кроссовка на спине, нервно перекидывает кожанный чёрный портфельчик из руки в руку. Перед ним железная лестница уходит на три этажа вверх и заканчивается дверью едва освещаемая тусклой лампочкой. И вот он решается подняться и постучаться в дверь...

- Здравствуйте, я представляю m$... мы хотели бы договориться ...

Незнакомец из двери прерывает речь ударом ногой в грудь и криком:

- Это Рашка!

Серое тело покатилось с лестницы вниз... "
[22:25:18] <genieprox> ну файлы попадают с разных мест -- часть генерируется на сервере, часть приходит с другого сервера, часть -- с других терминалов (через сервер). терминал постоянно их забирает (отдельная утилитка на терминале берёт их раз в полсекунды и переносит в определённые папки на терминале). ну а основная программа, когда не занята, раз в 0.7 сек смотрит, что там ей дали (из этих папок)
[22:29:33] <genieprox> http://www.gentoo.org/news/20100125-misa-guitar-interview.xml
о_О
[22:49:45] <subjrs> /me начал смотреть фильм Железный крест
[23:01:41] <valexey> чо-то похоже жесть. или я дурак, или кто-то еще.
[23:02:02] <valexey> такое ощущение, что время работы sscanf зависит от размера входой строки как O(n)
[23:02:39] <genieprox> может там вычисляется длина строки? )))
[23:02:45] <valexey> нафига?
[23:03:01] <valexey> scanf же не вычисляет длину строки :-)
[23:03:42] <genieprox> да, кстати, вот в моём варианте в случае, если подстрока в исходной строке не помещается в отведённый для неё массив символов, то она просто обрезается, а в случае с sscanf -- нарушение памяти будет, что ле?
[23:04:10] <valexey> не будет. я же явно указываю сколько класть можно.
[23:04:24] <valexey> скорее всего просто не сматчится
[23:05:11] <genieprox> а, ну да, то есть для каждой подстроки надо будет ещё и размер её указывать, переводя этот размер в строчный вид )))
ну, с одной стороны это гибко, но мееедлееенннооо ))
[23:05:39] <genieprox> не, ну крис айзек вапще суперский рок-н-рольщик ))
[23:06:58] <genieprox> помню, смарел как-то давно сериал "Пятый угол", там у гавного героя была куча дисков Криса Айзека -- журналистка, которая ему нравилась, на основании этой кучи дисков сделала разные выводы о главгерое ))
[23:07:49] <valexey> почему медленно? один фиг.
[23:08:43] <valexey> глянул в исходник. таки ужоз. там действительно длина строки считается.
[23:08:51] <valexey> /me facepalm
[23:11:58] <genieprox> ping
[23:12:42] <genieprox> ping
[23:12:45] <Жаба> genieprox, Pong from you:  46.224788 s
[23:12:56] <genieprox> а зачем? ))
[23:13:00] <genieprox> о_О
[23:13:00] <Жаба> genieprox, чо вылупился?
[23:13:03] <genieprox> зштп
[23:13:06] <genieprox> ping
[23:13:08] <Жаба> genieprox, Pong from you:  1.914537 s
[23:13:38] <valexey> унутре у ней неонка.
[23:13:56] <valexey> в смысле, в данной реализации унутре оно эту строку представляет в виде файла.
[23:14:03] <valexey> а у файла есть поле - размер :-)
[23:14:07] <genieprox> ))))
[23:14:25] <genieprox> вот пачиму ваши линупсы такие тормоза )))
[23:16:21] <genieprox> ))) минипс! )))
00001 /*
00002  * sscanf - read formatted output from a string
00003  */
00004 /* $Header: /opt/proj/minix/cvsroot/src/lib/stdio/sscanf.c,v 1.1.1.1 2005/04/21 14:56:36 beng Exp $ */
00005
00006 #include        <stdio.h>
00007 #include        <stdarg.h>
00008 #include        <string.h>
00009 #include        "loc_incl.h"
00010
00011 int sscanf(const char *s, const char *format, ...)
00012 {
00013         va_list ap;
00014         int retval;
00015         FILE tmp_stream;
00016
00017         va_start(ap, format);
00018
00019         tmp_stream._fd     = -1;
00020         tmp_stream._flags  = _IOREAD + _IONBF + _IOREADING;
00021         tmp_stream._buf    = (unsigned char *) s;
00022         tmp_stream._ptr    = (unsigned char *) s;
00023         tmp_stream._count  = strlen(s);
00024
00025         retval = _doscan(&tmp_stream, format, ap);
00026
00027         va_end(ap);
00028
00029         return retval;
00030 }
[23:17:10] <genieprox> не, мой вариант на порядок порядков быстрее должен быть )))
[23:17:37] <valexey> гм. хотя, именно в линупсовой версии этого нет.
[23:17:39] <valexey> интересно.
[23:17:48] <valexey> а то что я нашел, и ты нашел - то бздевое.
[23:17:53] <valexey> не GPL'ное :-)
[23:18:26] <genieprox> 00001
00007 /* Embedded Xinu, Copyright (C) 2009.  All rights reserved. */
00008
00009 #define EOF   (-2)
00010
00011 static int sgetch(int, char **);
00012 static int sungetch(int, char **);
00013 extern int _doscan(register char *, register int **,
00014                    int (*getc) (int, char **),
00015                    int (*ungetc) (int, char **), int, int);
00016
00024 int sscanf(char *str, char *fmt, int args)
00025 {
00026     char *s;
00027
00028     s = str;
00029     return (_doscan(fmt, (int **)&args, sgetch, sungetch, 0, (int)&s));
00030 }
00031
00037 static int sgetch(int dummy, char **cpp)
00038 {
00039     return (*(*cpp) == '\0' ? EOF : *(*cpp)++);
00040 }
00041
00047 static int sungetch(int dummy, char **cpp)
00048 {
00049     return (*(*cpp)--);
00050 }
[23:18:47] <genieprox> что-за _doscan?
[23:19:05] <valexey> а это что такое вообще?
[23:19:20] <valexey> откуда? явно что-то виндовозно-досовое
[23:19:37] <genieprox> http://xinu.mscs.mu.edu/docs/sscanf_8c-source.html
[23:19:56] <valexey> int
sscanf (const char *s, const char *format, ...)
{
 va_list arg;
 int done;

 va_start (arg, format);
 done = __vsscanf (s, format, arg);
 va_end (arg);

 return done;
}
[23:20:01] <valexey> вот это glibc
[23:21:13] <genieprox> http://dak664.github.com/contiki-doxygen/a00984_source.html -- тоже как файл и strlen
[23:27:33] <genieprox> этот sscanf прямо матрёшка -- несколько вложенных функций, отличающиеся параметрами
[23:28:27] <genieprox> найти бы исходник  __nldbl_vsscanf и если там ещё один вызов аналогичной функции -- то лучше застрелиться ))
[23:30:01] <genieprox> лана всем бб )
[23:30:44] <valexey> там еще один вызов :-)
[23:30:53] <valexey> там IO_vsscanf :-)
[23:50:28] <valexey> дас, раскопал. там то же самое. только не strlen. но это не важно.
[23:51:35] <genieprox> ))
бб ))
[23:51:43] <vlad2> инсталляция sql server 2008 доставляет.
[23:51:45] <vlad2> каждый раз.
[23:52:21] <vlad2> _все_ сделано через одно место
[23:52:50] <vlad2> Сейчас он просто упал.
[23:52:53] <vlad2> пипец.
[23:52:59] <valexey> это который sql server?
[23:53:02] <valexey> MySql?
[23:53:23] <vlad2> mssql ;)
[23:53:30] <valexey> Тьху. Какашка
[23:53:55] <vlad2> Не могу припомнить ни одного настолько дерьмового инсталлятора.
[23:54:12] <valexey> Да, я даже выяснил почему оно лезет искать конец строки - потому, чта оно проверяет что строка кошерна. Ибо сказано что на вход кошерная строка входит.
[23:54:57] <valexey> Значит тогда план такой - сооружаем из строки файл самостоятельно, подсовываем его scanf'у, и работаем :-)