spiiin: (Default)
В порядке убывания.

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

2. Как личный дневничок для заметок про то, чем занимаюсь.
Ссылки оставлю пока на жж, так как записи были там.
Полезное
- про исследование nes-игр и всякого (больше для себя, чтобы не забыть чего, статьи поупорядоченнее писал для хабры). tags: nes, hack.
- иногда всякие софтово-хардовые мелочи. tag: dev, soft, hardware, codespell, половина остальных тегов журнала
- про жонглирование. tag: juggling

Бесполезное
- ещё частенько про игры (как с позиции геймера, так и разработчика). tag: games
- шутки-самосмейки. tag: fun
- цитатки из книг. tag: книги

*Глянул статистику, по каким запросам меня находят в поисковиках - кроме разных ромхакерских запросов это ещё "сборка otg кабеля с зарядкой" (я это написал от удивления, что у меня эта хрень заработала) и неизменно популярное "пауки и наркотики" (хз, чего это так интересно всем).

Про жонглирование и ромхакинг отдельные проекты, наверное, стоило бы вести, и писать туда более развёрнуто не только для себя, может быть, поищу какую-нибудь платформу для этого. Medium выглядит красиво, не знаю, насколько он удобен для такого формата. Ну или standalone вообще.

3. Склад ссылок, которые не хочется потерять. tag: link

4. Пометки о том, что хочу сделать.

5. Тексты ни о чём и для себя. tag: tales

6. Хотелось бы ещё писать, но не получается:
– про путешествия по миру, походы, и необычные крымские места (про это вечно лень подбирать фото, да и очень много людей пишут про путешествия в общем, непонятно для кого писать - в жж я мало кого знаю лично, ну и надо уметь писать интересно). Обычно всё заканчивается выкладыванием фоточек в социальные сети.
– про работу с информацией в общем (сбор, в том числе и программами, проверка фактов, ловушки сознания, защита от агрессивной информации, исследование себя). Про это писать сложно, и тоже не очень понятно для кого или для чего, ну и нет уверенности в том, что я разбираюсь в этом достаточно хорошо.

Пока перекину блог в dreamwidth, и расчищу старые записи, а дальше видно будет.


Tags:
spiiin: (totoro)
Обновил мажорную версию своего редактора CadEditor уровней для кучи NES и SMD игр.

За 3 года добавил:

- Поддержку новых режимов аттрибутов (бит палитры и свойств) – поддержка аттрибутов на уровне блоков (уже была, игры Capcom) , макроблоков (Tiny Toon Adventures / серия Ninja Gaiden), описание аттрибутов отдельным слоем поэкранно (Contra Spirits / Mickey Mania / Batman).
- Поддержку иерархий макроблоков любого уровня вложенности (рекорд: Rokin' Kats – 4 уровня иерархии).
- Систему плагинов для редактирования конкретных аспектов игр (примеры - плагин для редактирования глобальной карты или плагин для редактирования фонов в SMD-играх, доработанный редактор фреймов анимаций для Capcom-игр).
- Конфиги для отображения блоков и экранов для десятка сеговских игр (в основном использующих компрессор RNC, для которого есть пакер). Заметки по форматам уровней: Раз, Два, Три. (SMD Earthworm Jim 1-2, Alladin, Jungle Book, Mickey Mania, Pitfall etc)
- Написал универсальную утилиту для поиска блоков и аттрибутов известных форматов для NES игр. Она магическим способом обнаруживает не только известные форматы блоков, но также находит и те, на которые не была запрограммирована!
- С помощью этой утилиты открыл наиболее часто встречающийся способ кодирования блоков в NES играх – 16 байт на блок 4x4 и 1 байт на палитру. Добавил поддержку таких блоков в редактор и описал конфиги для двух десятков игр с таким форматом (серия TMNT, серия Battletoads, серия Adventure Island, серия Power Blade, Jackal, Contra Force, Jackie Chan Action Kung Fu etc.)
- Улучшил утилиту Autocorrupter, для создания скриншотов изменных данных об уровне и их последующего анализа. Утилита используется для упрощения генерации конфигов картинками и блоками для редактора.
- Немного улучшил код редактора и добавил возможность использовать его как библиотеку, управляя ею из скриптов на языке Python (с использовнием Jupyter Notebook). Скриптование своих же программ позволило перейти от реверса конкретных игр к реверсу всех игр на платформе вообще.
- Написал несколько обзорных заметок про ромхакинг и возможности редактора.
- Запустил кампанию на Patreon, собирающую по 3$ в месяц на пиво :)
- Суммарно в проекте около 30к строк кода, 500 конфигов уровней для 85 разных игр.

