Skip to content

Instantly share code, notes, and snippets.

View joeldrapper's full-sized avatar
🇺🇦
Slava Ukraini

Joel Drapper joeldrapper

🇺🇦
Slava Ukraini
View GitHub Profile
@joeldrapper
joeldrapper / fingerprinting.rb
Created January 10, 2024 14:30
Rails request fingerprinting concern
# frozen_string_literal: true
module Fingerprinting
def full_fingerprint
generate_fingerprint(
ip_fingerprint,
browser_fingerprint
)
end
@joeldrapper
joeldrapper / example.rb
Last active January 25, 2024 06:57
Table component
render TableComponent.new(@posts) do |t|
t.column("Title", &:title)
t.column("Author") { |post| post.author.name }
end
@joeldrapper
joeldrapper / murmur.rb
Created May 13, 2024 12:09
Murmur hash in pure Ruby
module Murmur
MASK32 = 0xffffffff
def self.hash(str, seed = 0)
# Initialize variables
# h1: The main hash value that will be iteratively updated
# k1: A temporary value used to process chunks of 4 bytes
# i: Counter to keep track of the number of bytes processed
h1 = seed
k1 = 0
@joeldrapper
joeldrapper / keymap.json
Last active March 27, 2025 23:43
My Zed Config
[
{
"context": "Editor",
"bindings": {
"alt-up": "editor::SelectLargerSyntaxNode",
"alt-down": "editor::SelectSmallerSyntaxNode",
"ctrl-cmd-up": "editor::MoveLineUp",
"ctrl-cmd-down": "editor::MoveLineDown"
}
}
@joeldrapper
joeldrapper / gravatar.rb
Created October 3, 2024 23:30
Private server-side fetched async gravatar component in Phlex
# frozen_string_literal: true
class Components::Gravatar < Ode::Base
include Flecks
prop :size, Integer, default: 80
prop :alt, String
prop :email, String do |value|
value.to_s.strip.downcase
end
@joeldrapper
joeldrapper / fuzzy_index.rb
Created March 27, 2025 11:20
Simple fuzzy index with left weight
class FuzzyIndex
def initialize
@index = Hash.new { |h, k| h[k] = Set.new }
end
def []=(key, value)
trigrams(key).each { @index[it] << [key, value] }
end
def [](query)