Разграничение ответственности между процессорными ядрами

Ближайшая конференция — DotNext 2020 Moscow
2-5 декабря, Online
Подробности и билеты: https://dotnext-moscow.ru/

. Речь пойдёт о достаточно редкой области, в которую почти не заглядывают в мире .NET: разграничение работы между ядрами процессора. В течение доклада мы сопоставим связь всего c SynchronizationContext и TaskScheduler, проанализируем, что нам необходимо, чтобы заставить как свои, так и чужие алгоритмы работать на тех ядрах, на которых работать было приказано, и о том, как это сделать правильно:

  • сохранив async/await и прочие удобства;
  • заставить async/await и APC механизм работать на общих/различных ядрах.
    Плюс разберемся, почему ThreadPool в данном контексте (да и вообще) не безопасен.

#dotnet #programming #developer

What is GEEK

Buddha Community

Разграничение ответственности между процессорными ядрами

Разграничение ответственности между процессорными ядрами

Ближайшая конференция — DotNext 2020 Moscow
2-5 декабря, Online
Подробности и билеты: https://dotnext-moscow.ru/

. Речь пойдёт о достаточно редкой области, в которую почти не заглядывают в мире .NET: разграничение работы между ядрами процессора. В течение доклада мы сопоставим связь всего c SynchronizationContext и TaskScheduler, проанализируем, что нам необходимо, чтобы заставить как свои, так и чужие алгоритмы работать на тех ядрах, на которых работать было приказано, и о том, как это сделать правильно:

  • сохранив async/await и прочие удобства;
  • заставить async/await и APC механизм работать на общих/различных ядрах.
    Плюс разберемся, почему ThreadPool в данном контексте (да и вообще) не безопасен.

#dotnet #programming #developer

Как перенести смарт-контракты между разными цепочками

Узнайте, как настроить смарт-контракт в Ganache, а затем перенести его в тестовую сеть Ethereum Rinkeby, тестовую сеть Polygon Mumbai, Binance Smart Chain и Polygon с помощью MetaMask. 

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

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

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

  • Предпосылки
  • Рекомендации по миграции между цепочками
    • Ethereum против Binance Smart Chain
    • Polygon против блокчейна Ethereum
  • Демонстрация: миграция смарт-контрактов из локальной цепочки разработки
    • Настройка смарт-контракта с Ganache
    • Перенос смарт-контракта в тестовую сеть Ethereum (Rinkeby)
    • Миграция смарт-контракта в тестовую сеть Polygon (Мумбаи)
    • Перенос смарт-контракта в Binance Smart Chain
  • Миграция смарт-контрактов между цепочками
    • Парачейны
    • Упаковка и распаковка токенов

Предпосылки

Чтобы следовать учебной части этой статьи, убедитесь, что у вас есть следующее:

Рекомендации по миграции между блокчейнами

Несколько факторов могут повлиять на решение о переносе смарт-контракта с одного блокчейна на другой. Давайте рассмотрим несколько примеров.

Ethereum против Binance Smart Chain

Блокчейн Ethereum — это децентрализованный, прозрачный и безопасный общедоступный блокчейн. На момент написания этой статьи Ethereum использует алгоритм консенсуса Proof of Work . Смарт-контракты могут быть созданы в сети Ethereum.

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

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

Binance Smart Chain (BSC ) использует алгоритм консенсуса Proof of Stake . Как и Ethereum, он поддерживает создание смарт-контрактов.

Некоторыми стимулами для перехода с Ethereum на BSC являются более низкие комиссии Binance за газ и более быстрое время транзакций. Эти преимущества делают BSC более масштабируемой, чем Ethereum. Смарт-контракты Ethereum можно легко перенести на платформу BSC с минимальными изменениями кода или без них.

Однако у BSC есть некоторые недостатки, в том числе меньшая децентрализация. Это связано с наличием нескольких централизованных объектов, таких как 21 000 валидаторов узлов, которые прямо или косвенно принадлежат Binance и несут ответственность за более низкую комиссию за газ в сети.

Полигон против Эфириума

