Forwarded from Roman Brix
I finally found it.
glob@7.2.2 <- This is problem
I haven't looked for it exactly from what point, but it's version 7.2.0 in the package at the point where that package works well, and version 7.2.2 in the "nothing to compile" version.
Type the "npm intstall glob@7.2.0" into an empty project and copy /node_modules/glob
copy /node_modules/glob to YOUR_HARDHAT_PROJECT/node_modules/hardhat/node_modules/glob
It works.
glob@7.2.2 <- This is problem
I haven't looked for it exactly from what point, but it's version 7.2.0 in the package at the point where that package works well, and version 7.2.2 in the "nothing to compile" version.
Type the "npm intstall glob@7.2.0" into an empty project and copy /node_modules/glob
copy /node_modules/glob to YOUR_HARDHAT_PROJECT/node_modules/hardhat/node_modules/glob
It works.
Срочно в номер: оказывается, в Remix можно выбрать одну из нескольких тем оформления. Правда Old Hope нет :( https://remix-ide.readthedocs.io/en/latest/layout.html#themes
👍2
Удобная штука для тех, кто использует для разработки TypeScript. Typechain умеет генерировать типы для контрактов Solidity и легко интегрируется с Hardhat и Ethers. https://github.com/dethcrypto/TypeChain/
GitHub
GitHub - dethcrypto/TypeChain: 🔌 TypeScript bindings for Ethereum smart contracts
🔌 TypeScript bindings for Ethereum smart contracts - dethcrypto/TypeChain
👍3🔥3
По многочисленным просьбам трудящихся, следующее видео будет про Ruby. Да я и сам немного соскучился.
👍35🥰5😢2❤1
Ну а пока ещё немного Solidity. Сегодня поступил резонный и не вполне очевидный вопрос. Есть код:
Почему в этом случае первый вызов функции
вызовы стоят одинаково? Я и раньше замечал такую вещь, причём в разных средах. Ответ, на самом деле, очень простой: эта логика зашита прямо в EVM. Читаем документацию по опкодам:
* G(sset) — 20000 Paid for an SSTORE operation when the storage value is set to non-zero from zero
* G(sreset) — 2900 Paid for an SSTORE operation when the storage value’s zeroness remains unchanged or
is set to zero.
То есть переводя с русского на человеческий:
* Мы платим 20к газа, если сохраняем в переменную состояния новое НЕ нулевое значение, но только в том случае, если эта переменная хранила до этого ноль
* Но мы платим всего лишь 2900 газа, если в не-нулевую переменную мы сохраняем что-то ещё (или она была нулевой и осталась нулевой)
Отака история, малята.
contract Adder {
uint public a;
function add() public {
for (uint i; i < 100; i++) {
a += i;
}
}
}Почему в этом случае первый вызов функции
add стоит сильно больше газа (на 20к больше), чем последующие? И почему вот с таким кодом:contract Adder {
uint public a = 1; // a любой, но НЕ нулевой
function add() public {
for (uint i; i < 100; i++) {
a += i;
}
}
}вызовы стоят одинаково? Я и раньше замечал такую вещь, причём в разных средах. Ответ, на самом деле, очень простой: эта логика зашита прямо в EVM. Читаем документацию по опкодам:
* G(sset) — 20000 Paid for an SSTORE operation when the storage value is set to non-zero from zero
* G(sreset) — 2900 Paid for an SSTORE operation when the storage value’s zeroness remains unchanged or
is set to zero.
То есть переводя с русского на человеческий:
* Мы платим 20к газа, если сохраняем в переменную состояния новое НЕ нулевое значение, но только в том случае, если эта переменная хранила до этого ноль
* Но мы платим всего лишь 2900 газа, если в не-нулевую переменную мы сохраняем что-то ещё (или она была нулевой и осталась нулевой)
Отака история, малята.
❤20👍1
Друзья, в следующий четверг в 19:00 UTC+3 предлагаю устроить ещё один стрим и порешать некоторые задачки с ресурса Ethernaut, таким образом закрепив полученные знания. Ну, и просто можно будет пообщаться. 😄 https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
🔥23👍7❤1
В этом уроке мы поговорим о test doubles: так называемых "заглушках", которые позволяют вместо реальных объектов использовать "дублёров". Это очень удобно в тех случаях, когда необходимо ввести изолирование и тестировать не всю систему целиком, а конкретную часть. Узнаем, что такое mocks, stubs и spies и как их создавать. https://www.youtube.com/watch?v=4JyOmdi-hNs
YouTube
RSpec 3, урок #4 | Test doubles, mocks, stubs, spies
В этом уроке мы поговорим о test doubles: так называемых "заглушках", которые позволяют вместо реальных объектов использовать "дублёров". Это очень удобно в тех случаях, когда необходимо ввести изолирование и тестировать не всю систему целиком, а конкретную…
🔥29❤3
Перебирал старые посты и нашёл некую зарисовку-рассуждение (дела минувших дней, конечно, но всё же) http://bodrovis.tech/en/categories/prochee/posts/byt-ravnodushnym-pomoch-ili
Ilya Krukowski
Быть равнодушным: помочь или..? - by Ilya Krukowski
🤔3👍2
Биржа для разработчиков Rails с открытым исходным кодом https://railsdevs.com/
Railsdevs
The reverse job board for Ruby on Rails developers · RailsDevs
RailsDevs empowers independent developers available for their next gig. Stop scouring job boards and sit back as companies reach out to you first.
🔥8
Гугловский сервис для "разогрева" перед интервью - актуально в случаях, если собеседование на английском. https://grow.google/certificates/interview-warmup/
👍7
Мой товарищ написал статейку про GraphQL и mutations на Ruby - коротко, но по делу https://ryanbigg.com/2022/05/ruby-graphql-mutations-with-union-types
Ryan Bigg
Using Union Types with GraphQL Mutations in Ruby
🔥4
Напоминаю, что сегодня вечером у нас стрим https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
👍9
Друзья, всем огромное спасибо за участие в стриме, получилось очень продуктивно. Запись уже доступна на канале https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
❤25
Немного музыки на сегодня https://www.youtube.com/watch?v=SXuh6enDeYE
YouTube
Burzum Ambient
0:00 - Autumn Leaves
4:48 - Die Liebe Nerþus'
7:05 - Den onde kysten
9:24 - Emptiness
22:36 - Der Tod Wuotans
29:21 - Channeling The Power Of Souls Into A New God
32:51 - Han som reiste
37:41 - Sôlbjörg
41:40 - Dungeons Of Darkness
46:33 - Tuistos Herz
52:50…
4:48 - Die Liebe Nerþus'
7:05 - Den onde kysten
9:24 - Emptiness
22:36 - Der Tod Wuotans
29:21 - Channeling The Power Of Souls Into A New God
32:51 - Han som reiste
37:41 - Sôlbjörg
41:40 - Dungeons Of Darkness
46:33 - Tuistos Herz
52:50…
❤3🔥2
По мотивам "this person does not exist", ресурс, который показывает несуществующие блюда с названиями, сгенерированными нейросетью https://thissnackdoesnotexist.com/
👍3
Overengineering, доведённый до абсурда: библиотека, которая говорит, равняется ли число 13. https://github.com/jezen/is-thirteen Что интересно, у неё в списке зависимостей есть noop3 - https://github.com/sindresorhus/noop3#readme библиотека, которая ничего не делает
GitHub
GitHub - jezen/is-thirteen: Check if a number is equal to 13.
Check if a number is equal to 13. Contribute to jezen/is-thirteen development by creating an account on GitHub.
😁9👏1
Странное стоковое фото https://twitter.com/darkstockphotos/status/1364550361260974082/photo/1 В компе, кстати, ещё есть вход PS/2 😄
Twitter
Dark Stock Photos
https://t.co/WFXuXBgkN2
🤔4