• 10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками

    • Translation

    image
    Маргарет Гамильтон стоит рядом с написанным ей исходным кодом бортового компьютера «Аполлона»


    Лаборатория реактивного движения (Jet Propulsion Laboratory) — научно-исследовательский центр НАСА, ответственный за большинство беспилотных космических кораблей США. Там пишут много кода, и права на ошибку у них намного меньше, чем у обычных программистов.


    В JPL пишут на Си, и на их сайте есть документ "JPL Institutional Coding Standard", описывающий жесткие стандарты кодирования внутри организации. Они напоминают правила программирования для встроенных (embedded) систем и систем реального времени, с ограниченными ресурсами. Но многие из правил эти просто принципы хорошего программирования. Ограничение сложности, максимальное упрощение для последующего чтения кода и отладки, отсутствие побочных эффектов. Мы в Хекслете постоянно говорим об этом в вебинарах и, конечно, в самих курсах. Мы считаем очень важным как можно раньше поднимать эти темы, поэтому про функции и побочные эффекты начинаем говорить в самом первом курсе «Основы программирования», который рассчитан на новичков. Это бесплатный курс, кстати, и в нем есть практика на языке JavaScript.


    Спасибо хабраюзеру Boletus за важную поправку и дополнение:
    В 2006 году Gerard Holzmann с коллективом сформулировал 10 основных правил для JPL в документе «The Power of 10: Rules for Developing Safety-Critical Code». Они вошли в основу нынешнего стандарта, наряду с MISRA C и другими дополнениями. Статья в Википедии.


    Вот перевод этого списка.

    Читать дальше →
  • [LibGDX] Создаем клон Flappy Bird — Zombie Bird

    • Translation
    • Tutorial
    Доброго времени суток %username%. Не давно наткнулся на хороший туториал по созданию клона игры Flappy Bird используя LibGDX и этот туториал мне понравился своей простотой и детализацией.

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

    Туториал разбит на 12 дней, содержит множество картинок, полотен кода и исходный код разбит по дням. Кому интересно, добро пожаловать под кат.
    Подробнее
  • Удачная модель ветвления для Git

    • Translation
    Перевод статьи Vincent Driessen: A successful Git branching model

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



    В качестве инструмента управления версиями всего исходного кода она использует Git.

    Читать дальше →
  • Список книг по наступательной информационной безопасности


      Grimoire ensorcele by naiiade

      Любую достаточно развитую технологию можно сравнить с оружием: когда у врага есть ружье, а у тебя нет, поневоле хочется изменить баланс сил в свою пользу. В области IT-безопасности знания, передаваемые различными способами, и есть то самое оружие, использование которого ограничивается не столько нормами УК, сколько этическим выбором.

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

        Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

        Пролог
        Глава 1. «The Key»
        Глава 3. «The Hungry Programmers»
        Глава 4. «The White Hat»
        Глава 5. «Cyberwar!»
        Глава 6. «I miss crime»
        Глава 8. «Welcome to America»
        Глава 34. «DarkMarket»



        Книга называется KingPin, что переводится на русский инженерный как шкворень — стержень шарнира поворотного соединения частей транспортных машин. В более узком смысле — ось поворота управляемого колеса автомобиля или иного транспортного средства.

        Когда я рассказал ребятам в лагере про подвиг Кевина, который выиграл Porsche 944, взломав дозвонившись на радиостанцию KIIS-FM, и как он разоблачил несколько сотен педофилов, школьники окрестили его «американским хакером-тесаком».

        Несколько добровольцев вызвались перевести пролог и прикоснуться к миру писательства на Хабре и компьютерной безопасности.
        Ведь будущие blackhat/whitehat хакеры должны знать своего друга/врага.

        «Поэтому сказано, что тот, кто знает врага и знает себя, не окажется в опасности и в ста сражениях. Тот, кто не знает врага, но знает себя, будет то побеждать, то проигрывать. Тот, кто не знает ни врага, ни себя, неизбежно будет разбит в каждом сражении.» Сунь Цзы

        Предлагаю хабрсообществу присоединиться и перевести по одной главе (они по 2-3 страницы). Пишите в личку или в комментах кто что взял, буду оперативно обновлять раздел «Оглавление».

        Начало истории о том, как крышевать миллиардный подпольный хакерский бизнес
        Читать дальше →
      • Хакер рассказал о компрометации Hacking Team

          Спустя почти год после компрометации кибергруппы Hacking Team, наконец стали известны детали этого инцидента, а именно, кто за этим стоял, а также мотивация такого действия. Издание Motherboard опубликовало детали компрометации HT, которые основаны на появившейся на ресурсе pastebin информации (на испанском) самого хакера. Человек под псевдонимом Phineas Fisher не только детально описал процесс получения архива с 400GB конфиденциальными данными, но также привел свои политические доводы и мотивацию.



          По утверждению Phineas Fisher взлом был мотивирован тем фактом, что услуги Hacking Team использовались спецслужбами для нарушения прав человека. Напомним, что спецслужбы различных стран были основными клиентами HT. Во взломе участвовал один человек и это заняло у него сто часов работы.

          Читать дальше →
        • Обезвреживаем бомбу с Radare2


            Доброго времени суток, %username%! Сегодня мы отправимся изучать бесчисленные возможности фреймворка для реверсера — radare2. В виде подопытного я взял первую попавшую бомбу, она оказалась с сайта Университета Карнеги Меллон.
            Читать дальше →
          • Список ресурсов по машинному обучению. Часть 1

            • Translation


            Ранее мы говорили о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решилие еще раз (1, 2) взглянуть в сторону темы машинного обучения и привести адаптированную (источник) подборку полезных материалов, обсуждавшихся на Stack Overflow и Stack Exchange.
            Читать дальше →
          • Пятничный формат: Как писать код, который никто не сможет сопровождать

            • Translation


            Благодаря советам экспертов в области Java вы научитесь писать код, который будет настолько сложно сопровождать, что любому, кто будет с ним работать после вас, потребуются годы, чтобы внести даже малейшие правки. Более того, если будете неизменно следовать этим правилам, вы сможете гарантировать себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в вашем коде.
            Читать дальше →
          • Как начать писать игры

            Оригинал: Starting out on Game Programming

            Путь в индустрию игровых разработок не близок. Эта статья призвана помочь понять с чего лучше начать это путешествие.

            Вы только что закончили ваш первый курс по С++ и хотите начать делать игры. Кто-то указал вам на этот сайт и вы, возможно, поэкспериментировали немного с руководством. Вы изучили несколько лаконичных примеров, но не нашли руководства о том, как сделать целую игру. И на то есть причина.

            Руководства хороши для обучения чему-то шаг за шагом, например тому, как перемещать изображение точки по экрану. Для того чтобы собрать игру воедино, вам нужны навыки решения возникающих проблем, приобретаемые лишь с опытом. Это не то, чему можно научиться из руководств. Лучший способ научиться делать игры — это начать их делать.
            Дальше
          • Вирусы. Вирусы? Вирусы! Часть 1



              Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…

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