Re[40]: cppcms
От: artelk  
Дата: 24.09.14 16:56
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, artelk, Вы писали:


A>>Предлагается сделать так, чтоб лапши небыло, при сохранении всех бенефитов асинхронности.


_>Для этого есть много разных вариантов, а не только сопрограммы. Но и они тоже имеются и полноценно работают (в том числе и во многопоточности, как уже продемонстрировал вместо меня Евгений).

Не возражаю. Лишь бы лапши небыло.)

_>А лично мне больше нравятся реализации типа модели акторов — так называемое "выпрямление кода" не нравится с архитектурной точки зрения, т.к. обычно смешивает принципиально разные вещи (типа работы с ui и сетью например).

Я где-то утверждал, что из слоя представления нужно напрямую в сокеты лезть? Между обработчиком UI и сетью может быть хоть 10 уровней абстракции\изоляции.

A>>Помнится там обсуждалось как вернуться в вызывающий поток, т.е. один из юзкесов, реализуемых через await.


_>Да да, точно. Но фокус был в том, что это как раз и было типа сложностью и модной фичей (понятно что подразумевался возврат в UI), а вариант с произвольным потоком наоборот тривиален и скучен.

Ну, раз он тривиален, наверно, не составит труда его продемонстрировать.

_>Более того, если у нас нет обязательного требования возврата в тот же поток, то сам принцип await'a становится не особо интересным — любые реализации просто потоков становятся удобнее этого механизма.

Что за "любые реализации просто потоков"?

_>Причём речь как о зелёных (в случае потребности очень большого числа одновременных), так и даже о просто системных.

Поподробней, плз.
Re[39]: cppcms
От: alex_public  
Дата: 24.09.14 16:57
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Нет, оно не просто листается, оно плавно "переворачивается". Открой в хроме...


Не держу такого на главном компьютере) В IE11 (тоже не пользуюсь, но ради такого случая запустил) всё выглядит как и в ФФ.
Re[29]: cppcms
От: alex_public  
Дата: 24.09.14 17:05
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>WP уже есть. Мне не нравится как он работает.


А вот это действительно очень тормозная штука (если она прямо на том же сервере живёт)... Но зато анимация там работает как надо. )))
Re[27]: cppcms
От: Privalov  
Дата: 24.09.14 18:38
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Приподнял то что есть, смотреть там http://www-test.sergos.ru/

S>Местами криво, местами ссылки из контента в нитуда. Можешь потрогать. Но в любой момент могу рубануть...

На Огнелисе с Noscript не работает Можешь подсказать пользователю js включить? Некоторые сайты такое умеют.
Re[30]: cppcms
От: Privalov  
Дата: 24.09.14 18:46
Оценка:
Здравствуйте, genre, Вы писали:

G>после нажатия на кнопку "далее" страница грузится около 5 секунд.


А у меня по ощущениям — секунда-полторы. Листание на главной странице нормально работает. Огнелис 32.
Re[34]: cppcms
От: Privalov  
Дата: 24.09.14 18:52
Оценка:
Здравствуйте, genre, Вы писали:

G>а у меня по 3 секунды на jpg.


Будешь смеяться, особых задержек я не ощущаю. Подтормаживает, но в разумных пределах. Кэш, разумеется, вычищал.

S>>Что за браузер у тебя? ОС? Какое железо?


G>вин7, фф, железо нормальное для разработки, памяти и прочего вагон, нет остальное не тормозит


XP, огнелис. Старенький, ничем не примечательный ноут.
Re[37]: cppcms
От: Privalov  
Дата: 24.09.14 18:54
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>А анимация на главной есть?


Да.
Re[28]: cppcms
От: Sheridan Россия  
Дата: 24.09.14 19:20
Оценка:
Здравствуйте, Privalov, Вы писали:

P>На Огнелисе с Noscript не работает Можешь подсказать пользователю js включить? Некоторые сайты такое умеют.

Попробую завтра вспомнить и покурить тему
Matrix has you...
Re[41]: cppcms
От: alex_public  
Дата: 24.09.14 20:21
Оценка:
Здравствуйте, artelk, Вы писали:

Я в предыдущем сообщение несколько сумбурно всё написал, смешав совсем разные вещи. Сейчас попробую систематизировать.

