Skip to content

Instantly share code, notes, and snippets.

Avatar
💭
🎺

Julik Tarkhanov julik

💭
🎺
View GitHub Profile
View mft_workbench_tabletop_calculator.rb
mft_gap_mm = 96
offset_outer_mm = 70 # (mft_gap_mm / 2)
# Long side needs an odd number of gaps so that the center span of the
# workbench ends up between two rows of holes and never overlaps the holes
1.step(22,2) do |n_gaps_x|
1.upto(10) do |n_gaps_y|
width_mm = (offset_outer_mm * 2) + (mft_gap_mm * n_gaps_x)
height_mm = (offset_outer_mm * 2) + (mft_gap_mm * n_gaps_y)
puts "#{width_mm}x#{height_mm}mm with #{n_gaps_x + 1} holes along and #{n_gaps_y + 1} holes across"
end
@julik
julik / INSTALL.command
Created May 20, 2021
Python 3 compatible Logik-Matchbook install script
View INSTALL.command
#!/usr/bin/env python
import contextlib as __stickytape_contextlib
@__stickytape_contextlib.contextmanager
def __stickytape_temporary_dir():
import tempfile
import shutil
dir_path = tempfile.mkdtemp()
try:
yield dir_path
View stuffer.ru
PAYLOAD_SIZE = 15 * 1024 * 1024
CHUNK_SIZE = 65 * 1024 # Roughly one socket buffer
class StufferBody
def each
rng = Random.new(123)
whole_chunks, rem = PAYLOAD_SIZE.divmod(CHUNK_SIZE)
whole_chunks.times do
yield(rng.bytes(CHUNK_SIZE))
end
yield(rng.bytes(rem)) if rem > 0
View packed_column.rb
# In a couple of tables we have VARBINARY columns which either encode a packed
# integer of some kind, or a checksum (which is commonly shared as a hexadecimal).
# This module allows rapid definition of such columns and accessors for them. For example,
# imagine you want to store a CRC32 value - which fits into a uint4
#
# class RecordWithChecksum < ActiveRecord::Base
# extend PackedColumn
# packed_value_column :crc32, pattern: 'V'
# end
#
View crc32_collider.rb
require 'zlib'
# A fairly naive generator of payloads which, having the same size, will produce an identical CRC32 checksum
def produce_bytes_at_iteration(bytebag_size, random_seed, iter)
rng = Random.new(random_seed)
iter.times do
rng.bytes(bytebag_size)
end
rng.bytes(bytebag_size)
end
View bench.rb
require 'bundler'
Bundler.setup
require 'benchmark'
require 'benchmark/ips'
require_relative '../lib/zip_tricks'
some_randomness = StringIO.new(Random.new.bytes(800 * 1024))
rackup_path = File.join(__dir__, 'webserver.ru')
View research.rb
class ZipTricks::OutputEnumerator
DEFAULT_WRITE_BUFFER_SIZE = 65 * 1024
# Creates a new OutputEnumerator.
#
# @param streamer_options[Hash] options for Streamer, see {ZipTricks::Streamer.new}
# It might be beneficial to tweak the `write_buffer_size` to your liking so that you won't be
# doing too many write attempts and block right after
# @param write_buffer_size[Integer] By default all ZipTricks writes are unbuffered. For output to sockets
# it is beneficial to bulkify those writes so that they are roughly sized to a socket buffer chunk. This
# object will bulkify writes for you in this way (so `each` will yield not on every call to `<<` from the Streamer
@julik
julik / kelder.rb
Last active Oct 22, 2019
A very very very rough version. There probably will be a gem of this
View kelder.rb
module Kelder
module PrefixKeyWithToken
# Prefix all generated blob keys with the tenant. Do not
# use slash as a delimiter because it needs different escaping
# depending on the storage service adapter - in some cases it
# might be significant, in other cases it might get escaped as a path
# component etc.
def generate_unique_secure_token
tenant_slug = Apartment::Tenant.current.split('_').last
"#{tenant_slug}-#{super}"
View multipart_range_response.rb
class MultipartRangesWriter
ALPHABET = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a
def initialize
# RFC1521 says that a boundary "must be no longer than 70 characters, not counting the two leading hyphens".
# Modulo-based random is biased but it doesn't matter much for us
@boundary = SecureRandom.bytes(64).unpack("C*").map {|b| ALPHABET[b % ALPHABET.length] }.join
end
class NullWriter < Struct.new(:offset)
@julik
julik / csrf_adapter.rb
Created Aug 18, 2019
Minimum viable reuse of the Rails CSRF token in Rack
View csrf_adapter.rb
# Allows a Rack application to reuse the Rails-provided CSRF
# protection, with the same guarantees and the same token.
# Implements token unmasking and other facilties.
class Middleware::CSRFAdapter
AUTHENTICITY_TOKEN_LENGTH = 32
class InvalidOrMissingToken < StandardError
def http_status_code
403
end