[00:15:11] <vlad2> Гы. Олег негодует. Пришли и клеветы разводят. Он же сам первый начал сомнительную философию разводить, не имеющую никакого отношения к практической стороне дела.
[00:17:30] <vlad2> "Опыт работы не накоплен, идеологов мало, работу, как ты верно заметил, никто практически не делает." - да, да, идеологов как раз много (стремится к 100%), а вот работу студенты делать действительно не могут.
[00:20:37] <vаlexey> :-)
[00:21:37] <vаlexey> "Они ещё не набрали того веса как Паскаль в своё время."
[00:21:39] <vаlexey> ыыы
[00:21:44] <vаlexey> за счет чего бы им набрать?
[00:40:23] <vlad2> Ктстати, как твоя идея с виртовским компилятором? Что-то получилось?
[00:40:54] <vаlexey> я сейчас слега отвлекся на увольнение с работы, не до того было слегка.
[00:42:48] <vаlexey> завтра вот начинаю входить в нормальный режим жизни, так что думаю что-то будет :-)
[00:43:22] <vаlexey> о! няшно! http://www.opennet.ru/opennews/art.shtml?num=38866
[01:24:29] <vlad2> А новую работу нашел?
[01:29:11] <vаlexey> угу
[01:29:17] <vаlexey> сильно раньше чем уволился :-)
[02:08:27] <vlad2> Дык, так и надо.
[02:08:31] <vlad2> А где, если не секрет?
[02:19:02] <vlad2> Больши шин, чтоб на любой вкус: http://forum.oberoncore.ru/viewtopic.php?p=85423#p85423
[16:56:35] <_valexey_> http://habrahabr.ru/post/209312/
[18:39:25] <alexey.veselovsky> дас, appcode не умеет c++ до конца
[18:39:40] <alexey.veselovsky> не прошел он мой тест :-)
[18:43:50] <alexey.veselovsky> а вот Xcode - действительно понимает С++
[18:44:29] <alexey.veselovsky> только вот Xcode память жрет как не в себя
[18:50:39] <vlad2> Ха-ха-ха! Надо срочно регистрить форум где надо :)
[18:50:59] <alexey.veselovsky> а где надо? :-)
[18:53:25] <alexey.veselovsky> /me нашел в плюсах случай когда нужно явным образом указывать что идентификатор является структурой
[18:55:57] <vlad2> С++ он такой, всегда что-то новое :)
[18:56:15] <vlad2> Так чего там с новой работой - расскажешь где?
[18:57:19] <alexey.veselovsky> дык всё тот же стартап с фотоплетизмографом. на этот раз напрямую с ними работаю. ну и вообще теперь там все быстро будет - или туда, или сюда :-)
[18:58:26] <alexey.veselovsky> хотя это не единственное чем я буду заниматься :-)
[19:01:47] <vlad2> С чем чем?
[19:03:22] <alexey.veselovsky> http://en.wikipedia.org/wiki/Photoplethysmogram
[19:03:27] <alexey.veselovsky> вот с этим :-)
[19:04:41] <alexey.veselovsky> не такое уж и сложное слово, между прочим! :-D
[19:05:45] <vlad2> Гы. "Толпа троллей" в лице geniepro...
[19:05:59] <alexey.veselovsky> ну джордан тоже там отметился
[19:06:06] <vlad2> (читаю зорковский форум)
[19:10:38] <alexey.veselovsky> о! а на украине то тоже весело!
[19:10:46] <alexey.veselovsky> http://habrahabr.ru/post/209344/
[19:11:01] <alexey.veselovsky> “Вводятся штрафы и исправительные работы сроком до года за клевету в Интернете. Способ определения клеветы, а также идентификации личности как всегда вынесены за рамки.”
[19:11:45] <vlad2> Дам, чем менее цивилизованная страна, тем менее изящны формулировки :)
[19:12:26] <alexey.veselovsky> в этом плане беспредел с призмой в США больше нравится - по крайней мере государство весь геморрой по организации слежки берет на себя :-)
[19:12:35] <alexey.veselovsky> и вообще работает незаметно, минимально мешая.
[19:15:28] <vlad2> Ага. Я тут тоже другу в скайп откомментил в том же духе: " Т.е., если ЦРУ где-то там под землей строит секретное хранилище для интернета, то ФСБ просто обязало хранить все самих провайдеров. Это прекрасно!"
[19:15:58] <alexey.veselovsky> не только провайдеров! но и владельцев ВСЕХ сайтов!
[19:16:15] <vlad2> провайдеров услуг :)
[19:16:27] <alexey.veselovsky> логгировать все действия пользователей. афигеть блин.
[19:22:32] <alexey.veselovsky> vlad2: а главное тут даже не в том, что придется что-то где-то дорабатывать, главное тут в том, что, очевидно, этот закон будут нарушать все или почти все. То есть дефакто все будут виноваты. Следовательно подкопаться можно будет под любого при желании.
[19:23:36] <alexey.veselovsky> Соответственно такие законы во-первых обесценивают другие законы (если один нарушил, то и другие можно - эффект разбитых окон), а во-вторых будут использоваться не для обеспечения безопасности, а для давления на неугодных.
[19:24:03] <alexey.veselovsky> в этом плане ситуация в США намного, НАМНОГО лучше.
[19:24:17] <alexey.veselovsky> пусть следят, но я не хочу чтобы я при этом был кому-то что-то должен.
[19:40:00] <Jordan> Компилю С исходник, С++ компилятором узнал много нового. :-)  По этому поводу вопрос.
[19:41:08] <Jordan>
void print_key_word()
{
 key_word_t * p = tbl_key;

 while (p != NULL)
 {
   printf("%s\n", p->name);
   p = (key_word_t*)p->next;
 }
}
[19:41:50] <Jordan> Если убрать привидение типа, сыплется варнинг, несовместимые типы - из "key_word_t *" в "key_wo
rd_t *"
[19:42:03] <Jordan> Но тип, то один, откуда несовместимость?
[19:42:43] <vlad2> Приведи определение струкруры.
[19:42:51] <Jordan> Зачем его нужно приводить, к  key_word_t *, если тип и есть  key_word_t *
[19:42:51] <vlad2> key_word_t
[19:43:04] <vlad2> описание key_word_t постни сюда
[19:43:13] <vlad2> декларацию
[19:43:19] <vlad2> непонятно ж так ничего :)
[19:43:20] <Jordan>
typedef struct
{
 struct key_word_t * next;
 char * name;
} key_word_t;
[19:43:31] <vlad2> А.
[19:43:49] <vlad2> Это может быть как раз из оперы, про кторую только что valexey говорил.
[19:44:19] <vlad2> убери typedef b j_+zdb d yjhvfkmyjv С++ стиле.
[19:44:36] <vlad2> убери typedef и о,+яви в нормальном С++ стиле.
[19:44:40] <alexey.veselovsky> ну это немного из другой оперы, но похожей :-)
[19:45:00] <vlad2> struct key_word_t
[19:45:04] <alexey.veselovsky> struct key_word_t {тут тело};
[19:45:07] <alexey.veselovsky> nfr
[19:45:12] <alexey.veselovsky> так
[19:45:18] <Jordan> Не, я на си пишу, но периодически компилю на С++ компиляторе, вся замарочка ради совместимости.
[19:45:18] <vlad2> key_word_t * next; (без struct)
[19:45:34] <alexey.veselovsky> не, ну можно конечно извратиться
[19:45:38] <alexey.veselovsky> как-то так:
[19:45:44] <Jordan> Ошибки нет. Ложное срабатывание?
[19:46:11] <alexey.veselovsky> typedef struct key_word_tag
{
 key_word_tag * next;
 char * name;
} key_word_t;
[19:46:43] <Jordan> Я уже так проделывал, лишнее имя вводить с труктуру.
[19:47:20] <alexey.veselovsky> ох.. это не лишнее имя, это тег структуры который объявляется явно.
[19:47:29] <alexey.veselovsky> поэтому вот я и не люблю Си :-)
[19:48:02] <Jordan> Так почему варнинг, то? Объясните.
[19:48:16] <vlad2> А в сях без typedef вообще нельзя структуру забацать?
[19:48:16] <alexey.veselovsky> потому что c++ прав - типы разные
[19:48:42] <alexey.veselovsky> вот тут: typedef struct
{
 struct key_word_t * next;
 char * name;
} key_word_t;
[19:48:45] <Jordan> Без typedef, много писать при объявлении переменной
[19:49:22] <Jordan> Пример без typedef
[19:49:24] <Jordan> struct key_word_t * p = (struct key_word_t*)malloc(sizeof(struct key_word_t));
[19:49:24] <alexey.veselovsky> когда ты пишешь struct key_word_t * next; - ты еще не знаешь что такое key_word_t
[19:50:10] <alexey.veselovsky> то есть в этой строчке ты говоришь - я хочу указатель невнятного типа key_word_t, который никакого отношения к key_word_t не имеет.
[19:50:34] <alexey.veselovsky> при этом этот key_word_t - это какая-то неизвестная нам структура, фиг знает какие там поля есть
[19:51:24] <Jordan> Ясно.
[19:51:27] <Jordan> Спасибо.
[19:51:47] <alexey.veselovsky> пжалста
[19:51:50] <alexey.veselovsky> :-)
[19:51:58] <Jordan> Ну язык хак на хаке...
[19:52:00] <alexey.veselovsky> ну, то есть оно по чистой случайности работает на самом деле :-)
[19:52:14] <alexey.veselovsky> если ты напишешь так:
[19:52:25] <alexey.veselovsky> typedef struct
{
 struct FOObAr * next;
 char * name;
} key_word_t;
[19:52:30] <alexey.veselovsky> то ничего не изменится
[19:53:08] <Jordan> Я начинаю понимать оберонщиков.
[19:53:11] <alexey.veselovsky> просто у Си (в отличае от С++) типизация не строгая, и там что-то куда-то конвертировать можно без указания приведения типов
[19:53:37] <alexey.veselovsky> ну если Сями то пользоваться, а о С++ иметь представления 25 летней давности, то да :-)
[19:54:05] <Jordan> Я только о си, говорил.
[19:54:23] <alexey.veselovsky> ну, C++ они еще больше не любят :-)
[19:54:33] <alexey.veselovsky> заодно распространяя на него весь негатив от Си :-)
[19:54:52] <Jordan> Исправлю код. Пока ещё структур не наделал.
[19:55:24] <alexey.veselovsky> видишь как полезно даже чисто Сишный код плюсовым компилером собрать? (таким образом это уже С++ код) :-)
[19:55:42] <Jordan> Я вот радовался, меньше писанины, а оно во как. Ну вот.
[19:56:20] <Jordan> Да согласен, много всего узнаешь. Ещё были проблемы с const char *
[19:56:38] <Jordan> В си компилит, с++ ругается
[19:56:48] <Jordan> Я const удалил пока работает
[19:59:42] <alexey.veselovsky> самое смешное, что когда оберонкоровцы пишут какой-то биндинг или еще что-то что требует либо Си либо С++, они выбирают Си :-D
[19:59:50] <alexey.veselovsky> потом долго плюются
[20:03:01] <Jordan> Прикол. В tcc есть ключ для проверки границ массива, написал неправильный код. Программа упала, я думал программа выведет мол на какой строке, в каком файле ошибка. Так она и без ключа грохается.
[20:03:16] <alexey.veselovsky> :-)
[20:03:30] <alexey.veselovsky> повезло значит. без шуток
[20:03:36] <alexey.veselovsky> хуже когда не грохается
[20:04:03] <Jordan> Самый смак в проверках, когда они выводятся. А так нужно в отладчик лесть.
[20:04:36] <alexey.veselovsky> эмм.. а зачем этот ключик? что он делает вообще? советую доку по нему прочитать :-)
[20:04:52] <alexey.veselovsky> а в отладчике и так видно где
[20:05:11] <Jordan> Generate additional support code to check memory allocations and array/pointer bounds. `-g' is implied. Note that the generated code is slower and bigger in this case.
[20:05:28] <Jordan> Оно?
[20:05:47] <alexey.veselovsky> а я tcc не разумею. но похоже на то. но не ясно как это будет работать
[20:06:26] <Jordan> Прислать компилер с файлом?
[20:06:39] <alexey.veselovsky> оно не запустится - я тут под маком :-)
[20:06:44] <alexey.veselovsky> ой, на маке
[20:06:57] <alexey.veselovsky> черт, все равно как-то по наркомански звучит
[20:07:01] <Jordan> Он и под мак есть. и под арм
[20:07:23] <Jordan> Лучше сказать, сижу за маком.
[20:07:41] <alexey.veselovsky> давай завтра гляну. сейчас убегаю уже. хочется домой :-)
[20:07:56] <Jordan> ок
[20:12:23] <vlad2> Jordan: строчки с стэком показывать в мире С/С++ не принято.
[20:12:33] <vlad2> Скорее оно просто _гарантиорванно_ падает.
[20:12:43] <vlad2> При этом у тебя все есть в крэшдампе.
[20:12:48] <Jordan> я думал как в паскале
[20:12:55] <vlad2> Который иты смотришь отдельной тулзой (дебаггером)
[20:13:22] <Jordan> Ещё вопрос
[20:13:28] <Jordan> void * debug_malloc(size_t size, char * file, char * line)
{
 void* p = (void*)malloc(size);

 if (p != NULL)
 {
   printf("Error memory alloc: File=%s Line=%s", file, line);
   exit(1);
 }

 return p;
}

#define malloc(x) debug_malloc(x, __FILE__, __LINE__)
[20:13:46] <Jordan> Компилю С++
[20:13:59] <vlad2> В паскале по моим воспоминния тоже бвыло не сильно шоколоадно. Runtime error 213 и привет. Где ошибка и почему - не говорило.
[20:14:36] <Jordan> О знаю, это точно указатели
[20:14:45] <vlad2> exit(1) кстати штука некошерная для С++
[20:15:36] <Jordan> Не компилит сей чудесный код. Пишет, функция: "char *" отличается по уровням косвенного
обращения от "int"
[20:15:47] <vlad2> В какой строке?
[20:16:13] <vlad2> А.
[20:16:14] <Jordan> key_word_t * p = (key_word_t*)malloc(sizeof(key_word_t));
[20:16:15] <vlad2> Прикольно.
[20:16:40] <vlad2> У тебя там должно быть "int line"
[20:16:51] <Jordan> Я специально написал макрос, что бы если память нельзя выделеит, писал где и на какой строке проблема.
[20:16:53] <vlad2> Прикольно то, что си это кушает и работает.
[20:17:12] <Jordan> Не я в си не тестировал, этот код.
[20:17:13] <vlad2> __LINE__ - это int
[20:17:24] <Jordan> А понял, я думал строка
[20:17:25] <Jordan> Ок
[20:17:50] <vlad2> Не забудь еще про %s ;)
[20:18:04] <Jordan> Скомпилилось
[20:18:28] <vlad2> Кстати, если ты влруг не знал, под юниксом современным тебе malloc никогда не вернет NULL
[20:18:30] <Jordan> [20:17:57] <vlad2> Не забудь еще про %s ;) Исправил
[20:19:30] <Jordan> Все эти мытарства бесполезны?
[20:19:39] <vlad2> Так что смысл в такой обертке будет нулевой
[20:19:57] <vlad2> Оно имеет смысл для винды и для каких-нибудь других платформ.
[20:20:20] <Jordan> Так можно подправить код, для других ос
[20:20:40] <Jordan> Просто разные реализации, с одним интерфейсом
[20:21:35] <vlad2> Кроме того, я бы делал не exit(1), а полноценный дамп, тогда и __FILE__ __LINE__ будет не нужен.
[20:22:32] <Jordan> В смысле с отладочной информацией компилировать?
[20:23:02] <Jordan> Я просто с паскаля на си перешёл. Там я таким не заморачивался.
[20:26:52] <vlad2> В смысле чтоб у тебя осталось что-то после падения
[20:27:01] <vlad2> Оно по-разному в разных ОС
[20:27:07] <vlad2> В винде можно делать крэшдамп.
[20:27:11] <vlad2> В юниксе тоже.
[20:27:42] <vlad2> В случае exit(1) - ни ыинда ни юникс дамп не делают
[20:27:53] <Jordan> Как в оберонах? Падений нет, а если упадёт, что делать?
[20:28:16] <vlad2> Т.к. у тебя остается на руках только Printf c номером строки. Обычно этого мало для разбирательств что же произошло.
[20:28:36] <vlad2> В оберонах не знаю, но вот ББ да, далет дамп.
[20:28:39] <vlad2> (свой)
[20:29:21] <vlad2> exit(1) в твоем слукчае это и есть "падение" :)
[20:49:48] <Jordan> vlad2
[20:49:59] <Jordan> Вот на таком коде падает
[20:50:01] <Jordan> while ((p != NULL) || (strcmp(p->name, name) != 0))
[20:50:30] <vlad2> name != NULL?
[20:51:23] <Jordan> p указатель, name поле
[20:55:24] <Jordan> Может всю программу запостить?
[20:57:32] <Jordan> Ладно, сейчас методом Тыкова, буду искать ошибку.
[21:01:26] <Jordan> gcc вообще варнингами засыпал, хотя msvc молчит.
[21:05:29] <vlad2> name это у тебя char*
[21:05:34] <vlad2> значет он может быть NULL
[21:07:18] <Jordan> Понял. Сейчас всё по новой перепишу, слишком много варнингов.
[23:10:36] <vаlexey> гы http://www.opennet.ru/opennews/art.shtml?num=38870