All streams
Search
Write a publication
Pull to refresh
Sergey Derevyago @dersoverflowread⁠-⁠only

User

Send message

в нем будут секреты: логин или пароль от базы данных, ключи для S3-бакета и так далее. Эти секреты желательно спрятать.

а где вы храните секреты от Vault?

Мы в команде используем HashiCorp 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

Функцию Secure Vault преподносили как зашифрованное хранилище для важных файлов. На самом деле это был интерфейс для отправки файлов в контролируемое ФБР облако

все уже знают любимый вопрос про Vault ;)
но сегодня вопрос еще проще: Связан ли Hashicorp Vault с Моссад?

избыточное обнуление заставляло Go закреплять больше виртуальных страниц за физической RAM

смиялсо.
мой OffPool использует MemAlloc:

func MemAlloc(n uintptr) unsafe.Pointer {
	return rt_mallocgc(n, nil, false)
}

//go:linkname rt_mallocgc runtime.mallocgc
func rt_mallocgc(size uintptr, typ unsafe.Pointer, needzero bool) unsafe.Pointer

поднимите руки те, кто понял почему там FALSE needzero ;)
https://ders.by/go/blobmap/blobmap.html

что вам понравилось, что нет, что нужно улучшить

например, возможно получить все преимущества off-heap кэшей прямо на heap:

  • Используйте Go, как привыкли. Не надо с него убегать!

  • Только прячьте от мусорщика БОЛЬШИЕ структуры данных! В mdb.BlobMap, когда подходит.

  • Не подходит -- пишите в mdb.OffPool! Можно в несколько, если удобно.

Вся прогрессивная общественность давным-давно утилизирует off-heap для тех же целей, но мне достаточно обычного массива! Syscall не нужен, родной.

Как вы будете избегать нагрузки на GC при хранении объектов в куче?

с точки зрения мусорщика, OffPool -- это data []uint64. Ни единого указателя! Такой массив он просто перепрыгивает и машет дальше...

все хорошие политики так или иначе требуют использование связных списков => это приводит к вынужденному хранению указателей => увеличивается нагрузка на GC

указатели не нужны! OffPool работает со смещениями.

https://ders.by/go/blobmap/blobmap.html

Он работает параллельно с приложением, не останавливая всю программу целиком во время очистки

враньё!

читайте лучше что-то серьезное. например:

Perhaps you are now seeing the beginning of a New Era of the Hybrid Go services:

  1. Develop your services as before. No need to change anything (almost).

  2. 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/

вроде этого еще не было:

// 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))
}

отличный способ развеять скуку ;))

да, по сути все правильно.

к тому же, есть исходники, примеры и статья... за 5 минут становится все ясно.

ЗЗЫ есть даже на Go https://habr.com/ru/posts/939726/

простые проблемы обязаны иметь простые решения. точка.

как показала Практика, пользователям вполне достаточно обычного bat файла. например, вот так собирается DebRel:

@set CC=g++
@set FLAGS=-static -std=c++14 -Ofast -DNDEBUG -pedantic -Wall
@set DERSLIB=..\derslib
@set INC=-I%DERSLIB%\inc
%CC% %FLAGS% %INC% *.cpp %DERSLIB%\src\unity\build.cpp %DERSLIB%\src\posix\unity\build.cpp -o debrel 1>1.build 2>2.build

да, можно спорить, что разработчикам (не пользователям) необходима сложная утилита "с полным отслеживанием" зависимостей... вот только в них ОБЯЗАТЕЛЬНО есть проблемы! как знают дедушки, видишь ДИЧЬ - сделай полный ребилд! ага, тем самым батником быстрее будет.

ЗЫ никто ж не спорит, что распределенная система сборки БОЛЬШОГО проекта - must have! т.к. зачем ждать шесть часов, если можно на десять минут. вот только малые и средние проекты... не надо тянуть бегемотов, чья сложность больше, чем у задачи ;)

ЗЗЫ https://habr.com/ru/posts/924552/

Я переписал часть кода на другом языке

вот про это я и писал: Взрослые в ужасе убегают...

но уже есть решение https://habr.com/ru/posts/939726/

у «плоской» реализации есть свои плюсы. Самое весомое – скорость сканирования и итерации. Элементы хранятся рядом в памяти, так что при последовательном обходе CPU кэширует данные очень эффективно

то же самое у моего 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++ ?

один вопрос: нравятся новые мапы в Go?

один ответ: нет, не нравятся!

т.к. сделанная на коленке 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. точнее, его отсутствие.

  1. сотни раз разницы в 2008 году: https://ders.by/cpp/mtprog/mtprog.html#3.1.1

  2. 5-8 раз сегодня: https://ders.by/cpp/norefs/norefs.html#4.2

ЗЫ я использую text и strsz. закрывает все типичные проблемы: https://ders.by/cpp/deque/code.zip

снова наша любимая Тема))

Но для того, чтобы получить доступ к ним, вы должны сначала… получить другой секрет. То есть, чтобы прочитать пароль от базы, вам нужно аутентифицироваться в Vault, а для этого — иметь какой-то токен или ключ.

great success!
предыдущая встреча была не зря: https://habr.com/ru/companies/flant/articles/911450/comments/#comment_28379464

продолжим...

Например, хотите получать секреты в env — пишете аннотацию с путём к секрету в хранилище.

запретите секреты в env! сами знаете почему.

Доставка происходит только на этапе запуска пода. Никакой передачи секретов в CI/CD, никакого постоянного хранения. Только когда приложение запускается — в этот момент хранилище проверяет запрос и отдаёт актуальный секрет.

а ВОТ ТУТ-то собака порылась!
как именно "хранилище проверяет запрос"?? нужен точный содержательный ответ.

ЗЫ если так может хранилище, то и Сервис БД справится ;) с тем же уровнем безопасности, т.е. с ее отсутствием...

  • Хотя assert() и удивительно полезен, но там все сделано через C препроцессор.

  • А препроцессор в руках идиота -- Трагедия!

Так вот. Все новомодные языки прекрасно знают, с кем имеют дело. И препроцессор велено не пущать... https://ders.by/arch/debrel/debrel.html

1
23 ...

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Architect