Зачем всё это?
Если долго и упорно годами бить в одну точку, пространство раскрывается и показывает тайны скрытых неизведанных миров между строчек ассемблерного кода. Даже если эти миры существуют только для тебя и ещё нескольких сотен энтузиастов по всему миру.
Tags:
spiiin: (totoro)
А жж в качестве промо-материалов подсовывает политику только по российским айпишникам или вообще всем теперь?

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

Другими словами, если где-то находится яма с дерьмом, надо иметь возможность пройти мимо и не обращать внимания, а не быть в неё окунутым с вопросом, "ну правда, же - полное дерьмо?".
Tags:
spiiin: (totoro)

Отличное роуд-муви про то, как Элайджа Вуд и Евгений Гудзь едут с дедом по Украине в поисках к посёлку Траченброд.
spiiin: (totoro)
Как в python собрать функцию, которая после вызова pickle.loads совершит любое действие.

Программирование с помощью виртуальной машины pickle:
http://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_WP.pdf

Сериализация функции:
https://www.cs.uic.edu/~s/musings/pickle/

Выполнение кода и открытие сокета с remote shell:
https://blog.nelhage.com/2011/03/exploiting-pickle/
Tags:
spiiin: (totoro)
Как-то странно инстаграм встраивается
https://www.instagram.com/p/BQqrNq9AuYL/
Где-то год учился делать этот трюк, всё ещё криво, но уже немного получается.
Tags:
spiiin: (totoro)
После введения ужесточённых правил прохождения таможни США программистов могут проверить на знание алгоритмов и структур данных. Не зря в универе балансировку бинарных деревьев изучали, не зря!

https://twitter.com/cyberomin/status/835888786462625792
Tags:
spiiin: (totoro)
https://www.root-me.org/en/Challenges/App-Script/

Отличные челленджи на поиск уязвимостей в скриптах на различных языках – достаточно сложные (решения минимум в 2-3 этапа), требуют знаний в нескольких областях одновременно, не все решения запалены в интернете. Обнаружил, что знаю Python достаточно, чтобы почти полностью самому в них разобраться. Прошёл все пять:

В принципе, и так известно, что не надо совать в eval и pickle.loads ничего, что пришло от пользователя, но после выполнения таких заданий понятно, что не надо так делать СОВСЕМ (даже максимально отфильтровав ввод), потому что даже с очень сильными ограничениями пользователя, он всё равно сможет запустить любой код, который ему захочется.
Tags:
spiiin: (totoro)
Нашёл замечательную библиотеку Selenium по управлению браузерами, как headless (Phantom-JS/HTMLUnit), так и "настоящими" (Firefox/Chrome/IE/Safari и ещё десяток third-party драйверов для браузеров на любой вкус) локально или удалённо.

Позволяет "нажимать" на элементы, ожидать результатов асинхронных запросов по условию, выполнять JavaScript в контексте DOM-страницы и вообще почти любые фишки, которые умеет браузер.

Когда-то юзал для выполнения простых JavaScript на странице Greasemonkey, а для парсинга сайтов mechanize (уже мертва, приходится дописывать нужные фичи самому), теперь с этим проектом можно пойти намного дальше и наавтоматизировать всякого на Python или C# (а также Ruby, Java или JavaScript).
Tags:
spiiin: (totoro)
В Python else можно использовать не только как альтернативную ветку для if, но как альтернативную ветку для циклов for/while (выполнится в случае, если цикл не прерывался с помощью break), и как альтернативную ветку для try/except (выполнится в случае, когда исключений не было).

Пример из документации
Tags:
spiiin: (2D)
Уже не очень новые, но очень смешные (только для программистов) тексты Джеймса Микенса

Переводы на русский язык парочки, больше не нашёл:
Стражи ночи
Это наш мир
spiiin: (2D)
Ни разу не оформлял документацию для своих программ (не считая "документации" к учебным программам в универе). Ну, большая часть мелких программ и скриптов в ней и не нуждалась - запускай и готово. В играх же, которыми я в основном и занимался, документацию чаще всего и не делают совсем. Часто даже для внутренних продуктов, вроде упаковщиков данных или мелких редакторов данных, хорошо ещё, если ключи командной строки все задокументированы, а не по коду надо их назначения угадывать.

