• Когда программный код вызывает восхищение?



      Тема идеального кода нередко вызывает полемику в среде матерых программистов. Тем интереснее было заполучить мнение директора по разработке Parallels RAS Игоря Марната. Под катом его авторский взгляд по заявленной теме. Enjoy!
      Читать дальше →
    • Как квантовые вычисления могут повлиять на разработку ПО

      • Translation
      Всем привет!

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


      Читать дальше →
    • Пишем первый микросервис на Node.js с общением через RabbitMQ

      Со временем, каждый проект растет и реализовывать новый функционал в существующий монолит становится все сложнее, дольше и дороже для бизнеса.


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

      Читать дальше →
    • Гвозди в крышку гроба рунета

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

      image
      Читать дальше →
    • Добро пожаловать в Кремниевую долину

      • Translation
      image

      Как я стала частью этой системы

      Мне повезло, я живу в Кремниевой долине. Здесь я родилась, выросла и в настоящее время работаю продакт-менеджером в Google. Здесь отличная погода, низкий уровень преступности, и хорошее финансирование у школ. У взрослых есть хорошая непыльная работа, а детям открыты миллионы возможностей. Здесь люди наслаждаются суширрито по 15 долларов и запивают их 6-долларовым кофе третьей волны. Улицы заполнены теслами и беспилотными автомобилями.
      Читать дальше →
    • Почему американская молодёжь притворяется, что любит работать

      • Translation

      Я наблюдал за тем, как величайшие умы моего поколения работали по 18 часов в день, и хвалились этим в Instagram с тегом #hustle. Когда перформативный трудоголизм успел стать образом жизни?




      Ни разу в начале своей рабочей недели – ни в очереди за утренним кофе; ни в толпе людей, едущих на работу в метро; ни в начале сортировки бездонной папки «входящие» – я не останавливался затем, чтобы посмотреть в небо и прошептать: #СлаваБогуПонедельник (СБП).

      Судя по всему, этим я предаю своё поколение. Я узнал об этом во время серии моих недавних визитов в коворкинги сети WeWork в Нью-Йорке, где диванные подушки призывают занятых посетителей: «Делайте то, что вы любите». Неоновые знаки требуют «Суетиться побыстрее», а настенные надписи прославляют доктрину СБП. Даже у огурцов в кулерах WeWork есть своя программа. «Не останавливайтесь, когда устали», — недавно вырезал кто-то на плоти плавающих овощей. «Останавливайтесь, когда закончили». Метафоры, относящиеся к употреблению Kool-Aid, редко бывают настолько буквальными [в американской культуре фразеологизм «пить Kool-Aid» означает верить в опасную идею, обещающую большое вознаграждение, и связан с массовым самоубийством в Джонстауне / прим. перев.].
      Читать дальше →
    • Создание пакетов для Kubernetes с Helm: структура чарта и шаблонизация



        Про Helm и работу с ним «в общем» мы рассказали в прошлой статье. Теперь подойдём к практике с другой стороны — с точки зрения создателя чартов (т.е. пакетов для Helm). И хотя эта статья пришла из мира эксплуатации, она получилась больше похожей на материалы о языках программирования — такова уж участь авторов чартов. Итак, чарт — это набор файлов…
        Читать дальше →
        • +35
        • 10.4k
        • 4
      • Альтернативы LastPass. Сравнительная оценка шести парольных менеджеров

        • Translation
        UPD: первоначальная версия статьи включала оценку пяти парольных менеджеров, что отражено в URL и по тексту. Позже в таблицу сравнительной оценки добавили ещё Zoho Vault.

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

        Однако в 2015 году LogMeIn приобрела LastPass, и ситуация начала меняться. И качество продукта, и поддержка стали ухудшаться с момента приобретения, так что теперь наступил момент, когда мы решили отказаться от этой программы и оценить альтернативы.
        Читать дальше →
      • Стоит ли сохранять длину массива в локальную переменную в C#

          Очень часто замечаю, что люди пишут вот так:

          var length = array.Length;
          for (int i = 0; i < length; i++) {
              //do smth
          }

          Пишут они это в надежде ускорить цикл, думая что создавая локальную переменную избавляют CLR от необходимости вызывать каждый раз геттер для Array.Length. Я решил раз и навсегда для себя понять стоит так делать или можно сэкономить своё время и написать без временной переменной.
          Читать дальше →
        • Если вы подумываете начать писать на Go, то вот что вам следует знать

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

            Го - это портируемый Си
            Поехали...
          • Не дразните программиста

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

              Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
              Читать дальше →
            • Простой API gateway на базе PHP и Lumen

              • Tutorial
              Термин «микросервисы» сегодня у всех на слуху – внезапно это стало очень модно, и многие компании объявляют переход на этот архитектурный паттерн даже толком не разобравшись в нём. Впрочем, обсуждение полезности микросервисов оставим за пределами этой статьи.

              Традиционно перед коллекцией микросервисов предлагается дополнительный слой – так называемый API gateway, который решает сразу несколько проблем (они будут перечислены позже). На момент написания этой статьи open source реализаций таких gateway почти нет, поэтому я решил написать свой на PHP с использованием микрофреймворка Lumen (часть Laravel).

              В этой статье я покажу насколько это простая задача для современного PHP!
              Читать дальше →
            • Создаем простой API-шлюз в ASP.NET Core

              Привет, Хабр! Представляю вашему вниманию перевод статьи "Creating a simple API Gateway in ASP.NET Core".


              Время чтения: ~10 минут


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


              Диаграма архитектуры микросервиса


              Другой жизненно необходимый компонент для работы продукта это API-шлюз — система между приложением и бэкэндом, которая, во-первых, маршрутизирует входящие запросы на соответствующий микросервис, и во-вторых, авторизует пользователя.


              Существует много фреймворков которые могут быть использованы для создания API-шлюза, например, Ocelot в .NET core или Netflix Zuul в Java. Тем не менее, в этой статье я опишу процесс создания простого API-шлюза с нуля в .NET Core.

              Читать дальше →
            • Почему с ростом компании разработчики, стоявшие у истоков, оказываются «за бортом»

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

                Рост — это почти всегда хорошо. Как бы не относились работники к происходящему внутри компании в дальнейшем, с точки зрения бизнеса рост — индикатор успешности и правильности взятого курса. Найм новых людей, управленцев и даже «эффективных» менеджеров всегда продиктован возросшими потребностями. Без этих новых и, казалось бы, временами не очень нужных людей, бизнес не умеет расти. И вот, одним утром ведущий разработчик, наемный технический директор другой специалист-звезда просыпаются, приезжают в офис и узнают, что теперь они — не властелины своего куска работы. Теперь все изменилось и их должности, фактически, не существует.



                Все это очень сильно бьет по эго и самооценке. Почему это происходит? Как с этим справиться? И надо ли справляться? Давайте разбираться вместе.
                Читать дальше →
              • Заглядываем под капот нового Gmail

                  Полгода назад Google представила обновленную версию своего почтового сервиса. Несмотря на то что многие пользователи были недовольны редизайном, в том числе и на Хабре, это теперь основной интерфейс для пользователей.


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

                  Читать дальше →
                • Как парни из Storyline вернулись из Кремниевой долины в Минск с $770 тысячами на стартап

                    В 2017 году Василий Шинкоренко и Максим Абрамчук создали сервис Storyline, где можно разрабатывать приложения для голосового помощника от Amazon не используя программирование. Парни участвовали в двух акселераторах в Кремниевой долине — Boost VC и Y Combinator. Весной 2018 они получили $770 тысяч инвестиций.

                    Мы с fillpackart позвонили им и обо всем расспросили — что под капотом сервиса, каково быть разработчиком в стартапе, как им жилось в долине и как скоро голосовые ассистенты изменят мир.


                    Читать дальше →
                  • Единое ядро Windows

                    • Translation
                    Windows – одна из наиболее многогранных и гибких ОС, она работает на совершенно разных архитектурах и доступна в разных вариантах. На сегодня она поддерживает архитектуры x86, x64, ARM и ARM64. Windows в своё время поддерживала Itanium, PowerPC, DEC Alpha и MIPS. Кроме того, Windows поддерживает целый набор SKU, работающих в различных условиях; от дата-центров, ноутбуков, Xbox и телефонов до встраиваемых версий для интернета вещей, например, в банкоматах.

                    Самый удивительный аспект состоит в том, что ядро Windows практически не меняется в зависимости от всех этих архитектур и SKU. Ядро динамически масштабируется в зависимости от архитектуры и процессора, на котором оно работает, так, чтобы пользоваться всеми возможностями оборудования. Конечно, в ядре присутствует определённое количество кода, связанного с конкретной архитектурой, однако его там минимальное количество, что позволяет Windows запускаться на разнообразных архитектурах.

                    В этой статье я расскажу об эволюции ключевых частей ядра Windows, которые позволяют ему прозрачно масштабироваться от чипа NVidia Tegra низкого потребления, работающего на Surface RT 2012 года, до гигантских монстров, работающих в дата-центрах Azure.
                    Читать дальше →
                  • Курс MIT «Безопасность компьютерных систем». Лекция 12: «Сетевая безопасность», часть 1

                    • Translation
                    • Tutorial

                    Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


                    Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

                    Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
                    Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
                    Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
                    Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
                    Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
                    Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
                    Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
                    Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
                    Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
                    Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
                    Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
                    Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
                    Читать дальше →
                  • Как стать React разработчиком в 2018 году

                    • Translation


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

                    Адам Голаб, эксперт по React и JS, составил пошаговый учебный план, который поможет вам стать разработчиком с нуля либо укажет направление для дальнейшего повышения навыков в профессии.

                    План Адама представляет собой список основных пунктов, которые вам нужно изучить самостоятельно. Мы добавили описание, а в некоторых сложных моментах указали ссылки на дополнительные справочные материалы, с помощью которых вы получите ответ на вопрос: «Что я должен узнать как React-разработчик?».
                    Читать дальше →
                  • 10 физических фактов, которые вы должны были узнать в школе, но, возможно, не узнали

                    • Translation
                    image

                    1. Энтропия измеряет не беспорядок, а вероятность


                    Идея о том, что энтропия – это мера беспорядка, совсем не помогает разобраться в вопросе. Допустим, я делаю тесто, для чего я разбиваю яйцо и выливаю его на муку. Затем добавляю сахар, масло, и смешиваю их до тех пор, пока тесто не становится однородным. Какое состояние является более упорядоченным – разбитое яйцо и масло на муке, или получившееся тесто?

                    Я бы сказала, что тесто. Но это состояние с большей энтропией. А если вы выберете вариант с яйцом на муке – как насчёт воды и масла? Энтропия выше, когда они разделены, или после того, как вы их яростно потрясёте, чтобы смешать? В данном примере энтропия выше у варианта с разделёнными веществами.

                    Энтропия определяется как количество “микросостояний”, дающих одно и то же “макросостояние”. В микросостояниях содержатся все детали по поводу отдельных составляющих системы. Макросостояние же характеризуется только общей информацией, вроде “разделено на два слоя” или “в среднем однородное”. У ингредиентов теста есть много разных состояний, и все они при смешивании превратятся в тесто, однако очень мало состояний сможет при смешивании разделиться на яйца и муку. Поэтому, у теста энтропия выше. То же работает для примера с водой и маслом. Их легче разделить, тяжелее смешать, поэтому у разделённого варианта энтропия выше.
                    Читать дальше →