Обновить
117.74

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Период
Уровень сложности

Метаморфозы Go: сможет ли язык одолеть Python и Java?

Время на прочтение6 мин
Количество просмотров13K

Мы продолжаем публиковать выдержки из дискуссий экспертов, которые обсуждали наиболее важные тренды в IT. Эти встречи проводились *instinctools в рамках проекта «Техпора», и одна из бесед касалась развития языка программирования Go. Правильно ли считать Go перспективным языком и что в нем и экосистеме изменилось за последнее время? 

Читать далее

Пошаговая инструкция как создать NFT коллекцию на Golang + Ethereum (часть 1)

Время на прочтение4 мин
Количество просмотров104K

Привет Хабр.

История началась пол года назад, когда ко мне пришел мой старый знакомый художник и предложил создать NFT коллекцию на блокчейне Ethereum. Скажу сразу, я никогда не интересовался криптой и на тот момент понятие не имел, что такое NFT и как они устроены. 

В этой статья я не буду рассказывать, что такое NFT и для чего они нужны, вместо этого я сосредоточусь на технической части, т.к. когда я начинал материала было крайне мало и приходилось додумывать некоторые решения самому.

Читать далее

Распознавание речи в Telegram «на лету»

Время на прочтение2 мин
Количество просмотров11K

Задача распознавания голосовых сообщений в Telegram уже давно не новая. На эту тему написано много статей, разработано немало Telegram-ботов. С некоторыми решениями я ознакомился во время работы над функцией распознавания голосовых напоминаний для бота @RemindMegaBot и заметил, что в этих решениях используется не всегда оправданный подход:

Для распознавания речи аудиофайл загружается на диск.

Возникает справедливый вопрос — неужели нельзя обойтись без записи файла на диск? Ведь это освободит операционную систему от лишних операций и сократит время обработки данных!

Почему же разработчики используют именно такой подход?

Читать далее

Функциональные  опции в Go: реализация шаблона опций в Golang

Время на прочтение4 мин
Количество просмотров11K

В этом посте рассказывается о том, какие функциональные опции есть в Go и как мы можем использовать шаблон "опции" для их реализации. Функциональные опции имеют форму дополнительных аргументов функции, которые расширяют или изменяют ее поведение. Вот пример, в котором используются функциональные параметры для создания новой структуры House:

Читать далее

Go: стоит ли использовать указатели вместо копий структуры?

Время на прочтение4 мин
Количество просмотров12K

Систематическое использование указателей для передачи структур вместо их копирования для многих разработчиков Go кажется лучшим вариантом с точки зрения производительности.

Чтобы понять влияние использования указателя, как альтернативы передачи копии структуры, мы рассмотрим два юзкейса.

Читать далее

Перенос Sypex Geo API из PHP на go

Время на прочтение5 мин
Количество просмотров3.1K

Sypex Geo — сервис из периодически обновляемой базы данных для определения местоположения по IP-адресу и клиентской части автора @zapimir. К базе доступны несколько реализаций API на разных ЯП. На PHP написаны родной клиент, бандл для Symphony 2, расширение для Laravel и Yii.

Изучая golang, я написал к Sypex Geo 2.2 свой API. Пишу немного о его устройстве, а также даю пример готового http-сервера для пользования этим API, чтоб отдавал по GET http://localhost?ip={некий IPv4} что-то осмысленное.

Как оно устроено и как поднять http-сервер

Запускаем Golang на Jupyter Notebook

Время на прочтение5 мин
Количество просмотров6.6K

Если вы знакомы с Python, то уже сталкивались с Jupyter Notebook или работали в нём по крайней мере один раз. Jupyter Notebook — это удобный инструмент, позволяющий писать мини-код и отслеживать его выполнение. Он также помогает в документировании, ведении журнала и в том, чтобы поделиться своими работами с коллегами.

Неудивительно, что многие люди и крупные организации, такие как Netflix, для своих целей в разработке предпочитают Jupyter Notebook. Специально к старту нового потока курса по разработке на Go 26 мая мы решили поделиться переводом, автор которого рассказывает, как документировать проекты на Golang в Jupyter Notebook.

Читать далее

Азбука libp2p от Textile, часть 2

Время на прочтение7 мин
Количество просмотров2.7K

Перевод статьи начального уровня в блоге проекта Textile от 12 декабря 2019 г.

