Berkus
> the MIPSpro compiler and versions 3 and later of GCC cleverly zero out only the first byte and leave the rest of the pwd array intact.
Berkus
> There has been recent notice that some compilers violate the standard by not always respecting the v o l a t i l e qualifier.
Berkus
нет
Сережа
>compilers violate the standard это поэтому нельзя std::fill?
Berkus
я процитировал что там написано, для тех, кто не умеет читать
🦥Alex Fails
Anonymous
Насколько я помю, если сделать #define volatile ничего не изменится
Aidar
Плевать на компиляторы которые не хотят соблюдать стандарты
Anonymous
По стандарту должно, да
Berkus
Плевать на компиляторы которые не хотят соблюдать стандарты
ну а им плевать на твою "безопасную" функцию
Aidar
С++ не о компиляторах
Berkus
Плевать на компиляторы которые не хотят соблюдать стандарты
мы про портабельный код говорим или опять "Только мой мсвц 11.5.1"?
Anonymous
Но по факту компиляторы это воспринимают пофигистично
Anonymous
анализ cors, безопасность... работа с бд... не ну если просто файлики по get отдавать или hello world в ответ кидать, то такое можно на плюсах за 10 минут)
Все чуть сложнее и проще одновременно. Сам сервис простой как бревно, но в него нужно втянуть адовую плюсовую инфру со своими сериализаторами, блэкджеком и куртизанками. Писать микросервис на го и тащить плюсы обвязкой через swig - меня не поймет ни начальство, ни CI платформа
Aidar
Мы про си++ говорим а не про портабельный код
Berkus
Но по факту компиляторы это воспринимают пофигистично
если бы они так делали в линуксовом ядре не работал бы никакой MMIO вообще
Berkus
Aidar
с++ непортабельный по твоему?
Ну вон стандарты не соблюдаются
Aidar
А это типа и есть си++
Berkus
Ну вон стандарты не соблюдаются
баги есть везде, такие же люди как ты это писали
Olesya
привет, народ. кто-то может подсказать лемматизаторы на плюсах? нужно что-то по типу pymorphy.
Anonymous
если что специфическое на сях, то да, в го лучше не тянуть... я обычно переписываю, благо в go все для этого есть из коробки
Гигабайты кода, в котором до конца не разбирается ни один человек на планете - да в топку такое удовольствие :)
Alexander
микросервис на c++ стоит писать, но как по мне так не просто rest, а если специфик то проще поднять отдельный микросервис и завязать с рест микросервисом через теже очереди или rpc
Berkus
11 дискет, Borland C++ 3.1, TurboVision
Anonymous
Есть яндексовская томита
Anonymous
Она в паблике
Berkus
в коробочку номинально влезало только 10, но немного прижав пальцем можно было затолкать и одиннадцатую, поэтому это был достаточно portable solution
Anonymous
https://tech.yandex.ru/tomita/
Vsevolod
Я пользуюсь snowball - не совсем плюсы, и для русского работает неважно, но лучше, чем ничего
Olesya
про него я тоже знаю
Egor
Ну, если вы зарегистрируетесь на email, содержащий имя-фамилию - то упс. Или если случайно что-то сделаете через другой интернет. Или если у вашего соседа логируются MAC-адреса, а вы не поменяли. Куча способов: https://habrahabr.ru/post/196464/
Aleksey
настоящий анонимус едет с одноразовым wifi в другой конец страны(не беря с собой любые gsm устройства) стараясь максимально избегать людей и там уже делает своё грязное дело через анонимную wifi точку ;)
Egor
И его вылавливают по мобильному телефону, который почему-то вошёл в сеть одновременно с анонимусом: https://pikabu.ru/story/ot_quotbolshogo_brataquot_ne_skryitsya_3929978
Egor
Хотя да, если не брать любые GSM устройства, то интереснее
Anton
The C standard states that accesses to volatile objects are part of the unalterable observable behaviour — but it says nothing about accesses via lvalue expressions with volatile types.
Я вот кстати не уверен насчёт этого утверждения. cppreference например говорит: Every access (both read and write) made through an lvalue expression of volatile-qualified type is considered an observable side effect for the purpose of optimization and is evaluated strictly according to the rules of the abstract machine. Надо конечно в стандарт более внимательно глянуть, но сейчас в дороге. Также возможно что в Си есть эта проблема, а в C++ нет
🐙 Antony
Там есть ещё хитрый момент - хитрое железо умеет не писать нули в память, откладывая/забивая на эту операцию Как потом достать старое (незанулённое) значение мне не ведомо, но подозреваю что есть методы
Vsevolod
А зачем это хитрому железу?
Berkus
А зачем это хитрому железу?
не видел новости про meltdown/spectre?
Berkus
вот для этого
Vsevolod
это вообще как связано с записью в память?
Vsevolod
side channel attack на кеш (meltdown) или branch predictor (spectre)
Berkus
это вообще как связано с записью в память?
ты не ту часть прочитал "Fix is expected to bring 5% to 30% slowdown"
Berkus
как и всё в железе - ради скорости
Vsevolod
проверить, что пишутся нули, и отложить именно это - это, имхо, гораздо сложнее, чем тупо записать все (или отложить все)
Vsevolod
ну и 5 to 30% slowdown - это, опять же, без pcid
Vsevolod
странно, что появились они аж в westmere, а использовать их стали только в 4.xx ведре
Berkus
проверить, что пишутся нули, и отложить именно это - это, имхо, гораздо сложнее, чем тупо записать все (или отложить все)
почему ты думаешь что оно не откладывает запись всего, включая те нули, которые те "секьюрно" записал в "память"?
Vsevolod
Pcid - теги процесса в tlb
Vsevolod
Ну да, откладывать все - это реальный кейс
Vsevolod
Поэтому надо писать из prng криптографического несколько раз в таком случае
Berkus
ну по хорошему оно вообще должно быть в trustedzone securememory так то
Berkus
и оттуда никогда не вылазить
Vsevolod
у меня тут периодически возникает определенное желание переделать свой основной проект с plain c на c++, есть где-то success story для каких-то более-менее крупных проектов (200k LoC)?
Vsevolod
он был когда-то на plain c?
Vsevolod
еще ищутся какие-то блог посты на эту тему, да
Vsevolod
потому что пока задача меня ужасает, конечно
Berkus
там правда выборочно, но они тоже решили переехать
Berkus
между с и с++ интерфейсы совместимые, поэтому просто внутренности модуля конвертируешь по чутьчуть в с++, внешний интерфейс оставляешь как обычно
Berkus
потом следующий
Berkus
когда между двумя с++ модулями остается с интерфейс, выкидываешь его
Berkus
ну и так до полного удовлетворения
Vsevolod
а если весь текущий c код собирать компилятором c++?
Vsevolod
чтобы без extern "C" и вот этого всего