[00:09:40] <jordan36957> У новоделов своя атмосфера http://cs4559.vk.me/u3296726/13541437/x_24266a50.jpg это пять :-)
[00:15:29] <valexey> я все понимаю, это ничему не противоречит. НО ЗАЧЕМ?
[00:16:17] <jordan36957> Так этож типа своё и т.д У них жёсткое разделение на своё и чужое.
[00:17:28] <TRUE> что "зачем"?
[00:17:41] <valexey> не вижу ничего своего. обычная мейнстримовая математика. только обозначения чутка другие. но кто обращает внимание на обозначения?
[00:18:45] <jordan36957> У них идея фикс, всё создали, придумали арии и т.д
[00:18:57] <jordan36957> Этим и они и заморачиваются.
[00:18:57] <TRUE> скорее, хари
[00:19:18] <TRUE> там харийские таблицы
[00:21:12] <TRUE> эти таблицы в своём текущем представлении - высер. Если был оригинал, то его и надо было показывать. А если это и есть оригинал, то чем им поможет эта таблица, составленная в десятичной системе?
[00:21:16] <valexey> ну так придумали бы. а то какой то очевидный боян выкатили и рады.
[00:21:40] <TRUE> в тесятичной системе эта штука точно неудобна.
[00:21:49] <TRUE> или избыточна
[00:22:21] <valexey> да нет. там же тупо a^3 * b
[00:22:53] <valexey> ну, понятно что эта табло которое позволяет быстро прикинуть отношение объемов.
[00:23:05] <valexey> не неплохо бы размерности указать явным образом
[00:24:22] <TRUE> тогда двумерное умножение было бы a^2 * b
[00:25:23] <TRUE> и мне интересно, где они находили такие места в природе, где этой таблице можно было бы удобно объёмы считать...
[00:25:41] <TRUE> и откуда граница в 65 нарисовалась
[00:26:00] <valexey> листочек закончился? :-)
[00:26:13] <TRUE> скорее, береста
[00:27:22] <valexey> двумерное умножение у них полноценное, а тут нет. 2д у них позволяет заценить площадь прямоугольника а не пачки одинаковых квадратов. а 3д - позволяет оценить объем суммы b одинаковых кубов с ребром a.
[00:27:47] <valexey> Короче, всё понятно, но ЗАЧЕМ? Ничего нового. Ничего интересного. Ничего необычного.
[00:27:52] <valexey> Просто useless.
[00:29:08] <jordan36957> Не грузитиесь. Это просто юмор.
[00:29:22] <vlad2> Это тебе все понятно ;) А неокрепшие умы возможно и производит впечатление ;)
[00:29:47] <valexey> на ум из средней школы это уже не должно производить впечатление.
[00:31:09] <valexey> точнее даже из средних классов школы
[00:31:43] <vlad2> Почитай оборонкоре ;) Ты переоцениваешь уровень современной мредней школы :)
[00:32:15] <TRUE> Это нелогично как с точки зрения системы счисления, так и с точки зрения применения для реальной жизни (подсчёт объёма, если объём не в форме куба).
[00:32:16] <jordan36957> Так там вроде как все с высшим.
[00:33:03] <jordan36957> Или большинство.
[00:34:23] <valexey> ну, info21 говорит только о школьниках и школьницах
[00:34:26] <valexey> от 12ти лет
[00:34:36] <valexey> (то есть 5 класс и выше)
[00:35:00] <jordan36957> Он преподаватель информатики?
[00:35:27] <valexey> Ну, благодаря знакомствам он имеет возможность преподавать в школе. Это не основной род деятельности.
[00:35:29] <jordan36957> Я читал форум педсовет ру, вроде он там мелькал в разделе информатика.
[00:35:55] <valexey> Так то он физик-теоретик. То есть наукой занимается, в ЦЕРН катается. Ускорители, все дела.
[00:36:14] <valexey> TRUE: приближаешь форму кубами и считаешь!
[00:37:21] <valexey> предельчик там при размере каждого куба стремящегося к нулю, а обещее число кубов к бесконечности. :-)
[00:40:23] <TRUE> Если любая объёмная форма имеет искривления в десяток градусов, то пределы и дискретизация резко перестают работать. А если мозга на это хватает, то какие-то там унылые таблички становятся бесполезны - и без них всё понятно.
[00:40:50] <valexey> ога
[00:41:02] <valexey> я ж говорю  - нуль новизны и нуль пользы
[00:41:29] <TRUE> нуль новизны и пользы тем, кто якобы их придумал.
[00:42:06] <valexey> я вполне могу допустить что такое было составлено хрен знает когда, когда из математики была инженерная арифметика и только.
[00:44:50] <jordan36957> TRUE Ты ещё пепелацы не видел, вот там физика отдыхает. Прям как в мультике атлантида, на камнях летают.
[00:45:48] <jordan36957> глыба + напильник и к звездам, бороздить космос. :-)
[00:47:21] <valexey> может эту табличку нужно на распев читать чтобы пепелац завелся?
[00:48:31] <vlad2> Гы. Была серия ГубкиБоба - он там рассекал на булыжнике.
[00:49:10] <jordan36957> Так они там под водой и душ принимают, и у костра с гитарой песни поют.
[00:49:41] <valexey> на фоне родноверов - вполне правдоподобно выглядит
[00:51:17] <valexey> меня давеча одна психологиня в комментах назвала безмозглым животным. чем-то ей научная точка зрения на человека не понравилась :-)
[00:52:25] <jordan36957> Неуравновешенная она какая то. К людям надо мягше.
[00:53:02] <valexey> http://imja.livejournal.com/2185064.html?thread=19468136#t19468136
[00:53:13] <valexey> мой коммент. ну и дальше пошло обсуждение :-)
[00:57:48] <vlad2> Забей. Лучше ответь на вопрос про С++.
[00:57:51] <jordan36957> Не пойму, что за психотерапевт. Какое образование и т.д Может лже психотерапевт. Странная дамочка.
[00:57:54] <jordan36957> Профессиональный психотерапевт Адриана Имж - это не только постоянный автор психологический статей для ряда изданий, но и яркий поэт.
[00:58:13] <jordan36957> Научной деятельностью я как понял не занимается.
[00:59:10] <vlad2> Вот есть std::vector<T> размером 10. Есть ли гарантия, что количество живых объектов T точно 10 (не больше)?
[00:59:27] <jordan36957> Я знаю.
[00:59:32] <valexey> vlad2: что значит размером 10?
[00:59:39] <jordan36957> Он выделяет в зависимости от реализации.
[00:59:56] <vlad2> значит assert(v.size == 10);
[01:00:09] <valexey> "выделяет".. звучит биологичненько :-)
[01:00:29] <vlad2> В смысле понятно, что памяти он выделил скорее всего больше. Вопрос именно в живых объектах.
[01:00:37] <valexey> vlad2: нет, гарантий нет.  там еще может быть сколько-то места зарезервировано
[01:00:45] <valexey> и это вполне живые вроде как объекты.
[01:01:01] <valexey> гм. хотя-я... а почему бы не проверить?
[01:01:09] <vlad2> Это интересно. Как бы репродьюснуть.
[01:01:28] <vlad2> Меня оно интересует в контексте shared_ptr.
[01:01:29] <jordan36957> Так так и пишут выделить память. Как правильно то?
[01:02:50] <jordan36957> Пометить область памяти для последующего использования?
[01:03:18] <valexey> vlad2: вроде бы гарантирует.
[01:03:18] <vlad2> "место" может быть зарезервировано. Но конструкторы объектов для жтог места не вызваны.
[01:03:25] <valexey> угу. не вызываются
[01:03:33] <valexey> #include <vector>
#include <iostream>