Подобно BSC, блокчейн Polygon использует алгоритм консенсуса Proof of Stake. Polygon поддерживает создание смарт-контрактов и обеспечивает взаимодействие, обеспечивая перекрестную связь смарт-контрактов, запущенных на его блокчейне. Токен сети MATIC предлагает несколько функций, таких как оплата газа, размещение ставок и голосование.

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

Теперь давайте посмотрим, как перенести смарт-контракты между разными цепочками.

Демонстрация: миграция смарт-контрактов из локальной цепочки разработки

В этом руководстве мы будем использовать смарт-контракт, написанный на Solidity и развернутый на платформе Tuffle Suite . Truffle Suite интегрируется с другими блокчейнами виртуальной машины Ethereum и имеет встроенные функции для создания, тестирования, компиляции и развертывания смарт-контрактов.

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

Развертывание смарт-контракта в Ganache

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

Для начала клонируйте код смарт-контракта из этого репозитория GitHub в свой терминал. Затем в каталоге проекта выполните следующую команду, чтобы установить зависимости:

npm install

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

Теперь запустите Ganache в своей системе и нажмите БЫСТРЫЙ СТАРТ , как показано ниже:

Ганаш

Далее мы развернем смарт-контракт, используя миграции, определенные в 2_deploy_migration.jsфайле.

Сначала в вашем терминале и каталоге проекта выполните следующую команду, чтобы запустить блокчейн разработки:

truffle develop

Это запустит ваш блокчейн разработки с десятью адресами, каждый из которых содержит 100ETH и закрытые ключи:

Десять ключей

Затем разверните смарт-контракт, выполнив следующую команду для выполнения всего кода в migrationпапке:

migrate -reset
Мигрировать
Развернуть миграцию

Вывод терминала показывает, что 2_deploy_migration.jsфайл развернут. Выходные данные также показывают информацию о контракте, включая хэш транзакции, номер блока и адрес контракта.

Обратите внимание, что некоторая информация о смарт-контрактах, такая как value sentи total cost, предоставляется в ETH (валюта Ethereum). При переносе смарт-контракта вам необходимо сначала обновить любую информацию, которая находится в ETH, до собственной валюты блокчейна, на который вы переносите контракт.

Чтобы выйти из среды, дважды нажмите CTRL + C в терминале.

Теперь давайте посмотрим, как перенести смарт-контракт на блокчейн Ethereum.

Развертывание смарт-контракта в тестовой сети Ethereum (Rinkeby)

Чтобы развернуть смарт-контракт из локальной цепочки блоков в сети Ethereum Rinkeby, вы должны сначала получить адрес.

Чтобы сгенерировать адрес, откройте свой кошелек MetaMask и подключитесь к тестовой сети Rinkeby.

Чтобы получить бесплатный эфир, используйте Faucets Chainlink , подключитесь к Rinkeby и вставьте адрес кошелька в поле.

Затем нажмите Отправить запрос .

Как показано ниже, на ваш кошелек должно быть отправлено 0,1 ETH.

ETH в кошельке

Далее пришло время настроить Truffle. В редакторе кода откройте truffle-config.jsфайл, чтобы определить конфигурации сети.

Проверьте truffle-config.jsдокументацию файла, где он определяет следующее:

/**
* Use this file to configure your truffle project. It's seeded with some
* common settings for different networks and features like migrations,
* compilation and testing. Uncomment the ones you need or modify
* them to suit your project as necessary.
*
* More information about configuration can be found at:
*
* https://trufflesuite.com/docs/truffle/reference/configuration
*
* To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider)
* to sign your transactions before they're sent to a remote public node. Infura accounts
* are available for free at: infura.io/register.
*
* You'll also need a mnemonic - the twelve-word phrase the wallet uses to generate
* public/private key pairs. If you're publishing your code to GitHub make sure you load this
* phrase from a file you've .gitignored so it doesn't accidentally become public.
*
*/

Затем создайте учетную запись на Infura: infura.io/register , затем создайте новый проект и нажмите « НАСТРОЙКИ ПРОЕКТА » в правом верхнем углу.

Настройки проекта

