Skip to content

Instantly share code, notes, and snippets.

View leonid-shevtsov's full-sized avatar
🇺🇦
Help Ukraine Win

Leonid Shevtsov leonid-shevtsov

🇺🇦
Help Ukraine Win
View GitHub Profile
@leonid-shevtsov
leonid-shevtsov / chromium_pickle.imhex
Created June 13, 2024 08:39
ImHex protocol description for Chromium Pickle data
struct PickleString {
u32 length;
char16 chars[length];
char16 zeroChar;
};
struct PickleEntry {
PickleString key;
PickleString value;
};
@leonid-shevtsov
leonid-shevtsov / lines_to_canvas.rb
Created June 13, 2024 07:20
Convert a list of lines into Obsidian Canvas
# ruby lines_to_canvas.rb <items.txt >items.canvas
require 'random/formatter'
require 'json'
nodegap = 10
nodewidth = 300
nodeheight = 60
list = STDIN.readlines
package main
import (
"fmt"
"runtime"
)
func main() {
var stats runtime.MemStats
require 'json'
require 'strscan'
FILENAME = ARGV[0]
POOLSIZE = 6
BUFSIZE = 128 * 1024 * 1024
pool = Array.new(POOLSIZE) do |_idx| # rubocop:disable Metrics/BlockLength
outpipe_out, outpipe_in = IO.pipe(encoding: Encoding::BINARY)
cmdpipe_out, cmdpipe_in = IO.pipe(encoding: Encoding::BINARY)
require 'strscan'
stats = Hash.new { |h, k| h[k] = [10_000, -10_000, 0, 0] }
SEMI = String.new(';', encoding: Encoding::BINARY)
NEWLINE = String.new("\n", encoding: Encoding::BINARY)
BUFLEN = 128 * 1024 * 1024
buf = ' ' * BUFLEN
buf.force_encoding(Encoding::BINARY)
@leonid-shevtsov
leonid-shevtsov / 1_trivial.rb
Last active March 8, 2024 21:24
1 Billion Row Challenge... in Ruby?
stats = {}
File.open('measurements.txt') do |f|
f.each_line do |line|
city, temp_s = line.split(';')
temp = temp_s.to_f
stats[city] ||= {
min: 10_000,
max: -10_000,
sum: 0,
@leonid-shevtsov
leonid-shevtsov / monocsv.rb
Created February 9, 2024 20:07
Розбір CSV з Монобанку
require 'csv'
def parse_monocsv(csv_string)
columns = %i[
date
hour
debit_or_credit
details
counteragent
edrpou
enum DateIndex {
// All dates are integers counting from this date
static let zeroDate = Calendar.current.date(from: .init(year: 1970, month: 1, day: 1))!
static func fromDate(_ date: Date) -> Int {
Calendar.current.dateComponents([.day], from: zeroDate, to: date).day!
}
static func toDate(_ index: Int) -> Date {
Calendar.current.date(byAdding: .day, value: index, to: zeroDate)!
VALUES_PER_SECOND = 10_000_000.0
# Probability of collision of a single generation
# - gen_per_second = how many values are generated per second
def p_gen(machine_count, gen_per_second)
value_count = VALUES_PER_SECOND / gen_per_second
1 - Math.exp(-machine_count*(machine_count-1)/(2*value_count))
end
@leonid-shevtsov
leonid-shevtsov / measure_go.go
Last active March 4, 2023 21:26
Memory usage: Ruby vs Go vs JavaScript
package main
import (
"fmt"
"log"
"os"
"os/exec"
"runtime"
"strconv"
"strings"