int i=0;

struct S{S(){i++; std::cout<<i<<std::endl;}};

int main()
{
   std::vector<S> v;
   v.reserve(10);
   return 0;
}
[01:03:35] <vlad2> Ага. Так значит гарантировано?
[01:03:48] <vlad2> Не, это слишком простой пример.
[01:03:57] <valexey> а что тебе еще надо? :-)
[01:04:26] <vlad2> Я в подобные грабли наступал, когда имел проблемы с вектором объектов с перегруженным operator =
[01:05:03] <jordan36957> std::vector<S> v; выделил больше, дальше v.reserve(10); - перевыделение?
[01:05:10] <vlad2> Проблема репродьюсилась очень экхотически.
[01:05:36] <jordan36957> Допустим было 16, потом reserv стало 10.
[01:05:43] <valexey> jordan36957: вектор вначале ничего не выделил
[01:05:57] <valexey> reserve сказал ему зарезервировать память под 10 объектов.
[01:06:09] <vlad2> reserve ничего не делает. Т.е., надохотя бы так: ressize(10); //создалось 10 объектов
[01:06:15] <vlad2> resize(5);// уничтожилось 5
[01:07:26] <vlad2> Т.е. имеет ли вектор право не вызвать деструктор для 5 объектов в этом случае (чтобы вызвать потом, например).
[01:08:09] <jordan36957> То есть не сразу освобождать, а при некотором лимите?
[01:08:17] <valexey> vlad2: врешь! в моем коде reservе таки делает - память оно хавает только в путь!
[01:08:26] <valexey> :-)
[01:08:48] <vlad2> память, но не конструкторы объектов
[01:09:42] <vlad2> Хотя, наверное, смысла в этом исчезающе мало.
[01:09:51] <vlad2> Все равно ж их надо вызывать в какой-то момент.
[01:11:55] <valexey> там кстати интересно. в основном там зовется конструктор копирования уже при первом же ресайзе.
[01:12:30] <valexey>    std::vector<S> v;
   v.resize(10);