На вкладке «Общие» в разделе «Ключи» выберите RINKEBY в раскрывающемся списке «Конечные точки». Вы должны увидеть идентификатор вашего проекта, а также URL-адрес вашего узла на Infura.

Выберите Ринкеби

NB, вы будете использовать @truffle/hdwallet-provider зависимость, установленную в вашем package.json файле, чтобы настроить вашего провайдера на ваш закрытый ключ в MetaMask.

В вашем truffle-config.jsфайле укажите @truffle/hdwallet-providerзависимость и создайте массив, в котором будут храниться ваши закрытые ключи:

const HDWalletProvider = require('@truffle/hdwallet-provider');
const privateKeys = ['<app your private key>'];

Теперь прокрутите вниз до раздела сетей и добавьте сценарий разработки, чтобы установить providerваш закрытый ключ в MetaMask и ваш URL-адрес для вашего узла в Infura:

development: {
     provider: () => new
HDWalletProvider("<Your private key on metamask", `https://rinkeby.infura.io/v3/71acb374b9dd4e1eb06eeb9a75a8cd1a`),
     network_id: 4,       // Any network (default: none)
},

Вы заметите в приведенном выше коде, что network_idустановлено значение 4; это идентификатор сети для Rinkeby . Другие сети Ethereum имеют другие идентификаторы.

Затем выполните миграцию и конфигурацию, выполнив следующую команду:

truffle migrate -network development --reset 
Развернуть миграцию

Теперь скопируйте хэш транзакции. Перейдите к MetaMask и нажмите View Account on Etherscan . В списке транзакций вы увидите только что развернутый хэш транзакции:

Хэш транзакции

Нажмите на отдельную транзакцию, чтобы увидеть более подробную информацию:

Индивидуальная транзакция

Развертывание смарт-контракта в тестовой сети Polygon (Мумбаи)

Чтобы развернуть смарт-контракт в сети Polygon в Мумбаи, вы начнете с подключения своего кошелька MetaMask к Polygon. Откройте MetaMask и нажмите « Добавить сеть» , затем добавьте в соответствующие поля следующее:

Настройки метамаски

Затем нажмите « Сохранить», и MetaMask подключится к Polygon.

Поскольку вы переносите контракт в тестовую сеть Polygon, вам потребуются токены MATIC для оплаты транзакции. Чтобы получить токены MATIC, откройте свой кошелек MetaMask и скопируйте адрес своего кошелька. Затем перейдите к крану Polygon и вставьте адрес в поле адреса кошелька. Нажмите «Отправить », затем нажмите «Подтвердить » .

Подтвердить детали

Как показано ниже, вы должны увидеть подтверждение того, что запрос был отправлен.

Запрос отправлен

Через несколько минут вы должны увидеть токены в своем кошельке MetaMask. Как только токены MATIC будут успешно переведены, они появятся на балансе вашего кошелька.

Матические жетоны

Затем в редакторе кода откройте truffle-config.jsфайл. В сетевом сценарии добавьте сетевого провайдера для Polygon под сетевым провайдером для Ethereum. Вы будете использовать URL-адрес RPC для тестовой сети Mumbai, как указано в документации Polygon .

Скопируйте ссылку RPC , показанную ниже, https://rpc-mumbai.matic.today :

Ссылка RPC

Затем вставьте ссылку RPC в код в качестве providerURL-адреса. Также вставьте chainid (выше) в код как network_id:

polygonTestnet: {
     provider: () => new HDWalletProvider(privateKeys, `https://rpc-mumbai.matic.today`),
     network_id: 80001,       // Any network (default: none)
   },

Теперь откройте свой терминал и запустите миграцию и настройку в тестовую сеть Polygon с помощью этой команды:

truffle migrate --network polygonTestnet --reset

Ниже вы можете увидеть, что ваш контракт был успешно перенесен:

Успешная миграция

Теперь скопируйте хэш транзакции. Откройте свою учетную запись MetaMask и нажмите « Просмотреть учетную запись в проводнике» :

Просмотр учетной записи метамаски

Вы должны увидеть развернутый контракт с транзакцией в обозревателе блокчейна Polygonscan :

Развернутый контракт

