Здравствуйте, Sheridan, Вы писали:
S> Mamut wrote:
S> > S> Еще раз: Сериализация предназначена для тех, кому лениво написать нормальное сохранение и
S> > чтение объекта. Таким людям пофиг что с S> полезными данными сохраняется куча бреда. Вобщем не S> > нужно такое там.
S> > Cериализация — и есть нормальное созранение и чтение объекта. S> > Кстати, хотелось бы еще узнать, какой бред сохраняется при сериализации.
S> Извиняюсь, не совсем точно я написал. Я против обычной сериализации, точнее против того, что обычно в наличии. А бред, который я S> имел ввиду — это тот мусор, состоящий (вследствии универсальности) из всевозможных имен всевозможных структур, сквозь который S> нет-нет проглядывает полезная информация. S> Я считаю, что лучший способ сохранить состояние объекта — это последовательно записать в файл только нужные переменные. И S> работать быстрее будет, и файл размером на порядок меньше будет.
Ну-ну. А пацаны из буста и s11n и не знали. Пришел Шеридан и срочно все разрулил.
Ну-ка, расскажи мне в двух словах, как ты сохранишь «только переменными» любой цикличный граф объектов, а там посмотрим
Здравствуйте, Sheridan, Вы писали:
S>gandjustas wrote:
>>>> Ух ты. И как ты узнаешь что ты десериализуешь? >> S>Точно также, как и узнаю, что буду сериализовать. >> Ну да, когда сериализуешь ты знаешь конкретный тип (хотя в С++ и с этим сложности), а когда >> десериализуешь, то у тебя только массив байт и все. Так как ты узнаешь что десериализуешь?
S>Мда, дотнет явно людям на пользу не идёт S>Сохраняются данные в каком-то порядке. Значит в том-же порядке их надо и читать. Это же элементарно.
Ну раз элементарно то покажи код.
Тебе простой кейс: сериализуется объекты по ссылке на базовый класс, после десериализации надо также получить ссылку на базовый класс.
Здравствуйте, Mamut, Вы писали:
M>Ну-ну. А пацаны из буста и s11n и не знали. Пришел Шеридан и срочно все разрулил.
M>Ну-ка, расскажи мне в двух словах, как ты сохранишь «только переменными» любой цикличный граф объектов, а там посмотрим
Господа, не давите Шеридана интеллектом — он этого не любит.
Здравствуйте, Sheridan, Вы писали:
S>gandjustas wrote:
>>>> Ух ты. И как ты узнаешь что ты десериализуешь? >> S>Точно также, как и узнаю, что буду сериализовать. >> Ну да, когда сериализуешь ты знаешь конкретный тип (хотя в С++ и с этим сложности), а когда >> десериализуешь, то у тебя только массив байт и все. Так как ты узнаешь что десериализуешь?
S>Мда, дотнет явно людям на пользу не идёт S>Сохраняются данные в каком-то порядке. Значит в том-же порядке их надо и читать. Это же элементарно.
Ты своим жалким мозгом даже не способен понять суть проблемы.
Здравствуйте, gandjustas, Вы писали:
G>Ты своим жалким мозгом даже не способен понять суть проблемы.
Э-э-э! Ребят, я всё конечно понимаю, но давайте полегче на поворотах, а...
Re[3]: Коробочные продукты на .NET (НЕ для программистов/адм
Здравствуйте, meowth, Вы писали:
S>>Да нету такого. Тут сравнительно недавно дотнетчики пытались искать. Разве что паинтдотнет упоминался. А остальная вся шелуха — S>>для прораммеров\админов M>Моделлер для Unity3D
он ещё падать любит..
M>их же плеер -- написан на .net и для .net (mono)
плеер — врядли.. дотнэт там есть, но корни скорее нативные..
да, и всё таки это для программеров/админов(с)
...coding for chaos...
Re[8]: Коробочные продукты на .NET (НЕ для программистов/адм
Здравствуйте, hattab, Вы писали:
J>>Вот только почему уйма народа судет о производительности .net по этой индусской программе? На C++ тоже есть море такого-же отвратительного софта и ничего. H>Ну, так на C/C++ еще и горы приличного софта есть, в отличии от...
Ну и? То что на дотнете написано мало десктопного софта не значит, что его на нем нельзя писать. В других нишах дофига приличного .net софта но его не видно из вне.
J>>Здесь ещё пытались сравнивать скорость применения фильтра gimp и paint.net, какой в этом смысл, когда все зависит от используемго алгоритма? Как их можно сравнивать, даже не заглядывая в исходник? H>Ну так в чем проблема? Исходники доступны, сравни.
Зачем мне заниматься такой ерундой? Это удел местных обиженных дотнетом.
H>Ты вправду думаешь, что реализацию одного алгоритма можно осуществить с такими девиациями от генеральной линии, что оно будет сливаться чуть не на порядок?
Запросто. Посмотри все эти приведенные здесь сравнения "C++ vs .Net", чаще всего там не учтены какие-то особенности или приведен неидентичный код.
H> Не, если делать это специально, тогда конечно да... Более того, Paint.NET не спасает даже двуядерный проц (реализация в Paint.NET параллелится, в отличии от GIMP)
Зато четырех-ядерный спасет . Хотя лучше конечно оттюнинговать реализацию/алгоритм.
Re[9]: Коробочные продукты на .NET (НЕ для программистов/адм
Здравствуйте, jenyavb, Вы писали:
H>>Ну, так на C/C++ еще и горы приличного софта есть, в отличии от... J>Ну и? То что на дотнете написано мало десктопного софта не значит, что его на нем нельзя писать. В других нишах дофига приличного .net софта но его не видно из вне.
Писать-то, конечно, можно... Вот какой результат будет, еще вопрос. О других нишах ничего не скажу, ибо корпоратив-юзеры рублем не голосуют, а нямают то, что дают.
J>>>Здесь ещё пытались сравнивать скорость применения фильтра gimp и paint.net, какой в этом смысл, когда все зависит от используемго алгоритма? Как их можно сравнивать, даже не заглядывая в исходник? H>>Ну так в чем проблема? Исходники доступны, сравни. J>Зачем мне заниматься такой ерундой? Это удел местных обиженных дотнетом.
Раз ты сомнение имеешь, тебе и карты в руки
H>>Ты вправду думаешь, что реализацию одного алгоритма можно осуществить с такими девиациями от генеральной линии, что оно будет сливаться чуть не на порядок? J>Запросто. Посмотри все эти приведенные здесь сравнения "C++ vs .Net", чаще всего там не учтены какие-то особенности или приведен неидентичный код.
Тут ты прав, чтоб сравнивать скорость работы wstring и StringBuilder'а, нужно иметь непоколебимую веру в светлую идеи отстаивания своих взлядов/убеждений/веры любой ценой (а сравнений алгоритмов тут небыло вообще, насколько я помню)
H>> Не, если делать это специально, тогда конечно да... Более того, Paint.NET не спасает даже двуядерный проц (реализация в Paint.NET параллелится, в отличии от GIMP) J>Зато четырех-ядерный спасет . Хотя лучше конечно оттюнинговать реализацию/алгоритм.
И эти люди мне говорят об идентичности кода (впрочем, скоро обзаведусь Phenom II X4 925 сообщу тут )
Re[10]: Коробочные продукты на .NET (НЕ для программистов/ад
Здравствуйте, hattab, Вы писали:
H>>>Ну, так на C/C++ еще и горы приличного софта есть, в отличии от... J>>Ну и? То что на дотнете написано мало десктопного софта не значит, что его на нем нельзя писать. В других нишах дофига приличного .net софта но его не видно из вне. H>Писать-то, конечно, можно... Вот какой результат будет, еще вопрос. О других нишах ничего не скажу, ибо корпоратив-юзеры рублем не голосуют, а нямают то, что дают.
Результат будет такой, каким его сделаюь разработчики. Ограничения дотнета конечно есть, но встречаются они редко.
J>>>>Здесь ещё пытались сравнивать скорость применения фильтра gimp и paint.net, какой в этом смысл, когда все зависит от используемго алгоритма? Как их можно сравнивать, даже не заглядывая в исходник? H>>>Ну так в чем проблема? Исходники доступны, сравни. J>>Зачем мне заниматься такой ерундой? Это удел местных обиженных дотнетом. H>Раз ты сомнение имеешь, тебе и карты в руки
Ятут сравнением не занимался. Или это по Шеридановскому учению "вот вам кое-какие аргументы, не нравится — опровергайте"?
H>>>Ты вправду думаешь, что реализацию одного алгоритма можно осуществить с такими девиациями от генеральной линии, что оно будет сливаться чуть не на порядок? J>>Запросто. Посмотри все эти приведенные здесь сравнения "C++ vs .Net", чаще всего там не учтены какие-то особенности или приведен неидентичный код. H>Тут ты прав, чтоб сравнивать скорость работы wstring и StringBuilder'а, нужно иметь непоколебимую веру в светлую идеи отстаивания своих взлядов/убеждений/веры любой ценой
И чем же отличается скорость работы wstring и StringBuilder'а, а то я не в теме?
H>(а сравнений алгоритмов тут небыло вообще, насколько я помню)
В этом и заключается ущербность данного сравнения. Люди сравнивают скорость работы программы даже не заглядывая в реализацию .
H>>> Не, если делать это специально, тогда конечно да... Более того, Paint.NET не спасает даже двуядерный проц (реализация в Paint.NET параллелится, в отличии от GIMP) J>>Зато четырех-ядерный спасет . Хотя лучше конечно оттюнинговать реализацию/алгоритм. H>И эти люди мне говорят об идентичности кода (впрочем, скоро обзаведусь Phenom II X4 925 сообщу тут )
Ну давай, давай .
Re[11]: Коробочные продукты на .NET (НЕ для программистов/ад
Здравствуйте, jenyavb, Вы писали:
H>>Писать-то, конечно, можно... Вот какой результат будет, еще вопрос. О других нишах ничего не скажу, ибо корпоратив-юзеры рублем не голосуют, а нямают то, что дают. J>Результат будет такой, каким его сделаюь разработчики. Ограничения дотнета конечно есть, но встречаются они редко.
Ты мне пытаешься нарисовать картину идеального мира, чтоли? Пожалуйста, не нужно. Ну правда, смешно читать такие вещи на фоне существующих веток, где говорят, что бета 2010 студии тормозит на современном железе (согласен, это всего лишь бета). На фоне сливающегося Paint.NET, на фоне монстра по имени Creative Docs. NET. Я уже писал о симптоматичности, вот она то и проглядывается... Ты правда думаешь, что менторы из МС (читаем About от Paint.NET), позволили так накорявить в алгоритме, что его даже параллельность не спасает?
H>>>>Ну так в чем проблема? Исходники доступны, сравни. J>>>Зачем мне заниматься такой ерундой? Это удел местных обиженных дотнетом. H>>Раз ты сомнение имеешь, тебе и карты в руки J>Ятут сравнением не занимался. Или это по Шеридановскому учению "вот вам кое-какие аргументы, не нравится — опровергайте"?
Это и небыло сравнением Один горячий финский хлопец учудил сравнив Paint.NET с Photoshop, на что в ответ получл сей пример (по типу, разберись ка с моим младшим братом сперва). Если ты в этом увидел сравнение .NET с нативом, ну...
H>>>>Ты вправду думаешь, что реализацию одного алгоритма можно осуществить с такими девиациями от генеральной линии, что оно будет сливаться чуть не на порядок? J>>>Запросто. Посмотри все эти приведенные здесь сравнения "C++ vs .Net", чаще всего там не учтены какие-то особенности или приведен неидентичный код. H>>Тут ты прав, чтоб сравнивать скорость работы wstring и StringBuilder'а, нужно иметь непоколебимую веру в светлую идеи отстаивания своих взлядов/убеждений/веры любой ценой J>И чем же отличается скорость работы wstring и StringBuilder'а, а то я не в теме?
.
H>>(а сравнений алгоритмов тут небыло вообще, насколько я помню) J>В этом и заключается ущербность данного сравнения. Люди сравнивают скорость работы программы даже не заглядывая в реализацию .
Как я уже написал выше, это небыло сравнением натива с .NET. Было сравнение продуктов.
H>>И эти люди мне говорят об идентичности кода (впрочем, скоро обзаведусь Phenom II X4 925 сообщу тут ) J>Ну давай, давай .
Поставил в закладки. Если все срастется, недельки через 2 сделаю
Mamut wrote:
> Ну-ка, расскажи мне в двух словах, как ты сохранишь «только переменными» любой цикличный граф > объектов, а там посмотрим
Ты действительно не понимаешь, о чем речь или это у тебя сарказм такой?
Здравствуйте, Sheridan, Вы писали:
S>gandjustas wrote:
>> Ты своим жалким мозгом даже не способен понять суть проблемы. S>Помоему это ты не можешь понять то, о чем я говорю.
Ну не будь голословным. Покажи код который сериализует граф объектов по ссылке на базовый класс.
Напрмиер так:
class C
{
...
}
class A
{
...
}
class B: public A
{
private:
C* field; //или смарт-поинтер какой-нибудь
...
}
A* a = new B(...);
x = serialize(a);
a = /*особая магия десериализации*/(x);
> Ну раз элементарно то покажи код. > Тебе простой кейс: сериализуется объекты по ссылке на базовый класс, после десериализации надо > также получить ссылку на базовый класс.
Както так:
class a
{
int i1;
int i2;
double d1;
void save(const char * file)
{
int f = open(file, O_CREAT | O_WRONLY);
write(f, &i1, sizeof(int));
write(f, &i2, sizeof(int));
write(f, &d1, sizeof(double));
close (f);
}
void load(std::string file)
{
int f = open(file, O_RDONLY);
read(f, &i1, sizeof(int));
read(f, &i2, sizeof(int));
read(f, &d1, sizeof(double));
close (f);
}
};
main()
{
a *c1 = new a();
c1->i1 = 5;
c1->i2 = 15;
c1->d1 = 0,5;
c1->save("file.dat");
a *c2 = new a();
a->load("file.dat");
}
Если ссылка на базовый класс, то в базовом объявляется и вызывается чисто виртуальная функция, которая реализуется в дочернем.
Но для вас господа. чувствую, это из ряда вон выходящее. Минусуйте, чего уж.
midcyber wrote:
> S>За последнее время я вижу игры написаные при помощи опенгл на порядки чаще чем игры написаные > при помощи директХрень. Домашнее задание: понять — почему так.
> Дай угадаю — DirectX не работает под linux, поэтому ты не видишь игр, кроме тех, которые у тебя > уже есть.
Здравствуйте, Sheridan, Вы писали:
S> Mamut wrote:
S> > Ну-ка, расскажи мне в двух словах, как ты сохранишь «только переменными» любой цикличный граф S> > объектов, а там посмотрим
S> Ты действительно не понимаешь, о чем речь или это у тебя сарказм такой?
Это ты действительно не понимаешь, о чем речь. Ты прочитал ту тсатью, ссылку на которую я тебе дал?
Здравствуйте, Sheridan, Вы писали:
>> S>За последнее время я вижу игры написаные при помощи опенгл на порядки чаще чем игры написаные >> при помощи директХрень. Домашнее задание: понять — почему так.
>> Дай угадаю — DirectX не работает под linux, поэтому ты не видишь игр, кроме тех, которые у тебя >> уже есть.
S>Бинго! Хоть один умный человек, способный думать!
Ну так зачем выдавать свой весьмааа ограниченый опыт за правило?
Здравствуйте, Sheridan, Вы писали:
S>gandjustas wrote:
>> Ну раз элементарно то покажи код. >> Тебе простой кейс: сериализуется объекты по ссылке на базовый класс, после десериализации надо >> также получить ссылку на базовый класс. S>Както так: S>
S>class a
S>{
S> int i1;
S> int i2;
S> double d1;
S> void save(const char * file)
S> {
S> int f = open(file, O_CREAT | O_WRONLY);
S> write(f, &i1, sizeof(int));
S> write(f, &i2, sizeof(int));
S> write(f, &d1, sizeof(double));
S> close (f);
S> }
S> void load(std::string file)
S> {
S> int f = open(file, O_RDONLY);
S> read(f, &i1, sizeof(int));
S> read(f, &i2, sizeof(int));
S> read(f, &d1, sizeof(double));
S> close (f);
S> }
S>};
S>main()
S>{
S> a *c1 = new a();
c1->>i1 = 5;
c1->>i2 = 15;
c1->>d1 = 0,5;
c1->>save("file.dat");
S> a *c2 = new a();
a->>load("file.dat");
S>}
S>
S>Если ссылка на базовый класс, то в базовом объявляется и вызывается чисто виртуальная функция, которая реализуется в дочернем. S>Но для вас господа. чувствую, это из ряда вон выходящее. Минусуйте, чего уж.
Ну так а где ссылка на базовый класс?
Ты уже почти слил, напиши код чтобы это всем понятно было. Тебе ведь нужно явное указание типа при десериализации, чтобы вызвать нужный load.
Кстати, как твой код отработает при циклических ссылках, как будут сериализовываться строки?
И вообще это не обобщенный код, для каждого класса писать такое никто не станет.
Здравствуйте, Sheridan, Вы писали:
S>gandjustas wrote:
>> Ну раз элементарно то покажи код. >> Тебе простой кейс: сериализуется объекты по ссылке на базовый класс, после десериализации надо >> также получить ссылку на базовый класс. S>Както так: S>
S>class a
S>{
S> int i1;
S> int i2;
S> double d1;
S> void save(const char * file)
S> {
S> int f = open(file, O_CREAT | O_WRONLY);
S> write(f, &i1, sizeof(int));
S> write(f, &i2, sizeof(int));
S> write(f, &d1, sizeof(double));
S> close (f);
S> }
S> void load(std::string file)
S> {
S> int f = open(file, O_RDONLY);
S> read(f, &i1, sizeof(int));
S> read(f, &i2, sizeof(int));
S> read(f, &d1, sizeof(double));
S> close (f);
S> }
S>};
S>main()
S>{
S> a *c1 = new a();
c1->>i1 = 5;
c1->>i2 = 15;
c1->>d1 = 0,5;
c1->>save("file.dat");
S> a *c2 = new a();
a->>load("file.dat");
S>}
S>
S>Если ссылка на базовый класс, то в базовом объявляется и вызывается чисто виртуальная функция, которая реализуется в дочернем. S>Но для вас господа. чувствую, это из ряда вон выходящее. Минусуйте, чего уж.
Контрпример:
class b : public a
{
int test;
public:
void virtual save(const char * file)
{
a::save(file);
//сохраняем.
}
void virtual load(const char * file)
{
a::load(file);
//загружаем.
}
};
main()
{
a *c1 = GetA(); // не знаем реальный класс c1.
c1->>i1 = 5;
c1->>i2 = 15;
c1->>d1 = 0,5;
c1->>save("file.dat");
a *c2 = new a(); // соответственно и при загрузке не знаем реальный тип c2.a->>load("file.dat");//<- не-не-не Дэвид Блейн
Mamut wrote:
> Это ты действительно не понимаешь, о чем речь. Ты прочитал ту тсатью, ссылку на которую я тебе > дал?
Да. Я как раз против этого метода.