[00:16:00] <ilov_boris> как в VS12 сделать чтобы фигурная скобка оставалась на первой строке?
[00:16:31] <ilov_boris> в таком стиле:
for (int i = index - 1; i >= 0; i--) {
[00:16:49] <ilov_boris> задолбала сука переносить автоматом
[00:20:23] <egp> хы. дебагать C++ темплейты которые неясно отчего пашут вопреки ожидаемому - это УЖАС. всё, пока переписывать с С++ на OOC.
[00:20:40] <egp> и эклипс C++ держит очень плохо.
[00:20:58] <egp> Indigo SR2 у меня
[00:22:20] <egp> OOC вообще дебажить будет несладко.
[00:23:09] <egp> пора переписывать*

[00:33:08] <valexey> ilov_boris: там где-то настройка вроде бы была
[00:33:15] <kemiisto@jabber.ru> :O
[00:33:24] <kemiisto@jabber.ru> Вы всё ещё живы?
[00:33:26] <valexey> egp: не понял, зачем дебажить шаблоны. в рантайме же их уже нет
[00:33:35] <valexey> kemiisto@jabber.ru: а что с нами сделаеццо?
[00:33:37] <kemiisto@jabber.ru> :-)
[00:33:59] <ilov_boris> почти написал
[00:34:10] <kemiisto@jabber.ru> valexey: всё никак не нафлудитесь?
[00:34:26] <valexey> kemiisto@jabber.ru: дас. опять нет повода не нафлудить :-)
[00:34:34] <ilov_boris> а почему for не хочет int в bool?
[00:34:51] <ilov_boris> тьфу блин if а не for
[00:35:22] <ilov_boris> int i;
if(i){...}
[00:35:46] <ilov_boris> не шарю я в ваших этих сях
[00:36:12] <kemiisto@jabber.ru> ilov_boris: в сях никто не шарит
[00:36:15] <kemiisto@jabber.ru> а нет, стоп
[00:36:21] <kemiisto@jabber.ru> в плюсах никто не шарит
[00:36:22] <valexey> ilov_boris: Tools->Options->Text Editor->Formatting->NewLines->Place open brace on new line on...
[00:36:37] <ilov_boris> О! спасибо большое
[00:36:47] <valexey> ilov_boris: у тебя же не Си там
[00:37:07] <ilov_boris> Тык почему if (i) не пашет?
[00:37:12] <valexey> как ту может помочь шаряние в сях я слабо представляю
[00:37:27] <valexey> вот потому что у тебя не Си, потому и не пашет. Скажем в обероне такое пашет? :-)
[00:37:32] <ilov_boris> приходится так:
if (pos > -1)
[00:37:42] <ilov_boris> а я хотел просто if(pos)
[00:37:48] <kemiisto@jabber.ru> ой
[00:37:54] <valexey> правильней наверно if (pos!=0)
[00:37:56] <valexey> все же
[00:38:14] <ilov_boris> не ноль нужен
[00:38:14] <kemiisto@jabber.ru> сам факт, что так хочется - это уже звоночек
[00:38:16] <valexey> У тебя там C#, этот язык к сям не имеет какого-либо отношения.
[00:38:21] <kemiisto@jabber.ru> Оберон не для Вас.
[00:38:23] <kemiisto@jabber.ru> :D
[00:38:24] <valexey> ilov_boris: а я что написал?
[00:38:32] <valexey> If (pos!=0)
[00:38:40] <ilov_boris> не равно нулю
[00:38:45] <ilov_boris> а ноль НУЖЕН
[00:38:46] <ilov_boris> int pos = text.LastIndexOf(id_array[i].Substring(0,36));
[00:39:17] <valexey> стоп. в сях (если мы про си говорим) if (pos) эквивалентен if (pos!=0)
[00:39:33] <valexey> то есть благодаря ругани шарпа, тому что шарп не Си, ты избежал только что ошибки :-)
[00:39:38] <ilov_boris> ладно хрен с ним
[00:39:51] <ilov_boris> просто меня всегда прикалывала эта сишная фича
[00:40:06] <ilov_boris> хотел ощутить так сказать все извращения
[00:40:10] <valexey> настолько, что решил использовать её там, где её нельзя использовать? по логике работы.
[00:40:12] <ilov_boris> :D
[00:40:28] <ilov_boris> да я ж толком и не знал логику
[00:40:44] <valexey> если тебе ноль НУЖЕН, то if (pos) тебе не прокатит. он выполнит условие если pos==-1 и если pos==1, и не выполнит если pos==0
[00:40:58] <ilov_boris> я уж понял :)
[00:41:20] <valexey> Впрочем, шарп это не си, так что тут так можно только если pos имеет тип bool
[00:41:26] <kemiisto@jabber.ru> http://saratov.kp.ru/daily/24593/762003/
[00:41:39] <kemiisto@jabber.ru> Капитан Очевидность, давай до свидания!
[00:41:41] <kemiisto@jabber.ru> :D
[00:42:13] <valexey> O_O
[00:42:26] <kemiisto@jabber.ru> «Самолет упал по причине силы тяжести, так как машина тяжелее воздуха».
[00:42:31] <kemiisto@jabber.ru> Ахахах!
[00:42:37] <kemiisto@jabber.ru> Не ну а чё.
[00:42:37] <valexey> Винда, давай досвидания: http://www.opennet.ru/opennews/art.shtml?num=35785
[00:43:24] <egp> ...имена типов бешеной длины, не вмещаются в мозг...
[00:43:26] <kemiisto@jabber.ru> valexey: not bad.
[00:43:35] <kemiisto@jabber.ru> Венду туда пирацкую - и ваще!
[00:43:39] <kemiisto@jabber.ru> :D
[00:45:35] <kemiisto@jabber.ru> egp: а зачем они в мозгу?
[00:45:38] <kemiisto@jabber.ru> :O
[00:45:45] <valexey> egp: но при чем тут отладка?
[00:45:50] <kemiisto@jabber.ru> В монитор влезают - норм.
[00:46:00] <kemiisto@jabber.ru> Бумага терпит, как говорится. :D
[00:47:02] <valexey> kemiisto@jabber.ru: Valve решила микрософту вставить Piston :-)
[00:47:06] <valexey> за восьмерочку
[00:49:46] <ilov_boris> LINQ няшка
[00:49:59] <egp> valexey: а при том что даже хэшмэп не могу распечататть на экран
[00:50:22] <valexey> egp: ты чем его распечатываешь? и как ты это пытаешься сделать?
[00:50:47] <valexey> /me подозревает что если это делается через gdb, то используется не достаточно православный gdb
[00:51:11] <valexey> да, и шаблоны тут не виноваты :-)
[00:58:50] <valexey> Дас, а коньки рулят.
[00:59:02] <valexey> /me упорно пытается научиться на них кататься
[00:59:58] <ilov_boris> А на лыжах умеешь коньком?
[01:00:04] <ilov_boris> одна херня
[01:00:41] <ilov_boris> обожаю лыжи
[01:00:50] <ilov_boris> биатлоном год занимался
[01:01:05] <ilov_boris> в классе 10 вроде
[01:01:23] <valexey> неа, не умею :-) вот как раз коньком никогда и не умел :-)
[01:01:35] <ilov_boris> :)
[01:02:09] <ilov_boris> лыжи круче чем коньки
[01:02:15] <ilov_boris> адриналина больше
[01:02:41] <ilov_boris> адрЕналина
[01:02:49] <ilov_boris> :)
[01:03:04] <valexey> ilov_boris: насколько я знаю, основная фича не от адреналина все же :-)
[01:03:26] <valexey> а у адреналина мерзкое неприятное действия - потеют руки, дрожь в ногах и так далее. радости мало.
[01:03:33] <valexey> основная фича в эндорфинах :-)
[01:03:46] <valexey> именно на них подсаживаются любители экстремального спорта
[01:03:59] <ilov_boris> зато какой кайф навернуться с трамлина
[01:04:15] <ilov_boris> пока летишь вся жизнь перед глазами
[01:04:17] <ilov_boris> :D
[01:04:18] <valexey> kemiisto@jabber.ru: делаем ставки, когда apple их купит: http://habrahabr.ru/post/165039/
[01:04:38] <ilov_boris> и лыжи в щепки
[01:04:40] <valexey> ilov_boris: когда я лечу, у меня никакой жизни перед глазами - я планирую падение :-)
[01:04:55] <ilov_boris> нифига ты рациональный O_o
[01:06:44] <ilov_boris> на лыжах с горы можно довольно нехилую скорость набрать
[01:06:54] <ilov_boris> мало что спланировать успеешь :D
[01:07:28] <valexey> тем меньше времени на воспоминания :-)
[01:08:23] <ilov_boris> http://www.ochevidets.ru/rolik/13729/
[01:08:28] <ilov_boris> :D
[01:09:03] <valexey> O_O
[01:09:28] <valexey> не. я осторожный. я даже на коньках с наколенниками катаюсь.
[01:09:40] <ilov_boris> У нас на лыжной базе на трассе в 5 км была горка
[01:09:41] <valexey> очень жалко суставы, их у меня не много.
[01:09:53] <ilov_boris> называлась "Нырок"
[01:10:07] <egp> ну вот блин обнаружил что хешфункция на аргументе wstring не пашет
[01:10:12] <ilov_boris> метров 6 вниз отвесно и резко наверх
[01:10:26] <ilov_boris> вот убивались там красиво :D
[01:10:47] <valexey> ilov_boris: жуть!
[01:10:57] <valexey> а в НН я даже и не знаю где на лыжах ходить.
[01:11:12] <valexey> тащемто у меня тут и лыж то нет :-)
[01:11:17] <ilov_boris> :)
[01:12:44] <valexey> пока хожу на крытые котки. ибо там и лед кошерней и тепло (катаюсь просто в рубашке)
[01:13:27] <ilov_boris> а я этой зимой так и не побывал :(
[01:13:35] <valexey> хотя открытый каток у меня вообще в 4 минутах ходу. из окна виден :-)
[01:13:47] <valexey> ilov_boris: ну, зима то еще не кончилась :-)
[01:14:16] <ilov_boris> у меня до конца зимы проект жестокий
[01:14:25] <ilov_boris> работаю даже на выходных
[01:14:45] <valexey> жуть
[01:14:54] <ilov_boris> дедлайн уже за спиной....
[01:14:55] <valexey> на 1С жесткий проект... ужоз же!
[01:15:38] <ilov_boris> клиент еб...ый
[01:15:53] <valexey> а-а.. это у всех бывает
[01:16:11] <ilov_boris> :)
[01:16:24] <ilov_boris> первый раз такой попался за всю практику
[01:16:37] <valexey> ну ничо, попрактикуешься в шарпах, и сбежишь с 1С :-)
[01:16:54] <egp> скажите как длину wchar_t* либо длину wstring узнать
[01:16:54] <ilov_boris> вот и я думаю в этом направлении...
[01:17:09] <ilov_boris> циклом :D
[01:18:07] <valexey> wstring str; str.length(); // не катит?
[01:18:37] <egp> valexey: запомню
[01:18:53] <valexey> да фигли запоминать. открыл доку и смотри :-) http://www.cplusplus.com/reference/string/string/
[01:19:05] <valexey> это ж не шарп, тут полторы метода :-)
[01:19:41] <valexey> ну или там в ide сразу
[01:20:22] <egp> valexey: иде не берёт сложность wstringа
[01:20:30] <egp> indigo у меня
[01:20:52] <valexey> гм. странно. что-то у тебя в нем не подключено как надо. у меня еклипса с плюсами отлично справлялась
[01:21:06] <valexey> другое дело что там надо подшаманить иногда пути к хедерам
[01:21:24] <valexey> в настройках ide. там же сборка приложения не зависит от настроек ide и наоборот
[01:23:42] <ilov_boris> valexey: как символы в string'е перебрать проще всего?
[01:23:42] <egp> сегфолт на взятии хеша элемента в типе typedef unordered_map<wstring,int,decltype(&my_wstr_hash)> hashmap1Type;

