1661923380
Крупномасштабные общие реализации ИИ служат отличными строительными блоками для решения определенных проблем B2B, и большинство организаций уже используют их или находятся в процессе их использования. Тем не менее, стремление к немедленной окупаемости инвестиций, создание отказоустойчивых прототипов и получение результатов, ориентированных на принятие решений, вызывают потребность в инициативах в области искусственного интеллекта, специфичных для предметной области.
Примеры использования и экспертные знания в предметной области помогают, но специалистам по данным и аналитикам необходимо адаптировать цикл внедрения ИИ для решения проблем, требующих большей специфичности и актуальности. Самая большая трудность, с которой может столкнуться каждый при построении таких моделей ИИ, — это поиск качественных данных, специфичных для предметной области. Вот некоторые передовые методы и методы адаптации модели для конкретной предметной области, которые неоднократно срабатывали.
Начните с исследования вашей организации, чтобы обнаружить как можно больше соответствующих доменных активов данных. Если это проблема, связанная непосредственно с вашим бизнесом и отраслью, у вас, вероятно, есть неиспользованные активы данных, которые может использовать ваша реализация. В том маловероятном случае, если вы обнаружите, что у вас недостаточно данных, все надежды еще не потеряны. Существует множество стратегий и методологий, помогающих создавать или улучшать определенные наборы данных, включая активное обучение, перенос обучения, самообучение для улучшения предварительного обучения и увеличение данных. Некоторые из них подробно описаны ниже.
Активное обучение — это тип полуконтролируемого обучения со стратегией запроса для выбора конкретных экземпляров, на которых он хочет учиться. Использование экспертов в предметной области с механизмом «человек в цикле» для маркировки таких выбранных экземпляров помогает усовершенствовать процесс для достижения значимых результатов в гораздо более короткие сроки. Кроме того, для активного обучения требуются меньшие объемы размеченных данных, что снижает затраты на ручное аннотирование при сохранении более высокого уровня точности.
Вот несколько советов, которые помогут добиться активного обучения с ограниченными данными:
Этот метод использует знания из исходного домена для изучения новых знаний в целевом домене. Эта концепция существует уже некоторое время, но в последние несколько лет, когда люди говорят о трансферном обучении, они говорят о нейронной сети, возможно, из-за успешных случаев ее реализации.
Используя ImageNet в качестве примера, вот несколько извлеченных уроков:
Эта комбинация предлагает потенциальный метод максимально использовать ограниченные помеченные данные из последующих задач. Это также может помочь наилучшим образом использовать большой объем легкодоступных неразмеченных данных. Вот как это работает.
Расширение данных включает в себя набор недорогих эффективных методов для создания новых точек данных из существующих данных. Маркер 2 в предыдущем разделе о самообучении также касается увеличения данных, что имеет решающее значение для всего упражнения.
Другие методы для приложений NLP включают обратный перевод, замену синонимов, случайную вставку/замену/удаление и т. д. Основные методы компьютерного зрения включают кадрирование, отражение, масштабирование, вращение, введение шума, изменение яркости/контрастности/насыщенности и GAN ( генеративно-состязательная сеть).
Определение того, какую методологию использовать, зависит от вашего варианта использования, качества исходного набора данных, наличия МСП и доступных инвестиций.
Вы обнаружите необходимость продолжать совершенствовать свой предметно-ориентированный ИИ. Вот несколько уроков, которые мы извлекли из нашего опыта настройки реализаций в соответствии с конкретными вариантами использования.
Направление ИИ для удовлетворения конкретных потребностей и задач требует дисциплины во всем, а не только в подходе и ресурсах. Хорошей новостью является то, что компании все больше интересуются решениями, которые решают конкретные проблемы и решают их, что, в свою очередь, создает лучшие практики для специалистов по данным и разработчиков искусственного интеллекта, стремящихся обеспечить более быструю окупаемость своих приложений.
Источник: https://www.kdnuggets.com
1661923380
Крупномасштабные общие реализации ИИ служат отличными строительными блоками для решения определенных проблем B2B, и большинство организаций уже используют их или находятся в процессе их использования. Тем не менее, стремление к немедленной окупаемости инвестиций, создание отказоустойчивых прототипов и получение результатов, ориентированных на принятие решений, вызывают потребность в инициативах в области искусственного интеллекта, специфичных для предметной области.
Примеры использования и экспертные знания в предметной области помогают, но специалистам по данным и аналитикам необходимо адаптировать цикл внедрения ИИ для решения проблем, требующих большей специфичности и актуальности. Самая большая трудность, с которой может столкнуться каждый при построении таких моделей ИИ, — это поиск качественных данных, специфичных для предметной области. Вот некоторые передовые методы и методы адаптации модели для конкретной предметной области, которые неоднократно срабатывали.
Начните с исследования вашей организации, чтобы обнаружить как можно больше соответствующих доменных активов данных. Если это проблема, связанная непосредственно с вашим бизнесом и отраслью, у вас, вероятно, есть неиспользованные активы данных, которые может использовать ваша реализация. В том маловероятном случае, если вы обнаружите, что у вас недостаточно данных, все надежды еще не потеряны. Существует множество стратегий и методологий, помогающих создавать или улучшать определенные наборы данных, включая активное обучение, перенос обучения, самообучение для улучшения предварительного обучения и увеличение данных. Некоторые из них подробно описаны ниже.
Активное обучение — это тип полуконтролируемого обучения со стратегией запроса для выбора конкретных экземпляров, на которых он хочет учиться. Использование экспертов в предметной области с механизмом «человек в цикле» для маркировки таких выбранных экземпляров помогает усовершенствовать процесс для достижения значимых результатов в гораздо более короткие сроки. Кроме того, для активного обучения требуются меньшие объемы размеченных данных, что снижает затраты на ручное аннотирование при сохранении более высокого уровня точности.
Вот несколько советов, которые помогут добиться активного обучения с ограниченными данными:
Этот метод использует знания из исходного домена для изучения новых знаний в целевом домене. Эта концепция существует уже некоторое время, но в последние несколько лет, когда люди говорят о трансферном обучении, они говорят о нейронной сети, возможно, из-за успешных случаев ее реализации.
Используя ImageNet в качестве примера, вот несколько извлеченных уроков:
Эта комбинация предлагает потенциальный метод максимально использовать ограниченные помеченные данные из последующих задач. Это также может помочь наилучшим образом использовать большой объем легкодоступных неразмеченных данных. Вот как это работает.
Расширение данных включает в себя набор недорогих эффективных методов для создания новых точек данных из существующих данных. Маркер 2 в предыдущем разделе о самообучении также касается увеличения данных, что имеет решающее значение для всего упражнения.
Другие методы для приложений NLP включают обратный перевод, замену синонимов, случайную вставку/замену/удаление и т. д. Основные методы компьютерного зрения включают кадрирование, отражение, масштабирование, вращение, введение шума, изменение яркости/контрастности/насыщенности и GAN ( генеративно-состязательная сеть).
Определение того, какую методологию использовать, зависит от вашего варианта использования, качества исходного набора данных, наличия МСП и доступных инвестиций.
Вы обнаружите необходимость продолжать совершенствовать свой предметно-ориентированный ИИ. Вот несколько уроков, которые мы извлекли из нашего опыта настройки реализаций в соответствии с конкретными вариантами использования.
Направление ИИ для удовлетворения конкретных потребностей и задач требует дисциплины во всем, а не только в подходе и ресурсах. Хорошей новостью является то, что компании все больше интересуются решениями, которые решают конкретные проблемы и решают их, что, в свою очередь, создает лучшие практики для специалистов по данным и разработчиков искусственного интеллекта, стремящихся обеспечить более быструю окупаемость своих приложений.
Источник: https://www.kdnuggets.com
1659445580
React — это красивая среда Javascript, которую иногда называют библиотекой «Узнай один раз, создай что угодно». Этот случай верен, потому что знание компонентов React можно использовать для разработки всего, от SPA до MPA и всего, что между ними. То же самое касается графики и анимации.
В этой статье мы узнаем, как использовать компоненты React для сборки и создания видео с помощью Remotion . Демонстрация того, что мы будем строить, приведена ниже:
Remotion — это набор библиотек для программного создания видео с использованием React. Remotion позволяет создавать настоящие видео MP4, написанные в React. Он использует веб-технологии, такие как CSS, SVG и WebGL, для создания увлекательной движущейся графики. Remotion также позволяет использовать такие понятия, как функции и переменные. Вы можете использовать код JavaScript для создания видео и последующего преобразования его в файл MP4 с помощью Remotion.
Remotion был создан Джонни Бургером , чтобы позволить любому человеку с минимальным пониманием React, HTML, CSS и Javascript создавать видео с помощью кода. Remotion снижает барьер в области создания видео, избавляясь от сложных инструментов и обучения, необходимых для достижения успеха в области создания видео. Remotion делает это, используя текущие инструменты разработчиков Javascript и позволяя им использовать эти инструменты и навыки для преобразования кода в анимацию и видео.
Remotion включает в себя проигрыватель под названием Remotion Player, который имитирует работу настоящего видеоредактора и может использоваться для воспроизведения и просмотра вашего видео в браузере.
You will need to install two dependencies to use Remotion effectively: Node and FFmpeg. If you are planning on downloading or extracting your video after creation, you need FFmpeg; otherwise, you can choose not to install it. Once you install the dependencies, run the command below in your terminal to bootstrap a new Remotion app.
npm init video
# or
yarn create video
You should see a prompt like below to choose a template for your application:
You can choose whichever template you want for the given list in the terminal, but for this article, I will use the blank template and explain as we go.
Once Remotion is installed, open it in the code editor of your choice, and let’s go over the created files.
There are three files that we see in the src
folder. the index.tsx
, the Video.tsx
, and the Composition.tsx
index.tsx
действует как index.js
файл в приложении create-реагировать-приложение (CRA). Он берет компонент React и через функцию рендеринга выводит его как видео в формате mp4. Мы не будем ничего изменять в этом файлеVideo.tsx
действует как App
компонент в приложении React, что означает, что он служит точкой входа приложения. В этом компоненте мы будем соединять разные композиции для создания видео. Файл Video.tsx показывает нам первый компонент Remotion, файл Composition
.Composition.tsx
компонент, который содержит и регистрирует видео, которые мы хотим визуализировать, а также стили и реквизит для видео.Внутри Composition.tsx
файла мы видим приведенный ниже код, который показывает, что в настоящее время мы ничего не возвращаем:
export const MyComposition = () => {
return null;
};
Внутри Video.tsx
файла мы видим блок кода ниже:
import {Composition} from 'remotion';
import {MyComposition} from './Composition';
export const RemotionVideo: React.FC = () => {
return (
<>
<Composition
id="MyComp"
component={MyComposition}
durationInFrames={60}
fps={30}
width={1280}
height={720}
/>
</>
);
};
id
, когда вы хотите экспортировать видео, и мы узнаем, что он делает, в разделе экспорта видео .Component
Берет импортированный Composition
компонент .durationInFrames
количество кадров, которые необходимо сгенерировать.fps
кадра в секунду. Разделенное durationInFrames
на fps
используется для расчета длины видео.width
видео в пикселяхheight
видео в пикселяхКогда мы бежим yarn start
запускать сервер разработки, мы видим 2-секундное видео пустого холста на localhost:3000
— не очень интересное, точно!
Чтобы начать, перейдите к Composition.tsx
файлу и добавьте код ниже:
export const MyComposition = () => {
return (
<div
style={{
width: '100%',
height: '100%',
backgroundColor: '#f2511b',
color: '#fff',
textAlign: 'center',
alignItems: 'center',
justifyContent: 'center',
fontSize: '2rem',
}}
>
<h1>
My name is Isaac Okoro. A fullstack developer and technical writer for the OpenReplay blog
</h1>
</div>
);
};
Приведенный выше код довольно простой, так как у нас есть div
несколько встроенных стилей и h1
тег с некоторым содержимым.
Когда мы сохраним и перейдем в браузер, мы должны увидеть видео, похожее на GIF ниже:
Мы будем использовать хук от Remotion, чтобы получить свойства нашего видео. Хук — это useVideoConfig() . Этот хук возвращает объект с информацией о контексте видео, которое мы делаем. Свойства, содержащиеся в объекте, включают ширину, высоту, количество кадров в секунду, продолжительность InFrames и т. д.
Мы будем использовать информацию, предоставленную нам useVideoConfig()
хуком, для отображения свойств нашего видео.
import { useVideoConfig } from 'remotion';
export const MyComposition = () => {
const {width, height, fps, durationInFrames} = useVideoConfig();
return (
<div
style={{
width: '100%',
height: '100%',
backgroundColor: '#f2511b',
color: '#fff',
textAlign: 'center',
alignItems: 'center',
justifyContent: 'center',
fontSize: '2rem',
}}
>
<h1>
My name is Isaac Okoro. A fullstack developer and technical writer for the OpenReplay blog
</h1>
<h3>
This {width} * {height}px video is {durationInFrames / fps}secs long and
was made to showcase Remotion
</h3>
</div>
);
};
В приведенном выше блоке кода мы импортировали useVideoConfig()
хук из Remotion. Далее мы получили информацию о видео от хука и отрендерили его.
Когда мы сохраним и перейдем в браузер, мы должны увидеть видео, похожее на GIF ниже:
Примечание : мы получаем 2 секунды как наше время, потому что мы не изменили количество durationInFrames
в Video.tsx
файле. Перейдите к Video.tsx
файлу и измените число durationInFrames
на 120, как показано ниже, чтобы получить 4 секунды:
durationInFrames={120}
На демонстрационном GIF мы видим, что экран начинает темнеть и становится все ярче по мере продолжения видео. Мы реализуем эту функцию в этом разделе.
Для этого нам нужно знать текущий кадр видео в каждый момент времени. К счастью, Remotion дает нам хук для того, что известно как [useCurrentFrame()](https://www.remotion.dev/docs/use-current-frame)
хук. Этот хук извлекает текущий кадр видео.
import { useVideoConfig, useCurrentFrame } from 'remotion';
export const MyComposition = () => {
const {width, height, fps, durationInFrames} = useVideoConfig();
const frame = useCurrentFrame();
const opacity = frame / durationInFrames;
return (
<div
style={{
// Inline styles remain the same
opacity,
}}
>
// Nothing changes here
</div>
);
};
В приведенном выше блоке кода мы импортировали useCurrentFrame()
хук и сохранили его в переменной фрейма. Затем мы создали opacity
переменную, frame
переменную, разделенную на durationInFrames
. После этого мы передали непрозрачность встроенным стилям.
Сохраните файл и просмотрите результаты в браузере, которые должны выглядеть как на картинке ниже:
При рендеринге видео используйте, чтобы заголовок id
в video.tsx
файле точно совпадал с заголовком в разделе сборки ваших скриптов. Я изменил имя id
на «MyVideo», а также изменил его в разделе сборки моего скрипта на «MyVideo», как показано на изображениях ниже:
Сделав это, запустите, yarn build
чтобы экспортировать видео, и вы должны увидеть изображение ниже:
Ссылку на видео на Github можно найти здесь , а полный код для этого туториала — здесь .
В этой статье мы рассмотрели Remotion и некоторые его удивительные возможности. Remotion еще относительно новинка, но впереди приятные сюрпризы. Remotion также поставляется со стандартными функциями, такими как выборка данных и возможности рендеринга на стороне сервера. Вы можете ознакомиться с документацией по Remotion здесь и расширить возможности, описанные в этой статье.
Ссылка: https://blog.openreplay.com/produce-videos-in-react-with-remotion
#react #javascript
1644734160
Игры NFT — самая горячая вещь. В этом руководстве мы объясним, как создать внутриигровых персонажей NFT с помощью Моралиса всего за несколько простых шагов!
В сфере Web3 есть много интересных ниш; тем не менее, NFT продолжают оставаться в моде. Как вы, возможно, знаете, 2021 год подарил нам огромный рост NFT, и начали появляться многочисленные варианты их использования. Таким образом, игры NFT вышли на поверхность и заставили программистов полностью сосредоточиться на разработке игр NFT. Более того, поскольку персонажи являются ключевыми элементами в играх любого типа, крайне важно знать, как создавать игровых персонажей NFT. Теперь, если вы уже знакомы с процессом создания невзаимозаменяемых токенов, вы знаете, что здесь задействован процесс чеканки. В таком случае имеет смысл создавать игровых персонажей NFT для игры с блокчейном. Поэтому, если вы хотите узнать, как чеканить внутриигровых персонажей NFT, следите за нашими новостями по этой теме.
В то время как в настоящее время самые популярные NFT связаны с цифровыми предметами коллекционирования и искусством, игры Web3 готовы стать следующим большим событием. Вы, наверное, даже заметили, как быстро Axie Infinity приобрела популярность в последнее время. Более того, как и в случае с Axie Infinity, GameFi и нишами P2E, NFT играют важную роль. Кроме того, внутриигровые NFT могут представлять любые объекты. Тем не менее, игровые персонажи NFT являются одним из наиболее важных и важных аспектов. Поэтому мы хотим показать вам, как без особых усилий чеканить символы NFT. К счастью, мы можем сделать это быстро и легко, используя Moralis . Эта совершенная платформа для разработки Web3 известна как « Firebase для криптографии ».» по уважительной причине. Это позволяет вам охватить бэкенд, связанный с блокчейном, просто скопировав и вставив короткие фрагменты кода. Кроме того, в сочетании с окончательным шаблоном Ethereum dApp , вы можете иметь своих собственных игровых персонажей NFT, выпускающих dApp ( децентрализованное приложение ), готовые в кратчайшие сроки.
Прежде чем мы перейдем к тому, чтобы показать вам, как чеканить символы NFT с помощью Moralis, нам нужно ввести вас в курс дела. Итак, что же такое игровые персонажи NFT? Разберем понятия «NFT» и «игровые персонажи»; однако давайте сосредоточимся на последнем. Если вы играли в какие-либо игры, вы, скорее всего, знаете, что такое игровые персонажи. Они представляют человека за экраном или любую другую сущность, действующую в игре. Более того, игровые персонажи, которые не контролируются игроками, называются неигровыми персонажами (NPC). Кроме того, количество персонажей, доступных в разных играх, сильно различается.
Однако, когда мы добавляем в картину невзаимозаменяемые токены (NFT), все становится немного сложнее. Более того, хотя большинство новичков в NFT думают о NFT как о файлах JPEG, на самом деле NFT — это гораздо больше. Во-первых, файлы JPEG или файлы любого другого типа (PNG, MP3, MP4, PDF, GIF и т. д.) — это просто визуальная или слуховая часть NFT. Аспекты, которые делают эти файлы NFT, скрыты в бэкэнде и гораздо важнее. Без смарт-контрактов и программируемых блокчейнов (таких как Ethereum), эти файлы будут обычными цифровыми файлами. Более того, как вы, скорее всего, знаете, NFT — это криптоактивы, представляющие уникальность. Детали, которые охватывают уникальность, хранятся в метаданных каждого NFT, которые хранятся в блокчейне. Таким образом, не существует двух одинаковых NFT. Следовательно, даже если они представляют один и тот же цифровой файл, их метаданные не совпадают.
Теперь мы можем собрать все это вместе. Таким образом, игровые персонажи NFT ничем не отличаются от обычных игровых персонажей, но хранятся в блокчейне. Кроме того, это также означает, что пользователи могут фактически владеть своими персонажами. Это дает возможность торговать игровыми персонажами NFT. Более того, пользователи могут отображать символы NFT или использовать их на других поддерживаемых платформах NFT.
Теперь, когда вы знаете, что такое игровые персонажи NFT, вы, вероятно, видите огромный потенциал варианта использования NFT. Поскольку это еще рано, игры NFT и различные метавселенные только начинают появляться. Более того, во многих случаях они еще не соответствуют Web2 или офлайн-играм. Тем не менее, дела в криптосфере развиваются быстро, и многие инвесторы вкладывают свои деньги в эту область. В свою очередь, мы могли бы увидеть, как приложения игровых персонажей NFT взрываются и становятся массовыми раньше, чем позже. Скорее всего, это выйдет далеко за рамки игр. Например, мы, скорее всего, будем использовать символы NFT для социальных онлайн-взаимодействий, которые огромны. Таким образом, обязательно используйте следующие разделы, чтобы узнать, как разумно чеканить символы NFT.
Как упоминалось выше, мы покажем вам, как легко создавать игровых персонажей NFT. Первым ключом к успешному выполнению этой задачи является Moralis и его окончательный Web3 SDK , включая NFT API Moralis . Второй бесценный способ — это окончательный шаблон Web3 . Однако, поскольку один из экспертов Моралиса уже внес необходимые изменения в шаблон, вы можете использовать готовый код. Таким образом, вы можете еще больше ускорить процесс.
Однако, чтобы получить максимальную отдачу от этой статьи, мы хотим предоставить вам четкую картину. Итак, вот как чеканить символы NFT:
Выполнив шаги, описанные выше, вы можете легко создать dApp, который будет чеканить игровых персонажей NFT. Что касается внешнего интерфейса, мы максимально упростили его. Наше децентрализованное приложение позволяет пользователям дать имя своему персонажу, определить его силу, урон, уровни выносливости и загрузить изображение своего персонажа:
Затем, используя одну кнопку в сочетании с интеграцией Moralis с MetaMask , пользователи легко создают свои символы NFT:
Для более подробного предварительного просмотра посмотрите видео в конце этой статьи, начиная с 5:10.
Мы рекомендуем вам использовать наш код и создать собственную версию децентрализованного приложения для чеканки NFT. Однако для этого вам необходимо сначала выполнить несколько простых шагов начальной настройки. Чтобы максимально упростить вам задачу, мы разбили ее на простые шаги. Первая часть покажет вам, как выполнить первоначальную настройку Moralis. Более того, вторая часть проведет вас через клонирование нашего кода и инициализацию Moralis SDK.
Чтобы создавать dApps с максимальной легкостью, вам необходимо выполнить первоначальную настройку Moralis. Вот шаги, которые необходимо выполнить:
После выбора типа сервера вы увидите всплывающее окно с запросом сведений о вашем сервере. Вам нужно будет ввести имя вашего сервера (это может быть что угодно), затем выберите свой регион, тип сети и цепочку(и). Чтобы запустить сервер, нажмите «Добавить экземпляр»:
Детали отобразятся в новом окне. Таким образом, вы можете просто скопировать URL-адрес вашего сервера и идентификатор приложения, щелкнув значки копирования справа от каждой детали:
Примечание. Пока пропустите этот шаг. Вы вернетесь и завершите его, как только у вас будет готов файл «.env».
Эксперт Moralis, который покажет вам дополнительные сведения, связанные с этим примером проекта, в видеоруководстве ниже, подготовил код, который вы можете использовать. Также код доступен на GitHub. Более того, он начал с окончательного шаблона Web3 и применил несколько простых настроек. Таким образом, у вас есть возможность либо начать с окончательного шаблона Web3 и применить настройки самостоятельно, либо использовать готовый код. Очевидно, что, используя последний, вы еще больше ускорите свой прогресс. Кроме того, если вам не требуется создавать уникальный пользовательский интерфейс, имеет смысл начинать с шаблона Ethereum. Чтобы получить доступ к этому шаблону, используйте поисковую систему вашего браузера и введите «Ethereum template» в строке поиска.
Двигаясь вперед, мы проведем вас через процесс клонирования кода « moralis-nft-game ». Тем не менее, процесс практически такой же для шаблона Ethereum (просто используйте соответствующие URL-адреса). Клонируя начальный код или готовую версию, вы легко будете следовать приведенному здесь пошаговому руководству по коду.
Выполните следующие шаги, чтобы клонировать наш модифицированный шаблон (уже настроенный для dApp NFT minter):
Примечание. Оба менеджера пакетов «yarn» и «npm» являются допустимыми вариантами. Если вы решите использовать «npm», обязательно введите правильные команды.
После того, как описанная выше настройка завершена, вы готовы поближе познакомиться с кодом. Таким образом вы узнаете, какие аспекты нашего примера dApp являются наиболее важными. Таким образом, вы более внимательно посмотрите на файл « Uploader.jsx », где покрыты все поля ввода (2:28). Другим ключевым аспектом нашего приложения minter dApp является смарт-контракт « Character.sol ». Эксперт Moralis расскажет вам больше об этом смарт-контракте в видео ниже, начиная с 3:35. Кроме того, он использует Truffle для целей этого урока.
К этому моменту у вас должно быть четкое представление о том, что такое игровые персонажи NFT. Кроме того, вы обладаете навыками, необходимыми для создания персонажей NFT. Кроме того, вы также знаете, что NFT предлагают множество различных вариантов использования и, таким образом, имеют огромный потенциал для будущих приложений. Кроме того, следуя нашему примеру, вы также научились легко создавать символы NFT. В нашем примерном проекте у вас была возможность создать свои собственные приложения dApp для чеканки NFT. Последний — отличный инструмент для создания всевозможных NFT. Кроме того, вы также узнали, как работать с Moralis и шаблоном Ethereum. Таким образом, вы готовы взяться за другие примеры проектов или даже реализовать свои собственные идеи dApp.
Оригинальный источник статьи на https://moralis.io
1634811360
Функция Golang make () используется для создания пустого среза. Здесь пустые срезы - это срезы, содержащие ссылку на пустой массив.
Golang slice make () - встроенная функция, используемая для создания среза. Если вы хотите создать массив с динамическим размером, используйте функцию make (). Функция make () выделяет массив нулей и возвращает фрагмент, который ссылается на массив.
Функция Golang make () принимает три аргумента: тип, длину и емкость. Функция make () принимает три аргумента и возвращает фрагмент. Функция определяет базовый массив размера, равного заданной емкости, и возвращает Slice, который ссылается на базовый массив.
func make([]T, len, cap) []T
Часть Golang - это гибкая и расширяемая структура данных для развертывания и управления наборами данных. Ломтики состоят из множества элементов, которые относятся к одной категории.
Срез - это сегмент динамических массивов, который может увеличиваться и уменьшаться по вашему усмотрению.
Теперь создадим пустой срез .
// hello.go
package main
import "fmt"
func main() {
// Creating an array of size 6
// and slice this array till 3
// and return the reference of the slice
// Using make() function
var sliceA = make([]int, 3, 6)
fmt.Printf("SliceA = %v, \nlength = %d, \ncapacity = %d\n",
sliceA, len(sliceA), cap(sliceA))
// Creating another array of size 6
// and return the reference of the slice
// Using make() function
var sliceB = make([]int, 6)
fmt.Printf("SliceB = %v, \nlength = %d, \ncapacity = %d\n",
sliceB, len(sliceB), cap(sliceB))
}
SliceA = [0 0 0],
length = 3,
capacity = 6
SliceB = [0 0 0 0 0 0],
length = 6,
capacity = 6
Когда вы используете функцию make (), у вас есть одна возможность - указать длину фрагмента. Когда вы указываете длину, емкость lSlice остается такой же. В нашем примере мы определили длину и емкость среза.
Длина среза в первом примере равна 3, а мощность равна 6. Во втором примере длина равна 6, а мощность также равна 6.
Вы можете создать срез, используя символ среза. Создание символа фрагмента аналогично созданию символа массива, но с одним отличием: вам не разрешается указывать размер фрагмента в квадратных скобках [].
var sliceA = []string{"Gandia", "Arturo", "Alicia"}
Следует помнить, что когда вы создаете срез с помощью строки, он сначала создает массив, а затем возвращает ссылку на срез.
Мы можем создать срез с помощью функции Golang make () и буквально срезать его.
Наконец, пример функции make () Golang Slice завершен.
1638433632
Сегодня мы узнаем о создании объектов JavaScript с помощью различных методов, приведенных ниже.
Давайте разберемся с ними подробнее.
Я бы сказал, что это один из самых простых и распространенных способов создания объектов в JavaScript. Мы просто определяем свойства и их значения в фигурных скобках, как показано ниже.
var student = {name: 'Ross', rollno: 1}
Здесь я создал новый объект с двумя свойствами - name и rollno . Мы можем подтвердить это, распечатав значения созданного объекта.
document.write(student.name);
Достаточно просто, не правда ли?
Что, если мы хотим создать несколько экземпляров с одним и тем же набором свойств / структуры? И мы также не хотим писать несколько строк объектных литералов ...
var ross = {name: 'Ross', rollno: 1}
var david = {name: 'David', rollno: 2} var atul = {name: 'Atul', rollno: 3}
Чтобы решить проблему, создадим функцию.
funtion Student(name,age)
{ this.name = name; this.age = age; }
Это ключевое слово относится к объекту. Этим объектом является любой объект, выполняющий текущий бит кода. По умолчанию это глобальный объект. В веб-браузере это объект Windows.
Обратите внимание, что это простая функция и ничего особенного. За ключевым словом new следует имя функции для инициализации объекта.
var ross = new Student('Ross',1);
var david = new Student('David',2);
Когда мы используем ключевое слово new с именем функции, создается пустой объект, а ключевое слово this, используемое внутри этой функции, содержит ссылку на этот объект.
Теперь нам не нужно передавать имя свойства вместе с его значением. Чтобы напечатать тот же результат, мы можем написать.
document.write(ross.name);
document.write(david.name);
Позвольте мне привести еще один пример с изюминкой.
function Student(registrationNo) {
this.registrationNo = registrationNo;
}
var amit = Student(123);
document.write(amit.registrationNo);
Он напечатает undefined . Заметьте, я не специально использовал ключевое слово new с именем функции. Итак, все свойства привязываются к объекту Windows.
document.write (window.registrationNo);
Функцию, как и Student, обычно называют функцией-конструктором. Но вы видите, что на самом деле в этом нет ничего особенного. Это просто функция. Это очень распространенный шаблон для создания объектов в JavaScript.
До сих пор мы рассматривали два разных способа создания объектов с использованием объектных литералов и использования функций-конструкторов с ключевым словом new . Это просто синтаксический сахар для object.create.
Мы могли бы создать те же объекты, используя синтаксис object.create () следующим образом.
var ross = Object.create(Object.prototype, {
name: {
value: 'ross',
enumerable: true,
writable: true,
configurable: true
},
rollno: {
value: 1,
enumerable: true,
writable: true,
configurable: true
}
});
Для каждого свойства мы устанавливаем значение и перечислимые, доступные для записи и настраиваемые свойства в значение true. Это происходит автоматически при использовании объектных литералов или функций-конструкторов.
Вам может быть интересно, что это за атрибуты. Итак, я напишу еще один блог, чтобы объяснить все эти свойства и наследование в JavaScript.
ECMAScript 6 Classes
Для браузеров, которые его поддерживают, спецификации ECMAScript 6 теперь предоставляют функциональные возможности создания объектов с использованием структуры классов, аналогичной статически типизированным языкам, таким как C #, .NET и Java.
Опять же, это просто синтаксический сахар поверх существующих функций создания объектов. Итак, чтобы создать наш объект с использованием класса, мы должны сделать что-то вроде этого.
class Student {
constructor(name, rollno) {
this.name = name;
this.rollno = rollno;
}
getStudentDetails() {
return "Student: " + this.name + ", Roll No: " + this.rollno;
}
}
var ross = new Student("Ross", 1);
document.write(ross.getStudentDetails());
Спасибо за прочтение !