Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Golang-дайджест № 4  (1 – 30 апреля 2021)

Go

Свежая подборка новостей и материалов

Интересное в этом выпуске

Видео с GopherCon Russia 2021, создание BitTorrent-клиента с нуля, набор инструментов для работы с API Apple/Mac, сетевой сканер ARP, TCP, UDP, ICMP

Приятного чтения!

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры3.4K
Комментарии 2

Онлайн митап от ВсеИнструменты.Ру о PHP, MySQL, нагрузках и асинхронности

ВсеИнструменты.руВысокая производительностьPHPMySQL

Онлайн митап, посвященный опыту внедрения микросервисов и выбору между PHP и Go для этого, про эксплуатацию MySql на постоянно растущих нагрузках, а также про асинхронный PHP, его настоящее и будущее.

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Просмотры4.5K
Комментарии 6

Dice и Hired опубликовали ежегодную статистику самых высоких зарплат программистов в США

Карьера в IT-индустрииФинансы в IT

Сайты Hired и Vettery опубликовали совместный ежегодный отчет о зарплатах программистов в США. Платформы пришли к выводу, что в 2020 году технологическая отрасль оказалась очень устойчивой. Несмотря на экономический спад, зарплаты программистов в стране выросли. Отчет компаний составлен на основе данных от 10 тысяч компаний и 245 тысяч соискателей. Похожую статистику опубликовал портал Dice, основав свои выводы на опросе около 9 тыс. технических сотрудников.Миннеаполис.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры4.9K
Комментарии 7

RoadRunner здесь и сейчас

PHPGoLaravel

Для Laravel вышел пакет Laravel Octane который призван подружить Laravel c Swoole и RoadRunner. Мы уже какое-то время используем RoadRunner вместо php-fpm и поделимся своим опытом использования, какие у этого есть плюсы.

RoadRunner – это высокопроизводительный сервер приложения для PHP с открытым исходным кодом написанный на Go. Основное отличие от php-fpm состоит в том, что RoadRunner взаимодействует с долгоживущими php процессами, в отличии от php-fpm, который создает и убивает новый php процесс при каждом запросе. 

Плюсы долгоживущего процесса:

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры1.7K
Комментарии 7

Язык Go. Пишем эмулятор CHIP-8

Чулан
Из песочницы
Язык Go отпразновал недавно первый год своей жизни. Интерпретатору CHIP-8 стукнуло уже под сорок.
Любителям новых языков и старого железа посвящается этот пост — в нем мы будем писать эмулятор виртуальной машины CHIP-8 на языке Go.

О том, как настроить окружение для работы с Go писали уже не раз. За последнее время мало что изменилось, разве что версия для Windows стала более стабильной.
Установив все согласно инструкциям, приступаем к изучению внутренностей CHIP-8.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры3K
Комментарии 0

Быстрый старт – программируем на Go под Windows — настройка Environment

Go

Update (22.07.2013)


С момента изначального написания статьи многое изменилось. Я немного обновил пост, чтобы в сети не висела устаревшая инструкция.

Вместо вступления


Если кто не знает, Go (www.golang.org) – компилируемый язык программирования. Как и все хочет быть «лучше чем C». Разработку языка поддерживает Google (создатели языка — Rob Pike, Robert Griesemer и Ken Tompson), но Go — полностью open-source, в разработке принимает участие большое количество людей не из Google. Меня язык заинтересовал своей простотой и необычным подходом к ООП и многопоточности. Захотелось попробовать. Моя рабочая OS — Windows и будучи разбалованным платформой .Net, C# и Visual Studio мне было трудно именно начать. Хотя на самом деле это оказалось совсем просто, и достаточно быстро я настроил себе удобный Environment, состоящий, по сути, из IDE с подобием IntelliSense. О том, как это сделать за 15 минут я и хотел бы рассказать.
Читать дальше →
Всего голосов 49: ↑41 и ↓8 +33
Просмотры99.2K
Комментарии 18

Forth CPU. Что это такое? (Часть 1)

Чулан
На Хабре было мало постов про Форт, и впечатленный недавней великолепной работой Мура, расскажу о другом форт-процессоре — J1.
Это, наверное, самый минималистичный процессор, которому можно найти практическое применение.
Его можно сделать самому на FPGA, но я, как человек далекий от электроники, попробую написать его эмулятор. И, чтобы добавить ненормальности посту, писать эмулятор буду на языке Go.
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Просмотры2.5K
Комментарии 20

Go: производительность горутин

ПрограммированиеGo
Перевод

Введение


В этом посте мы рассмотрим производительность горутин (goroutine). Горутины — это нечто в роде очень дешевых и легковесных потоков. Больше всего, наверное, они похожи на процессы в Erlang.

Согласно документации мы можем использовать сотни тысяч горутин в наших программах. И цель статьи — проверить и конкретизировать это.
Читать дальше →
Всего голосов 52: ↑51 и ↓1 +50
Просмотры13K
Комментарии 6

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Облачные вычисления
Из песочницы

