#common #math
Наткнулся на статью про то, как быстро и корректно складывать числа с плавающей запятой (ссылка будет в конце).
Общая проблема в том, что из-за того, что дробные числа хранятся в примитивных типах не точно, может возникать некоторая потеря точности (сорян за тавтологию) при арифметических операциях. Например когда складываешь большое число с маленьким, маленькое вполне может никак не изменить ответ, т.к. оно с точки зрения хранения чисел "пренебрежимо мало" (ну или нужное число не может быть представлено дробным число) Вопрос в том, как наиболее точно сложить какое-то множество чисел.
Пусть у вас есть какой-то массив числе с плавающей запятой. Конечно мы можем сложить числа просто подряд:
Но тогда у вас в какой-то момент может получится огромное число и следующее добавление маленького легко потеряется из-за погрешности.
А можем отсортировать вектор чисел перед суммой! Тогда мы будем накапливать сумму и при добавлении следующего числа по возрастанию оно может быть сравнимо с текущей суммой (хотя конечно зависит от данных, т.к. если все ваши числа это 1 + x_i, где x_i -- последовательность очень маленьких возрастающих чисел, то в какой-то момент большая сумма скушает этот 1 + eps).
Можно сделать лучше. Например закинуть все числа в кучу и попарно складывать два самых маленьких числа, возвращая результат обратно. Это может работать лучше, т.к. теперь мы ни в какой момент не будем складывать сумму большого количества элементов с одним небольшим.
Дальше развивать не буду. Прочитаете в статье: оригинал и перевод.
Кстати когда-то у студентов на пару лет младше в унике видел фановый контест в рамках одной из дисциплин, где нужно было найти сумму чисел наиболее точно (авторское решение, естественно, на длинке python). Первое место забрал чувак с суммой Кэхена.
Ну и мем из молодости: плавающая запятая.
Наткнулся на статью про то, как быстро и корректно складывать числа с плавающей запятой (ссылка будет в конце).
Общая проблема в том, что из-за того, что дробные числа хранятся в примитивных типах не точно, может возникать некоторая потеря точности (сорян за тавтологию) при арифметических операциях. Например когда складываешь большое число с маленьким, маленькое вполне может никак не изменить ответ, т.к. оно с точки зрения хранения чисел "пренебрежимо мало" (ну или нужное число не может быть представлено дробным число) Вопрос в том, как наиболее точно сложить какое-то множество чисел.
Пусть у вас есть какой-то массив числе с плавающей запятой. Конечно мы можем сложить числа просто подряд:
std::vector<float> v = Get();
float ans = 0.0;
for (int i = 0; i < v.size(); ++i) {
ans += v[i];
}
Но тогда у вас в какой-то момент может получится огромное число и следующее добавление маленького легко потеряется из-за погрешности.
А можем отсортировать вектор чисел перед суммой! Тогда мы будем накапливать сумму и при добавлении следующего числа по возрастанию оно может быть сравнимо с текущей суммой (хотя конечно зависит от данных, т.к. если все ваши числа это 1 + x_i, где x_i -- последовательность очень маленьких возрастающих чисел, то в какой-то момент большая сумма скушает этот 1 + eps).
Можно сделать лучше. Например закинуть все числа в кучу и попарно складывать два самых маленьких числа, возвращая результат обратно. Это может работать лучше, т.к. теперь мы ни в какой момент не будем складывать сумму большого количества элементов с одним небольшим.
Дальше развивать не буду. Прочитаете в статье: оригинал и перевод.
Кстати когда-то у студентов на пару лет младше в унике видел фановый контест в рамках одной из дисциплин, где нужно было найти сумму чисел наиболее точно (авторское решение, естественно, на длинке python). Первое место забрал чувак с суммой Кэхена.
Ну и мем из молодости: плавающая запятая.
❤23👍4
#highload #cpp #common
1. В конце мая был довольно громкий инцидент у Google Cloud, который сильно зааффектил клиента в Австралии. Если не читали пост-мортем, то вот он: Sharing details on a recent incident impacting one of our customers.
2. New C++ features in GCC 14.
3. Саша написал постики про throwing values: первый и второй (почитайте комменты ещё).
4. Тут вы можете найти список строк, которые могут деструктивно повлиять на ваш продукт. Тут и всякие инъекции, и более семантически сложные строки.
1. В конце мая был довольно громкий инцидент у Google Cloud, который сильно зааффектил клиента в Австралии. Если не читали пост-мортем, то вот он: Sharing details on a recent incident impacting one of our customers.
2. New C++ features in GCC 14.
3. Саша написал постики про throwing values: первый и второй (почитайте комменты ещё).
4. Тут вы можете найти список строк, которые могут деструктивно повлиять на ваш продукт. Тут и всякие инъекции, и более семантически сложные строки.
#common
Если я переписываю какие-то посты, то я расту.
По крайней мере я в это верю.
Снова про пагинацию : )
https://telegra.ph/Paginaciya-07-05
Если я переписываю какие-то посты, то я расту.
По крайней мере я в это верю.
Снова про пагинацию : )
https://telegra.ph/Paginaciya-07-05
Telegraph
Пагинация
У меня уже было пару постов про пагинацию, но хочется свести это всё в один + докинуть какой-то интересной инфы.
👍18❤3
#cpp
1. Небольшой доклад про нахождение медианы с CppCon 2023.
2. TDD CANNOT work.
Какой-то околоформальный наброс, но и ладно : )
3. У Жени вышел очередной (и очень интересный) пост про жостиков C++.
4. Небольшой факт про макросы (в целом писал про них тут).
Если макросы у вас сложные, как этот:
вы можете захотеть использовать designated initialization. Проблема тут в том, что когда аргументов больше одного, вам нужно перечислять их через запятую. И это не работает!
Компилятор считает, что эта запятая -- разделитель аргументов макроса. Т.е. вы передаёте 4 аргумента:
Что не выглядит как ожидаемый результат.
Такая же проблема в случае, когда вы хотите шаблоны юзать:
Запятая не считывается как разделитель аргументов макроса только внутри круглых скобок.
Вы всегда можете поправить : )
1. Небольшой доклад про нахождение медианы с CppCon 2023.
2. TDD CANNOT work.
Какой-то околоформальный наброс, но и ладно : )
3. У Жени вышел очередной (и очень интересный) пост про жостиков C++.
4. Небольшой факт про макросы (в целом писал про них тут).
Если макросы у вас сложные, как этот:
MACROS_NAME(name, name,
[]() {
Type obj {.x = 2, .y = 3};
return x;
}()
);
вы можете захотеть использовать designated initialization. Проблема тут в том, что когда аргументов больше одного, вам нужно перечислять их через запятую. И это не работает!
Компилятор считает, что эта запятая -- разделитель аргументов макроса. Т.е. вы передаёте 4 аргумента:
name
name
[]() { Type obj {.x = 2
.y = 3}; return x; }()
Что не выглядит как ожидаемый результат.
Такая же проблема в случае, когда вы хотите шаблоны юзать:
MACROS(std::map<int, int>);
Запятая не считывается как разделитель аргументов макроса только внутри круглых скобок.
Вы всегда можете поправить : )
❤5 3👍2
Приходите на C++ Zero Cost Conf 27 июля!
Конференция одновременно пройдёт в Москве, Ереване и онлайн. А ещё будет крутой нетворкинг и афтерпати.
Мне лично хочется послушать следующие доклады:
- Антон Полухин про новости C++26 и C++29
- Василий Куликов про реализацию мьютекса в userver
- Сергей Слотин про устройство памяти и кешей и производительность
- Данила Демидов про отказ от динамического распределения памяти
- Александр Боргардт про завоз кастомного аллокатора в Otterbrix
- Алексей Веселовский про компоновщик и санитайзеры
- Павел Новиков про сериализацию JSON (видимо в продолжение доклада на C++ Russia)
- Андрей Аксёнов про парсинг большого количества данных
- Константин Владимиров про llvm-snippy.
И конечно вы можете найти мой рассказ про NRVO : )
Зарегистрироваться можно по ссылке.
До встречи на C++ Zero Cost Conf! ☀️
Конференция одновременно пройдёт в Москве, Ереване и онлайн. А ещё будет крутой нетворкинг и афтерпати.
Мне лично хочется послушать следующие доклады:
- Антон Полухин про новости C++26 и C++29
- Василий Куликов про реализацию мьютекса в userver
- Сергей Слотин про устройство памяти и кешей и производительность
- Данила Демидов про отказ от динамического распределения памяти
- Александр Боргардт про завоз кастомного аллокатора в Otterbrix
- Алексей Веселовский про компоновщик и санитайзеры
- Павел Новиков про сериализацию JSON (видимо в продолжение доклада на C++ Russia)
- Андрей Аксёнов про парсинг большого количества данных
- Константин Владимиров про llvm-snippy.
И конечно вы можете найти мой рассказ про NRVO : )
Зарегистрироваться можно по ссылке.
До встречи на C++ Zero Cost Conf! ☀️
👍27🎉10❤5🔥5
#cpp
Доклад про NRVO можно посмотреть тут.
Хочется сказать большое спасибо Илье (@imhired), Жене (@cxx95) и Лёше (@aleexf) за огромную помощь с докладом. Всё-таки есть что-то в силе слабых связей (ну или сильных).
Отсмотрю все доклады и на днях выложу постик про то, что зашло. А пока посмотрите мой пару раз : )
Доклад про NRVO можно посмотреть тут.
Хочется сказать большое спасибо Илье (@imhired), Жене (@cxx95) и Лёше (@aleexf) за огромную помощь с докладом. Всё-таки есть что-то в силе слабых связей (ну или сильных).
Отсмотрю все доклады и на днях выложу постик про то, что зашло. А пока посмотрите мой пару раз : )
👍36❤17🔥2👏1
#cpp
А теперь собсна зашедшие доклады с C++ Zero Cost Conf 2024:
- Реализация мьютекса в userver от Василия Куликова
- Новости РГ21 C++ от Антона Полухина
- Проблемы и решения в крупных C++-проектах на примере генератора llvm-snippy от Константина Владимирова
- Arena allocator с помощью std::pmr::memory_resource на примере документов из Otterbrix от Александра Боргардта
- ну и мой про NRVO.
А теперь собсна зашедшие доклады с C++ Zero Cost Conf 2024:
- Реализация мьютекса в userver от Василия Куликова
- Новости РГ21 C++ от Антона Полухина
- Проблемы и решения в крупных C++-проектах на примере генератора llvm-snippy от Константина Владимирова
- Arena allocator с помощью std::pmr::memory_resource на примере документов из Otterbrix от Александра Боргардта
- ну и мой про NRVO.
🔥26👍7❤6
#highload #common
1. Mastering Caching in Distributed Applications.
2. Не в техническую тему, но почему-то зацепило: Visual Thinking & Sketching.
3. Feature flags are ruining your codebase.
Знали бы вы, какая жиза.....
В статье ещё упоминается такой интересный инцидент.
4. Мы конечно много таких постов уже видели, но если очередной хорош, то почему нет: Advice to the young.
1. Mastering Caching in Distributed Applications.
2. Не в техническую тему, но почему-то зацепило: Visual Thinking & Sketching.
3. Feature flags are ruining your codebase.
Знали бы вы, какая жиза.....
В статье ещё упоминается такой интересный инцидент.
4. Мы конечно много таких постов уже видели, но если очередной хорош, то почему нет: Advice to the young.
👍4 3❤1 1
#common
В последний год я стал сильно чаще посещать всякие конфы и локальные митапы. И пока останавливаться не хочется. Движут мной следующие моменты:
🥳 Хочется посмотреть доклады раньше, чем их выложат в открытый доступ (если вообще выложат).
Во-первых, понятная образовательная сторона. И можно конечно сказать, что можно в онлайне посмотреть, но это как-то не то. Когда смотришь доклад дома в уютной обстановке, очень легко от этого дело отключиться и уйти в свои мысли. Очень легко забить и пойти заниматься чем-то другим. В офлайне же ты максимально сосредоточен на происходящем, внимательнее слушаешь и пытаешься вникнуть. Можно вопрос докладчику задать. Это сильнее качает. На паузу не поставишь, отмотать не получится. Потому надо слушать.
Во-вторых, вы мои любимые. Мне гораздо удобнее прослушать тучу докладов в плотном режиме за день-два в локации конференции, чем пытаться сделать то же самое за то же время в обычной обстановке. Зачем так делать? Ну просто потому что как только доклады выкладывают, я могу насобирать ссылки на уже просмотренный контент и закинуть пост. Без огромного лага. Я еду на конференцию. Вы получаете самые вкусные (по моему объективнейшему мнению) доклады сразу, как только это возможно.
🥳 Люди.
Я очень долго до посещений в офлайне смотрел конференции на ютубах. Какие-то необычные чувства увидеть людей из компуктера вживую. Пообщаться с ним. Примерно так же, когда несколько лет смотришь Разгоны от Stand Up Club #1, а потом приезжаешь в Москве на очное выступление чуваков.
В целом возможность общаться в условиях, когда вы по дефолту имеете точки соприкосновения, очень хороша. Вот я точно знаю, что этот человек почти наверняка пишет на C++: пойду обсужу с ним какие-то моменты. Или я точно знаю, что у этих ребята точно такие же технические проблемы, потому что мы решаем похожие задачи: пойду поделюсь опытом. Даже пару раз наталкивали на интересные мысли, которые потом удалось применить.
И ещё очень круто, когда на таких мероприятиях встречаются падписчеки. Мне даже закидывали довольно ценный фидбек.
Конечно всегда есть возможность сходить на мероприятия для нетворка, но есть смутные ощущения, что туда приходят люди в рамках найти хоть кого-нибудь, чтобы решить какую-то проблему. На профильных конференциях такого не встречается.
Третьего пункта не будет, потому что первых двух достаточно☺️
И ещё я иногда удивляюсь форматам мероприятий, которые в рамках конференций бывают. Потому очень часто это довольно серьёзные мероприятия, где ты бегаешь от зала к залу, по пути пытаяясь перехватить что-то поесть и с кем-то парой слов перекинуться.
Вот коллеги делают YACAMP, который пройдёт буквально на днях (10ого августа). В программе и технические доклады, и менеджерские, и какие-то неожиданные форматы вроде плохих шуток, и обучающие кусочки. И тематика какая-то не оч стандартная для подобных мероприятий. И видос прикольный сняли.
Правда, регистрация у ребят уже закрыта. Надо было вам раньше такие приколы показать.
В последний год я стал сильно чаще посещать всякие конфы и локальные митапы. И пока останавливаться не хочется. Движут мной следующие моменты:
Во-первых, понятная образовательная сторона. И можно конечно сказать, что можно в онлайне посмотреть, но это как-то не то. Когда смотришь доклад дома в уютной обстановке, очень легко от этого дело отключиться и уйти в свои мысли. Очень легко забить и пойти заниматься чем-то другим. В офлайне же ты максимально сосредоточен на происходящем, внимательнее слушаешь и пытаешься вникнуть. Можно вопрос докладчику задать. Это сильнее качает. На паузу не поставишь, отмотать не получится. Потому надо слушать.
Во-вторых, вы мои любимые. Мне гораздо удобнее прослушать тучу докладов в плотном режиме за день-два в локации конференции, чем пытаться сделать то же самое за то же время в обычной обстановке. Зачем так делать? Ну просто потому что как только доклады выкладывают, я могу насобирать ссылки на уже просмотренный контент и закинуть пост. Без огромного лага. Я еду на конференцию. Вы получаете самые вкусные (по моему объективнейшему мнению) доклады сразу, как только это возможно.
Я очень долго до посещений в офлайне смотрел конференции на ютубах. Какие-то необычные чувства увидеть людей из компуктера вживую. Пообщаться с ним. Примерно так же, когда несколько лет смотришь Разгоны от Stand Up Club #1, а потом приезжаешь в Москве на очное выступление чуваков.
В целом возможность общаться в условиях, когда вы по дефолту имеете точки соприкосновения, очень хороша. Вот я точно знаю, что этот человек почти наверняка пишет на C++: пойду обсужу с ним какие-то моменты. Или я точно знаю, что у этих ребята точно такие же технические проблемы, потому что мы решаем похожие задачи: пойду поделюсь опытом. Даже пару раз наталкивали на интересные мысли, которые потом удалось применить.
И ещё очень круто, когда на таких мероприятиях встречаются падписчеки. Мне даже закидывали довольно ценный фидбек.
Конечно всегда есть возможность сходить на мероприятия для нетворка, но есть смутные ощущения, что туда приходят люди в рамках найти хоть кого-нибудь, чтобы решить какую-то проблему. На профильных конференциях такого не встречается.
Третьего пункта не будет, потому что первых двух достаточно
И ещё я иногда удивляюсь форматам мероприятий, которые в рамках конференций бывают. Потому очень часто это довольно серьёзные мероприятия, где ты бегаешь от зала к залу, по пути пытаяясь перехватить что-то поесть и с кем-то парой слов перекинуться.
Вот коллеги делают YACAMP, который пройдёт буквально на днях (10ого августа). В программе и технические доклады, и менеджерские, и какие-то неожиданные форматы вроде плохих шуток, и обучающие кусочки. И тематика какая-то не оч стандартная для подобных мероприятий. И видос прикольный сняли.
Правда, регистрация у ребят уже закрыта. Надо было вам раньше такие приколы показать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🤔1
#cpp #go
1. Enum Class Improvements.
2. The Painful Pitfalls of C++ STL Strings.
К контенту статьи относиться стоит критически (впрочем, как и всегда).
3. [видео] C++ Features You Might Not Know.
Местами кекал.
4. [⚠️ long видео] C++26 Preview.
5. Go 1.23 released.
6. Boost 1.86 released.
7. cppfront: Midsummer update.
Пост обнов какой-то получился.
И ещё я подумал, что у меня в последнее время нет никакой кроссылочности на свои старые посты, поэтому я не буду ждать с моря погоды и дам ссылку на рандомно выбранный пост из прошлого.
1. Enum Class Improvements.
2. The Painful Pitfalls of C++ STL Strings.
К контенту статьи относиться стоит критически (впрочем, как и всегда).
3. [видео] C++ Features You Might Not Know.
Местами кекал.
4. [⚠️ long видео] C++26 Preview.
5. Go 1.23 released.
6. Boost 1.86 released.
7. cppfront: Midsummer update.
Пост обнов какой-то получился.
И ещё я подумал, что у меня в последнее время нет никакой кроссылочности на свои старые посты, поэтому я не буду ждать с моря погоды и дам ссылку на рандомно выбранный пост из прошлого.
🔥5👍3❤2🐳1
#common
Нашёл ресёрч про исследование читаемости кода и выдрал главные выводы.
https://telegra.ph/Pro-chitaemost-koda-08-20
Рядом с такой темой упомяну пост про ревью.
Нашёл ресёрч про исследование читаемости кода и выдрал главные выводы.
https://telegra.ph/Pro-chitaemost-koda-08-20
Рядом с такой темой упомяну пост про ревью.
Telegraph
Про читаемость кода
Совсем недавно мы начали говорить про существующий code style и гайдлайны к написанию кода на C++. Как сделать хорошо -- а точнее лучше -- никто не знает и не понимает. Если ощущения и опыт коллег, набросы и пожелания от заинтересованных. В процессе набрели…
👍7🤔5❤4🤓2
#cpp #common
1. [lightning talk] Forbidden C++.
2. [long talk] New Algorithms in C++23.
3. [long talk] *(char*)0 = 0;
Потрясающий доклад.
4. Lessons learned in 35 years of making software.
Мне кажется, каждый такой пост полезен по-своему.
=========================
Знаете, как C++-программисты говорят, что вот в случае ub может произойти что угодно🤙 Вселенная может взорваться💣 Или пёс соседей умрёт🥳
Во-первых, почему все примеры такие фаталистичные? Может пусть ваш друг выиграет в лотерею или там все войны закончатся👍👍 Ну что-нибудь хорошее! Ни разу такого не слышал😥😥
Во-вторых, не много ли мы, C++-программисты, берём на себя? Вселенная взорвётся. Во придумали🤣🤣🤣
1. [lightning talk] Forbidden C++.
2. [long talk] New Algorithms in C++23.
3. [long talk] *(char*)0 = 0;
Потрясающий доклад.
4. Lessons learned in 35 years of making software.
Мне кажется, каждый такой пост полезен по-своему.
=========================
Знаете, как C++-программисты говорят, что вот в случае ub может произойти что угодно🤙 Вселенная может взорваться💣 Или пёс соседей умрёт
Во-первых, почему все примеры такие фаталистичные? Может пусть ваш друг выиграет в лотерею или там все войны закончатся👍👍 Ну что-нибудь хорошее! Ни разу такого не слышал😥😥
Во-вторых, не много ли мы, C++-программисты, берём на себя? Вселенная взорвётся. Во придумали🤣🤣🤣
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19😁6❤5🌚2🐳1
#common
Я давно этот пост хотел написать в рамках миллиона ненаписанных постов про поиск, но Тим меня подтолкнул, так что вот ссылочка на его канал (@loopynerd).
https://telegra.ph/Codesearch-09-08
Я давно этот пост хотел написать в рамках миллиона ненаписанных постов про поиск, но Тим меня подтолкнул, так что вот ссылочка на его канал (@loopynerd).
https://telegra.ph/Codesearch-09-08
Telegraph
Codesearch
Я думаю, примерно каждый из хоть раз искал по коду. А как это работает?
❤6🤔2👍1🔥1
#cpp #common #highload
0. Хотите угар? Если посмотрим на release notes Clang 19.0.0, то можно найти такое
: ))))))
1. [talk] Видео прошлогоднее, но может быть полезно узнать, чего godbolt.org умеет: What's New in Compiler Explorer?
2. [talk] The C++ rvalue lifetime disaster.
3. [article] Notes on Distributed Systems for Young Bloods.
4. [article] Unified Grid: How We Re-Architected Slack for Our Largest Customers.
5. [article] Creating a Git commit: The Hard Way.
Чувак рассказывает про то, как сделать коммит без
6. [article] Just use Postgres.
А тут перечислены альтернативы Postgres и почему вы не должны выбирать каждую из них, если начинаете новый проект.
7. [article] Things I Wished More Developers Knew About Databases.
=====================
А расскажите, кого вы ещё читаете? Какие-нибудь блоги чуваков/каналы про прогу, всё связанное и не только про неё?
0. Хотите угар? Если посмотрим на release notes Clang 19.0.0, то можно найти такое
C++17 support is now completed
: ))))))
1. [talk] Видео прошлогоднее, но может быть полезно узнать, чего godbolt.org умеет: What's New in Compiler Explorer?
2. [talk] The C++ rvalue lifetime disaster.
3. [article] Notes on Distributed Systems for Young Bloods.
4. [article] Unified Grid: How We Re-Architected Slack for Our Largest Customers.
5. [article] Creating a Git commit: The Hard Way.
Чувак рассказывает про то, как сделать коммит без
git commit. 6. [article] Just use Postgres.
А тут перечислены альтернативы Postgres и почему вы не должны выбирать каждую из них, если начинаете новый проект.
7. [article] Things I Wished More Developers Knew About Databases.
=====================
А расскажите, кого вы ещё читаете? Какие-нибудь блоги чуваков/каналы про прогу, всё связанное и не только про неё?
👍12❤6🔥2🤡2😁1
#common #higload
Рассказываю базу! Про полнотекстовый поиск в Postgres.
https://telegra.ph/Polnotekstovyj-poisk-v-PostgreSQL-09-14
Рассказываю базу! Про полнотекстовый поиск в Postgres.
https://telegra.ph/Polnotekstovyj-poisk-v-PostgreSQL-09-14
Telegraph
Полнотекстовый поиск в PostgreSQL
Когда в молодых продуктах нужен полнотекстовый поиск как часть функционала (поиск не основная фича), часто можно встретить решение на основе PostgreSQL. Давайте попробуем понять, что такого Postgres вообще умеет для этой задачи и как далеко вы сможете с ним…
❤13🤝2✍1👍1🗿1
#common #highload #cpp
0. [article] Засветившаяся обзорная статья от экспертов индустрии Andrew Pavlo & Michael Stonebraker про "виды" БД и отношение к ним.
1. [article] Honey, I shrunk {fmt}: bringing binary size to 14k and ditching the C++ runtime.
Виктор Зверович про то, как он уменьшал размер fmt.
2. [article] Object initialization and binary sizes.
И рядом заметка про влияние инициализации на размер исполняемого файла.
У этого чувака ещё несколько таких постов есть. Может, позже что-то донесу.
3. [article] Failure testing Kafka.
Про тестирование различных возможных сбоев в Кафке.
4. [article] TDD, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development.
Мы вот, оказывается, иногда PDD юзаем. А я даже и не догадывался.
0. [article] Засветившаяся обзорная статья от экспертов индустрии Andrew Pavlo & Michael Stonebraker про "виды" БД и отношение к ним.
1. [article] Honey, I shrunk {fmt}: bringing binary size to 14k and ditching the C++ runtime.
Виктор Зверович про то, как он уменьшал размер fmt.
2. [article] Object initialization and binary sizes.
И рядом заметка про влияние инициализации на размер исполняемого файла.
У этого чувака ещё несколько таких постов есть. Может, позже что-то донесу.
3. [article] Failure testing Kafka.
Про тестирование различных возможных сбоев в Кафке.
4. [article] TDD, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development.
Мы вот, оказывается, иногда PDD юзаем. А я даже и не догадывался.
👍12 8❤2
#common #cpp #highload
0. Женя намутил квиз по плюсам с иногда не самыми тривиальными вопросами. Перед чтением статей ниже можете пойти потыкаться минуток 20 в него☺️
1. [article] от Вадима Кравченко: 10x Engineers.
Это не прям про 10x engineers, а скорее про то, как быть адекватным и чётким прогером и коллегой. Почему бы лишний раз не вспомнить.
2. [article] и ещё один от него же: What I learned building a $1K MRR SaaS in 6 weeks.
Тут он рассказывает про то, как намутил небольшой инструмент для AI cross-linking, который он сделал на коленке и начал продавать. Статья выше -- рефлексия после достижения 1k$ MRR относительно решений, которые он принял по ходу разработки и промоутинга.
3. [article] Real-time mouse pointers at Canva.
Давно хотел что-нибудь про подобные фичи почитать, потому что в моей голове поддержка фичей в инструментах с коллаборацией всегда ведёт к сильно возросшей нагрузке. И интересно, как с этим борются без заливания железа бабками. Заодно узнал чуть больше про P2P, а то раньше в голове чисто понятие существовало.
0. Женя намутил квиз по плюсам с иногда не самыми тривиальными вопросами. Перед чтением статей ниже можете пойти потыкаться минуток 20 в него
1. [article] от Вадима Кравченко: 10x Engineers.
Это не прям про 10x engineers, а скорее про то, как быть адекватным и чётким прогером и коллегой. Почему бы лишний раз не вспомнить.
2. [article] и ещё один от него же: What I learned building a $1K MRR SaaS in 6 weeks.
Тут он рассказывает про то, как намутил небольшой инструмент для AI cross-linking, который он сделал на коленке и начал продавать. Статья выше -- рефлексия после достижения 1k$ MRR относительно решений, которые он принял по ходу разработки и промоутинга.
3. [article] Real-time mouse pointers at Canva.
Давно хотел что-нибудь про подобные фичи почитать, потому что в моей голове поддержка фичей в инструментах с коллаборацией всегда ведёт к сильно возросшей нагрузке. И интересно, как с этим борются без заливания железа бабками. Заодно узнал чуть больше про P2P, а то раньше в голове чисто понятие существовало.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤6
#highload #common
1. [article] Trillions of Indexes: How Uber’s LedgerStore Supports Such Massive Scale.
Статья в блоге ByteByteGo про LedgerStore Uber.
LedgerStore -- это кастомное хранилище Uber для работы с финансовыми данными (в основном транзакциями). В статье рассказывается
- как верхнеуровнево работают различные компоненты (индексы: strongly consistent indexes, eventually consistent indexes и time ranged indexes)
- детали общих инструментов над ними
- и как происходила миграция данных о транзакциях из DynamoDB на LedgerStore.
2. [article] How To Survive Your Project's First 100,000 Lines.
Автор рассказывает про уроки, вынесенные спустя 100k строк компилятора Vale.
Если кратко, то поинты такие:
- не стесняться херачить ассерты
- как можно больше полагаться на систему типов, а там где этого сделать нельзя, пофиксить и полагаться
- оставлять качественные комментарии
- избегать отсутствия детерменизма в коде
- а где не получается избежать, научиться с ним работать
- ТЕСТИТЬ
- и не забывать про скорость разработки.
Сходу выглядит так, что у чувака есть ещё пак интересных статей. Мб вернусь с ними попозже.
3. [article] Six Degrees of Kevin Bacon - Postgres Style.
Небольшая статья про студенческую игру 90х (видимо, где-то в USA), в которой надо было назвать цепочку от актёра Kevin Bacon до любого другого актёра в Hollywood.
Автор решает эту задачу с помощью открытой базы данных от IMDB с помощью:
- обычной рекурсивной CTE
- расширения Postgres под названием pgRouting, которое применяется для решения графовых задач.
Смысловой нагрузки особо нет. Просто лёгкая забавная статейка.
4. [post] Небольшой пост про то, как бы сократить uuid.
Комментов не будет. Просто фан.
==============================
Уже месяц не писал ничего кроме ссылочек с комментами. Для этого конечно есть причины.
Во-первых, я всё никак не могу подступиться к одному интересному для меня посту, но всё равно рано или поздно придётся это сделать. Довольно скоро.
Во-вторых, я впараллель работаю над несколькими интересными (для меня) штуками, которые, очень надеюсь, смогу показать вам чуть позже.
1. [article] Trillions of Indexes: How Uber’s LedgerStore Supports Such Massive Scale.
Статья в блоге ByteByteGo про LedgerStore Uber.
LedgerStore -- это кастомное хранилище Uber для работы с финансовыми данными (в основном транзакциями). В статье рассказывается
- как верхнеуровнево работают различные компоненты (индексы: strongly consistent indexes, eventually consistent indexes и time ranged indexes)
- детали общих инструментов над ними
- и как происходила миграция данных о транзакциях из DynamoDB на LedgerStore.
2. [article] How To Survive Your Project's First 100,000 Lines.
Автор рассказывает про уроки, вынесенные спустя 100k строк компилятора Vale.
Если кратко, то поинты такие:
- не стесняться херачить ассерты
- как можно больше полагаться на систему типов, а там где этого сделать нельзя, пофиксить и полагаться
- оставлять качественные комментарии
- избегать отсутствия детерменизма в коде
- а где не получается избежать, научиться с ним работать
- ТЕСТИТЬ
- и не забывать про скорость разработки.
Сходу выглядит так, что у чувака есть ещё пак интересных статей. Мб вернусь с ними попозже.
3. [article] Six Degrees of Kevin Bacon - Postgres Style.
Небольшая статья про студенческую игру 90х (видимо, где-то в USA), в которой надо было назвать цепочку от актёра Kevin Bacon до любого другого актёра в Hollywood.
Автор решает эту задачу с помощью открытой базы данных от IMDB с помощью:
- обычной рекурсивной CTE
- расширения Postgres под названием pgRouting, которое применяется для решения графовых задач.
Смысловой нагрузки особо нет. Просто лёгкая забавная статейка.
4. [post] Небольшой пост про то, как бы сократить uuid.
Комментов не будет. Просто фан.
==============================
Уже месяц не писал ничего кроме ссылочек с комментами. Для этого конечно есть причины.
Во-первых, я всё никак не могу подступиться к одному интересному для меня посту, но всё равно рано или поздно придётся это сделать. Довольно скоро.
Во-вторых, я впараллель работаю над несколькими интересными (для меня) штуками, которые, очень надеюсь, смогу показать вам чуть позже.
❤12🔥8👍3❤🔥1
#common
1. [article] Higher RAII, and the Seven Arcane Uses of Linear Types.
Всё тот же автор языка Vale (на испанском читаем как бале ) вводит новую концепцию Higher RAII. Тлдр такой:
- деструкторы в C++ это про вызов одного конкретного метода без параметров, что не всегда удобно.
- higher RAII в Vale позволяет делать сколько угодно таких методов с любыми параметрами и всё равно быть уверенным, что ничего не потеряется.
И в конце накинул примеров, когда это может быть полезно.
2. [article] How Discord reduced websocket traffic by 40%.
Произошло это примерно так:
- перешли на ZSTD. Получилось, конечно, не сразу. Ребята поприседали. Если быть более честным, то на EZSTD для поддержания стриминга.
- перестали отправлять сообщения, которые пользователю сейчас-то и не нужны.
Но это моя вольная трактовка. В статье сильно больше деталей.
3. [article] Understanding Zero-knowledge proofs through illustrated examples.
Zero-knowledge proofs -- концепция доказательства владения информацией, не раскрывая саму информацию.
В статье есть 3 простых примера того, как для абстрактных игр Алиса и Боб могут доказывать друг другу победу в игре без раскрытия самого результата.
Интересно. И обложка у статьи прикольная.
4. [article] Zombie Menace, Vampire Peril.
Мне очень откликается эта статья. Когда мы овним большую базу кода, мы часто забываем, что "большой" не значит хорошо. Каждая неиспользуемая строка кода тратит время на поддержку этого самого кода. Чинить тесты неиспользуемых фич тратит не только время, но и пошатывает спокойствие разработчиков. Повышается общая когнитивная нагрузка. Время компиляции растёт. Размер ваших приложений тоже.
Поэтому я в последнее время активно рефакторю и выпиливаю всё, до чего дотянусь. По строчкам на дистанции кода даже получается выйти в минус (хотя что я один против остальной команды...).
============================
В vas3k.club намутили опрос (ссылка в самом начале поста) про то, как расти на позиции выше и с какими проблемами можно столкнуться. Это потенциально касается любого из вас: если вы уже каким-то образом CTO или только задумываетесь о росте в руководители (особенно если так), ваши ответы могут быть Лизе очень полезны.
Я с ней довольно продуктивно пересекался пару раз за последний год и очень хочется помочь.
1. [article] Higher RAII, and the Seven Arcane Uses of Linear Types.
Всё тот же автор языка Vale (
- деструкторы в C++ это про вызов одного конкретного метода без параметров, что не всегда удобно.
- higher RAII в Vale позволяет делать сколько угодно таких методов с любыми параметрами и всё равно быть уверенным, что ничего не потеряется.
И в конце накинул примеров, когда это может быть полезно.
2. [article] How Discord reduced websocket traffic by 40%.
Произошло это примерно так:
- перешли на ZSTD. Получилось, конечно, не сразу. Ребята поприседали. Если быть более честным, то на EZSTD для поддержания стриминга.
- перестали отправлять сообщения, которые пользователю сейчас-то и не нужны.
Но это моя вольная трактовка. В статье сильно больше деталей.
3. [article] Understanding Zero-knowledge proofs through illustrated examples.
Zero-knowledge proofs -- концепция доказательства владения информацией, не раскрывая саму информацию.
В статье есть 3 простых примера того, как для абстрактных игр Алиса и Боб могут доказывать друг другу победу в игре без раскрытия самого результата.
Интересно. И обложка у статьи прикольная.
4. [article] Zombie Menace, Vampire Peril.
Мне очень откликается эта статья. Когда мы овним большую базу кода, мы часто забываем, что "большой" не значит хорошо. Каждая неиспользуемая строка кода тратит время на поддержку этого самого кода. Чинить тесты неиспользуемых фич тратит не только время, но и пошатывает спокойствие разработчиков. Повышается общая когнитивная нагрузка. Время компиляции растёт. Размер ваших приложений тоже.
Поэтому я в последнее время активно рефакторю и выпиливаю всё, до чего дотянусь. По строчкам на дистанции кода даже получается выйти в минус (хотя что я один против остальной команды...).
============================
В vas3k.club намутили опрос (ссылка в самом начале поста) про то, как расти на позиции выше и с какими проблемами можно столкнуться. Это потенциально касается любого из вас: если вы уже каким-то образом CTO или только задумываетесь о росте в руководители (особенно если так), ваши ответы могут быть Лизе очень полезны.
Я с ней довольно продуктивно пересекался пару раз за последний год и очень хочется помочь.
🔥8❤4👍4😁1
#cpp #common
0. [article] Полезные фичи С++ на примере организации пайплайна.
Коллега из Доставки (Паша Сухов) написал статью про то, как они строили общее решение с использованием различных нетривиальных возможностей плюсов (это кстати был его доклад на C++ Russia в этом году).
Почему мне понравилось:
- во-первых, потому что статья реально прикольная и показывает хорошее направление мысли: делать общие решения, которыми пользоваться будет гораздо проще. Делать задачи для получения бабок или ускорения ручек это круто, но делать общие инструменты для уменьшения TTM имхо гораздо более увлекательно. У меня в планах что-то с таким же посылом показать наружу.
- во-вторых, мы пришли к тому, что хотим делать что-то подобное, но для концептуально другой задачи и в другом виде. Правда мы только в самом начале пути. И иметь некоторый референс с фичами, про которые мы только начинаем думать, очень приятно.
- в-третьих, там и правда не самые тривиальные плюсы местами. Мы такое любим. Особенно когда оно на практике полезно.
2. [article] Здоровье кодовой базы.
Тут автор рассказывает про то, как мерять здоровье кода, исходя из некоторых метрик. Он концентрируется на cohesion и coupling, после чего выводит не шибко сложную математически (но не прям тривиальную интуитивно) визуализацию того, как понять, всё ли ок.
Я в последнее время часто про такое думаю, т.к. недавно встретил у студентов на курсе по Java скрины с ошибкой вида:
Про то, как это в Java считается, верхнеуровнево можно почитать тут.
Сложность кода -- вещь довольно субъективная. Мы недавно начали двигаться в сторону того, чтобы собирать общепризнанные (у нас) подходы к его упрощению, чтобы жилось чуть лучше. Глядишь, станет получше.
Ну и всё. Меньше ссылочек чем обычно, потому что завтра будет ещё один пост.
0. [article] Полезные фичи С++ на примере организации пайплайна.
Коллега из Доставки (Паша Сухов) написал статью про то, как они строили общее решение с использованием различных нетривиальных возможностей плюсов (это кстати был его доклад на C++ Russia в этом году).
Почему мне понравилось:
- во-первых, потому что статья реально прикольная и показывает хорошее направление мысли: делать общие решения, которыми пользоваться будет гораздо проще. Делать задачи для получения бабок или ускорения ручек это круто, но делать общие инструменты для уменьшения TTM имхо гораздо более увлекательно. У меня в планах что-то с таким же посылом показать наружу.
- во-вторых, мы пришли к тому, что хотим делать что-то подобное, но для концептуально другой задачи и в другом виде. Правда мы только в самом начале пути. И иметь некоторый референс с фичами, про которые мы только начинаем думать, очень приятно.
- в-третьих, там и правда не самые тривиальные плюсы местами. Мы такое любим. Особенно когда оно на практике полезно.
2. [article] Здоровье кодовой базы.
Тут автор рассказывает про то, как мерять здоровье кода, исходя из некоторых метрик. Он концентрируется на cohesion и coupling, после чего выводит не шибко сложную математически (но не прям тривиальную интуитивно) визуализацию того, как понять, всё ли ок.
Я в последнее время часто про такое думаю, т.к. недавно встретил у студентов на курсе по Java скрины с ошибкой вида:
function 'F' has cognitive complexity of 57 (threshold 25)Про то, как это в Java считается, верхнеуровнево можно почитать тут.
Сложность кода -- вещь довольно субъективная. Мы недавно начали двигаться в сторону того, чтобы собирать общепризнанные (у нас) подходы к его упрощению, чтобы жилось чуть лучше. Глядишь, станет получше.
Ну и всё. Меньше ссылочек чем обычно, потому что завтра будет ещё один пост.
👍10 2