Go (Golang) — TechCave

Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный компанией Google.

Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный компанией Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон, занимавшиеся до этого проектом разработки операционной системы Inferno. Официально язык был представлен в ноябре 2009 года. На данный момент его поддержка осуществляется для операционных систем FreeBSD, OpenBSD, Linux, Mac OS X, Windows, начиная с версии 1.3 в язык Go включена экспериментальная поддержка DragonFly BSD, Plan 9 и Solaris, начиная с версии 1.4 — поддержка платформы Android.

Стена группы

Загрузка...
6 месяцев назад
#

Композиция интерфейсов в Go



Одна из наиболее приятных для меня концепций Go — это возможность композиции интерфейсов. В этой статье мы разберем небольшой пример использования такой возможности языка. Для этого представим гипотетический сценарий, в котором две структуры обрабатывают пользовательские данные и выполняют http-запросы.

Источник
Загрузка...
6 месяцев назад
#

Пишем Telegram-бота на Go для поиска в Википедии



Содержание
  • Создаем бота

  • Пишем код

  • Разворачиваем бота

  • Заключение



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



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



Источник
Загрузка...
Den
6 месяцев назад
#

Go 1.10 Release Party @ Badoo: как это было. Видео, фото, отзывы





Привет, Хабр!

24 февраля мы устроили Go 1.10 Release Party @ Badoo по случаю свежего релиза. Спасибо всем, кто был с нами! Если вы пропустили встречу сообщества, под катом — видео выступлений, слайды, немного отзывов и фотоотчет.

Источник
Загрузка...
6 месяцев назад
#

Compact varint — уникальность и большие значения за ту же стоимость



Внимание: Код представленный в статье немного отличается от оригинальных EncodeVarint и DecodeVarint и даёт другие результаты. Будьте внимательны.



В multiformats/unsigned-varint обсуждении правильной записи числа в varint было замечено что многие числа в оригинальном varint могут быть записаны в последовательности разной длинны. Это даст разные блоки и их хеши при идентичных значениях кодированных в протобуфер.



Оригинальный varint

Оригинальный varint просто делит число на кусочки по 7 бит. И записывает их в порядке от младшего к старшему добавляя к каждому кусочку старший 8ой бит. Значение этого бита зависит от того последний это кусочек (0) или нет (1).



Таким образом например значение 0 мы можем записать во многих вариантах:



  1. 0000 0000 (0x00) varint = 0

  2. 1000 0000 0000 0000 (0x8000) varint = 0

  3. 1000 0000 1000 0000 0000 0000 (0x808000) varint = 0
    и так далее.



Compact varint

Я подумал что можно начинать значения контейнера большего размера от максимального значения предыдущего контейнера + 1. Ведь если мы используем контейнер такого размера то число должно быть больше максимума предыдущего контейнера.



Источник
Загрузка...
6 месяцев назад
#

Blockchain на Go. Часть 2: Proof-of-Work



Привет, Хабр! Представляю вашему вниманию перевод статьи "
Building Blockchain in Go. Part 2: Proof-of-Work".

Вступление

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

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

Источник
Загрузка...
6 месяцев назад
#

Много-этапные (multi-stage builds) сборки в Docker



Docker начиная с версии 17.05 и выше стал поддерживать многоэтапные сборки (multi-stage builds). С удивлением обнаружил, что никто еще не написал об этом на хабре. Поэтому давайте исправим этот пробел.

Источник
Загрузка...
7 месяцев назад
#

Обзорная лекция и запуск 2-й части курса по разработке веб-сервисов на Go





У нас две хорошие новости.



На Coursera мы запустили 2-ю часть онлайн-курса по разработке веб-сервисов на Go.
А 2-го марта в офисе проведем обзорную лекцию, на которой расскажем, почему вам стоит попробовать Go.



Под катом подробности.



Источник
Загрузка...
7 месяцев назад
#

Самый медленный способ ускорить программу на Go



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



Зачем тратить время на программирование на ассемблере, когда есть отличные языки программирования высокого уровня? Даже с сегодняшними компиляторами все ещё есть несколько случаев, когда захотите написать код на ассемблере. Таковыми являются криптография, оптимизация производительности или доступ к вещам, которые обычно недоступны в языке. Самое интересное, конечно же, оптимизация производительности.



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



Источник
Загрузка...
7 месяцев назад
#

Принцип SOLID в языке Go



Приветствую вас, хабровчане, решил поделиться с сообществом переводом довольно часто (по личным наблюдениям) упоминаемого поста SOLID Go Design из блога Dave Cheney, который выполнял для собственных нужд, но кто-то говорил, что нужно делиться. Возможно для кого-то это окажется полезным.



SOLID дизайн Go

Этот пост на основе текста из основного доклада GolangUK прошедшего 18-ого Августа 2016.
Запись выступления доступна в YouTube.



Источник
Загрузка...
7 месяцев назад
#

Часть 2: Сетевое взаимодействие — Написание blockchain менее чем за 200 строк кода на Go



image

Вы прочитали первую часть из этой серии? Если нет, то стоит взглянуть. Не волнуйся, мы подождем...



Источник
Загрузка...
7 месяцев назад
#

Writing Beautiful Packages in Go


Загрузка...
7 месяцев назад
#

GopherCon Russia 2018: программа конференции готова



image

Всем привет!

Продолжаем рассказывать про
GopherCon Russia, который пройдет 17 марта в Москве. В
прошлом посте мы прошлись по первой половине программы, а теперь она готова полностью. Например, на конференцию приедут и выступят ведущий подкаста Go Time
Brian Ketelsen и технический евангелист Microsoft
Ashley McNamara.

Напомним, что будет два параллельных потока докладов с 10.00 до 19.00, огненное афтепати в баре с 19.00 и до упора, крутые активности от наших партнеров. Кстати, 16 марта тоже будет пара камерных событий о Go, подробности coming soon. На конференцию ждем 400 участников (200 из них уже зарегистрировались),
присоединяйтесь!

Если вы очень-очень любите Go, то можете не читать дальше, а сразу
регистрироваться на сайте. Цена билета — 7000 рублей.

Итак, кто и о чем еще расскажет:

Источник
Загрузка...
7 месяцев назад
#

Пишем DNS proxy на Go





Давно хотел решить проблему с рекламой. Наиболее простым способом сделать это на всех устройствах оказалось поднятие своего DNS сервера с блокированием запросов на получений IP адресов рекламных доменов.

Источник
Загрузка...
7 месяцев назад
#

Можно ли использовать CQRS паттерн в GO?



Паттерн (CQRS — Command and Query Responsibility Segregation) разделяющей в своей основе команды по чтению данных от команд по их модификации или добавлению по средствам различных интерфейсов. Это позволяет достичь максимальную производительность, масштабируемость и безопасность, а также позволяет увеличить гибкость системы к модификациям с течением времени и снизить количество ошибок при усложнении логики системы, причиной которых обычно является обработка данных на доменном уровне.

Источник
Загрузка...
7 месяцев назад
#

Написание blockchain менее чем за 200 строк кода на Go



Привет, Хабр! Представляю вашему вниманию перевод статьи "Code your own blockchain in less than 200 lines of Go!".



image

Данный урок является хорошо адаптированным постом про простое написание blockchain на Javascript. Мы портировали его на Go и добавили дополнительных фич, таких как просмотр цепочек в браузере.



Источник
Загрузка...
1 2 4 5

Авторизация

Пользователи

Keyleas
Kirby
Имя Фамилия
lunchcalllina1978
Sever
stopresniebots1983
tekino
templide
Seangle