Предисловие


Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Целью является ознакомление русскоязычной аудитории с данной алгеброй исчисления процессов, коя нашла достаточно широкое применение в современной вычислительной науке в связи с большим распространением параллельных систем. Наиболее близкими и понятными практическими применениями CSP, думаю, будут являться следующие языки программирования:

CSP является формальным математическим языком, позволяющим описывать взаимодействие параллельных систем, основным его применением является формальная спецификация параллельной работы систем, например таких как Транспьютер, кроме того он применяется при разработке высоконадёжных площадок электронной торговли.
В данной статье будут рассказаны основы данной алгебры, без которой невозможно её дальнейшее изучение, в основном это базовое описание процесса, что покрывает первую половину первой главы книги.
Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Просмотры11.7K
Комментарии 9

Для тех, кто пишет на языке Go

Разработка веб-сайтовПрограммированиеGo

Друзья!


В продолжении поста «Google выпустила финальную версию языка программирования Go 1» интерес получил логическое продолжение и наше робкое желание было услышано администрацией Хабра и с сегодняшнего дня у языка Go есть собственный блог хаб.

Пользуясь случаем, не могу не порекомендовать книгу «Learning Go»
Читать дальше →
Всего голосов 61: ↑53 и ↓8 +45
Просмотры26K
Комментарии 55

Go for IT. Часть первая

Высокая производительностьРазработка веб-сайтовGo

Неуловимый Go.


Помните анекдот про неуловимого Джо? Именно восклицанием «Да кому он нужен!», прозвучавшим в форме вопроса "ЗАЧЕМ?", был встречен на Хабре релиз первой стабильной версии GO 1.

Именно на этот вопрос я хочу ответить циклом статей, оформленных в необычном для Хабра формате — в виде пошаговой совместной разработки действующего веб-проекта — с живым обсуждением и добавлением функционала. А чтобы вдвойне оправдать внесение цикла ещё и в хаб «Высокая производительность», мы поставим перед собой задачу создать не просто «хомяка», а проект, который наглядно продемонстрирует habri et orbi способность выдерживать значительные естественные нагрузки.

Вместо аперитива: реализация простейшего динамического веб-приложения на языке Go работает в 5-20 раз быстрее аналогичной Python-реализации. И всего в два раза уступает скорости отдачи статики Nginx-ом.

В рамках этого проекта, помимо самого языка Go, мы косвенно затронем и другие (относительно новые) технологии веб-разработки — HTML5, CSS3, Redis, MongoDB. Также я постараюсь вытащить из закутков долговременной памяти некоторые из трюков в области безопасности и экономии на спичках, коих накопилось много за полтора десятка лет работы в этой области. Устраивайтесь поудобнее, запасайтесь терпением и кофе — под катом «много букв», а ведь это только вводная часть :)
Читать дальше →
Всего голосов 95: ↑86 и ↓9 +77
Просмотры11.2K
Комментарии 179

Go for IT. Часть вторая

Go

Go4IT


Ранее в сериале: S01E01: Неуловимый Go

Теория заГовора.


Стоит ли растекаться мыслью по древу, погрязая в теологических спорах? Мы же взрослые люди — давайте достанем и измерим! Итак, не откладывая идею в долгий ящик, ставим понятные цели — создать за 48 часов «ХабрUp», способный привлечь внимание миллионной аудитории и, что само собой разумеется, выдержать нагрузку и принести прибыль.

Только таким способом я cмогу убедительно продемонстрировать лёгкость и применимость Go language для создания Web-проектов.

Тут ко мне возникнут два закономерных вопроса:
1. А не хитрожопый ли я Борис Бритва, желающий таким образом пропиарить новый стартап?
2. А не домашняя ли это заготовка, давно дожидавшаяся своей очереди в закромах?

За ответами на эти вопросы и за сутью проекта, извольте под кат, почтенные коллеги!
Читать дальше →
Всего голосов 36: ↑21 и ↓15 +6
Просмотры4K
Комментарии 35

Смерть goroutine под контролем

Go
Перевод

Вступление


Недавно наткнулся на маленький полезный пакет и решил поделиться находкой. Для этого публикую перевод статьи, обсуждающей проблему корректного завершения goroutine извне и предлагающей решение в качестве того самого маленького пакета tomb.

Перевод статьи


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

Если вы послушаете разговоры в сообществе в течение нескольких дней, то велик шанс, что вы услышите, как кто-то с гордостью отметит принцип:

Не общайтесь с помощью разделяемой памяти, разделяйте память с помощью общения.

На эту тему есть запись в блоге, а также интерактивное упражнение (code walk).

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

В своей заметке я хочу обратиться к открытому на данный момент в Go вопросу, связанному с этим подходом: завершение фоновой активности.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры6.8K
Комментарии 15

Горутины: всё, что вы хотели знать, но боялись спросить

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

Что за горутины?

Горутина (goroutine) — это функция, выполняющаяся конкурентно с другими горутинами в том же адресном пространстве.