[01:12:34] <valexey> вот так если
[01:12:50] <valexey> b 1
c 2
c 3
c 4
c 5
c 6
c 7
c 8
c 9
c 10
c 11
[01:13:02] <valexey> где b - конструктор по умолчанию
[01:13:08] <valexey> c - конструктор копирования
[01:13:17] <valexey> цифра - номер экземпляра
[01:13:18] <vlad2> Грабли с которыми я столкнулся были в том, что вызывался operator = для существующих элементов. Это было крайне неожиданно.
[01:13:51] <valexey> а ты думал, что ему позовут деструктор, а потом на этом месте позовут конструктор копирования?
[01:14:01] <vlad2> В смысле при каком-то действии типа resize или erase или push_back - не помню. Именно не конструктор копирования, а присваивание.
[01:14:34] <valexey> щща
[01:14:38] <vlad2> Нет. Я думал (и тот кто все это писал), что будет конструтор копирования + деструктор. И так оно и было. Но не всегда.
[01:15:07] <valexey> а я уже в это походу воткнулся. погодь минут 5-10 :-)
[01:15:13] <vlad2> Т.е. я говорю - репродьюс был нетривиальный.
[01:15:33] <vlad2> Несколько последовательных опрераций.
[01:17:39] <valexey> а это везде было, или в какой-то конкретной имплементации stl?
[01:20:44] <valexey> а-а. мелкософт значит.
[01:20:54] <vlad2> Угу.
[01:21:26] <valexey> а это точно не какое-нибудь v[0]=s; было?
[01:22:32] <vlad2> Не-а.
[01:23:03] <vlad2> Щаз, может найду тест.
[01:24:50] <vlad2> Не, не нашел.
[01:25:26] <vlad2> Видимо не осталось, потому что после фикса тест точно так же фэйлился бы.
[01:25:48] <vlad2> Фикс был в том, чтобы не класть элементы с долбанутым operator= в вектор.
[01:26:17] <vlad2> А репродьюс был нужен для того, чтобы доказать, что крэш был именно из-за такого поведения вектора.
[01:29:42] <jordan36957> Алексей у меня тоже вопрос.
[01:29:58] <jordan36957> Как вернуть указатель на Hello
[01:30:01] <jordan36957> Button Hello;
list<Button> Table;
Table.push_back(1);
[01:30:10] <jordan36957> А мне нужно так
[01:30:12] <jordan36957> Button * Hello;
list<Button> Table;
Hello = Table.push_back(1);
[01:30:38] <jordan36957> После чего я хочу работать с указателем Hello, а не с его индексом.
[01:31:57] <jordan36957> Читал это http://www.amse.ru/courses/cpp2/2011_02_21.html
[01:32:37] <valexey> Что мешает: Button* Hello = new Button; list<Button*> Table; Table.push_back(Hello);
[01:33:21] <valexey> Ну, то есть по нормальному там конечно надо в shared_ptr завернуть и тип list'а будет list<shared_ptr<Button>>;
[01:33:43] <jordan36957> Ок. Оно. просто все примеры которые я смотрел были с индексами, вот я и запутался.
[01:34:06] <valexey> То есть никто тебе не мешает скаладывать в список указатели на кнопки.
[01:34:31] <jordan36957> Ок.
[01:36:41] <jordan36957> Так shared_ptr это счётчик ссылок, типа персональный сборщик мусора для переменной?
[01:36:49] <valexey> угу
[01:38:37] <jordan36957> Я созрел до использования stl
[01:38:57] <valexey> :-)
[01:42:32] <valexey> так. спать!
[02:04:03] <vlad2> jordan36957: опомнись, обратной дороги нет ;)
[02:09:17] <jordan36957> Прям как наркомания, одна доза и ты на игле. :-) Всё же stl полезная штука. Не хочу каждый раз писать одно и тоже. Правда я пишу в процедурном стиле, пользуюсь stl, но до написания своих классов ещё не дошёл. Как начну и на классах писать, значит всё, затянуло. :-)
[02:25:38] <vlad2> Собственное STL и не предполагает создание своих классов. Там же только алгоритмы + контейнерв. Никто не наследуется от контейнеров (обычно).
[02:31:10] <jordan36957> list <Button*> Table;
[02:31:17] <jordan36957> Table.push_back(P);
[02:32:06] <jordan36957> Указатель на P копируется? Он содержит тот же указатель? Или может он меняет аддрес при копировании?
[02:32:17] <jordan36957> Задумка такая
[02:32:20] <jordan36957> Button * Create(string Name)
{
 Button * P = new Button;

 P->PosX  = 0;
 P->PosY  = 0;
 P->SizeX = 75;
 P->SizeY = 35;
 P->Name  = "None";
 
 Table.push_back(P);
 
 return P;
}
[02:34:04] <jordan36957> Запомнить B = Create("Кнопка"); И использовать B дальше. Вида Button::SetSize(B, 50, 15);
[02:34:52] <jordan36957> Пойду проверю.
[02:41:01] <TRUE> Button * Create(string Name)
[02:41:02] <TRUE> ...
[02:41:06] <TRUE> P->Name  = "None";
[02:42:05] <TRUE> Думаю, указатели в плюсах такие же, как и везде.
[02:42:08] <TRUE> это просто число
[02:42:15] <TRUE> и оно, естественно, копируется
[02:42:29] <jordan36957> L забыл у меня там должно быть wstring P->Name  = L"None";
[02:42:38] <jordan36957> Ок. Понял.
[02:43:01] <TRUE> у меня там должно быть wstring P->Name  = L"None";
[02:43:11] <TRUE> а как будет работать Create("Кнопка")
[02:43:15] <TRUE> где это задаётся?
[02:43:23] <TRUE> или я что-то упускаю?
[02:43:26] <jordan36957> Мало ли, просто столько книг написано о том как обойти грабли С++, мало ли.
[02:43:35] <jordan36957> Сейчас покажу старый код на паскале
[02:43:56] <jordan36957> procedure Handler(Surface: PSDL_Surface; Event: TSDL_Event);
var
 P: PButton;
 X: Word;
 Y: Word;
 Found: boolean;
