• Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

      Чтобы сходу понимать материалы об инфраструктуре открытых ключей, сетевой безопасности и HTTPS, нужно знать основы криптографической теории. Один из самых быстрых способов изучить их — посмотреть или прочитать лекцию Владимира ivlad Иванова. Владимир — известный специалист по сетям и системам их защиты. Он долгое время работал в Яндексе, был одним из руководителей нашего департамента эксплуатации.


      Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

      Читать дальше →
    • 10 основных ошибок при разработке на Node.js

      • Перевод


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

      Но, как и любая платформа, Node.js не застрахован от ошибок самих разработчиков. В одних случаях падает производительность, в других — система становится практически непригодной к использованию. И в этом посте я хотел бы рассмотреть 10 наиболее частых ошибок, которые делают разработчики с недостаточным опытом работы с Node.js.
      Читать дальше →
    • 300 потрясающих бесплатных сервисов

      • Перевод


      Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



      A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

      • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
      • Bootswatch: Бесплатные темы для Bootstrap.
      • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
      • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
      • Strikingly.com Domain: Конструктор веб-сайтов.
      • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
      • Withoomph: Мгновенное создание логотипов (англ.).
      • Hipster Logo Generator: Генератор хипстерских логотипов.
      • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
      • Invoice to me: Бесплатный генератор счета.
      • Free Invoice Generator: Альтернативный бесплатный генератор счета.
      • Slimvoice: Невероятно простой счет.

      Читать дальше →
    • Несколько интересных особенностей MySQL

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

        Начнем с такого интересного типа, как ENUM.

        mysql> CREATE TABLE enums(a ENUM('c', 'a', 'b'), b INT, KEY(a));
        Query OK, 0 rows affected (0.36 sec)
        
        mysql> INSERT INTO enums VALUES('a', 1), ('b', 1), ('c', 1);
        Query OK, 3 rows affected (0.05 sec)
        Records: 3  Duplicates: 0  Warnings: 0
        


        Итак, у нас есть таблица, в ней есть два столбца. У первого, a, тип ENUM, у второго, b, INT. В таблице три строки, у всех трех значение b равно 1. Интересно, чему равны минимальный и максимальный элементы в столбце a?

        mysql> SELECT MIN(a), MAX(a) FROM enums;
        +--------+--------+
        | MIN(a) | MAX(a) |
        +--------+--------+
        | c      | b      |
        +--------+--------+
        1 row in set (0.00 sec)
        


        Кажется странным, было бы разумно, если бы самым маленьким был 'a', а самым большим — 'c'.
        А что если выбрать минимум и максимум только среди тех строк, где b = 1? То есть, среди всех строк?

        mysql> SELECT MIN(a), MAX(a) FROM enums WHERE b = 1;
        +--------+--------+
        | MIN(a) | MAX(a) |
        +--------+--------+
        | a      | c      |
        +--------+--------+
        1 row in set (0.00 sec)
        


        Вот так мы заставили MySQL поменять свое мнение о том, как сравнивать поля в ENUM, просто добавив предикат.
        Разгадка такого поведения заключается в том, что в первом случае MySQL использует индекс, а во втором нет. Это, конечно, не объясняет, почему MySQL сравнивает ENUMы по разному для сортировки в индексе, и при обычном сравнении.

        Второй пример проще и лаконичнее:

        mysql> (SELECT * FROM moo LIMIT 1) LIMIT 2;
        +------+
        | a    |
        +------+
        |    1 |
        |    2 |
        +------+
        2 rows in set (0.00 sec)
        


        Когда я показал этот запрос своему коллеге, который занимается разработкой парсера SQL, его вопрос был не «почему этот запрос возвращает две строки», а «как надо написать SQL парсер так, чтобы такой запрос был валидным, без того, чтобы написать правило, специально разрешающее такой запрос».

        Интересно, что далеко не любой SELECT в скобках сработает, в частности, UNION в скобках — это синтаксическая ошибка:

        mysql> (SELECT * FROM moo UNION ALL SELECT * FROM hru) LIMIT 2;
        ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT * FROM hru) LIMIT 2' at line 1
        


        Еще несколько интересных примеров под катом
        Читать дальше →
      • Авторизация пользователей с AngularJS и Firebase

          В прошлой статье, я рассказывал о Firebase. Сегодня я хочу рассказать как я организовал авторизацию пользователей с использованием AngularJS и Firebase.

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

          Для основы проекта я использую ngBoilerplate, так считаю его достаточно удачной сборкой не требующей каких-то особых доработок. В сборке предустановлены Twitter Bootstrap, Angular UI, Angular Bootstrap, Font Awesome и LESS. Также замечательно настроен Grunt и Bower. Для установки и запуска чистого приложения, нужно всего лишь выполнить следующие команды:
          $ git clone git://github.com/joshdmiller/ng-boilerplate
          $ cd ng-boilerplate
          $ sudo npm -g install grunt-cli karma bower
          $ npm install
          $ bower install
          $ grunt watch
          


          Читать дальше →
          • +12
          • 14,1k
          • 7
        • Лицензия для вашего open-source проекта

            В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

            Статья будет полезна тем, кто хочет:

            — в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
            — подобрать свободную лицензию для своего проекта;
            — разобраться, что нужно писать в шапке файла исходного кода.
            Читать дальше →
          • Краткий конспект по языку JavaScript

            • Tutorial
            Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

            Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

            JavaScript — язык со слабой динамической неявной типизацией, автоматическим управлением памятью и прототипным наследованием.

            JavaScript состоит из трёх обособленных частей:

            • ядро (ECMAScript),
            • объектная модель браузера (Browser Object Model или BOM),
            • объектная модель документа (Document Object Model или DOM).


            В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
            Читать дальше →
          • Профессиональная эмиграция — Часть 1 — Проблема курицы и яйца и как с ней бороться, а также развенчание мифов

            Здравствуйте, Хабраюзеры.

            Этим постом я хотел бы начать цикл (если позволит время и будет интересно аудитории) про профессиональную эмиграцию, особенно без привязки к работодателю.
            Читать дальше →
          • Тысяча чертей! Потребитель? Защищайтесь!

              Так уж сложилось, что законодательство РФ в большинстве своем далеко от совершенства. Противоречит само себе, множественно трактуется и вообще сложновато для восприятия.
              Но есть луч света в темном царстве!
              Закон о защите прав потребителя. Замечательная штука, поверьте. При прокачанном скиле использования данного закона можно стать настоящим потреб. террористом. Это, кстати, полуофициальный термин — так называют людей, намеренно злоупотребляющих широкими возможностями, которые предоставляются вышеупомянутым законом.
              Итак! На что вы имеете право!
              По просьбе NermaN я попробую составить мануал, как и что.
              Читать дальше →