Запустить горутину очень просто:
go normalFunc(args...)

Функция normalFunc(args...) начнет выполняться асинхронно с вызвавшим ее кодом.

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

Сколько вешать в граммах?

Чтобы было проще ориентироваться, рассмотрим цифры полученные опытным путем.
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры43K
Комментарии 14

Какая команда в консоли отнимает у вас больше всего времени?

Go
У меня — 'cd'.

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

Но должны же быть решения!



В моей любимой оболочке zsh есть такая возможность — «разворачивание» путей по нажатию : например, "/u/in/sy" -> "/usr/include/sys/"

В остальных оболочках можно приноровиться и использовать $CDPATH или pushd/popd, но лично мне это до сих пор кажется неудобным.

А еще есть пара утилиток для ускоренной навигации. Самая известная из них, пожалуй, autojump. Она следит в каких папках пользователь проводит больше всего времени и позволяет указывать только фрагмент пути к папке. Например "incl" приведет вас в "/usr/include", если вы там часто бываете.

Autojump вдохновила другого разработчика на создание утилиты "z". "Z" использует в качестве критерия для перехода т.н. "frecency" - комбинацию частоты посещений папки (frequency) и времени последнего перехода туда (recency).

Обе утилиты хороши по-своему, и я так бы и пользовался autojump или z, однако что-то мне не давало покоя. А недавно я услышал одну фразу:

If the product is used as a tool, its interface should be as unintelligent as
possible. Stupid is predictable; predictable is learnable; learnable is usable.


И тут я понял что самое время придумать свой велосипед. Не-intelligent. Тупой и удобный.
Читать дальше →
Всего голосов 85: ↑78 и ↓7 +71
Просмотры23.5K
Комментарии 77

Новогодний батл «Деда Мороза» и Санта-Клауса, а также пара слов о Golang

Я пиарюсь
Еще в преддверии прошлого нового года родилась у меня одна сумасшедшая идея: новогодний батл «Деда Мороза» и Санта-Клауса, но волей судеб проект так и не удалось запустить, хотя домен был куплен, а проект был практически готов. Прошел год, появилось чуть-чуть свободного времени и я решил все-таки довести сайт до ума и пустить в свободное плаванье.
Читать дальше →
Всего голосов 6: ↑2 и ↓4 -2
Просмотры3.7K
Комментарии 8

Объектно-дезориентированный язык

Ненормальное программированиеООПGo
Перевод

Каждый раз когда речь заходит о Go приходится слышать один и тот же вопрос:
Является ли Go объектно-ориентированным языком?

Честно говоря, меня это окончательно достало. Моя задача — расписать сию тему в данной статье, напечатать ссылку на визитках и раздавать их каждый раз когда фанаты ООП будут спрашивать у меня этот вопрос.
Читать дальше →
Всего голосов 79: ↑57 и ↓22 +35
Просмотры42.3K
Комментарии 43

Как мы перешли с 30 серверов на 2: Go

Высокая производительностьGo
Перевод

Как мы перешли с 30 серверов на 2: Go


Когда мы выпустили первую версию IronWorker около 3 лет назад, она была написана на Ruby, а API было написано на Rails. Через некоторое время нагрузка стала быстро расти и мы быстро достигли предела возможностей наших Ruby приложений. Короче говоря, мы перешли на Go. И если вы хотите узнать подробности — продолжайте читать…
дальше
Всего голосов 134: ↑116 и ↓18 +98
Просмотры68.1K
Комментарии 275

Крэши, вызванные исключениями

Go
Из песочницы
На прошлой неделе я вместе с несколькими моими коллегами учавствовал в громкой речи о том факте, что Go обрабатывает ошибки в ожидаемых сценариях посредством возвращения кода ошибки вместо использования исключений или другого схожего механизма. Это довольно спорная тема, потому что люди привыкли избегать ошибки с помощью исключений, а Go возвращает улучшенную версию хорошо известной модели, ранее принятой несколькими языками — включая C — при которой ошибки передаются через возвращаемые значения. Это значит, что ошибки маячат перед глазами программиста и вынуждают иметь с ними дело все время. Кроме того, спор переходит в направление того факта, что в языках с исключениями каждая ошибка безо всяких дополнительных действий несет в себе полную информацию о том, что и где произошло, а это может быть полезно в некоторых случаях.
Читать дальше →
Всего голосов 29: ↑20 и ↓9 +11
Просмотры3.5K
Комментарии 24

Отладка Go кода с помощью GDB. Введение

Go
Перевод
Tutorial
Нижесказанное относится к инструментарию gc. Gccgo имеет встроенную поддержку gdb. Помимо этого обзора Вы можете консультироваться с руководством по GDB.

Когда Вы компилируете и компонуете ваши Go программы с помощью инструментария gc в Linux, Mac OS X или FreeBSD, полученные в результате бинарные файлы содержат отладочную информацию DWARFv3, которую отладчик GDB последней версии (>7.1) может использовать для исследования живого процесса или дампа.
Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Просмотры8.9K
Комментарии 2