Pull to refresh
1
Karma
0.3
Rating
Рома Ромов @perfect_genius

Генератор идей

  • Followers 2
  • Following 70
  • Posts
  • Comments

Заглавные и строчные буквы

Programming *
Я собрал здесь некоторые не очень очевидные факты о заглавных и строчных буквах, с которыми может столкнуться программист в работе. Многие из вас переводили строки во «все заглавные» (uppercase), «все строчные» (lowercase), «первую заглавную, а остальные строчные» (titlecase). Ещё более популярна операция сравнения без учёта регистра. В мировом масштабе такие операции могут быть весьма нетривиальны. Пост построен в виде «сборника заблуждений» с контрпримерами.

1. Если я переведу строку в uppercase или lowercase, число Unicode-символов не изменится.

Нет. В тексте могут попасться строчные лигатуры, которым не соответствует один символ в верхнем регистре. Например, при переводе в uppercase: fi (U+FB00) -> FI (U+0046, U+0049)

2. Лигатуры — изврат, ими никто не пользуется. Если их не учитывать, то я прав.

Нет. Некоторым буквам с диакритикой нет точного соответствия в другом регистре, поэтому приходится использовать комбинированный символ. Скажем, в языке африкаанс есть буква ʼn (U+0149). В верхнем регистре ей соответствует комбинация из двух символов: ʼN (U+02BC, U+004E). Если вам попадётся транслитерация арабского текста, вы можете столкнуться с (U+1E96), которой в верхнем регистре также нет односимвольного соответствия, поэтому придётся заменять на (U+0048, U+0331). В ваханском языке есть буква (U+01F0) с аналогичной проблемой. Вы можете возразить, что это экзотика, однако на африкаанс в википедии 23000 статей.

3. Ну хорошо, но давайте считать комбинированный символ (с участием modifying или combining code points) одним символом. Тогда длина всё же сохранится.

Нет. Есть, например, в немецком языке буква «эсцет» ß (U+00DF). При переводе в верхний регистр, она превращается в два символа SS (U+0053, U+0053).
Читать дальше →
Total votes 171: ↑169 and ↓2 +167
Views 42K
Comments 66

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

Programming *Data compression *Machine learning *Popular science Artificial Intelligence

В октябре прошлого года я опубликовал статью «О талантах, деньгах и алгоритмах сжатия данных», где с юмором описал, как «изобретают» новые алгоритмы сжатия люди, не имеющие достаточно навыков для реализации своих идей. А заодно рассказал про существующие конкурсы по новым алгоритмам, в том числе двигавшийся тогда к завершению конкурс алгоритмов сжатия с призовым фондом 50 тысяч евро.

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Total votes 259: ↑258 and ↓1 +257
Views 53K
Comments 120

Как сделать ОС для микроконтроллера

C *Programming microcontrollers *
Sandbox

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

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

Читать далее
Total votes 45: ↑41 and ↓4 +37
Views 16K
Comments 45

Реклама Creative Commons творчества русской группы Complex Numbers, что с 1996 года создает хорошую научную фантастику

Science fiction

Здравствуйте, я давно знаком с творчеством Complex Numbers, насколько я помню сначала меня поразила их опера 2032, которая вышла за год до первого айфона, где человек общается с машиной об оптимальной социальной формации, потом волосы встали дыбом от песенки Последее Кольцо, где рассказывается о тепловой смерти вселенной, что даже если мы и станем бессмертными пост-человеками то ничего не сможем поделать с законами физики.

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

На Хабре не нашел ни одной статьи об этой группе, подумал что они достойны рекламы. Тем более что творчество их мало того что бесплатно, так еще и Creative Commons. 25 лет, создавая после работы, такие особенные филосовские произведения. Какбы андерграунд, но стало удивлением что в Дальневосточном федеральном университете на кафедре «Основы биологии человека и биоэтики» в программе обучения от 2017 года содержится задание по написанию эссе после прослушивания Русалочки (одна из опер группировки). Вопросы студентам предлагаются следующие:

Read more
Total votes 51: ↑48 and ↓3 +45
Views 6.2K
Comments 42

Поиск изображений

Search engines *Python *Image processing *Machine learning *

Пытаясь реализовать обратный поиск изображений для своего сайта, я столкнулся с огромным миром поиска изображений. Ниже приведены краткие описания и варианты применения некоторых подходов обратного поиска/поиска похожих изображений.

Читать далее
Total votes 21: ↑21 and ↓0 +21
Views 6K
Comments 3

Multithreading

OTUS corporate blog Programming *C++ *

