Здравствуйте, ZiloT, Вы писали:
ZT>Есть замечательная либы sqlpp11, кандидат на включение в boost.
Ну то есть те же танцы с переопределением операторов вместо нормального выражения. Выглядит хорошо только на специально подобранных примерах.
ZT>Да, возможно, не так крут, как LINQ, но прогресс есть.
Прогресса не будет до тех пор, пока в языке не появится нормальный механизм цитирования кода.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Sheridan, Вы писали:
S>>Приподнял то что есть, смотреть там http://www-test.sergos.ru/
НС>1) В янусе какие то сплошные атомы. Надо потому что добавить <meta http-equiv="X-UA-Compatible" content="IE=edge" />, раз в IE7 не работает.
Ок, спасибо.
НС>2) Скрипты частично не минифицированы и не забандлены. cppms не умеет этого делать? Или тебе на перформанс наплевать? НС>5) А вот так прекрасно называть параметры метода — a, b, c, d, e, f, g, h — тебя кто научил? Или это трансляция с какого нибудь CoffeeScript и в исходнике все красиво?
Обработано closure-compiler в дебаг-режиме, без минификации и с сохранением хотя бы какой то читабельности.
Сейчас пересобрал в релиз, посмотри.
В необработаном коде переменные выглядят нормально
НС>3) Мелкие картинки не закатаны в спрайт. Тоже перформансу у клиента не способствует.
Вряд ли получится, они ресайзятся при первом обращении из большой, которые вгружены в галерею.
НС>4) Функции initXxx. Это чего вообще? Ты генеришь кучу статики при помощи js только потому что нужно поменять значение атрибутов id? НС>6) Про unobtrusive js слышал? Если нет — крайне рекомендую ознакомится. Если да — у тебя категорическое несоответствие, причем без необходимости на то, т.е. на твоей страничке нет ничего, чтобы не могло быть нормально реализовано без js.
Это хвосты от параллельных запросов кусков контента, если я правильно тебя понял. В параллельном проекте уже избавился, сюда теперь перенести код надо.
НС>7) Вот это вот — тоже не способствует перформансу (у тебя, походже, какая то неистребимая страсть к монстроидальной склейке строк): НС>
НС> dlc[a].elements.footer = $("#" + a + "_footer");
НС> dlc[a].elements.navigator = $("#" + a + "_navigator");
НС> dlc[a].elements.btn_tofirst = $("#" + a + "_tofirst");
НС> dlc[a].elements.btn_pageback = $("#" + a + "_pageback");
НС> dlc[a].elements.pages = $("#" + a + "_pages");
НС> dlc[a].elements.btn_pageforward = $("#" + a + "_pageforward");
НС> dlc[a].elements.btn_tolast = $("#" + a + "_tolast");
НС> dlc[a].elements.counter = $("#" + a + "_counter")
НС>
НС>Более правильно собирать сразу дерево (если уж какие то причины мешают сразу положить в html готовый шаблон): НС>
НС>Можно заменить на $("#" + a).toggle(). И, кстати, не unvisible, а invisible, а лучше hidden.
Можно и так конечно, если задача скрыть или показать. Но у меня в планах сделать анимацию на проявление и скрытие, поэтому рулю стилями.
Здравствуйте, Privalov, Вы писали:
P>Не, ты определенно хорошо устроился. На работе вместо работы занимаешься непонятно чем, и всех это устраивает.
В свободное время.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Несколько десятков мелких файлов грузятся долго, суммарно 0.7с у меня.
Это из за того что они еще не кешируются у тебя, я отключил пока.
Здравствуйте, genre, Вы писали:
S>>Это мне значит надо еще под каждый браузер свой код отдавать.... Подумаю, подумаю... G>Вот тут то ты и познакомишься с дивным словом декомпозиция.
Скорее всего я свой препарсер этим нагружу. А в коде буду оперировать тегами препарсера. Нафига мне куча почти одинакового кода в проекте...
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>День. Это если без опыта в данной сфере деятельности.
Поднять и настроить — день.
А вот подобрать тему, которая устроит всех — вот тут и пара недель может понадобиться. Плавали, знаем
Здравствуйте, Sheridan, Вы писали:
НС>>3) Мелкие картинки не закатаны в спрайт. Тоже перформансу у клиента не способствует. S>Вряд ли получится, они ресайзятся при первом обращении из большой, которые вгружены в галерею.
Под мелкими я вовсе не галерею понимаю, а кучу всякой фигни типа кнопок. Которые напрямую грузятся с сервера по отдельности. У тебя это вызывает задержку на порядок (здесь я буквально) больше той, что имеется от работы серверного кода. Даже если ты ускоришь свой серверный код в два-три раза, это уменьшит TTI на единицы процентов. Это все на хорошем соединении. На плохом все будет еще печальнее.
S>Тут не понял. Мой код вытаскивает объекты из думдерева для последующей работы с ними, а твой устанавливает им id
Куда он, нафик, вытаскивает? Ты js из базы что ли берешь?
S>Можно и так конечно, если задача скрыть или показать. Но у меня в планах сделать анимацию на проявление и скрытие
Здравствуйте, Sheridan, Вы писали:
НС>>Несколько десятков мелких файлов грузятся долго, суммарно 0.7с у меня. S>Это из за того что они еще не кешируются у тебя, я отключил пока.
Ты правда думаешь, что большинство будет заходить на твой сайт больше 1 раза? Это ж ведь не rsdn, где у 99% посетителей статика давно закеширована, а типичный сайт-визитка.
Здравствуйте, Sheridan, Вы писали:
НС>>День. Это если без опыта в данной сфере деятельности. S>Поднять и настроить — день.
Поднять и настроить — меньше получаса. Даже с учетом чудесов настройки постгри на линуксах.
S>А вот подобрать тему, которая устроит всех
Всех это кого? Директора санатория?
На коммерческих проектах тему не подбирают колхозом, а заказывают у приличной фирмы, которая, в отличие от вас, в этом хорошо разбирается.
Здравствуйте, Sheridan, Вы писали:
P>>Не, ты определенно хорошо устроился. На работе вместо работы занимаешься непонятно чем, и всех это устраивает. S>В свободное время.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>3) Мелкие картинки не закатаны в спрайт. Тоже перформансу у клиента не способствует. S>>Вряд ли получится, они ресайзятся при первом обращении из большой, которые вгружены в галерею. НС>Под мелкими я вовсе не галерею понимаю, а кучу всякой фигни типа кнопок.
Да нету у меня там кнопок. Кругляши под слайдером — css, влево-вправо — вообще svg пока, думаю тоже на css нарисовать. Вроде всё...
S>>Тут не понял. Мой код вытаскивает объекты из думдерева для последующей работы с ними, а твой устанавливает им id НС>Куда он, нафик, вытаскивает? Ты js из базы что ли берешь?
В голову. Вообще, буду замеченный тобой код отделять, он для админки предназначен. А в админке с помощью того кода длинные таблицы бьются на страницы и код подгружает страницы с сервера через jquery. В юзерской части вряд ли пригодится...
S>>Можно и так конечно, если задача скрыть или показать. Но у меня в планах сделать анимацию на проявление и скрытие НС>Изучай — http://api.jquery.com/toggle/
Я ж говорю — можно и так. Свой выбор я сделал сознательно, так мне больше по душе.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Ты правда думаешь, что большинство будет заходить на твой сайт больше 1 раза? Это ж ведь не rsdn, где у 99% посетителей статика давно закеширована, а типичный сайт-визитка.
При одном заходе просматривается обычно не одна страница.
Здравствуйте, Ночной Смотрящий, Вы писали:
S>>Поднять и настроить — день. НС>Поднять и настроить — меньше получаса. Даже с учетом чудесов настройки постгри на линуксах.
Ну да, ну да. В том числе первоначально теги занести, рубрики, юзеров настроить, меню всякие, галерею, плагины нужные поставить... Минут десять, не более, ага.
S>>А вот подобрать тему, которая устроит всех НС>Всех это кого? Директора санатория?
У нас это человек пять.
НС>На коммерческих проектах тему не подбирают колхозом, а заказывают у приличной фирмы, которая, в отличие от вас, в этом хорошо разбирается.
Это уже мы сами как нибудь решим.
Здравствуйте, genre, Вы писали:
G>Ради интереса, а сколько ты уже потратил времени на свой сайт?
Чистого времени — чтото около месяца. Размазанного времени — с декабря.
Здравствуйте, Privalov, Вы писали:
P>>>Не, ты определенно хорошо устроился. На работе вместо работы занимаешься непонятно чем, и всех это устраивает. S>>В свободное время. P>Ну не знаю. У меня на работе время рабочее.
У админов, знаешь ли, бывают варианты
Я уж не говорю о том, что не вижу ни одной неразрешимой проблемы, которая помешает запихнуть в спрайт все твои тамбнейлы.
S>влево-вправо — вообще svg пока
А что, svg уже не отдельный файл, что ли? Оно ж у тебя не запихнуть внутрь страницы.
S>>>Можно и так конечно, если задача скрыть или показать. Но у меня в планах сделать анимацию на проявление и скрытие НС>>Изучай — http://api.jquery.com/toggle/ S>Я ж говорю — можно и так. Свой выбор я сделал сознательно, так мне больше по душе.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, artelk, Вы писали:
A>>Если в куче, то, например, трогать то, что выше по стэку череповато? A>>void DoStuff(int x) A>>{ A>> Coroutine coro;//переключились на стэк в куче A>> //... A>> DoSomeOperation(x);// упс, x в другом стэке A>>}
EP>Если DoSomeOperation принимает x как ссылку И может пережить выполнение DoStuff — то да, правильно, это повлечёт проблемы. Тем не менее, использовать stackful coroutines для "выпрямления" асинхронного кода это никак не мешает.
EP>В C#, кстати, тоже возможна подобная ситуация — например какой-нибудь ресурс, типа файла, привязан к некоторому scope, через using, и в этом scope запускается async метод который работает с этим файлом, причём переживает вызвавший его scope в другом потоке.
Если стоит await, то не переживет. Разве что специально что-то сделать чтоб пережил... Ну не суть, корутины, полагаю, будут создаваться в самом начале потоков пула.
Со стеками в куче и хитрыми макросами, возможно, получится сделать как нужно — чтобы и без лапши и масштабируемо.
Давай опишу чего хотелось бы добиться:
async Task<int> GetResult()//запускается из IOCP потока
{
//...var x = await DoSomeIOAsync();//Запускаем операцию, возвращаем текущий поток в пул.
//Продолжение будет со следующей строчки из (в общем случае) другого IOCP потока.
//...var y = await DoSomeCPUAsync();//Внутрях прыжок в worker threads пула.
//Продолжимся там же.
await mySemaphore.WaitAsync();//Вах какая красота, "блокировка" без блокировки потока и без системного вызова (даже если длительная). ))
//Продолжимся в worker thread позже, когда семафор освободится.
}
Хотелось бы увидеть образцово-показательный код на С++, чтобы в качестве сервисного метода было, например, что-то вроде такого:
async Task<byte[]> GetValue(byte[] bytes)//bytes - пришедшие от клиента данные
{
//изображаем нагрузку на памятьvar arr = new byte[bytes.Length*2];
//изображаем нагрузку на CPU
bytes.CopyTo(arr, 0);
bytes.CopyTo(arr, bytes.Length);
var md5 = GetMD5(arr);
//эмулируем асинхронный вызов некоего удаленного сервиса с латентностью в секунду + делаем перескок в worker thread
await Task.Delay(1000);
//изображаем нагрузку на память и CPU
arr = new byte[bytes.Length + md5.Length];
bytes.CopyTo(arr, 0);
md5.CopyTo(arr, bytes.Length);
return GetMD5(arr);
}
Здравствуйте, Sheridan, Вы писали:
S>>>Поднять и настроить — день. НС>>Поднять и настроить — меньше получаса. Даже с учетом чудесов настройки постгри на линуксах. S>Ну да, ну да. В том числе первоначально теги занести, рубрики, юзеров настроить, меню всякие, галерею, плагины нужные поставить... Минут десять, не более, ага.
В нормальных CMS — да. А если в cppms все перечисленное требует целого дня, то это плохая cms, негодная.
НС>>Всех это кого? Директора санатория? S>У нас это человек пять.
Кого вас?
НС>>На коммерческих проектах тему не подбирают колхозом, а заказывают у приличной фирмы, которая, в отличие от вас, в этом хорошо разбирается. S>Это уже мы сами как нибудь решим.