В предыдущей статье мы начали с вопроса: «Как подойти к своему первому p2p-приложению?» После недолгих размышлений мы быстро пришли к выводу, что решение не полагаться на централизованный сервер и сосредоточиться на том, чтобы сделать приложение для равноправных узлов, сопряжено с множеством дополнительных сложностей. Две основные группы «проблем» - это состояние приложения и инфраструктурное разнообразие протоколов. К счастью, мы обнаружили, что нам не нужно изобретать велосипед, заново решая груду инфраструктурных задач - вместо того мы можем использовать великолепный сетевой p2p-стек: библиотеку libp2p.

В сегодняшнем посте мы пойдем немного дальше и представим «игрушечное» приложение, чтобы почувствовать, как на самом деле можно что-то разрабатывать с помощью libp2p, и, надеюсь, мотивировать вас создать собственное p2p-приложение. Серьезно, вы удивитесь, насколько это просто!

Приложение

Сразу оговоримся, наша программа нынче будет написана на языке Go, с использованием библиотеки go-libp2p. Если вы ещё не знакомы с этим языком, настоятельно рекомендуем ознакомиться. Он действительно хорош для приложений, имеющих дело с параллелизмом и сетевыми взаимодействиями (такими, как например, обработка множества p2p-соединений). Большинство библиотек IPFS/libp2p имеют свои базовые реализации, написанные на Go. Прекрасным введением в Go является тур на golang.org.

Итак, наша программка будет простым приложением для пинг-понга с некоторыми добавочными настройками, чтобы сделать её более интересной, в отличие от обычных безыскусных примеров. Вот некоторые особенности нашего приложения (не волнуйтесь, мы расскажем подробней об этих пунктах позже):

Читать далее

Освобождение ресурсов в GO

Время на прочтение5 мин
Количество просмотров7.2K

Источник изображения

Go - это язык с автоматическим управлением памятью: сборщик мусора без участия программиста позаботится о том, чтобы освободить память, занимаемую объектами, более не используемыми программой. Но памятью вся автоматика в целом и ограничивается - об остальных используемых программой ресурсах нам по-прежнему нужно заботиться самостоятельно.

О механизмах освобождения ресурсов и решении связанных с ними проблем - в этой статье.

Читать далее

JavaScript, Python или Go: что лучше всего подойдёт для бэкенд-разработки в 2021 году?

Время на прочтение6 мин
Количество просмотров57K
Уже прошло почти восемь месяцев 2020 года, а технические прогнозы на этот год всё выходят и выходят. И это — несмотря на то, что очень сложно предсказать будущее в такой динамично развивающейся индустрии, как разработка программного обеспечения. Тот, кто работает в этой индустрии, видел, как технологии приходят и уходят. Иногда эти технологии проводят свою недолгую жизнь практически незаметно. Технологиям нелегко выживать в мире программирования.

Но если вспомнить прошлое, окажется, что языки программирования имеют огромную историю. В их истории было множество заметных событий, оказавших серьёзное влияние на индустрию. Например, C и Java, одни из самых старых языков программирования, до сих пор находят широкое применение. Но если поинтересоваться их популярностью, окажется, что сейчас они занимают не самые высокие позиции.



Я — программист. Мне очень нравится JavaScript (у меня с этим языком, так сказать, «вечная связь»), я пишу на этом языке уже давно. Но если немного оглядеться, то можно заметить, что в мире разработки ПО есть и другие языки. Предлагаю поразмыслить о том, что лучше использовать для серверной разработки в 2021 году: JavaScript, Python или Go. Но, прежде чем говорить о сильных сторонах каждого из этих языков, давайте взглянем на результаты некоторых исследований.
Читать дальше →

Go: Как использовать nil-значения без использования ссылочных типов

Время на прочтение5 мин
Количество просмотров8.4K


Создано на базе изображений gopherize.me


Довольно часто из Go кода нам приходится работать с различными HTTP API или самим выполнять роль HTTP сервиса.


Один из частых случаев: получаем данные в виде структуры из базы данных, отправляем структуру внешнему API, в ответ получаем другую структуру, как-то её преобразуем и сохраняем в базу.


Другими словами: такая обработка не требует множества отдельных операций со структурами запроса и ответа.


Для API нормальна ситуация, когда в структурах запроса и ответа есть поля, которые могут быть nil и могут принимать какие-то не-nil значения. Такие структуры выглядят обычно так

Читать дальше →

Демо-день Ozon Go

Время на прочтение1 мин
Количество просмотров4.4K
Встречаемся онлайн с ведущими разработчиками команды Ozon, а по совместительству преподавателями школы Ozon Go, чтобы поговорить о том, как грамотно писать код, и том, как код на Go используют в Ozon. Будет полезно как тем, кто ожидает результатов отбора на Ozon Golang School, так и тем, кто в отборе не участвовал.
Читать дальше →