Развертывание смарт-контракта в Binance Smart Chain

Чтобы развернуть ваш смарт-контракт в тестовой сети Binance Smart Chain. вам нужно будет получить токены BNB (это собственная валюта сети Binance Smart).

Вы начнете с подключения вашего кошелька MetaMask к BSC. Откройте MetaMask и нажмите « Добавить сеть»:

Добавить сеть

Далее добавьте в соответствующие поля следующее:

  • Сетевое имя: BSCTestnet
  • URL-адрес RPC: https://rpc-mumbai.matic.today
  • Идентификатор цепи: 97
  • Символ валюты: BNB

Добавить сетевую страницу

Затем нажмите « Сохранить», и MetaMask подключится к BSC и установит токен BNB на ноль:

Ноль БНБ

Чтобы получить бесплатные токены BNB, откройте свой кошелек MetaMask и скопируйте адрес своего кошелька. Затем перейдите к сборщику Binance Smart Chain . В поле ввода адреса вставьте адрес своего кошелька MetaMask.

Умный цепной кран

Теперь нажмите Дать мне BNB , и 1 BNB будет переведен на ваш кошелек MetaMask.

Запрос на финансирование принят

Вы можете подтвердить, что токен был отправлен, проверив баланс своей учетной записи MetaMask:

Баланс метамаски

Теперь отредактируйте truffle-config.jsфайл в редакторе кода и добавьте следующую конфигурацию для сети Binance Smart Chain:

 bscTestnet: {
     provider: () => new HDWalletProvider(privateKeys, `https://data-seed-prebsc-1-s1.binance.org:8545/`),
     network_id: 97,       // Any network (default: none)
   },

Чтобы развернуть свой контракт в тестовой сети Binance Smart Chain, откройте терминал и выполните следующую команду:

truffle migrate --network bscTestnet --reset
Развернуть миграцию

Миграция смарт-контрактов между цепочками

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

Миграция через парачейны

Сеть Polkadot обеспечивает знакомую и безопасную среду, позволяющую блокчейнам легко взаимодействовать друг с другом.

Парачейны — это блокчейны уровня 1, которые взаимодействуют в экосистеме Polkadot. Парачейны не зависят друг от друга, но работают параллельно. Они связаны цепочкой ретрансляции сети . Это соединение обеспечивает межсетевое взаимодействие или возможность обмениваться данными .

Сеть Polkadot использует механизм консенсуса Proof of Stake за счет использования валидаторов и номинаторов . Коллаторы (показаны на рисунке ниже) сохраняют информацию о транзакциях в сети.

Релейная цепь

Парачейны позволяют разработчикам переносить контракты в экосистеме Polkadot, используя формат Polkadot Cross-Consensus Messaging (XCM) вместо упаковки и распаковки токенов (о чем мы поговорим в следующем разделе).

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

XCM имеет протоколы, которые воздействуют на сообщения с различными функциями: вертикальная передача сообщений (VMP) и передача сообщений между цепочками (XCMP).

Кроме того, XCM использует виртуальную машину перекрестного консенсуса (XCVM), которая содержит несколько инструкций, работающих как программа, и сообщения, которые необходимо передать. Инструкции в XCVM состоят из передаваемого сообщения и его адресата.

Кроме того, между Polkadot и другими блокчейнами уровня 1, такими как Ethereum и Binance Smart Chain, существуют мосты, обеспечивающие взаимодействие.

Миграция путем упаковки и распаковки токенов

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

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

Обертывание влечет за собой привязку стоимости токена к его исходной криптовалюте. Обернутый токен — это, по сути, торгуемый токен, который можно использовать в других блокчейнах. В качестве примера предположим, что некоторые ERC-20 Ethereum завернуты. Их стоимость будет привязана к их текущей стоимости, но теперь они считаются обернутым эфиром (WETH). Токены WETH могут использоваться в кошельках MetaMask и других для взаимодействия с различными блокчейнами (BSC, IOTA и т. д.).

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

Развертывание токенов относится к процессу обращения токена к исходной криптовалюте. Например, WETH можно преобразовать в исходную криптовалюту ETH.

