
Консистентное хеширование
Небольшая статья, в которой рассказывается что такое консистентное хеширование
Небольшая статья, в которой рассказывается что такое консистентное хеширование
Николай Тузов: Самый подробный гайд по планировщику максимально простым языком. В первой половине видео мы будем шаг за шагом строить планировщик Go идя от простого к сложному, детально вникая в суть каждого нового механизма — какую проблему он решает и каким образом. В итоге мы получим Планировщик, который очень близок к настоящему (исключая совсем уж тонкие механизмы, часть из котрых я разберу в отдельных эксклюзивных для моих платных каналов роликах, ссылки см. ниже).
Универсальный фреймворк для параллельного выполнения задач на Go, вдохновленный taskflow-cpp, который использует встроенные возможности и простоту Go. Он отлично подходит для управления сложными зависимостями в параллельных задачах.
sturdyc помогает избежать проблем с "набегами на кэш" и снижает нагрузку на базы данных в системах, которые обрабатывают кучу запросов. Он умеет объединять запросы и обновлять данные в фоновом режиме. Это как быстрый кэш в памяти, но с крутым контролем над тем, насколько свежие данные. Внутри sturdyc использует неблокирующие чтения и шардированные записи, чтобы избежать конфликтов. А для распределения ключей он задействует алгоритм xxhash.
Тестировать HTTP-серверы на Go — это проще простого, потому что сам сервер — это просто функция, которую легко вызвать в тестах. Так что тестировать HTTP-уровень — это как тестировать любой другой кусок кода на Go, и при необходимости можно легко замокать зависимости. Но вот с проверкой HTML-ответов всё немного сложнее. Тут приходится копаться в деталях реализации, а не просто смотреть на поведение. Поведение приложения зависит от кучи вещей: атрибутов в HTML, внутренних обработчиков маршрутов, заголовков ответов и даже кусков текста, которые должны вызывать определённые действия в браузере. Так что тут тесты могут стать чуть более хрупкими и завязанными на детали.
Перевод статьи “Video Streaming with Go” Неважно, смотришь ты что-то на YouTube или Netflix, где-то в мире всегда есть сервер, который отправляет тебе видео. Раньше я думал, что стриминг — это что-то сложное и непонятное. Мне казалось, что для этого нужны какие-то специальные протоколы, разбираться в которых мне было лень. Но, как оказалось, я ошибался — сделать свой стриминг-сервер не так уж и сложно. Конечно, это не значит, что у крупных платформ вроде Netflix нет своих сложностей — у них всё куда масштабнее.
В эту пятницу самый свежий язык программирования Nevalang — это новый вид языка программирования, где вместо написания пошаговых инструкций вы создаете сети, в которых данные передаются между узлами в виде неизменяемых сообщений, и всё по умолчанию выполняется параллельно. После проверки типов ваша программа компилируется в машинный код и может распространяться как единый исполняемый файл без зависимостей. Neva отлично подходит для потоковой обработки данных и работы с параллелизмом, оставаясь при этом простым и удобным для общего программирования. В будущих обновлениях добавятся визуальное программирование и совместимость с Go, чтобы обеспечить постепенное внедрение.
Нашел интересный цикл статей про паттерны конкурентности в Go с картинками
Автор создал онлайн-игру для PlayStation 1, припаявшись к порту последовательной связи на материнской плате. Затем использовал Raspberry Pi для подключения к PS4. Откуда у людей столько времени свободного? Если б у меня столько времени свободного было, у меня тоже была бы такая довольная рожа
Переезд большого сервиса с Perl на Golang едва ли кому‑то покажется простой задачей. А теперь представьте, что это главная страница Яндекса, на которую ежедневно заходят миллионы пользователей. И что продукт постоянно дорабатывается, а значит, нельзя взять и остановить разработку на пару лет переезда. Представили? Сложно? А вот, оказывается, всё возможно.
На дворе февраль, а это значит свежий релиз Go 1.24 Go 1.24 и его новые функции — это действительно важный релиз, включающий множество обновлений: - Механизм go tool для отслеживания зависимостей инструментов. - Использование Swiss Tables для ускорения операций с картами (map). - Экспериментальный пакет testing/synctest для тестирования конкурентного кода. - Директива go:wasmexport для экспорта функций в WASM-хост. - Поддержка алиасов для обобщённых типов (generic type aliases), а также слабых указателей (weak pointers). - Новый механизм для достижения соответствия стандарту FIPS 140-3.
В одной из прошлых статей я уже восхищался PocketBase — штука действительно классная. Но знаете, что делает её ещё круче? Если заменить стандартный SQLite на libSQL. Сегодня я хочу рассказать, как можно прокачать PocketBase до нового уровня. Для этого нам понадобится свой собственный сервер libSQL, причём с “шахматами и библиотекаршами” — то есть со всеми плюшками и удобствами. Мы соберём docker-compose файл со всеми необходимыми контейнерами и настройками, настроим хост с сабдоменами для неймспейсов и даже разберёмся, как генерировать токены для авторизации в базе. Кстати, эти посты публикуются через утилиту, котрая работает на базе PocketBase и libSQL
Лет 10 назад, когда деревья были большими, появился на свет fuckinggodateformat.com, который сейчас уже не доступен. Возможно автор забыл продлить домен, а возможно оригинальное название не всем понравилось. Но факт - в #golang действительно заебное форматирование даты и времени. И я решил воскресить fuckinggodateformat но уже в .ru где он точно не пропадет
Несколько советом о том, как не тратить память попусти. Наверняка, большинство вы уже знаете. Но никогда не мешает повторить
В статье автор раскрывает, как злоумышленники могут эксплуатировать слабые места в системе кэширования Go Module Proxy, чтобы внедрять и поддерживать вредоносные пакеты. Он подробно объясняет, как прокси-серверы кэшируют модули Go, что открывает возможности для атак, нацеленных на долгосрочное внедрение вредоносного кода. Также в материале рассматриваются способы, которые используют злоумышленники для обхода защитных механизмов, и даются советы по усилению безопасности, такие как более тщательная проверка зависимостей и улучшение системы кэширования. А все началось с того, что злоумышленник сделал поддельный пакет BoltDB который закешировался Go Module Proxy
Zog — это инструмент для создания схем валидации, которые помогают анализировать и валидировать значения прямо во время работы программы. Вы можете описать схему, подогнать значение под нужный формат или задать структуру для уже существующих данных — или даже всё сразу. Схемы в Zog очень гибкие и мощные: с их помощью можно описывать сложные проверки и преобразования, где значения зависят друг от друга.