[01:24:04] <valexey> ilov_boris: какой язык?
[01:24:06] <egp> valexey: да эклипса чудный зверь. иногда справляется иногда нет
[01:24:07] <ilov_boris> c#
[01:24:32] <ilov_boris> надеюсь не отличается от c++
[01:24:51] <ilov_boris> А все понял
[01:24:59] <ilov_boris> в char[] конвертнуть
[01:26:02] <valexey> ilov_boris:             String s = "hello";
           foreach (char a in s) {
               Console.Write(a);
           }

[01:26:11] <ilov_boris> O_o
[01:26:17] <ilov_boris> пасиб
[01:26:23] <valexey> пжалста
[01:26:29] <ilov_boris> :)
[01:26:51] <valexey> если повезет, мне в этом шарпе ковыряться часов через 8
[01:26:55] <valexey> брр
[01:27:18] <valexey> egp: что такое тип typedef?
[01:28:04] <valexey> это ж явно не тип
[01:28:15] <egp> valexey: ну тип это unordered_map<wstring,int,decltype(&my_wstr_hash)>
[01:28:25] <egp> а typedef Это кнчн декларация
[01:28:48] <egp> static size_t my_wstr_hash(wstring a)
{
int h = 42;
const wchar_t* s = a.c_str();
if(s!=0) {
for (int i=0; ; ++i) {
wchar_t c=s[i];
if(0==(int)c)break;
h=h%(int)c;
}
}
   return h;
}