Вот демонстрация, показывающая упаковку и распаковку токена Ethereum с использованием стандарта OpenZeppelin ERC-20 :

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol;
contract WETH is ERC20 {
    constuctor() ERC20("Wrapped Ether", "WETH") public {};

    // define a mint function to create new wrapped ether token
    function mint() external payable {
        _mint(msg.sender, msg.value); 
    }
    // define a burn function to create an unwrapped token
    function burn(uint amount) external { //specify the amount that you want back
        payable(msg.sender).transfer(amount); // transfers 
        _burn(msg.sender, amount); //sending back the ether to the user
    }
}

Давайте подробнее рассмотрим отдельные строки кода в приведенном выше блоке кода:

  • Строка 1: указывает лицензию, используемую для компилятора Solidity.
  • Строка 2: указывает версию Solidity.
  • Строка 3: импорт стандарта токена ERC-20, как определено в OpenZeppelin.
  • Строка 4: определяет контракт для создания обернутых и развернутых токенов.
  • Строка 5: определяет constructor``()функцию, которая устанавливает имя Эфира на «Обернутый Эфир» и его символ на «WETH», как только контракт будет выполнен.
  • Строка 7: определяет mint()функцию, которая принимает значение Ether и создает новый обернутый токен Ether; квалификатор external означает, что функция может быть вызвана из других контрактов; квалификатор payable означает, что функция может принимать и отправлять Ether.
  • Строка 9: использует _mintфункцию, определенную в коде OpenZeppelin; он принимает адрес инициатора транзакции как msg.senderи стоимость отправленного эфира какmsg.value
  • Строка 12: определяет burn()функцию, которая принимает количество токенов, которое хочет пользователь, и отправляет обратно развернутый токен.
  • Строка 13: указывает сумму, которая должна быть переведена, заключая адрес вызывающей стороны транзакции msg.senderс квалификатором payable, чтобы он мог передавать эфир; использует transferфункцию, определенную в OpenZeppelin, для принятия суммы, подлежащей переводу
  • Строка 14: использует _burn()функцию, определенную в OpenZeppelin, для отправки инициатору транзакции развернутого токена (оригинального эфира).

Вывод

В этой статье мы продемонстрировали, как настроить смарт-контракт в Ganache, а затем перенести его в тестовую сеть Ethereum Rinkeby, тестовую сеть Polygon Mumbai, Binance Smart Chain и Polygon с помощью MetaMask. Мы также обсудили разные стратегии переноса смарт-контрактов между разными цепочками: обертывание и разворачивание токенов, а также парачейны.

Оригинальный источник статьи на https://blog.logrocket.com

#blockchain #smartcontract #ethereum #polygon #metamask #binancesmartchain #binance

В чем разница между SQL и NoSQL?

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

SQL против NoSQL

Используемая база данных является одним из двух форматов базы данных: SQL и NoSQL. О двух форматах и ​​их преимуществах, недостатках, приложениях и формате мы узнаем в блоге. SQL расшифровывается как язык структурированных запросов .

SQL

SQL — это система управления реляционными базами данных.

Эти базы данных имеют фиксированную, статическую или предопределенную схему.

Эти базы данных подходят для сложных запросов.

Они масштабируются по вертикали.

Структура базы данных SQL

Хорошим примером этого визуально является электронная таблица Excel, в которой все данные хранятся в виде таблицы.

Некоторые примеры: MySQL, PostgreSQL, Oracle, MS-SQL Server и т. д.

Если вам нравится контент, хлопайте в ладоши.

Если вы хотите узнать больше о моих блогах, подписывайтесь на меня, так как это очень много значит для меня.

Если вы чувствуете, что ваши друзья хотели бы поделиться с ними, спасибо.

NoSQL

NoSQL — это система управления нереляционными базами данных.

Эти базы данных имеют динамическую схему.

Эти базы данных не подходят для сложных запросов.

Они масштабируются по горизонтали.

Структура NoSQL

Хорошим примером базы данных NoSQL является структура папок, которую мы используем для хранения наших компьютеров.

Некоторые примеры: MongoDB, GraphQL, HBase, Neo4j, Cassandra и т. д.

 

