Re[18]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 13:41
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>При одном пользователе?

НС>Масштабируемость? Не, не слышал.
При куче пользователей. Сессиями занимается сама cppcms, я же пишу как бы в рамках одной сессии.

S>>Были сомнения что веб-приложения на с++ написать нельзя? Я эти сомнения развеял.

НС>URL можно, чтобы на твой развей поглядеть?
Пока что нет, некоторые вещи не готовы, и я занимаюсь пока внутрикорпоративным веб-приложением.
Matrix has you...
Re[24]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 13:44
Оценка:
Здравствуйте, genre, Вы писали:

S>>Это есть, их и соблюдаю.

G>Есть да не то. У тебя есть требование "хочу чтобы этот кусок кода работал быстро". А это называется не написание работающего софта, а удовлетворение собственных технических амбиций.
Называй как хочешь

G>И это мы еще даже не заикнулись о требованиях к маштабированию. На нем твой проект может просто закончится.

Что имеется ввиду?

G>>>Слепи прототип, померяй. Возьми адекватный требованиям инструмент и твоя система будет у пользователей гораздо быстрее.

S>>Уже частично в работе. В смысле — люди уже местами пользуются
G>Что-то мне подсказывает, что это "частично" очень надолго.
Зависит от количества основной работы.

G>>>Ты не понял. Код который использует данные из базы не должен знать ничего про sql. Он должен делать типизированные вызовы типа getUsers().

S>>У, нет. В таком случае этих getUsers будет несколько вариантов.
G>Будет. И может даже довольно много вариантов. Но как только ты задашь себе вопрос например "а нужно ли мне оптимизировать этот кусок кода и если нужно то как же мне померять его скорость" или к примеру у тебя появится странное, на первый взгляд, желание написать тесты, то окажется, что декомпозиция это не просто благо, а практически серебрянная пуля в твоем случае.
Это не оптимизация кода. Это оперирование только теми данными, которые нужны на данный момент.

G>Не говоря уж о дублировании кода, поиске багов и прочем и прочем.

Никакого дублирования, откуда?
Matrix has you...
Re[16]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 13:47
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

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


S>>Понимаешь, какая штука... На распарсинг шаблона страницы с заменой %переменных%, с разворачиванием циклов (записи, комментарии) и прочей лабудой откусится кусок процессорного времени, который мог бы потратиться на что то полезное, например на генерацию еще одной страницы другому клиенту.

НС>Поэтому в современных фреймворках для компилируемых языков страница при первом обращении компилируется. А при желании ее можно скомпилировать в момент деплоймента или даже при компиляции веб-приложения.
Я рад. Но не имею возможности закупать сервера под одно приложение второстепенной важности.

S>>Да, у меня в проекте хтмл генерируется прямо в коде.

НС>Ты не поверишь, но в каком нибудь ASP.NET страница тоже генерируется прямо в коде. Разница в том, что этот код никто руками не пишет.
Тем более еще и закупать на сервера серверную винду.

S>>А ты в курсе про байку, в которой говорится что если разработчик не уверен в необходимости/правильности чегототам (поведения, меню, вида), он добавляет новую опцию в настройки?

НС>Байка в качестве аргумента? Достойно Шеридана.
Попал в яблочко, судя по реакции
Matrix has you...
Re[25]: cppcms
От: genre Россия  
Дата: 23.09.14 13:52
Оценка:
Здравствуйте, Sheridan, Вы писали:

G>>Есть да не то. У тебя есть требование "хочу чтобы этот кусок кода работал быстро". А это называется не написание работающего софта, а удовлетворение собственных технических амбиций.

S>Называй как хочешь

Да мне вообще все равно. А вот тех кто будет пользоваться твоим творением жалко.

G>>И это мы еще даже не заикнулись о требованиях к маштабированию. На нем твой проект может просто закончится.

S>Что имеется ввиду?

Ну что ты будешь делать если добавится еще 100 пользователей? Или (предположим не добавится) когда база станет настолько большой, что все начнет тормозить?

G>>Не говоря уж о дублировании кода, поиске багов и прочем и прочем.

S>Никакого дублирования, откуда?