begin
 P := Table;
 if (P <> NIL) then
 begin
   if (Event.Type_ = SDL_MOUSEMOTION) then
   begin
     X := Event.Motion.X;
     Y := Event.Motion.Y;
     while (P <> NIL) do
     begin
       if (PointInRect(X, Y, P^.PosX, P^.PosY, P^.SizeX, P^.SizeY) = true) then
       begin
         Focused(Surface, P);
       end
       else begin
         Draw.Rect(Surface, P^.PosX, P^.PosY, P^.SizeX, P^.SizeY, 162, 162, 162);
       end;
       P := P^.Next;
     end;
   end;
 end;
end;
[02:44:01] <TRUE> вместо "None" не надо параметр процедуры вставлять?
[02:44:09] <jordan36957> Нет просто текст
[02:44:39] <jordan36957> А в главном цикле передается где рисовать       if (Event.Type_ = SDL_MOUSEMOTION) then
     begin
       Button.Handler(Screen, Event);
     end;
[02:44:50] <TRUE> а куда передаётся "Кнопка" в Create("Кнопка")?
[02:45:36] <TRUE> что с этим значением делают?
[02:46:13] <jordan36957> Текст пока не реализован, я пока с stl font не разобрался. Это просто что б было. Кнопка это просто текст, создаётся кнопка, а на ней текст.
[02:46:54] <jordan36957> А понял.
[02:47:33] <jordan36957> Это ошибка должно быть так P->Name  = Name;
[02:47:56] <jordan36957> Спасибо. За первый найденый баг.
[02:47:59] <TRUE> )
[14:12:28] <valexey> Чорт. В новом офисе грозятся опенспейсом!
[14:12:45] <valexey> Новое буржуйско-американское руководство сильно радуется этому. Типо будет настоящий опенспейс! А не то как сейчас - сейчас у нас кубики.
[14:14:10] <valexey> БЕЖАТЬ!
[16:20:34] <valexey> vlad2: а транслированный в js КП тебя не больше бы удовлетворил бы? :-)
[16:24:14] <valexey> Ну, с точки зрения практического применения взаместо жабашкрипта.
[16:30:12] <jordan36957> Я в ступоре. Как пройтись по списку и найти указатель? Как пробывал я.
[16:30:20] <jordan36957> uint16_t GetPosX(Button * Found)
{
 list <Button*>::iterator P;

 P = Table.begin();
 while (P != Table.end()) || (P != Found)
 {
   P = P + 1;
 }

 return P->PosX;
}

