• Электрички разные. Очень


      Рельсовый автобус РА-1 с дизельным двигателем

      Электричка — это электропоезд. Ласточка и Сапсан, по идее, электрички, но при этом они поезда дальнего следования (а Ласточка бывает ещё и пригородного). Поэтому когда мы говорим про электричку, то обычно имеем в виду поезд пригородного сообщения с билетом без фиксации мест. То есть где можно стоять. Но не всё из этого множества электропоезда, потому что бывают рельсовые автобусы, автомотрисы и дизельные поезда — например, между станциями Кривандино и Рязановка как раз ходит РА-1.

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

      Бывают электрички с вагонами повышенной комфортности: вы садитесь в электричку и можете зайти в специальный вагон, заплатить сбор прямо внутри электрички. Там можно поспать на свежем белье или сесть в более мягкое и большое кресло. Так, например, в некоторых поездах на Горьковской железной дороге.
      Читать дальше →
    • Google's Shell Style Guide (на русском)

      • Перевод
      • Tutorial

      Предисловие


      Какой Shell использовать


      Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


      Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


      Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


      Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


      Когда использовать Shell


      Shell следует использовать только для небольших утилит или простых скрптов-оберток.


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

      Читать дальше →
      • +29
      • 8,5k
      • 9
    • Как собрать досовский COM-файл компилятором GCC

      • Перевод
      Статья опубликована 9 декабря 2014 года
      Обновление от 2018 года: RenéRebe сделал на базе этой статьи интересное видео (часть 2)

      В минувшие выходные я участвовал в Ludum Dare #31. Но даже до объявления тем конференции из-за своего недавнего увлечения я хотел сделать олдскульную игру под DOS. Целевой платформой выбрана DOSBox. Это самый практичный способ запуска DOS-приложений несмотря на то, что все современные процессоры x86 полностью обратно совместимы со старыми, вплоть до 16-битного 8086.

      Я успешно создал и показал на конференции игру DOS Defender. Программа работает в реальном режиме 32-битного 80386. Все ресурсы встроены в исполняемый COM-файл, никаких внешних зависимостей, так что игра целиком упакована в бинарник 10 килобайт.


      Читать дальше →
    • Блочные устройства QEMU

      • Перевод

      image


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


       -hda /dev/sda1

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

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

        Второй подход к домашним работам.

        TL/DR — кто делал ремонт, ничего нового тут не увидит. Кто считает, что один вводной автомат (или даже дифавтомат) вполне достаточен, увидит лишь бесполезное расточительство. Противопожарная безопасность это дорого, нужно редко.

        Слабай ударно на всякий пожарный
        Читать дальше →
      • Пробрасываем вызовы Steam API из Wine в GNU/Linux и обратно с помощью Nim

          У игроков на платформе GNU/Linux множество проблем. Одна из них — необходимость устанавливать отдельный клиент Steam для каждой Windows игры из Steam. Ситуация усугубляется необходимостью установки ещё и родного клиента Steam для портированных и кроссплатформенных игр.

          Но что если найти способ использовать один клиент для всех игр? За основу можно взять родной клиент, а игры для Windows пусть обращаются к нему так же как, например, к OpenGL или звуковой подсистеме GNU/Linux — средствами Wine. О реализации такого подхода и пойдёт речь далее.

          Читать дальше →
        • Флаги в аргументах функций

          • Перевод
          Вы когда-нибудь сталкивались с таким кодом?

          process(true, false);

          Эта функция, судя по названию, что-то обрабатывает (process). Но что означают параметры? Какой параметр здесь true, а какой false? По вызывающему коду об этом нельзя судить.

          Нам придется заглянуть в объявление функции, которое дает подсказку:

          void process(bool withValidation,
                       bool withNewEngine);

          Очевидно, автор использует два параметра типа bool как флаги (toggles). Реализация функции может быть похожа на это:

          void process(bool withValidation,
                       bool withNewEngine)
          {
            if (withValidation)  // используется 1-й флаг
              validate(); // % подтвердить
           
            do_something_toggle_independent_1
           
            if (withNewEngine)   // используется 2-й флаг
              do_something_new();
            else
              do_something_old();
           
            do_something_toggle_independent_2();
          }

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

            Стиль описания конечного автомата как образ мышления


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

            Например, очень популярной является работа: Clifford E. Cummings, The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. Всякий раз, когда специалисты решают обсудить, как правильно писать конечные автоматы, кто-то обязательно достает эту публикацию.

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

            В беседах с коллегами я понял, что споры о том, как надо писать конечные автоматы в 1 или 2, 3 always блока, связаны с разным представлением (осознанием) реализуемого алгоритма, разным типом мышления. Попробую показать это на примере.

            Я полагаю, что эта статья не первая статья о FSM и Verilog в вашей жизни, поэтому я не буду объяснять ни что такое конечный автомат, ни как он описывается на Verilog, а перейду сразу к делу.
            Читать дальше →
          • Большая миграция: как мы частное облако на RISC поднимали

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


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