Вот простая картинка, показывающая разницу между базами данных SQL и NoSQL.

SQL против NoSQL

Ссылка: https://faun.pub/what-is-the-difference-between-sql-and-nosql-21c80016a9d4

#sql #nosql #database

В чем разница между JavaScript и HTML?

Узнайте, почему для создания работающего веб-приложения необходимы и HTML, и JavaScript.

Когда вы учитесь становиться веб-разработчиком, важно понимать разницу между HTML и JavaScript.

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

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

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

С другой стороны, JavaScript — это язык программирования, который можно использовать для добавления динамических функций к HTML-страницам.

JavaScript позволяет создавать интерактивные элементы, такие как раскрывающиеся меню и скрытие определенных элементов на странице.

Чтобы создать полноценное веб-приложение или веб-сайт, вам потребуются как HTML, так и JavaScript.

В этой статье вы научитесь определять код HTML и JavaScript, размещенный на веб-страницах, чтобы понять, как они используются вместе. Давайте начнем с создания базовой HTML-страницы.

Создание HTML-страницы

HTML-страницу можно создать с помощью любого текстового редактора или редактора кода, установленного на вашем компьютере.

Вы можете использовать бесплатные программы, такие как TextPad, NotePad или VSCode. Вы даже можете использовать текстовые редакторы на базе терминала, такие как Vim или Nano.

Создайте новый документ с помощью программы-редактора и добавьте в документ следующий HTML-код:

<head>
  <title>HTML title</title>
</head>
<body>
  <h1>JavaScript vs HTML</h1>
  <p>This is a paragraph</p>
  <button>Click me!</button>
</body>

Сохраните файл как practice.htmlи откройте страницу в своем любимом веб-браузере.

Вы должны увидеть следующий вывод, сгенерированный в вашем браузере:

Вывод HTML-файлаВывод HTML-файла

Вы можете видеть части HTML-документа, отображаемые в браузере.

Все, что вы помещаете в <head>тег HTML-документа, используется для информирования браузера о HTML-документе.

Содержимое <head>тега также известно как метаданные документа.

Тег <body>— это место, где вы размещаете содержимое страницы. Все, что вы туда поместите, будет отображаться на главном экране браузера.

Когда <body>тег пуст, браузер отображает пустую страницу.

Теперь, когда у вас есть базовая HTML-страница, давайте добавим к ней JavaScript.

Добавление JavaScript на вашу HTML-страницу

Несмотря на то, что вы можете создать кнопку с помощью <button>тега HTML, щелчок по кнопке ничего не делает.

Это связано с тем, что у вашей кнопки нет инструкций о том, что делать при нажатии кнопки.

Чтобы заставить кнопку что-то делать, вам нужно добавить код JavaScript.

Добавьте в <button>тег следующий код:

<head>
  <title>HTML title</title>
</head>
<body>
  <h1>JavaScript vs HTML</h1>
  <p>This is a paragraph</p>
  <button onclick="alert('Hello!');">Click me!</button>
</body>

Сохраните HTML-документ, затем обновите браузер.

При нажатии на кнопку появится окно с предупреждением, как показано ниже:

Ответ на нажатие кнопки с использованием JavaScriptОтвет на нажатие кнопки с использованием JavaScript

Атрибут onclickдобавляется к <button>элементу. Когда вы нажимаете кнопку, код, который вы определяете внутри onclickатрибута, будет выполняться как ответ на действие щелчка.

Это alert('Hello!');единственный код JavaScript, добавленный в документ HTML.

Вы также можете использовать <script>тег для добавления более сложного кода JavaScript, как показано ниже:

<head>
  <title>HTML title</title>
</head>
<body>
  <h1 id="header">JavaScript vs HTML</h1>
  <p>This is a paragraph</p>
  <button onclick="changeHeading()">Click me!</button>
  <script>
    function changeHeading() {
      let header = document.getElementById("header");
      header.innerHTML = "Hello World!";
    }
  </script>
</body>

Функция changeHeading()определена внутри <script>тега выше.

Атрибут onclickназначается при вызове changeHeading()функции.

