Дженерики в методах
В этом пропозале описывается как можно было бы объявлять параметризованные методы для конкретных типов в Go. Методы смогут объявлять свои собственные параметры типа, как это уже делают функции, но привязанные к получателю. При этом такие методы не смогут удовлетворять интерфейсам, так как интерфейсы по-прежнему не будут поддерживать методы с параметрами типа. Цель - позволить разработчикам организовывать код удобнее (например, через цепочки вызовов x.a().b().c()) и использовать преимущества дженериков в методах, даже если они не предназначены для полиморфизма через интерфейсы. Изменение полностью обратно совместимо, синтаксически метод становится просто функцией с получателем, и вызов работает через явные аргументы типа или их выведение
Параметр параметра мараметров параметры
#golang
https://kodikapusta.ru/news/64b0-dzheneriki-v-motodakh
В этом пропозале описывается как можно было бы объявлять параметризованные методы для конкретных типов в Go. Методы смогут объявлять свои собственные параметры типа, как это уже делают функции, но привязанные к получателю. При этом такие методы не смогут удовлетворять интерфейсам, так как интерфейсы по-прежнему не будут поддерживать методы с параметрами типа. Цель - позволить разработчикам организовывать код удобнее (например, через цепочки вызовов x.a().b().c()) и использовать преимущества дженериков в методах, даже если они не предназначены для полиморфизма через интерфейсы. Изменение полностью обратно совместимо, синтаксически метод становится просто функцией с получателем, и вызов работает через явные аргументы типа или их выведение
Параметр параметра мараметров параметры
#golang
https://kodikapusta.ru/news/64b0-dzheneriki-v-motodakh
❤1
Rust вас подведет
На удивление неплохая статья про Rust на хабре. В статье про "лучшие" практики Rust, которые вас подведут. Избыточное использование дженериков для мономорфизации вместо trait objects приводит к раздуванию бинарника и долгой компиляции. Повсеместное применение Arc<Mutex> вместо более подходящих альтернатив (каналы, RwLock, атомарные типы) чревато дедлоками. Чрезмерное создание типизированных ошибок через thiserror вместо простого anyhow усложняет код без пользы. Использование unwrap/expect для обработки ожидаемых ошибок вместо Result делает программу нестабильной. Ненужное применение async к чисто вычислительным функциям добавляет оверхед.
Везде нуэен здравый смысл
#rust
https://kodikapusta.ru/news/9o9g-rust-vas-podvedet
На удивление неплохая статья про Rust на хабре. В статье про "лучшие" практики Rust, которые вас подведут. Избыточное использование дженериков для мономорфизации вместо trait objects приводит к раздуванию бинарника и долгой компиляции. Повсеместное применение Arc<Mutex> вместо более подходящих альтернатив (каналы, RwLock, атомарные типы) чревато дедлоками. Чрезмерное создание типизированных ошибок через thiserror вместо простого anyhow усложняет код без пользы. Использование unwrap/expect для обработки ожидаемых ошибок вместо Result делает программу нестабильной. Ненужное применение async к чисто вычислительным функциям добавляет оверхед.
Везде нуэен здравый смысл
#rust
https://kodikapusta.ru/news/9o9g-rust-vas-podvedet
🔥5❤1
DuckDB
DuckDB - это встраиваемый SQL-движок с открытым исходным кодом, оптимизированный для аналитических запросов.
"Встраиваемый" - означает, что он похож на SQLite тем, что работает внутри вашего приложения. Для его запуска не нужно запускать отдельный сервис, например Postgres.
"Оптимизирован для аналитических запросов" - означает, что он предназначен для таких операций, как объединение и агрегирование большого количества строк, в отличие от атомарных транзакций.
А в этой статье отличное введение в DuckDB
#db
https://kodikapusta.ru/news/k9rl-duckdb
DuckDB - это встраиваемый SQL-движок с открытым исходным кодом, оптимизированный для аналитических запросов.
"Встраиваемый" - означает, что он похож на SQLite тем, что работает внутри вашего приложения. Для его запуска не нужно запускать отдельный сервис, например Postgres.
"Оптимизирован для аналитических запросов" - означает, что он предназначен для таких операций, как объединение и агрегирование большого количества строк, в отличие от атомарных транзакций.
А в этой статье отличное введение в DuckDB
#db
https://kodikapusta.ru/news/k9rl-duckdb
👍3❤1
VictoriaLogs
В статье про VictoriaLogs. Это ресурсоэффективное, быстрое и лёгкое схема-независимое хранилище логов, работающее в виде единого бинарного файла без конфигурации. Оно автоматически индексирует все поля логов, что позволяет мгновенно выполнять запросы на языке LogsQL для фильтрации, агрегации и анализа без предварительного определения схемы
#golang #db
https://kodikapusta.ru/news/evv1-victorialogs
В статье про VictoriaLogs. Это ресурсоэффективное, быстрое и лёгкое схема-независимое хранилище логов, работающее в виде единого бинарного файла без конфигурации. Оно автоматически индексирует все поля логов, что позволяет мгновенно выполнять запросы на языке LogsQL для фильтрации, агрегации и анализа без предварительного определения схемы
#golang #db
https://kodikapusta.ru/news/evv1-victorialogs
❤1👍1🔥1
Анкетки
Опрос разработчиков Go 2025 года (5379 респондентов) показал, что 91% программистов довольны языком, ценя его простоту, стандартную библиотеку и инструменты. Главные сложности включают соблюдение идиом Go (33%), отсутствие привычных возможностей из других языков (28%) и поиск надёжных модулей (26%). Большинство разработчиков используют AI-инструменты (53% ежедневно), но удовлетворённость ими умеренная из-за проблем с качеством кода. Удивительно, что 15–25% опрошенных часто обращаются к документации по базовым командам go build, go run, go mod, что указывает на необходимость улучшения хелпа. Также отмечается потребность в более чётких руководствах по best practices, особенно для разработчиков, переходящих с других языков.
#golang
https://kodikapusta.ru/news/io25-anketki
Опрос разработчиков Go 2025 года (5379 респондентов) показал, что 91% программистов довольны языком, ценя его простоту, стандартную библиотеку и инструменты. Главные сложности включают соблюдение идиом Go (33%), отсутствие привычных возможностей из других языков (28%) и поиск надёжных модулей (26%). Большинство разработчиков используют AI-инструменты (53% ежедневно), но удовлетворённость ими умеренная из-за проблем с качеством кода. Удивительно, что 15–25% опрошенных часто обращаются к документации по базовым командам go build, go run, go mod, что указывает на необходимость улучшения хелпа. Также отмечается потребность в более чётких руководствах по best practices, особенно для разработчиков, переходящих с других языков.
#golang
https://kodikapusta.ru/news/io25-anketki
👍3❤1
Forwarded from GitHub Open Sauce
rudnstudent/SkufUp
SkufUp — программа, которая слушает микрофон и ждёт звук открытия банки пива.Когда слышит характерный "пшик" - запускает игру или открывает сайт
#python
https://github.com/rudnstudent/SkufUp
SkufUp — программа, которая слушает микрофон и ждёт звук открытия банки пива.Когда слышит характерный "пшик" - запускает игру или открывает сайт
#python
https://github.com/rudnstudent/SkufUp
👍3❤1🔥1
ASCII
В статье подробно разбирается создание алгоритма для преобразования изображений и 3D-сцен в ASCII-арт с сохранением чётких границ. Автор критикует распространённый подход, где символы обрабатываются как однородные пиксели, что приводит к размытым и неровным краям. Вместо этого предлагается учитывать форму каждого символа, описывая её многомерным вектором (например, 6D), который отражает плотность заливки в разных частях ячейки.
И вот опять. Откуда у людей столько времени свободного?
#art #fun
https://kodikapusta.ru/news/e2k4-ascii
В статье подробно разбирается создание алгоритма для преобразования изображений и 3D-сцен в ASCII-арт с сохранением чётких границ. Автор критикует распространённый подход, где символы обрабатываются как однородные пиксели, что приводит к размытым и неровным краям. Вместо этого предлагается учитывать форму каждого символа, описывая её многомерным вектором (например, 6D), который отражает плотность заливки в разных частях ячейки.
И вот опять. Откуда у людей столько времени свободного?
#art #fun
https://kodikapusta.ru/news/e2k4-ascii
❤3
Nature
Пятница! И сегодня у меня для вас новый язык программирования - Nature.
Универсальный язык и компилятор для системного программирования, созданные для разработки высокопроизводительного, безопасного и надежного кроссплатформенного программного обеспечения кратким и элегантным способом.
И по ссылке сразу статья про сравнение производительности с гошкой. Ну да, ну да
#kod #learn
https://kodikapusta.ru/news/1s95-nature
Пятница! И сегодня у меня для вас новый язык программирования - Nature.
Универсальный язык и компилятор для системного программирования, созданные для разработки высокопроизводительного, безопасного и надежного кроссплатформенного программного обеспечения кратким и элегантным способом.
И по ссылке сразу статья про сравнение производительности с гошкой. Ну да, ну да
#kod #learn
https://kodikapusta.ru/news/1s95-nature
Playdate
Теперь мне нужна еще и эта электронная штука. На playdate запустили код на гошке. Я и так поглядывал на эту прикольную игрушку, но теперь точно надо
#golang
https://kodikapusta.ru/news/1h05-playdate
Теперь мне нужна еще и эта электронная штука. На playdate запустили код на гошке. Я и так поглядывал на эту прикольную игрушку, но теперь точно надо
#golang
https://kodikapusta.ru/news/1h05-playdate
🔥3😁2
Четыре игры
Автор запилил сразу 4 игры для Playdate, используя ИИ. Честно говоря, мне кажется кощунством использовать искусственный интеллект для написания приложений под девайсы, спроектированные Teenage Engineering.
Кстати, в статье есть ссылки на Playdate SDK. Это я забираю
#fun
https://kodikapusta.ru/news/x2k6-chetyre-igry
Автор запилил сразу 4 игры для Playdate, используя ИИ. Честно говоря, мне кажется кощунством использовать искусственный интеллект для написания приложений под девайсы, спроектированные Teenage Engineering.
Кстати, в статье есть ссылки на Playdate SDK. Это я забираю
#fun
https://kodikapusta.ru/news/x2k6-chetyre-igry
❤2
SQL Драйвер
Учимся писать свой SQL драйвер. Точнее, ребята из dolt покажут как они писали драйвер для своей базы. А вся магия возможна благодаря прекрасному пакета database sql driver в Go, который позволяет определить подключение к базе данных, которое любая программа на Go может использовать для взаимодействия с вашим SQL-сервером с помощью одного оператора import
#golang
https://kodikapusta.ru/news/3jjk-sql-draiver
Учимся писать свой SQL драйвер. Точнее, ребята из dolt покажут как они писали драйвер для своей базы. А вся магия возможна благодаря прекрасному пакета database sql driver в Go, который позволяет определить подключение к базе данных, которое любая программа на Go может использовать для взаимодействия с вашим SQL-сервером с помощью одного оператора import
#golang
https://kodikapusta.ru/news/3jjk-sql-draiver
❤1
Атомики
Код компилируется. Все тесты пройдены. Стейджовая среда работоспособна. Однако раз в день на нескольких серверах в рабочей среде происходит таинственный сбой с бессмысленным сообщением об ошибке: достигнут недостижимый код, извлекли 9 элементов из коллекции, в которой может быть только 8 элементов, и тому подобное.
Добро пожаловать в мир создания собственных примитивов синхронизации.
#rust
https://kodikapusta.ru/news/h3mi-atomiki
Код компилируется. Все тесты пройдены. Стейджовая среда работоспособна. Однако раз в день на нескольких серверах в рабочей среде происходит таинственный сбой с бессмысленным сообщением об ошибке: достигнут недостижимый код, извлекли 9 элементов из коллекции, в которой может быть только 8 элементов, и тому подобное.
Добро пожаловать в мир создания собственных примитивов синхронизации.
#rust
https://kodikapusta.ru/news/h3mi-atomiki
👍3
Физика полета
Хотели бы вы уметь летать? Я тут статью нашел про аэродинамику. С очень классными интерактивными примерами. В статье подробно исследуется физика полёта, в частности принцип работы аэродинамического профиля (аэродинамического сечения крыла). Автор объясняет, как поток воздуха, обтекающий профиль, создаёт распределение давления, которое генерирует подъёмную силу, позволяющую самолёту летать.
#fun
https://kodikapusta.ru/news/46c1-fizika-poleta
Хотели бы вы уметь летать? Я тут статью нашел про аэродинамику. С очень классными интерактивными примерами. В статье подробно исследуется физика полёта, в частности принцип работы аэродинамического профиля (аэродинамического сечения крыла). Автор объясняет, как поток воздуха, обтекающий профиль, создаёт распределение давления, которое генерирует подъёмную силу, позволяющую самолёту летать.
#fun
https://kodikapusta.ru/news/46c1-fizika-poleta
👍4🔥2
Нейрослоп линукс
Вайбкодинг вышел на нновый ровень. Автор создал "Pure Go" среду Linux с помощью Claude. Ну ладно, не совсем прям с нуля создал. Просто вдохновившись примером Армина Роначера, автор попросил Клода перенести эмулятор системы TinyEMU RISC-V Фабриса Беллара с C на Go
#golang
https://kodikapusta.ru/news/vts5-neiroslop-linuks
Вайбкодинг вышел на нновый ровень. Автор создал "Pure Go" среду Linux с помощью Claude. Ну ладно, не совсем прям с нуля создал. Просто вдохновившись примером Армина Роначера, автор попросил Клода перенести эмулятор системы TinyEMU RISC-V Фабриса Беллара с C на Go
#golang
https://kodikapusta.ru/news/vts5-neiroslop-linuks
🔥4😁4
Замыкания
Статья с объяснениями как работают замыкания в Rust. От простого сложного. И еще очень круто, что в статье есть ссылки на песочницы с готовым кодом, который можно попробовать в работе
#rust
https://kodikapusta.ru/news/4tpu-zamykaniia
Статья с объяснениями как работают замыкания в Rust. От простого сложного. И еще очень круто, что в статье есть ссылки на песочницы с готовым кодом, который можно попробовать в работе
#rust
https://kodikapusta.ru/news/4tpu-zamykaniia
❤1
Индексы в постгре
Неплохой гайд про то, как на самом деле работают индексы в PostgreSQL. Индексы помогают находить данные в сотни раз быстрее, но за это приходится платить: они занимают место на диске и могут немного тормозить добавление или изменение записей. Автор доходчиво объясняет, как данные лежат на диске, почему без индекса база читает всё подряд, и как индекс это меняет.
Здесь разобраны все основные типы индексов Postgres: от классического B-tree до более нишевых, вроде GIN для поиска по тексту или JSON и BRIN для огромных таблиц. Есть и полезные лайфхаки - например, как создать частичный индекс, чтобы не индексировать вообще всё, или покрывающий индекс, чтобы не ходить лишний раз к самим данным. В общем, статья даёт чёткое понимание, когда и какой индекс использовать, чтобы твоя база не тупила, и какие подводные камни при этом могут всплыть
#db
https://kodikapusta.ru/news/42q7-indeksy-v-postgre
Неплохой гайд про то, как на самом деле работают индексы в PostgreSQL. Индексы помогают находить данные в сотни раз быстрее, но за это приходится платить: они занимают место на диске и могут немного тормозить добавление или изменение записей. Автор доходчиво объясняет, как данные лежат на диске, почему без индекса база читает всё подряд, и как индекс это меняет.
Здесь разобраны все основные типы индексов Postgres: от классического B-tree до более нишевых, вроде GIN для поиска по тексту или JSON и BRIN для огромных таблиц. Есть и полезные лайфхаки - например, как создать частичный индекс, чтобы не индексировать вообще всё, или покрывающий индекс, чтобы не ходить лишний раз к самим данным. В общем, статья даёт чёткое понимание, когда и какой индекс использовать, чтобы твоя база не тупила, и какие подводные камни при этом могут всплыть
#db
https://kodikapusta.ru/news/42q7-indeksy-v-postgre
❤1👍1
Либы для моков не нужны
Да! Либы для моков действительно не нужны. Наконец это кто-то озвучил. Использование либ для создания моков часто приводит к плохо продуманным тестам и увеличивает время адаптации к кодовой базе.
Старые добрые ручные моки намного понятней и больше подходят для конкретного теста
#golang
https://kodikapusta.ru/news/mlvi-liby-dlia-mokov-ne-nuzhny
Да! Либы для моков действительно не нужны. Наконец это кто-то озвучил. Использование либ для создания моков часто приводит к плохо продуманным тестам и увеличивает время адаптации к кодовой базе.
Старые добрые ручные моки намного понятней и больше подходят для конкретного теста
#golang
https://kodikapusta.ru/news/mlvi-liby-dlia-mokov-ne-nuzhny
🔥3❤1😁1
Свой git
В статье автор делится опытом создания своей собственной, упрощённой системы контроля версий, чтобы на практике понять, как работает Git. В основе его системы лежат хеширование содержимого файлов с помощью SHA-256, сжатие данных Zstd и хранение всей истории в виде связанных объектов - файлов, деревьев каталогов и коммитов. Он шаг за шагом описывает процесс написания кода на Rust: от чтения аргументов командной строки и работы с файлами .tvcignore до генерации хешей, формирования объектов коммитов и реализации операции checkout для отката к предыдущим версиям. Проект, названный TVC, наглядно показал, что Git - это, по сути, умное хранилище, где всё адресуется по содержимому, а самой сложной частью оказался разбор собственных форматов данных - в следующий раз автор планирует использовать что-то попроще, вроде JSON
#rust
https://kodikapusta.ru/news/et59-svoi-git
В статье автор делится опытом создания своей собственной, упрощённой системы контроля версий, чтобы на практике понять, как работает Git. В основе его системы лежат хеширование содержимого файлов с помощью SHA-256, сжатие данных Zstd и хранение всей истории в виде связанных объектов - файлов, деревьев каталогов и коммитов. Он шаг за шагом описывает процесс написания кода на Rust: от чтения аргументов командной строки и работы с файлами .tvcignore до генерации хешей, формирования объектов коммитов и реализации операции checkout для отката к предыдущим версиям. Проект, названный TVC, наглядно показал, что Git - это, по сути, умное хранилище, где всё адресуется по содержимому, а самой сложной частью оказался разбор собственных форматов данных - в следующий раз автор планирует использовать что-то попроще, вроде JSON
#rust
https://kodikapusta.ru/news/et59-svoi-git
👍2❤1
Не сутультесь
Лучшее приложение для macOS, которое размывает экран, когда вы сутулитесь(как собака).
Posturr использует камеру вашего Mac и фреймворк Apple Vision для отслеживания вашей осанки в реальном времени. Когда оно обнаруживает, что вы сутулитесь, экран постепенно размывается, чтобы напомнить вам выпрямиться. Сохраняйте хорошую осанку - и размытие мгновенно исчезнет
#fun
https://kodikapusta.ru/news/hm88-ne-sutul-tes
Лучшее приложение для macOS, которое размывает экран, когда вы сутулитесь(как собака).
Posturr использует камеру вашего Mac и фреймворк Apple Vision для отслеживания вашей осанки в реальном времени. Когда оно обнаруживает, что вы сутулитесь, экран постепенно размывается, чтобы напомнить вам выпрямиться. Сохраняйте хорошую осанку - и размытие мгновенно исчезнет
#fun
https://kodikapusta.ru/news/hm88-ne-sutul-tes
🔥7😁4❤1
Логическая репликация
Я тут начал ковырять как работают всякие инстументы для репликации данных из постгри куда-то еще. И это можно делать красиво на гошке. Можно наколбасить свой CDC фреймворк и наслаждаться. Для затравки закинул не свежую статью(но все еще актуальные) как ребята из dolt используют логическую репликацию постгри в своих целях
#golang #db
https://kodikapusta.ru/news/ksy1-logicheskaia-replikatsiia
Я тут начал ковырять как работают всякие инстументы для репликации данных из постгри куда-то еще. И это можно делать красиво на гошке. Можно наколбасить свой CDC фреймворк и наслаждаться. Для затравки закинул не свежую статью(но все еще актуальные) как ребята из dolt используют логическую репликацию постгри в своих целях
#golang #db
https://kodikapusta.ru/news/ksy1-logicheskaia-replikatsiia
❤1👍1🔥1