Разработчики часто сталкиваются с необходимостью разработки многопоточных приложений, поэтому вопросы многопоточности требуют детального изучения. Давайте познакомимся с основными терминами, используемыми в источниках информации о многопоточности, рассмотрим задачи и проблемы многопоточности и изучим средства стандартной библиотеки C++, которые помогут создавать многопоточные приложения.

Читать далее
Total votes 22: ↑20 and ↓2 +18
Views 14K
Comments 3

Исправляем кривой запуск первого Mass Effect

Game development *
Translation
image

Часть 1


В последнее время я работал над собственным форком ME3Explorer [неофициальный редактор игр серии Mass Effect], содержащим множество важных улучшений и даже новые инструменты. Также я поработал над Mod Manager 5.1, который имеет удобные новые функции импорта сторонних модов, однако был отодвинут на второй план, пока я работал над новым фронтендом установщика ALOT.

ALOT Installer с манифестом 2017 года

Для его реализации я сотрудничал с CreeperLava и Aquadran; он должен упростить жизнь конечным пользователям, устанавливающим ALOT и его аддон (сторонние текстуры). Одна из моих проблем заключалась в том, что Origin не запускал игру после установки ALOT, если не запустить его с правами администратора. И поскольку запуск Origin при загрузке невозможно выполнить с правами админа, это очень раздражает. К тому же это влияет на мод MEUITM. Поэтому я начал разбираться, почему это происходит. Дело оказалось в идеальном сочетании реализации защиты, плохого кода и желания упростить жизнь других людей.

Давайте посмотрим, как работает Mass Effect с Origin в неизменённом состоянии под Windows 10.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 13K
Comments 8

Переобученные нейросети в дикой природе и у человека

Biotechnologies Brain
Представьте, что вы проектируете птенца чайки. ТЗ такое — у него довольно плохое зрение, маленький мозг, но ему нужно как можно больше есть, а то сдохнет. Еду ему приносит мама-чайка. Основная задача — распознать маму-чайку и получить у неё еды. Во входной поток зрения поступает, скажем, 320х200 px, и дальше 10 сантиметров от глаза он не умеет фокусироваться. Природа решила так — надо разметить клюв чайки ярким оранжевым округлым пятном. Вот таким:



В ходе реверс-инжиниринга чайки в 1950-х Нико Тинберген провёл 2431 опыт с 503 птенцами (часть его коллега Рита Вейдманн высидела сама). Выяснилось, что птенец реагирует и не только на клюв, но и на картонный прямоугольник с круглым оранжевым пятном. И пытается получить у него еду как у обычной чайки. Звучит логично, особенно в условиях нехватки вычислительных ресурсов птенца, правда? «Появляется сверху», «длинный» — это важно. Но самая высокая ценность сигнала «оранжевый на белом» — и она по мере эволюции завышается.

Под самый конец внезапно нашёлся ультранормальный сигнал. Если птенцу показать прямоугольник с тремя оранжевыми полосами, он распознает его куда быстрее, точнее, и среагирует в разы активнее. То есть сильнее распознаётся другой образ, которого нет в природе.

Если вы думаете, что мы с вами не забагованы, то ошибаетесь. У нас, людей, есть примерно такой же пример переобучения, хорошо известный анимешникам.
Читать дальше →
Total votes 124: ↑123 and ↓1 +122
Views 77K
Comments 173

Как воспоминания переживают ампутацию, метаморфозы, и передаются через инъекции

Popular science Biotechnologies Brain
Translation

Если безголовый червь может заново отрастить память, тогда где же она хранится? А если память может восстанавливаться, можно ли её перенести?

Изучение памяти всегда было странной темой, стоявшей в науке особняком. В 1950-е годы никому не известный профессор психологии Джеймс Макконнел из Мичиганского университета попал в заголовки газет (став в итоге чем-то вроде знаменитости), проведя серию экспериментов над планариями – пресноводными плоскими червями. Они восхищали Макконнела не только потому, что обладали, по его словам «нервной системой истинно синаптического типа». Также они «имели невероятные способности к регенерации. При лучшем раскладе можно разрезать червя на множество частей, до 50 штук», и каждая из них восстановится в «нетронутый и полностью функционирующий организм».
Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Views 12K
Comments 53

Фильтр Калмана — это легко

Singularis Lab corporate blog Algorithms *


Много людей, в первый раз сталкивающихся в работе с датчиками, склонны считать, что получаемые показания — это точные значения. Некоторые вспоминают, что в показаниях всегда есть погрешности и ошибки. Чтобы ошибки в измерениях не приводили к ошибкам в функционировании системы в целом, данные датчиков необходимо обрабатывать. На ум сразу приходит словосочетание “фильтр Калмана”. Но слава этого “страшного” алгоритма, малопонятные формулы и разнообразие используемых обозначений отпугивают разработчиков. Постараемся разобраться с ним на практическом примере.
Читать дальше →
Total votes 73: ↑71 and ↓2 +69
Views 31K
Comments 33