Ещё кто-нибудь из знакомых есть такие?
Tags:
spiiin: (2D)
Ссылки на обучающие ролики начального уровня тут.  Здесь же уровень crazy, такие трюки будут получаться после освоения где-то около 100 разных трюков из первого списка, или после двух-трёх лет жонглирования

Месяц назад Lucas Adverse проделал замечательную работу – собрал в одном ролике множество выступлений японских жонглёров, а также, что не менее важно, указал их имена и ссылки на их каналы.

Это то, чего не хватало серии видео "Japanese Jugglers".
Собственно, я когда-то из той серии жонглёров по именам и никам очень долго выискивал.
Так что, вот и мой список заодно:
Read more... )
Tags:
Jan. 13th, 2017 12:54 am

No

spiiin: (2D)
Смотрю "Доктор Кто", как его и надо смотреть, в абсолютном хронологическом беспорядке.
Tags:
spiiin: (2D)
После праздников взял в руки NesBlockFinder, и прошёлся им по играм, добавленным в CadEditor с помощью Autocorrupter'а. Схема простая – меняем в редакторе в тестовом РОМе один из блоков на первом экране на 0-й (по нему проще находить начало списка блоков), и запускаем поиск блоков в BlockFinder'е.

С помощью применения такого подхода обнаружилась целая группа игр, в основе описания уровней которых содержится одна и та же структура:


Она состоит из 16 байт, которые построчно кодируют номера 16-тайлов видеопамяти,  по ним строится блок размером 4x4 тайла (именно блок, а не макроблок, как в играх капком).

В дополнение к индексам тайлов с таким блоком связан 1 байт, в котором закодированы индексы палитры для каждой группы 2x2 блока (выделены на скриншоте разными цветами), по 2 бита на каждую группу из 4х блоков слева-направо сверху-вниз. Биты палитры применяются сразу к группе тайлов из-за аппаратных особенностей NES, именно так на ней хранится описание бекграунда. NesBlockFinder не ищет такие биты палитры, но во всех проверенных случаях это описание оказывалось либо сразу за массивом описания блока тайлами, либо сразу перед ним, так что обнаружить поинтер на эти биты очень просто.

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


Эта структура оказалась настолько универсальной, что она обнаружилась в следующих играх:
Power Blade 1-2 (разработчик Natsume)
Adventure Island 2-3 (Hudson soft)
Yo-Noid (Now production)
Jackie Chan Action Kung Fu (Now production)
Contra Force (Konami)
Batman Returns (Konami)
Super C (Konami)
Monster in My Pocket (Konami)
Bucky O'Hare (Konami)
Jackal (Konami)
Teenage Mutant Ninja Turtles 1-3 (Konami)
Alien 3 (Probe entertaiment)
Battletoads (Rare)
Battletoads & Double Dragon (Rare)
Darkman (Ocean software)


И, возможно, обнаружится ещё в паре десятков других игр для этой платформы. Такая универсальность объясняется тем, что её легко закодировать (легче, чем иерархическую систему из блоков и макроблоков).
Tags:
spiiin: (2D)

Скрипт для поиска секретов в Утиных Историях 2. Отмечает квадратиками все игровые объекты, за счёт чего получается найти все секретные места.
https://github.com/spiiin/CadEditor/blob/master/Stuff/nes_lua/duck_tales_2_show_objects.lua
Tags:
spiiin: (2D)
Диагностировал по своим симптомам поломку контроллера тач-скрина, но всё же решил разобрать его сам. После откручивания бесполезной защитной железки тач заработал. Заявляю, что iPhone'ы ремонтопригодны!
Tags:
spiiin: (2D)
Книга про то, как улучшать свой код, причём в широком смысле, не только переписыванием-рефакторингом, но изменением отношения к конструированию, а также способам работы над кодом в команде.

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

Но основноё достоинство книги в возможности использования в форме справочника, для этого в ней приводятся контрольные вопросы для проверки своего кода, а также списки книг по всем рассматриваемым аспектам разработки.

Некоторые главы из первой части кажутся написанными в стиле "делайте хорошо – и получите хороший результат, а будете делать плохо – получите плохой", но к таким главам всегда находится приложение с десятком книг, которые помогут разобраться в вопросе серьёзней.

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

Profile

spiiin: (Default)
spiiin

July 2017

S M T W T F S
      1
2345 678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2017 06:36 am
Powered by Dreamwidth Studios