В оригинале "The billion-dollar revenue figure implies that the Microsoft-backed company, which was valued on paper at $27 billion when investors bought stock from existing shareholders earlier this year, is generating more than $80 million in revenue per month. "
Мне кажется, у ончейн-игр есть ощутимый технический лимит. Можем ли мы хранить в блокчейне текстуры? Можем ли мы хранить там 50 гигабайт?
Какова вообще архитектура ончейн-игры, что мы можем положить в блокчейн - все или только часть? Что выйдет по деньгам?
Если в блокчейн заливается дистрибутив 50 гигабайт (предположим, вы ответили да на ответ выше) - значит все остальные юзеры блокчейна, включая даже не игроков, вынуждены получить эти 50 гигабайт?
Что с апдейтами, патчами? В оффчейн-софте это критически важная составляющая цикла сегодня. Мы можем обновлять блокчейн-игры? Сколько это будет стоить для разработчика, для юзера?
То есть - полиэтилен пока не по зубам - полиуретан - по зубам и выбор из штаммов есть - пластиковые смеси PBAT и PLA - по зубам и выбор из штаммов есть
это не те же хуки, извините. Они могут стать хуками, когда, и я это видел, их зачем-то начинают тащить в Реакт и там заворачивают в хуки
Хук - это функция, исполняемая в контексте компонента. За пределами компонента хук и нельзя вызывать, и он просто не заработает вне его, даже если вы обманете все линтеры и сборщики. Хук - это функция, которая рассчитывает на существование неких внутренних состояний React на момент рендера компонента.
сигналы можно создавать и использовать вне компонентов, вне фреймворков, глобально или локально - это почти чистая функция, которая создает экземпляр наблюдаемого состояния и возвращает функцию для подписки на него.
Я прочитал комментарии и нашел, что могу еще сказать о Solid JS
Смотрите, вы хотите избежать лишнего создания объектов. Это максимизировано в SolidJS и в Svelte.
SolidJS хорош тем, что максимально приближен по синтаксису к React. Хуки в нем не нужны, функции создаются за пределами функционального компонента. Да собственно и если создавать внутри компонента - не страшно, потому что функция компонента вызывается только один раз. JSX конвертируется в нативный HTML, к которому под капотом привязываются обработчики и обновления на базе местных аналогов хуков.
Svelte использует тот же принцип, но с ним я работал очень давно. Когда работал - в нем JSX не было.
Но JSX - это такой слой концепции, который по идее можно прикрутить к чему угодно, я прикручивал его даже к игровому фреймворку Phaser (кастомный jSX - это по сути описание неких объектов/конфигураций в формате, приближенному к XML, после трансформации jSX превращается в набор объектов, с которыми вы дальше можете делать что угодно).
Поэтому я не удивлюсь, если узнаю, что JSX/TSX завезли и в Svelte.
Чем интересен ваш путь - тем, что вы пытаетесь выйти за рамки концепции, оставаясь внутри фреймворка.
Этим же он неприятен для многих, потому что таким образом вы сбиваете паттерн распознавания. То есть вы создаете как бы React, но используете совсем другой путь, что затрудняет чтение и понимание для тех, кто уже привык к React.
Поэтому я бы рекомендовал все же обратить внимание на SolidJS. Он пока более скромный по базе и времени существования, чем Svelte, но очень хорошо пытается облегчить миграцию на него с React.
Нейронка не создает картинку сама, она формирует ее по запросу пользователя.
В случае с обезьяной и селфи - обезьяна или человек являются пользователем инструмента. Юристы не рассматривали кейс "селфи является продуктом фотоаппарата, следовательно, права принадлежат или не принадлежат фотоаппарату".
Точно так же человек является пользователем нейронки. Он делает работу, он совершает выбор, он выбирает тему, он перебирает стили и ищет картинку без артефактов.
Нейронка это инструмент. Она не снимает сама автоматически. Ей нужен триггер, нужно "нажатие кнопки спуска" - то есть ввод конкретного текстового запроса с описанием картинки и нажатие кнопки, а то и не одной. И чтобы получить хорошую картинку, речь идет не о Миджорни, нужно много-много попыток, совсем как у фотографов.
В Фотошопе тоже есть сложные артистические фильтры, которые могут создавать из шума абстрактные картины (начните с белого полотна, примените Noise, далее фильтры по вкусу). Но никто, даже в РФ, не сформулирует "изображения, созданные Photoshop, не являются объектами авторского права".
Следовательно
1. Каждая "нейрокартинка" сегодня создается человеком - который вводит текст и нажимает кнопку.
2. Если вы украли чужой промпт и просто вбили его - то да, вы не автор. Но обычно люди все же сами пытаются сочинить текст для генерации картинки. Откройте любой доступный онлайн-генератор, попробуйте сами. Там нужно очень постараться, чтобы подобрать уникальную и красивую картинку. Следовательно, интеллектуальная работа есть. Следовательно пункт 2 выполняется.
За каждой "нейро-картинкой" стоит уникальный текст, это и есть тот самый авторский продукт, на который требуется и человек, и интеллектуальные, без иронии, по факту, усилия.
Я дам тебе несколько мнений по одному вопросу, несколько разных текстов.Пожалуйста проанализируй их и выведи только общее в этих текстах.Если какое-то утверждение в одном тексте расходится с другими - не используй его.Если какое-то утверждение встречается только в одном тексте - собери такие утверждения в списке "гипотезы"Если утверждения повторяются в нескольких текстах - начни с них.Понятно?
Далее скармливаю ему несколько ответов.
Но это не для кода. Для кода я предпочитаю тесты. Test Driven Development идеален для нейронок
подождите, если государство вводит - то это точно не про децентрализацию цифровой рубль появился вроде как во время хайпа криптовалют - это так но цифровой рубль - не криптовалюта это централизованное и очень зарегулированное, в чем прелесть именно для государства, средство расчетов.
Откуда вообще идея, что цифровой рубль - крипта? Отучаемся так думать. Цифровые валюты были задолго до крипты, это не синонимы.
бесконечная запись какой-то величины не означает бесконечность самой величины
конкретно про Пи известно, что оно не больше (и не меньше) определенных значений, оно не является бесконечным числом. Бесконечной является только попытка его записать в данной системе.
Мы можем пойти от обратно и создать систему отсчета в Пи, вот один из вариантов
1 в десятичной системе записывается как 1 2 - 2 3 - 3 Пи - 10 2*Пи - 20 3*Пи - 30 Пи*Пи - 100 .... Пи*Пи*Пи - 1000
Такая система была бы очень удобной для расчета площади кругов, так, площадь круга в 1 метр давала бы ровно 1 квадратный Пи-метр
В квадратных Пи-метрах можно было считать и все остальное
но многие числа, к примеру, как 4 буханки хлеба или моя зарплата - стали бы записываться в бесконечной форме, что было бы неудобно для подсчета сдачи в магазинах
Вот мой вариант компактного типизированного подписчика-отписчика, который я использую для игр в HTML5. В играх, где объекты часто исчезают, отписка критически важна, поэтому createSignal мне не подошел (хотя он почти идеально имитирует поведение хуков в React, подозреваю, отсюда вытекает и все остальное)
// TState - в данном случае обычный генерик (T), ,
// позволяющий подставлять любые типы в момент создания
type UnSubscriber = () => void;
type StateObserver<TState> = (state: TState) => void;
/**
Это можно использовать и как event, и как state
state - это по сути event, изначально имеющий какое-то значение
поэтому в этом классе есть методы, присущие обоим концепциям
**/
export class StateEvent<TState> {
private subscribers = new Set<StateObserver<TState>>();
constructor(protected state?: TState) {
}
// этот метод необязателен,
// но позволяет читать последнее значение - полезно для инициализации
getState(): TState | undefined {
return this.state;
}
// подписка, сразу возвращает отписку, которую можно использовать потом
on(callback: StateObserver<TState>): UnSubscriber {
this.subscribers.add(callback);
return () => {
this.subscribers.delete(callback);
};
}
// классический сеттер состояния
setState(state: TState) {
this.subscribers.forEach((fn) => {
fn(state);
})
this.state = state;
}
// это синтаксический сахар для того же, более привычный для event
// хотите удалить - удаляйте,
emit(data: TState) {
this.setState(data);
}
// это можно вызвать, чтобы гарантированно почистить все подписки
// если не хочется возиться с отдельными отписками
// там, где это уместно - к примеру, при закрытии экрана основной игры
// можно удалить подписчики на все события для этого экрана
unSubScribeAll() {
this.subscribers.clear();
}
}
Использование
// store.ts к примеру, в целом где угодно
export const events = {
log: new StateEvent<unknown[]>()
}
//в логике, к примеру, в целом где угодно
events.log.emit('Hello', 'World', someMessage);
//в создании игрового объекта, к примеру, в целом где угодно
const unSub = events.log.on((args: unknown[]) => console.log(...args));
//... где-то при разрушении объекта - отписка
unSub();
Зачем в этих функциях используется возврат массива, а не объекта? Чем это обусловлено, чем это лучше?
Кажется, я догадываюсь - так компактнее всего можно сделать переименование под текущую задачу, чтобы использовать только функции.
Но знаете, если бы createSignal возвращал объект - можно было бы переименовывать его. Этот объект и может содержать функцию отписки, которая жизненно необходима в паттерне Observable-Observer (а именно эта схема используется в данном посте, просто записанная в компактном функциональном стиле).
так, и как там на очень больших моделях с программированием? А с пониманием шуток? Галактика знает, в чем юмор "Колобок повесился"? А с объяснением анатомии Колобка - поймет?
Вы использовали IP-adapter для SD1.5 ?
сейчас у них туча файлов, и ноль информации о том, что надо качать для ControlNet
писать очень мелкие приложухи на JavaScript под WebView - да, возможно, я так делал
размер билда сейчас не помню
В оригинале "The billion-dollar revenue figure implies that the Microsoft-backed company, which was valued on paper at $27 billion when investors bought stock from existing shareholders earlier this year, is generating more than $80 million in revenue per month. "
не 80 миллиардов
Мне кажется, у ончейн-игр есть ощутимый технический лимит. Можем ли мы хранить в блокчейне текстуры? Можем ли мы хранить там 50 гигабайт?
Какова вообще архитектура ончейн-игры, что мы можем положить в блокчейн - все или только часть? Что выйдет по деньгам?
Если в блокчейн заливается дистрибутив 50 гигабайт (предположим, вы ответили да на ответ выше) - значит все остальные юзеры блокчейна, включая даже не игроков, вынуждены получить эти 50 гигабайт?
Что с апдейтами, патчами? В оффчейн-софте это критически важная составляющая цикла сегодня. Мы можем обновлять блокчейн-игры? Сколько это будет стоить для разработчика, для юзера?
То есть
- полиэтилен пока не по зубам
- полиуретан - по зубам и выбор из штаммов есть
- пластиковые смеси PBAT и PLA - по зубам и выбор из штаммов есть
хук - это очень просто
Хук - это грязная функция, которая работает со скрытыми глобальными объектами React, чтобы придать видимость чистоты в момент вызова ))
это не те же хуки, извините. Они могут стать хуками, когда, и я это видел, их зачем-то начинают тащить в Реакт и там заворачивают в хуки
Хук - это функция, исполняемая в контексте компонента. За пределами компонента хук и нельзя вызывать, и он просто не заработает вне его, даже если вы обманете все линтеры и сборщики. Хук - это функция, которая рассчитывает на существование неких внутренних состояний React на момент рендера компонента.
createSignal в Solid - это хитрожопый функциональный вариант шаблона Observable, он обсуждался здесь - https://habr.com/ru/companies/timeweb/articles/725504/
сигналы можно создавать и использовать вне компонентов, вне фреймворков, глобально или локально - это почти чистая функция, которая создает экземпляр наблюдаемого состояния и возвращает функцию для подписки на него.
если есть ссылка на issues, кидайте, чтобы люди были в курсе
в продакшен Solid JS не заряжали пока
Я прочитал комментарии и нашел, что могу еще сказать о Solid JS
Смотрите, вы хотите избежать лишнего создания объектов. Это максимизировано в SolidJS и в Svelte.
SolidJS хорош тем, что максимально приближен по синтаксису к React. Хуки в нем не нужны, функции создаются за пределами функционального компонента. Да собственно и если создавать внутри компонента - не страшно, потому что функция компонента вызывается только один раз. JSX конвертируется в нативный HTML, к которому под капотом привязываются обработчики и обновления на базе местных аналогов хуков.
Svelte использует тот же принцип, но с ним я работал очень давно. Когда работал - в нем JSX не было.
Но JSX - это такой слой концепции, который по идее можно прикрутить к чему угодно, я прикручивал его даже к игровому фреймворку Phaser (кастомный jSX - это по сути описание неких объектов/конфигураций в формате, приближенному к XML, после трансформации jSX превращается в набор объектов, с которыми вы дальше можете делать что угодно).
Поэтому я не удивлюсь, если узнаю, что JSX/TSX завезли и в Svelte.
Чем интересен ваш путь - тем, что вы пытаетесь выйти за рамки концепции, оставаясь внутри фреймворка.
Этим же он неприятен для многих, потому что таким образом вы сбиваете паттерн распознавания. То есть вы создаете как бы React, но используете совсем другой путь, что затрудняет чтение и понимание для тех, кто уже привык к React.
Поэтому я бы рекомендовал все же обратить внимание на SolidJS. Он пока более скромный по базе и времени существования, чем Svelte, но очень хорошо пытается облегчить миграцию на него с React.
Нейронка не создает картинку сама, она формирует ее по запросу пользователя.
В случае с обезьяной и селфи - обезьяна или человек являются пользователем инструмента. Юристы не рассматривали кейс "селфи является продуктом фотоаппарата, следовательно, права принадлежат или не принадлежат фотоаппарату".
Точно так же человек является пользователем нейронки. Он делает работу, он совершает выбор, он выбирает тему, он перебирает стили и ищет картинку без артефактов.
Нейронка это инструмент. Она не снимает сама автоматически. Ей нужен триггер, нужно "нажатие кнопки спуска" - то есть ввод конкретного текстового запроса с описанием картинки и нажатие кнопки, а то и не одной. И чтобы получить хорошую картинку, речь идет не о Миджорни, нужно много-много попыток, совсем как у фотографов.
В Фотошопе тоже есть сложные артистические фильтры, которые могут создавать из шума абстрактные картины (начните с белого полотна, примените Noise, далее фильтры по вкусу). Но никто, даже в РФ, не сформулирует "изображения, созданные Photoshop, не являются объектами авторского права".
Следовательно
1. Каждая "нейрокартинка" сегодня создается человеком - который вводит текст и нажимает кнопку.
2. Если вы украли чужой промпт и просто вбили его - то да, вы не автор. Но обычно люди все же сами пытаются сочинить текст для генерации картинки. Откройте любой доступный онлайн-генератор, попробуйте сами. Там нужно очень постараться, чтобы подобрать уникальную и красивую картинку. Следовательно, интеллектуальная работа есть. Следовательно пункт 2 выполняется.
За каждой "нейро-картинкой" стоит уникальный текст, это и есть тот самый авторский продукт, на который требуется и человек, и интеллектуальные, без иронии, по факту, усилия.
Вот так забота об окружающей среде резко тормозит технический прогресс
Мне, конечно, жалко глубоководных рыб. Но
а еще меняли колеса на колеснице на ходу
Лицензия позволяет использовать Фреда в коммерческих целях?
Продолжайте эксперименты.
Мой вариант
Далее скармливаю ему несколько ответов.
Но это не для кода. Для кода я предпочитаю тесты. Test Driven Development идеален для нейронок
подождите, если государство вводит - то это точно не про децентрализацию
цифровой рубль появился вроде как во время хайпа криптовалют - это так
но цифровой рубль - не криптовалюта
это централизованное и очень зарегулированное, в чем прелесть именно для государства, средство расчетов.
Откуда вообще идея, что цифровой рубль - крипта? Отучаемся так думать. Цифровые валюты были задолго до крипты, это не синонимы.
бесконечная запись какой-то величины не означает бесконечность самой величины
конкретно про Пи известно, что оно не больше (и не меньше) определенных значений, оно не является бесконечным числом. Бесконечной является только попытка его записать в данной системе.
Мы можем пойти от обратно и создать систему отсчета в Пи, вот один из вариантов
1 в десятичной системе записывается как 1
2 - 2
3 - 3
Пи - 10
2*Пи - 20
3*Пи - 30
Пи*Пи - 100
....
Пи*Пи*Пи - 1000
Такая система была бы очень удобной для расчета площади кругов, так, площадь круга в 1 метр давала бы ровно 1 квадратный Пи-метр
В квадратных Пи-метрах можно было считать и все остальное
но многие числа, к примеру, как 4 буханки хлеба или моя зарплата - стали бы записываться в бесконечной форме, что было бы неудобно для подсчета сдачи в магазинах
Вот мой вариант компактного типизированного подписчика-отписчика, который я использую для игр в HTML5. В играх, где объекты часто исчезают, отписка критически важна, поэтому createSignal мне не подошел (хотя он почти идеально имитирует поведение хуков в React, подозреваю, отсюда вытекает и все остальное)
Использование
Зачем в этих функциях используется возврат массива, а не объекта? Чем это обусловлено, чем это лучше?
Кажется, я догадываюсь - так компактнее всего можно сделать переименование под текущую задачу, чтобы использовать только функции.
Но знаете, если бы createSignal возвращал объект - можно было бы переименовывать его. Этот объект и может содержать функцию отписки, которая жизненно необходима в паттерне Observable-Observer (а именно эта схема используется в данном посте, просто записанная в компактном функциональном стиле).
Обычно можно сделать возврат отписчика из подписчика
Но с таким сниппетом, в котором Set тоже спрятанный и недоступный - это проблематично.
Знаете, тут мы дошли до момента, на котором мы либо все заворачиваем в еще одну функцию, либо не паримся и пишем обычный класс
так, и как там на очень больших моделях с программированием? А с пониманием шуток? Галактика знает, в чем юмор "Колобок повесился"? А с объяснением анатомии Колобка - поймет?