Ностальгия: роемся у «Танчиков» под капотом

Game development *
Многие из нас выросли на «Танчиках», «Марио» и прочих нетленных шедеврах времён рассвета игровой индустрии. Приятно порой вспомнить, как днями напролёт резались с друзьями у экранов телевизоров, меняя джойстики как перчатки. Но время не стоит на месте, и одни интересы сменяются другими. Однако, порой любовь к старым-добрым игрушкам не угасает.
Я отношу себя к людям именно таким, и мой интерес к старым играм пошёл в сторону реверс-инжиниринга, что и привело меня в IT-сферу, где я и осел с концами.

Я хочу рассказать вам о том, что же под капотом у железных монстров из знаменитой игры Battle City (в простонародье «Танчики») с не менее знаменитой приставки Nintendo Entertainment System (сокращённо NES, в России более известен её китайский клон «Dendy»). Мне в своё время эта информация показалась довольно любопытной — надеюсь, такой же она покажется и вам.
Читать дальше →
Total votes 233: ↑232 and ↓1 +231
Views 82K
Comments 72

Ускоряем на 70% игру на процессоре в 1 МГц

Assembler *Game development *Old hardware Games and game consoles
Translation

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

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

Это история об одном из таких трюков.

Я постараюсь припомнить все важные подробности, однако в чём-то могу ошибиться. Если так случится, простите меня, это было очень давно.

Исходные данные


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

Единственная проблема заключалась в том, что его версия игры оказалась неиграбельной. Она работала слишком медленно, а дёрганые движения мешали вовлечённости игрока, ведь игра была сайд-скроллером.

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

Я посмотрел. Но там нельзя было найти никакой простой оптимизации.
Читать дальше →
Total votes 125: ↑125 and ↓0 +125
Views 29K
Comments 96

Ищем сокровища в исходном коде Aladdin

Game development *Reverse engineering *
Translation
image


На момент своего выхода в 1993 году Disney’s Aladdin на Sega Genesis (или Mega Drive, если в начале 90-х вы жили с другой стороны лужи) была удивительно красивой игрой.

Благодаря использованию технологии, которая позже стала известной, как Digicel, правильному выбору промежуточного ПО и впечатляющему таланту авторов Aladdin смогла выделиться на фоне других игр Genesis той эпохи. Красивая нарисованная от руки графика Aladdin установила новую планку качества для того, чего можно добиться на «железе» Genesis. Это стало возможным не с помощью особенно интересных растровых эффектов или тайных аппаратных приёмов, а благодаря сочетанию эффектной графики, дизайна и правильно выбранной технологии.

Эта уникальная смесь графики и технологий стала основной причиной, позволившей игре Aladdin занять особое место в истории видеоигр. Поэтому мне так радостно было найти архив с полным исходным кодом игры в коллекции Video Game History Foundation! Кроме бесценного источника данных, этот архив является для меня отличной возможностью создать стандарты для сохранения исходного кода, отслеживания зависимостей инструментов и многих других процессо-ориентированных аспектов в VGHF.
Total votes 109: ↑107 and ↓2 +105
Views 32K
Comments 10

ISA ошибок не прощает

Huawei corporate blog High performance *CPU
–X86 – это исторически сложившееся недоразумение,– мэтр и в 80 не утратил полемического задора.
– Вообще-то ей принадлежит 95% серверного рынка, – вяло откликнулся я. Мне не хотелось вступать в спор на сто раз заезженную тему
– А я уже запутался в этих префиксах, — не унимался академик. – 15 байт на инструкцию, это немыслимо!
– Ну, не ice, конечно. Но у кого лучше-то?
– Да у кого угодно, хотя бы у ARM-a.
– Я все же не понимаю. Cложения с умножениями должны быть?
– Должны.
– И сдвиги c логическими операциями?
– Да.
– И загрузки с сохранениями тоже. Какая разница как они называются и кодируются?
Читать дальше →
Total votes 100: ↑99 and ↓1 +98
Views 26K
Comments 384

#02 — И целого байта мало… | The Cross of Changes

Assembler *Reverse engineering *Demoscene
Честь по чести и часть за частью. Примерно так мы будем погружаться с вами в увлекательный мир демосцены. Сегодня поговорим о конкретной работе в области sizecoding. Дело в том, что некоторые релизы не только имели культовый статус в узких кругах — они прямо и явно воздействовали на умы людей, заставляя учить IDA Pro, смотреть код, проникать во все мельчайшие детали. Было просто непонятно и очень интересно, как же такая магия работает.

Речь идет о cross by Queue Members Group — 128 байт интро для PC из далекого 1996 года:

image

