Какой ценой и как именно разработчики из немецкой демогруппы Farbrausch смогли сжать до 96 килобайт пусть и небольшую, но технически современную на тот момент игру?
Именно ответа на этот вопрос ожидал от статьи, прочитав заголовок. С разбором алгоритмов, форматов данных, хитрых уловок и внезапных компромиссов.
Но, увы, вместо этого получил «Ну, они разработали набор инструментов, вот вам скриншоты в качестве доказательства. А вот ещё у них другие демки были, посмотрите ютубчик».
Вы нашли в этом здравые мысли? Вот уж действительно нонсенс.
Лицо, выявившее недостатки безопасного использования программы для ЭВМ и (или) базы данных, обязано сообщить о них правообладателю в течение пяти рабочих дней
Другими словами, лицо обязано поработать бесплатно. Бремя белого хакера, так сказать. А потом начнут случайных школьников, застрявших в текстурах и не сообщивших об этом в течение пяти рабочих дней, сажать.
Если человек захочет, то он научится правильно произносить. И не важно, первый, второй или шестьдесят пять тысяч пятьсот тридцать шестой это у него язык.
Если уж на то пошло, произношение и написание современного английского языка имеет мало общего. И ничего, все справляются без особых проблем.
даже те кто должен знать как это написанное по английски правильно произносить не смогут это сделать
Если при запуске программы в Диспетчере Задач появляется несколько процессов этого приложения, запущенных с параметрами командной строки -type=... и --user-data-dir=..., то это, с большой долей вероятности, программа, написаная с использованием Electron, а значит и JavaScript.
Просто у меня нет джавы на компах совсем
Java и JavaScript это совершенно разные языки, это раз. Как пользователь вы, скорее всего, понятия не имеете что и как используют программы, у вас установленные, это два. Даже в Adobe Acrobat Reader есть интерпретатор JS с незапамятных времён.
(разве что в браузере, но я ими не пользуюсь)
А этот комментарий вы, видимо, набирали на телетайпе при свете лучины.
Lenovo B570e, Core i5-2420M, 8Гб, MSATA SSD 64G - всё отлично работает
Если не пользоваться современными браузерами, то 8 гигабайтов может и хватить. Иначе -- увы.
Мне кажется тут вопрос исключительно психологический, у разных людей разная нервная система отсюда разное восприятие тормозов.
Я пытался сначала сделать через них, но я не нашел удобных инструментов для замены байткода.
В ASM есть пакет org.objectweb.asm.tree, который делает именно то, что вы хотите. Он позволяет получить список инструкций байткода в методе, обработать его нужным образом и затем сохранить изменённый class-файл.
NB: Этот пакет нужно подключать в проект как отдельную зависимость, org.ow2.asm:asm-tree:<версия>, в дополнение к основному org.ow2.asm:asm:<версия>.
Для примера можем взять упрощённую задачу из этой статьи. Будем заменять статические вызовы scout.definition.Keys::create(Class<?>) на числовые константы. Константы будем присваивать в порядке появления вызова метода в байткоде.
Стоило отдельно уточнить, что в реальном мире значение выражения было бы вычислено ещё во время компиляции и в байткоде на стек будет загружено сразу значение 7.
И не инструкцией ldc, а инструкцией bipush.
IMULT
«T» здесь лишнее.
Для этого подойдёт SIPUSH-инструкция: ... Минус в том, что её аргумент ограничен 2 байтами, поэтому значения не могут быть больше 2^15 (32 768)
Я слышал, что на собеседованиях в Яндекс есть алгоритмическая секция ;]
For short, from -32768 to 32767, inclusive JLS 17 § 4.2.1
Во всей этой магии по замене инструкций нам сильно поможет библиотека BCEL (Byte Code Engineering Library).
BCEL в 2023 году? Закопайте стюардессу и возьмите хотя бы ASM или модный-молодёжный Byte Buddy.
Вы где смотрели? Вот же они все: https://github.com/paintdotnet/release/tags Пара-тройка кликов с официального сайта и вы там. И вам в любом случае качать релиз с GitHub, если нужен нормальный offline installer.
Ещё бы она не была непопулярна. Даже для того, чтобы продолжить нормально пользоваться консолью после установки приходится лезть сначала в Гугл, а потом в настройки. В противном случае у нас в окне будут на хрен не нужные вкладки вместо заголовка, а на Alt-F4 и F11 консоль будет реагировать так, словно это говноприложение на «Электроне», а не старый-добрый Far Manager.
Про нефункциональные меню «Пуск», таскбар и невидимые полосы прокрутки даже и не говорю.
Благо, что у производителей ноутбуков обычно есть опция откатиться на предыдущую версию винды.
У тебя сенсорный планшет с виндовс или ноут с тачпадом, а скроллбар млипиздрический и требует пиксельхантинга.
Давным-давно, когда Sony ещё делала ноутбуки, тачпады их Sony Vaio поддерживали жесты, в том числе и прокрутку. Горизонтальной я не пользовался, а вот вертикальной (вверх/вниз) -- очень даже.
Проводишь пальцем вдоль правой кромки тачпада сверху вниз и, не отрывая, переводишь его в любое удобное место. После чего накручиваешь спираль по часовой или против часовой стрелки. Адски удобно!
Ализари́н (1,2-дигидроксиантрахинон) — органическое соединение, производное антрахинона с химической формулой C14H8O4.… С древности применялся как протравный краситель по ткани.
alizar был пионером потока желтушных публикаций на Хабрахабре.
Знамя из его слабеющих рук подхватила «Информационная служба Хабра» со 100500 сотрудников, а он это вывозил в одну калитку.
Человечище!
очень напрягало когда телевизор после такого долго загружался.
А должно было напрягать то, что вместо телевизора у вас какое-то г-но, которому зачем-то нужно загружаться. А потом ещё и блютусом во все стороны светить, наверняка.
видимо расчет на иностранцев или тех, кто в приложения на смартфоне не умеет.
Скорее, расчёт на закон больших чисел )
Заказать такси можно и по телефону, хоть Йандекс и пытается принудить всех пользоваться приложением или глючным сайтом, написанным левой задней ногой с полным презрением к юзабилити. И даже до живого оператора вместо робота добраться можно.
Именно ответа на этот вопрос ожидал от статьи, прочитав заголовок. С разбором алгоритмов, форматов данных, хитрых уловок и внезапных компромиссов.
Но, увы, вместо этого получил «Ну, они разработали набор инструментов, вот вам скриншоты в качестве доказательства. А вот ещё у них другие демки были, посмотрите ютубчик».
Вы нашли в этом здравые мысли? Вот уж действительно нонсенс.
Другими словами, лицо обязано поработать бесплатно. Бремя белого хакера, так сказать.
А потом начнут случайных школьников, застрявших в текстурах и не сообщивших об этом в течение пяти рабочих дней, сажать.
Если человек захочет, то он научится правильно произносить. И не важно, первый, второй или шестьдесят пять тысяч пятьсот тридцать шестой это у него язык.
Если уж на то пошло, произношение и написание современного английского языка имеет мало общего. И ничего, все справляются без особых проблем.
Сериоусли? И донт хавэ эни проблем витх Борсч!
Златая цепь на Дубе том...
Предлагаю развить тему и локализовать роли:
Junior — Иван-дурак
Senior — Богатырь
Team Lead — Дядька Черномор, для краткости — просто «Черномор»
Project Manager — Стряпчий
Ну вы что, какие ещё «коннекторы»? «Скрепы» — наше всё!
Кажется, здесь забыли частицу «не» перед «запланирован» и точку — после.
Прямо-таки «чего угодно»?
Как кастомизировать питон так, чтобы не было значащих отступов, а вместо них структура задавалась фигурными скобками?
О чём тут спорить?
Платье голубое с чёрными полосками.
DropBox, Skype, Slack и т.д. и т.п.
Современный Adobe Photoshop, похоже, тоже. Node.JS он использует точно.
Далеко не полный список: https://en.wikipedia.org/wiki/List_of_software_using_Electron
Если при запуске программы в Диспетчере Задач появляется несколько процессов этого приложения, запущенных с параметрами командной строки
-type=...и--user-data-dir=..., то это, с большой долей вероятности, программа, написаная с использованием Electron, а значит и JavaScript.Java и JavaScript это совершенно разные языки, это раз.
Как пользователь вы, скорее всего, понятия не имеете что и как используют программы, у вас установленные, это два. Даже в Adobe Acrobat Reader есть интерпретатор JS с незапамятных времён.
А этот комментарий вы, видимо, набирали на телетайпе при свете лучины.
Если не пользоваться современными браузерами, то 8 гигабайтов может и хватить. Иначе -- увы.
Ну, это вы уже какую-то дичь задвигать начали.
Минул уж год, что там с «Галопом»?
В ASM есть пакет org.objectweb.asm.tree, который делает именно то, что вы хотите. Он позволяет получить список инструкций байткода в методе, обработать его нужным образом и затем сохранить изменённый class-файл.
NB: Этот пакет нужно подключать в проект как отдельную зависимость,
org.ow2.asm:asm-tree:<версия>, в дополнение к основномуorg.ow2.asm:asm:<версия>.Для примера можем взять упрощённую задачу из этой статьи. Будем заменять статические вызовы
scout.definition.Keys::create(Class<?>)на числовые константы. Константы будем присваивать в порядке появления вызова метода в байткоде.Hidden text
Всего полторы сотни строк, не считая импортов и обвязки.
У
Classиequals()иhashCode()наследуются отjava.lang.Object.Куда уж быстрее-то?
Вспоминается анекдот № 301205. Шучу, если что.
Стоило отдельно уточнить, что в реальном мире значение выражения было бы вычислено ещё во время компиляции и в байткоде на стек будет загружено сразу значение
7.И не инструкцией
ldc, а инструкциейbipush.«
T» здесь лишнее.Я слышал, что на собеседованиях в Яндекс есть алгоритмическая секция ;]
BCEL в 2023 году?
Закопайте стюардессу и возьмите хотя бы ASM или модный-молодёжный Byte Buddy.
Очень удобный???!!!
Да вы троллите!
Вы где смотрели?
Вот же они все: https://github.com/paintdotnet/release/tags
Пара-тройка кликов с официального сайта и вы там. И вам в любом случае качать релиз с GitHub, если нужен нормальный offline installer.
Ещё бы она не была непопулярна.
Даже для того, чтобы продолжить нормально пользоваться консолью после установки приходится лезть сначала в Гугл, а потом в настройки. В противном случае у нас в окне будут на хрен не нужные вкладки вместо заголовка, а на Alt-F4 и F11 консоль будет реагировать так, словно это говноприложение на «Электроне», а не старый-добрый Far Manager.
Про нефункциональные меню «Пуск», таскбар и невидимые полосы прокрутки даже и не говорю.
Благо, что у производителей ноутбуков обычно есть опция откатиться на предыдущую версию винды.
Толку-то?
Их миллион лет назад просили сделать раскладку с полноразмерными курсорными клавишами и столбцом функциональных (Home/End/PgUp/PgDn) справа.
А-ля такую
Сделали? Хрена с два!
Стрелки всё так же кастрированые, функциональные клавиши -- через
Fn.Давным-давно, когда Sony ещё делала ноутбуки, тачпады их Sony Vaio поддерживали жесты, в том числе и прокрутку. Горизонтальной я не пользовался, а вот вертикальной (вверх/вниз) -- очень даже.
Проводишь пальцем вдоль правой кромки тачпада сверху вниз и, не отрывая, переводишь его в любое удобное место. После чего накручиваешь спираль по часовой или против часовой стрелки. Адски удобно!
Это логически выводимый мем:
alizar был пионером потока желтушных публикаций на Хабрахабре.
Знамя из его слабеющих рук подхватила «Информационная служба Хабра» со 100500 сотрудников, а он это вывозил в одну калитку.
Человечище!
Вы что, котофоб!?
ОБС: Сотрудники информационной службы Хабра могут обойтись без желтушных заголовков, но тогда на работе придётся работать.
А должно было напрягать то, что вместо телевизора у вас какое-то г-но, которому зачем-то нужно загружаться. А потом ещё и блютусом во все стороны светить, наверняка.
Скорее, расчёт на закон больших чисел )
Заказать такси можно и по телефону, хоть Йандекс и пытается принудить всех пользоваться приложением или глючным сайтом, написанным левой задней ногой с полным презрением к юзабилити. И даже до живого оператора вместо робота добраться можно.