• Блочные устройства QEMU

    • Перевод

    image


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


     -hda /dev/sda1

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

    Разбираемся с подключением и форматами виртуальных дисков
  • Психология читабельности кода

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

    Каждый программист старается писать хороший код. Читабельность — один из главных признаков такого кода. О ней написано достаточно много книг, но всё же в теме есть пробелы. Например, те самые книги сфокусированы больше на советах КАК написать читабельный код, а не на причинах того, почему один код является хорошо читабельным, а другой — нет. Книга говорит нам «используйте подходящие названия переменных» — но что делает одно название более подходящим, чем другое? Работает ли это для всех примеров подобного кода? Работает ли это для всех программистов, которым попадётся на глаза этот код? Как раз о последнем я и хотел бы поговорить чуть детальнее. Давайте погрузимся немного в человеческую психику. Наш мозг — главный наш инструмент, хорошо бы изучить специфику его работы.
    Читать дальше →
  • Устройство спецэффектов для игр под NES. Часть 1

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

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

      Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.
      Читать дальше →
    • Разработка игр под NES на C. Главы 1-3. От введения до Hello World

      • Перевод
      • Tutorial

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


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


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

      Читать дальше →
      • +52
      • 17k
      • 5
    • Избавляем игрока от раздражения: правильное использование случайных чисел

      • Перевод
      image

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

      Но есть способ и получше. Используя случайных чисел и их генерирование иным образом, мы можем создавать захватывающий игровой процесс, создающий «идеальный» уровень сложности, не выбешивая при этом игроков. Но прежде чем мы перейдём к этому, давайте рассмотрим основы генераторов случайных чисел (или RNG).
      Читать дальше →
    • Золотое правило git rebase

      • Перевод
      Всем привет!

      Мы тут немного переделали наш курс посвящённый web-разработке и добавили ещё целый месяц изучения JS. Ну и как обычно у нас — рассмотрим что-нибудь интересное, что разбирается у нас на курсе. В данном случае — git rebase.

      Поехали.

      Что на самом деле происходит во время git rebase, и почему вас должно это волновать.

      Основы rebase-а

      Таким вы могли бы представить себе rebase в git:


      Читать дальше →
    • Где создаются миры: рабочие места 22 разработчиков игр

      • Перевод
      image

      Разработчики видеоигр — это демиурги, создающие вселенные и яркую реальность из сплетения загадочных скриптов. Но даже божественным сущностям нужно рабочее место. В конце концов, PlayStation не было бы без WorkStation. Как и игра, рабочее место автора раскрывает что-то о его ценностях, эстетике, интересах или страхах.

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

      Группа разработчиков игр со всего мира согласилась показать нам свои рабочие места и рассказать, в каких условиях сегодня создаются новые миры.
      Читать дальше →
    • Алан Кей (и коллективный интеллект Хабра): какие книги формируют мышление тру инженера

      • Перевод
      image

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

      Ключевой частью инженерии является любовь к тому, чтобы делать вещи, особенно к тому, чтобы делать их сразу же и делать их хорошо. Большая часть инженерии возникла из “tinkering” (aka “hacking”), добавив к этому желания «принципиального проектирования и создания», «целостности» и т. д. Все великие инженеры, которых я знаю лично, имеют глубокие моральные убеждения касательно того, что они делают, и почему это «должно быть сделано как можно лучше». Часть наложения темперамента на науку это своего рода «лабораторная крыса», которая наиболее счастлива, когда она в курсе эксперимента или создания нового экспериментального аппарата.
      Читать дальше →
    • Установка Debian с корнем на шифрованном ZFS зеркале

      image


      Предисловие


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


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


      Изучив, какие сейчас имеются ОС для решения данной задачи, я пришёл к выводу, что изо всего многообразия, наиболее развиты, широко используемы и, следовательно, проработаны, FreeNAS на основе FreeBSD и OpenMediaVault на основе Debian, созданный одним из разработчиков FreeNAS.


      FreeNAS стабилен, удобен, гибок и вообще хорош, но попытавшись его поставить, вместо FreeBSD bsdinstall, я увидел совершенно урезанный инсталлятор, в котором я могу только выбрать диски и ввести пароль root: даже разметить диски нельзя.
      GELI мне понравился больше cryptsetup на Linux, как и BSD-шный parted.
      Попытавшись сделать root на шифрованном разделе, я понял, что эта задача нетривиальна, несмотря на то, что они уже используют root на ZFS.
      Затем, пообщавшись, с сообществом FreeNAS, которые стали доказывать, что FreeNAS — не ОС, а приложение, я решил установить OMV.


      К тому же, Debian — моя основная ОС и с Linux дела обещали быть проще...


      Выяснилось, что не совсем. Задача создания такой конфигурации, как у меня, совсем не тривиальна. Потому, я решил написать данную статью.

      Читать дальше →
    • Cжатие и улучшение рукописных конспектов

      • Перевод
      Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

      Исходное изображение и результат:


      Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

      Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

      Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
      Читать дальше →