А у тебя ровно в одном месте есть выборка из, допустим, таблицы users?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[14]: cppcms
От: . Великобритания  
Дата: 23.09.14 14:20
Оценка: 2 (1)
Здравствуйте, Privalov, Вы писали:

P>Понимаешь, какая штука. Допустим, ты где-то слегка ошибся в HTML-коде. Например, написал <a href='/tasks/add'>Саздать задачу</a>. Так вот: исправление такой ошибки может занять пару недель. Потому что ни один вменяемый менеджер проекта никода не выпустит в production версию без полного цикла тестирования. А, как ты говоришь, перекомпиляция — это построение новой версии. Такие дела.

Это никуда не годится. А чем собственно html-код принципиально отличается от любого другого кода? Если ошибся, поправь, закоммить, попроси ревью, пройди авто-тесты, дай тестеру проверить и только потом на продакшн. А то уже не раз наблюдал как такие ловкие поправляльщики через ftp на продакшене тупо ошибались, промазывали по кнопке. Поправляешь одну буковку, но не замечаешь, что писал в окно чата и что-то случайно попало в окно с кодом, и всё нафиг поломалось, да ещё и не сразу заметно, т.к. место ошибки не связано с местом правки.
Если у вас выпуск хотфикса занимает две недели, так это у вас что-то не так в консерватории, там и править надо, а не в html-файлах.

2Sheridan. Код ок, но мешанина sql и html в одном файле — я думал этим уже все переболели лет 15 назад. SRP и прочий SOLID, однако.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[19]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:21
Оценка: 1 (1) +1
Здравствуйте, Sheridan, Вы писали:

S>Ну если обращений планируется раз в сутки от одного клиента, то согласен.


Тебе еще предстоит узнать, что при более менее приличной нагрузке важна не производительность одиночного запроса, а масштабируемость.
Re[19]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:26
Оценка:
Здравствуйте, Sheridan, Вы писали:

НС>>Масштабируемость? Не, не слышал.

S>При куче пользователей.

Тесты в студию. Хотя бы их результаты.

НС>>URL можно, чтобы на твой развей поглядеть?

S>Пока что нет

Тогда ты пока что ничего не развеял.
Re[17]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:26
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>Я рад. Но не имею возможности закупать сервера под одно приложение второстепенной важности.


А зачем тебе закупать сервера?

НС>>Ты не поверишь, но в каком нибудь ASP.NET страница тоже генерируется прямо в коде. Разница в том, что этот код никто руками не пишет.

S>Тем более еще и закупать на сервера серверную винду.

ASP.NET официально поддерживается на Моно. И есть аналоги для Java.

НС>>Байка в качестве аргумента? Достойно Шеридана.

S>Попал в яблочко, судя по реакции

Ага, в свое.
Re[15]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:26
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>В коде же у меня хтмл вполне себе отдельно от остального


Да? А это безобразие не ты цитировал?

DFDB_R memberDivision = DFDB_Q("member_division_id", "select division_id from members where id=$1",(session().get<int>("member_id")));
loginMenuItem    = "<li><a href='/auth/quit'>Выход</a></li>";
canAddTaskMenu   = CMS_RIGHTS->check(df::rights::otTask, df::rights::rtCanAdd, memberDivision[0][0].as<int>(), session().get<int>("member_id")) ?
                                     "<ul><li><a href='/tasks/add'>Создать задачу</a></li></ul>" : "";
canAddMemberMenu = CMS_RIGHTS->checkMember(df::rights::rtCanAdd, session().get<int>("member_id")) ?
                                     "<ul><li><a href='/members/add'>Зарегестрировать пользователя</a></li></ul>" : "";
canAddDivisionMenu = CMS_RIGHTS->checkDivision(df::rights::rtCanAdd, session().get<int>("member_id")) ?
                                     "<ul><li><a href='/divisions/add'>Добавить подразделение</a></li></ul>" : "";
Re[23]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:29
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>У, нет. В таком случае этих getUsers будет несколько вариантов. Ибо тут нужны юзеры с должностями, там с последней датой посещения, здесь с количеством исполненых заданий, заданий в работе итд.


