• Fluent 1.0: гибкая система локализации

    • Перевод


    Fluent — семейство спецификаций, реализаций и практик для локализации, разработанной Mozilla. Сейчас она применяется в браузере Firefox. Используя Fluent, переводчики могут писать более естественные переводы на родном языке. Сегодня мы представляем спецификацию формата файлов Fluent версии 1.0. Приглашаем разработчиков переводческих инструментов попробовать его и рассказать о ваших впечатлениях.

    Читать дальше →
  • Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

      Данная статья о том как настроить современный почтовый сервер.
      Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
      С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
      С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
      С поддержкой нескольких физических интерфейсов.
      С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

      Если вы не хотите изучать эти все технологии, но хотите настроить такой сервер — тогда эта статья для вас.

      В статье отсутствуют попытки пояснить каждую деталь. Пояснение идёт к тому, что настроено не стандартно или важно с точки зрения потребителя.
      Читать дальше →
    • Использование libpam при настройке SOCKS сервера Dante

      • Tutorial
      Всем доброго дня. Столкнувшись с необходимостью настроить SOCKS5 я обнаружил, что в интернетах и в частности на Хабре при настройке авторизации для dante-server используется метод «username».

      Этот метод отнюдь не является безопасным. Об этом не раз писалось ( например ) и приводилось множество сравнений с 3proxy который для авторизации использует отдельный файл паролей. Кого интересует реализация данной возможности в Dante прошу под кат.
      Читать дальше →
    • Чистый код на PHP

      • Перевод


      Это принципы разработки ПО, взятые из книги Clean Code Роберта Мартина и адаптированные для PHP. Это руководство не по стилям программирования, а по созданию читабельного, многократно используемого и пригодного для рефакторинга кода на PHP.


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


      Статья вдохновлена clean-code-javascript.

      Читать дальше →
    • Укрощаем мультимедиа с помощью ffmpeg

        Внезапно ваш диск под завязку забит фотографиями и видео, а впереди новые поездки. Что делать, покупать новый, арендовать дисковое пространство на облаке, или может лучше сжать видео файлы через ffmpeg?





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

        Читать дальше →
      • Шаблоны проектирования с человеческим лицом

        • Перевод

        image


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


        Как сказано в Википедии:


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

        image Будьте осторожны


        • Шаблоны проектирования — не «серебряная пуля».
        • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
        • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

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

        Читать дальше →
      • Идеальный каталог, набросок архитектуры

        Подвернулась мне задачка разработать универсальный каталог товаров и услуг, по совместительству каталог предприятий, документов и чего угодно ещё. В работе этот «опыт» не пригодился, а идея хорошая, по-моему скромному мнению :) Хочется поделиться, и послушать критику.

        Каталог подразумевает упорядоченность — иерархию, подразумевает непосредственно хранение информации, и конечно поиск, наверное аналитику… что-то ещё? Больше ничего в голову не приходит.

        Теперь по пунктам.
        Читать дальше →
      • Настройка окружения SELinux на примере LAMP-сервера

        • Tutorial

        Это третья статья из цикла


        И сегодня она попала в поток «Администрирование». Сегодня мы не будем писать модули или настраивать RBAC, а пойдем по пути наименьшего сопротивления и просто захарденим обычный LAMP-сервер при помощи готовой политики, включив необходимые настройки.

        Если кто забыл, за аббривиатурой LAMP скрывается Linux, Apache, Mysql, PHP, т.е. это большая часть всех VDS, которые покупают люди для хранения своих личных блогов. Надеюсь, что этот поможет всем им стать немного безопаснее :)
        Читать дальше →
      • Настройка DKIM/SPF/DMARC записей или защищаемся от спуфинга

        Приветствую, Хабр! В этой статье будет инструкция по настройке DKIM/SPF/DMARC записей. А побудило меня написать эту статью полное отсутствие документации на русском языке. Все статьи на эту тему, которые были мной найдены, были крайне не информативны.
        Читать дальше →
        • +23
        • 149k
        • 7
      • Let's Encrypt и nginx: настройка в Debian и Ubuntu

        • Tutorial

        image


        Если вдруг вся эта история прошла мимо вас, Let's Encrypt — центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Сертификаты от Let's Encrypt уже используются на более чем 10 миллионах доменов.


        Кроме очевидной бесплатности у сертификатов от Let's Encrypt есть особое, отсутствующее у любых других коммерческих сертификационных центров, достоинство: если вы однажды получили сертификат от Let's Encrypt, то, при прочих равных, это навсегда. Не нужно раз в год-два вручную обновлять сертификаты. Не нужно вообще вспоминать что сертификаты где-то есть. Получил, настроил и забыл!


        Внимательный читатель сразу захочет возразить: как же так, ведь известно что сертификаты выдаются со сроком действия в три месяца? Всё дело в автоматическом обновлении сертификатов, которое возможно при полном отсутствии действий со стороны человека.


        Организации автоматического обновления сертификатов в статье уделено пристальное внимание, с тем чтобы вы могли в полной мере оценить это принципиальное преимущество Let's Encrypt.

        Читать дальше →
      • На пути к созданию безопасного веб-ресурса. Часть 1 — серверное ПО

        • Tutorial
        Я уже довольно долгое время хочу формализовать все свои мысли, опыт, ежедневно применяемый на практике, и многое другое в одном месте и предоставить их общественности. Уверен, многим этот материал будет полезен. Он посвящен различным моментам в конфигурации серверного ПО Linux и безопасным подходам к созданию сайтов/приложений на php (все же это до сих пор одна из самых популярных связок, хоть её успешно и подвигают другие технологии. Но советы так же легко применимы и к веб-ресурсам на других технологиях).

        Т.е. речь идет о типичной ситуации. Проект (стартап), купили под него сервер и разворачиваем на нем сайт. Бизнесу не нужно тратить лишних денег на сервера (поэтому будут выбраны наиболее производительные связки ПО), а так же нужно, чтобы все было безопасно, при чем бесплатно :)
        Много текста. По-другому никак
      • Как использовать HTTP заголовки для предупреждения уязвимостей



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

        Безопасность не менее важна, чем содержание или поисковая оптимизация сайта. Тысячи сайтов взламываются из-за ошибок в конфигурации или недостаточной защиты. Если вы владелец сайта или специалист по защите информации, и интересуетесь защитой сайта от кликджекинга, внедрения кода, уязвимостей MIME типов, XSS-атак и т.д., то данная инструкция будет вам полезна.

        В этой статье я расскажу о разных заголовках HTTP для использования с различными веб-серверами, сетевой периферией или сетями доставки контента, чтобы повысить уровень защищенности сайта.
        Читать дальше →
      • А если без JavaScript?

        В нашем мире без JavaScript никуда! Куча фреймворков, библиотек и прочей радости! jQuery плотно вошел в нашу жизнь. React с Angular пробивают дорогу к светлому будущему. Да и не за горами поддержка браузерами ES6 без Babel.

        Но если тема заходит об обычном сайте со стандартным функционалом, не редки случаи, когда JavaScript начинают “злоупотрелять”. И все, в принципе, нормально… Но порой задаешься вопросом: «А если без JavaScript?».
        Читать дальше →
      • Чек-лист вёрстки

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

        Читать дальше →
      • Горизонтальное масштабирование. Что, зачем, когда и как?

          Александр Макаров

          Александр Макаров ( SamDark )


          Здравствуйте! Я Александр Макаров, и вы можете меня знать по фреймворку «Yii» — я один из его разработчиков. У меня также есть full-time работа — и это уже не стартап — Stay.com, который занимается путешествиями.

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

          Что такое масштабирование, вообще? Это возможность увеличить производительность проекта за минимальное время путем добавления ресурсов.

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



            Александр Крижановский ( krizhanovsky, NatSys Lab.)


            По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


            Читать дальше →
          • htop и многое другое на пальцах

            • Перевод


            На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

            Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
            Читать дальше →
          • Как работает Git

            • Перевод
            В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

            Эссе концентрируется на структуре графа, на которой основан Git, и на том, как свойства этого графа определяют поведение Git. Изучая основы, вы строите своё представление на достоверной информации, а не на гипотезах, полученных из экспериментов с API. Правильная модель позволит вам лучше понять, что сделал Git, что он делает и что он собирается сделать.

            Текст разбит на серии команд, работающих с единым проектом. Иногда встречаются наблюдения по поводу структуры данных графа, лежащего в основе Git. Наблюдения иллюстрируют свойство графа и поведение, основанное на нём.

            После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
            Читать дальше →
          • SSH-туннель домой без необходимости оставлять включённым домашний ПК

              Disclaimer
              Этот пост появился здесь по нескольким причинам:
              1) Меня попросил сам Boomburum
              2) Есть предположение, что на хабре всё-таки есть люди, имеющие прямое отношение к IT, но при этом имеющие весьма отдалённое представление о пользе SSH и её извлечении из обычного домашнего роутера, и которым, надеюсь, будет весьма интересно и полезно об этом узнать.

              Хабралюдям, познавшим Дао IOS, tun, VPN, *wrt, WOL… etc, предлагается на выбор:
              А) Закрыть топик, заняться делом и не выводить себя из нирваны чтением этой любительской фигни.
              Б) Потратить время на конструктивную критику и полезные дополнения в комментариях.
              Специально для GrammarNazi:
              Пишите пожалуйста об ошибках в личку — обещаю исправиться.
              Бла-бла-бла, а топик-то о чём?
              Итак, я обещал рассказать «как поднять ssh-туннель домой без необходимости оставлять включённым домашний ПК» и, как правильно догадался peter23 речь пойдёт про ssh-сервер на роутере.
              Читать дальше →