Вот видеозапись работы:



Total votes 43: ↑41 and ↓2 +39
Views 10K
Comments 62

Защита и взлом Xbox 360 (Часть 2)

Information Security *Reverse engineering *Games and game consoles


В прошлый раз мы оставили сцену Xbox 360 на моменте, когда разработчикам стало очевидно, что защита DVD-ROM легко обходится, и с этим точно нужно что-то делать. Попытки исправить ситуацию обновлением ПО самой приставки не увенчались успехом, и на поле битвы вступила компания Philips & Lite-On, DVD-приводы которой с каждой новой моделью становились всё более продвинутыми в плане защиты. Но и методы взлома с каждым разом становились всё более и более изощрёнными. В этой части я расскажу, как в Microsoft пытались исправить ситуацию с нелицензионными дисками, и до каких методов прошивки DVD-привода можно докатиться, когда закрыто буквально всё.
Читать дальше →
Total votes 175: ↑175 and ↓0 +175
Views 50K
Comments 79

Эмуляторы SNES всего в нескольких пикселях от абсолютного совершенства

Reverse engineering *Old hardware Games and game consoles
Translation

Мы так близки к созданию эмулятора, способного идеально воссоздавать все функции реального железа и ПО SNES.

В течение последних 15 лет как кодер эмулятора bsnes я пытался довести до совершенства эмуляцию Super Nintendo, но теперь мы столкнулись с последней проблемой: точным таймингом тактов видеопроцессоров SNES. Чтобы достичь этого завершающего этапа точности эмуляции, требуется помощь всего сообщества, и я надеюсь на вашу поддержку. Но для начала я расскажу, чего мы уже добились.

Текущее состояние


Сегодня ситуация с эмуляцией SNES очень хороша. Если не считать необычные периферийные устройства, которые сопротивляются эмуляции (например, клюшка для гольфа с датчиком света, велосипедный тренажёр и dial-up-модем, который в Японии использовали для ставок на конных скачкахJapan), все официально лицензированные игры для SNES полностью играбельны, и ни в одной игре нет очевидных проблем.

Эмуляция SNES стала такой точной, что мне даже пришлось разделить эмулятор на две версии: higan, которая стремится к абсолютной точности и соответствию документации железа, и bsnes, которая стремится к скорости, широким возможностям и простоте использования.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Views 16K
Comments 35

Рецепты для ELFов

ИНФОРИОН corporate blog Information Security *Python *Assembler *Reverse engineering *

image


На русском языке довольно мало информации про то, как работать с ELF-файлами (Executable and Linkable Format — основной формат исполняемых файлов Linux и многих Unix-систем). Не претендуем на полное покрытие всех возможных сценариев работы с эльфами, но надеемся, что информация будет полезна в виде справочника и сборника рецептов для программистов и реверс-инженеров.


Подразумевается, что читатель на базовом уровне знаком с форматом ELF (в противном случае рекомендуем цикл статей Executable and Linkable Format 101).


Под катом будут перечислены инструменты для работы, описаны приемы для чтения метаинформации, модификации, проверки и размножения создания эльфов, а также приведены ссылки на полезные материалы.

Поработаем с эльфами
Total votes 23: ↑23 and ↓0 +23
Views 14K
Comments 19

Защита и взлом Xbox 360 (Часть 1)

Information Security *Reverse engineering *Games and game consoles
image Вы наверняка слышали про игровую приставку Xbox 360, и что она «прошивается». Под «прошивкой» здесь имеется в виду обход встроенных механизмов защиты для запуска копий игр и самописного софта. И вот здесь возникают вопросы! Каких механизмов, как они обходятся? Что же наворотили разработчики, как это сумели обойти? На самом деле, тема очень обширная и интересная, особенно для Xbox 360 — здесь можно встретить уязвимости в ПО, аппаратные недочеты, и совсем уж магическую магию. Интересно? Заглядываем! В первой части у нас знакомство с гипервизором, приводами и прошивками…

Читать дальше →
Total votes 126: ↑126 and ↓0 +126
Views 58K
Comments 29

История одного патча Apple

Digital Security corporate blog Information Security *Reverse engineering *

image


В этом году мы с a1exdandy выступали на конференциях VolgaCTF и KazHackStan с докладом про Patch Diffing программ, написанных на Оbjective-С, и то, как с его помощью можно искать и находить 0-day и 1-day уязвимости в продуктах компании Apple. Видео выступления можно посмотреть по ссылке, а для чтения статьи добро пожаловать под кат.

Читать дальше →
Total votes 43: ↑43 and ↓0 +43
Views 9.6K
Comments 2

Information

Rating
1,634-th
Location
Набережные Челны, Татарстан, Россия
Date of birth
Registered
Activity