[00:00:36] <vlad2> Студент не нужен! :)
[00:01:26] <valexey_> хотя у меня там и так уже шаблонная-фабрика-синглетон :-)
[00:03:13] <valexey_> что как бы сразу заставляет задуматься что такое инстанцирование, сколько инстанцирований будет в коде, и как связаны разные инстансы шаблонного класса в плане статических полей оного класса :-D
[00:06:06] <valexey_> блин. это что еще за ересь?
[00:06:08] <valexey_> ld: warning: object file (main.o) was built for newer OSX version (10.12) than being linked (10.10)
[00:12:00] <vlad2> Гы :)
[00:12:09] <vlad2> По идее должно быть пофиг.
[00:12:21] <vlad2> Я всякую смесь линковал.
[00:12:41] <vlad2> Там принципиальная разница была между 10.6 и 10.7.
[00:13:09] <vlad2> Как раз сейчас заканчиваю перетаскивание code base на 10.7
[00:13:34] <vlad2> С 10.7 идет новая плюсовая либа.
[00:14:26] <valexey_> Ой, всё. Пойду в линукс!
[00:14:32] <vlad2> Так что либы скомпиленные с C++ < 10.7 не слинкуются с либами скомпиленными >= 10.7
[00:14:35] <valexey_> В конце концов целевая архитектура - линух.
[00:15:07] <vlad2> Слабак ;) В линуксе все могут, а ты вот osx побори :)
[00:15:56] <valexey_> да ну нафиг. я тут основной проект даже и не пробовал собирать :-)
[00:16:16] <valexey_> вообще, это было бы ну уж СЛИШКОМ гламурно - когда машиной рулит макбук :-)
[00:16:33] <valexey_> у нас в отделе вроде все натуралы :-)
[00:34:43] <valexey> там где боль.. :-)
[01:21:07] <vlad2> Придурки, таки сломали вебконтролку в 10.13...
[01:21:57] <valexey> а вы от нее зависите?
[01:22:02] <valexey> но вообще, я не удивлен, что сломали
[01:24:46] <vlad2> Эта самамя главная контролка!!!
[01:27:51] <valexey> в которой ВСЁ приложение?
[01:27:57] <valexey> вы там электрон изобрели, шоле? ;-)
[02:24:00] <valexey> YES!
[02:24:05] <valexey> Нашел и сделал!
[02:24:21] <valexey> --whole-archive /--no-whole-archive
[02:24:44] <valexey> такое: g++ -static main.o -Wl,--whole-archive -L. -ls1 -Wl,--no-whole-archive -o res
[02:24:46] <valexey> хехе
[02:25:01] <valexey> ух, на работке в cmake правил сборки вкорячу! вах!
[02:27:21] <valexey> http://i.juick.com/p/2883173.jpg
[11:49:07] <TRUE> _valexey_> Дык там весь цимес в том, чтобы через вызов конструктора у меня классы регистрировались в списке
В конструкторе одного класса вести процесс инициализации экземпляра другого класса. Интересно, что может пойти не так...
[12:49:46] <_valexey_> TRUE: процесс добавления в глобальный массив эоементов.
[12:49:52] <_valexey_> Какие проблемы то?
[12:50:12] <_valexey_> *элементов
[12:50:17] <TRUE> конструктор же не для этого
[12:50:35] <TRUE> он только экземпляр собственного класса инициализирует
[12:50:35] <_valexey_> Гг Y
[12:50:42] <_valexey_> Неа
[12:51:00] <_valexey_> Любые побочки возможны. И это правильно!
[12:51:04] <TRUE> ну, значит, это какие-то особые плюсатые конструкторы
[12:51:33] <TRUE> это не правильно, но осуществимо.
[12:51:37] <_valexey_> Например при создании сокета конструктор сразу может законнектить и еще кучу побочек выдать
[12:51:58] <_valexey_> Естественно плюсатые. А ты про какие?
[12:52:12] <_valexey_> В жабе - такие же
[12:53:29] <_valexey_> И в шарпее
[12:53:48] <_valexey_> А больше их нигде и нет :-)
[12:59:48] <_valexey_> Еще один пример - мьютекс. У этого класса вообще вся полезная работа только в конструкторе и и деструкторе производится.
[13:00:03] <_valexey_> И только через побочные эффекты
[13:01:54] <TRUE> это просто испорченный плюсовый мьютекс. Нормальные мьютексы такой фигнёй не страдают
[13:02:37] <TRUE> блин, нафига побочка в конструкторе?
[13:03:19] <_valexey_> Я уже несколько примеров привел :-)
[13:03:23] <TRUE> или ладно. Во всём виновата не сама побочка, а this. Не было бы его - не было бы и той проблемы.
[13:03:30] <_valexey_> А ты про конструкторы в каком языке?
[13:03:43] <TRUE> примеры, которые приводят к геморрою
[13:03:48] <_valexey_> Э? При чем тут this?
[13:04:13] <TRUE> чтобы из конструктора самого себя нельзя было куда-то добавлять.
[13:04:23] <_valexey_> Там проблема в традициях компоновщика которые все про Си а не про плюсы.
[13:05:04] <_valexey_> А оно не самого себя добавляло :-) а указатель на обычную функцию.
[13:05:22] <_valexey_> И да, если что, ничего не падало.
[13:06:28] <TRUE> а если бы ты объект добавлял в массив не из конструктора, а из того места, где конструктор вызывается, то проблема бы всё равно осталась?
[13:07:01] <TRUE> _valexey_> И да, если что, ничего не падало.
это как в js: ничего не падает, но и не работает.
[13:07:18] <TRUE> динамическая типизация, типо
[13:07:23] <_valexey_> Эмм. Это глобальная переменная. Это у глобальной переменной вызывался конструктор.
[13:07:53] <_valexey_> Поэтому я не понимаю что такое "место откуда вызывался конструктор"
[13:09:06] <TRUE> а явно прописать вызов конструктора возможно (вместо умолчального вызова)?
[13:09:24] <_valexey_> Если переформулировать в термины оберона - то проблема в том, что у модуля инит-секция не выполнялась если никто не дергал хоть одну функцию из модуля.
[13:09:58] <_valexey_> Это в случае статической компоновки, а не динамической как в ББ
[13:10:46] <_valexey_> Вроде можно. Но только в какой-то функции. Тут то вызов был не из функции :-)
[13:11:28] <TRUE> так создаёшь объект, берёшь у объекта указатель на функцию и записываешь в массив. Последовательно: создаёшь объект, а затем из объекта берёшь указатель на функцию. Так сработало бы?
[13:11:42] <TRUE> или и здесь компоновка бы всё испротила?
[13:13:07] <_valexey_> Все портила компоновка. Которая выкидывает нужное посчитав это лишним
[13:13:32] <_valexey_> Если делать это не в либе, то все работает.
[16:17:27] <vlad2> valexey: у нас круче, почим свой браузер ;)
[16:17:49] <vlad2> Вебконтролка как звено между старым и новым.
[16:22:05] <vlad2> TRUE: у нас используется точно такая же техника - регистрация фабрик компонентов на взлете. Отлично работает. Намного лучше ручных register_factory(), разбросанных по коду.
[16:25:20] <vlad2> TRUE: добавление/удаление самого себя в конструкторе/деструкторе обычно создает проблемы. Много таких мест повыкидывал.
[16:28:45] <TRUE> не понимаю. Как одно с другим уживается? То есть, как происходит регистрация фабрики "такой техникой" без добавлений себя в конструкторе?
[16:29:06] <TRUE> Что значит "на взлёте"
[16:30:20] <TRUE> и что, если register_factory() не разбросаны по коду, а собраны в одном месте или производятся в секции инициализации подсистемы, а не при инициализации фабрики?
[16:43:41] <vlad2> TRUE: Регистрируется некая сгенерированная функция. Сам объект (статический) нужен только для того, чтобы отработал конструктор "на взлете". Как правильно заметил valexey это аналог инициализационной секции модуля в обероне.
[16:49:04] <vlad2> register_factory() не может быть собрана в одном месте, потому что у компоненты могут шарится между разными приложениями. Автоматическая регистрация позволяет регистрировать только те, которые непосредственно используются (включены в проект). Особенно актуально, когда один компонент использует другой и т.д. Я в первый раз столкнулся с этим в MacApp. Там по всему коду были разбросаны MA_REGISTER_CLASS( X ).
[16:49:49] <valexey> ну или заставить в каждом проекте руками. просто списком, регистрировать всех
[16:50:06] <valexey> иногда это имеет смысл. но иногда это приведет к ошибкам.
[16:50:39] <valexey> ну, таким списком.. шаблонным конечно :-) шаблонная фабрика получающая на вход список типов.
[16:51:01] <valexey> правда это то место, которое оберон-аналогиями уже не пояснить :-)
[16:54:49] <vlad2> Или если у тебя тестовое приложение для компонента X, то ты не хочешь регистрировать все и тащить всю code base. Ты хочешь сделвть #include "X.h" и все :)
[16:59:42] <valexey> ну, зависит от того, сколько у тебя таких компонент, тащемто.
Но да, если чо, придется делать
#include "component_A.hxx"
#include "component_B.hxx"
[16:59:51] <valexey> ...
[16:59:55] <valexey> #include "component_XXX.hxx"
[17:00:35] <valexey> А потом:
typedef Factory<A,B,C,...XXX> MyFactyory;
[17:18:13] <valexey> https://www.theverge.com/2017/9/26/16365424/bill-gates-android-phone-switch
[17:19:26] <valexey> "Bill Gates now uses an Android phone with “lots of Microsoft software”"
[17:19:40] <valexey> дожили - Билл юзает линукс каждый день :-)
[19:48:35] <vlad2> Имидж ничто.
[21:15:17] <vlad2> Фак. Не чинится контролка-то...
[21:53:58] <valexey> переходите на хромиум!
[21:54:00] <valexey> на блинк
[23:22:31] <vlad2> Нельзя - оно все под кокоа сто лет как.
[23:36:00] <vlad2> кокоа вместе с карбоном не живет - суть проблемы
[23:36:57] <vlad2> Если бы эппл хоть чуть-чуть озаботился, то можно были мигрировать постепенно. Но эппл сделал как всегда - только тотальная периписка.