[01:29:09] <valexey> а зачем ты, кстати, для wstring'а свою хеш-функцию пишешь? есть же стандартная
[01:29:44] <egp> valexey: со стандартной функцией метод hashmap.find(...) возвращает end()
[01:29:57] <egp> то есть не находит то что заведомо туда добавлено
[01:30:12] <egp> я распечатал контент хмэпа и там это значение точно есть
[01:30:20] <egp> а всё равно енд() вылетает
[01:30:41] <valexey> что-то у тебя странное происходит. покажи как создаешь этот хэш, как добавляешь туда, и как find'ишь
[01:30:47] <valexey> попробую вопроизвести
[01:30:51] <valexey> *воспроизвести
[01:32:07] <egp> создание

static void TypeQualidentVariants_init_add(wstring name, TypeVariant ty){
hashmap1Type::value_type elem(name,(int)ty);
str2type.insert(elem);
...
[01:32:40] <egp> объявление и конструктор

typedef unordered_map<wstring,int,decltype(&my_wstr_hash)> hashmap1Type;
static hashmap1Type str2type;

[01:34:11] <egp> finding:

static TypeVariant TypeQualidentVariants_diagnoseType(wchar_t * typeName) {
wstring name(typeName);
hashmap1Type::const_iterator it=str2type.find(name);
bool end = it==str2type.end();
wprintf(L"TypeQualidentVariants_diagnoseType '%ls' end=%ld\n",name.c_str(), (int)end);

[01:34:18] <egp> пишет end=1
[01:35:59] <egp> ну и вот заполнение мэпа стаффом

static void TypeQualidentVariants_static_init(){
TypeQualidentVariants_init_add(L"",0);
TypeQualidentVariants_init_add(L"LONGINT",1);
#if 0
wprintf(L"TypeQualidentVariants_static_init() str2type\n");
hashmap1Type::const_iterator it1=str2type.begin();
for (; !(it1==str2type.end()); ++it1) {
const wstring& x=it1->first;
const wchar_t* s=x.c_str();
wprintf(L"'%ls' %ld\n",s, it1->second);
}
exit(1);
#endif
}

[01:36:34] <egp> у меня там енум, но тут я на инты позаменял
[01:37:44] <egp> в хешмепе инт, а не енум, кастаю каждый раз
[01:37:55] <valexey> а к чему эти дивные директивы #if 0 ?
[01:38:08] <valexey> у тебя же этот кусок просто будет выброшен
[01:38:10] <ilov_boris> Фу блин. Написал
[01:38:18] <egp> valexey: ну трассировка прочто отключенс
[01:38:28] <ilov_boris> valexey, спасибо за помощь :)
[01:38:40] <valexey> какая трасировка? у тебя просто этого цикла в бинарнике не будет в принципе
[01:38:43] <valexey> ilov_boris: пжалста
[01:39:05] <egp> valexey: это код для дебага контента хмепа
[01:40:26] <egp> valexey: потом можно сделать ключик для врубления трассировки, тогда я if 0 уберу
[01:41:47] <egp> valexey: кстати хвалёное литератное программирование не мешает голубой бутылке иметь дебажный стрим на комппорте =))))
[01:41:58] <valexey> ясен пень
[01:42:05] <valexey> оно не спасает полностью :-)
[01:42:13] <egp> ггг позор
[01:42:31] <egp> позор команде вирта =)
[01:43:49] <egp> принципиальность вирта проиграла прагматическим реалиям жизни.
[01:48:09] <egp> блин задница. что в яве классно, так это чрезвычайная редкость сегфолтов
[01:49:27] <egp> а тут хоть стой хоть падай - на ровном месте сегфолт
[01:50:01] <egp> очень неохота лезть в дизассемблер
[01:50:30] <valexey> без твоего кота все работает
[01:50:48] <valexey> typedef unordered_map<wstring,int> hashmap1Type;
static hashmap1Type hmap;
[01:50:53] <valexey>    wstring a = L"hello";
   hmap[L"hello"]=42;
   cout << (hmap.find(L"hello")==hmap.end()) << endl;
