All streams
Search
Write a publication
Pull to refresh
0
0
Send message

Да. Так и есть. Мой посыл был в том, что там, например, это нормально и часть ожидаемого поведения. Но не только там. Просто был как пример.

  • Делаете годное дело, но сложное. Скептиков не слушайте. Анализируйте и двигайтесь.

  • В свое время играл во все подряд. Переучивался на все виду устройств: клавиатура, мышка, пады, рули, стики, мышка с вертикальным реверсом в 3Д шутерах, 3Д шутеры на кнопках и на мыше, ... Проблем не видел никогда. Но то были времена, когда мы готовы были играть во все ради игр.

  • Сейчас аудитория требовательна, потому что игр много. Вы правильно делаете, что упрощаете. И интерфейс и меню тоже. Это нужно 100% для подгонки под современного пользователя.

  • Я ребенку попробовал дать ретроконсоль. Не зашла от слова совсем. Помогал как мог, но очень тяжело. Сложна и менюха и игры. Спотыкался буквально везде.

  • Пример: когда я играл в Comix Zone например, когда это было в тренде, я знал что вот это начало (первый экран) и дальше могут убить (буквально в следующем экране) и я разбирался с управлением в первом, тренил все удары, комбы и т.д.; а потом уже шел на второй экран и там уже заруба. И так +/- во всех играх. Сегодня ребенок запускает игру (если не подсказывать), видит стрелку вправо, идет туда, переходит на второй экран и там отгребает по полной ибо не шарит бойца совсем. Стрелка ж не говорила, что потренься в начале. А игру как бы не поправить. Обучалок в начале игр как сейчас делают раньше не было. Поэтому игры выглядят сложнее.

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

  • В общем ретро я отложил на пару лет. Только танчики +/- получилось втащить :)

  • При этом телефона у него нет. И когда предложил поиграть на телефоне в современные игры - он уже знал четко во что хочет играть и как. Сообщество решает. У сверстников (в школе) они видят, что хотят и как это потреблять. Это сложный момент, так как там не все хороше только :(

  • В общем пока выбрал способ - современные игры с фильтром через меня на адекватность.

  • И параллельно ищу способы прививать старые хорошие игры. Но это сложно.

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

  • Но в целом ваш ход мысли кажется полностью верным: все создатели ретроХ заботятся лишь о том, что бы максимально точно провести эмуляцию и максимально быть совместимыми; но детям важна простота адаптации вашей платформы (максимально понятно и просто от их сегодняшней базы) + сообщество (дети хотят играть в то, что другие дети играют; но это уже для вас наверное потом).
    Просто мысли в копилку. Вам удачи!

Добро пожаловать на обратную сторону луны ! :)

  • В Pascal строки индексируются с 1, потому что в 0-ом байте хранится ее размер

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

  • Языков с индексацией с 1 не только много, но и хватает продвигателей именно этого подхода (это один из разработчиков NeoVim, поэтому - Lua)

  • Как было сказано ранее, есть куча языков, в которых я могу начать индексацию с любого (JavaScript, ...), так как они список могут хранить не массивом, а деревом и т.д.

Согласен полностью. Так и делаю.

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

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

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

Всм? Возьмите подставьте по методу размерности любые величины - все сходится.

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

Знаний дальше у меня не хватает что-то здесь супердоказать дополнительно.

Ваше мнение я полностью понимаю и оно должно быть. Думаю только время покажет в итоге что будет.

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

Как по мне - это не просто новая таблица. А именно попытка по итогу свести базис от 3 к двум величинам. Посмотрим.

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

А того, что вы говорите и не требуется. Не нужно выражать/выводить кг через м и с.

То что он делал - это развитие "метода размерностей" в физике. Он сводил размерности в таблице к определенному базису. Это не значит, что мы уже умеем все величины вывести/представить через все. Это лишь говорит об общей природе этих понятий и подобных вещах. Это характеризует систему в целом. Способ говорить о системе в общем.

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

Он поставил себе цель все вывести в базисе 2ух величин. Вроде как получилось. В том и челендж - как можно меньше величин в базисе. И то, что нельзя выразить пока - может быть эта таблица и может подсказать как.

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

Хорошая подборка. В закладки.

Только бы еще примеров с замерами ;)

Насколько я понял - вывод в том, что причина более быстрой работы - это разное число операций в байткоде (разница в 2 раза).

Мне кажется - это утверждение ошибочным (и несоответствие экспериментальным данным это подтверждают - 2 против 1.5).

И главная причина ошибки - это допущение:

Итак, если принять стоимость каждой команды за 1условную единицу, ...

Думаю этого делать не стоит никак. Думаю, что все операции помещения в стек адресов и переменных, джампы и т.д. - это все пыль и примерно одинаковы в обоих методах. А реальная потеря времени происходит в методах АППЕНД. Т.е. вам фактически сравнивать нужно:

C1 + N*CALL(APPEND)
vs
C2 + N*LIST_APPEND

Но данным способом вы эти методы сравнить не можете. Они тут для вас как черные ящики. Нужно смотреть внутрь их, что бы понять в чем суть.

