• Исповедь docker хейтера

      Я должен признаться. Я ненавижу docker. Всей своей душой. Это самая ужасная софтина, которую я видел за последние 10 лет.


      С одной стороны, я очень уважаю одноименную компанию. Ребята из Docker Inc. реально популяризировали контейнеризацию. Теперь о ней не знает только ленивый. С другой стороны, ничего принципиально нового они не изобрели — контейнеризация на момент, когда Docker "выстрелил", уже существовала более 30 лет (начиная от chroot, вспомним еще jails и zones, ну, и наконец-то — namespaces & cgroups).


      Круто, что docker реально ускоряет разработку во множество раз. Если вести ее правильно, то даже без потери в качестве. В любом случае, docker здесь, от него не деться и приходится им пользоваться.


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


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

      Читать дальше →
    • HTTP-заголовки для ответственного разработчика

      • Translation

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

      Разработчики соединяют людей.
      Разработчики помогают людям.
      Разработчики дают людям возможности.

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

        Сделал подборку книг по Machine Learning для тех, кто хочет разобраться, что да как.
        Добавляйте в закладки и делитесь с коллегами!

        Книги по машинному обучению на русском


        1. «Математические основы машинного обучения и прогнозирования» Владимир Вьюгин.

        О чем

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

        2. «Верховный алгоритм» Педро Домингос.

        О чем

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

        • Tutorial

        Методы асинхронного программирования


        Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaSript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист.

        Читать дальше →
      • 256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

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

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

        Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

        Итак, сегодня я покажу, как отрисовывать подобные картинки:


        Читать дальше →
      • Практические советы, примеры и туннели SSH

        • Translation
        • Tutorial

        Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать SSH, но и более грамотно перемещаться по сети.

        Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
        Читать дальше →
      • Google Public DNS тихо включили поддержку DNS over TLS



          Внезапно, без предварительного анонса, на 8.8.8.8 заработал DNS over TLS. Ранее Google анонсировал только поддержку DNS over HTTPS.

          Публичный резолвер от компании CloudFlare с IP-адресом 1.1.1.1 поддерживает DNS over TLS с момента запуска проекта.

          Зачем это нужно


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

          C DNS over TLS/HTTPS запросы посылаются внутри зашифрованного тоннеля так, что провайдер не может подменить или просмотреть запрос.

          А с приходом шифрования имени домена в сертификатах X.509 (ESNI) станут невозможны блокировки через DPI по SNI (Server Name Indication, специальное поле, в котором передается имя домена в первом TLS-пакете), которые сейчас применяются у некоторых крупных провайдеров.

          Как это работает


          На порт TCP:853 выполняется TLS-подключение, при этом проверка сертификата резолвера происходит с использованием системных корневых сертификатов, точно так же, как HTTPS в браузере. Это избавляет от необходимости добавлять какие-либо ключи вручную. Внутри тоннеля выполняется обычный DNS-запрос. Это создает меньше накладных расходов по сравнению с DNS over HTTPS, который добавляет HTTP-заголовки к запросу и ответу.

          К сожалению, на текущий момент только в Android 9 (Pie) поддержка DNS over TLS встроена в системный резолвер. Инструкция по настройке для Android 9.

          Для остальных систем предлагается использовать сторонний демон, а системный резолвер направлять на localhost (127.0.0.1).

          Настройка на macOS


          Разберем настройку DNS over TLS на последней версии macOS, на примере резолвера knot
          Читать дальше →
        • Локальный NPM репозиторий за 5 минут со своими пакетами и кэширование

          Доброго времени суток!

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

          Копировать и вставлять код это путь на темную сторону, поэтому было принято решение писать не просто js код, а создавать из него npm пакеты чтобы распространять между своими проектами.

          Поиск бесплатных, частных npm репозиториев завел в тупик, а использование частных репозиториев на npm требует платы (а это не наш менталитет).

          Поскольку в офисе есть сервер, который работает всегда(почти), было решено развернуть локальный npm.

          image
          Читать дальше →
        • Моё разочарование в софте

          • Translation

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


          Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

          Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

          Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
          Читать дальше →
        • Жаргон функционального программирования

          • Translation


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


          В примерах используется JavaScript ES2015). (Почему JavaScript?)


          Работа над материалом продолжается; присылайте свои пулл-реквесты в оригинальный репозиторий на английском языке.


          В документе используются термины из спецификации Fantasy Land spec по мере необходимости.


          Arity (арность)


          Количество аргументов функции. От слов унарный, бинарный, тернарный (unary, binary, ternary) и так далее. Это необычное слово, потому что состоит из двух суффиксов: "-ary" и "-ity.". Сложение, к примеру, принимает два аргумента, поэтому это бинарная функция, или функция, у которой арность равна двум. Иногда используют термин "диадный" (dyadic), если предпочитают греческие корни вместо латинских. Функция, которая принимает произвольное количество аргументов называется, соответственно, вариативной (variadic). Но бинарная функция может принимать два и только два аргумента, без учета каррирования или частичного применения.

          Читать дальше →
        • Toyota: 81 514 нарушений в коде



            Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 89 человек погибло с 2000 по 2010.
            Тойота: — Да они сами виноваты, путают педали.
            Люди: — Хьюстон, у нас проблемы.
            NASA: — Ща разберемся, нам надо 10 месяцев и 3 миллиона долларов.
            Люди: — На.
            Тойота: — 3 миллиона мало, вот вам еще сверху кэшем.
            (прошло 10 месяцев)
            NASA: — Эй, Тойота, мы у вас пару ошибок в коде нашли, а точнее 7134 нарушения стандартов MISRA, рекурсию, функцию на 740 строк и 9000 глобальных переменных.
            Тойота: — А у нас свои стандарты. А вы ваще на Луну летали?
            NASA (публично): — Тойота ни в чем не виновата.
            (Акции Тойота подскочили на 4,6%)
            Люди: — Ну ё-моё.
            (спустя 3 года)
            Два американских тестировщика (у которых дедушки погибли в Перл-Харбор): — Нет багов? А если найдем?
            Читать дальше →
          • Что нельзя говорить со сцены на ИТ-конференциях, но очень хочется



              Как известно, во многом мы берем пример с Европы и США. К ИТ-сфере это относится в полной мере: разработчики перенимают инструментарий и лучшие техники программирования, ИТ-менеджеры равняются на самые прогрессивные методы управления проектами и разработкой.

              Если специалист добился успеха в какой-то сфере знаний и умений, то он должен быть готов поделиться своим опытом с широкой аудиторией. И в этом случае есть на кого равняться: в сети огромное количество записей с крупнейших ИТ-конференций мира и выступлений лучших в своём деле ораторов, спикеров и так далее.

              Однако отдельные личности с критическим мышлением предостерегают нас от ошибки при выборе примеров для подражания. Далеко не всё, что говорят даже самые лучшие спикеры, положительно воспринимается аудиторией.
              Читать дальше →
            • Smart KM Link A820

                Часто приходится работать за ноутом и ПК одновременно — не весь софт есть и там и там, не весь софт на ноуте работает достаточно быстро, часто нужно прервать работу и ехать на встречу.

                Работая таким образом, я, как наверное и многие, периодически пытаюсь мышкой компа что-то щелкнуть на ноуте или передвинуть мышу с ноута на соседний монитор. Особенно это знакомо тем, у кого больше одного монитора на столе.
                Теперь это возможно!
                Такую штуку я ждал давно
              • Приступаем к работе с Google+ API

                • Translation


                Только что пришла благая весть от Гугла:

                Приветствуем разработчиков,


                Благодарим Вас за проявленный интерес к платформе Google+. Мы обещали, сообщать о всем интересном, что происходит. Ну, что же — пришло время…

                Сегодня мы запускаем первую часть Google + API. Это первый выпуск API ориентирован только на работу с публичными данными — API позволяет получать доступ к информации, которою пользователи раcшаривают с помощью Google+. Подробную информацию Вы можете получить в нашем блоге.

                Читать дальше →
              • Сервис Face.com научился распознавать эмоции людей на фото



                  Компания Face.com известна как разработчик программного обеспечения, используемого для распознавания лиц на различных фотографиях. Довольно давно компания добавила функцию распознавания улыбки, а теперь вот добавились и остальные эмоции: удивление, злость, счастье (собственно, та же улыбка), грусть и нейтральное выражение лица.

                  Читать дальше →
                • Ambilight для тэга <video>

                    via Ajaxian

                    Сергей Чикуёнок сделал ambilight для HTML5 тэга <video>

                    По этой ссылке можно посмотреть на эффект.
                    А по этой — посмотреть, как это было сделано.

                    Upd. для непонятливых: это просто программерское упражнение, Just for fun…
                  • Как включить новый дизайн YouTube

                      На днях был топик о том, что на YouTube появился новый дизайн, но по традиции компании Google что-то новое могут видеть только «избранные»



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

                      1. Переходим на сам YouTube
                      2. Нажимаем Ctrl + Shift и J в Google Chrome (для открытия Developer Tools) или Ctrl+Shift+K в Firefox
                      3. Выбираем вкладку «Console» и вводим код
                      document.cookie="VISITOR_INFO1_LIVE=ST1Ti53r4fU";
                      4. Перезагружаем страницу.
                      5. Profit
                    • В интернете заработал Госпоиск. Бессмысленный и беспощадный

                        Новый сервис взял все самое лучшее от Сбербанка и «Почты России».

                        Государственный поисковик, о котором давно мечтает российское правительство, наконец заработал. Основная идея — возможность контролировать доступ к информации — реализована на сайте gossearch.ru на все сто: желающих получить ответ на вопрос ждет тотальная проверка.

                        Прежде чем приступать к поиску, рекомендуем прочитать информацию о проекте: она многое объясняет.

                        image
                        Читать дальше →
                      • Доброкнижка про HTML5 от Google

                          Пока в интернетах идут войны на тему HTML5, убьет он Flash или нет, компания Google выпустила онлайн книгу 20 Things I Learned About Browsers & The Web. И это действительно книга!

                          Ребята создали веб-приложение, напоминающее детскую книгу, ее можно листать, оставлять закладки, а посвящена она веб-технологиям.
                          Читать дальше →