⚒️ Go Runtime Finalizer и Keep Alive
Если вы перешли с полностью объектно-ориентированного языка на Go, скорее всего, вам не хватало финализаторов для очистки ресурсов при уничтожении объекта. В Go есть (довольно непонятный) способ установки финализаторов — в пакете
Однако, как отмечает Phuong Le, «если вам вдруг понадобится использовать финализаторы, есть большая вероятность, что это признак проблемы с дизайном».
Как бы то ни было, финализаторы не совсем бесполезны. Они могут служить в качестве резервного механизма очистки для объектов, которые имеют явную функцию очистки(подумайте о методах Close() для подключений к файлам или базе данных) . Если пользователи таких объектов не смогут должным образом вызвать функцию очистки, может сработать финализатор.
👉 Читать статью
Если вы перешли с полностью объектно-ориентированного языка на Go, скорее всего, вам не хватало финализаторов для очистки ресурсов при уничтожении объекта. В Go есть (довольно непонятный) способ установки финализаторов — в пакете
runtime
.Однако, как отмечает Phuong Le, «если вам вдруг понадобится использовать финализаторы, есть большая вероятность, что это признак проблемы с дизайном».
Как бы то ни было, финализаторы не совсем бесполезны. Они могут служить в качестве резервного механизма очистки для объектов, которые имеют явную функцию очистки
👉 Читать статью
👏6👍3🤔2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👍2🥱2🥰1
🔐 Понимание уязвимостей, связанных с внедрением команд в Go
Если вы вызываете системные утилиты из кода, вы можете предпринять некоторые базовые, но важные меры предосторожности, чтобы избежать проблем с безопасностью(вы ведь не хотите, чтобы кто-то мог убедить ваш сервер запустить rm или что-то похуже) .
👉 Читать гайд
Если вы вызываете системные утилиты из кода, вы можете предпринять некоторые базовые, но важные меры предосторожности, чтобы избежать проблем с безопасностью
👉 Читать гайд
👍2❤1
Привет, друзья! 👋
Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал ещё полезнее. Самые интересные ответы войдут в статью! 🏆
Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал ещё полезнее. Самые интересные ответы войдут в статью! 🏆
👾3
Какой ИИ-инструмент для программирования вы считаете самым полезным и почему? 🛠
Anonymous Poll
14%
GitHub Copilot
38%
ChatGPT
7%
Claude
9%
Codeium
7%
Локальные LLM
22%
Не пользуюсь ИИ
4%
Другой (укажу в комментариях)
Какой аспект разработки, по вашему мнению, больше всего выигрывает от использования ИИ? 🚀
Anonymous Poll
50%
Автодополнение кода
18%
Генерация кода с нуля
17%
Отладка и поиск ошибок
10%
Оптимизация существующего кода
5%
Другое (поделитесь в комментариях)
Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬
Media is too big
VIEW IN TELEGRAM
▶️ Разработка CLI-приложения на Go с Bubble Tea
Только не говорите, что не любите CLI-приложения! Ловите 50-минутное обучающее видео, с помощью которого вы напишете CLI-инструмент для заметок с использованием Go + Bubble Tea + Lip Gloss от Charm.
⏳ Таймкоды:
00:00 Intro
03:00 Basics
10:04 SQLite store
22:03 List view
31:55 Add lipgloss
39:15 Textinput and Textarea
47:20 Working App!
48:56 Outro
Только не говорите, что не любите CLI-приложения! Ловите 50-минутное обучающее видео, с помощью которого вы напишете CLI-инструмент для заметок с использованием Go + Bubble Tea + Lip Gloss от Charm.
⏳ Таймкоды:
00:00 Intro
03:00 Basics
10:04 SQLite store
22:03 List view
31:55 Add lipgloss
39:15 Textinput and Textarea
47:20 Working App!
48:56 Outro
👍4🥱1
🦫 Самоучитель по Go для начинающих. Часть 17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
В этой части самоучителя мы погрузимся в мир сетевого программирования, изучим его основные концепции и инструменты. Начнем с рассмотрения принципов работы компьютерных сетей и их архитектуры, познакомимся с протоколами TCP и IP, лежащими в основе стека TCP/IP.
Затем детально изучим сокеты и их роль в сетевом взаимодействии. Особое внимание будет уделено пакету net, который предоставляет удобные инструменты для реализации сетевых приложений.
👉 Читать гайд
👩💻 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
В этой части самоучителя мы погрузимся в мир сетевого программирования, изучим его основные концепции и инструменты. Начнем с рассмотрения принципов работы компьютерных сетей и их архитектуры, познакомимся с протоколами TCP и IP, лежащими в основе стека TCP/IP.
Затем детально изучим сокеты и их роль в сетевом взаимодействии. Особое внимание будет уделено пакету net, который предоставляет удобные инструменты для реализации сетевых приложений.
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍7
📄 Компиляция Go-программы в нативный бинарь для Nintendo Switch
Вовсе не новость, но кто-то мог пропустить это в своё время. Интересно взглянуть на детали👇
🔗 Читать гайд
Вовсе не новость, но кто-то мог пропустить это в своё время. Интересно взглянуть на детали👇
🔗 Читать гайд
👍13🤩3🔥2🎉1
👨💻🚀 Тест: насколько ты продвинутый разраб?
Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.
👉 Ворваться
Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.
👉 Ворваться
👍3👾3😁2
🎧 В последнем выпуске подкаста Go Time Wesley Beary из Anchor рассказал о трудностях, с которыми столкнулась его команда при создании CLI-инструмента на Go
Учитывая количество библиотек, доступных Go-разработчикам в наши дни, можно подумать, что создание CLI-приложения стало тривиальным делом. Но все не так однозначно.
Так какие трудности могли возникнуть у команды на пути к production-ready CLI? 🤔
👉 Слушать(по ссылке также можно прочитать транскрибацию)
Учитывая количество библиотек, доступных Go-разработчикам в наши дни, можно подумать, что создание CLI-приложения стало тривиальным делом. Но все не так однозначно.
Так какие трудности могли возникнуть у команды на пути к production-ready CLI? 🤔
👉 Слушать
🥱5👍4🔥2🤔1
🚀 Проект nxdir-s/pipelines: элегантная работа с потоками данных в Go
Если вы сталкиваетесь с задачами конкурентной обработки данных в Go, эта библиотека существенно облегчит создание и управление потоками данных (pipelines), обеспечивая удобную поддержку параллелизма.
Ключевые возможности:
🔄 Создание потоков данных: легко генерируйте данные из срезов, мап или кастомных функций.
🏎 Параллельная обработка (FanOut): ускоряйте вычисления, разделяя данные между несколькими обработчиками.
🔗 Объединение потоков (FanIn): собирайте результаты из разных каналов для дальнейшей обработки.
🛠 Простота использования: минималистичный API, понятный даже новичкам.
🌐 Проект на GitHub
Если вы сталкиваетесь с задачами конкурентной обработки данных в Go, эта библиотека существенно облегчит создание и управление потоками данных (pipelines), обеспечивая удобную поддержку параллелизма.
Ключевые возможности:
🔄 Создание потоков данных: легко генерируйте данные из срезов, мап или кастомных функций.
🏎 Параллельная обработка (FanOut): ускоряйте вычисления, разделяя данные между несколькими обработчиками.
🔗 Объединение потоков (FanIn): собирайте результаты из разных каналов для дальнейшей обработки.
🛠 Простота использования: минималистичный API, понятный даже новичкам.
🌐 Проект на GitHub
❓ Когда вы пишете код на Go, управление памятью становится ключевым моментом, влияющим на производительность приложения. В статье рассматривается важный вопрос: когда переменная в Go размещается в куче, а не на стеке?
В Go действует принцип, называемый escape analysis, который определяет, где именно должна быть размещена переменная — в стеке (быстрое управление памятью) или в куче (длительное хранение с управлением через GC). Например:
Если переменная передается из функции наружу (или возвращается), Go определяет, что она «убегает» из локального контекста и помещает её в кучу. Локальные переменные, которые не покидают функцию, обычно остаются на стеке.
Почему это важно? Куча требует затрат на сборку мусора, что может замедлить приложение. Понимание этих механизмов позволяет оптимизировать код: минимизировать аллокации в куче и уменьшить нагрузку на GC.
Оптимизируйте осознанно: инструмент
поможет понять, как компилятор обрабатывает переменные в вашем коде. Это первый шаг к созданию высокопроизводительных приложений!
📎 Подробнее в источнике
В Go действует принцип, называемый escape analysis, который определяет, где именно должна быть размещена переменная — в стеке (быстрое управление памятью) или в куче (длительное хранение с управлением через GC). Например:
Если переменная передается из функции наружу (или возвращается), Go определяет, что она «убегает» из локального контекста и помещает её в кучу. Локальные переменные, которые не покидают функцию, обычно остаются на стеке.
Почему это важно? Куча требует затрат на сборку мусора, что может замедлить приложение. Понимание этих механизмов позволяет оптимизировать код: минимизировать аллокации в куче и уменьшить нагрузку на GC.
Оптимизируйте осознанно: инструмент
go build -gcflags="-m"
поможет понять, как компилятор обрабатывает переменные в вашем коде. Это первый шаг к созданию высокопроизводительных приложений!
📎 Подробнее в источнике
👍22❤5👾1
❓ Go всегда славился своей философией минимализма. Когда в версии 1.18 появились дженерики (Generics), разработчики восприняли это как долгожданное улучшение. Но вместе с этим пришли и вопросы: не слишком ли прост этот инструмент для решения сложных задач?
🛠️ C помощью дженериков можно писать код, который работает с разными типами данных, не теряя читаемости и производительности. Это делает их незаменимыми для библиотек и больших проектов.
Преимущества дженериков в Go:
✅ Дженерики позволяют создавать универсальные функции и структуры данных, что снижает необходимость повторного написания одинакового кода для разных типов.
✅ Использование дженериков способствует созданию более понятного и поддерживаемого кода, поскольку общая логика сосредоточена в одном месте.
✅ В определённых сценариях дженерики могут улучшить производительность, особенно в местах, где важна эффективность работы с различными типами данных.
Недостатки дженериков в Go:
❗Текущая реализация дженериков в Go может быть недостаточно мощной для некоторых сложных задач, что приводит к необходимости использования обходных путей или более сложных конструкций.
❗Неправильное или чрезмерное использование дженериков может привести к созданию запутанного и трудночитаемого кода, что затрудняет его сопровождение и понимание.
❗Некоторые разработчики считают, что текущая реализация дженериков в Go является компромиссом, который не полностью удовлетворяет потребности сообщества, оставляя определённые пробелы в функциональности.
🌐 Подробнее в источнике
🛠️ C помощью дженериков можно писать код, который работает с разными типами данных, не теряя читаемости и производительности. Это делает их незаменимыми для библиотек и больших проектов.
Преимущества дженериков в Go:
✅ Дженерики позволяют создавать универсальные функции и структуры данных, что снижает необходимость повторного написания одинакового кода для разных типов.
✅ Использование дженериков способствует созданию более понятного и поддерживаемого кода, поскольку общая логика сосредоточена в одном месте.
✅ В определённых сценариях дженерики могут улучшить производительность, особенно в местах, где важна эффективность работы с различными типами данных.
Недостатки дженериков в Go:
❗Текущая реализация дженериков в Go может быть недостаточно мощной для некоторых сложных задач, что приводит к необходимости использования обходных путей или более сложных конструкций.
❗Неправильное или чрезмерное использование дженериков может привести к созданию запутанного и трудночитаемого кода, что затрудняет его сопровождение и понимание.
❗Некоторые разработчики считают, что текущая реализация дженериков в Go является компромиссом, который не полностью удовлетворяет потребности сообщества, оставляя определённые пробелы в функциональности.
🌐 Подробнее в источнике
👍11👾1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🤖🛠 11 лучших ИИ-инструментов для разработки в 2024 году
В мире разработки программного обеспечения искусственный интеллект становится незаменимым помощником, способным значительно повысить продуктивность и качество кода. Представьте себе инструменты, которые не только автоматически дополняют ваш код, но и генерируют целые фрагменты, преобразуют дизайн в готовый код и обеспечивают безопасность вашего приложения. Хотите узнать, какие ИИ-инструменты помогут вам быть на шаг впереди в 2024 году? Откройте для себя решения, которые сделают ваш рабочий процесс более эффективным и инновационным.
🔗 Читать статью
🔗 Зеркало
В мире разработки программного обеспечения искусственный интеллект становится незаменимым помощником, способным значительно повысить продуктивность и качество кода. Представьте себе инструменты, которые не только автоматически дополняют ваш код, но и генерируют целые фрагменты, преобразуют дизайн в готовый код и обеспечивают безопасность вашего приложения. Хотите узнать, какие ИИ-инструменты помогут вам быть на шаг впереди в 2024 году? Откройте для себя решения, которые сделают ваш рабочий процесс более эффективным и инновационным.
🔗 Читать статью
🔗 Зеркало
Черные скидки на курсы в Академии!
-40% до конца ноября
🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все курсы proglib.academy и дарим промокод на сумму 10 000 на технику в магазине DigitalRazor (отправим вам по запросу)
🎁 Анонс новогоднего сюрприза!
🎄 Те, кто успеет приобрести курсы с 27 ноября по 27 декабря, получат шанс выиграть крутой новогодний подарок.
Что это будет, пока держим в секрете – следите за новостями на нашем канале!
Почему стоит выбрать нас?
⚫️ Опытные преподаватели
Вас будут обучать доценты ВМК МГУ по математике, а алгоритмы расскажет разработчик из Яндекса и преподаватель МФТИ и НИУ ВШЭ.
⚫️ Бессрочный доступ ко всем курсам
Проходите обучение в удобном для вас темпе, без давления жестких сроков.
⚫️ Поддержка преподавателей
Не останетесь одни — вам всегда помогут разобраться с трудными темами и ответят на любые вопросы через чат и платформу Coreapp.
👉 Не уверены, подойдет ли вам курс? Начните с бесплатных вводных занятий и познакомьтесь с преподавателями и форматом обучения –
Ждем вас на обучении! 🙌
-40% до конца ноября
🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все курсы proglib.academy и дарим промокод на сумму 10 000 на технику в магазине DigitalRazor (отправим вам по запросу)
🎁 Анонс новогоднего сюрприза!
🎄 Те, кто успеет приобрести курсы с 27 ноября по 27 декабря, получат шанс выиграть крутой новогодний подарок.
Что это будет, пока держим в секрете – следите за новостями на нашем канале!
Почему стоит выбрать нас?
⚫️ Опытные преподаватели
Вас будут обучать доценты ВМК МГУ по математике, а алгоритмы расскажет разработчик из Яндекса и преподаватель МФТИ и НИУ ВШЭ.
⚫️ Бессрочный доступ ко всем курсам
Проходите обучение в удобном для вас темпе, без давления жестких сроков.
⚫️ Поддержка преподавателей
Не останетесь одни — вам всегда помогут разобраться с трудными темами и ответят на любые вопросы через чат и платформу Coreapp.
👉 Не уверены, подойдет ли вам курс? Начните с бесплатных вводных занятий и познакомьтесь с преподавателями и форматом обучения –
Ждем вас на обучении! 🙌
🥱3👍2