[01:51:13] <valexey> выводит 0
[01:51:24] <egp> ща попробую [] вместо insert
[01:53:30] <valexey>    hashmap1Type::value_type elem(L"hoho",13);
   hmap.insert(elem);
   cout << hmap[L"hoho"] << endl;

[01:53:38] <valexey> отлично и с инсертом работает
[01:54:03] <valexey> естественно без твоей хеш-функции: typedef unordered_map<wstring,int> hashmap1Type;
[01:54:48] <egp> ну вот мне надо find() вместо []
[01:56:42] <valexey>    hashmap1Type::value_type elem(L"hoho",13);
   hmap.insert(elem);
   cout << (hmap.find(L"hoho")!=hmap.end()) << endl;
[01:56:48] <valexey> естественно выдает 1
[01:57:09] <egp> valexey: а попробуй без статических литералов, скопируй строковые литералы в разные wstring-и и вызывай c_str() на них
[01:57:39] <egp> wstring a(L"hello");
wstring b(L"hello");

[01:57:58] <egp> у меня продолжает писать end=1 без хешфункции
[01:58:37] <valexey>    wstring a(L"hello");
   wstring b(L"hello");
   hashmap1Type::value_type elem(a,13);
   hmap.insert(elem);
   cout << (hmap.find(b)!=hmap.end()) << endl;