Для начала можно провести испытания хотя бы просто с этих методов, без циклов. Попробовать для подтверждения. Подтвердить где теряется время. В вашем методе - вы не знаете где оно теряется и размазываете вину равномерно между всеми операциями, что не верно абсолютно (вы можете подтвердить это замерами через пустые циклы или АППЕНДы без циклов и т.д.).

Моя теория совпадает с комментариями выше: разница в том, что быстрый аппенд знает финальный размер и потому выделяет место под список только один раз, а медленный - постоянно пересоздает список с большим размером. Эти процессы примерно одинаковы везде.

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

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

П.С. Еще бы проверил и сравнил те методы что названы ФАСТ в быстрой версии - STORE_FAST, LOAD_FAST - все равно думаю, что их вклад незначителен, но сравнить интересно какова разница.

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

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

Если я все правильно понял, то решение было бы более "крипто" и надежно, если его контракт полностью затащить в крипту.

Это все в рамках рассуждений и мыслей. Так или иначе - ваше решение автоматизирует большую часть случаев. Просто прикладываю мысли про крайние и редкие.

Я может где то упустил, но:

Где вы храните сумму на которую вы уже сделали кофе? Не ту что вам зашла, а ту что вы уже отработали. Или идентификатор не последней, а отработанной транзакции.

Или просто в памяти?

Ответ

На первый взгляд, оборачивание increment в useCallback и Button в React.memo должно предотвратить ненужные перерисовки Button. Но в данном случае выигрыш в производительности будет либо незначительным, либо его не будет вообще.

Ответ не совсем верный. Если кейс именно как в статье - ускорения не будет вообще. Так как ваш инкремент мемоизируется следующим образом:

const increment = React.useCallback(() => setCount(count + 1), [count]);

С зависимостью - count. А значит коллбек будет пересоздаваться после каждого клика на кнопку. Значит и кнопка будет рендериться заново после каждого клика, потому как ссылка на коллбек новая.

Что бы этого не было, нужно создавать коллбек без зависимости (как вы делали ранее):

const increment = React.useCallback(() => setCount((c) => c + 1), []);

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

Именно данная зависимость на count и ломает полностью оптимизацию в вопросе. А если сделать коллбек без зависимости - тогда уже можно рассуждать о том, будет ли перформанс буст и имеет ли смысл, но так он хотя бы возможен.

Отдельно про рассуждения про сложность, целесообразность, ..., скорость оптимизации из вашего вопроса:

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

Нужно делать как в вашем же утверждении в пунктах: все мерять и сравнивать (скорость, память, сложность, размер, ...). Без замеров перформанс статьи неполны.

Правильное дело делаете и у вас явно получается!

На сравнения с Масками и Безосами не обращайте внимание. Мы всегда делаем по другому и часто сильно дешевле.

ТО же самое и по поводу "зачем это все и для кого". Циолковский вроде как тоже, когда все это изучал, рынка еще не было.

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

Хорошая статья. Тот, кто пытался минимизировать число невидимых связей к коде (особенно инфраструктурном, логических хардкодов), которые нужно "просто помнить" - тот поймет. Не раз этим занимался.

Цена у всего этого конечно не малая - резкое усложнение кода. Над поиском золотой середины между простым ЖСом и "абсолютной" типизацией ТСа и будет работать и спорить сообщество. Посмотрим к чему в итоге прийдем.

П.С. Для избежания путаницы, а бы указывал, что большая часть этих сложностей упадет на код инфры и фреймворка и их поддержку. Пользователи же (авторы клиентского кода и конкретных реализаций) получат же в основном +- те же интерфейсы, только с магической проверкой и т.д. Что бы не создавалось впечатления, что каждый мелкий метод РЕСТа на 10 строк заменится на кучу сложной дженерик магии.

Настоящий пример инженера:

Он делал, что делал, не потому что платили или любили, а потому что не мог не делать. Хоть и мало что вышло в серию. Хоть и была тюрьма.

Просто занимался чем хотел и что умел. И получил результат по-итогу и вошел в историю.

E = m * c^2

Дж, кг, м, с - в одной формуле. Есть еще вот такая вот константа.

Такая строка в списке сокращений в книге - это мощный интригующий фактор продвижения! :)

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

Мне режет глаз больше всего разная ширина вертикальных линий в шрифте. Взгляд все время о них спотыкается.

П. С. В целом - дело годное делаете! Книгу прочту обязательно и отпишу по сути если что-то еще будет.

Пока читал в голове мелькали воспоминания, как в свое время лопались дешевые CD-диски в приводе прямо во время игры. Было внезапно и пугающе. Один раз даже форточка (крышка) дисковода вылетела как вертолетик от удара...

В общем я бы место рядом с маховиком не брал бы.

Отличная статья, продукт и команда! Удачи вам!

П.С. Скажите, а есть статистика о том сколько разработчиков Java покинули РФ и сколько остались (из-за известных событий)? Хотя бы в процентном соотношении или больше/меньше половины?

Information

Rating
Does not participate
Registered
Activity