Skip to content

Instantly share code, notes, and snippets.

View airled's full-sized avatar

Uladzimir airled

  • Minsk, Belarus
View GitHub Profile
@airled
airled / curry.js
Last active March 2, 2023 15:08
Simple currying example in JS
class Curry {
constructor(fn) {
return this.curry(fn, fn.length, [])
}
curry(fn, argRestCounter, args) {
if (argRestCounter === 0) return fn(…args);
return arg => this.curry(fn, argRestCounter — 1, […args, arg]);
}
}
@airled
airled / subs.rb
Created February 5, 2024 05:55
Check substring in string
def subs(str1, str2)
return nil if str2.size > str1.size
str1.each_char.with_index do |char, index|
next if char != str2[0]
match = true
str2[1..].each_char.with_index do |_, str2_slice_index|
str2_index = str2_slice_index + 1
next if str2[str2_index] == str1[index + str2_index]
@airled
airled / contract_call.js
Created April 11, 2024 12:55
ETH contract call
const { ethers } = require("ethers");
const rpcUrl = ''
const contractAddress = ''
const abi = []
async function main() {
const provider = new ethers.JsonRpcProvider(rpcUrl);
const signer = new ethers.Wallet("", provider)
const contract = new ethers.Contract(contractAddress, abi, signer);
@airled
airled / affinity.sh
Last active June 20, 2024 06:28
Show list of process affinities ommiting threads
# Show list of process affinities omitting threads
for pid in $(ps --ppid 2 -p 2 --deselect -o pid=); do taskset -pc $pid 2>/dev/null; done
@airled
airled / qsort.rs
Last active July 12, 2024 10:20
Simple quicksort in rust
fn qs(a: &mut [i32]) {
if a.len() <= 1 { return; }
// track index of the first element that >= pivot (last element)
// gte = greater than or equal
let mut first_gte_index = 0;
let pivot_index = a.len() - 1;
for i in 0..pivot_index {
if a[i] >= a[pivot_index] { continue; }
a.swap(i, first_gte_index);
@airled
airled / extractor.sol
Created August 14, 2024 13:54
Extract a signer address from signature of a personal signed message
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol";
using MessageHashUtils for bytes;
using ECDSA for bytes32;
contract AddressExtractor {