• Методика разработки высоконадёжных серверов на Go

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


    Читать дальше →
  • Проверка данных — Java & Spring Validation

      Проверка данных класса (bean) в java тема не новая, но актуальная и здесь я объединю различные аспекты: валидацию данных в рамках JSR-303, покажу как это сделать чисто в Java и с использованием Spring, как делать в стандартном приложении и в Web.

      Содержание: Валидация данных (JSR-303) в

      • стандартном Java приложении
      • c использованием Spring
      • объединение Java + Spring
      • Spring MVC
      Читать дальше →
      • +10
      • 50,7k
      • 2
    • Сложные системы. Выход на критический уровень

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

      Или рассмотрим эту статью, которую вы читаете. Вероятно, вы нашли её в социальной сети, скачали из компьютерной сети и в настоящее время расшифровываете смысл с помощью своей нейронной сети.

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

      Это наша тема на сегодня: как, насколько хаотично всё движется и распространяется. Некоторые примеры, чтобы подогреть аппетит:

      • Инфекционные заболевания, переходящие от носителя к носителю внутри популяции.
      • Мемы, распространяющиеся по графу фоловеров в социальных сетях.
      • Лесной пожар.
      • Идеи и практики, проникающие в культуру.
      • Каскад нейтронов в обогащённом уране.
      Читать дальше →
      • +37
      • 7,6k
      • 6
    • Трассировка сервисов, OpenTracing и Jaeger

        image

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

        Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
        Читать дальше →
        • +29
        • 18,2k
        • 7
      • Как конструировать слова (от автора, который ненавидит читать)

        • Перевод
        Честно говоря, я писатель. Мне платят за то, чтобы я писал слова. Но есть вещь, которую большинство обо мне не знают: я ненавижу читать.

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

        image

        Все что я вижу — простыня слов.

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

        Дело в том, что, в основном, я пишу тексты для приложений и сайтов. Здесь краткость лучше восхитительного стиля, на счету каждый знак. А писать текст для интерфейса во многом напоминает дизайн — дизайн слов для людей, которые ненавидят читать.
        Читать дальше →
      • Как мы разработали девкит Librem 5 полностью на свободном ПО

        • Перевод
        От переводчика: Librem 5 (на рендере) — защищённый смартфон под Linux от компании Purism, который создаётся на максимально открытом железе и софте за счёт краудфандинга.

        Сегодня расскажем о разработке Librem 5 Developer Kit и о том, как мы использовали в его разработке только на 100% свободные программы.

        Дизайн девкита опубликован на условиях лицензии GNU GPLv3+, аппаратный репозиторий Git лежит здесь.

        KiCad — очевидный выбор EDA

        Перед началом разработки было не совсем ясно, по какому пути разрабатывать проект. В частности, какой инструмент выбрать для автоматизации проектирования электроники (EDA). Изначально идея состояла в изменении платы i.MX 6QP OpenRex от FEDEVEL для соответствия всем требованиям к девкиту, но мы сразу столкнулись с двумя основными проблемами: там использовался архаичный процессор i.MX 6QP, а ещё хуже, что плата была разработана в проприетарной системе Altium. К счастью, у меня уже был опыт проектирования электроники с помощью EDA KiCad, поэтому мы сумели создать дизайн девкита, используя на 100% свободное ПО.
        Читать дальше →
      • Корпоративная анатомия

          Сергей зашел в кабинет собственника – тот сидел на своем месте, а через стол расположилась Ольга.

          — Сергей, приветствую! – Курчатов встал, протянул руку через стол. – Присаживайся!

          Сергей сел рядом с Ольгой, вежливо улыбнулся и приготовился слушать. Настроение было не сильно рабочим – до увольнения оставалось четыре с половиной дня.

          — Сергей, не буду ходить вокруг да около. – начал Курчатов. – Я предлагаю тебе остаться в нашей компании. И не просто остаться, а возглавить ее.

          Сергей шумно вздохнул. Опять начинается…
          Читать дальше →
        • Раздача халявы: нетормозящие треды в Java. Project Loom

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


            Объясняем работу Project Loom на коробках с пиццей! Налетай!


            Всё это снимается и пишется специально для Хабра.




            Читать дальше →
          • Асинхронный Python: различные формы конкурентности

            С появлением Python 3 довольно много шума об “асинхронности” и “параллелизме”, можно полагать, что Python недавно представил эти возможности/концепции. Но это не так. Мы много раз использовали эти операции. Кроме того, новички могут подумать, что asyncio является единственным или лучшим способом воссоздать и использовать асинхронные/параллельные операции. В этой статье мы рассмотрим различные способы достижения параллелизма, их преимущества и недостатки.
            Читать дальше →
          • Dependency Injection с проверкой корректности на Scala средствами языка

            Хочу рассказать про свою небольшую библиотеку Dependency Injection на Scala. Проблема которую хотелось решить: возможность протестировать граф зависимостей до их реального конструирования и падать как можно раньше если что-то пошло не так, а также видеть в чем именно ошибка. Это именно то, чего не хватает в замечательной DI-библиотеке Scaldi. При этом хотелось сохранить внешнюю прозрачность синтаксиса и максимально обойтись средствами языка, а не усложнять и влезать в макросы.


            Также хочу сразу обратить внимание что я концентрируюсь на DI через конструктор, как на самом простом и идиоматичном способе, не требующем изменений в реализацию классов.

            Читать дальше →
            • +19
            • 4,5k
            • 6
          • Java и Project Reactor

            • Tutorial


            Всем привет! Меня зовут Лёха, и я работаю бэкенд-разработчиком в FunCorp. Сегодня мы поговорим про реактивное программирование, библиотеку Reactor и немного про веб.


            Реактивное программирование часто «подвергается упоминанию», но если вы (как и автор статьи) всё ещё не знаете, что это такое — устраивайтесь поудобнее, попробуем разобраться вместе.

            Читать дальше →