• Как перевести сайт целиком на постоянный HTTPS для всех

    • Перевод

    Шифруем всё подряд


    Эра незашифрованного веба проходит, и это хорошо. В этой инструкции мы предполагаем, что на вашем сервере работает веб-сервер Nginx. И теперь мы сделаем так, чтобы все посетители сайта пользовались исключительно протоколом HTTPS. Кроме этого мы включим HSTS – это «HTTP Strict Transport Security», когда сайт не только поддерживает HTTPS, но и настаивает на его использовании.

    Для этого есть множество способов, но я опишу метод под названием «HTTPS termination». Иначе говоря, мы поставим перед веб-сервером обратный прокси, который и будет обеспечивать HTTPS. Это получается проще и гибче, чем настраивать HTTPS только при помощи возможностей веб-сервера. Возможно, вам покажется контринтуитивным, что добавление ещё одного приложения в стек упростит вашу жизнь – но это действительно так.

    Уточним, что данный рецепт подходит для серверов на базе Linux, на которых установлен Nginx.

    То, что будет работать прежде всех остальных приложений в стопке – это HAProxy. Это в первую очередь приложение для балансировки – он умеет распределять приходящие запросы между разными физическими серверами. Много высоконагруженных сайтов используют его в этом качестве (тот же reddit), но в последней версии у него появилась возможность выполнять SSL termination. Он умеет устанавливать HTTPS-соединения от имени сервера.

    Поэтому мы поставим HAProxy, скормим ему наши сертификаты SSL/TLS, поручим перенапрявлять все HTTP запросы на HTTPS, и покажем ему уже сам веб-сервер в качестве бэкенда.
    Читать дальше →
  • Разбираемся с Flux, реактивной архитектурой от facebook

    • Перевод
    • Tutorial


    Введение


    Добро пожаловать в третью часть серии статей «Изучаем React». Сегодня мы будем изучать, как устроена архитектура Facebook Flux, и как использовать ее в своих проектах.
    Ррреактивно!
  • Смотрите ли вы телевизор?

       
      Смотрите ли вы телевизор?
      • 2%Постоянно (каждый день, много чего смотрю, при возможности ТВ не выключается дома)165
      • 9%Периодически (каждый день, смотрю определенные передачи, новости, погоду, реже - что-то еще)632
      • 11%Непереодически (не каждый день, время есть - что-то могу и посмотреть)753
      • 20%Изредка (явно не каждый день, время есть - смотрю только что-то избранное типа футбола, формула-1)1388
      • 16%Очень редко (раз в месяц включаю телевизор что бы совсем не запылился)1116
      • 48%Не смотрю! (не смотрю уже более месяца)3343

      Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    • Обязательно ли получать лицензию Нацбанка Украины для создания компании за границей?

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

        Ваш покорный корреспондент при неоценимой поддержке автора блога iFinance расскажет об этом подробнее :)

        Читать дальше →
      • Реанимация серверов Ubuntu на Hetzner или немного полезных команд

        • Tutorial


        Этот небольшой пост-шпаргалка предназначен для тех у кого внезапно в ходе неудачного эксперимента или обновления перестал пинговаться сервер, отвалился ssh и прочее. Проще говоря он о восстановлении сервера после обновлений, взломов и тому подобного. По моим ощущениям последнее бывает гораздо реже.
        Так что кому интересна эта тема прошу под кат.
      • Почему нельзя делить на ноль, даже если очень хочется?

        • Tutorial
        Недавно на Хабре появилась удивительная статья «Папа, а почему на ноль делить нельзя?», которая собрала массу не менее удивительных комментариев.

        Детские вопросы обычно очень сложны («Почему небо ночью темное?», «Почему яблоки падают на землю?») и у взрослых обычно не хватает времени, чтобы их доходчиво объяснить. Да и не всегда взрослые знают ответ на эти вопросы.

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

        image

        Самые серьезные сомнения появляются, я думаю, после изучения рациональных чисел, когда для любого числа x, кроме нуля, вводится понятие обратного числа 1/x, и графика гиперболы y(x)=1/x.

        Очевидно, что при делении 1 на очень маленькие числа появляются очень большие числа, и чем меньше мы берем x, тем больше становится 1/x. Почему же мы не можем сказать, что 1/x=∞ — есть некоторое число?

        Алгебраическое возражение против этого состоит в следующем. Предположим, что ∞=1/x является числом. Тогда на это число должны распространяться все правила, которые имеют место быть для обычных чисел. В частности, с одной стороны должно быть верно соотношение 0⋅∞=1, а с другой стороны поскольку 0=1−1 должно быть выполнено 0⋅∞=1⋅∞−1⋅∞=0. Таким образом, имеем 1=0, а из этого уже следует, что все числа равны между собой и равны нулю. В самом деле, поскольку для любого числа x верно 1⋅x=x, то 1⋅x=0⋅x=0.

        «Ну разве это не полная чушь?» — спросим себя, добравшись до этого места.

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

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

        Для этого берем чашу с фасолью, символизирующую натуральный ряд, и высыпаем из нее какое-то количество зерен на разлинованный лист бумаги:

        image

        Тем самым, мы установили делимое на нашем бобовом калькуляторе.

        Читать дальше →
      • Папа, а почему на ноль делить нельзя?

        Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
        — Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
        — Ну… ноль!

        Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
        И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
        Читать дальше →
      • Замыкания в Javascript [Часть 1]

        Перевод статьи Ричарда Корнфорда Javascript Closures.

        • Введение
        • Разрешение имен свойств объектов
          • Присваивание значений
          • Чтение значений

        • Разрешение имен идентификаторов, контексты исполнения и цепь областей видимости
          • Контекст исполнения
          • Цепь областей видимости и свойство [[scope]]
          • Разрешение имен идентификаторов

        • ...

        Введение


        Замыкание
        Замыкание — это выражение (обычно функция), которое может иметь свободные переменные, вместе со средой, которая привязывает эти переменные (т.е. “замыкает” это выражение).

        Замыкания относятся к наиболее мощным особенностям ECMAScript (javascript), но они не могут быть применены должным образом без понимания. Несмотря на то, что их легко создать, даже случайно, их создание может иметь пагубные последствия, в частности, в некоторых относительно распространенных окружениях браузеров. Чтобы избежать случайных столкновений с недостатками и использовать преимущества замыканий, необходимо понимать их механизм. Это сильно зависит от роли цепи областей видимости в разрешении имен идентификаторов (identifier resolution) и от разрешения имен свойств в объектах.

        Самое простое объяснение замыкания в том, что ECMAScript допускает вложенные функции, определения функций и функции-выражения (function expressions) внутри тел других функций. И эти вложенные функции имеют доступ ко всем локальным переменным, параметрам и функциям, находящихся внутри их внешней функции (внешних функций). Замыкание образуется, когда одна из этих вложенных функций становится доступной вне той функции, в которую она была включена, таким образом, она может быть выполнена после завершения внешней функции. В этот момент она все еще имеет доступ к локальным переменным, параметрам и внутренним декларациям функций (function declarations) своей внешней функции. Эти локальные переменные, параметры и декларации функций (изначально) имеют те же значения, которые были во время завершения внешней функции и могут взаимодействовать с внутренней функцией.

        К сожалению, правильное понимание замыканий требует понимания механизмов, которые стоят за ними, и немало технических подробностей. Хотя некоторые из алгоритмов, определенных в ECMA 262, затронуты в начале последующего объяснения, большинство не могут быть опущены или просто приведены к упрощенному виду. Если вы знакомы с разрешением имен свойств объектов, то можете пропустить этот раздел, но только люди, уже знакомые с замыканиями, могут позволить себе пропустить последующие разделы и прямо сейчас перестать читать и вернуться к их использованию.
        Читать дальше →
      • ReactJS in a nutshell. Часть 1

        Добрый день, уважаемые читатели.

        В последнее время на Хабре все чаще упоминается такой замечательный фреймворк, как React.js. Я работаю с ним уже 4 месяца, поэтому решил поделиться опытом использования. Решено было сделать небольшую серию статей, которые должны стать максимально кратким полным руководством по фреймворку. Это моя первая публикация на Хабре, поэтому прошу не судить слишком строго. Моя главная задача рассказать о подходах и практиках, второстепенная — узнать у людей, использовавших React, как они работают с ним и как они решали те или иные кейсы, которые возникали в их работе. Ну и конечно расширить сообщество фреймворка. Начало я оформил в виде небольшого конспекта-шпаргалки. А дальше только практика.
        Читать дальше →