DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.21K subscribers
143 photos
2 videos
8 files
981 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
И последняя мысль на сегодня, но тут, скорее, просто заметка или памятка для себя. Связана эта мысль с тем, почему вообще я делаю то, что делаю (а вы это спрашивали уже несколько раз)? Ради чего? Ну, или почему я общаюсь с теми, с кем общаюсь? Можно ведь просто заниматься рабочими вопросами. А что - работа есть, задачи есть, а вечером можно расслабиться.

Ну, наверное, потому, что все эти люди, которые смотрят мои видео, не гонят меня прочь, не опускают глаза, отвечают мне, хотя далеко не всегда соглашаются с моей точкой зрения (это вовсе не значит, что на основной работе есть какие-то проблемы, речь тут о другом). Потому что я чувствую здесь себя "в теме". Как это глупо звучит, да?

Но ведь все мы родом из детства, а в детстве приходилось пережить много чего. Да и не в детстве тоже: вообще довольно сложно найти кого-то, кто тебя поймёт. Именно поэтому мне так нравится высказывание моего бывшего начальника: "Счастье - это когда тебя понимают и когда ты нужен".

Jadę z nimi, bo jestem bezwolny golem. Bo jestem wiecheć pakuł gnany wiatrem wzdłuż gościńca. Dokąd, powiedz mi, mam pojechać? I po co? Tutaj przynajmniej zebrali się tacy, z którymi mam o czym rozmawiać. Tacy, którzy nie przerywają rozmowy, gdy podchodzę. Tacy, którzy nawet nie lubiąc mnie, mówią mi to w oczy, nie rzucają kamieniami zza opłotków. Jadę z nimi z tego samego powodu, dla którego pojechałem z tobą do flisackiej oberży. Bo jest mi wszystko jedno. Nie mam miejsca, do którego mógłbym zmierzać. Nie mam celu, który powinien znajdować się na końcu drogi.
👍165
Напоминалка по JWT
👍204🔥1
В этом уроке мы поговорим о низкоуровневых вызовах call и delegatecall, узнаем, в чём их отличие, как работать с возвращаемыми ими данными. Посмотрим, как работать с encodeWithSignature и encodeWithSelector, а также узнаем, к каким проблемам безопасности может привести использование delegatecall. https://www.youtube.com/watch?v=QzdMZbcn3o4
👍20
Говорят, с апдейтом Hardhat и glob какие-то проблемы (не проверял ещё)
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.
Срочно в номер: оказывается, в Remix можно выбрать одну из нескольких тем оформления. Правда Old Hope нет :( https://remix-ide.readthedocs.io/en/latest/layout.html#themes
👍2
Удобная штука для тех, кто использует для разработки TypeScript. Typechain умеет генерировать типы для контрактов Solidity и легко интегрируется с Hardhat и Ethers. https://github.com/dethcrypto/TypeChain/
👍3🔥3
По многочисленным просьбам трудящихся, следующее видео будет про Ruby. Да я и сам немного соскучился.
👍35🥰5😢21
Ну а пока ещё немного Solidity. Сегодня поступил резонный и не вполне очевидный вопрос. Есть код:

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
В этом уроке мы поговорим о test doubles: так называемых "заглушках", которые позволяют вместо реальных объектов использовать "дублёров". Это очень удобно в тех случаях, когда необходимо ввести изолирование и тестировать не всю систему целиком, а конкретную часть. Узнаем, что такое mocks, stubs и spies и как их создавать. https://www.youtube.com/watch?v=4JyOmdi-hNs
🔥293
Один чел из твиттера сделал нейронку, которая на основе фоток и мемов с волками делает свои. Ну, в общем, получилось странновато
😁7🔥2
Перебирал старые посты и нашёл некую зарисовку-рассуждение (дела минувших дней, конечно, но всё же) http://bodrovis.tech/en/categories/prochee/posts/byt-ravnodushnym-pomoch-ili
🤔3👍2
Гугловский сервис для "разогрева" перед интервью - актуально в случаях, если собеседование на английском. https://grow.google/certificates/interview-warmup/
👍7
Мой товарищ написал статейку про GraphQL и mutations на Ruby - коротко, но по делу https://ryanbigg.com/2022/05/ruby-graphql-mutations-with-union-types
🔥4