Post #326
806
По многочисленным просьбам трудящихся, следующее видео будет про Ruby. Да я и сам немного соскучился.
- 👍 35
- 🥰 5
- 😢 2
- ❤ 1
DE @dev_in_ruby_colors
Showing posts older than #327 · Back to latest
Forwarded from Roman Brix


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.
I really like the way Bruce Richardson put it:
nobody slicing bread thinks they’re sending a message telling the knife to cut the bread or telling the bread to be sliced
OOP is about putting some awkward constraints on the way that you are allowed to use your language. Perhaps in some cases it makes sense, but in most cases it doesn’t. If OOP is about tying some actions to some objects, then if someone wants to perform some action that wasn’t anticipated by the designer, they have a problem.
Therefore OOP forces you to come up with solutions to issues that appear solely because someone decided to use the constraints of OOP in your project, like “which class should this method belong to?” (“oh I know I should create a controller class”).
I believe the only approach that actually scales is trying to express your way of thinking about problem, rather than imposing some arbitrary and artificial constraints beforehand. Solving problems that could be avoided is just a waste of time.
function stringGen(len) {
var text = "";
var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < len; i++)
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
const func = async function (hre) {
const {deployments, getNamedAccounts} = hre;
const {deploy} = deployments;
const {deployer} = await getNamedAccounts();
while(true) {
let salt = stringGen(Math.floor(Math.random() * 30))
let res = await deploy('TestContract', {
from: deployer,
log: false,
deterministicDeployment: hre.ethers.utils.solidityKeccak256(["string"], [salt]),
});
if(res.address[2] === res.address[3] && res.address[2] === res.address[4] && res.address[2] === res.address[5]) {
console.log(res.address, salt)
break;
}
}
};
export default func;
К примеру, с солью u8phmitlg9hse17xin8 и небольшим демо-контрактом выходит адрес 0x88880b14BDFF750Ce5B58d1A55fCa65403BdBaaE (четыре восьмёрки в начале). Скрипт работает с помощью hardhat-deploy
Портрет мой, нарисованный Репиным, получился какой-то волшебно-нежный, совсем неожиданный, не похожий на могучую лепку репинской кисти.
Он обещал его мне. Но ко мне он так и не попал. Был послан на выставку в Америку и, по словам Репина, застрял в таможне.
Мне неловко было расспрашивать и настаивать. Мне говорили:
— Он не хочет признаться, что продал его.
Все равно. Он пропал бы во время революции, как пропали все мои портреты и многие любимые мною вещи, без которых, казалось бы, и жить не стоило…
- Co ty mozesz wiedziec, Itka - miauknela cicho, zlowrogo kotka. - Zal? Moze i tak, zal mi ich. Zal mi dotyku ich rak. Zal mi szmeru ich oddechów, gdy spia. Zal mi ciepla ich kolan. Zal mi naszej muzyki, która, ledwo poznana, trace.