Когда вы нажмете кнопку выше, будет выполнена функция JavaScript.

В приведенном выше коде показаны небольшие примеры того, как JavaScript может добавить интерактивности вашей веб-странице.

Вы также можете использовать JavaScript, чтобы показывать и скрывать div одним щелчком мыши или создавать игру «камень, ножницы, бумага» .

JavaScript добавляет функциональность к статической сборке веб-сайта с использованием HTML.

Он позволяет вам транслировать фильмы и общаться с друзьями с помощью веб-приложений, таких как Netflix, Amazon Prime, Facebook, Instagram и буквально любого веб-сайта, который вы посещаете в своем веб-браузере.

Обнаружение кода JavaScript на веб-страницах, которые вы посетили

Современные браузеры, установленные на вашем компьютере, поставляются с инструментами веб-разработчика.

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

Чтобы просмотреть код HTML, CSS и JavaScript, из которого состоит веб-страница, просто щелкните правой кнопкой мыши в любом месте страницы и выберите « Просмотреть исходный код страницы » .

Вот пример проверки источника целевой страницы Facebook:

Проверка источника страницы FacebookПроверка источника страницы Facebook

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

Вывод

JavaScript и HTML необходимы для создания современного веб-приложения.

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

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

Вот таблица, в которой резюмируются различия между JavaScript и HTML:

КатегорияJavaScriptHTML
ОписаниеЯзык программирования, работающий в браузерахЯзык разметки, отображаемый браузерами
ЦельДобавляет динамическое взаимодействие на веб-страницуСоздать статическую структуру и содержимое веб-страницы
ВстраиваниеВстраивается внутрь HTMLНе может быть встроен в JavaScript
ПоддерживатьЧастичная поддержка в зависимости от версии браузераПоддерживается всеми современными браузерами
РазработкаСтандарт JavaScript определен в ECMAScript .Стандарт HTML определяется WHATWG

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

Ссылка: https://sebhastian.com/javascript-vs-html/

#javascript #html

В чем разница между блокчейном и биткойном?

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

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

Очень простая аналогия

Учти это:

  • Веб-сайты - это особая технология, используемая для обмена информацией.
  • Поисковые системы - один из самых популярных и известных способов использования веб-технологий.
  • В свою очередь, Google - один из самых популярных и известных примеров поисковой системы.


Так же:

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

Блокчейн: концепция

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

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

Термины «распределенный» и «децентрализованный» относятся к тому, как реестр структурирован и поддерживается. Чтобы понять разницу, подумайте об общих формах централизованных бухгалтерских книг, таких как общедоступные отчеты о продажах домов, банковские записи о снятии наличных в банкоматах или список проданных товаров на eBay. В любом случае регистр контролирует только одна организация: государственное учреждение, банк или eBay. Другой распространенный фактор - это то, что существует только одна главная копия бухгалтерской книги, а все остальное - это просто резервная копия, которая не является официальной записью. Следовательно, традиционные реестры централизованы, потому что они поддерживаются одной организацией и обычно полагаются на единую базу данных.

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

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

Блокчейн: практика

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

Одна из основных причин, по которой блокчейны настолько устойчивы к модификации, заключается в том, что блоки связаны и защищены криптографическими доказательствами. Для создания новых блоков участникам сети необходимо выполнять дорогостоящую и интенсивную вычислительную деятельность, известную как майнинг. По сути, майнеры несут ответственность за проверку транзакций и их группировку во вновь созданные блоки, которые затем добавляются в цепочку блоков (при соблюдении определенных условий). Они также несут ответственность за введение новых монет в систему, которые выдаются в качестве вознаграждения за их работу.

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

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

Криптовалюта

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

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

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

Биткойн

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

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

Как и большинство криптовалют, биткойн имеет ограниченное предложение, что означает, что система больше не будет генерировать биткойны после достижения максимального количества. Хотя это варьируется от проекта к проекту, максимальное количество биткойнов установлено на уровне 21 миллиона единиц. Обычно общее предложение - это общедоступная информация, которая определяется при создании криптовалюты. Вы можете проверить циркулирующее количество и цену биткойнов на Binance Info.

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