Search
Write a publication
Pull to refresh
206
0.7
Send message

Сам написал, сам погонял: как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля?

Level of difficultyMedium
Reading time28 min
Views38K
image

Статьи про инди-разработку игр — это всегда интересно и занимательно. Но статьи про разработку игр с нуля, без каких-либо игровых движков — ещё интереснее! У меня есть небольшой фетиш, заключающийся в разработке минимально играбельных 3D-демок, которые нормально работали бы даже на железе 20-летней давности. Полтора года назад, в мае 2022 года, я написал демку гоночной игры с очень знакомым всем нам сеттингом — жигули, девятки, десятки, и всё это даже с тюнингом! В этой статье я расскажу вам о разработке 3D-игр практически с нуля: рендерер, менеджер ресурсов, загрузка уровней и граф сцены, 3D-звук, ввод и интеграция физического движка. Интересна подробнейшая хаброторная статья о разработке игры с нуля? Тогда добро пожаловать!
Читать дальше →

Как у меня украли авторство патча

Level of difficultyMedium
Reading time5 min
Views27K

Примерно полтора года назад я попросил у своей бывшей компании разрешения поработать над проблемой, влиявшей на возможности отладки нашего проекта: gdbserver не мог отлаживать многопоточные приложения, работающие на архитектуре PowerPC32. Подключение к gdbserver было поломано, и он больше не мог контролировать сессию отладки. Разные люди исследовали эту проблему до меня, и у меня уже был неплохой фундамент, но мы всё равно не знали точно, в каком конкретно программном компоненте таится проблема: это мог быть тулчейн, gdbserver, ядро Linux или собственные патчи, которые мы устанавливали поверх дерева ядра. От нахождения первопричины мы находились довольно далеко.

Читать далее

Джоел Спольски: Как правильно задавать вопросы более опытным программистам

Reading time5 min
Views7.8K

Чудаковатые и ломающие мозг правила Usenet, Burning Man и Stack Overflow


image


Джоел Спольски, апрель 2018

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

Это одна из хитростей, которая может помочь самостоятельно разрешить проблему в процессе программирования. Еще один способ — освоить отладку программы (дебаггинг) по принципу “разделяй и властвуй”. Невозможно перерыть тысячу строк кода ради одной ошибки. Зато можно разделить код на две части и посмотреть, что происходит в первой половине, а что происходит во второй. Сделай это пять-шесть раз и дойдешь до той самой строки с ошибкой.

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

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

К сожалению, не каждый слышал об этом чек-листе. А может и слышал, но предпочел проигнорировать. У человека проблема с кодом, он знает, что существует система вопросов и ответов Stack Overflow, которая может ему помочь, и времени читать протокол какого-то ботана о том, как надо задавать вопросы, у него нет.
Читать дальше →

Периферийное сканирование JTAG: тестирование опытных образцов электроники

Reading time5 min
Views21K


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

Напомним, что периферийное сканирование (boundary scan) — это структурное тестирование печатной платы с установленными компонентами, которое основано на применении стандартов IEEE 1149.x. Результат сканирования — информация о наличии в электроцепях типичных неисправностей, возникающих в процессе производства печатных плат: коротких замыканий (bridges), непропаек (opens), западаний на 0 или 1 (stuck at 0, stuck at 1), обрывов дорожек.
Читать дальше →

«Основание» Азимова наоборот

Level of difficultyEasy
Reading time17 min
Views48K

На Apple TV вышел второй сезон сериала, который экранизирует цикл фантастических романов Азимова об Академии (или Основании, а на самом деле — о Фонде). Я, как и многие, читал их в детстве. До сих пор эти тексты не переносили на экран, так что мне, конечно, хотелось увидеть, как будут визуализированы классические образы ученых, защищающих знание и цивилизацию от хаоса и варварства космических масштабов. Показ нового сезона — повод поделиться тем, что, как мне кажется, получилось у создателей сериала по сравнению с книжным источником.

Читать далее

Декапсуляция микросхем в домашних условиях

Level of difficultyMedium
Reading time4 min
Views9.8K
В этом обзоре я расскажу, как при помощи палок и известной субстанции добраться до кристалла микросхемы и оценить топологию. Если повезет, сможем прочитать логотип производителя и даже серию, или наименование микросхемы.

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

Аэропоника — это сложно

Level of difficultyEasy
Reading time19 min
Views34K