Вот поэтому для работы с БД и нужно выбирать языки, в которых есть механизмы цитирования кода, а не С++.
Re[21]: cppcms
От: Ночной Смотрящий Россия  
Дата: 23.09.14 14:29
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Можно и так, движок позволяет. Только поиск по int индексу все таки быстрее, чем поиск по std::string индексу.


Вот поэтому надо выбирать языки, в которых есть LINQ, а не С++.
Re[23]: cppcms
От: Privalov  
Дата: 23.09.14 14:56
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ну, как я и сказл — дело в отсутствии опыта и знаний, но не в с++.


В отсутствии необходимой инфраструктуры и переоценке собсовенных сил в возможности ее создания. Этим грешат не только студенты, но и вполне взрослые дядьки.

S>>>Вот и я об чём. А мой проект будет вполне себе работать на raspberry pi, при условии конечно что БД будет на нормальном сервере.

P>>Дак причем тут клиент? ОН каким угодно может быть. К нему другие требования.
S>Я как раз про серверную часть

Ты на raspberry pi сервер запускаешь?

S>Нет, я не планировал распределять серверную часть между несколькими серверами. Нет необходимости, по крайней мере в этом проекте.


А надо. Как правильно отметил ниже Ночной Смотрящий это называется масштабируемость. Все, кто занимается серверным софтом, с этим сталкиваются. Так что готовься.
После того, как я перешел с серверов на клиенты, я термин "масштабируемость" сразу и вспомнить не смог.

P>>А чем серверный код заниматься должен помимо обслуживания запросов от клиентов?

S>Так мы дойдём до "А чем серверный код заниматься должен помимо формирования одних данных исходя из других?". Слишком общий вопрос, тут ответ один: "ничем". Безотносительно назначения приложения.

А что, позволь спросить, делает серверный код, написанный тобой, кроме обслуживания клиентских запросов?

S>Гдето я читал байку про геймдев, где упёрлись в ограничение по памяти.


Про оптимизацию холостого цикла — это не байка. Лаптев подтвердит, он тоже эту историю знает. И что общего у этого рассказа с твоей байкой?
Re[20]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:13
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>>>Масштабируемость? Не, не слышал.

S>>При куче пользователей.
НС>Тесты в студию. Хотя бы их результаты.
Что именно ты хочешь увидеть?

НС>>>URL можно, чтобы на твой развей поглядеть?

S>>Пока что нет
НС>Тогда ты пока что ничего не развеял.
Что именно ты хочешь увидеть?
Matrix has you...
Re[26]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:15
Оценка: -1
Здравствуйте, genre, Вы писали:

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


G>>>Есть да не то. У тебя есть требование "хочу чтобы этот кусок кода работал быстро". А это называется не написание работающего софта, а удовлетворение собственных технических амбиций.

S>>Называй как хочешь
G>Да мне вообще все равно. А вот тех кто будет пользоваться твоим творением жалко.
Ну-ну...

G>>>И это мы еще даже не заикнулись о требованиях к маштабированию. На нем твой проект может просто закончится.

S>>Что имеется ввиду?
G>Ну что ты будешь делать если добавится еще 100 пользователей? Или (предположим не добавится) когда база станет настолько большой, что все начнет тормозить?
Поставлю еще один сервер БД

G>>>Не говоря уж о дублировании кода, поиске багов и прочем и прочем.

S>>Никакого дублирования, откуда?
G>А у тебя ровно в одном месте есть выборка из, допустим, таблицы users?
Нет. Но двух одинаковых выборок тоже не встретишь.
Matrix has you...
Re[24]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:16
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Вот поэтому для работы с БД и нужно выбирать языки, в которых есть механизмы цитирования кода, а не С++.

Пример пожалуйста.
Matrix has you...
Re[22]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

S>>Можно и так, движок позволяет. Только поиск по int индексу все таки быстрее, чем поиск по std::string индексу.

НС>Вот поэтому надо выбирать языки, в которых есть LINQ, а не С++.
Объектную модель записей БД я и сам в состоянии построить. Но мне она не нужна. Лишняя прослойка между данными и результатом.
Matrix has you...
Re[24]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:25
Оценка:
Здравствуйте, Privalov, Вы писали:

