• Golang, PHP, Кинопоиск и Telegraph — Что их объединяет?

    Периодически, чтобы не покрыться пылью, я стараюсь создавать интересные штуки, которые смогли бы облегчить чью-то жизнь. Я стремлюсь к тому, чтобы они были, полезнее, чем социальная сеть для кошек. Один из недавних примеров — Телеграм-бот, который позволяет в указанных координатах найти известные Wi-Fi-точки и посмотреть пароли к ним.

    Этот раз не стал исключением и я задумал создать бота, который позволял бы с наибольшим комфортом и минимумом усилий смотреть любимые фильмы и сериалы, да еще и предоставлял контент в нескольких вариантах озвучки. Сказано — сделано. И теперь, когда железный друг человека радостно раздает пользователям их любимые шоу, я бы хотел поговорить о том, что сопутствовало созданию бота, какие проблемы вставали на моем пути и как они были решены. В первой главе я расскажу о Go глазами PHP-разработчика, во второй главе о поиске дзена для парсинга Кинопоиска, а в третьей — о недокументированной фиче Telegraph.

    image
    Читать дальше →
  • Изучение Go путём портирования небольшого Python веб-бекенда

    • Перевод
    Содержание: Чтобы выучить Go, я портировал свой бекенд небольшого сайта с Python на Go и получил забавный и безболезненный опыт в процессе.

    Я хотел начать учить Go какое-то время — мне нравилась его философия: маленький язык, приятная кривая обучения и очень быстрая компиляция (как для статически-типизированного языка). Что меня наконец заставило шагнуть дальше и таки начать его учить, так это то, что я стал видеть всё больше и больше быстрых и серьезных программ, написанных на Go — Docker и ngrok, в частности, из тех, которые я недавно использовал.


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


    Портирование


    Я начал с парочки 20-ти строчных скриптов на Go, но этого было как-бы мало, чтобы понять язык и экосистему. Поэтому я решил взять проект побольше и выбрал для портирования бекенд для моего сайта GiftyWeddings.com.


    На Питоне это было около 1300 строк кода, используя Flask, WTForms, Peewee, SQLite и ещё несколько библиотек для S3, ресайзинга картинок и т.д.


    Для Go-версии я хотел использовать как можно меньше внешних зависимостей, чтобы лучше освоить язык и как можно больше поработать со стандартной библиотекой. В частности, у Go есть отличные библиотеки для работы с HTTP, и я решил пока не смотреть на веб-фреймворки вообще. Но я всё же использовал несколько сторонних библиотек для S3, Stripe, SQLite, работы с паролями и ресайза картинок.

    Читать дальше →
  • Полное руководство по написанию утилиты для Go

    • Перевод


    Некоторое время назад я начал делать утилиту, которая упростила бы мне жизнь. Она называется gomodifytags. Утилита автоматически заполняет поля структурных тегов (struct tag) с помощью имён полей. Пример:


    Пример использования gomodifytags в vim-go


    Эта утилита облегчает управление многочисленными полями структуры. Она умеет добавлять и удалять теги, управлять их опциями (например, omitempty), определять правила трансформации (snake_case, camelCase и пр.) и многое другое. Как эта утилита работает? Какие Go-пакеты она использует? Наверное, у вас есть много вопросов.


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


    Налейте кофе и начинайте читать!

    Читать дальше →
    • +35
    • 9,3k
    • 7
  • Jaeger Opentracing и Microservices в реальном проекте на PHP и Golang

      Всем привет, меня зовут Юрий Буйлов, я руковожу разработкой в CarPrice. Коротко расскажу как и почему мы пришли к микросервисам на PHP и Golang. Что используем, как инструментируем и мониторим наши приложения в production. Далее расскажу о распределенном трейсинге, который обеспечивает нам прозрачность работы сервисов.


      Читать дальше →
    • О книге Varghese «Web Development with Go»



        Ниже привел свою версию краткого изложения содержания данной книги.

        Оглавление
        Chapter 1 — Getting Started with Go
        Chapter 2 — Go Fundamentals
        Chapter 3 — User-Defined Types and Concurrency
        Chapter 4 — Getting Started with Web Development
        Chapter 5 — Working with Go Templates
        Chapter 6 — HTTP Middleware
        Chapter 7 — Authentication to Web Apps
        Chapter 8 — Persistence with MongoDB
        Chapter 9 — Building RESTful Services
        Chapter 10 — Testing Go Applications
        Chapter 11 — Building Go Web Applications on Google Cloud
        Читать дальше →
      • OpenShift.IO: all-in-one платформа для разработки и CI/CD

          Тотальная контейнеризация и переосмысление роли контейнеров в процессе девелопмента и развития инфраструктуры не могла не сподвигнуть главных адептов open source мира на дальнейшие свершения. Red Hat уверенно гнет свою линию, и если несколько лет назад OpenShift был всего лишь PaaS-ом, то сегодня — это нечто большее. Сам по себе OpenShift понятен, но не прост. Сделать процесс управления контейнерами и развертывания приложений как можно более безболезненным и безопасным — главная задача, которую преследует OpenShift, и стоит отметить, ребята из Red Hat преуспели в этом. Но, сам по себе OpenShift никак не приближает к заветной мечте — предоставить девелоперу, ПМу, QA инженеру окружение, где будет все. Это такой себе идеальный мир без Jira или RedMine, без нескончаемых Jenkins слейвов, незаконченных обновлений стейджинга, различных IDE, которые по разному ведут себя с разными проектами, без ручных настроек проектов на GitHub. Этот идеальный мир — проект, который Red Hat анонсировали относительно недавно, а именно в мае 2017, и имя ему openshift.io.
          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • AMA. Avito. Backend

            Привет! Как и обещали, сегодня мы готовы отвечать на вопросы про бэкенд в Avito, разработку серверной части в целом и про высокие нагрузки в частности. Как работается с сайтом, на который ежемесячно заходит почти четверть населения России? Спросите у нас! Отвечать будем с 12 до 19 часов по московскому времени. Под катом я представляю шесть моих коллег, которые сегодня будут с вами на связи и напоминаю о возможных темах диалога.


            AMA!
            UPD, 19:03 мск: Спасибо всем за вопросы!
            Официально мы завершаем АМА и прощаемся, но по возможности будем отвечать на комментарии.


            Читать дальше →
          • Golang Moscow: встреча в Avito

              Привет, меня зовут Илья, я работаю в Avito и хочу позвать Go-разработчиков на митап, который будет проходить в эту субботу, 14-го октября, у нас в офисе при поддержке сообщества Golang Moscow.


              В этот раз главная тема митапа — пристальный разбор привычных стандартных средств Go: обсудим нюансы работы с io.Reader/io.Writer, послушаем анализ эволюции Garbage Collector от Go 1.5 до 1.9, узнаем, как можно расширять database/sql на примере работы с ClickHouse, похоливарим про кодогенерацию. Подробности по докладам и ссылка на TimePad — под катом.


              Читать дальше →
              • +21
              • 3,7k
              • 9
            • AMA, или спроси бэкендера из Avito: анонс

                Что такое AMA? Этот формат очень популярен на Reddit. Ты рассказываешь о себе и предлагаешь читателям задавать любые вопросы: Ask Me Anything! Особенно круто это удается у команд профессионалов — в итоге получается ряд коротких и полезных тематических бесед. Нам нравится Reddit, сам формат AMA и Хабрахабр, поэтому мы тоже вступаем в игру и приглашаем вас к диалогу здесь. Этот пост — анонс секции вопросов и ответов, которая будет работать в блоге Avito 13 октября, в пятницу, с 12 до 19 часов по мск. В этот день в AMA с вами будут на связи пять моих коллег, которые занимаются разработкой серверной части Avito. А под катом я напомню, о чем можно у них спросить.


                Читать дальше →
                • +22
                • 6,2k
                • 5
              • Монады для Go-программистов

                • Перевод

                Монады используются для компоновки функции (function composition) и избавления от связанного с этим утомительного однообразия. После семи лет программирования на Go необходимость повторять if err != nil превращается в рутину. Каждый раз, когда я пишу эту строку, я благодарю Gopher’ов за читабельный язык с прекрасным инструментарием, но в то же время проклинаю за то, что чувствую себя наказанным Бартом Симпсоном.


                Читать дальше →
              Самое читаемое