User
Погружение в F#. Пособие для C#-разработчиков
Этот пост будет не о том, как «перевести» код с C# на F#: различные парадигмы делают каждый из этих языков лучшим для своего круга задач. Однако вы сможете оценить все достоинства функционального программирования быстрее, если не будете думать о переводе кода из одной парадигмы в другую. Настало время любопытных, пытливых и готовых изучать совершенно новые вещи. Давайте начнем!
Все материалы из серии переводов русскоязычного сообщества F#-разработчиков вы сможете найти по тегу #fsharplangru.
Скрытые послания в именах свойств JavaScript
Недавно мне попался этот твит от @FakeUnicode. Там был сниппет JavaScript, который выглядел довольно безобидно, но выводил скрытое сообщение. Мне понадобилось некоторое время, чтобы понять происходящее. Думаю, что запись шагов моего расследования может быть кому-то интересна.
Вот тот сниппет:

Что бы вы ожидали от него?
Здесь используется цикл
for in
, который проходит через перечислимые свойства объекта. Поскольку указано только свойство A
, можно предположить, что будет показано сообщение с буквой А
. Ну… я ошибался. :DКак создавались пушки для Doom

Введение
Меня зовут Грегор Копка, в разработку 3D-игр я попал в конце девяностых. Мы с моими друзьями участвовали в модсцене и работали над модом Quake III под названием «Navy Seals Covert Operations». Фактически это был мой первый опыт в создании игровых ресурсов для движка. Я занимался персонажами и оружием и совершенно не понимал, что я делаю! Но постепенно мы с друзьями научились всему необходимому. Этот серьёзный труд завершился успехом благодаря поддержке друг друга. Кроме того, нам удалось добиться и большей цели — создать свою собственную компанию. В университете, где я изучал дизайн, я продолжал заниматься 3D-графикой и поверхностно осваивал графику для фильмов. В те времена качество моих работ было намного ниже того, на что способны сегодня даже дети, просто потому что единственным источником знаний тогда были дорогие книги, целиком посвящённые созданию сфер в 3ds Max. Сегодня достаточно зайти на YouTube или на ArtStation, чтобы научиться приёмам оптимальной работы, перенять опыт других пользователей и вдохновиться огромной подборкой потрясающей 3D-графики.
10 типов структур данных, которые нужно знать + видео и упражнения
«Плохие программисты думают о коде. Хорошие программисты думают о структурах данных и их взаимосвязях», — Линус Торвальдс, создатель Linux.
Структуры данных играют важную роль в процессе разработки ПО, а еще по ним часто задают вопросы на собеседованиях для разработчиков. Хорошая новость в том, что по сути они представляют собой всего лишь специальные форматы для организации и хранения данных.
В этой статье я покажу вам 10 самых распространенных структур данных.
Эволюция графики в играх
Компьютерные игры долгие годы были главным двигателем прогресса как центральных процессоров, так и графических подсистем. Но в последнее время темпы прироста вычислительных мощностей и внедрения новых фич сильно замедлились. Наверное, всё дело в том, что подавляющее большинство геймеров вполне удовлетворяет текущее качество и реалистичность игровой графики. Давайте в эту пятницу посмотрим, как изменялась графика в играх за 45 лет. Внимание! Количество видео и ностальгии внутри зашкаливает.
Как мы мультиплеер для NFS MW писали

Разработка персонажей для игры «Аллоды Онлайн»

Многие начинающие художники горят желанием рисовать персонажей для игр. Но зачастую энтузиазм быстро гаснет, потому что создание персонажа — это ответственное дело, которым нельзя заниматься в отрыве от работы всей команды. Поэтому мы написали для вас руководство, как создавать игровых персонажей, на примере «Аллодов Онлайн».
Всё, что говорится в правилах, основано на огромном опыте разработки. Тут каждая буква имеет значение, и если вам показалось, что где-то есть ошибка или недосказанность, то лучше семь раз переспросить, чем сделать абы как. Ниже расписаны правила успешной работы в игровой индустрии. Если их не соблюдать, то ваша работа будет или недолгая, или неуспешная, или мучительная и для вас, и для заказчика. А если станете создавать персонажей в полном соответствии с этим руководством, то вас ждёт успех!
Процесс создания синематика вживую. Стрим сегодня, 27 июля в 15.00
История бренда Nike
Невероятным успехом пользовались видео компании Nike — пять из них были признаны победителями по версии критиков.
Сделай это «просто»
Nike — молодая корпорация, история берет начало в 1963 году. Мир восстанавливался после второй мировой войны. Фил Найт окончил университет, недолго проработал специалистом по финансам, и отправился в Японию для заключения первой деловой сделки. Знал ли он, что ему суждено основать мировой бренд?
Идея Фила Найта была простой — заполнить американский континент недорогими кроссовками азиатского производителя, купля-продажа. Мало кто знает, но первоначально компания называлась Blue Ribbon Sports, а беговая обувь, которую она реализовывала, носила имя «Tiger», ныне известная под брендом Asics.

Gamecube — устройство файловой системы

Привет, хабровчане! В прошлой теме я рассказывал, как мы с командой производили (и дальше производим) ромхакинг такой игры, как Xenoblade Chronicles на Nintendo Wii. Я бы хотел рассказать о менее простой, но интересной теме – устройство хранения файловой системы у Nintendo GameCube. Так уж вышло, что я полюбил данную консоль и никак не мог упустить шанс рассказать о её технической стороне, хоть и малой. Не будем затягивать, начнём!
Прокачиваем NES Classic Mini — продолжение