И так, у нас речь о выполнение неких задач параллельно (действительно параллельно или скажем "поочерёдно"). Я бы разделил всю эту большую область на две отдельные части:

1. Когда не требуется небольшое число одновременных задач.

В данном случае на мой взгляд самым оптимальным является использование системных потоков (и соответственно блокирующего IO). Возможно кто-то не согласится (готов подискутировать и даже потестировать), но я не вижу ни единого аргумента в пользу других решений.

Но не всё так просто. В случае использования системных потоков и отдельных подсистем (типа UI) возникает проблема возврата данных в некий выделенный поток. У этой проблемы есть много разных решений с разной сложностью и удобством. Например в .net эту проблему довольно эффективно решает await. Существует полностью аналогичная реализация этого в C++ на базе Boost.Coroutine — обсуждалось подробно на этом форуме год назад. Кстати, лично мне эта техника не нравится (хотя именно я и продемонстрировал тогда пример реализации), т.к. на мой взгляд она вызывает путаницу в коде (канонический пример был с запуском скачивания из сети внутри обработчика кнопок и последующим выводом результата скачивания). Лично мне больше нравится модель акторов (причём по схеме 1 актор=1 системный поток). Естественно есть и ещё варианты (например продолжения и т.п.).

2. Когда требуется небольшое число одновременных задач.

В данном случае очевидно надо переходить к асинхронному IO. А вот механизм исполнения параллельных задач может быть очень разный: можно работать непосредственно на базе асинхронных колбэков (используя библиотеки типа libevent, libev или вообще руками), а можно использовать какую-то разновидность зелёных потоков, работающих поверх пула системных. Причём если говорить о зелёных потоках, то у них есть множество очень разных реализаций:
— Это могут быть сопрограммы поверх пула системных. Причём опять же разделяются на: stackless (как в .net await или в примерах boost.asio) и stackfull (boost.coroutine). Насколько я понял именно применение последних в данном контексте тебя и интересует. Так вот фокус в том, что в данном случае они "просто работают". ))) Т.е. какой-то дополнительный код потребовался именно для реализации техники "возврата в спец. поток", а для просто реализации зелёных потоков поверх пула системных ничего дописывать и не надо — оно просто работает. Как собственно Евгений и продемонстрировал. Вот разве что реализацию семафора дописать.
— это могут быть акторы (уже более сложные, работающие поверх пула системных потоков). Тут конечно самый известный Эрланг, но и в C++ с этим не плохо. Мне например нравится библиотечка Theron.
— встроенные в некоторые языки специфические реализации многозадачности
— всякие велосипедные реализации именно зелёных потоков в чистом виде.
Re[44]: cppcms
От: Ночной Смотрящий Россия  
Дата: 24.09.14 23:36
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Вот смотри какая интересная штука: ты придумал какая у меня админка и придумал какая у рсдн админка.


Я предположил. А что, ты считаешь что у rsdn админка сильно проще? Почему?
Re[38]: cppcms
От: Ночной Смотрящий Россия  
Дата: 24.09.14 23:36
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ещё раз повторюсь: ты думаешь оно последовательно грузится? )))


Я не думаю, я вот смотрю на таймлайн хрома и вижу, что мгновенностью там и не пахнет.

_>Ээээ, ты точно прочитал моё сообщение? ) Я же показал подробно всё. Вариант без дерева намного легче


Ты легкость в чем измерял?
Re[31]: cppcms
От: Ночной Смотрящий Россия  
Дата: 24.09.14 23:36
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Я говорю о том, что не надо пытаться реализовать именно LINQ, потому как есть более эффективные схемы


Эффективные в чем?
Re[30]: cppcms
От: Ночной Смотрящий Россия  
Дата: 24.09.14 23:36
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Если же говорить об аналогиях этого "цитирования", то я бы наверное хотел получить в C++ функцию mixin из D. Она принимает строковый параметр (который должен быть определён на момент компиляции), воспринимает его как код, компилирует (причём с учётом окружающего контекста) и вставляет вместо себя.


Это и есть цитирование, только через зад.

_> И всё это естественно во время компиляции, так что поверх всего этого потом ещё по полной гуляет дикий оптимизатор C++ (который скорее всего заинлайнит всё вокруг на несколько уровней).


