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

    • Перевод

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

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

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



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

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

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

      • Перевод
      Каждый в IT-индустрии знает, насколько сложно оценить срок выполнения проекта. Трудно объективно оценить, сколько времени займёт решение трудной задачи. Одна из моих любимых теорий заключается в том, что здесь имеет место просто статистический артефакт.

      Предположим, вы оцениваете проект в 1 неделю. Предположим, есть три одинаково вероятных результата: либо он займёт 1/2 недели, либо 1 неделю, либо 2 недели. Медианный результат фактически такой же, как и оценка: 1 неделя, но среднее значение (aka average, aka expected value) составляет 7/6 = 1,17 недель. Оценка фактически откалибрована (беспристрастна) для медианы (которая равна 1), но не для среднего.
      Читать дальше →
    • Разгон подсветки монитора

      • Tutorial
      Оверклокинг процессора или памяти — это понятно, но зачем разгонять подсветку монитора?



      Речь пойдёт о стареньком 23-дюймовом Samsung SyncMaster BX2340 (выпущен в январе 2011) со светодиодной подсветкой. Со временем стал замечать, что работать за ним утомительно, а сосредоточиться всё сложнее. И даже не только работать, просто читать, например. Сам монитор остался тот же, но мне стало труднее. А за другими экранами работалось вполне нормально.
      Может выкинуть его, и купить новый?
    • Коренные микробы

      С 2007 года моя судьба связана с микробами: вот уже 13 лет они меня не отпускают. По моим прикидкам, это гораздо больше, чем 10 000 часов — что-то около 30 000. Как и с любой областью знаний, в определенный момент мозг начинает подкидывать новые идейки. Об одной из них я и хочу рассказать.

      В моей голове возникло слово indibiome. Русский звучный аналог этого термина — «коренные микробы» — в выдаче Google находится семь раз, причем три упоминания приходятся на созданные мной сайты и тексты. Мне больше нравится англоязычный аналог этого слова. Indibiome происходит от indigenous microbiome (по аналогии с indigenous people). Впервые с коренными народами я столкнулся несколько лет назад, снимая документальный фильм про оленеводов. Коренные народы и коренные микробы с тех пор меня не отпускают.

      Термин indibiome в выдаче Google встречается 396 раз. Наверняка есть придуманные кем-то слова или термины с такой же статистикой. С первого взгляда кажется, что indibiome — просто редкое слово. Если изучать выдачу поисковика, то можно обнаружить, что это слово используется в одной итальянской книге (Lodovico Antonio Muratori, ‎Filippo Argelati — 1723 — ‎Italy). Однако, если присмотреться, то становится понятно, что в сканированной копии Google books ошибается. На той же странице буква b в других словах выглядит по-другому. Остальные 395 упоминаний содержат еще несколько ошибочных прочтений Google, но в большей части, публикации порождены одним автором.

      У этого слова есть и значение, и несколько смыслов. Придумывать слова может каждый, но если они не адаптируются к языку и не проявляют разные грани смысла в зависимости от окружения, то для выражения мыслей они бесполезны. У indibiome есть несколько смыслов, слово даже претендует на отдельную философию, образ жизни, способ поведения человека.
      Читать дальше →
    • SIP от Мегафона по домашнему тарифу

      • Tutorial
      UPD: Телеграм чат для обсуждения операторов сотовой связи tg.guru/opsosru

      У многих современных смарфонов есть проблема: совмещённый слот под SIM2 со слотом под карту памяти. То есть либо симка, либо флэшка…

      Основной номер у меня на TELE2. Но есть и номер Мегафон с привязкой ко всяким сервисам по типу банк-клиентов. Я планировал перенести эти сервисы на номер в Теле2 и выкинуть Мегафон. Но Мегафон сделал «ход конём» и предложил мне скидку 50% на тариф «Включайся! Общайся». При этом в него входят настоящий безлимитный интернет (С возможностью раздачи трафика с телефона и скорость не режут) и 1100 минут по России в месяц. Разумеется, при поездке по РФ никаких дополнительных платежей. Правда я и 200 минут в месяц не выговариваю…

      Теперь выкинуть номер Мегафона — жаба давит. Но желание освободить слот под карту памяти осталось.

      Тут я вспомнил про старую услугу «Мультифон», но обнаружил, что остался только "Мультифон-бизнес" с конским тарифом по 1,6 руб. за минуту. Мультифона для обычных людей, как бы, больше не существует.



      Мой внутренний оптимист приказал думать дальше. И не зря. По итогу я получил полноценный sip аккаунт (могу звонить с компьютера) по адекватному тарифу, ходят СМС, второй слот занят картой памяти без напильника, а сама sim стоит в модеме с HiLink.
      Читать дальше →
    • Экономика радости. Наставничество как частный случай. Закон трёх процентов

        Знаю, что написав этот пост, не стану Паисием Святогорцем. Однако, я надеюсь, найдётся хотя бы один читатель, который, возможно, поймет какой это кайф – быть педагогом (ментором) в IT. И наша страна станет чуточку лучше. И этот читатель (который поймет) станет чуточку счастливее. Тогда этот текст написан не зря.


        Я – преподаватель-совместитель. И уже давно. Лет семь-восемь. И мне – не стыдно.
        Текущий выхлоп: более 20 трудоустроенных ребяток, с которыми занимался тет-а-тет. Знаю, не густо. Могло быть побольше… Ребятки пока не жалуются (вру, конечно жалуются, но всё у них – ок). В своё оправдание скажу, что есть ещё неизвестное мне количество "потоковых" студентов, которым мой предмет был полезен, но с которыми я в дальнейшем тет-а-тет не работал и не натаскивал…


        Огромное количество раз я слышал: «ты – фрик», «ах зачем ты возишься с этими студентиками», «да тебе они в рот смотрят и ты компенсируешь… ну что-то компенсируешь, короче», «что ты нашёл в этой Кате? Она твоя любовница?», «что ты нашёл в это Васе? Он тебе брат?», «заняться нечем?», «у тебя же жена, дочь и ипотека!», «ты – наркоман», «у тебя много свободного времени?», «лучше бы Игру Престолов посмотрел, а то совсем отстал, дядя»… Ну и так далее. Если бы я любил творчество Oxxxymeron-а и проконсультировал Мирона (лично, увы, не знаком с ним), то «Где нас нет» можно было бы составить из вот этих вот фраз и оборотов… И вот тогда это была бы бомба!.. Ах какой классный рэпчик получился бы...


        Мне надоело объяснять. Как будто я «оправдываюсь». Смешно даже. Пишу этот пост и в следующий раз, когда назовут «фриком», просто дам ссылку на этот опус.

        Дальше читать
      • Стажёр Вася и его истории об идемпотентности API

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


          Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


          image

          Читать дальше →
        • Как подступиться к fullstack-разработке сегодня, если ты проспал десять лет



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

            Neural Ordinary Differential Equations


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

            Есть также и другой тип последовательных данных, это дискретные данные, например, данные NLP задач. Состояния в таких данных меняется дискретно: от одного символа или слова к другому.

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

            На последней NIPS-конференции была представлена одна очень интересная статья, которая может помочь решить эту проблему. Авторы предлагают подход, который они назвали Нейронные Обыкновенные Дифференциальные Уравнения (Neural ODE).

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


            Читать дальше →
            • +73
            • 19,3k
            • 5
          • Lehmann Linear DIY или как клонировать породистого немца с хорошим результатом

            Началось все с того, что как то на прослушке своих ушей Beyerdynamic DT880 600ohm(!) я воткнул их в какой-то породистый ламповый усилок и понял, что жить со своим старичком (тоже ламповым) я уже не смогу.


            Спойлер, конечный результат:


            Читать дальше →
          • Сеть компании и MitM. Часть 1

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


              Сегодня мы начинаем цикл статей, посвященный атакам «человек посередине» (и ряду сопутствующих) на типичные протоколы и каналы передачи, встречающиеся практически в любой компании. Для начала рассмотрим базовые уровни: физический и канальный.

              Заинтересовались? Добро пожаловать под кат.
              Читать дальше →
              • +15
              • 8,9k
              • 2
            • Можно ли считать статистику при малом количестве данных?

                В целом ответ – да. Особенно, когда есть мозги и знание теоремы Байеса.

                Напомню, что среднее и дисперсию можно считать только, если у вас имеется определенное количества событий. В старых методичках СССР РТМ (руководящий технический материал) говорилось, что чтобы считать среднее и дисперсию необходимо 29 измерений. Сейчас в ВУЗах немного округлили и используют число 30 измерений. С чем это связано – вопрос философский. Почему я не могу просто взять и посчитать среднее, если у меня есть 5 измерений? По идее ничто не мешает, только среднее получается нестабильным. После еще одного измерения и пересчета оно может сильно измениться и полагаться на него можно начиная где-то с 30 измерений. Но и после 31го измерения оно тоже пошатнется, только уже не так заметно. Плюс добавляется проблема, что и среднее можно считать по разному и получать разные значения. То есть из большой выборки можно выбрать первые 30 и посчитать среднее, потом выбрать другие 30 и тд … и получить много средних, которые тоже можно усреднять. Истинное среднее бывает недостижимо на практике, так как всегда имеем конечное количество измерений. В таком случае среднее является статистической величиной со своим средним и дисперсией. То есть измеряя среднее на практике мы имеем в виду «предположительное среднее», которое может быть близко к идеальному теоретическом значению.

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

                Читать дальше →
              • Как интеллект-карты помогают вести IT-проекты

                  В продолжение статьи о тайм-менеджменте предлагаю вашему вниманию историю о своем опыте использования инструмента по работе с интеллект-картами. Последние десять лет я занимаюсь управлением проектами в ИТ и телекоме, и всё это время я использую MindJet MindManager. Сегодня я расскажу, как с его помощью можно организовать задачи проекта и всё то, что происходит в голове проектного менеджера. Рассчитываю, что вы прочтете эту статью, пока пьёте одну чашку кофе, а за несколько последующих — мы с вами её обсудим.

                  Из этого поста вы узнаете о принципах формирования интеллект-карт, основных фишках MindJet MindManager (далее — Mind) и особенностях его применения в проектной работе управленца.

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

                  Источник
                  Читать дальше →
                • Транспилятор PAS2JS из Паскаля в JavaScript: несовместимости с Delphi и пути обхода

                    В наше время в кармане обычного человека лежит мощный персональный компьютер, о котором 10-20 лет назад можно было только мечтать. И если у вас километры отлаженного Windows-кода и отлично работающие приложения и утилиты, написанные на Delphi, вы наверняка хотели бы задействовать это богатство для мобильной разработки. А также опыт, накопленный за время программирования под Windows. PAS2JS поможет вам совместить два мира: разработку под Windows и создание Web-приложений и Node.js модулей.


                    О некоторых обнаруженных трудностях из личного опыта идёт речь в этой статье.

                    Читать дальше →
                  • HL 2018. Конспект доклада «Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем»

                      Passwords are like underwear


                      Привет, Хабр! Меня зовут Ахмадеев Ринат, я Sr. PHP developer.


                      Представляю вашему вниманию конспект доклада Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем от Алексея Ермишкина из Virgil Security с HighLoad++ 2018.


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


                      В докладе рассматриваются способы защиты паролей начиная от хешей и заканчивая более современными подходами, такими как Facebook's password Onion, Sphinx и Pythia. В самом конце рассматривается новый Simple Password-Hardened Encryption Services (PHE).


                      Мне так понравился доклад, что я подготовил конспект. Всем рекомендую к ознакомлению.

                      Читать дальше →
                    • Разъяснительная беседа об асинхронном программировании в Javascript

                      • Перевод
                      Привет всем!

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

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

                        Аналогичная ситуация – с данными в автоматизированных системах.
                        Читать дальше →
                        • +17
                        • 7,3k
                        • 5
                      • Теория шардирования

                          Кажется, мы так глубоко погрузились в дебри highload-разработки, что просто не задумываемся о базовых проблемах. Взять, например, шардирование. Чего в нем разбираться, если в настройках базы данных можно написать условно shards = n, и все сделается само. Так-то, он так, но если, вернее когда, что-то пойдет не так, ресурсов начнет по-настоящему не хватать, хотелось бы понимать, в чем причина и как все починить.

                          Короче, если вы контрибьютили свою альтернативную реализацию хэширования в Cassandra, то вряд ли тут для вас найдутся откровения. Но если нагрузка на ваши сервисы уже прибывает, а системные знания за ней не поспевают, то милости просим. Великий и ужасный Андрей Аксёнов (shodan) в свойственной ему манере расскажет, что шардить плохо, не шардить — тоже плохо, и как это внутри устроено. А еще совершенно случайно одна из частей рассказа про шардинг вообще не совсем про шардинг, а черт знает про что — как объекты на шарды мапить.

                          Фотография котиков (хоть они случайно и оказались щеночками) уже как бы отвечает на вопрос, зачем это всё, но начнем последовательно.
                          Читать дальше →
                          • +37
                          • 20k
                          • 6
                        • Ceph. Анатомия катастрофы

                            Ceph — это object storage, призванный помочь построить отказоустойчивый кластер. И все-таки отказы случаются. Все, кто работает с Ceph, знают легенду о CloudMouse или Росреестре. К сожалению, делиться отрицательным опытом у нас не принято, причины провалов чаще всего замалчивают, и не дают будущим поколениям научиться на чужих ошибках.

                            Что ж, настроим тестовый, но близкий к реальному кластер и разберем катастрофу по косточкам. Измерим все просадки производительности, найдем утечки памяти, разберем процесс восстановления обслуживания. И все это под руководством Артемия Капитулы, который потратив почти год на изучение подводных камней, заставил при отказе производительность кластера не падать в ноль, и latency не подскакивать до неприличных значений. И получил красный график, который ну сильно лучше.


                            Далее вы найдете видео и текстовую версию одного из лучших докладов DevOpsConf Russia 2018.


                            Читать дальше →