Сегодня я напишу продолжение этой истории, ведь за полгода мы добились гораздо более существенного прогресса в этом деле.
Как обычно, под катом моё повествование и в современной видеоформе, и в виде традиционной статьи.
Реверс-инжиниринг одной строчки JavaScript
Тема: Можешь объяснить мне эту одну строчку кода?
Текст: Считай меня тупым, но… я не понимаю её и буду благодарен, если растолкуешь подробно. Это трассировщик лучей в 128 символах. Мне кажется, он восхитительный.
<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>
Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.
Как я нашёл баг в процессорах Intel Skylake

Первое проявление
В конце апреля 2016 года вскоре после выпуска OCaml 4.03.0 один Очень Серьёзный Индустриальный Пользователь OCaml (ОСИП) обратился ко мне в частном порядке с плохими новостями: одно из наших приложений, написанное на OCaml и скомпилированное в OCaml 4.03.0, падало случайным образом. Не при каждом запуске, но иногда вылетал segfault, в разных местах кода. Более того, сбои наблюдались только на их самых новых компьютерах, которые работали на процессорах Intel Skylake (Skylake — это кодовое название последнего на тот момент поколения процессоров Intel. Сейчас последним поколением является Kaby Lake).
За последние 25 лет мне сообщали о многих багах OCaml, но это сообщение вызывало особенное беспокойство. Почему только процессоры Skylake? В конце концов, я даже не мог воспроизвести сбои в бинарниках ОСИПа на компьютерах в моей компании Inria, потому что все они работали на более старых процессорах Intel. Почему сбои не воспроизводятся? Однопоточное приложение ОСИПа делает сетевые и дисковые операции I/O, так что его выполнение должно быть строго детерминировано, и любой баг, который вызвал segfault, должен проявлять себя при каждом запуске в том же месте кода.
Как стать тимлидом и не взорваться

Два года назад я начал негласно исполнять роль iOS-lead в компании Touch Instinct и формированием стабильной работы iOS-отдела. Спустя полгода это трансформировалось в официальную должность. Из-за отсутствия опыта у меня возникало огромное количество проблем, которые вызывали жжение в области верхней части кресла. Это происходило из-за ряда факторов:
- Нехватка опыта менеджмента.
- Отсутствие рядом компетентного человека, уже прошедшего путь становления от новой для себя роли к человеку, который понимает устройство процессов, обязанностей и пути решения проблем.
- Нестабильность общих процессов в компании из-за её молодого возраста на тот момент.
Если вы стали лидом и первоначальная эйфория сменилась небольшим горением и унынием, то пара советов не будет лишней.
Компилируем, как будто на дворе 1992 год

Я изучал ванильный исходный код игры Wolfenstein 3D 1992 года. Несмотря на то, что ей уже 25 лет, и она совершенно устарела для современных платформ, её всё равно можно скомпилировать, если воссоздать окружение.
Для этого требуется всего лишь:
- Исходный код Wolfenstein 3D.
- DosBox.
- Компилятор Borland C++ 3.1.
- Wolfenstein 3D shareware (чтобы позаимствовать ресурсы).
Тёмные паттерны — как зловредные интерфейсы пытаются атаковать и обманывать

Вот это тоже:

И смущает меня здесь даже не заголовок пункта про отсутствие страховки, а по умолчанию выбранный первый пункт. При том, что при их основной логике сортировки по повышению цены первым должен идти немного другой — вообще бесплатный. Более того, меня смущает, что это предлагается как пакет, а не как отказ от страховки.
Теперь давайте посмотрим на менее очевидные вещи.
learnopengl. Урок 2.1 — Цвета
Перевод очередного урока с сайта learnopengl.com. Недавно обнаружил на русском Уроки по OpenGL с сайта OGLDev, но некоторые из них требуют 4 версию opengl, а примеры кода слишком зависимы от предыдущих уроков и объектно-ориентированы. Поэтому, вниманию всех интересующихся opengl'ем новичков со стареньким железом предлагаю коротенькую статью о цвете, с которой начинается вторая часть обучающего курса от Joey de Vries:
Немного реверс-инжиниринга USB flash на контроллере SK6211
Дабы немного развеять иллюзии, попробуем методами реверс-инжиниринга проанализировать алгоритмы работы NAND контроллера производства SKYMEDI SK6211 на примере готового изделия в виде USB flash 8Gb, выпущенной компанией Kingston.

рис. 1
Реверс-инжиниринг игры Lost Vikings
Я обнаружил, что для реверс-инжиниринга игры The Lost Vikings компании Blizzard (тогда она называлась Silicon and Synapse), похоже, не предпринималось никаких серьёзных попыток. Игра была выпущена в 1993 году, на закате эры DOS, и очень нравилась мне в юности. The Lost Vikings — это головоломка-платформер, в которой игрок управляет тремя викингами, каждый из которых имеет собственные умения. Викингам нужно объединить свои силы для решения загадок и прохождения уровней с различной тематикой: космический корабль, доисторический мир, Древний Египет. На изображении ниже показан первый уровень игры (источник: Strategy Wiki):

Казалось, что эту игру разобрать будет довольно просто. Уровни основаны на тайловых картах и содержат простые загадки: кнопки, включающие и отключающие объекты, передвижные ящики и поднимающий предметы кран. И на самом деле, бóльшая часть проекта по обратной разработке была достаточно прямолинейной. У игры есть один пакетный файл данных, содержащий сжатые блоки файлов. Блоки кодируют различные ресурсы игры, такие как спрайты, карты, звуки и т.д. Я написал несколько утилит, которые можно использовать для просмотра ресурсов игры: The Lost Vikings Tools.
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity