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

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


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


      image

      Читать дальше →
    • Когда, зачем и почему вернутся дирижабли



        Короткая предыстория


        6 мая 1937 года самый большой дирижабль в мире, «Гинденбург», сгорел при посадке на американской авиабазе Лейкхерст.

        Трагедия была ужасной, в ней погибло 36 человек (35, находившихся на борту и еще один из находившихся на земле) из 97 пассажиров и членов экипажа.

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

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

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

        image
        Гибель «Гинденбурга», жуткая картина, потрясшая мир.

        Все-таки главным заказчиком воздушных судов в те времена была армия, и с начала ХХ века винтовая авиация составляла серьезную конкуренцию дирижаблям. Вот только во времена первой мировой войны самолеты не могли ничем воспрепятствовать дирижаблям – при всем «удобстве» относительно медленных и довольно крупных «мишеней» – их нечем было поражать. А вот дирижабли доказали, даже при отсутствии средств и технологий бомбометания, свою ударную мощь и свое полное доминирование в воздухе.

        К 1937 году ситуация в воздухе радикально изменилась – теперь уже дирижаблям нечего было противопоставить юркой и быстрой винтовой авиации – и об их технологии надолго забыли, переключившись на создание самолетов, а позже и вертолетов, и «все деньги мира», в первую очередь, деньги военных ведомств, отныне закачивались именно в эти виды воздушного транспорта.
        Читать дальше →
      • UML умер, а никто и не заметил?

        • Перевод

        UML, нам будет тебя не хватать

        Unified Modelling Language (UML), разработанный Rational Software и принятый в качестве стандарта Object Management Group (OMG) в 1997 году, призван был стандартизировать множество различных типов графических нотаций, принятых в отрасли разработки ПО.

        Моя история отношений с UML началась почти десяток лет назад, когда я стал евангелистом этого языка как моста между ИТ и бизнесом. Я никогда не был полностью убеждён в ценности UML как нотации для моделирования конкретных программных продуктов; моя цель заключалась в использовании UML для описания требуемых структурных и поведенческих свойств, ожидаемых от проектируемой системы.
        Читать дальше →
      • Алюминиевый профиль как универсальный ресурс для сборки чего угодно. Часть 1

        • Перевод

        Еще недавно профиль типа Т-слот (T-slot) был не самым популярным, но после того, как его стали применять в конструкции многих моделей 3D-принтеров, он появился везде и всюду. Теперь он используется для сборки тех же 3D-принтеров, лазерных резаков, станков с ЧПУ.

        Кроме того, профиль подходит для изготовления верстаков, осветительных приборов, даже рамок для фотографий, если, конечно, такая мысль возникнет. Давайте чуть изучим возможности профиля и посмотрим, для чего, кроме чисто строительных нужд, его можно применять. В первой части рассматриваются особенности профиля и соединений.
        Читать дальше →
      • Zettelkasten: как один немецкий учёный стал невероятно продуктивным

        Изображение предоставлено автором. Основано на фотографии Патрика Томаса с Ансплэша

        Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.

        Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
        Читать дальше →
      • Возрождение гражданской сверхзвуковой авиации

          image

          Крупнейший в мире авиаперевозчик «United Airlines» закупила 15 (подписала меморандум о покупке) сверхзвуковых гражданских самолетов Boom Supersonic. И дали обещание, что если понравится, то купят еще 35 штук.

          Boom Supersonic — гаражный стартап, который прошел акселерацию в Y Combinator.

          Блейк Шолль, основатель и CEO Boom Technology — бывший программист, отчаянный романтик, мечтатель. Несколько лет он ходил по конференциям со слайдами, рендерами и напечатанной на 3д-принтере моделькой самолета.

          image

          А потом Блейк Шолль поступил в Y Combinator.

          Поступление в YCombinator – одна из лучших вещей, что я когда-либо делал. Думаю, если бы не YC, то Boom не стала бы тем, чем она является сейчас. В YC нам дали два важных совета, и именно они и были нам нужны. Первый – вылезайте из тени, невидимость ничем вам не поможет. Второй – идите и продайте несколько самолетов.


          Блейк Шолль послушался советов, завел блог на Medium и потом продал Ричарду Брэнсону 10 сверхзвуковых гражданских самолетов. Еще не построенных самолетов.

          Мы показали Ричарду Брэнсону, что мы делаем, и сказали: «Послушайте, мы не просим ваших денег, мы хотим спросить – когда наши самолеты полетят, вы хотите, чтобы на них были логотипы Virgin?»

          Читать дальше →
        • Хватит везде делать микросервисы

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


            image

            И вот почему...
          • Мобильные приложения перестали быть подходящей идеей для стартапов

            • Перевод
            image

            В феврале 2009 года СМИ по всему миру начали рассказывать о «вундеркинде» — девятилетнем сингапурском мальчике по имени Лим Динг Вен, ставшем самым юным разработчиком приложений для iPhone.

            Он создал приложение Doodle Kids, позволяющее рисовать пальцами на экране iPhone. За две недели его скачали более четырёх тысяч раз.

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

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

            Однако он считает, что «рынок приложений для мобильных телефонов пересыщен» и что он пробует себя в других проектах с использованием новых языков и программированием интегральных схем.
            Читать дальше →
          • Эффективность — ваш враг

            • Перевод

            Есть большая вероятность, что причиной большинства проблем в вашей жизни и работе является недостаточная бездеятельность. В статье мы расскажем, как устроена бездеятельность и почему вам её нужно больше.

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

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

            Попав в офис (разумеется, заполненный дымом сигарет), вы немного удивлены, что он совсем не похож на людской муравейник. На самом деле, окружающие вас люди практически ничего не делают. Рядом с офисом вашего героя его секретарша отдыхает за своим столом. Назовём её Глория. Похоже, она совсем ничем не занята. Вы в течение получаса наблюдаете, как она читает, приводит в порядок свой стол и болтает с проходящими мимо секретаршами. Они тоже не выглядят занятыми. Озадаченный тем, что Тони тратит свои деньги на бездельников, вы решаете остаться ещё на несколько часов.
            Читать дальше →
          • Испанские исследователи оценили, как легко ИИ может повлиять на политические или романтические предпочтения

              Ухуэ Агудо и Хелена Матуте из Университета Деусто в Испании опубликовали исследование, которое показывает, как легко влиять на людей с помощью искусственного интеллекта. Исследователи пришли к выводу, что люди склонны следовать советам ИИ независимо от того, идет речь о выборе политического кандидата или пары для свидания.

              Читать далее
            • Временные ряды. Простые решения

              • Tutorial


              Привет, Хабр!

              В этой статье мы рассмотрим несколько простых подходов прогнозирования временных рядов.

              Материал, изложенный в статье, на мой взгляд, хорошо дополняет первую неделю курса «Прикладные задачи анализа данных» от МФТИ и Яндекс. На обозначенном курсе можно получить теоретические знания, достаточные для решения задач прогнозирования рядов динамики, а в качестве практического закрепления материала предлагается с помощью модели ARIMA библиотеки scipy сформировать прогноз заработной платы в Российской Федерации на год вперед. В статье, мы также будем формировать прогноз заработной платы, но при этом будем использовать не библиотеку scipy, а библиотеку sklearn. Фишка в том, что в scipy уже предусмотрена модель ARIMA, а sklearn не располагает готовой моделью, поэтому нам придется потрудиться ручками. Таким образом, нам для решения задачи, в каком то смысле, необходимо будет разобраться как устроена модель изнутри. Также, в качестве дополнительного материала, в статье, задача прогнозирования решается с помощью однослойной нейронной сети библиотеки pytorch.
              Читать дальше →
              • +10
              • 6,8k
              • 4
            • Тихая революция и новый дикий запад в ComputerVision

                Казалось бы, революция с Computer Vision уже была. В 2012 году выстрелили алгоритмы основанные на сверточных нейронных сетях. Года с 2014 они дошли до продакшна, а года с 2016 заполонили все. Но, в конце 2020 года прошел новый виток. На этот раз не за 4 года, а за один. поговорим о Трансформерах в ComputerVision. В статье будет обзор новинок, которые появились в последний год.

                Читать далее
              • Как я на коленке делал бесплатный курс программирования, о котором мечтал 3 года (и что пошло не так)

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

                  Читать далее
                • Азбука libp2p от Textile (или за что мы её любим)

                  Перевод статьи начального уровня в блоге проекта Textile от 19 ноября 2019 г.

                  Первые шаги к созданию децентрализованного приложения могут быть трудными. Изменить привычный при разработке централизованных приложений образ мышления не легко, поскольку распределённый дизайн ломает большинство допущений, устоявшихся в наших мозгах (и программных инструментов, которые мы используем). Чтобы проиллюстрировать то, как наша команда представляет себе одноранговую коммуникацию, мы выпускаем серию из двух статей, посвященную стеку протоколов libp2p. В этой первой статье мы размышляем о некоторых сложностях, связанных с созданием децентрализованных приложений, и выясняем, как абстракция уровня сетевого протокола, такая как libp2p, может нам помочь. В следующей статье (которая скоро появится) мы будем использовать эти же концепции для создания простого примера, написанного на языке Go, чтобы понять, как различные компоненты, о которых мы здесь говорим, связаны друг с другом.

                  Стремительно нарастающая сложность

                  Внедрить распределённое (p2p) взаимодействие в какое бы то ни было приложение - задача не из простых. Попредставляйте лишь пару минут, как должно работать ваше творение - и всё начинает усложняться прямо на глазах. Рассмотрим две основные проблемы для p2p-приложений: состояние приложения и инфраструктура взаимодействия. Управление текущим состоянием системы не тривиально. Нет центрального органа, который бы его определял. Состояние системы - производное от состояний множества других узлов, которое имеет взрывную сложность в ненадежных сетях и сложных протоколах. Что касается инфраструктуры связи, ваше приложение должно взаимодействовать со многими равноправными узлами, поэтому вам придется столкнуться с изрядным количеством проблем.

                  Читать далее
                • Учёные обнаружили главный фактор старения мозга

                    Учёные давно сталкивались с целой группой демиелинизирующие заболеваний — заболеваний нервной системы, при которых повреждается или вовсе разрушается миелиновая оболочка нейронов (образно говоря, изолирующая «оплётка» «электрических проводов» мозга). Разрушение миелина значительно замедляет проведение сигналов по нервам и приводит к потере чувствительности, проблема с движениям, заметному снижению когнитивных функций, параличам, судорогам и т.д. Примерно с середины 10-х годов XXI века учёные выстраивали догадки о связи разрушения миелина и старения головного мозга — на это наталкивал ряд сходств изменений поведения человека при старении и перечисленных заболеваниях, а также указывали особенности некоторых заболеваний нервной системы (такие как рассеянный склероз и болезнь Альцгеймера). Теперь причина найдена.

                    Читать далее
                  • BPF для самых маленьких, часть первая: extended BPF

                      В начале была технология и называлась она BPF. Мы посмотрели на нее в предыдущей, ветхозаветной, статье этого цикла. В 2013 году усилиями Алексея Старовойтова (Alexei Starovoitov) и Даниэля Боркмана (Daniel Borkman) была разработана и включена в ядро Linux ее усовершенствованная версия, оптимизированная под современные 64-битные машины. Эта новая технология недолгое время носила название Internal BPF, затем была переименована в Extended BPF, а теперь, по прошествии нескольких лет, все ее называют просто BPF.


                      Грубо говоря, BPF позволяет запускать произвольный код, предоставляемый пользователем, в пространстве ядра Linux и новая архитектура оказалась настолько удачной, что нам потребуется еще с десяток статей, чтобы описать все ее применения. (Единственное с чем не справились разработчики, как вы можете видеть на кпдв ниже, это с созданием приличного логотипа.)


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

                      Читать дальше →
                      • +32
                      • 9,8k
                      • 5
                    • BPF для самых маленьких, часть нулевая: classic BPF

                      Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, называет свой доклад на Linux Plumbers 2018 «This talk is not about XDP» (XDP – это один из вариантов использования BPF). Brendan Gregg читает доклады под названием Linux BPF Superpowers. Toke Høiland-Jørgensen смеется, что ядро это теперь microkernel. Thomas Graf рекламирует идею о том, что BPF — это javascript для ядра.


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


                      Разработка BPF контролируется сетевым сообществом Linux, основные существующие применения BPF связаны с сетями и поэтому, с позволения @eucariot, я назвал серию "BPF для самых маленьких", в честь великой серии "Сети для самых маленьких".

                      Читать дальше →
                      • +62
                      • 23,9k
                      • 5
                    • Почему Signal — не идеальный мессенджер. Нам нужна децентрализация


                        Федеративная система Matrix поддерживает связь с другими сетями через мосты. Это пример инфраструктуры, к которой нужно стремиться Signal

                        4 января 2021 года WhatsApp внёс изменения в пользовательское соглашение. Теперь каждый пользователь обязан согласиться на отправку личных данных в материнскую компанию Facebook, иначе его аккаунт WhatsApp просто заблокируют. Эффект от изменений был вполне предсказуем — миллионы человек массово ушли из WhatsApp. Прежде всего, в Telegram и Signal.

                        Павел Дуров назвал это «крупнейшей цифровой миграцией в истории»: всего за трое суток у Telegram появилось 25 млн новых пользователей, абсолютный рекорд. Илон Маск в твиттере прокомментировал события просто: «Используйте Signal», — написал он. То же самое советует Эдвард Сноуден. Мессенджер Signal для многих стал настоящим открытием.
                        Читать дальше →
                      • Как писать читаемый код

                          Бывает, что посмотрев на старый код, мы говорим: «Его проще переписать, чем поменять». Печально, если речь идет о нашем собственном коде, с такой любовь написанном несколько лет назад. Head of Developer Relations в Evrone Григорий Петров в своем докладе на TechLead Conf 2020 разобрал проблемы, которые приводят к такой ситуации, и рассказал, как бороться с Software complexity problem.

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

                          Читать далее
                        • Пора избавляться от мышки или Hand Pose Estimation на базе LiDAR за 30 минут

                          • Tutorial
                          image

                          Всем привет! Пока киберпанк еще не настолько вошел в нашу жизнь, и нейроинтерфейсы далеки от идеала, первым этапом на пути к будущему манипуляторов могут стать LiDAR. Поэтому, чтобы не скучать на праздниках, я решил немного пофантазировать на тему средств управления компьютером и, предположительно, любым устройством, вплоть до экскаватора, космического корабля, дрона или кухонной плиты.
                          Читать дальше →