[01:58:41] <valexey> вывод: 1
[01:59:06] <egp> вотвот
[01:59:14] <egp> и как с этим бороться?
[01:59:38] <egp> стринг пул что ли делать? или хешфункцию?
[01:59:44] <egp> а, 1
[01:59:49] <valexey> :-)
[02:01:18] <valexey> да, и твой код я тоже пофиксил
[02:01:28] <valexey> то есть теперь с твоей функцией тоже все работает
[02:01:31] <egp> чтонетак?
[02:01:41] <valexey> static hashmap1Type hmap;
[02:01:43] <valexey> замени на
[02:01:54] <valexey> static hashmap1Type hmap(0,my_wstr_hash);
[02:02:18] <egp> уууу safe templates, safe templates
[02:02:25] <egp> DERXMO
[02:02:30] <valexey> в типе то ты только тип прописываешь, а при создании переменной ей таки нужно подсунуть указатель на хеш-функцию
[02:02:37] <egp> dada
[02:02:42] <valexey> да при чем тут шаблоны то.. :-)
[02:02:57] <valexey> у тебя твоя функция даже не вызывалась
[02:03:08] <valexey> да, и все это я проделал без отладчика :-D
[02:03:42] <egp> малацца
[02:03:59] <egp> с хешфункцией тоже end=1 :(
[02:05:03] <valexey> дык. что-то у тебя в остальном коде не то
[02:05:21] <valexey> попробуй с чистого листа hello world с main'ом и кодом как у меня
[02:05:42] <valexey> typedef unordered_map<wstring,int> hashmap1Type;
static hashmap1Type hmap(0,my_wstr_hash);
int main(void)
{
   wstring a(L"hello");
   wstring b(L"hello");
   hashmap1Type::value_type elem(a,13);
   hmap.insert(elem);
   cout << hmap.find(b)->second << endl;

   return 0;
}


[02:06:10] <egp> valexey: я заменил строку из кучи на литерал - end=0
[02:06:19] <egp> когда строка в куче - то end=1
[02:06:29] <valexey> гм-гм. что-то у тебя не то с кучей.
[02:06:41] <egp> попробуй строки в кучу перенести
[02:06:44] <valexey> то есть где-то косяк со строками видимо.
[02:06:53] <valexey> а как они у тебя туда заносятся?
[02:07:02] <valexey> (вообще плюсам пофиг на кучу)
[02:07:07] <egp> valexey: они вытаскиваются кокором из буфера
[02:07:43] <egp> плюсам - дело в адресах. wstring(wchar_t*) может чтото оптимизить...
[02:07:57] <valexey>    wstring* p_a = new wstring(L"hello");
   wstring* p_b = new wstring(L"hello");
   hashmap1Type::value_type elem(*p_a,13);
   hmap.insert(elem);
   cout << hmap.find(*p_b)->second << endl;

[02:07:58] <valexey> 13
[02:09:16] <egp> wprintf прекрасно эту строку у меня печатает... поищу ещё
[02:09:18] <egp> косяки
[02:10:13] <valexey> так что не чего тут на шаблоны и unordered_map батон крошить - тут все ок :-)
[02:10:39] <valexey> подозреваю что где-то косяк при переходе от wchar_t* кокоровских к wstring'у
[02:11:01] <valexey> да, и оптимизация тут точно не при чем
[02:11:13] <valexey> это все же не оберон
[02:17:57] <egp> valexey: изолирую весь код от остального - end=0. запускаю могучую системищу - end=1. шарада =)
[02:18:27] <valexey> во-во
[02:18:52] <valexey> какой-нибудь поганый нуль в начале wstring'а торчит и все портит
[02:19:21] <egp> ну wprintf нормально этот wstring.c_str() печатает
[02:20:43] <valexey> а весь heshmap распечатать? что там вообще есть?
[02:20:52] <valexey> какие ключи/значения?
[02:21:05] <egp> valexey: я тоже к этому пришол. пусто =)
[02:21:14] <valexey> вау.
[02:21:50] <valexey> а size() что говорит? 0?
[02:22:15] <egp> ща
[02:23:32] <egp> size=0
[02:24:18] <valexey> вау... возникает вопрос - а в тот ли map ты кладешь? и кладешь ли вообще?
[02:25:44] <egp> кладу. в тот.
[02:26:34] <valexey> кстати, на всякий случай, а зачем вот тут: static hashmap1Type hmap; ты пишешь слово static?
[02:26:42] <egp> от лени
[02:26:49] <egp> ща переделаю без него
[02:27:10] <egp> я толком не знаю семантику статиков
[02:27:13] <valexey> стоп. а какая там лень?
[02:27:30] <valexey> этот статик говорит лишь о том, что эта хрень будет валидна только для данной единицы компиляции
[02:27:32] <egp> ну ща в .cpp реализацию вынесу
[02:27:53] <valexey> ага-а. чую что вот тут вот собака и порылась :-)
[02:28:05] <egp> ну статик довольно непонятная мне штука
[02:28:13] <egp> кейворд непонятный.
[02:28:14] <valexey> не знаешь - не используй :-)
[02:28:26] <egp> тогда мне нужно за комп не садиться =)
[02:28:31] <egp> я комп не знаю
[02:28:39] <egp> не использовать??? =)
[02:28:42] <valexey> полагаю что из за этого статика и объявления в хедере у тебя для каждой единицы компиляции был свой hashmap
[02:28:50] <valexey> то есть переменная
[02:28:54] <egp> ну вот да, походу ты прав
[02:29:06] <valexey> а благодаря статику ты ошибок не получил. то есть статик ошибку скрыл
[02:29:43] <egp> век живи век учись
[02:30:05] <egp> пасиба за просветление =) я о статике лучше думал. и в суп попал
[02:30:17] <valexey> пжалста :-)
[02:44:56] <egp> вреднючий кейворд
[02:45:34] <valexey> а не надо всякую пакость в хедеры пихать, это вам не жаба :-)
[02:45:47] <egp> а не надо статиками пользоваться
[02:46:10] <egp> вообще с точки зрения семантики и этимологии слова - вредное понятие
[02:46:15] <valexey> ну, в плюсах дело осложняется тем, что у кейворда static НЕСКОЛЬКО значений :-D
[02:46:22] <egp> вотвот
[02:46:33] <egp> грязный хак ккакой-то а не кейворд
[02:47:07] <egp> вот в яве всё ясно - что это так называемая class side
[02:47:11] <valexey> да не, норм. если использовать там где надо :-)
[02:47:22] <egp> "class-side" - это термин смолтока
[02:48:15] <valexey> в java, static тоже минимум два смысла имеет
[02:48:36] <valexey> статический внутренний класс и статическое поле класса
[02:49:06] <valexey> да, в ajax'e как раз XMLHTTPRequest
[02:49:16] <valexey> мы это дело активно используем
[02:49:31] <valexey> ну или обертка вокруг этого дела в виде jQuery какого
[02:49:46] <valexey> jQuery избавляет от разных нюансов браузеров
[02:50:31] <valexey> но ajax это крайнее средство, когда html выдаваемый сервером уже не катит вообще никак.
[02:51:22] <valexey> у нас как раз такой случай
[02:52:33] <egp> valexey: заработало у меня
[02:52:53] <valexey> во-от. не все так страшно как кажется :-)
[02:53:22] <egp> да страшно-не страшно, но слишком уж языки развесистые
[02:53:36] <egp> яву вот я за 2 дня освоил и релиз системки сделал
[02:53:41] <egp> заказчику
[02:53:50] <egp> а с с++ такой номер не проходит
[02:54:15] <egp> заказчик остался доволен релизом
[02:54:16] <valexey> скажем так, тебе с явой просто повезло (точнее с заданием)
[02:54:29] <valexey> достался бы тебе готовый код где агрессивно используются дженерики, и привет.
[02:54:47] <egp> ну как. там таки несколько веб-страниц взаимодействовало с 1 сервлетом
[02:55:10] <egp> valexey: когда я писал, женериков в яве ещё не было, это был 1998
[02:55:17] <egp> а щас я женерикам людей учу
[02:55:23] <egp> я их прекрасно умею
[02:55:46] <egp> и явовые женерики у меня такого ступора не вызывают, как c++ templatы
[02:56:49] <valexey> То есть вот такое ты запросто разбираешь? http://oberspace.dyndns.org/index.php?topic=192.0
[02:57:06] <egp> явовые женерики намного менее развесисты  , нежели с++ темплаты
[02:57:29] <valexey> они развесисты в другую сторону вот и все.
[02:57:32] <valexey> и не менее заковыристы
[02:58:06] <egp> они НЕ развесисты
[02:58:11] <egp> и НЕ заковыристы
[02:58:19] <egp> "вроде как даже в жабе можно," - в яве такого не сделать
[02:58:27] <valexey> сделать
[02:58:35] <valexey> в жабе это отлично работает
[02:58:39] <valexey> http://migmit.livejournal.com/32688.html
[02:58:54] <valexey> "в Java работает, потому что там один тип на самом деле остаётся, случай тут простой и чекер его осиливает... "
[02:59:47] <valexey> так что коль ты говоришь "не возможно", следовательно с развесистыми дженериками ты дела пока не имел :-)
[03:00:01] <valexey> дженерики на уровне коллекций - это фигня.
[03:00:04] <egp> да нельзя это в яве
[03:00:10] <valexey> да можно же. работает.
[03:00:12] <egp> да на любом уровне
[03:00:23] <egp> ну приведи код, коли работает
[03:00:26] <egp> я не верю
[03:00:29] <valexey> дык по ссылке же
[03:00:34] <egp> там явы нет
[03:00:38] <valexey> народ транслирует 1 в 1 на жабу, и работает.
[03:00:47] <valexey> будет время, оттранслирую да проверю
[03:00:54] <valexey> но там принципиальной разницы с шарпом нет
[03:03:08] <egp> я в примере C# вообще не вижу два массива
[03:03:17] <egp> да низя такое в яве
[03:03:34] <valexey> да можно :-)
[03:03:34] <egp> я не знаю C# и не знаю хаскель
[03:03:38] <egp> да как???
[03:03:40] <egp> не верю
[03:03:45] <valexey> да также как в шарпе :-)
[03:03:57] <egp> а где там на шарпе два массива-то???
[03:04:35] <valexey> полагаю изначально под массивом подразумевалось некая последовательность. то есть не обязательно int [256]
[03:04:50] <valexey> массив, список, что угодно еще. коллекция.
[03:05:01] <valexey> важны свойства проверяемые на этапе компиляции
[03:09:58] <egp> valexey: пример на С# не имеет никакого отношения к длинам последовательностей
[03:10:13] <egp> ява просто отловит что A!=Cons<A> и плюнет ошибку
[03:10:19] <egp> а длина тут не причём
[03:10:24] <valexey> имеет. ты попробуй. оно просто не скомпиляется если длины разные.
[03:10:31] <egp> длины чего???
[03:10:48] <valexey> последовательностей
[03:10:49] <egp> бредовый тред ты запостил
[03:10:53] <egp> каких?
[03:11:13] <egp> valexey: каких последовательностей-то?
[03:11:45] <valexey> Тех самых :-) Рукотворных
[03:12:11] <valexey> злобно не стандартных
[03:12:21] <valexey> крышесносяще типорекурсивных
[03:12:37] <egp> да никакие они в яве не типорекурсивные
[03:13:10] <valexey> они не тьюринг-полные, но рекурсивные - вполне.
[03:13:30] <valexey> ладно, будет время, сделаю на жабе. возможно в выходные.
[03:13:36] <egp> да нет
[03:13:49] <egp> не в том дело чтобы спортить этот С# на яву
[03:13:50] <valexey> почему нет? cделаю :-)
[03:14:00] <egp> да портится элементарно
[03:14:13] <egp> но типорекурсии нету вроде
[03:14:36] <egp> есть обычная рекурсия, а ТИПОвой рекурсии НЕТ
[03:14:46] <valexey> там одна другую тянет за собой
[03:15:14] <valexey> другое дело что подобные извращения на практике как минимум не полезны - они надежности, как ни странно, не добавляют. или добавляют в очень редких случаях
[03:15:28] <egp> но дело в том что компилятор явы в эту рекурсию не обязан спускаться
[03:15:39] <valexey> это как с литерным программированием этим :-)
[03:15:45] <egp> он рекурсией если и занимается, то в оптимайзере
[03:15:50] <egp> то есть в хотспоте
[03:15:52] <egp> НО
[03:16:12] <egp> на этапе компиляции он в рекурсию скорей всего НЕ спускается, это НЕ нужно
[03:16:18] <valexey> дык фишка в том, что вся эта типорекурсия в жабе да и в шарпе производится на этапе компиляции и НИКАК на результирующий код не влияет.
[03:16:24] <valexey> то есть это чисто типовые заморочки
[03:16:36] <egp> да нет для компилятора никакой рекурсии
[03:16:38] <valexey> в отличае от плюсов, где шаблоны по сути являются разновидностью макросов лиспа
[03:16:50] <egp> это для рантайма там рекурсия
[03:17:11] <egp> а на этапе компиляции компилер рекурсию НЕ выполняет.
[03:17:16] <egp> и НЕ проверяет
[03:17:24] <egp> длина тут НЕ причём
[03:17:41] <egp> так что это НЕ решение задачи из топикстарт поста
[03:17:41] <valexey> он проверяет типы для рекурсии. проходит до конца. и если не совпали типы в данном случае, будет ошибка компиляции.
[03:17:49] <valexey> до рантайма дело не дойдет
[03:17:54] <egp> оно проверяет типы ПРОСТО, рекурсия НЕ причём
[03:18:02] <egp> да нет, ты ошибаешься
[03:18:31] <egp> он НЕ идёт ни до какого кконца, а пользуется ОДНОШАГОВОЙ проверкой (БЕЗ циклов)
[03:19:07] <egp> и эта проверка делается им БЕЗ РЕКУРСС
[03:19:12] <egp> БЕЗ РЕКУРСИИ
[03:19:35] <egp> нету для этого примера в ява-компилере никакой рекурсии.
[03:20:06] <egp> это формально-математически там есть типорекурсия, НО компилер в эту формальность и в эту математику НЕ залазит.
[03:20:19] <egp> это умственная типорекурсия, и НЕ более того.
[03:20:45] <egp> valexey: я ж грю я явовские женерики насквозь вижу
[03:21:16] <egp> дотнетовые похожая свинья видимо (судя по этому примеру)
[03:21:32] <valexey> еще раз - эту рекурсию проводит тайпчекер. вполне реально проводит. на результирующем коде это никак не отражается. я это повторяю еще раз пятый наверно.
[03:21:43] <valexey> и это, видимо, именно то, что ты называешь умственной рекурсией
[03:21:49] <egp> нет, ты ошибаешься
[03:21:59] <egp> результирующий код не причём
[03:22:18] <egp> не отражается, потому что женерики стираются при кодогенерации компилерром
[03:22:43] <egp> тайпчекер НЕ проводит эту рекурсию
[03:22:52] <egp> потому что это ЛИШНЕЕ
[03:23:34] <egp> valexey: ты слишком хорошо думаешь о явовском тайпчекере
[03:23:50] <egp> valexey: явовский тайпчекер проще устроен, чем ты о нём думаешь
[03:24:09] <egp> точно тебе говорю =)
[03:24:18] <egp> СТРОГО проще.
[03:24:56] <valexey> Да я его вроде бы и не переусложняю. Штука то простая.
[03:25:27] <egp> так вот она проще твоего "простая" =) он не рекурсирует при компиляции
[03:25:41] <valexey> не рекурсирует что?
[03:25:43] <egp> в случае этого примера по кр мере
[03:25:54] <egp> не рекурсирует вот этот метод _main
[03:26:12] <egp> _Test._main точнее
[03:26:16] <valexey> логично блин. естественно оно НЕ ВЫПОЛНЯЕТ код в момент компиляции.
[03:26:27] <valexey> оно просто проверяет типы
[03:26:28] <egp> ну да, но оно и типы не рекурсирует
[03:26:44] <egp> эта проверка не рекурсирует
[03:27:20] <egp> эта проверка типов не рекурсирует
[03:27:26] <valexey> да хоть циклирует хоть рекурсирует. какая разница? впрочем, ты можешь придумать эксперимент который показал бы разницу между рекурсирует или нет?
[03:27:35] <valexey> иначе мы спорим ни о чем.
[03:27:45] <egp> это надо брать компилер и дебаггером его гнать
[03:27:55] <egp> да ты просто переусложняешь компилятор явовский
[03:28:01] <egp> он ТУПОЙ
[03:28:21] <egp> никакой типорекурсией он не занимается и никакую длину не проверяет
[03:28:22] <valexey> да мне пофиг на код который у него внутри. мне важно поведение наблюдаемое извне
[03:28:32] <egp> поведение такое
[03:28:46] <valexey> факт что в данном случае будет ошибка компиляции в случае разных длин наших недоколлекций
[03:29:18] <egp> он вижит что строка "А" не равна строке "Cons<A>" и вываливается с ошибкой. ВСЁ. длины тут - это твоя галлюцинация
[03:29:43] <egp> в одном сравнении двух простых строк никаких длин нет и в помине
[03:29:51] <egp> и никакой рекурсии нет
[03:30:11] <valexey> Ладно, мне сейчас банально некогда спорить. Доживем до выходных, возможно разберу по полочкам.
[03:30:33] <egp> он просто сравнивает вызов _main с сигнатурой _main и валится с несоотвествием типов
[03:30:39] <egp> а никуда не циклит
[03:30:45] <egp> и никуда не циклит
[03:30:51] <egp> там нечего разбирать
[03:31:02] <egp> нет времени спорить - можно отложить спор
[03:32:16] <valexey> ок
[03:32:57] <egp> просто вызов не соответствует сигнатуре --- причём тут воображаемая рекурсия или воображаемые длины? не причём.
[03:33:37] <egp> так что на яве проверять длины вряд ли возможно.
[03:35:42] <egp> valexey: только я тебя переспорю, так и знай =)
[03:35:57] <valexey> это не страшно
[03:36:03] <valexey> истина важнее :-)
[03:38:03] <egp> разглючу твоё сознание по поводу ява транслятора =)
[03:39:34] <valexey> :-)
[03:40:17] <egp> мне тоже идти пора.
[03:40:43] <valexey> на хабре введение в смалтолк появилось:http://habrahabr.ru/post/164769/
[03:40:50] <valexey> народ просвещается :-)
[03:40:52] <valexey> удачи
[03:40:56] <egp> а ну этот хабр
[03:41:04] <egp> я уж лучше запущу смолток и похачу чонить
[03:41:18] <egp> полезнее время проведу чем муть хабровую читать
[03:42:00] <valexey> ну, я не предлагаю писать, ты же смалтолк знаешь
[03:42:07] <egp> valexey: я читал несколько статей по внутреннему устройству и реализации смолток-вм, так что хабр идет и пляшет
[03:42:20] <valexey> просто показал, что его не забывают даже такие мейнстримщики
[03:42:27] <egp> не я его не знаю, основной синтаксис даже... я часть знаю
[03:42:42] <egp> но он не с++ный, он простой
[03:42:51] <egp> вм сложный, а язык простой и портабельный
[03:43:04] <valexey> угу
[03:43:41] <valexey> надо будет покурить. благо я по работе на ObjC пишу, то есть изучение смаллтолка скорее всего позволит глубже понять рабочий инструмент
[03:43:59] <egp> ну явовый хотспот смолтокеры писали
[03:44:11] <egp> в каждой смолток-машине аналог хотспота
[03:44:24] <egp> кроме самых простых смолток-машин
[03:44:42] <valexey> угу. но мне не vm, мне идеалогию языка и либ
[03:45:21] <egp> скачай squeak.org И побалуйся, там сразу открыта базовая документация при запуске squeak
[03:45:35] <egp> то есть смолток-машина сразу показывает доки
[03:45:37] <valexey> угу. надо будет на досуге того-с. попробовать.
[03:45:50] <valexey> да, я помню, запускал. чем-то на ББ смахивало :-)
[03:45:57] <egp> Alt и . одновременно --- это вызов дебагера
[03:46:06] <valexey> (ну, то есть я понимаю конечно что все наоборот, но тем не менее)
[03:46:09] <egp> какой ББ. круче всякого ББ
[03:46:45] <egp> в ББ не дебагера, в котором можно отлаживать этот же самый дебагер =)
[03:46:48] <egp> нет
[03:46:59] <valexey> :-D
[03:47:01] <egp> а в смолтоках такое часто
[03:47:37] <egp> то есть в смолток-машине весь код всей системы в дебагере показывается
[03:47:45] <egp> вот бы была бы ОС где такое можно!
[03:47:49] <egp> но такой ОС нету
[03:48:09] <egp> и в смолток-дебагере можно этот код на лету менять
[03:48:40] <egp> в принципе есть проект SqueakNOS где сквик на голой хардвари летает
[03:48:40] <valexey> у лиспов помнится примерно то же самое
[03:48:44] <valexey> ну, и у асма тоже :-)
[03:48:50] <egp> ну я лисп не гонял
[03:49:11] <egp> про асм тоже не знаю такого
[03:49:45] <egp> этот SqueakNOS правда очень критичен к маркам девайсов
[03:49:54] <egp> то есть его двое что ли пишут
[03:50:06] <egp> или типа того
[03:51:35] <egp> ладно. пора уходить. счастливо
[04:02:48] <valexey> бай
[12:45:55] <kemiisto@jabber.ru> http://superuser.com/questions/231273/what-are-the-windows-a-and-b-drives-used-for
[12:45:57] <kemiisto@jabber.ru> :D
[12:46:00] <kemiisto@jabber.ru> школоло!
[12:50:55] <valexey> O_O
[12:51:20] <valexey> вот и выросло поколение...
[19:50:19] <vlad2> /me тоже открыл коньковый сезон на выходных. И тоже на крытой арене.
[21:26:32] <vlad2> Хе-хе. Да уж...
[21:26:56] <vlad2> В такие моменты понимаешь насколько ты "суперстар" :)
[22:15:21] <vlad2> sublime повис