Чего он заинлайнит? Процитированный код? Нахрена?

_>Значит смотри, у нас есть некий библиотечный класс с кучей предков, полей, методов и т.п. Так вот его поля делятся на два типа: динамически инициализируемые (он сам этим занимается в своих конструкторах) и поля с реальными данными. Мы хотим хранить набор объектов этого класса в таблице базы данных.


Уже плохо. Хранить в РСУБД надо не объекты, хранить надо данные. Как только пытаешься хранить там объекты — сразу получаешь граблями по лбу.

_>Покажешь как реализуется подобное с помощью "качественно интерфейса к БД"? )


Какой смысл натягивать динамику на статические механизмы типа линка? Смысл линка как раз в статическом контроле типов. Если такой контроль невозможно осуществить в принципе, то и линк не нужен.
Ну или я твое сумбурное описание задачи не понял.
Re[32]: cppcms
От: alex_public  
Дата: 25.09.14 00:49
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

_>>Я говорю о том, что не надо пытаться реализовать именно LINQ, потому как есть более эффективные схемы

НС>Эффективные в чем?

В построение конвейеров обработки данных.
Re[39]: cppcms
От: alex_public  
Дата: 25.09.14 00:53
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Я не думаю, я вот смотрю на таймлайн хрома и вижу, что мгновенностью там и не пахнет.


Ну естественно оно помедленнее чем скажем страница гугла. ))) Но на уровне восприятия пользователя можно считать мгновенным. ) В отличие от скажем форума rsdn с открытым деревом солидной дискуссии или же вообще его старым сайтом (на WP который).

НС>Ты легкость в чем измерял?


В количестве загружаемых элементов.
Re[31]: cppcms
От: alex_public  
Дата: 25.09.14 01:08
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Это и есть цитирование, только через зад.


Как раз это нормальный вариант, т.к. работает во время компиляции, а не исполнения.

НС>Чего он заинлайнит? Процитированный код? Нахрена?


Типа быстродействие не нужно? )

НС>Уже плохо. Хранить в РСУБД надо не объекты, хранить надо данные. Как только пытаешься хранить там объекты — сразу получаешь граблями по лбу.


Типа все ORM — это зло? )

НС>Какой смысл натягивать динамику на статические механизмы типа линка? Смысл линка как раз в статическом контроле типов. Если такой контроль невозможно осуществить в принципе, то и линк не нужен.

НС>Ну или я твое сумбурное описание задачи не понял.

Естественно всё статически — как-то ты забываешь мою "специализацию". )))

Простейший тестовый пример того, о чём я тут сейчас говорил, можно увидеть здесь http://rsdn.ru/forum/philosophy/5369287
Автор: alex_public
Дата: 21.11.13
Но подразумевается что на практике Person — это не такая простая вещь, а какой-то чужой класс с кучей предков и всяких лишних (в смысле БД) полей. Здесь естественно показан искусственный упрощённый пример.
Re[45]: cppcms
От: Sheridan Россия  
Дата: 25.09.14 03:31
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Я предположил. А что, ты считаешь что у rsdn админка сильно проще? Почему?


Я не выдумываю какая у рсдн админка.
Matrix has you...
Re[26]: cppcms
От: Venom  
Дата: 25.09.14 03:43
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, dimgel, Вы писали:


НС>И в чем циничность разумного подхода к разработке и к получению новых знаний?


Как я понял из топика, "в навязывании своего мнения^Wпути".
Re[35]: cppcms
От: genre Россия  
Дата: 25.09.14 08:10
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Будешь смеяться, особых задержек я не ощущаю. Подтормаживает, но в разумных пределах. Кэш, разумеется, вычищал.


Ну так "у меня все работает" не отменяет того, что у одного все хорошо, у другого плохо, да и вон сколько проблем в коде страницы уже нашли.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[30]: cppcms
От: Somescout  
Дата: 25.09.14 09:44
Оценка: +1
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Sheridan, Вы писали:


S>>WP уже есть. Мне не нравится как он работает.


_>А вот это действительно очень тормозная штука (если она прямо на том же сервере живёт)... Но зато анимация там работает как надо. )))


Что-то даже слишком тормозная.
ARI ARI ARI... Arrivederci!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.