[16:30:30] <jordan36957> И так
[16:30:33] <jordan36957> uint16_t GetPosX(Button * Found)
{
 Button * P = Table.find(Table.begin(), Table.end(), Found);

 return P->PosX;
}
[16:31:52] <TRUE> while (P != Table.end()) || (P != Found)
[16:32:01] <TRUE> а нужно не &&  часом?
[16:32:05] <jordan36957> Не компилится
[16:33:48] <TRUE> а что говорит?
[16:34:15] <jordan36957> error C2679: бинарный "=": не найден оператор, принимающий правый
операнд типа "std::_List_iterator<_Mylist>" (или приемлемое преобразование отсу
тствует)
[16:34:26] <jordan36957> Здесь ошибка P = Table.begin();
[16:34:38] <jordan36957> Может я весь код запощу?
[16:34:47] <TRUE> а смысл?
[16:34:53] <TRUE> я-то вряд ли помогу
[16:35:18] <TRUE> я на плюсах даже хеловорлд не писал
[16:35:38] <jordan36957> Я не могу понять, в чём проблема, я всё делал так же как и обычный обход списка, но на stl не робит.
[16:35:52] <jordan36957> И итератор есть.
[16:35:58] <TRUE> .begin() - это итератор?
[16:36:11] <TRUE> или обычный элемент?
[16:36:13] <jordan36957> Нет это начало списка.
[16:36:26] <TRUE> первый элемент списка?
[16:37:25] <jordan36957> Да. Я же прохожу от начало, до конца и ищу элемент
[16:39:05] <TRUE> а разве можно присваивать элемент итератору? итератор же должен иметь возможность гулять по элементам, а в общем случае зная только лишь один элемент переходить к другим не получится.
[16:39:43] <TRUE> может, есть какой-нибудь Table.iterator
[16:41:13] <valexey> while (P != Table.end()) || (P != Found)
 {
   P = P + 1;
 }
