Здравствуйте, netch80, Вы писали:
L>>Это ты Теме расскажи.
N>Я плохо слежу за столь специфическим языком треда, но вроде он что-то похожее как раз и говорит?
Нет, он упорно пытается всем навязывать те структуры, которые являются правильными с его точки зрения (по big-O). То есть, в данном случае хэштаблицы или комбинацию из хэштаблицы и интрузивного списка (aka LinkedHashMap в яве).
Здравствуйте, Тёмчик, Вы писали:
Тё>Почему единственная реализация на NodeJS- правая?
Потому что ты вообще нихера не читаешь и просто пишешь что в голову пришло Ладно, может там кто-то тебе еще что-то и будет пытаться объяснить, а я пасс, удачи с JS
S>>>Кроме того, приведенный выше код можно считать документально зафиксированным подтверждением того, что местный Тёмчик говнокодер, неспособный в простейшие структуры данных. Ибо такая наивная реализация изъятия элемента из двусвязного списка без проверки на null значений node.prev/node.next -- это про*б сравнимый с неспособностью развернуть строку. Тёмчик, почему меня не удивляет факт того, что вы говнокодер?
S>Ну и где здесь хоть слово про "С++ всех быстрее"?
Вам мало этой цитаты? Тё>>>>А когда я предложил решение на ёлку залезть (O(1)) и непоцарапаться (cache locality), вы перешли на оскорбления. S>>>Было предложение хранить ноды в преаллоцированном векторе фиксированного размера. За такое сразу в сад. Ибо если есть возможность заранее предсказать количество подписок, то пляски с динамическими контейнерами не нужны. Тё>>http://rsdn.org/forum/job/7913532.1
Тё>>Достаточно привёл цитат? S>Нет. Пока ни одной по теме разговора.
Вы просто как материал к затычке в бутылку с шампанским. Абсолютно невосприимчивый структурам данных. Тё>>Вы сами завели объект sentinel в теле SubscriptionStorage S>Во-первых, я ничего не заводил. Прочитайте оригинал: S>
У меня пока проблема в том, чтобы разобраться с предложенным вами вариантом. Т.е. понять, что это за вариант вообще.
S>Пока что вырисовывается приблизительно такая картина:
S>Вы не привели ни строчки нормального кода и мне пришлось фантазировать с ваших слов. Т.е. это мой набросок вашего решения Тё>>а потом докопались, в оскорбительной форме "со времен 1990-х по рукам бъют" SubscriptionStorage присваивать указатель на поле из тела SubscriptionStorage. S>Ну что поделать, если за такие присваивания в C++ бьют по рукам с 1990-х.
В вашем наброске моего решения sentinel в теле SubscriptionStorage. Побейте себя по рукам.
S>>>просьба обратить строку от чайника, который не в курсе, какие способы представления строк встречаются в природе, она о многом говорит. О многом плохом, касающемся конторы. Тё>>
Тё>>In computer programming, a string is traditionally a sequence of characters
S>Тёмчик, "последовательность" вовсе не означает, что строка представлена в виде одного непрерывного вектора, ваш К.О.
Так ещё лучше. Можете предложить разворот списка. Тё>>Я продолжаю задавать написать функцию "перевернуть строку", но сразу с сигнатурой reverseString(char[] a): void — больше никаких open-ended. S>Вы уже окрасили себя в те цвета, в которые... Короче, поздно отмываться.
Астрологи предсказали неделю загрязнённых отсадков из-за техно-аварии разрыва коллектора в Беларуси. Тё>>Я не наезжаю на вас неаргументированно. Только по делу. И ваша библиотека в опен сорсе мне неактуальна. Может быть, она неплохая, я не знаю. S>Во-первых, она не одна. Во-вторых, вопрос не про актуально ли для вас что-то. Может для вас актуально, когда вас в 40 лет со всей дури в боксерском зале по башке мутузят. Если уж вы заговорили о недостаточной квалификации собеседников, то вам прозрачно намекают на способ проверить эту самую квалификацию. Так что либо аргументы в студию, либо рот закройте.
И чо? Есди вы не можете даже развернуть строку- втирайте в более другом месте про вашу неимоверную крутизну. Тё>>Набросились, коршуны . Я перестал писать на C++ до введений C++ 11. Ну да, неправильно использовал emplace_back. Это страшный грех, учитывая, что этих вещей не было в моё время в C++? S>Вы не разбираетесь в предмете о котором судите.
Я не разбираюсь в
Здравствуйте, Тёмчик, Вы писали:
Тё>Я не разбираюсь в нововведениях C++ 11
Учитывая, что C++11 это первая версия, про которую можно реально сказать, что это C++, а не C-с-классами, такая позиция, мягко говоря, удивляет.
(Нет, я не сторонник всё абстрагировать до предела — обычно наоборот, это я как раз пишу на C-с-классами до тех пор, пока реально не начинается от этого явная неэффективность. Но вот хотя бы move-семантика, emplace*... — это то, что абсолютно неизбежно при желании писать хоть как-то оптимально.)
Здравствуйте, netch80, Вы писали:
N> Но вот хотя бы move-семантика, emplace*... — это то, что абсолютно неизбежно при желании писать хоть как-то оптимально.)
move-семантика это как раз худшее из нововведений. Оптимизировать нужно только отдельные участки кода. Вместо сложного синтаксиса rvalue-ссылок, лучше сделать элементарный метод move() в тех паре участков программы, где это действительно даст выигрыш.
Фанатики современного C++ обычно начинают возражать, что без move-семантики не получился бы unique_ptr<>, но это слабый аргумент.
Теоретически мув-семантика интересная фича, но на практике только усложняет код.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Здравствуйте, Тёмчик, Вы писали:
S>>Ну и где здесь хоть слово про "С++ всех быстрее"? Тё>Вам мало этой цитаты?
Не просто мало. Она не имеет никакого отношения к "Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". В этой цитате нет ни слова про скорость C++ в частности, не говоря уже о каком-либо превосходстве C++ вообще.
Тё>В вашем наброске моего решения sentinel в теле SubscriptionStorage. Побейте себя по рукам.
С ваших слов моим наброском ваш замысел зафиксирован точно. Вы сами подтвердили. Так что a) ко мне никаких претензий, и b) хотите что-то показать -- показывайте сами. Хотя для этого же C++ знать нужно...
S>>Тёмчик, "последовательность" вовсе не означает, что строка представлена в виде одного непрерывного вектора, ваш К.О. Тё>Так ещё лучше. Можете предложить разворот списка.
И не обязательно представлять последовательность в виде списка. Все тот же К.О.
Собственно, я еще в прошлый раз стебал вас тем, что ваши требования написать разворот списка убоги и смешны уже потому, что вы не имеете понятия о разнообразии способов представления строки. В таких обстоятельствах показывать вам что-нибудь -- это метать бисер перед свиньями.
Тё>>>Я не наезжаю на вас неаргументированно. Только по делу. И ваша библиотека в опен сорсе мне неактуальна. Может быть, она неплохая, я не знаю.
S>>Во-первых, она не одна. Во-вторых, вопрос не про актуально ли для вас что-то. Может для вас актуально, когда вас в 40 лет со всей дури в боксерском зале по башке мутузят. Если уж вы заговорили о недостаточной квалификации собеседников, то вам прозрачно намекают на способ проверить эту самую квалификацию. Так что либо аргументы в студию, либо рот закройте. Тё>И чо?
И все. Рот закройте. Или аргументы предьявите.
Тё>Есди вы не можете даже развернуть строку-
См.выше.
Тё>втирайте в более другом месте про вашу неимоверную крутизну.
Не нужно уходить в сторону от обсуждения уровня квалификации. Вы в очередной раз вякнули неподумавши, а когда вас ткнули носом в ответственность, начали вилять.
Приведу вам пару примеров.
Несколько лет назад потребовалось избавится от ACE в зависимостях и написать свою реализацию таймеров вместо ACE-овских. Для чего, среди прочего, потребовалось самостоятельно реализовать структуру данных heap. При том, что на тот момент я знал лишь про ее существование и широкое использование этой структуры данных в приоритеных очередях, но ничего не знал о том, как же она устроена. И ничего, за пару часов разобрался. Получилась своя реализация. Но если сейчас меня попросят рассказать про heap, то я ничего не вспомню. Ибо не нужно.
Другой пример. Год назад про PEG-парсинг я знал только название. Но когда потребовалось, то не только разобрался, но и сделал средства для описания PEG-грамматик средствами C++14 (о результатах можно прочитать здесь, код посмотреть здесь и здесь).
К чему это все? А к тому, что если вас в ВУЗе учили хорошо, то в голову вам должны были вложить не конкретные знания, а способность к обучению. Вот меня учили хорошо, поэтому я могу многого не знать, но быстро осваивать при необходимости.
И это, вообще-то, в свое время было нормой для профессии разработчика ПО.
Тё>Я не разбираюсь в нововведениях C++ 11
Т.е. не разбираетесь в предмете разговора. Кроме того, вы и в C++98 не разбираетесь.
Здравствуйте, $$, Вы писали:
L>>Да, а потом эти аналоги таров приходится вручную из продакшена выкорчевывать. Тру прогеры, my ass.
$>Велосипедизмом тоже плюсники чаще страдают, кстати. Питонисты или нодщики просто берут и готовят из готовых библиотек. В случае нужды, могут и на C модуль сделать. Но плюсники часто пытаются забивать микроскопом гвозди, а нередко и не знают алгоритмов,
$>- ведь их опыт, это борьба с граблями.
S>Другой пример. Год назад про PEG-парсинг я знал только название. Но когда потребовалось, то не только разобрался, но и сделал средства для описания PEG-грамматик средствами C++14 (о результатах можно прочитать здесь, код посмотреть здесь и здесь).
Заставь дурака богу молиться...
template<
typename Container,
typename Element_Producer >
RESTINIO_NODISCARD
auto
maybe_empty_comma_separated_list_p( Element_Producer element )
{
static_assert( impl::is_producer_v<Element_Producer>,
"Element_Producer should be a value producer type" );
return impl::maybe_empty_comma_separated_list_producer_t<
Container,
Element_Producer >{ std::move(element) };
}
Здравствуйте, netch80, Вы писали:
Тё>>Я не разбираюсь в нововведениях C++ 11
N>Учитывая, что C++11 это первая версия, про которую можно реально сказать, что это C++, а не C-с-классами, такая позиция, мягко говоря, удивляет. N>(Нет, я не сторонник всё абстрагировать до предела — обычно наоборот, это я как раз пишу на C-с-классами до тех пор, пока реально не начинается от этого явная неэффективность. Но вот хотя бы move-семантика, emplace*... — это то, что абсолютно неизбежно при желании писать хоть как-то оптимально.)
Коллега, у вас цифра 80 это г.р. или год олимпиады?
В моё время C-с-классами называли код без исключений и шаблонов.
Здравствуйте, Тёмчик, Вы писали:
M>>То-то JS фреймворки каждый год новые
Тё>Не слежу за всеми. Основные гиганты это Angular (Google) и React (Facebook).
Фейсбук уже давно написал свой транспилятор своей пехапешечки в плюсики
С JS/TS проблема тут только одна — нету компилеров в плюсики. Хотя, я вроде слышал, что уже что-то появилось
Ты бы это — ну не смог — так не смог, зачем позорится-то?
Здравствуйте, Marty, Вы писали:
Тё>>Не слежу за всеми. Основные гиганты это Angular (Google) и React (Facebook).
M>Фейсбук уже давно написал свой транспилятор своей пехапешечки в плюсики
А ты я смотрю, знаток пэхапе.
M>С JS/TS проблема тут только одна — нету компилеров в плюсики. Хотя, я вроде слышал, что уже что-то появилось
Где эти плюсики запускать?
M>Ты бы это — ну не смог — так не смог, зачем позорится-то?
Что именно не смог?
В своё время у меня был 99% рейтинг в тесте C++. А теперь какая-то школота, которая ниасилила строку развернуть, что-то там ко ко.
Здравствуйте, so5team, Вы писали:
Тё>>Вы из тупого сплита сделали проблему века.
S>Скорее вы просто не в курсе. На обычных собеседованиях о таком не спрашивают.
Это не отменяёт тупого сплита, который вы переусложнили.
Здравствуйте, Тёмчик, Вы писали:
Тё>>>Вы из тупого сплита сделали проблему века.
S>>Скорее вы просто не в курсе. На обычных собеседованиях о таком не спрашивают.
Тё>Это не отменяёт тупого сплита, который вы переусложнили.
Чтобы делать выводы о "переусложнили" или "недоусложнили" следует быть в теме. А вы не.
Здравствуйте, so5team, Вы писали:
Тё>>>>Вы из тупого сплита сделали проблему века.
S>>>Скорее вы просто не в курсе. На обычных собеседованиях о таком не спрашивают.
Тё>>Это не отменяёт тупого сплита, который вы переусложнили.
S>Чтобы делать выводы о "переусложнили" или "недоусложнили" следует быть в теме. А вы не.
Я немного интересовался темой парсеров. Могу подкинуть ссылок для просветления
Здравствуйте, Тёмчик, Вы писали:
Тё>>>>>Вы из тупого сплита сделали проблему века.
S>>>>Скорее вы просто не в курсе. На обычных собеседованиях о таком не спрашивают.
Тё>>>Это не отменяёт тупого сплита, который вы переусложнили.
S>>Чтобы делать выводы о "переусложнили" или "недоусложнили" следует быть в теме. А вы не.
Тё>Я немного интересовался темой парсеров.
Из того, что вы чем-то и когда-то интересовались вовсе не следует наличия у вас a) знаний и b) хотя бы примерного понимания предмета. Что в разговорах с вами выяснялось уже неоднократно.
Тё>Этой штукой я анализировал исходники C++ в репозитории одной секьюрной компании Тё>https://www.boost.org/doc/libs/1_75_0/libs/spirit/doc/html/index.html
Если бы вы прочитали статью, ссылку на которую я дал, то нашли бы объяснение причин, по которым ни Boost.Spirit, ни PEGTL не подошли.
Тё>Вы даже строку не развернёте.
Здравствуйте, so5team, Вы писали:
Тё>>>>>>Вы из тупого сплита сделали проблему века.
S>>>>>Скорее вы просто не в курсе. На обычных собеседованиях о таком не спрашивают.
Тё>>>>Это не отменяёт тупого сплита, который вы переусложнили.
S>>>Чтобы делать выводы о "переусложнили" или "недоусложнили" следует быть в теме. А вы не.
Тё>>Я немного интересовался темой парсеров.
S>Из того, что вы чем-то и когда-то интересовались вовсе не следует наличия у вас a) знаний и b) хотя бы примерного понимания предмета. Что в разговорах с вами выяснялось уже неоднократно.
Тё>>Этой штукой я анализировал исходники C++ в репозитории одной секьюрной компании Тё>>https://www.boost.org/doc/libs/1_75_0/libs/spirit/doc/html/index.html
S>Если бы вы прочитали статью, ссылку на которую я дал, то нашли бы объяснение причин, по которым ни Boost.Spirit, ни PEGTL не подошли.
Эта статья разбор HTTP-заголовка Authorization с помощью easy_parser из RESTinio?
Ну я почитал сейчас. Текст в статье подтвердил моё первоначальное предположение- вы тупой сплит строки переусложнили в кромешный шаблонный ад. Понимаете разницу, я сделал когда-то анализатор сорцов C++ из доступных средств, и забыл. Оно в том время шустро шевелилось и выводило результат- граф зависимостей с помошью graphviz. А вы сделали простой сплиттер http header. Такое делается троечником на лабораторке за 30 минут.
PS по нику eao197 я вас читал посты в 2003-2004гг, вы и тогда были религиозный фанатик.
Не заметно.
Тё>Текст в статье подтвердил моё первоначальное предположение- вы тупой сплит строки переусложнили в кромешный шаблонный ад.
Дело в том, что в HTTP десятки заголовков и многие из них используют конструкцию #rule или *rule. Писать для каждого из таких заголовков тупой сплит строки нерационально. Рационально сделать повторно используемую обобщенную функцию, которую можно будет использовать снова, снова, снова, снова и снова. Что, собственно, и было сделано.
ИМХО, одно из самых основополагающих качеств нормального программиста -- это способность видеть повторяющиеся паттерны и умение оформлять эти паттерны в повторно используемые классы/процедуры/функции/шаблоны/генерики (под паттернами здесь понимаются не "паттерны проектировния" от банды четырех, паттерны проектирования -- всего лишь продолжение этой же тему, но на более высоком уровне).
Ну а тот, кто этого не умеет, тот затем и производит тупую копипасту и делает КА с десятками состояний
.
Тё>Понимаете разницу, я сделал когда-то анализатор сорцов C++ из доступных средств, и забыл.
Вам повезло, вы могли использовать готовые доступные средства. А мне пришлось делать свои (причины изложены в статье). Для чего взял и разобрался с PEG парсингом. Так что уж с обращением строки (в каком бы виде она не представлялась) справлюсь, если вдруг потребуется делать это.
Тё>А вы сделали простой сплиттер http header. Такое делается троечником на лабораторке за 30 минут.
Так реализация #rule из HTTP-ного RFC делается немногим сложнее, зато затем переиспользуется произвольное количество раз. В чем вы здесь увидели хоть какую-то проблему решительно непонятно.
Может быть все дело в том, что вам мозгов хватает лишь для того, чтобы вот такие портянки
Здравствуйте, so5team, Вы писали:
Тё>>Эта статья разбор HTTP-заголовка Authorization с помощью easy_parser из RESTinio?
S>Да.
Тё>>Ну я почитал сейчас.
S>Не заметно.
Тё>>Текст в статье подтвердил моё первоначальное предположение- вы тупой сплит строки переусложнили в кромешный шаблонный ад.
S>Писать для каждого из таких заголовков тупой сплит строки нерационально.
Если бы вы открыли букварь учебник Ахо, вы бы не изобретали это убожище.
Сканер генерит поток токенов, из которого парсер строит AST. Оба являются конечными автоматами.
Я хз нахрена у вас в сканере шаблон "probably_with_comma", когда всего-то нужно бить входной поток на токены. Там нужен простейший автомат. И далее простой в доску парсер- генератор AST. Совсем по феншую, если сделать StAX интерфейс с visitor-м.