• Миром всё ещё управляет язык С

    • Перевод
    Многие из проектов на языке С, существующих сегодня, начинали разрабатываться ещё десятилетия назад. Операционная система UNIX стартовала 1969 году (и писалась на ассемблере), но уже в 1972 была переписана на С. Точнее, это язык С был создан для того, чтобы появилось что-то, на что было бы удобно переписать с ассемблера ядро UNIX и получить чуть более высокоуровневый код, менее зависимый от архитектуры и позволяющий выполнять больше полезной работы на каждую строчку написанного кода.

    Разработка базы данных Oracle началась в 1977 году (тоже на ассемблере) и тоже была переписана на С в 1983 году. К тому времени это был уже один из самых популярных языков в мире.

    В 1985 году вышла Windows 1.0. Хотя код операционной системы Windows не является открытым, общеизвестно, что ядро в основном написано на С с небольшими вставками ассемблера. Разработка Linux началась в 1991 году и началась сразу на С. В следующем году она была опубликована под лицензией GPL и использована как часть GNU Operating System, которая и сама начиналась как проект на С и Lisp, так что многие компоненты были написаны на С.

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

    Как именно язык С управляет миром?

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

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

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

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

    Так как само по себе, описание устройства игровых архивов вряд ли принесет какую-нибудь пользу, я опишу весь путь, который я проделал в ходе изучения игровых архивов, ход своих мыслей, а также ошибки, которые привели меня в тупики.
    Читать дальше →
  • Great developer, true engineer and real leader — RIP Shawn O. Pearce

      image


      29 января 2018, скончался Шон Пирс, известный программист, автор, коммиттер и основатель многих проектов, в том числе Git, Jgit, libgit и Gerrit Code Review.


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


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

      Читать дальше →
      • +55
      • 13,1k
      • 8
    • Можно ли использовать С++ вместо Си для небольших проектов в микроконтроллерах

        Существует мнение, что использование С++ при разработке программного обеспечения для микроконтроллеров это как стрельба из пушки по воробьям. Мол код получается большого размера и неповоротливый, а мы привыкли бороться за каждый бит в ОЗУ или ПЗУ. И программное обеспечение для микроконтроллера может быть написано обязательно на Си. Действительно, ведь язык Си был задуман как альтернатива ассемблеру, код должен был быть такой же компактный и быстрый, а читаемость и удобство разработки позволять легко писать довольно большие программы. Но ведь когда-то и разработчики на ассемблере говорили тоже самое про Си, с тех пор утекло много воды и программистов, использующих только ассемблер, можно по пальцам пересчитать. Конечно, ассемблер еще играет важную роль в разработке кода для быстрых параллельных вычислений, написании ОСРВ, но это скорее исключение из правил. Так же как когда-то Си пробивал себе дорогу в качестве стандарта для встроенного ПО, так и язык С++ уже вполне может заменить Си в этой области. С++ стандарта С++14 и современные компиляторы имеют достаточно средств для того чтобы создавать компактный код и не уступать по эффективности коду, созданному на Си, а благодаря нововведениям быть понятнее и надежнее. Ниже приведен код поиска наименьшего числа в массиве из 5 целых чисел на двух языках Си и С++ на компиляторе IAR for ARM 8.20 с отключенной оптимизацией.
        Читать дальше →
      • Разворачиваем автоматизацию за пару часов: PHPUnit, Selenium, Composer

        • Tutorial
        Привет, Хабр! Меня зовут Виталий Котов, я работаю в Badoo, в отделе QA. Большую часть времени занимаюсь автоматизацией тестирования. Недавно я столкнулся с задачей максимально быстро развернуть Selenium-тесты для одного из наших проектов. Условие было простое: код должен лежать в отдельном репозитории и не использовать наработки предыдущих автотестов. Ах, да, и нужно было обойтись без CI. При этом тесты должны были запускаться сразу после изменения кода проекта. Отчёт должен был приходить на почту.

        Собственно, опытом такого развёртывания я и решил поделиться. Получился своего рода гайд «Как запустить тесты за пару часов».

        Поехали!


        Читать дальше →
      • Год за три на Хабре. Делимся опытом ведения корпоративного блога

          Каждый из нас видел волнующие и торжественные моменты, когда, например, устанавливается связь с космонавтами или со спутником. Люди радостно вскидывают руки, искренне и тепло улыбаются, иногда обнимаются, особенно если событие значимое. Команда ЛАНИТ улыбалась, обнималась, вскрикивала и жала влажной от пота взволнованных рук мышкой кнопку «Опубликовать» 51 раз.  2 февраля исполняется год, как мы пришли на Хабр. Эмоции, опыт, находки, факапы, паника и много позитива — в нашей истории успеха под катом. Все это точно пригодится тем, кто хочет раскачать свой корпоративный блог на Хабре, но не знает, как.


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

          Подробнее
          Реклама
        • Функция random() у гуглобота работает абсолютно детерминированно

          • Перевод
          Я проводил некоторые эксперименты, как Googlebot разбирает и рендерит JavaScript, и наткнулся на несколько интересных вещей. Первое — то, что функция Math.random() в Googlebot выдаёт полностью детерминированные серии чисел. Я написал маленький скрипт, который использует этот баг для точной идентификации гуглобота:


          Источник

          При первом вызове Math.random() из гуглобота результат всегда будет 0,14881141134537756, второй вызов всегда вернёт 0,19426893815398216. Скрипт по ссылке выше просто использует эту информацию для идентификации бота Google, хотя немножко обфусцирует свои действия, чтобы они не выглядели слишком произвольными.
          Читать дальше →
        • Статистика Тостера за 2017 год

            Всем привет от команды Тостера!

            Начался 2018 год, и мы хотим поделиться с вами итогами прошлого года, который для Тостера оказался достаточно позитивным и продуктивным.

            В 2017 году, пользователи Тостера задали более 100 тысяч вопросов и получили на них более 200 тысяч ответов. Решения были найдены для 51% вопросов, то есть каждый второй вопрос на Тостере находит решение. А вот как выглядит вся статистика за год в цифрах:

            За всеми остальными подробностями добро пожаловать под кат.
            Читать дальше →
          • Разработка игр под NES на C. Главы 1-3. От введения до Hello World

            • Перевод
            • Tutorial

            Впервые я задумался о том, как разрабатывают игры под приставки где-то через 20 минут после того, как в самый первый раз увидел Turbo Pascal. На глаза иногда попадался Subor с клавиатурой, и появилась мысль: "Наверное можно набрать какую-то программу, а потом в нее поиграть". Но интерес быстро затух, потому что абсолютно никакой информации по этой теме тогда не было доступно. Следующий раз эта же идея всплыла, когда увидел вполне играбельные эмуляторы старых консолей. Тогда стало ясно, что вбивать листинг в саму консоль и необязательно. Где-то очень потом появился Хабр с благожелательной аудиторией для таких вещей. В какой-то момент даже начал собирать разрозненную инфу чтобы написать мануал самому, и вот сегодня наткнулся на готовый учебник, который явно надо перевести.


            Разработка под старые консоли документирована вдоль и поперек, но именно по NES 99% информации относятся к разработке на Ассемблере. Меня почему-то зарубило, что надо освоить именно работу с С.


            следующая >>>
            image

            Читать дальше →
            • +52
            • 12,2k
            • 5
          • Как развернуть HD Wi-Fi для 45 тысяч болельщиков за 10 дней? Стадион «Спартака» в ожидании ЧМ-2018

              Нельзя просто взять и пригласить иностранные футбольные команды сыграть на стадионе в рамках Чемпионата мира. Стадион построен недавно и соответствует международным стандартам? Этого мало. Нужно пройти сертификацию FIFA. Международная федерация футбола, помимо прочего, контролирует свободный доступ болельщиков в Интернет. Итак, нам предстояло развернуть сети на трибунах домашнего стадиона футбольного клуба «Спартак» «Открытие Арена». Чтобы успеть к матчам Кубка Конфедераций, которые фактически стали репетицией ЧМ, у нас было чуть больше месяца. А непосредственно на установку точек доступа и отладку системы осталось 10 дней.

              Скажу наперед, что в России тогда еще не было столь масштабных проектов оснащения стадионов Wi-Fi.

              Читать дальше →
            Самое читаемое