[16:41:27] <valexey> это что за фигня?
[16:41:34] <jordan36957> Я пример переделал.
[16:41:51] <jordan36957> У list нет метода next
[16:42:40] <vlad2> вы так говоритте, как будто опенспейс это что-то плохое :)
[16:43:00] <valexey> vlad2: оберспейс - хорошее, опенспейс - плохое!
[16:43:01] <valexey> :-D
[16:43:19] <valexey> jordan36957: который из двух у тебя не работает?
[16:43:26] <valexey> через свой цикл, или через find?
[16:43:33] <jordan36957> Оба. Не компилит
[16:43:40] <valexey> /me вообще не понимает смысла этих функций
[16:43:54] <vlad2> В КП нет ЦД ;) Так нет, не удовлетворил. Я хотел увековечить апогей виртовской мысли и объект вожделения info21 ;)
[16:44:45] <valexey> Чем вызов x = GetPosX(Found); будет отличаться от x = Found->PosX; // ????
[16:45:15] <valexey> То есть нафига его искать в списке, если он у тебя уже есть? :-)
[16:45:29] <jordan36957> Доступ к структуре только через методы.
[16:45:58] <valexey> Found->PosX();
[16:46:01] <valexey> и всё :-)
[16:46:08] <valexey> Если у неё есть такой метод :-D
[16:46:20] <vlad2> "P = P + 1;" для std::list не будет работать
[16:46:26] <vlad2> Это ж список
[16:46:27] <valexey> Переменную-член PosX - crhsnm
[16:46:36] <valexey> jordan36957: дас. P++ надо
[16:46:37] <vlad2> Надо ++P
[16:46:51] <valexey> vlad2: подерёмся? :-)
[16:47:01] <vlad2> Без разницы.
[16:47:15] <vlad2> Я когда-то предпочитал p++, потом стал писать ++p.
[16:47:34] <valexey> Оу, ты круче меня! То есть я сейчас пытаюсь перейти на ++р с р++
[16:47:41] <valexey> но пока никак. хотя знаю, что надо!
[16:49:00] <shaggie> std::advance
[16:49:56] <valexey> shaggie: злобно.
[16:50:07] <vlad2> Для любителей обфускации :)
[16:50:55] <valexey> ну, не обфускация конечно. наоборот - явно видно что ты хочешь.
[16:51:00] <vlad2> jordan36957: код действительно странный. ты чего хочешь от него?
[16:51:29] <valexey> (не говоря уже о стиле кодирования)
[16:53:25] <valexey> такс. походу попытка применить Madzi на редактор кода провалилась :-)
[16:53:32] <jordan36957> Я хочу пройтись по списку, на STL, на обычном списке у меня всё работает.
[16:53:58] <jordan36957> Обычный список
[16:54:00] <jordan36957> Button * Find(Button * Elem)
{
 Button * P = List;
 while (P != NULL) || (P != Elem)
 {
   P = P->Next;
 }

 return P;
}
[16:54:05] <vlad2> std::find - пррапвильный подход :)
[16:54:14] <jordan36957> Так не компилит.
[16:54:53] <vlad2> std::find(Table.begin(), Table.end(), Found);
[16:55:01] <vlad2> обязано компилить - проверь :)
[16:55:32] <valexey> Оно ж ИТЕРАТОР возвращает!
[16:55:37] <valexey> а ты что делаешь, шайтан?
[16:55:39] <valexey> Button * P =
[16:55:42] <valexey> что это такое?
[16:55:45] <valexey> :-)
[16:55:53] <valexey> Button * P = Table.find(Table.begin(), Table.end(), Found);
[16:56:06] <jordan36957> Не так?
[16:56:14] <valexey> Угу
[16:56:16] <jordan36957> А понял
[16:56:24] <valexey> Из итератора нужно добыть содержимое.
[16:56:37] <valexey> Button * P = *(Table.find(Table.begin(), Table.end(), Found));
[16:56:42] <valexey> так должно работать.
[16:57:09] <jordan36957> find: не является членом "std::list<_Ty>"
[16:57:32] <valexey> ясен пень
[16:57:41] <valexey> оно не член. это свободная функция
[16:57:54] <vlad2> См. как я написал.
[16:57:55] <valexey> std::find(Table.begin(), Table.end(), Found);
[16:57:58] <vlad2> Угу.
[16:58:29] <valexey> нафига алгоритму find быть функцией-членом? Только чтобы у нас было ООП-образно? :-)
[16:58:37] <valexey> (типо всё через точечку)
[16:58:51] <valexey> Скажем НЕТ лишним членам!
[16:59:26] <vlad2> Угу.
[16:59:34] <vlad2> Мемебры только для доступа к потрохам.
[16:59:49] <vlad2> Все осталтное - свободные функции.
[17:00:00] <vlad2> Было в книжке какой-то оговорено.
[17:00:14] <vlad2> И я нашел такой подход мегаправильным.
[17:00:30] <valexey> дык, сейчас даже begin/end это свободные функции.
[17:00:43] <valexey> begin(my_cool_list)
[17:00:51] <jordan36957> error C3861: find: идентификатор не найден
[17:01:04] <valexey> std::find
[17:01:06] <vlad2> Ты std не забыл?
[17:01:10] <valexey> ну и хедер алгоритмов подключил?
[17:01:12] <jordan36957> using namespace std;
[17:01:24] <vlad2> #include <algorithm>
[17:03:13] <jordan36957> Работает
[17:03:35] <vlad2> Круто!
[17:03:44] <vlad2> Да... Мадзи не раскртуился :)
[17:04:47] <jordan36957> Как проходить по списку без итератора?
[17:05:00] <jordan36957> Просто пример.
[17:05:18] <valexey> никак. ну, в смысле наверно и можно через потроха, но это не правильно.
[17:05:33] <valexey> то есть в цикле один фиг ты будешь с итератором дело иметь.
[17:05:40] <vlad2> Гы! Нас назвали "оппозиционным ресурсом" :)
[17:05:44] <valexey> это со всеми контейнерами так.
[17:06:37] <valexey> vlad2: дык, у Петра (да и у многих там) в голове схему "патриоты VS засланники запада" замкнуло со схемой "Оберон VS мейнстрим".
[17:07:02] <vlad2> Угу. Теперь четкая параллель зафиксирована :)
[17:07:07] <valexey> ну а мы, в их глазах - мерзкие либерасты, подкупленные западным мейнстримом!
[17:07:17] <valexey> раскачиваем лодку!
[17:07:37] <vlad2> jordan36957: иетратор это то, через что надо работать с контенером. можешь даже не помышлять ни о чем другом :)
[17:08:29] <valexey> vlad2: а чо такое в студии SDL? Которое Security Development Lifecycle?
[17:08:43] <vlad2> Без понятия.
[17:08:46] <valexey> А то при создании простейшего hello world'а оно предлагает включить поддержку вот ЭТОГО
[17:08:58] <valexey> Мне становится стрёмно, и я всегда отключаю
[17:11:24] <valexey> а еще мне стрёмно от мелкомягких _tmain'ов, TCHAR'ов и прочих нестандартных извращений по умолчанию.
[17:13:42] <vlad2> Дык, не используй ;)
[17:14:02] <valexey> дык и не использую.
[17:14:05] <vlad2> TCHAR'ы им можно было и выкинуть, уже неактуально. Видимо им просто лень, все и так привыкли.
[17:14:17] <vlad2> В какой-то момент оно было актуально.
[17:15:00] <valexey> булочка с _tmain'ом :-)
[17:21:27] <jordan36957> Так правильно обходить список
[17:21:30] <jordan36957>  list<Button>::iterator it;
 for(it = Table.begin(); it != Table.end(); ++it)
 {
 printf("%d\n", *it->PosX);
 }
