• Частный поезд, который когда-то поломал представления об удобстве


      В отстойнике в пункте формирования около Ленинградского вокзала.

      3 октября 2006 года с Ленинградского вокзала вышел первый состав «Мегаполиса». Даты запуска зависели от согласований, и билеты начали продавать в спешке примерно за неделю, а не за 45 дней до отправления. Никаких договорённостей с туристическими группами не было, и поезд в расписании казался просто ещё одним до Петербурга из множества. В первый рейс он ушёл с населённостью 19 % — это были случайные пассажиры. В декабре 2006 года добавили второй состав, а в мае 2007-го понадобилось добавлять вагоны: к 10 пассажирским и вагону-ресторану прицепили ещё семь, потому что пассажиров стало очень много. Запустили и второй состав по тому же маршруту.

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

      Основателей поезда бесили отсутствие пододеяльника и необходимость пассажирам самим заправлять полки, и поэтому все полки сразу были заправлены (вслед за «Мегаполисом» так стали делать позже и в остальных поездах). Бесило то, что утром весь вагон поднимается по рубильнику от громкой музыки. Бесили необходимость сдавать бельё проводнику и очереди с этим. Бесили пугающие туалеты и ещё много всего.
      Читать дальше →
    • Древности: рассматриваем материнскую плату 386-го компьютера

        Тот момент в самом начале сборки, когда кое-какие железки уже добыты, но еще ничего не работает, и единственное, чем можно заняться, это их рассматривать. И хорошо, это полезно. Персональные компьютеры развиваются настолько быстро, что даже устройства пятнадцатилетней давности воспринимаются, как нечто древнее, из разряда музейных ценностей. Материнской плате моего нового-старого компьютера на базе 386-го процессора 27 лет. Это уже не средневековые фолианты, скорее артефакты каменного века. Информации про железо эпохи «до веба» довольно мало, часто требуется реставрация разной степени сложности. В общем до того, как вы услышите приветственный писк, нужна подготовительная работа.


        Начало девяностых в IT — время большого разнообразия, непрерывного прогресса и регулярной работы над ошибками. Современные компьютеры значительно больше ограничены различными промышленными стандартами, а тогда разработка в стиле «кто во что горазд» была нормой. Спустя три десятилетия на это накладывается проблема ограниченного выбора и высоких цен. Сегодня я расскажу об основном железе старого компьютера на 386-м процессоре (без которого не заработает), буднях коллекционера древностей, покажу первый запуск и погоняю винтажный бенчмарк.
        Читать дальше →
      • Реверс-инжиниринг неизвестного процессора по единственной программе

        • Перевод

        TL;DR: мы выполнили обратную разработку программы, написанной для полностью неизвестной архитектуры ЦП без какой-либо документации на ЦП (без эмулятора, без ISA, без всего) всего за десять часов. Из статьи вы узнаете, как нам это удалось…

        В прошлые выходные мы с командой CMU PPP поучаствовали Teaser CTF 2019 команды Dragon Sector, чтобы расслабиться и отойти от жёсткого дедлайна CHI 2020. Dragon Sector — это уважаемая польская команда, имеющая историю интересных CTF, поэтому мне было интересно, что у них есть в запасе.

        Решив “ummmfpu”, — задачу, в которую входил реверс-инжиниринг байткода для сопроцессора с плавающей запятой Micromega uM-FPU, я решил поучаствовать в соревновании по решению задачи CPU Adventure, которая на тот момент не была решена ни одной из команд (в результате мы оказались единственными, кто справился с заданием).

        Вот описание задачи CPU Adventure:

        Мой дедушка в 60-х годах занимался разработкой компьютеров. Наводя порядок на его чердаке, я нашёл странную машину. Рядом с машиной лежала стопка перфокарт с пометкой “Dragon Adventure Game”. Спустя какое-то время мне удалось подключить её к современному оборудованию, но игра слишком сложная и я не могу добраться до конца без читерства. Сможете мне помочь? Прилагаю транскрипцию перфокарт, используемых в машине. Утверждается, что машина имеет 4 регистра общего назначения, 1 кибибайт памяти данных и 32 кибибайта памяти команд. Чтобы сыграть в игру, подключитесь к серверу следующим образом: socat tcp4-connect:cpuadventure.hackable.software:1234 fd:0,rawer Подсказка: процессор машины уникален, не пытайтесь гуглить информацию по нему.

        game.bin
        Читать дальше →
      • Внутренности Go: оборачиваем переменные цикла в замыкании

        • Перевод


        Сегодня я решил перевести для вас небольшую статью о внутренностях реализации так называемых замыканий или closures. В дополнение вы узнаете о том, как Go пытается автоматически определить, нужно ли использовать указатель/ссылку или значение в разных случаях. Понимание этих вещей позволит избежать ошибок. Да и просто все эти внутренности чертовски интересны, как мне кажется!


        А еще я хотел бы пригласить вас на Golang Conf 2019, которая пройдет 7 октября в Москве. Я член программного комитета конференции, и мы с коллегами выбрали много не менее хардкорных и очень, очень интересных докладов. То, что я люблю!


        Под катом передаю слово автору.

        Читать дальше →
      • Я вам перезвоню

        • Tutorial
        Привет, я Катя, я нашла работу. И написала методичку по общению с работодателем. Расскажу, что спрашивать на собеседовании, чего не спрашивать и как это делать правильно.



        Весь месяц гоняла по собесам. Посмотрела и на стартапы и на Яндексы. Компаний много, выбирать сложно. Чтобы найти ту самую, нужно учесть много факторов. Для каждой компании я составляла индивидуальный список вопросов. Универсальные оформила в этот faq. В нем ключевые вопросы соискателя и их аналитика. Часть вопросов заточена под разработчиков, остальные подойдут всем. Го под кат!
        Читать дальше →
      • Вытаскиваем ПО из запароленного микроконтроллера Renesas M16C



        Есть у меня знакомый, который занимается ремонтом автомобильного железа. Он как-то принес мне микроконтроллер, выпаянный из блока управления автономного отопителя. Сказал, что его программатор это не берет, а ему хотелось бы иметь возможность переливать прошивки туда-сюда, т.к. блоков много, в железе они часто одинаковые, а вот агрегаты, которыми они управляют отличаются. И вроде и блок есть взамен неисправного, но ПО разное и заменить просто так нельзя. Так как задачка была интересной, решил покопаться. Если тема интересна и вам, прошу под кат…
        Читать дальше →
        • +35
        • 3,9k
        • 8
      • Демодуляция Яндекса

          Праздник — это когда друзья собираются вместе и хорошо проводят время. Недавно команда Музея Яндекса организовала праздник ретрокомпьютинга «Демодуляция» — фестиваль для всех, кому интересна история техники.

          Мы хотим рассказать вам о том, как прошло мероприятие, какие образцы техники там были и почему гостям пришлось перерезать провода в определенном порядке и запускать процессор Apple 1. А ещё мы поделимся с Хабром записями всех докладов.


          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • Многопоточность в .NET: когда не хватает производительности



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

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

            Под катом — видео и расшифровка моего доклада с конференции DotNext, где я разбираю несколько примеров, когда использование средств из стандартной библиотеки .NET (Task.Delay, SemaphoreSlim, ConcurrentDictionary) привело к просадкам производительности, и предлагаю решения, заточенные под конкретные задачи и лишённые этих недостатков.
            Читать дальше →
            • +25
            • 3,4k
            • 9
          • Делаем свой Google Call Screening на основе Voximplant и Dialogflow

            • Tutorial

            Возможно, вы слышали или читали про функцию Call Screening, которую Google выкатил для своих телефонов Pixel в США. Идея отличная – когда вам поступает входящий звонок, то виртуальный ассистент начинает общаться, в то время как вы видите этот разговор в виде чата и в любой момент можете начать говорить вместо ассистента. Это очень полезно в наши дни, когда почти половина звонков – это спам, но при этом вы не хотите пропускать важные звонки от кого-то не из вашего списка контактов. Единственная загвоздка – эта функциональность доступна только на телефоне Pixel и только в США. Что ж, препятствия существуют, чтобы их преодолевать, верно? Поэтому мы решили рассказать, как сделать подобное решение, используя Voximplant и Dialogflow. Прошу под кат.
            Читать дальше →
            • +25
            • 1,8k
            • 2
          • Путь к проверке типов 4 миллионов строк Python-кода. Часть 1

            • Перевод
            Сегодня мы предлагаем вашему вниманию первую часть перевода материала о том, как в Dropbox занимаются контролем типов Python-кода.



            В Dropbox много пишут на Python. Это — язык, который мы используем чрезвычайно широко — как для бэкенд-сервисов, так и для настольных клиентских приложений. Ещё мы в больших объёмах применяем Go, TypeScript и Rust, но Python — это наш главный язык. Если учитывать наши масштабы, а речь идёт о миллионах строк Python-кода, оказалось, что динамическая типизация такого кода неоправданно усложнила его понимание и начала серьёзно влиять на продуктивность труда. Для смягчения этой проблемы мы приступили к постепенному переводу нашего кода на статическую проверку типов с использованием mypy. Это, вероятно, самая популярная самостоятельная система проверки типов для Python. Mypy — это опенсорсный проект, его основные разработчики трудятся в Dropbox.

            Dropbox оказалась одной из первых компаний, которая внедрила статическую проверку типов в Python-коде в подобном масштабе. В наши дни mypy используется в тысячах проектов. Этот инструмент бесчисленное количество раз, что называется, «проверен в бою». Нам, для того, чтобы добраться туда, где мы находимся сейчас, пришлось проделать долгий путь. На этом пути было немало неудачных начинаний и провалившихся экспериментов. Этот материал повествует об истории статической проверки типов в Python — с самого её непростого начала, которое было частью моего научного исследовательского проекта, до сегодняшнего дня, когда проверки типов и подсказки по типам стали привычными для бесчисленного количества разработчиков, которые пишут на Python. Эти механизмы теперь поддерживаются множеством инструментов — таких, как IDE и анализаторы кода.
            Читать дальше →
          • У вас есть дети. После удовлетворения их базовых потребностей вы невольно задумываетесь: как сделать так, чтобы в будущем они добились успеха в любимом деле и долгими зимними вечерами не жалели об упущенных возможностях. Мир вокруг преображается так же быстро, как Тони Старк в Железного Человека: одни профессии уходят в историю, на их место приходят другие, о которых еще вчера никто не слышал. Современные дети и подростки нечасто мечтают о карьере врача или учителя. Большинство из них видят себя Илонами Масками, Дрейками, Тимами Куками или как минимум Павлами Дуровыми и Покрасами Лампасами.
            Подробности – под катом
          • Танцы с саппортом: виды и формы поддержки

              Всем привет! Меня зовут Александр Афенов, и я тимлид команды Order Processing в Lamoda. Сегодня хочу рассказать вам о том, как мы разгребаем саппорт.

              Сначала поговорим про то, как он встраивается в наши процессы и как в целом мы планируем свою работу, спринты и итерации.

              Затем расскажу, откуда вообще саппорт может прилетать и на какие виды он подразделяется.
              Поделюсь опытом того, как мы внутри команды справляемся с каждым из видов саппорта.

              В конце рассмотрим плюсы и минусы используемых нами практик и подведем итоги.

              Читать дальше →
            • Какие проекты имеет смысл начинать и что нужно промышленности от ИТ сейчас


                Одна из главных задач ИТ сейчас в производственном секторе — уменьшить количество аварий.

                Что сейчас меняется на производствах?


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

                Всё идёт к тому, что через десять лет все сотрудники производств будут «под колпаком». Сейчас уже есть пилоты, но до массового распространения технологий ещё пара лет. Будет интерфейс руководителя производства, подозрительно напоминающий компьютерную игру. Там положение каждого сотрудника, свойства и состояния каждого станка, очередь задач, самочувствие каждого, тип исполняемых операций. Смысл в том, чтобы оцифровать всё и контролировать правильность исполнения процессов. И ещё вспомогательный AI будет оптимизировать задачи сотрудников — уже есть примеры, где работа распределяется по оптимальной загрузке станков и навыкам рабочих, правильно кластеризуется и выстраивается в оптимальной последовательности.
                Читать дальше →
                • +21
                • 7,1k
                • 6
              • Рефакторим параллельно с разработкой: наш опыт и два чек-листа



                  Для множества команд рефакторинг — это боль. Потому что если ты занимаешься рефакторингом, то не разрабатываешь основной продукт, а если не занимаешься — растет технический долг проекта. В какой-то момент команды приходят к мысли: «Давайте разграничим рефакторинг и разработку и выделим на него, например, 20% наших человеко-часов, а остальное время продолжим заниматься разработкой!» Мысль эта неплохая, вот только дело в том, что на каждые 100 разработка-часов вы никогда не получите 20 чистых часа рефакторинга. Потому что «разработка» — это не только работа с кодом.

                  Если мы говорим о зрелых командах, а не сжатых в материальную точку мини-коллективах на 3-5 человек, то «разработка» включает в себя еще целую массу различных активностей команды кроме написания кода. В «разработку» можно записать так нелюбимые многими митинги, работу с документацией, ведение отчетности в таск-менеджерах и так далее. Все это съедает примерно 30% от наших часов, выделенных на разработку. И как-то незаметно у нас получается, что вместо картины «80 часов кодим, 20 часов рефакторим» мы получаем неприглядную цифру в ~13 часов на, непосредственно, сам рефакторинг, потому что все остальное было поглощено другими активностями.

                  Ниже мы расскажем, как все же совместить разработку с рефакторингом так, чтобы технический долг проекта не рос, будто снежный ком, а еще поговорим о правильном распределении времени и расстановке приоритетов.
                  Читать дальше →
                  • +20
                  • 1,7k
                  • 2
                • Нейросеть для классификации спутниковых снимков с помощью Tensorflow на Python

                  • Перевод
                  • Tutorial


                  Это пошаговая инструкция по классификации мультиспектральных снимков со спутника Landsat 5. Сегодня в ряде сфер глубокое обучение доминирует как инструмент для решения сложных проблем, в том числе геопространственных. Надеюсь, вы знакомы с датасетами спутниковых снимков, в частности, Landsat 5 TM. Если вы немного разбираетесь в работе алгоритмов машинного обучения, то это поможет вам быстро освоить это руководство. А для тех, кто не разбирается, будет достаточным знать, что, по сути, машинное обучение заключается в установлении взаимосвязей между несколькими характеристиками (набором признаков Х) объекта с другим его свойством (значением или меткой, — целевой переменной Y). Мы подаём на вход модели много объектов, для которых известны признаки и значение целевого показателя/класса объекта (размеченные данные) и обучаем ее так, чтобы она могла спрогнозировать значение целевой переменной Y для новых данных (неразмеченных).
                  Читать дальше →
                  • +20
                  • 1,7k
                  • 1
                • Промышленный контроллер. Система сбора данных. АСУ

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



                    Разработка промышленного контроллера с дисплеем для сбора и анализа данных, а также для управления нагрузками, объединенными в группы. Кому интересно, что из этого получилось, прошу под кат.
                    Читать дальше →
                  • SPA Meetup 5: интеграция Jest с QA, мощный UIKit, библиотеки компонентов, DI для масштабирования, платформенные команды

                      Привет! Это пост-отчёт с митапа Moscow SPA 5, серии встреч для фронтенд-разработчиков, которым интересна тематика веб-приложений (Single Page Application). Вместе с докладчиками из Mail.Ru, Яндекса, ВКонтакте, Тинькофф и Авито мы говорили об интеграции Jest с QA-инфраструктурой, DI в качестве способа масштабирования, росте библиотек компонентов, платформенной команде. А также обсуждали, может ли UIKit быть максимально гибким и подходящим для всего.


                      Заходите под кат, если вам интересны эти темы. Внутри вы найдёте материалы встречи: видеозаписи докладов, презентации спикеров, отзывы гостей митапа и ссылки на фотоотчёт.


                      Читать дальше →
                    • Карго-культ в разработке ПО

                      В последнее время вижу много примеров, как технические руководители проектов (aka CTO) следуют канонам Карго-культа при разработке и управлению проектами, вместо того, чтобы вводить сущности по мере их надобности, а сам процесс выстраивать исходя из текущих потребностей, доступных ресурсов и квалификации исполнителей. Мы поговорим о том, как выявить такого Карго-культиста и какие риски для проекта они несут.
                      Читать дальше →
                    • Кнопка Amazon Dash: ретроспектива

                      • Перевод


                      Интернет вещей произведёт революцию везде! Производство? Выгул собак? Перезагрузка кофемашин? Вождение автомобиля? Питание? Засуньте туда датчик! Маркетинг утверждает, что любая часть нашей жизни будет улучшена при помощи IoT. Почему? Потому, что при помощи простого датчика и симфонии пустопорожней корпоративной болтовни про машинное обучение революция сродни явлению iPhone вот-вот произойдёт! И вот он: Amazon Dash, где-то 2014-й год.

                      Первым продуктом семейства Dash было устройство для сканирования штрих-кода Amazon Dash Wand – его бесплатно раздавали клиентам Amazon Fresh [службы доставки еды / прим. перев.], которые должны были вешать его на кухне, например, при помощи магнита на холодильник. Когда у клиента Fresh заканчивалось молоко, он мог просканировать пакет перед тем, как выбросить, добавив тем самым его в корзину покупок. Подозреваю, что эти устройства были довольно дорогими и достаточно сложными, чтобы их можно было использовать так, как хотела Amazon (поэтому их запуск был настолько ограниченным). Целью Amazon было позволить потенциальным клиентам делать заказы с как можно меньшими усилиями, чтобы те в результате покупали как можно больше. Помните кнопку «купить сейчас за 1 клик»?
                      Читать дальше →
                      • +17
                      • 2,8k
                      • 2
                    • Как придумать название продукта или компании на примере Vepp



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

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

                      Самое читаемое