Функцию Secure Vault преподносили как зашифрованное хранилище для важных файлов. На самом деле это был интерфейс для отправки файлов в контролируемое ФБР облако
все уже знают любимый вопрос про Vault ;) но сегодня вопрос еще проще: Связан ли Hashicorp Vault с Моссад?
например, возможно получить все преимущества off-heap кэшей прямо на heap:
Используйте Go, как привыкли. Не надо с него убегать!
Только прячьте от мусорщика БОЛЬШИЕ структуры данных! В mdb.BlobMap, когда подходит.
Не подходит -- пишите в mdb.OffPool! Можно в несколько, если удобно.
Вся прогрессивная общественность давным-давно утилизирует off-heap для тех же целей, но мне достаточно обычного массива! Syscall не нужен, родной.
Как вы будете избегать нагрузки на GC при хранении объектов в куче?
с точки зрения мусорщика, OffPool -- это data []uint64. Ни единого указателя! Такой массив он просто перепрыгивает и машет дальше...
все хорошие политики так или иначе требуют использование связных списков => это приводит к вынужденному хранению указателей => увеличивается нагрузка на GC
указатели не нужны! OffPool работает со смещениями.
Он работает параллельно с приложением, не останавливая всю программу целиком во время очистки
враньё!
читайте лучше что-то серьезное. например:
Perhaps you are now seeing the beginning of a New Era of the Hybrid Go services:
Develop your services as before. No need to change anything (almost).
But use BlobMap to store HUGE data structures!
You end up with the best of both worlds: automatic garbage collection for almost the entire service plus efficient manual memory management for huge structures (if any).
// ByteSliceToString is used when you really want to convert a slice
// of bytes to a string without incurring overhead. It is only safe
// to use if you really know the byte slice is not going to change
// in the lifetime of the string
func ByteSliceToString(bs []byte) string {
// This is copied from runtime. It relies on the string
// header being a prefix of the slice header!
return *(*string)(unsafe.Pointer(&bs))
}
да, можно спорить, что разработчикам (не пользователям) необходима сложная утилита "с полным отслеживанием" зависимостей... вот только в них ОБЯЗАТЕЛЬНО есть проблемы! как знают дедушки, видишь ДИЧЬ - сделай полный ребилд! ага, тем самым батником быстрее будет.
ЗЫ никто ж не спорит, что распределенная система сборки БОЛЬШОГО проекта - must have! т.к. зачем ждать шесть часов, если можно на десять минут. вот только малые и средние проекты... не надо тянуть бегемотов, чья сложность больше, чем у задачи ;)
у «плоской» реализации есть свои плюсы. Самое весомое – скорость сканирования и итерации. Элементы хранятся рядом в памяти, так что при последовательном обходе CPU кэширует данные очень эффективно
то же самое у моего ders::off_pool -- распределитель памяти, возвращающий смещения вместо указателей.
есть свои проблемы. Самая большая – неустойчивость итераторов. Любая вставка или удаление способна инвалидировать все итераторы и ссылки на элементы, потому что вектор может перенести всю память
смещения не инвалидируются! когда структуры данных в off_pool реализованы с помощью смещений, то нет никаких проблем.
Но для того, чтобы получить доступ к ним, вы должны сначала… получить другой секрет. То есть, чтобы прочитать пароль от базы, вам нужно аутентифицироваться в Vault, а для этого — иметь какой-то токен или ключ.
Например, хотите получать секреты в env — пишете аннотацию с путём к секрету в хранилище.
запретите секреты в env! сами знаете почему.
Доставка происходит только на этапе запуска пода. Никакой передачи секретов в CI/CD, никакого постоянного хранения. Только когда приложение запускается — в этот момент хранилище проверяет запрос и отдаёт актуальный секрет.
а ВОТ ТУТ-то собака порылась! как именно "хранилище проверяет запрос"?? нужен точный содержательный ответ.
ЗЫ если так может хранилище, то и Сервис БД справится ;) с тем же уровнем безопасности, т.е. с ее отсутствием...
а где вы храните секреты от Vault?
молодцы! моссад спасибо скажет
Страуструп будет?
плюсы - это Скорость! в умелых руках.
а вообще, только с годами начинаешь понимать, что единственный ГЕНИАЛЬНЫЙ язык для РЕАЛЬНОГО применения - чистый С. точка.
Страуструп начал "С с классами". жаль, что не остановили...
ну а если к баранам, то нужен "чуть более С". но без дури.
к счастью, можно отбросить ссылки https://ders.by/cpp/norefs/norefs.html но это все-таки компромисс ;(
ну я, например.
использование mem_pool в 2008 году обеспечивало ускорение в десятки и СОТНИ раз: https://ders.by/cpp/mtprog/mtprog.html#3.1.1
а сейчас еще есть и off_pool: 32-битные смещения вместо указателей обеспечивают адресацию 64 гигабайт: https://ders.by/cpp/deque/deque.html#7
все уже знают любимый вопрос про Vault ;)
но сегодня вопрос еще проще: Связан ли Hashicorp Vault с Моссад?
смиялсо.
мой OffPool использует MemAlloc:
поднимите руки те, кто понял почему там FALSE needzero ;)
https://ders.by/go/blobmap/blobmap.html
например, возможно получить все преимущества off-heap кэшей прямо на heap:
Используйте Go, как привыкли. Не надо с него убегать!
Только прячьте от мусорщика БОЛЬШИЕ структуры данных! В
mdb.BlobMap
, когда подходит.Не подходит -- пишите в
mdb.OffPool
! Можно в несколько, если удобно.Вся прогрессивная общественность давным-давно утилизирует off-heap для тех же целей, но мне достаточно обычного массива! Syscall не нужен, родной.
с точки зрения мусорщика,
OffPool
-- этоdata []uint64
. Ни единого указателя! Такой массив он просто перепрыгивает и машет дальше...указатели не нужны!
OffPool
работает со смещениями.https://ders.by/go/blobmap/blobmap.html
враньё!
читайте лучше что-то серьезное. например:
Perhaps you are now seeing the beginning of a New Era of the Hybrid Go services:
Develop your services as before. No need to change anything (almost).
But use BlobMap to store HUGE data structures!
You end up with the best of both worlds: automatic garbage collection for almost the entire service plus efficient manual memory management for huge structures (if any).
https://www.linkedin.com/pulse/my-solution-unsolvable-problem-sergey-derevyago-ittzf/
вроде этого еще не было:
отличный способ развеять скуку ;))
да, по сути все правильно.
к тому же, есть исходники, примеры и статья... за 5 минут становится все ясно.
ЗЗЫ есть даже на Go https://habr.com/ru/posts/939726/
простые проблемы обязаны иметь простые решения. точка.
как показала Практика, пользователям вполне достаточно обычного bat файла. например, вот так собирается DebRel:
да, можно спорить, что разработчикам (не пользователям) необходима сложная утилита "с полным отслеживанием" зависимостей... вот только в них ОБЯЗАТЕЛЬНО есть проблемы! как знают дедушки, видишь ДИЧЬ - сделай полный ребилд! ага, тем самым батником быстрее будет.
ЗЫ никто ж не спорит, что распределенная система сборки БОЛЬШОГО проекта - must have! т.к. зачем ждать шесть часов, если можно на десять минут. вот только малые и средние проекты... не надо тянуть бегемотов, чья сложность больше, чем у задачи ;)
ЗЗЫ https://habr.com/ru/posts/924552/
вот про это я и писал: Взрослые в ужасе убегают...
но уже есть решение https://habr.com/ru/posts/939726/
то же самое у моего
ders::off_pool
-- распределитель памяти, возвращающий смещения вместо указателей.смещения не инвалидируются!
когда структуры данных в
off_pool
реализованы с помощью смещений, то нет никаких проблем.https://ders.by/cpp/memdb/memdb.html#4
for i := 0; i < um.Size(); i++ {
fmt.Println(um.Key(i), *um.Val(i))
}
поговорите pls хоть с каким-нибудь программистом, перед тем как писать вопросы.
спасибо.
а чем вам не угодил
for i := 0; i < um.Size(); i++
?один ответ: нет, не нравятся!
т.к. сделанная на коленке UintMap сразу гораздо лучше https://ders.by/go/hashmap/hashmap.html#2
Без резервирования памяти (конфигурация
R0
),map[uint64]uint64
работает в1.93
раза медленнееUintMap
! И производит в5.64
раза больше мусора!!А с полным резервированием (
R1
), в1.72
раза медленнее! И аж в16.5
раз больше мусора!!!гитхаб (и прочие) может МГНОВЕННО стать недоступным
для абсолютного большинства читателей.
на самом деле Главная Проблема - систематическое использование thread-local allocator. точнее, его отсутствие.
сотни раз разницы в 2008 году: https://ders.by/cpp/mtprog/mtprog.html#3.1.1
5-8 раз сегодня: https://ders.by/cpp/norefs/norefs.html#4.2
ЗЫ я использую text и strsz. закрывает все типичные проблемы: https://ders.by/cpp/deque/code.zip
снова наша любимая Тема))
great success!
предыдущая встреча была не зря: https://habr.com/ru/companies/flant/articles/911450/comments/#comment_28379464
продолжим...
запретите секреты в env! сами знаете почему.
а ВОТ ТУТ-то собака порылась!
как именно "хранилище проверяет запрос"?? нужен точный содержательный ответ.
ЗЫ если так может хранилище, то и Сервис БД справится ;) с тем же уровнем безопасности, т.е. с ее отсутствием...
Хотя
assert()
и удивительно полезен, но там все сделано через C препроцессор.А препроцессор в руках идиота -- Трагедия!
Так вот. Все новомодные языки прекрасно знают, с кем имеют дело. И препроцессор велено не пущать... https://ders.by/arch/debrel/debrel.html