S>>Ну, как я и сказл — дело в отсутствии опыта и знаний, но не в с++.

P>В отсутствии необходимой инфраструктуры и переоценке собсовенных сил в возможности ее создания. Этим грешат не только студенты, но и вполне взрослые дядьки.
Я так о сих пор и не пойму, при чем тут с++...


P>>>Дак причем тут клиент? ОН каким угодно может быть. К нему другие требования.

S>>Я как раз про серверную часть
P>Ты на raspberry pi сервер запускаешь?
Пока еще не пробовал, железяка занята — крутит местный ТВ канал по кругу со всякой рекламой. Получится купить еще пару pi — попробую.

S>>Нет, я не планировал распределять серверную часть между несколькими серверами. Нет необходимости, по крайней мере в этом проекте.

P>А надо. Как правильно отметил ниже Ночной Смотрящий это называется масштабируемость. Все, кто занимается серверным софтом, с этим сталкиваются. Так что готовься.
P>После того, как я перешел с серверов на клиенты, я термин "масштабируемость" сразу и вспомнить не смог.
Ну так масштабировать надо узкие места. Как правило это БД. При огромном числе запросов, когда начнут кончаться сокеты — пишется балансер, если один из существующих не подходит. Будет необходимость — разберусь. Ранняя оптимизация, знаешь ли, вредна

P>>>А чем серверный код заниматься должен помимо обслуживания запросов от клиентов?

S>>Так мы дойдём до "А чем серверный код заниматься должен помимо формирования одних данных исходя из других?". Слишком общий вопрос, тут ответ один: "ничем". Безотносительно назначения приложения.
P>А что, позволь спросить, делает серверный код, написанный тобой, кроме обслуживания клиентских запросов?
Вопрос риторический. Я об этом. "С какой стороны клавиатуры находится клавиша esc?"

S>>Гдето я читал байку про геймдев, где упёрлись в ограничение по памяти.

P>Про оптимизацию холостого цикла — это не байка. Лаптев подтвердит, он тоже эту историю знает. И что общего у этого рассказа с твоей байкой?
Тоже про программирование, разве нет?
Matrix has you...
Re[18]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:26
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>А зачем тебе закупать сервера?

НС>ASP.NET официально поддерживается на Моно. И есть аналоги для Java.
То есть запускаю на десктопе десятилетней давности и всё летает?
Matrix has you...
Re[16]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:29
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Да? А это безобразие не ты цитировал?


НС>
НС>DFDB_R memberDivision = DFDB_Q("member_division_id", "select division_id from members where id=$1",(session().get<int>("member_id")));
НС>loginMenuItem    = "<li><a href='/auth/quit'>Выход</a></li>";
НС>canAddTaskMenu   = CMS_RIGHTS->check(df::rights::otTask, df::rights::rtCanAdd, memberDivision[0][0].as<int>(), session().get<int>("member_id")) ?
НС>                                     "<ul><li><a href='/tasks/add'>Создать задачу</a></li></ul>" : "";
НС>canAddMemberMenu = CMS_RIGHTS->checkMember(df::rights::rtCanAdd, session().get<int>("member_id")) ?
НС>                                     "<ul><li><a href='/members/add'>Зарегестрировать пользователя</a></li></ul>" : "";
НС>canAddDivisionMenu = CMS_RIGHTS->checkDivision(df::rights::rtCanAdd, session().get<int>("member_id")) ?
НС>                                     "<ul><li><a href='/divisions/add'>Добавить подразделение</a></li></ul>" : "";
НС>


До этого еще руки не дошли в божеский вид привести. Спасибо что обратил внимание.
Matrix has you...
Re[22]: cppcms
От: Sheridan Россия  
Дата: 23.09.14 16:32
Оценка:
Здравствуйте, genre, Вы писали:

G>Понимаешь какое дело. До тех пор пока ты не померял ты не можешь даже быть уверен, что твой способ быстрее чем какой-то другой.


Предложи тест, набросаю под него по свободе код.
Только без фанатизма, типа "нагрузи полутысячью юзеров" — их у меня взять негде.
Matrix has you...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.