• Мысленный эксперимент: Flutter на Go

      Совсем недавно я открыл для себя Flutter – новый фреймворк от Google для разработки кроссплатформенных мобильных приложений – и даже имел возможность показать основы Flutter человеку, который никогда не программировал до этого. Сам Flutter написан на Dart – языке, родившимся в браузере Chrome и сбежавшим в мир консоли –  и это навело меня на мысль "хм, а ведь Flutter мог вполне бы быть написан на Go!".


      Ведь почему нет? И Go и Dart созданы Google, оба типизированные компилируемые языки – повернись некоторые события чуть иначе, Go был бы отличным кандидатом для реализации такого масштабного проекта, как Flutter. Кто-то скажет – в Go нет классов, дженериков и исключений, поэтому он не подходит.


      Так давайте представим, что Flutter уже написан на Go. Как будет выглядеть код и вообще, получится ли это?


      Читать дальше →
    • Аскетичный вебъ: прототип барахолки на go и js

      screenshot


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


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


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

      Читать дальше →
      • +16
      • 6,2k
      • 4
    • Kotlin Native: следите за файлами

        Когда вы пишите command line утилиту, последнее, на что вам хочется полагаться, так это на то, что на компьютере где она будет запущена установлен JVM, Ruby или Python. Так же хотелось бы на выходе иметь один бинарный файл, который будет легко запустить. И не возиться слишком много с memory management'ом.

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

        У Go относительно простой синтаксис, неплохая стандартная библиотека, есть garbage collection, и на выходе мы получаем один бинарник. Казалось бы, что еще нужно?

        Не так давно Kotlin так же стал пробовать себя на схожем поприще в форме Kotlin Native. Предложение звучало многообещающе — GC, единый бинарник, знакомый и удобный синтаксис. Но все ли так хорошо, как хотелось бы?
        Читать дальше →
      • Делаем мессенджер*, который работает даже в лифте

          *на самом деле мы напишем только прототип протокола.

          Возможно, вы встречались с подобной ситуацией – сидите в любимом мессенджере, переписываетесь с друзьями, заходите в лифт/тоннель/вагон, и интернет вроде ещё ловит, но отправить ничего не получается? Или иногда ваш провайдер связи неправильно конфигурирует сеть и 50% пакетов пропадает, и тоже ничего не работает. Возможно, вы думали в этот момент — ну ведь можно же наверное как-то сделать, чтобы при плохой связи всё равно можно было отправить тот маленький кусочек текста, который вы хотите? Вы не одни.

          Источник картинки

          В этой статье я расскажу про свою идею для реализации протокола на основе UDP, который может помочь в этой ситуации.
          Читать дальше →
        • Минималистичный онлайн-симулятор линейных DC и AC цепей

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

            Скрытый текст
            Баланс электрических мощностей — штука, безусловно, хорошая, но ведь ошибиться можно и в нем. На выручку приходит моделирование. Симуляторы электрических цепей имеют богатую историю, и собрать модель цепи постоянного тока, например, в LTspice проблем не составит. Но это если в наличии у студента есть ноутбук или достаточный парк компьютеров в учебной аудитории. А так бывает не всегда и не везде :-) Есть симуляторы с графическим интерфейсом и для смартфонов, но удобство их использования — вопрос спорный. Но даже если симулятор и доступен, есть своеобразная проблема с моделированием установившегося режима цепей синусоидального тока. Если их моделировать в "transient"-режиме, то возникает вопрос с учетом длительности переходного процесса, возникающего при включении цепи — проблема "steady state detection". Но, скажете Вы, есть же режим "AC analysis". Это, конечно, так, но удобство его использования и интерпретации его результатов при решении учебной задачи расчета цепи синусоидального тока — на большого любителя. И о реактивных и полных мощностях симулятор тоже ничего не знает, да и определение показаний ваттметра — дело далеко не тривиальное.

            Я решил сотворить минималистичный симулятор линейных электрических цепей постоянного и синусоидального тока FoxySim с текстовым вводом описания цепи, для использования которого требуется устройство с браузером и возможностью ввода текста + доступ в Интернет.

            Браузер может быть любым, даже текстовым — вот, например, симуляция в Lynx:

            image
            Читать дальше →
          • Безликий код убьет программирование, и ничего мы с этим не сделаем


              Во время очередного спора знакомый озвучил мысль, которая меня очень сильно задела. «В большинстве популярных ЯПов существует очень много разных путей сделать одно и то же. Это приводит к проблемам. А вот в Go всё не так. Философия языка такова, что на Go разные разработчики решают одинаковые проблемы одинаковым образом. Поэтому их код легко читаем, предсказуем и надежен. И поэтому крупный бизнес выбирает Go». Это достаточно мощный аргумент, над которым нужно как следует поразмыслить, прежде чем опровергать.


              Поэтому я в два счета размазал его, прицепившись к отсутствию дженериков, а умную мысль унес, пожил с ней несколько дней, и в какой-то момент сформировал свое мрачное видение.

              Читать дальше →
            • За что я не люблю Go

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

              Эргономика разработки

              Никогда не встречал языка, настолько открыто противостоящего удобству для разработчика. К примеру, Роб Пайк неоднократно и открыто враждебно относился к любому обсуждению подсветки синтаксиса на Go Playground. В ответ на разумно сформулированные вопросы пользователей его публичные ответы отсвечивали пренебрежением и неуважением:

              Gofmt написан специально чтобы уменьшить количество бессмысленных дискуссий о форматировании кода, что отлично удалось. К сожалению, это никак не повлияло на количество бессмысленных дискуссий о подсветке синтаксиса или, как я предпочитаю её называть, spitzensparken blinkelichtzen.

              И снова в ветке 2012 Go-Nuts:

              Подсветка синтаксиса — для маленьких. В детстве меня учили арифметике на цветных палочках. Сейчас я вырос и использую чёрно-белые цифры.
              Читать дальше →
            • RoadRunner: PHP не создан, чтобы умирать, или Golang спешит на помощь

              • Перевод


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

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

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

              Enjoy!
              Читать дальше →
            • Как Go спасал нашу «Чёрную пятницу»

                Ранее мы уже рассказывали о том, что по мере роста нагрузки постепенно ушли от использования Python в бэкенде критичных сервисов на продакшене, заменив его на Go. А сегодня я, Денис Гирько, тимлид команды разработки Madmin, хочу поделиться деталями: как и почему это происходило на примере одного из важнейших для нашего бизнеса сервисов — расчета цены с учетом скидок по купонам.


                Читать дальше →
              • Представляем библиотеку kubedog для слежения за ресурсами Kubernetes

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


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

                Самое читаемое