Ближайшие события

Дзен Go (карманная версия)

Время на прочтение2 мин
Количество просмотров3.7K
В преддверии старта курса «Разработчик Golang» подготовили перевод небольшой полезной заметки.




Десять технических рекомендаций для написания простого, читаемого и удобного в обслуживании кода на Go. Представлено в рамках GopherCon Israel 2020.
Читать дальше →

Kaspersky Security Center — Новый уровень

Время на прочтение4 мин
Количество просмотров12K

На Хабре уже были пару заметок о автоматизации Kaspersky Security Center(KSC)


Здесь и Здесь


Сегодня же я предлагаю окунуться чуть глубже и перейти на новый уровень Использовать: KSC Open API для Kaspersky Security Center 10+.

Читать дальше →

Использование OAuth и API VK в Go

Время на прочтение3 мин
Количество просмотров13K
Сегодняшняя статья будет посвящена разработке программы на Go, использующей API vk.com для авторизации и загрузки данных о пользователе.

Сейчас найти современный сервис, который бы не использовал авторизацию по OAuth практически невозможно. Существует большое количество сценариев использования этого протокола. Попробуем же написать простой клиент для работы с этой технологией на Go.
Читать дальше →

Каких IT-специалистов нанимают в экономический кризис и пандемию?

Время на прочтение5 мин
Количество просмотров9.5K
Несмотря на то, что многие компании временно приостановили поиск новых сотрудников, в IT-сфере сохраняется достаточно высокий спрос на IT-специалистов. В статье я расскажу о том, какие разработчики пользуются особой популярностью даже в условиях кризиса.

Список составлен на основании трех источников. Это тематические каналы в мессенджере Telegram, вакансии в LinkedIn, а также размещенные не позднее, чем месяц назад вакансии на HeadHunter. Ключевую роль в составлении списка сыграла личная статистика моего агентства: я сравнила количество запросов на подбор за 2020 год с количеством заявок на те же специальности в 2019 году. (период: январь — апрель).

В список специальностей, которые переживают бум даже в период эпидемии вошли: Android разработчики, Python и Ruby on Rails программисты. Но самый настоящий фурор вызывают Golang (Go) программисты, спрос на которых за последние три месяца ощутимо вырос. Давайте по порядку и с цифрами (ведь без них любые слова — пустой звук).

Статистика актуальна только для России.
Читать дальше →

Новая программная модель Hyperledger Fabric: Go SDK

Время на прочтение4 мин
Количество просмотров2.6K


В предыдущей статье мы говорили о новой программной модели чейнкода в Hyperledger Fabric. И хотя релиз нового Go SDK ещё не состоялся, ничто не мешает нам уже сейчас посмотреть, что нас ждет в будущем, и даже протестить это на тестовой сборке. Не всё ещё реализовано (как, например, commit handlers), но планируемый дизайн программной модели уже ясен, так что давайте взглянем на него ближе.
Читать дальше →

Golang + Phaser3 = MMORPG — Клиент и Сервер

Время на прочтение6 мин
Количество просмотров5.9K
image

В прошлой статье мы сделали с вами заготовку, так сказать основу, на чем будет создаваться наша вселенная, визуализация с помощью консоли может быть и выглядит хорошо, но текстовые символы это скучно и не очень красиво, в этой статье мы займемся визуализацией наших тайлов с помощью Phaser.js

В прошлой статье наш проект выглядел так:

image

Теперь мы будем использовать и другие инструменты для веб-разработки, надеюсь у вас установлен Node.js и npm, если нет, то срочно установите. И так открываем терминал и запускам:
Читать дальше →

Go. FakeDb. Эмуляция работы БД в тестах

Время на прочтение3 мин
Количество просмотров6.5K

На днях писал тесты для модуля, который взаимодействует с базой данных. Привязывать модуль тестов к настоящей базе данных не хотелось — это создаёт дополнительные требования к окружению, где будет выполняться тестирование. Создавать сразу экземпляры типа sql.Rows, с нужными табличками также не хотелось — для меня этот тип "чёрный ящик", и хотелось бы, чтобы так оно и оставалось. Поиском по теме ничего интересного также не нашлось.


Захотел поделиться с сообществом своей находкой: в основной поставке Go, есть почти готовый инструмент для таких нужд: называется FakeDb.

Читать дальше →

Вклад авторов