• Несколько малоизвестных возможностей docker-compose

      Во многих инструкциях с просторов интернета описывают некий минимум действий, и как следствие минимум команд и возможностей.


      Я решил сделать некую подборку мало освещенных возможностей, особенностей. Статья не претендует на уникальность, это и мне, как памятка, и возможно некоторым падаванам поможет, начинающим свой путь с docker-compose.

      Читать дальше →
    • Telegram. Безлимитный сетевой диск. Бесплатный

        Привет, Хабр.

        Наверняка многие об этом задумывались, возможно у кого то эта идея лежит в TODO. У меня она пролежала примерно год, но таки удалось ее реализовать в виде работающего прототипа.

        TgCloud:


        • Виртуальная файловая система с открытым исходным г****кодом.
        • На локальном диске — только метаданные: имена, размер, структура папок и т.д.
        • Данные хранятся в Telegram и загружаются только при работе с файлом
        • Размер и тип файлов не ограничен, можно использовать с любой ОС

        Подробности реализации и ссылка на репозиторий под катом.
        Читать дальше →
      • Шпаргалка по структурам данных в Go


          Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
          Читать дальше →
        • Про ООП


            Чем больше читаю про ООП, тем больше возникает ощущение, что ООП понимают не только лишь все. Очередная статья этому пример.


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

            Читать дальше →
          • Пишем гибкий код, используя SOLID



              От переводчика: опубликовали для вас статью Северина Переса об использовании принципов SOLID в программировании. Информация из статьи будет полезна как новичкам, так и программистам с опытом.

              Если вы занимаетесь разработкой, то, скорее всего, слышали о принципах SOLID. Они дают возможность программисту писать чистый, хорошо структурированный и легко обслуживаемый код. Стоит отметить, что в программировании есть несколько подходов к тому, как правильно выполнять ту либо иную работу. У разных специалистов — разные идеи и понимание «правильного пути», все зависит от опыта каждого. Тем не менее, идеи, провозглашенные в SOLID, принимаются практически всеми представителями ИТ-сообщества. Они стали отправной точкой для появления и развития множества хороших методов управления разработкой.

              Давайте разберемся с тем, что такое принципы SOLID и как они помогают нам.
              Читать дальше →
            • Beego — это уже не Go

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

                Хайп Go пришелся где-то на 2014ый год, когда авторы приложений имевших от силы 1000RPM (requests per minute) вдруг как один решили, что им срочно нужен concurrency, потому что вот-вот их 1000RPM превратиться в 1000RPS (что тоже не так много, на самом деле).

                Результатом хайпа стало то, что к Go приобщилось много людей, привыкших к MVC архитектуре приложения, буть то Spring, Django или Ruby on Rails. И эту архитектуру, как сову на глобус, они стали натягивать на Go. Так появились кадавры вроде Beego и Revel. Revel благополучно сдох, хотя его и пытаются все еще откачать. А вот о Beego хочется поговорить отдельно.

                Немалый вклад в продвижение Beego среди масс вложил Richard Eng своим циклом статей «A word the Beegoist». Практически «Евангелие от Ричарда». Иронично, что не смотря на то, что Ричард оголтело продвигает Go, сам он на нем не пишет.

                В свою очередь я с Go, а еще хуже, с Beego, проработал не мало. И могу сказать, что это явно не тот путь, которым должна идти разработка на Go.
                Читать дальше →
              • Простейший JSON RESTful API на Эликсир

                • Translation

                Как реализовать на Эликсир JSON API endpoint без каких либо фреймворков?


                От переводчика:
                В статье приведён пример очень простого веб-приложения, которое можно рассматривать как Hello, World! в создании простейшего API на Эликсире.
                Код примера незначительно изменён для того, чтобы соответствовать текущим версиям библиотек.
                Полный код примера с изменениями можно увидеть на GitHub.



                Проблемы нового языка


                Многие разработчики приходят в Эликсир из мира Ruby. Это очень зрелая среда с точки зрения количества доступных библиотек и фреймворков. И такой зрелости мне иногда не хватает в Эликсире. Когда мне нужна сторонняя служба, результат поисков подходящей может быть следующим:

                какой же будет результат?
              • Мы включили TLS 1.3. Почему вам стоит сделать то же самое



                  В начале года, в отчете о проблемах и доступности интернета за 2018-2019 мы уже писали, что распространение TLS 1.3 неизбежно. Некоторое время назад мы сами развернули версию 1.3 протокола Transport Layer Security и, после сбора и анализа данных, наконец, готовы рассказать об особенностях этого перехода.

                  Председатели рабочей группы IETF TLS пишут:
                  «Вкратце, TLS 1.3 должен предоставить фундамент более безопасного и эффективного Интернета на следующие 20 лет».

                  Разработка TLS 1.3 заняла долгих 10 лет. Мы в Qrator Labs, вместе со всей остальной отраслью, внимательно следили за процессом создания протокола от первоначального проекта. За это время потребовалось написать 28 последовательных версий черновика для того, чтобы в конечном счёте в 2019 году свет увидел сбалансированный и удобный в развертывании протокол. Активная поддержка TLS 1.3 рынком уже очевидна: внедрение проверенного и надежного протокола безопасности отвечает требованиям времени.

                  По словам Эрика Рескорлы (технического директора Firefox и единственного автора TLS 1.3) в интервью The Register:
                  «Это полная замена TLS 1.2, использующая те же ключи и сертификаты, поэтому клиент и сервер могут автоматически общаться по TLS 1.3, если оба его поддерживают», — сказал он. «Уже есть хорошая поддержка на уровне библиотек, а Chrome и Firefox по умолчанию включают TLS 1.3».
                  Читать дальше →
                • Личный опыт: Пять сложностей при запуске бизнеса в США



                    Вот уже пару лет я живу в США, развиваю два собственных проекта и сегодня решил поделиться опытом. Мне на глаза часто попадаются статьи с рассказами о том, как классно делать бизнес в США, авторы которых не рассказывают о возможных сложностях на этом пути. В итоге у многих может сложиться чересчур идеализированное представление о том, как они приедут в Кремниевую Долину со своим стартапом менять мир.

                    Так было и со мной, что неоднократно приводило к фрустрациям при столкновении с реальности. Поэтому сегодня я расскажу о сложностях в ведении бизнеса в Америке, к которым следует морально подготовиться еще до переезда.
                    Читать дальше →
                  • Mkcert: валидные HTTPS-сертификаты для localhost


                      В наше время использование HTTPS становится обязательным для всех сайтов и веб-приложений. Но в процессе разработки возникает проблема корректного тестирования. Естественно, Let’s Encrypt и другие CA не выдают сертификаты для localhost.

                      Традиционно есть два решения.
                      Читать дальше →
                    • Badoo time-series storage: итак, она звалась Кассандрой

                        enter image description here


                        Привет, Хабр! Меня зовут Евгений Гугучкин, я – разработчик Badoo в команде «Платформа».


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


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

                        Читать дальше →
                      • Использование Consul для масштабирования stateful-сервисов

                          22 сентября провели наш первый нестандартный митап для разработчиков высоконагруженных систем. Было очень круто, много позитивного фидбека по докладам и поэтому решил не только их выложить, но и расшифровать для Хабра. Сегодня публикуем выступление Ивана Бубнова, DevOps из компании BIT.GAMES. Он рассказал о внедрении дискавери-сервиса Consul в уже рабочий высоконагруженный проект для возможности быстрого масштабирования и failover`а stateful-сервисов. А также об организации гибкого пространства имен для бэкэнд-приложения и подводных камнях. Теперь слово Ивану.


                          Я администрирую продакшн-инфраструктуру в студии BIT.GAMES и расскажу историю внедрения консула от Hashicorp в наш проект «Гильдия Героев» — fantasy RPG с асинхронным pvp для мобильных устройств. Выпускаемся на Google Play, App Store, Samsung, Amazon. DAU около 100 000, online от 10 до 13 тысяч. Игру делаем на Unity, поэтому клиент пишем на С# и используем свой собственный скриптовый язык BHL для игровой логики. Серверную часть пишем на Golang (перешли на него с PHP). Дальше — схематичная архитектура нашего проекта.
                          Читать дальше →
                          • +25
                          • 8.8k
                          • 9
                        • В криптопочте ProtonMail зарегистрировано уже 5 млн аккаунтов

                            В 2013 году сотрудники Европейской организации по ядерным исследованиям (ЦЕРН) с участием коллег из Гарвардского университета и Массачусетского технологического университета разработали ProtonMail — почтовый сервис с шифрованием. Он находится в Швейцарии. По мнению разработчиков, сервис защищён от действия американских и европейских законов, в первую очередь, от контроля АНБ. Главная цель — обеспечить безопасность и уважение к частной жизни пользователей. В каком-то смысле ProtonMail стал ответом на закрытие криптопочты Lavabit после атаки американских спецслужб на её создателя Ладара Левисона. Швейцарская компания Proton Technologies AG не попадает под действие американских законов, что сводит к минимуму вероятность подобного сценария.

                            В сентябре 2018 года ProtonMail достиг значительного рубежа: 5 миллионов зарегистрированных пользователей. «Мы хотим, чтобы вы смогли полностью дегуглифицировать свою жизнь, — сказал сооснователь и исполнительный директор компании Энди Йен в интервью изданию Inverse. — ProtonMail даёт все [необходимые] функции, а также безопасность и конфиденциальность, которые Google не может предоставить. Это наше долгосрочное видение». Кроме почты, в будущем появится шифрование документов, электронных таблиц и всего остального.
                            Читать дальше →
                          • GUI на Golang: GTK+ 3

                            • Tutorial

                            Решил я написать одно кроссплатформенное десктопное приложение на Go. Сделал CLI-версию, всё работает отлично. Да ещё и кросскомпиляция в Go поддерживается. Всё в общем отлично. Но понадобилась также и GUI-версия. И тут началось...


                            Golang gotk3

                            Читать дальше →
                          • Не без паники в Go

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

                              Читать дальше →
                            • DJI Mavic 2 Pro / Zoom в подробностях

                                DJI — мировой лидер в производстве гражданских дронов и технологий для аэрофотосъемки — вчера (23 августа 2018) добавил в свою линейку 2 новых аппарата легендарной серии Mavic. Mavic 2 Pro — первый в мире коптер с интегрированной камерой Hasselblad и Mavic 2 Zoom — первый в мире складной коптер с оптическим зумом. Новости созданные вчера были во многом написаны «на эмоциях», так что теперь пришло время рассмотреть его чуть подробнее и описать его функции и возможности.
                                image
                                Читать дальше →
                              • Ситуация: закрыты две уязвимости в TCP-стеке ядра Linux

                                  В начале месяца специалисты по ИБ обнаружили в ядре Linux две новые уязвимости: SegmentSmack и FragmentSmack. Обе они связаны с работой TCP-стека и позволяют злоумышленникам проводить DoS- и DDoS-атаки на систему жертвы. «Заплатки» для большинства дистрибутивов уже выпущены.

                                  Под катом — подробнее о сути.

                                  Читать дальше →
                                  • +28
                                  • 8.9k
                                  • 3
                                • Подбираем пароль к индийскому ИНН за две секунды, или зачем брутфорсу математика

                                  • Translation

                                  В Индии есть местный аналог нашего ИНН — «адхар». К нему прикручена электронная система «еАдхар». В «еАдхаре» каждое письмо блокируется паролем. И всё бы хорошо, но пароль составляется по простому шаблону: первые четыре буквы имени капсом плюс год рождения.


                                  Четыре заглавные буквы и четыре цифры. Из них можно составить 2 821 109 907 456 комбинаций. Если проверять тысячу комбинаций в секунду, на один пароль уйдёт лет девяносто.


                                  Долговато. Может ускоримся в пару (миллиардов) раз?

                                  Читать дальше →
                                • Запуск кластера RabbitMQ в Kubernetes

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

                                  В наших решениях мы используем интеграцию и с помощью Kafka, и с помощью gRPC, и с помощью RabbitMQ.

                                  В этой статье мы поделимся нашим опытом кластеризации RabbitMQ, ноды которого размещены в Kubernetes.

                                  image

                                  До RabbitMQ версии 3.7 его кластеризация в K8S была не очень тривиальной задачей, со множеством хаков и не очень красивых решений. В версии 3.6 использовался autocluster плагин из RabbitMQ Community. А в 3.7 появился Kubernetes Peer Discovery Backend. Он встроен плагином в базовую поставку RabbitMQ и не требует отдельной сборки и установки.

                                  Мы опишем итоговую конфигурацию целиком, попутно комментируя происходящее.
                                  Читать дальше →
                                • Git happens! 6 типичных ошибок Git и как их исправить

                                  • Translation


                                  Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

                                  Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
                                  Читать дальше →