По мотивам обсуждения в чате зафиксирую полезные команды для evm в hardhat и не только (полезно в тестах).
Не забудьте сделать сначала:
*
*
*
*
Отмотать время назад (типа decrease time), увы, не получится.
Не забудьте сделать сначала:
import { network, ethers } from 'hardhat';*
await network.provider.send("evm_increaseTime", [timeInSeconds]); - поставит метку времени для следующего блока на значение "текущая метка времени + timeInSeconds". Обратите внимание, что майнинг следующего блока не произойдёт автоматически, то есть грубо говоря само по себе время не перескочит. Впрочем, подобная форма записи должна работать и для ethers тоже, то есть ethers.provider.send. Для того, чтобы сделать майнинг вам нужен...*
await network.provider.send('evm_mine'); - сделает майнинг пустого блока. Вот у него уже будет новое время, если перед evm_mine вы говорили evm_increaseTime. Но можно сделать и проще...*
await network.provider.send('evm_mine', [newTimestamp]); - сразу сделать майнинг нового блока с новой меткой времени. Обратите внимание, что нужно передавать именно новую метку, а не просто кол-во секунд, на которое вы хотите увеличить время. Поэтому можно подойти подход видаconst blockNumBefore = await ethers.provider.getBlockNumber();
const blockBefore = await ethers.provider.getBlock(blockNumBefore);
await network.provider.send('evm_mine', [blockBefore.timestamp + 1200]); // увеличиваем на 1200 секунд
*
await network.provider.send("hardhat_reset") - сбросит локальный блокчейн. То есть сбросит совсем: текущий блок будет опять нулевым, время вернётся к текущему, данные потеряются. Можно засунуть в beforeEach, чтобы перед каждым тестом получать девственно чистый блокчейн (впрочем, если в beforeEach вы делаете заново деплой, то контракты у вас и так будут свежие).Отмотать время назад (типа decrease time), увы, не получится.
👍13
Ну что ж, как насчёт мюзикла сегодня? 🤵🏻♂️ Всем хорошего вечера, скоро увидимся https://www.youtube.com/watch?v=9B2jIkXp5vU&list=PL7W_dYeTF7pQps9-ldmNLuNTbzATsfmVu&index=2
YouTube
Think Of me- Phantom of the Opera (original broadway cast.)
I love this musical sooo much ENJOY!
NOTE- NO COPYRIGHT INTENDED FOR ENTERTAINMENT PERPOSES ONLY
NOTE- NO COPYRIGHT INTENDED FOR ENTERTAINMENT PERPOSES ONLY
👍2
Друзья, напоминаю, что уже в эту среду состоится день открытых дверей в школе MCS. 🤓 Выступят основатели и сотрудники школы, расскажут о программе, процессе обучения и обязательно ответят на все вопросы. https://www.youtube.com/watch?v=EkqlnS6JtWc
YouTube
СТРИМ: День открытых дверей в школе MCS!
На этом стриме представители школы программирования MCS расскажут о программах обучения, о том, как вообще строится взаимодействие на платформе, о студенческой жизни, о вариантах оплаты, а также ответят на все ваши вопросы. Напоминаю, что вы всё ещё можете…
👍4
Если вы помните это место, то, видимо, вам уже ближе к тридцати годам 😂 https://www.youtube.com/watch?v=MG2njc8cUyM
YouTube
Chrono Trigger: End of Time - Unreal Engine 5
Project made to study Niagara, Lightning e Emissive Color Materials
Artstation: https://www.artstation.com/quirinoricardo
Instagram: https://www.instagram.com/professor.quirino/
Artstation: https://www.artstation.com/quirinoricardo
Instagram: https://www.instagram.com/professor.quirino/
Небольшой лайфхак. Если status bar в VS Code (это полоса внизу) кажется вам слишком яркой - а меня лично это очень отвлекает, - то можно сделать вот что.
Нажимаем
Добавляем в настройки код:
Сохраняем.
Панель стала другого цвета, ура!
Нажимаем
Ctrl + Shift + P
Выбираем Open Settings (JSON)Добавляем в настройки код:
"workbench.colorCustomizations": {
"statusBar.background" : "#1A1A1A",
"statusBar.noFolderBackground" : "#212121",
"statusBar.debuggingBackground": "#263238"
},
Ну, тут могут быть любые цвета.Сохраняем.
Панель стала другого цвета, ура!
🔥13😁1
https://www.youtube.com/watch?v=EkqlnS6JtWc начинаем через 12 минут, welcome!
YouTube
СТРИМ: День открытых дверей в школе MCS!
На этом стриме представители школы программирования MCS расскажут о программах обучения, о том, как вообще строится взаимодействие на платформе, о студенческой жизни, о вариантах оплаты, а также ответят на все ваши вопросы. Напоминаю, что вы всё ещё можете…
🔥7
Кстати, а завтра у нас "серьёзный разговор" 😝 про NFT и ERC721: писать будем с нуля, тк подключить open zeppelin - это круто, но необходимо понять, как это работает за кулисами. https://www.youtube.com/watch?v=VrYsT4asWPc
YouTube
СТРИМ! Solidity и Ethereum, урок #27 | ERC721 и NFT
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
👍18🔥9
Начинаем через 10 минут https://www.youtube.com/watch?v=VrYsT4asWPc
YouTube
СТРИМ! Solidity и Ethereum, урок #27 | ERC721 и NFT
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
🔥11👍3
Исходный код со стрима (плюс расширение Enumerable) https://gist.github.com/bodrovis/a2bd1af832964943b732044e484b8349
Gist
NFT.sol
GitHub Gist: instantly share code, notes, and snippets.
👍9
А сегодня у нас интересный урок по Stimulus! В этом видео мы применим полученные знания о Stimulus и Turbo на практике и сделаем реализацию типа drag & drop: пользователь меняет местами положение элементов путём их перетаскивания. Мы обсудим решения acts_as_list, sortable.js, напишем контроллер Stimulus, поговорим о constraints (в том числе типа deferrable) и обсудим ещё несколько важных моментов. https://www.youtube.com/watch?v=_gIJWpfjXBc
YouTube
Hotwire и Rails #3 | Сортировка drag'n'drop, Stimulus, acts_as_list, sortable
В этом видео мы применим полученные знания о Stimulus и Turbo на практике и сделаем реализацию типа drag & drop: пользователь меняет местами положение элементов путём их перетаскивания. Мы обсудим решения acts_as_list, sortable.js, напишем контроллер Stimulus…
👍13🔥4❤2
Интересная книга о разработке "долгоиграющих" приложений Rails. Я пока кратко посмотрел первые главы, но в целом мысли весьма здравые https://pragprog.com/noscripts/d-dcrails/sustainable-web-development-with-ruby-on-rails/ Это не реклама
Pragprog
Sustainable Web Development with Ruby on Rails
Practical tips to get the most out of Ruby on Rails 8.
👍17🤩2
Довольно тяжёлая, но насыщенная была семидневка - надеюсь, новые уроки и стримы принесли плоды. Ну, а сегодня просто немного музыки. Спокойной ночи https://www.youtube.com/watch?v=PBa1iM29mGI
YouTube
Kælan Mikla - Sólstöður
Directed by Pola Maria
https://instagram.com/eerie.mydriasis
Recording and editing: Pola Maria
Screenplay: Kælan Mikla and Pola Maria
Assistant: Ester Borg
Graphic design: Kinnat Sóley
https://merchbabe.net/
Special thanks to Rimmugýgur for the swords…
https://instagram.com/eerie.mydriasis
Recording and editing: Pola Maria
Screenplay: Kælan Mikla and Pola Maria
Assistant: Ester Borg
Graphic design: Kinnat Sóley
https://merchbabe.net/
Special thanks to Rimmugýgur for the swords…
👍6🔥2
Первый урок из серии "Ruby с нуля" (aka "Самоучитель Ruby")! В нём мы настроим рабочую среду, немного поговорим о самом языке, напишем первую программу, обсудим типы данных и переменные. Эти уроки подойдут для начинающих, а также для тех, кто уже когда-то что-то учил, но успел забыть. Помогать в этих уроках мне будет мой друг, который совсем не разбирается в программировании, поэтому это не просто лекции, а, скорее, совместное обсуждение нового материала. https://www.youtube.com/watch?v=lhRAK_bwaeo
YouTube
Ruby с нуля, урок #1 | Настройка, переменные, типы данных
Первый урок из серии "Ruby с нуля" (aka "Самоучитель Ruby")! В нём мы настроим рабочую среду, немного поговорим о самом языке, напишем первую программу, обсудим типы данных и переменные. Эти уроки подойдут для начинающих, а также для тех, кто уже когда-то…
👍29🔥7
Рубрика "заметки на полях". Как сделать так, чтобы можно было относительно объекта Ruby вызывать метод обычным способом и через квадратные скобки, то есть писать
В целом, всё просто. Скажем, можно проверить, есть ли такая переменная в объекте:
Зачем это нужно? К примеру, чтобы объект в массиве нормально работал с методом
значит, что на каждом объекте массиве вызывается
obj.method
obj[:method]
В целом, всё просто. Скажем, можно проверить, есть ли такая переменная в объекте:
def [](raw_key_attr)
key_attr = raw_key_attr.to_s.to_sym
return nil unless self.instance_variables.include?(:"@#{key_attr}")
self.send key_attr
end
Зачем это нужно? К примеру, чтобы объект в массиве нормально работал с методом
pluck, который как раз вызывает всё через квадратные скобки. То есть вот этоobjects_array.pluck :id
значит, что на каждом объекте массиве вызывается
obj[:id], поэтому если метода [] нет, то и pluck не сработает.👍13
Друзья, и пожалуйста, не надо больше спрашивать, зачем я занимаюсь "вымирающим Ruby". Это по меньшей мере странно, тем более, что этот язык долгие годы (включая этот) держится в топ-5 по зарплате и может похвастать весьма крупным сообществом. Давайте лучше послушаем музыку. Спокойной ночи. https://www.youtube.com/watch?v=qIiZFpOQnd8
YouTube
Wintersun - Loneliness (Winter) Official Lyric Video
Wintersun - Loneliness (Winter) Official Lyric Video. WINTERSUN ALBUMS MASTER FILES, ISOLATED TRACKS, INSTRUMENTALS, REMASTERS: https://wintersun.bandcamp.com
The final lyric video from The Forest Seasons album. Enjoy the coldness of the winter! Big thanks…
The final lyric video from The Forest Seasons album. Enjoy the coldness of the winter! Big thanks…
🔥19👍9
Вдогонку ещё один урок с шутками да прибаутками.
В этом уроке по Ruby мы обсудим, что такое логические значения (булев тип), как работать с ветвлением (if-elsif-else), как сравнивать числа и строки, а также как генерировать случайные числа в заданном диапазоне. Кроме того, напишем программы для проверки возраста и "игру-угадайку", в которой пользователь будет угадывать число, которое задумал компьютер. https://www.youtube.com/watch?v=0mOaStOwThM
В этом уроке по Ruby мы обсудим, что такое логические значения (булев тип), как работать с ветвлением (if-elsif-else), как сравнивать числа и строки, а также как генерировать случайные числа в заданном диапазоне. Кроме того, напишем программы для проверки возраста и "игру-угадайку", в которой пользователь будет угадывать число, которое задумал компьютер. https://www.youtube.com/watch?v=0mOaStOwThM
YouTube
Ruby с нуля, урок #2 | Булев тип, if-elsif-else, пишем "угадайку"
В этом уроке по Ruby мы обсудим, что такое логические значения (булев тип), как работать с ветвлением (if-elsif-else), как сравнивать числа и строки, а также как генерировать случайные числа в заданном диапазоне. Кроме того, напишем программы для проверки…
🔥23👍2
Недавно для Hardhat появился новый плагин - toolbox. Он содержит в себе несколько самых популярных расширений (для тестирования, верификации, вывода отчётов по газу, typechain), то есть теперь всё можно установить одной командой и использовать в проекте безо всяких проблем https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-toolbox
v2.hardhat.org
Hardhat Toolbox | Ethereum development environment for professionals by Nomic Foundation
❤13👍9🔥1