Доступен первый выпуск проекта...Подробнее: https://www.opennet.me/opennews/art.shtml?num=54560
> Код проекта написан на языке RustМолодцы!
че молодцы-то, опять память будет течь.
Раст уже можно считать именем нарицательным для обозначения текучей памяти
Будьте добры статистику или иные пруфы, как для данной программы, так и для всех программ на данном языке в целом. В качестве бонуса можете указать на аналогичные решения на других языках без данных проблем
https://stackoverflow.com/questions/55553048/is-it-possible-...
Я не спрашивал, можно ли создать, я спрашивал статистику проявления данной проблемы для данной софтины и для всего софта в целом на этом языке, и, в качестве бонуса, попросил пример аналогичной программы на другом языке, избавленном от данного недостаткаИз вашего же пруфа я не могу сделать вывод, заключающийся в "раст - имя нарицательное для текущей памяти"
> Я не спрашивал, можно ли создать, я спрашивал статистику проявления данной проблемы
> для данной софтины и для всего софта в целом на этом
> языке, и, в качестве бонуса, попросил пример аналогичной программы на другом
> языке, избавленном от данного недостатка
> Из вашего же пруфа я не могу сделать вывод, заключающийся в "раст
> - имя нарицательное для текущей памяти"ты просил пруфы - тебе дали пруфы.
для C/C++ статистика есть, потому что с их помощью написаны петабайты реально используемого софта
от прошивок для марсоходов, до видехостингов с котиками и нагрузкой в миллионы просмотров за суткиподозреваю для 1.5 клона утилиток, переписанных за 5 лет с CXX на раст, врядли ктото делал какую-то "статистику"
и да, "обёртки"-бингдинки Сишных API под Раст не в счёт.
хотя даже тут есть проблемы с безопасностью: https://dl.acm.org/doi/fullHtml/10.1145/3418898
> ты просил пруфы - тебе дали пруфы.Я просил пруфы на статистику, из которой следует, что "раст - имя нарицательное для текущей памяти" , мне дали пруф на то, что в расте можно создать утечку памяти, ну тогда можно так же утверждать следующее:
"Си - имя нарицательное для битья памяти", а что, каждый сишник специально бьет память
"С++ - имя нарицательное для битья памяти и неадекватного синтаксиса", а что, каждый приплюснутый пишет нечитаемое нечто, и специально бьет память
"python - имя нарицательное для неадекватного синтаксиса", а что, тут вот match завезли, разве его можно читать?
"java - нарицательное имя для тормозов и неадекватного потребления памяти"
"php, js, perl - имена нарицательные для произведений макак"
> подозреваю для 1.5 клона утилиток, переписанных за 5 лет с CXX на раст, врядли ктото делал какую-то "статистику"
Тогда и утверждение "раст - имя нарицательное для текущей памяти" не имеет под собой основы
> и да, "обёртки"-бингдинки Сишных API под Раст не в счёт.
> хотя даже тут есть проблемы с безопасностьюНе имеет отношения к теме обсуждения
>[оверквотинг удален]
> "python - имя нарицательное для неадекватного синтаксиса", а что, тут вот match
> завезли, разве его можно читать?
> "java - нарицательное имя для тормозов и неадекватного потребления памяти"
> "php, js, perl - имена нарицательные для произведений макак"
>> подозреваю для 1.5 клона утилиток, переписанных за 5 лет с CXX на раст, врядли ктото делал какую-то "статистику"
> Тогда и утверждение "раст - имя нарицательное для текущей памяти" не имеет
> под собой основы
>> и да, "обёртки"-бингдинки Сишных API под Раст не в счёт.
>> хотя даже тут есть проблемы с безопасностью
> Не имеет отношения к теме обсужденияну, на c/c++ же такой же ярлык и навесили, почему бы на раст не навесить.
ведь несмотря на свою маркетигновую 'ультрасупербезопасность' в управлении памятью и вообще всем - точно так же и сам запросто может поплыть (даже без особых усилий)
Я и не вешаю, я пытаюсь получить пруфы на утверждение "раст - имя нарицательное для текущей памяти", в данный момент времени мне все равно на упомянутые выше языки с их ярлыками
А я, кстати, согласен с этим утверждением. Все программы на расте текут, точно также как все программы на плюсах текут. Нужно просто помнить об этом, когда решишь притянуть очередную плюсовую зависимость в проект на си.
Главное не забыть что все программы на си тоже текут.
> Главное не забыть что все программы на си тоже текут.Естественно, только в программах на си это хотя бы сразу видно. Си нагенерированное (bison и компания) у меня тоже текло постоянно, вот там это может быть проблема.
Разве есть язык, где нельзя сделать утечку памяти? На го я могу тоже так сделать.
Причем тут язык вообще?
>Разве есть язык, где нельзя сделать утечку памяти?ну для начала необходимо дать определение понятию "утечка памяти".
Посмотрите в вики что ли. Определение этому давно дано.
Процесс неконтролируемого уменьшения объёма...
> Посмотрите в вики что ли. Определение этому давно дано.
> Процесс неконтролируемого уменьшения объёма...процесс (алгоритм) может в любом случае исчерпать доступную память и притом, что имея полный контроль, разве это "утечка"?
В той же википедии написано "вовремя не освобождающих ненужные участки памяти" - что значить "вовремя"?
так что значить "утечка" ? Потеря контроля над участком памяти?
на вопрос "Разве есть язык, где нельзя сделать утечку памяти?" в той же вики написано - да есть, язык в котором нет понятия динамически выделяемой памяти.
>Причем тут язык вообще?
а при том, что программы пишутся на языках, и работают с памятью они же :)
нет успешных известных решений на расте не имеющих проблем на расте, такая формулировка устраивает?
>Раст уже можно считать именем нарицательным для обозначения текучей памятиТогда и C++ можно таким же считать, в управлении памятью у них все практически одинаково, кроме того что в раст сделать утечку чуть сложнее так как нет голых new delete.
Actually, in a system programming language, you need to be able to create a memory leak, otherwise, for example in an FFI case, your resource would be freed after being sent for use in another language.
> Раст уже можно считать именем нарицательным для обозначения текучей памятиНет, ещё рано. Тебе надо ещё три с половиной недели форсить этот мем. Только после этого.
Фоундейшон Вас ждет. Неумение программировать даст солидный изначальный карьерный буст !
Вот интересно, у каждого хелловорлда на хрусте есть как минимум спонсор. По всем признакам классический распил, а вы дурачки ведитесь, пешите для массофки, ваши жизни и время для них ничего не стоят, будут надувать сопли и кричать какие большие у них дыры.
Какой же у вас пожар в кормовой части, ахаха
Первым делом заходим на страницу и открываем доки.О госпади, что это за мутант? Это что за отложения дегенерата? В читываешься и понимашь.
> Код проекта написан на языке Rust
И этим всё сказано.
Достойная поделка для write only языка
Любой язык - write-only, потому что копаться в исходниках большинства проектов = делать чужую работу желающих очень мало.
почему write-only?
Язык для народности не читателей, а писателей.
Не ну прочитать в файлике строчку и заменить ею строчку в базе - это надо в топах постить, прямо над маскоидными высерами.Если поднажать с наймом дириктаров, то к лету напишут хттп сервер. А там уже гуляй фантазия, главное не останавливаться с клонированием дирихтарского состава.
> SQL-дамп, в котором персональные данные скрыты или заменены несуществующими данными, похожими по формату на реальные.Использовались ли оригинальные данные при создании замены? Типа хеш оригинала в любом виде?
Какой ещё хеш?
Ты хоть документацию почитай.
We also support ZH_TW (traditional chinese) and RU (translation in progress).
анонимизирует данные на стороне сервера и передаст в тестовую среду уже чистый SQL-дамп, в котором персональные данные скрыты или замененыКак он понимает какие данные скрыть?
Пароли тоже скроет? )
посмотрит страничку на гитхабе. там надо описать yaml-ом таблицы и поля в которых чуствительные данные. опишешь табличку с паролями - скроет пароли
> в котором персональные данные скрыты или заменены несуществующими данными, похожими по формату на реальныеУгу, а потом ломай голову, почему при тестировании ломается, а на проде - нет или наоборот.. а потом окажется, что "умная система" просто подставила "похожие[по ее мнению]данные", которые заведомо неприемлемы для данных условий( тот же номер телефона. Заменит на хз что, а потом думай, почему тест системы рассылки проваливается, поскольку номер некорректен или относится не к той стране, в отношении которой активированы рассылки ).
>phone: format: +7##########Как работает проект не читай - язвительные комментарии оставляй?
Абсолютно. Вся эта защита приватности никому, кроме "защитников приватности", не нужна. Если у фирмы есть данные, значит ей их уже доверили. Если ей их уже доверили, то зачем анонимизация? Просто заставляем всех сотрудников подписать NDA - и всё.
У нас как-то dba приехал на машине в ноябре в шортиках. Типа тепло в машине ж. Спросили: где греться будешь, если в ДТП радиатор проткнут и двигатель встанет. Промолчал в ответ, понял косяк логики.
> У нас как-то dba приехал на машине в ноябре в шортиках. Типа
> тепло в машине ж. Спросили: где греться будешь, если в ДТП
> радиатор проткнут и двигатель встанет. Промолчал в ответ, понял косяк логики.Так себе пример - у нас вот в аптечке полагается иметь термоодеяло.
От того, что ты накажешь сотрудника по NDA, слитые данные не исчезнут. Очевидно, чтобы было меньше сливов, надо чтобы меньше людей имели к ним доступ, меньшее количество людей проще контролировать, меньшее количество людей проще обучить основам ИБ, и т.д.
Очевидно, что нормальные люди составляют энную тестовую базу, по которой потом код и гоняют
> составляют энную тестовую базуданная софтина - один из способов ее получить
> Просто заставляем всех сотрудников подписать NDA - и всё.Да! И хакеров, сливших базу, тоже заставим подписать NDA и проблема решена!
> а потом ломай голову, почему при тестировании ...Если хотите, то номер Вашего телефона, д.адр., карты и списки покупок в Спере отдадим тестировщикам и бизнес аналитикам в свободный доступ. Если не хотите, то применят этот или похожий инструмент.
Как-то тагг оно применяется.
Если у меня есть конкретный номер для тестирования или их список( для тестирования, чтобы посторонним людям неведомые сообщения не прилетали ), то зачем мне делать рассылку по случайным номерам ?
Равно как с номером карты и проч.Просто у сколь-нибудь нормальных контор( даже из 3 человек, включая директора, дизайнера и программиста ) обычно есть какие-то конкретные данные, которые применяются для тестирования:
номер телефона, на который делается тестовая отправка сообщений - иначе как ты определишь корректность отправки сообщения и его содержимое, если там какой-нибудь код подтверждения итп
определенная карта( иногда даже того же директора мелкой конторы ), с которой делаются тестовые списания и суть тестирования - проверка работоспособности системы оплаты и выставления счета
и прочЯ не вижу реальных применений для сабжа.
Если реально требуются конкретные данные, то их нельзя чем-то рандомно заменить( даже имя-фамилию владельца карты ), а если нет - то можно просто скриптом нагенерировать.
п.с: а потом с той штукой будет как с тем "заблюриванием" лиц и текстов, которое "внезапно" оказалось возможным восстановить с помощью нейронки
Тестовые данные динамические. Вчерашние тестовые данные устроены не так, как сегодня зарелизили. Можно выкидывать вчерашние тестовые эталонные данные. Нужно регулярно чем-то обновлять тестовый набор.Причины разные. Например, из базы данных материал отдаёт функция, которая иногда меняется. Вчера отдавала один набор данных, сегодня - другой.
> Я не вижу реальных применений для сабжа.
А потому что не знаете в теме - не работали с сабжем никогда, работу не знаете. :))
Как организуются тесты, что когда тестируется, как конкретно тестируется, как часто какого объёма тесты. Просто - как пишутся тесты. Большая идустрия.
Ты читал вообще про эту софтину, прежде чем рассуждать о "я не вижу применений"? Возьми и, анонимизируя базу, замени все номера телефонов в базе на тот, который удобен тебе. Правила анонимизации пишешь ты, что напишешь, то и получишь.А теперь давай придумай какую-нибудь новую причину, почему эта утилита бесполезна. Ведь тебе так сложно принять идею, что кто-то кроме тебя может понимать, как надо создавать тестовую базу, да?
Не знаю как в этой тулзе сделано, но просто анонимные данные всунуть не получится.
Если длина это не проблема, то всякие блобы, текстовые шаблоны, данные форматного ввода, хеши данных просто в некоторых случаях просто нереально воспроизвести без повторения логики приложения.Самого волнует схема в которой приходится тащить базу с прода (даже если все доверенные).
Просто из-за размера копию прода для восстановления полного окружения можно тащить слишком долго.
Если база 1-2 гб так вроде пофиг, а если 1-2 TB то вот тут начинается цирк.Кроме асинхронной репликаци на локальный тестовый сервер и в голову ничего не приходит.
А уже потом локально дампы с тестового сервера поднимать для тестов.Может у кого еще какие идеи есть?
ну зачем тебе полная копия? Банально рандомных 10% не хватит?Заодно и утечка будет ограничена этими 10.
> ну зачем тебе полная копия? Банально рандомных 10% не хватит?
> Заодно и утечка будет ограничена этими 10.для точного воспроизведения прода
ты не сможешь вытащить 10% и получить конситентный набор данных
Почему? У меня он будет вполне консистентным, просто урезанным. У прошлых dba было вообще без фантазии - раз в неделю делался снапшот базы, поднимался в виде нового инстанса, инстанс целиком в бэкап, бэкап на полку на случай ядерной войны, а из его базы удалялось рандомно примерно те самые 90%. (Посколько там, естественно, триггеры on delete, то достаточно было удалять из основных таблиц, все от них зависимое чистится автоматом.) Это недоразумение и использовалось в автотестах, до следующего снапшота.Никто, вроде, не жаловался.
> Почему? У меня он будет вполне консистентным, просто урезанным. У прошлых dba
> было вообще без фантазии - раз в неделю делался снапшот базы,
> поднимался в виде нового инстанса, инстанс целиком в бэкап, бэкап на
> полку на случай ядерной войны, а из его базы удалялось рандомно
> примерно те самые 90%. (Посколько там, естественно, триггеры on delete, то
> достаточно было удалять из основных таблиц, все от них зависимое чистится
> автоматом.) Это недоразумение и использовалось в автотестах, до следующего снапшота.
> Никто, вроде, не жаловался.каким образом решается какие строки из таблицы должны попасть в тестовый набор?
как насчет таблиц локализации (просто пример), если какую-то часть из строк не скопировать UI не поднимется
в реальной базе все намного сложнее и фиксить несуществующие проблемы из-за некорректного набора данных - мартышкиин труд
> каким образом решается какие строки из таблицы должны попасть в тестовый набор?Да хоть просто delete from table where rowid % 10 <> 0
Если нет никаких оснований предполагать, что каждая десятая строчка какая-то волшебная. У нас нет, все одинаковые. Опять же это довольно легко проверить (если всплывет особое колдунство - кто-то получит кнута).> как насчет таблиц локализации (просто пример), если какую-то часть из строк не скопировать UI
> не подниметсяпонимется, просто только на арабском. Ну добавишь себе в методичку - эту таблицу не трогать. Чего ты вообще в нее полез?
В реальной базе все, наоборот, гораздо проще - есть две-три таблицы внутри инстанса, которые являются "главными". И которые, вместе со своими связанными таблицами, содержат 99.9% данных - на фоне десятка гигабайт имен-фамилий-телефонов клиентов, конечно же, очень нам нужна твоя таблица локализации.
Если что - эти данные из нее еще и удаляются иногда, вполне себе штатным порядком - мы не пейсбук, мы реально удаляем, если клиент расторг договор.
>[оверквотинг удален]
>> не поднимется
> понимется, просто только на арабском. Ну добавишь себе в методичку - эту
> таблицу не трогать. Чего ты вообще в нее полез?
> В реальной базе все, наоборот, гораздо проще - есть две-три таблицы внутри
> инстанса, которые являются "главными". И которые, вместе со своими связанными таблицами,
> содержат 99.9% данных - на фоне десятка гигабайт имен-фамилий-телефонов клиентов, конечно
> же, очень нам нужна твоя таблица локализации.
> Если что - эти данные из нее еще и удаляются иногда, вполне
> себе штатным порядком - мы не пейсбук, мы реально удаляем, если
> клиент расторг договор.то что это работает для какой-то конкретной базы, вовсе не означает, что это рабочее универсальное решение,
в общем я в корне не согласен ))
это работает для любой реляционной базы, если, конечно, ее используют по назначению, и приведя хоть приблизительно к нормальной форме.Опишите задачу, где нельзя выделить основную таблицу и удалить из нее рандомно (хотя бы даже и по сложному критерию) - и которая при этом все еще реляционная БД.
У любителей nosql, вероятно, впрямь масса сложностей. Так им и надо!
> ты не сможешь вытащить 10% и получить конситентный набор данныху вас там точно реляционная БД в третьей НФ ?
> написан на растеЗдрасьте и тут раст, а говорили, что никто и ничего не пишет на расте, ну разве что Hello World'ы.
Так это анонимайзер Hello World.
Врали, все пишут. Говорили что никто еще не дописал ничего круче хеловрота - ну так да, это таки он и есть.
Я как будто рекламу прочитал...
Да не, быть такого не может.
А, это эти> curl -sSfL https://git.io/pg_datanymizer | sh -s
весну чуют
Опять мамкины смузихлёбы нахлебались смузи и давай писать на хрусте анонимайзеры и линтеры для своих hello world проектов
Походу когда нормальную работу не доверяют, появляются такие пэт-прожэкты. Перед пацанами не стыдно?
Видимо не стыдно. Они не побоялись добавить эти же статьи на православный лор:
https://www.linux.org.ru/news/opensource/16130747
https://www.linux.org.ru/news/opensource/16152251Куда катится мир...
Странно что для запуска еще не надо systemd.
Чем бы дитя не тешилось, лишь бы запросы в БД не писало.
// ниВ принципе оба проекта одинаковой полезности - выкрасить и выбросить.