[17:22:35] <jordan36957> Ругается: бинарный "=": не найден оператор, принимающий правый
операнд, на эту строку  for(it = Table.begin();
[17:24:34] <valexey> list<Button*>::iterator it;
[17:24:47] <valexey> у тебя же там не кнопки, а указатели на кнопки лежат
[17:25:30] <jordan36957> Я так пробывал, вот недопустимый возвращаемый тип "Button **" для перегр
уженного "operator ->"
[17:26:29] <valexey> printf("%d\n", (*it)->PosX); // а если так?
[17:26:59] <valexey>  for(auto it = Table.begin(); it != Table.end(); ++it)  {
     printf("%d\n", (*it)->PosX);
 }
[17:27:00] <valexey> :-)
[17:27:33] <jordan36957> Работает, но зачем приводить тип? Там же всё типизированно.
[17:28:08] <valexey> а где ты видишь приведение типа?
[17:28:34] <jordan36957> Я думал (*it), что это значит?
[17:28:49] <valexey> это просто операторные скобочки
[17:29:12] <valexey> чтобы значится у тебя вначале произошло разименовывание, а уже потом гарантированно поехало ->
[17:29:27] <valexey> простое правило - не уверен? поставь скобки!
[17:29:32] <jordan36957> Ок
[17:40:49] <valexey> О, блин! Значением аргумента функции по умолчанию может быть не обязательно литерал, но и полноценное выражение!
[17:51:05] <TRUE> скобочки - это указание приоритета.
[17:57:10] <vlad2> Это где?
[18:00:25] <TRUE> в данном случае
[18:07:28] <valexey> ну я ж говорю - обычне операторные скобочки
[18:07:58] <valexey> /me прыгает перед камерой с распечаткой шахматной доски, як шомпанзо
[18:08:44] <TRUE> А камера на этой распечатке кружочки дорисовывает?
[18:09:07] <valexey> угу. точнее сеточку рисует цветную.
[18:09:28] <valexey> потом все эти результаты скармливаются убералгоритму, через который калибруется геометрия изображения с камеры
[18:10:05] <TRUE> а я на видео заметил, что в каких-то случаях на экран выводится инвертированное изображение. Почему так было? Или это на демке типа "спецэффектов" добавили.
[18:10:45] <valexey> это типо показывают что кадр кошерный, и пойдет в дело.
[18:11:19] <valexey> то есть досточка хорошо распозналась, все чотенько и полезненько.
[18:12:23] <valexey> Ща буду скрещивать с интеловской камерой и пробовать туда IR-картинку вкорячить.
[18:12:42] <TRUE> так можно любую камеру калибровать?
[18:14:00] <valexey> по идее да. в принципе, можно и без автораспознаваяни, можно руками натыкать точек.
[18:14:29] <valexey> (не, ну как любую - если оно там всё совсем кривое и не вписывается в мат. модель, то обломись конечно).
[18:16:03] <TRUE> а вот где можно взять образ загрузочного сектора, который смотрит на таблицу разделов и загружает загрузчик из активного раздела?
[18:16:39] <TRUE> причём, второй загрузчик расположен в самых первых секторах активного раздела
[18:17:05] <valexey> эээ... не знаю.
[18:21:36] <TRUE> это такой, который был в досе. Сейчас новомодные грабы и лилы всё черз анус делают, так что непонятно, как загрузчик восстановить обратно, если загрузочный раздел не понимается этой новомодной фигнёй.
[18:23:30] <valexey> mbr шоле?
[18:24:00] <valexey> вообще, что мешает взять в виртуалочке дос, и выкусить первый сектор?
[18:24:31] <TRUE> да
[18:24:42] <TRUE> выкусываю
[18:24:49] <TRUE> разметка разделов есть
[18:24:56] <TRUE> загрузчика нет
[18:25:08] <TRUE> так давно ставил дос, что забыл, как это делается правильно
[18:26:09] <valexey> fdisk /mbr
[18:26:10] <valexey> ?
[18:26:59] <TRUE> да, похоже это.
[18:27:14] <TRUE> я боялся, что эта команда мне виртуальный флопик потрёт
[19:23:29] <Kemet> test
[19:23:30] <Жаба> Kemet, passed
[19:25:35] <TRUE> test
[19:25:35] <Жаба> TRUE, passed
[19:25:51] <TRUE> тест
[19:25:58] <TRUE> some test
[19:26:12] <TRUE> help
[19:26:15] <TRUE> !help
[19:26:56] <valexey> TRUE: не будет тебе помощи!
[19:27:31] <valexey> О! Оказывается оберонистые срачики очень похожи на срачик "пилатес VS йога": http://miumau.livejournal.com/1394718.html
[19:27:47] <TRUE> жаба дрессированная? Какие команды понимает?
[19:31:10] <Kemet> ?
[19:31:26] <Kemet> version
[19:31:26] <Жаба> Kemet,  you have Instantbird 1.4 (libpurple 2.10.7) on
[19:31:59] <Kemet> version TRUE
[19:32:00] <Жаба> Kemet, TRUE have Tkabber 0.11.1 (Tcl/Tk 8.5.5 (starpack rev.1)) on
[19:44:19] <jordan36957> дженерики и шаблоны по сути одно и тоже, или они чем то отличаются?
[19:46:51] <vlad2> Типа отличается, но цель одна.
[19:48:14] <valexey> цель БЫЛА одна, но по факту уже разные :-)
[19:48:16] <TRUE> концептуально, шаблон - это именование последовательности действий. Он не обязан что-то обобщать.
[19:48:28] <valexey> ибо шаблоны кроме обобщенного программирования еще позволяют метапрограммирование
[19:48:35] <TRUE> но обычно, с помощью шаблонов именно обобщают
[19:48:40] <valexey> TRUE: у тебя не тот шаблон :-)
[19:51:39] <jordan36957> Метапрограммирование типа такого? http://habrahabr.ru/post/38622/
[19:58:54] <valexey> типа
[19:59:18] <valexey> Например на дженериках Ады такое не сделать.
[20:11:59] <TRUE> В статье с хабра по метапрограммированию только первые три слова: Метапрограммирование — это «программирование программ»
[20:12:32] <TRUE> с таким же успехом, эти слова можно было заменить на "лимоны жёлтые", а всё остальное оставить какесть
[20:12:53] <valexey> Метапрограммирование это boost::mpl :-)
[20:13:31] <TRUE> шаблоны в плюсах - это метакомпиляция
[20:13:43] <TRUE> или суперкомпиляция, если я не ошибаюсь
[20:15:14] <valexey> Ошибаешься. Суперкомпиляция это совсем другое.
[20:15:48] <valexey> Шаблоны в плюсцах - полны по тьюрингу. Следовательно это программа. Программа которая может сгенерировать другую программу, которая уже будет исполняться.
[20:16:36] <valexey> Блин. Какой же хром жручий до памяти.
[20:16:50] <TRUE> программа - это не то, что полно по Тюрингу
[20:17:07] <TRUE> так что полнота по Тьюрингу - не аргумент
[20:17:39] <valexey> Ну, смотри. Алгоритмы на шаблонах пишутся (не stl)? Пишутся. А программа это как раз совокупность алгоритмов преследующих некую цель.
[20:18:13] <valexey> Эти все алгоритмы, эта программа, интерпретируется, то есть исполняется в момент компиляции.
[20:19:17] <TRUE> с таким успехом, написание компилятора тоже можно назвать метапрограммированием.
[20:19:42] <valexey> Ну, дай определение сам, чо. :-)
[20:33:41] <TRUE> Важно помнить, что исходник программы - это не сама программа. Программа - это то, что в памяти и готово к исполнению (для компов нашей архитектуры). Метапрограмма - это нечто в памяти, которое во время своей работы строит что-то другое в памяти. То есть, исполнитель, исполняя текущую программу, делает себе новую программу.

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

[20:33:58] <TRUE> А в случае с шаблонами имеют место эквивалентные преобразования.
Которые имеют довольно сложный вид, и относятся к декларативщине, куда относится и метапрограммирование.
Или я сам его туда записал по своим ощущениям?..

[23:18:02] <valexey> vlad2: пулреквест видал?
[23:19:18] <vlad2> Нет еще.
[23:23:59] <valexey> https://github.com/vladfolts/oberonjs/pull/7
[23:35:33] <vlad2> We can’t automatically merge this pull request.
[23:36:02] <vlad2> Он, что-ли, из какой-то древней ветки?
[23:36:10] <valexey> фик знает
[23:38:41] <vlad2> Судя по диффам там все хорошо.
[23:40:16] <vlad2> Долбанный гит.
[23:41:20] <vlad2> Оно почему-то всю ветку хочет замердждить, а не тольок эти два файла.
[23:41:53] <vlad2> Придется разбираться.
[23:41:55] <valexey> злобно.