Привет, уважаемые читатели. В то время, как обсуждается возможный новый дизайн обработки ошибок и ведутся споры о преимуществах явной обработки ошибок, предлагаю рассмотреть некоторые особенности ошибок, паник и их восстановления в Go, которые будут полезны на практике.
Рубрика «golang» - 18
bytes.Buffer в Go: оптимизации, которые не работают
2018-09-06 в 8:49, admin, рубрики: allocation, buffer, escape analysis, Go, golang, performance, Блог компании Intel, Компиляторы, Программирование, системное программированиеМногие Go программисты знакомы с bytes.Buffer. Одно из его преимуществ состоит в том, что он позволяет избегать выделений памяти в куче по той же схеме, что и "оптимизация коротких строк" (small buffer/size optimization):
type Buffer struct {
bootstrap [64]byte // для избежания аллокации малых слайсов в куче
// ... другие поля
}
Есть только одна проблема. Эта оптимизация не работает.
К концу этой статьи вы узнаете, почему эта оптимизация не работает и что мы можем с этим сделать.
Грядущий релиз версии 1.11 языка программирования Go принесет экспериментальную поддержку модулей — новую систему управления зависимостями для Go. (прим.перев.: релиз состоялся)
Недавно я уже писал об этом небольшой пост. С тех пор кое-что слегка поменялось, да и мы стали ближе к релизу, поэтому мне кажется, что настало время для новой статьи — добавим больше практики.
Итак, вот, что мы будем делать: создадим новый пакет и потом сделаем несколько релизов, чтобы посмотреть, как это работает.
Go 1.11 зарелизился — WebAssembly и Нативные модули
2018-08-27 в 3:22, admin, рубрики: Go, golang, webassembly, модули, Программирование, Промышленное программированиеВ эту пятницу состоялся релиз Go 1.11. Ключевые вещи релиза — экспериментальная поддержка WebAssembly, а также новая концепция Модулей, которые призваны стать стандартом распространения кода.
Читать полностью »
Как настроить деплой web-приложения на Go для Gitlab на VDS
2018-08-23 в 16:01, admin, рубрики: centos 7, ci/cd, devops, Go, golang, vdsПредисловие
Эта статья является результатом недельного поиска весьма разрозненной информации о том, как же настроить деплой web-сервиса на Go. Не на Heroku, не на Docker, не на Digital Ocean, а просто на старомодный VDS с CentOS 7x64. Почему-то в сети нет этой информации, а большинство туториалов начинаются с того, как настроить билд, и заканчиваются запуском тестов.
Сразу предупрежу, что впервые настраивал CI/CD процесс, так что это статья от новичка новичку.
Читать полностью »
Кастомный роутер для браузерного тестирования
2018-08-15 в 14:07, admin, рубрики: docker, golang, phantomjs, Программирование, Тестирование IT-системТут не совсем про тестирование, а больше про парсинг сайтов через браузеры. Ничего нового и интересного, кроме самописного роутера-хаба и исполняющих узлов.
Почему хаб-роутер?
Потому что он регистрирует в себе узлы и перенаправляет запросы из вне на конкретный узел.
Читать полностью »
Распределение нагрузки при парсинге сайтов и подключение дополнительных облачных ресурсов
2018-08-15 в 14:07, admin, рубрики: docker, golang, phantomjs, Программирование, Тестирование IT-системВ этом посте пойдет речь о библиотеке, которая регистрирует в себе узлы и перенаправляет запросы из вне на конкретный узел.
Как появилась идея написать этот проект?
После того, как появилась необходимость в парсинге сайтов в больших количествах я попытался реализовать такую штуку с помощью selenium grid, потом взял selenoid. selenoid подошел, но там было много того, что мне было не нужно, например версии и варианты браузеров, а также, самое главное, это отсутствие auto scaling (но selenoid не для этого). 90% времени кластер простаивает, а потом появляется большая нагрузка, с которой сервер не справляется. Получается большие расходы на железо, которое почти все время не работает, да еще и не справляется. Я подумал, что было бы здорово, если бы по мере поступления нагрузки — количество исполняемых браузеров бы увеличивалось, а как нагрузка пропадает и браузеры удаляются. К счастью такое можно реализовать, например, через AWS EC2.
Читать полностью »
Typegram — дзэн блог платформа
2018-08-13 в 20:14, admin, рубрики: blog engine, Go, golang, open sourceПривет хабр. Решил показать вам движок, который я потихоньку разрабатываю. Это блог платформа, по возможностям очень близкая к медиум и подобным проектам.
Базовые возможности:
Публикации, комментарии, избранное, подписки, уведомления, рейтинги, голосования.
Минималистичный, текстовый дизайн:
Решил я написать одно кроссплатформенное десктопное приложение на Go. Сделал CLI-версию, всё работает отлично. Да ещё и кросскомпиляция в Go поддерживается. Всё в общем отлично. Но понадобилась также и GUI-версия. И тут началось...
Что нового в GoLand 2018.2
2018-08-02 в 14:48, admin, рубрики: Go, GoLand, golang, jetbrains, Блог компании JetBrainsПривет!
На прошлой неделе вышел GoLand 2018.2. В этой статье мы расскажем о том, что появилось в новой версии.
Что нового вкратце:
- поддержка модулей Go (ранее известных как vgo);
- улучшенный Move-рефакторинг и новые автоматические исправления;
- пополнение в семействах Postfix Completion and Intention Actions;
- отладчик теперь поддерживает точки останова, не требующие полного прерывания программы, а также отложенную загрузку массивов, слайсов и словарей.
Кроме того, много улучшений пришли из платформы IntelliJ: от нововведений для систем контроля версий и поддержки Touch Bar для MacBook Pro до последних новинок из мира фронтенд-разработки.
Читать полностью »