↪️ Обработка ошибок в Go
Механизм обработки ошибок в Go отличается от обработки исключений в большинстве языков программирования, ведь в Golang ошибки исключениями не являются. Если говорить в целом, то ошибка в Go — это возвращаемое значение с типомerror, которое демонстрирует сбой. А с точки зрения кода — интерфейс. В качестве ошибки может выступать любой объект, который этому интерфейсу удовлетворяет.
➡️ Читать дальше
@Golang_google
Механизм обработки ошибок в Go отличается от обработки исключений в большинстве языков программирования, ведь в Golang ошибки исключениями не являются. Если говорить в целом, то ошибка в Go — это возвращаемое значение с типомerror, которое демонстрирует сбой. А с точки зрения кода — интерфейс. В качестве ошибки может выступать любой объект, который этому интерфейсу удовлетворяет.
➡️ Читать дальше
@Golang_google
Шпаргалка по Go для начинающих с примерами из Go-тура.
https://github.com/a8m/golang-cheat-sheet
@Golang_google
https://github.com/a8m/golang-cheat-sheet
@Golang_google
GitHub
GitHub - a8m/golang-cheat-sheet: An overview of Go syntax and features.
An overview of Go syntax and features. Contribute to a8m/golang-cheat-sheet development by creating an account on GitHub.
Пример объединения концепций нескольких паттерноа для создания простой и гибкой структуры Go-сервиса.
Читать
Простые highload паттерны на Go
@Golang_google
Читать
Простые highload паттерны на Go
@Golang_google
Абстрактные анонимные сети
Среди анонимных сетей можно выявить класс систем максимально разграничивающих субъектов информации от их объектов, что приводит к возможности различных способов транспортирования информации. Из-за своей специфичной архитектуры передача информации может осуществляться в любой дуплексной среде, что полностью отрывает распространение объектов от своей сетевой архитектуры и переводит маршрутизацию в этап виртуального транслирования. Тем не менее у такой концепции существуют и свои недостатки, где одним из основных является невозможность построения поточной связи из-за отсутствия постоянных соединений, что в определённой степени становится уязвимостью к активным нападениям (более подробно данный момент будет показан в разделе «Модель абстрактных анонимных сетей на базе очередей»).
➡️ Читать дальше
📃 Теория скрытых систем
@Golang_google
Среди анонимных сетей можно выявить класс систем максимально разграничивающих субъектов информации от их объектов, что приводит к возможности различных способов транспортирования информации. Из-за своей специфичной архитектуры передача информации может осуществляться в любой дуплексной среде, что полностью отрывает распространение объектов от своей сетевой архитектуры и переводит маршрутизацию в этап виртуального транслирования. Тем не менее у такой концепции существуют и свои недостатки, где одним из основных является невозможность построения поточной связи из-за отсутствия постоянных соединений, что в определённой степени становится уязвимостью к активным нападениям (более подробно данный момент будет показан в разделе «Модель абстрактных анонимных сетей на базе очередей»).
➡️ Читать дальше
📃 Теория скрытых систем
@Golang_google
⚙️ Cервер от Gotify для обмена сообщениями в режиме реального времени через веб-сокеты.
➡️ Репозиторий
↪️ Документация
@Golang_google
➡️ Репозиторий
↪️ Документация
@Golang_google
🛠 Инструмент на GO для отображения использования диска. (Линукс, macOS и Windows)
go install github.com/chenquan/diskusage@latest
➡️ Github
@Golang_google
go install github.com/chenquan/diskusage@latest
➡️ Github
@Golang_google
🐄 cowsay - это забавная и очень полезная (нет) библиотека, которая умеет выводить картинки различных животных, нарисованные символами 👌🏼
Чтобы увидеть этот шедевр самостоятельно, запускай код, который приведен ниже.
Github
@Golang_google
Чтобы увидеть этот шедевр самостоятельно, запускай код, который приведен ниже.
Github
@Golang_google
✒️ Мои собеседования (Golang developer)
Привет, меня зовут Олег, я разработчик со стажем почти 10 лет.
Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать.
Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам.
➡️ Читать дальше
@Golang_google
Привет, меня зовут Олег, я разработчик со стажем почти 10 лет.
Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать.
Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам.
➡️ Читать дальше
@Golang_google
📰 Новости из мира Go: вредоносное ПО, зарплаты разработчиков, книги и новые релизы
Специалисты компании Avast заявили о том, что сейчас наблюдается рост количества вредоносных и потенциально опасных программ, которые написаны на Golang. Новые экземпляры вредоносов обнаруживаются каждую неделю, но наиболее важные зловреды — бэкдор Backdoorit и IRC-бот Caligula.
Оба могут работать на самых разных платформах. Сколько они существуют — сказать сложно, поскольку обнаружили их в конце апреля, когда они еще не детектировались базами VirusTotal.
➡️ Читать дальше
@Golang_google
Специалисты компании Avast заявили о том, что сейчас наблюдается рост количества вредоносных и потенциально опасных программ, которые написаны на Golang. Новые экземпляры вредоносов обнаруживаются каждую неделю, но наиболее важные зловреды — бэкдор Backdoorit и IRC-бот Caligula.
Оба могут работать на самых разных платформах. Сколько они существуют — сказать сложно, поскольку обнаружили их в конце апреля, когда они еще не детектировались базами VirusTotal.
➡️ Читать дальше
@Golang_google
🎮 CloudRetro
Cервис, написанный на GO предоставляет возможность поиграть в ретро-игры в облаке
Также, есть возможность играть в одну игровую сессию с нескольких устройств. Интресный проект для изучения.
➡️ GitHub
➡️ Video demo
#Go #Game
@Golang_google
Cервис, написанный на GO предоставляет возможность поиграть в ретро-игры в облаке
Также, есть возможность играть в одну игровую сессию с нескольких устройств. Интресный проект для изучения.
➡️ GitHub
➡️ Video demo
#Go #Game
@Golang_google
☁️ Правим QEMU железным кулаком
Виртуализация, на мой взгляд, всё ещё остаётся одной из самых важных технологий в администрировании ЦОД. Да, конечно “все” будут рассказывать, что контейнеры намного более удобные, и всё надо запихивать в Кубер, и всё такое… Но после гигантского нагромождения никому не нужных конфигов, в какой-то момент ты начинаешь понимать, что зашёл слишком далеко.
И действительно. Мы пишем ПО для обслуживания целого ЦОДа. Изначально всё должно было быть контейнером, и всё должно было распространяться через CI/CD, но когда дело доходит до дела, ты начинаешь понимать, что нет ничего проще установленного линукса, на котором напрямую запускается твоя утилита, написанная на golang.
Но, есть одна проблема. Виртуальными машинами не так легко управлять, как это можно делать с контейнерами. Ок, мы сами с усами, можем и вручную написать кое-чего.
Под катом, давайте окунёмся в мир работы с QEMU и подёргаем сам эмулятор. Конечным результатом должна быть клонированная через golang Debian Linux.
➡️ Читать дальше
@Golang_google
Виртуализация, на мой взгляд, всё ещё остаётся одной из самых важных технологий в администрировании ЦОД. Да, конечно “все” будут рассказывать, что контейнеры намного более удобные, и всё надо запихивать в Кубер, и всё такое… Но после гигантского нагромождения никому не нужных конфигов, в какой-то момент ты начинаешь понимать, что зашёл слишком далеко.
И действительно. Мы пишем ПО для обслуживания целого ЦОДа. Изначально всё должно было быть контейнером, и всё должно было распространяться через CI/CD, но когда дело доходит до дела, ты начинаешь понимать, что нет ничего проще установленного линукса, на котором напрямую запускается твоя утилита, написанная на golang.
Но, есть одна проблема. Виртуальными машинами не так легко управлять, как это можно делать с контейнерами. Ок, мы сами с усами, можем и вручную написать кое-чего.
Под катом, давайте окунёмся в мир работы с QEMU и подёргаем сам эмулятор. Конечным результатом должна быть клонированная через golang Debian Linux.
➡️ Читать дальше
@Golang_google
💻 Средние highload паттерны на Go
Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками. Статья ориентирована на начинающих разработчиков и может служить отправной точкой для дальнейшего изучения. В этой статье подходы ориентированы на масштабирование приложения при верхнеуровневом рассмотрении. Подходы универсальны, приписка языка Go только потому, что сама реализация приложения на нем. Для наглядности, примеры будут упрощены, а чтобы было интереснее наблюдать, проведем замеры производительности. Ну и конечно же делитесь своим опытом масштабирования, буду рад взять на заметку.
➡️ Читать дальше
@Golang_google
Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками. Статья ориентирована на начинающих разработчиков и может служить отправной точкой для дальнейшего изучения. В этой статье подходы ориентированы на масштабирование приложения при верхнеуровневом рассмотрении. Подходы универсальны, приписка языка Go только потому, что сама реализация приложения на нем. Для наглядности, примеры будут упрощены, а чтобы было интереснее наблюдать, проведем замеры производительности. Ну и конечно же делитесь своим опытом масштабирования, буду рад взять на заметку.
➡️ Читать дальше
@Golang_google
Golang-дайджест № 20 (1 – 31 августа 2022)
Свежая подборка новостей и материалов
Выпущена версия 1.19 — что нового:
- Сборщику мусора теперь можно задать ограничение памяти. Подробнее здесь.
- Модель памяти теперь явно определяет поведение sync/atomic пакета.
- Пакет os/exec больше не учитывает относительные пути при PATH поиске.
- Комментарии к документам теперь поддерживают ссылки, списки и заголовки с префиксом.
- Исправления проблем, связанных с дженериками.
- discussion: Добавление стандартного интерфейса итератора в Go?
- GoLand Roadmap 2022.3
- Выпущен GoLand 2022.2
Alcione Ribeiro опубликовала в github схему вязания крючком, чтобы связать своего собственного персонажа Go gopher!
Awesome:
- https://awesome-go.com/
- https://github.com/guardrailsio/awesome-golang-security
- https://github.com/Binject/awesome-go-security
- https://gist.github.com/hbt/d6ab942b882d5b94f331c5257076d05e
- https://github.com/avelino/awesome-go
@Golang_google
Свежая подборка новостей и материалов
Выпущена версия 1.19 — что нового:
- Сборщику мусора теперь можно задать ограничение памяти. Подробнее здесь.
- Модель памяти теперь явно определяет поведение sync/atomic пакета.
- Пакет os/exec больше не учитывает относительные пути при PATH поиске.
- Комментарии к документам теперь поддерживают ссылки, списки и заголовки с префиксом.
- Исправления проблем, связанных с дженериками.
- discussion: Добавление стандартного интерфейса итератора в Go?
- GoLand Roadmap 2022.3
- Выпущен GoLand 2022.2
Alcione Ribeiro опубликовала в github схему вязания крючком, чтобы связать своего собственного персонажа Go gopher!
Awesome:
- https://awesome-go.com/
- https://github.com/guardrailsio/awesome-golang-security
- https://github.com/Binject/awesome-go-security
- https://gist.github.com/hbt/d6ab942b882d5b94f331c5257076d05e
- https://github.com/avelino/awesome-go
@Golang_google
pgweb – web-клиент для СУБД PostgreSQL реализованный на Go
Работает на всех актуальных платформах. Из преимуществ: простая установка, импорт/експорт данных
⤷ Ссылка на проект
@Golang_google | #Interesting #Database #Go
Работает на всех актуальных платформах. Из преимуществ: простая установка, импорт/експорт данных
⤷ Ссылка на проект
@Golang_google | #Interesting #Database #Go
➡️ Как Go выполняет встраивание
В статье рассказано, как Go подходит к инлайнингу функций — этот процесс ещё называют встраиванием. В статье разберёмся, зачем вообще это нужно, какой профит можно получить для ускорения работы кода, а когда плюсы могут обернуться минусами. На примерах углубимся в специфику Go: как этот язык инлайнит функции, что можно и что нельзя встроить, какие возможности доступны в разных версиях. Также обсудим ограничения и способы обойти их.
➡️ Читать дальше
🎞 Видео
@Golang_google
В статье рассказано, как Go подходит к инлайнингу функций — этот процесс ещё называют встраиванием. В статье разберёмся, зачем вообще это нужно, какой профит можно получить для ускорения работы кода, а когда плюсы могут обернуться минусами. На примерах углубимся в специфику Go: как этот язык инлайнит функции, что можно и что нельзя встроить, какие возможности доступны в разных версиях. Также обсудим ограничения и способы обойти их.
➡️ Читать дальше
🎞 Видео
@Golang_google
🛠 Инструменты для управления уязвимостями в Go-проекте на текущий момент.
➡️ Читать
⚙️ Vulnerability database
@Golang_google
➡️ Читать
⚙️ Vulnerability database
@Golang_google
🦾 restic
это быстрая, эффективная и безопасная программа резервного копирования на GO. Инструмент поддерживает три основные операционные системы (Linux, macOS, Windows) и несколько более мелких (FreeBSD, OpenBSD).
⚙️ Github
🗒 Docs
@Golang_google
это быстрая, эффективная и безопасная программа резервного копирования на GO. Инструмент поддерживает три основные операционные системы (Linux, macOS, Windows) и несколько более мелких (FreeBSD, OpenBSD).
⚙️ Github
🗒 Docs
@Golang_google
🈯 Регулярные выражения в Go
https://medium.com/@hrosch/regular-expressions-in-go-c90ebedf58d6
@Golang_google
https://medium.com/@hrosch/regular-expressions-in-go-c90ebedf58d6
@Golang_google
↪️ Мой аналог The GO Playground
Под данным катом описано как я создал свой аналог The GO Playground. Это было сделано исключительно по собственному желанию в образовательных целях. Ссылка на репозиторий.
Кодовая база проекта традиционно состоит из фронта и бэка. В качестве языка бэка используется Go, на фронте JS + jQuery.
В моей реализации реактивная отправка данных на фронт осуществляется с помощью протокола WS, а получение исходного кода по ссылке с помощью HTTP. Для роутинга в приложении я использовал httprouter. Изначально я использовал html/template и автообновление блоков HTML c помощью функции load(), но потом отошел от этой идеи ввиду некоторых сложностей реализации.
На самом деле оригинальная платформа сделана очень хитрым образом с точки зрения использования ресурсов системы. Если в пользовательской программе используются конструкции задержки по типу time.Sleep, программа на самом деле не спит, а выполняет свой код непрерывно, минуя задержки. А на выходе генерируется последовательность байт с учетом задержки, которую фронт отрабатывает таким образом, что пользователь не видит разницы. Создается ощущение, что программа запущена локально. Для безопасной работы с сетью и файловой системой используются некоторые трюки, про все подробности, используемые в The GO Playground можно почитать по ссылке. Оригинальный код платформы по ссылке.
Домашняя страница выглядит весьма минималистично, на выбор представлено пару тестовых программ. Блок ввода кода, блок результата выполнения программы.
➡️ Читать
⚙️ Github
@Golang_google
Под данным катом описано как я создал свой аналог The GO Playground. Это было сделано исключительно по собственному желанию в образовательных целях. Ссылка на репозиторий.
Кодовая база проекта традиционно состоит из фронта и бэка. В качестве языка бэка используется Go, на фронте JS + jQuery.
В моей реализации реактивная отправка данных на фронт осуществляется с помощью протокола WS, а получение исходного кода по ссылке с помощью HTTP. Для роутинга в приложении я использовал httprouter. Изначально я использовал html/template и автообновление блоков HTML c помощью функции load(), но потом отошел от этой идеи ввиду некоторых сложностей реализации.
На самом деле оригинальная платформа сделана очень хитрым образом с точки зрения использования ресурсов системы. Если в пользовательской программе используются конструкции задержки по типу time.Sleep, программа на самом деле не спит, а выполняет свой код непрерывно, минуя задержки. А на выходе генерируется последовательность байт с учетом задержки, которую фронт отрабатывает таким образом, что пользователь не видит разницы. Создается ощущение, что программа запущена локально. Для безопасной работы с сетью и файловой системой используются некоторые трюки, про все подробности, используемые в The GO Playground можно почитать по ссылке. Оригинальный код платформы по ссылке.
Домашняя страница выглядит весьма минималистично, на выбор представлено пару тестовых программ. Блок ввода кода, блок результата выполнения программы.
➡️ Читать
⚙️ Github
@Golang_google