Skip to content

Instantly share code, notes, and snippets.

@romiras
romiras / dictionary-gnu-sort-bd.txt
Last active January 1, 2020 10:56 — forked from klauspost/dictionary-sorted.txt
Brotli dictionary - printed escaped - sorted with "sort -bd" (with dictionary order, ignoring blanks), a tool from GNU coreutils
"<!--"
"><!--"
"||[];"
"--><!--"
"--></"
"----"
"!--<"
"//--></"
"//-->"
"...</"
@romiras
romiras / Readme.md
Last active June 9, 2020 21:05
EBK backup extraction scripts

How to use

Assumed you have files with extension .ebk stored by Kies.

Prerequisites

Install Ruby 2.3 or later

Example for running in Bash terminal. Linux is not mandatory for running Ruby program.

@romiras
romiras / concurrent_workers_demo.rb
Last active November 4, 2021 08:06
Workers with Concurrent::Future in Ruby
require 'concurrent'
require 'benchmark'
max = 20 # number of tasks to process
n_workers = 4 # number of concurrent workers
results = [] #
lambda = -> (iter, i) { results << ('%04d' % i); d = rand(0.005)+0.001; puts("Iteration #{iter}. sleep %.3f" % d); sleep(d) }
workers = Array.new(n_workers, lambda)
iter = 0
@romiras
romiras / es_ndjson_split.rb
Last active November 11, 2021 10:57
A script for transforming .jsonl file into file ready for bulk import to ES.
# Reads .jsonl file and transforms it into file ready for bulk import to ES.
require 'json'
File.open(ARGV[1], 'wb') {|f|
ARGF.each_line { |line|
a = JSON.parse(line)
out = {
index: {
"_id": a["_id"],
@romiras
romiras / es_bulk_upload.sh
Last active December 8, 2021 16:43
Script for uploading 30 K dataset into ES
split --verbose -l1000 dataset-bulk-30k.ndjson bulk.
for f in bulk.??; do echo $f; curl -i -X POST localhost:9200/_bulk -H "Content-Type: application/x-ndjson" --data-binary @$f; done
@romiras
romiras / concurrent_workers_batch_test.rb
Last active January 25, 2022 07:40
Concurrently classify items by type and batch them with multiple workers
# Concurrently classify items by type and batch them with multiple workers
require 'logger'
NUM_WORKERS = 10
NUM_ITEMS = 12
NUM_ITERATIONS = 5000
Item = Struct.new(:id, :type)
@romiras
romiras / gpipeview.c
Created May 11, 2015 14:58
GTK+ pipe viewer
/*
Simple GTK+ pipe viewer
Contributors: Romiras
Based on paned.c
LICENSE: GNU GPLv3
*/
#include <stdio.h>
#include <unistd.h>
#include <gtk/gtk.h>
@romiras
romiras / async_queue_consumer.rb
Created May 27, 2022 18:08
Demo async queue consumer with concurrent N workers in Ruby
require 'concurrent'
require 'benchmark'
require 'logger'
module Logging # Credits: https://stackoverflow.com/a/6768164/10118318
# This is the magical bit that gets mixed into your classes
def logger
Logging.logger
end
@romiras
romiras / !resque_async_drainer.rb
Last active May 28, 2022 09:11
Asynchronously drain Resque queue with concurrent workers in Ruby
require_relative './logging'
require_relative './async_consumer'
def drain(data_store, queue_name, output_filename)
json_store = File.open(output_filename, 'a')
executor = lambda do |class_name, args|
Logging.logger.info "class_name: #{class_name}, args: #{args}"
json_store.write("#{ { class: class_name, args: args }.to_json }\n")
@romiras
romiras / gist:77eaad109fed0555339fdaaff08677ba
Created February 26, 2023 14:56
Replace shebang line in place in all files in Ruby `bin`directory from version 2.7.6 to 2.7.7 on MacOS
# using ripgrep on macos
for f in $(rg --files-with-matches -F '2.7.6/'); do sed -i '' 's/\/2\.7\.6\//\/2\.7\.7\//' $f; done