Аэропоника — перспективный и эффективный способ выращивания растений. Такие выводы я сделал, начитавшись статей. Я только что успешно вырастил на балконе клубнику и полон энтузиазма двигаться дальше. Я берусь за аэропонику. Кажется, что это не сложно, надо, всего лишь, вместо размещения растений в земле, разместить их в каких-нибудь ёмкостях и распылять раствор на корни. Это привело меня к эпопее с клубникой в контейнере (1, 2, 3) и ряду экспериментов с аэропоникой, о которых я ещё не писал. За это время у меня накопился некоторый багаж знаний относительно аэропоники, им я и буду делиться в этом посте.

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

Читать далее

Актуальный гайд по написанию простого Windows-драйвера

Level of difficultyMedium
Reading time10 min
Views49K

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

Читать далее

Разбор работы FIFO на микроархитектурном тренажере

Level of difficultyMedium
Reading time1 min
Views4.5K

FIFO – ключевая концепция в хардварном дизайне. Понимание работы FIFO необходимо, в частности, для понимания протокола valid/ready, который в свою очередь необходим для организации flow-control как внутри цифровых блоков так и на межблочном уровне.

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

Микроархитектурный тренажер дает возможность «прощупать» хардварные сценарии в пошаговом (интерактивном) режиме, предоставляя детальную визуализацию цифровой логики.

Поскольку тренажер является "фронтендом" для HDL симулятора то на самом симуляторе исполняется реальный, синтезируемый SystemVerilog который можно посмотреть и даже поменять его функциональность.

Смотреть видео и читать дальше

Я убрал из статьи об изменении климата правду, чтобы её опубликовали

Reading time8 min
Views52K

Мою статью только что опубликовали в журнале Nature, потому что я придерживался изложения, которое, как я знал, понравится редакторам. Так наука работать не должна.

Если вы читали новости о лесных пожарах этим летом - от Канады до Европы и Мауи, - то у вас наверняка сложилось впечатление, что они в основном являются результатом изменения климата.

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

Так почему же пресса так ревностно описывает изменение климата как основную причину? Возможно, по тем же причинам, по которым я только что опубликовал научную статью о лесных пожарах в Nature, одном из самых престижных журналов мира: она соответствует простой сюжетной линии, которая вознаграждает того, кто её рассказывает.

Читать далее

Гипотеза Пойи — один из самых ярких примеров того, что в математике «верить на слово» нельзя

Level of difficultyEasy
Reading time5 min
Views65K

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

Читать далее

Как кражи и вымогательство западных технологий обеспечили японское экономическое чудо

Level of difficultyEasy
Reading time11 min
Views26K

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

Японским компаниям нередко было некогда с нуля разрабатывать новые технологии. Поэтому приходилось добывать их всеми правдами и неправдами — покупать, вымогать, шантажировать и воровать. И в этом им активно помогало правительство, которое порой курировало однозначно незаконные действия. Рассказываем, как нарушения прав интеллектуальной собственности помогли воплотить в жизнь величайшее экономическое чудо нашей эпохи. 

Читать далее

Эра «сообществ повсюду» наступила: не упускайте эту возможность

Reading time9 min
Views4.1K

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

Ричард Миллингтон, автор книг про сообщества и основатель компании FeverBee, среди клиентов которой Apple, Google, SAP, Audi и сотни известных брендов со всего мира, утверждает, что нынешняя эра построения сообществ подходит к концу. За последние 15 лет Ричард помог более чем 300 организациям создать процветающие сообщества — возможно, и вы найдете полезное в его рекомендациях?

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее

Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino

Reading time5 min
Views122K
Хочу немного поделиться негативным опытом использования микроконтроллеров Atmel в промышленной разработке.

Atmel как целевую платформу выбрал заказчик, хотя мы его и отговаривали (еще даже не зная, что нам предстоит — интуиция, что ли?). Ну что же, «заказчик всегда прав».

В продукте было два контроллера — 32-битный UC3A3 и 8-битный ATMega164. В качестве дебаггера выбрали AVR One!, в качестве среды разработки — AVR Studio 5.0 (последняя версия на момент старта).

И началось!

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

Техникум: Распознавание Вещественного Числа из Строчки

Level of difficultyEasy
Reading time9 min
Views4.7K

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

