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
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"
require 'concurrent/atomic/read_write_lock'
require 'benchmark/ips'
require 'active_support/core_ext/string'
rw = Concurrent::ReadWriteLock.new
Benchmark.ips do |x|
x.report("with_read_lock") do
rw.with_read_lock do
Math.sqrt(4)
end
#!/bin/sh
GITHUB_PAT_TOKEN=github_pat_xxx
REPO=myuser/myrepo
FILEPATH=online.txt
# echo -n '...' | base64
INCREMENT='Li4u'
FILEINFO=$(curl \