Рубрика «Go» - 30

RoadRunner: PHP не создан, чтобы умирать, или Golang спешит на помощь - 1

Привет! Мы в Badoo активно работаем над производительностью PHP, поскольку у нас достаточно большая система на этом языке и вопрос производительности — это вопрос экономии денег. Более десяти лет назад мы создали для этого PHP-FPM, который сначала представлял собой набор патчей для PHP, а позже вошёл в официальную поставку.

За последние годы PHP сильно продвинулся вперёд: улучшился сборщик мусора, повысился уровень стабильности — сегодня на PHP можно без особых проблем писать демоны и долгоживущие скрипты. Это позволило Spiral Scout пойти дальше: RoadRunner, в отличие от PHP-FPM, не очищает память между запросами, что даёт дополнительный выигрыш в производительности (хотя этот подход и  усложняет процесс разработки). Мы сейчас экспериментируем с этим инструментом, но у нас пока нет результатов, которыми можно было бы поделиться. Чтобы ждать их было веселее, публикуем перевод анонса RoadRunner от Spiral Scout.

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

Enjoy!
Читать полностью »

Рады анонсировать новую Open Source-разработку компании «Флант» для DevOps-специалистов и не только — kubedog. Это написанная на Go библиотека и CLI на её основе для отслеживания событий ресурсов Kubernetes и сбора их логов.

Представляем библиотеку kubedog для слежения за ресурсами Kubernetes - 1

На данный момент библиотека поддерживает слежение за следующими ресурсами: Pod (и Container), Job, Deployment, StatefulSet и DaemonSet. События и логи передаются через callback’и.Читать полностью »

Сообщество Go в Казани и наши митапы - 1

2-го декабря 2018 прошёл первый проведённый Казанским Go сообществом митап.
5-го января следующего года планируется провести следующий.

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

Читать полностью »

Хорошие новости! Официальный драйвер go для mongoDB вышел в бета-версию. Немного поразмыслив я решил перевести статью с официального сайта mongoDB вместо того, чтобы писать материал самостоятельно. Вот что будет в этом туториале:

  • Установка mongo-go-driver
  • Соединение с mongoDB с помощью mongo-go-driver
  • Использование BSON объектов
  • Использование CRUD методов
    imageЧитать полностью »

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

Го - это портируемый Си
Читать полностью »

Пацаны, так Ruby умер или нет? - 1

Последнее время, когда я говорю с разработчиками или компаниями, часто слышу одну и ту же историю разными словами — «мы писали на Ruby, но сейчас переезжаем». С одной стороны, ничего удивительного. Разработка — дело изменчивое, всегда появляется что-то новое, каждый день надо тратить кучу мозгов, чтобы оставаться актуальным.

Но при этом существуют же некие преданность технологии и даже культ инструмента. Скажи пхп-шнику, что пора переезжать на .NET, услышишь «PHP отличный, полмира на нем пишет», или просто получишь в лоб.

Что же не так с Ruby, и куда делась его взрывная популярность? Я поговорил с несколькими рубистами. Например, Максимом Индыковым из Staply, чья команда переезжает с Ruby на Go, и с Алексеем Кузнецовым из GeekBrains, компании, которая начиналась с курсов по Ruby, а сейчас отказалась от них полностью.
Читать полностью »

Здравствуйте, коллеги!

В январе у нас наконец-то выходит долгожданная книга по Kubernetes. Речь о «Mastering Kubernetes 2nd edition» Джиджи Сайфана:

Kubernetes: поразительно доступное решение для персональных проектов - 1

Мы не решились издавать книгу по Kubernetes около года назад, так как на тот момент технология определенно напоминала дредноут для суперкорпораций. Однако, ситуация меняется, в подтверждение чего мы предлагаем почитать большую статью Калеба Докси (Caleb Doxsey), написавшего, кстати, книгу о языке Go. Аргументы господина Докси очень интересны, и мы надеемся, что после ознакомления с ними вам действительно захочется попробовать Kubernetes на практике.
Читать полностью »

Путешествие gocritic'а в прошлое - 1

Хочу поделиться результатами работы последних нескольких дней, которые включали в себя анализ git истории некоторых крупных Go проектов с целью нахождения коммитов, которые исправляли ошибки c последующей их формализацией для детектирования в случае их появления в новом коде.

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

Читать полностью »

Одна из малозаметных, но важных функций наших сайтов объявлений — сохранение и отображение количества их просмотров. Наши сайты следят за просмотрами объявлений уже больше 10 лет. Техническая реализация функциональности успела несколько раз измениться за это время, и сейчас представляет из себя (микро)сервис на Go, работающий с Redis в качестве кэша и очереди задач, и с MongoDB в качестве персистентного хранилища. Несколько лет назад он научился работать не только с суммой просмотров объявления, но еще и со статистикой за каждый день. А вот делать все это действительно быстро и надежно он научился совсем недавно.

image

В сумме по проектам, сервис обрабатывает ~300 тысяч запросов на чтение и ~9 тысяч запросов на запись в минуту, 99% которых выполняются до 5мс. Это, конечно, не астрономические показатели и не запуск ракет на Марс — но и не такая тривиальная задача, какой может показаться простое хранение чисел. Оказалось, что делать все это, обеспечивая сохранение данных без потерь и чтение согласованных, актуальных значений требует определенных усилий, о которых мы расскажем ниже.
Читать полностью »

Вырываемся в top10. Бот для игры в Telegram

Предыстория

Все началось с того, что мне прислали ссылку на бота в Telegram с предложением поиграть.
Выглядит он примерно так.

Вырываемся в top10. Бот для игры в телеграме - 1

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

Поехали

Для базы решил использовать sqlite3, он мобильный и для этой задачи самое то.

Стурктура базы выглядит так.

CREATE TABLE IF NOT EXISTS words (
    word VARCHAR(225) UNIQUE NOT NULL,
    length INTEGER NOT NULL
);

  • word — из название понятно что это хранимое буквенное значение слова.
  • length — символьная длина.

Структура есть, для ее заполнения воспользовался списком существительных русских слов.

Заполнение базы и поиск слов было решено реализовать в одном коде, обработку разделить флагами.

Так же само создание файла базы и создание таблицы реализовываются в init()

func init() {
    var err error
    connetion, err = sql.Open("sqlite3", "./words.db")
    if err != nil {
        log.Fatalf("Failed connection: %v", err)
    }
    _, err = connetion.Exec(`CREATE TABLE IF NOT EXISTS words (word VARCHAR(225) UNIQUE NOT NULL, length INTEGER NOT NULL);`)
    if err != nil {
        log.Fatalf("Failed create database table words: %v", err)
    }
}

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js