Потом часто надо анализировать текстовые логи с SD-карты. Надо выхватывать вещественные числа из CSV файлов для дальнейших расчетов.

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

В этом тексте я представил решение этой задачи.

Читать далее

Что такое гамма кривая и зачем композерам работать в линейной гамма-кривой?

Level of difficultyEasy
Reading time4 min
Views4.5K

Начнем немного издалека: так уж сложилось, что наш глаз видит яркости окружающего мира в нелинейной кривой. Там, где в реальном мире яркость одного объекта может быть больше другого в 2 раза, для нашего глаза разница в яркости может показаться иной. Для наглядной проверки достаточно взглянуть на обычный линейный градиент:

Простое объяснение наболевшей темы.

Читать далее

Что происходит с рождаемостью в России и мире. И как это может отразиться на каждом из нас

Level of difficultyEasy
Reading time11 min
Views152K

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

С первого взгляда кажется, что эта тема очень узкая и уж точно не имеет отношения к IT. Но уменьшение населения, а что ещё более важно, изменение его возрастной и национальной структуры затрагивает все стороны жизни. Экономику - как пример длительная рецессия в Японии или поднятие пенсионного возраста в разных странах, общество - беспорядки на национальной почве как во Франции, право - обсуждение запретов абортов в России. Представьте, ваша девушка (или вы сами, если вы девушка) беременна, в стране аборты запрещены, а улететь можно только сдав кровь на ХГЧ, и если тест положительный за границу не пускают. Сейчас выглядит как бред, но в 2019 году наша реальность тоже показалась бы бредом.

Я пишу цикл статей по этой тематике. Разбираюсь в причинах, прогнозирую последствия и предлагаю пути решения. В этой статье есть ли вообще такая проблема как кризис депопуляции и почему люди перестали рожать. Если мои статьи заинтересую сообщество, буду продолжать.

Читать далее

О некоторых загадках в истории развития вычислительной техники

Level of difficultyEasy
Reading time9 min
Views10K

В 1981 мне повезло участвовать в разработке достаточно простого вычислителя с небольшим набором команд. Мой руководитель делал основную работу. Он определил набор команд, сделал сопряжение с внешней по отношению к вычислителю аппаратурой и решил множество других вопросов. Мне он поручил разработать дешифратор команд, тактовый генератор, генератор одиночного импульса для отладки схемы и еще что‑то ( после того как прошло столько лет уже не помню).

Суть заключается в следующем. Кроме того, что было поручено сделать мне, мой руководитель, зная очень хорошо номенклатуру электронных блоков, уже используемых на нашем предприятии, скомпоновал с большими ухищрениями часть вычислителя из них. Эти блоки были сделаны профессионально с элементами впаянными на печатные платы. Но для моей части работы готового блока не было. Поэтому после разработки схемы, в которую входило 30 или 40 (уже забыл) микросхем 133 серии, я распаял эти микросхемы и сделал все соединения «внахлест».

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

А сейчас внимание! Я познакомился с работой отдела в котором на нашем предприятии создавались печатные платы для сложных электронных устройств с несколькими десятками микросхем. Как оказалось это чрезвычайно нудный, кропотливый и длительный процесс. Даже для многих радиолюбителей процесс разработки печатной платы с гораздо меньшим количеством даже не микросхем а транзисторов или ламп не самое приятное дело. Здесь я имею в виду не процесс травления платы, а именно разводку соединений на ней.

Читать далее

Пора улучшать согласование

Level of difficultyMedium
Reading time8 min
Views15K


Я работаю в фирме, которая разрабатывает устройства для умных домов на частотах 869, 915 МГц. Это маломощные устройства с антеннами из провода, PCB-антеннами и внешними штыревыми антеннами. Для работы в квартире антенна должна быть всенаправленной. Заранее не известно, где будет расположено устройство и как сориентировано. Некоторые ключевые устройства мы относили к сторонним специалистам для настройки антенны, потом использовали эти согласования в других устройствах. Какое-то время этого хватало. У нас большой парк устройств, плюс одни и те же устройства работают в разных корпусах. Это требует настройки антенны для каждого типа продукта. Обращаться каждый раз к специалистам слишком дорого, поэтому несколько лет пытаемся научиться делать сами. Далее расскажу о процессе настройки антенны для одного из наших устройств с антенной из провода (ground plane).
Читать дальше →

Information

Rating
2,735-th
Registered
Activity