Skip to content

Instantly share code, notes, and snippets.

View vysogot's full-sized avatar
🎯
Ruby/Redis/SQL

Jakub Godawa vysogot

🎯
Ruby/Redis/SQL
View GitHub Profile
@vysogot
vysogot / vim_zsh_install.sh
Last active June 8, 2021 09:27
vim, zsh, and powerlevel setup script for ubuntu 20.04
# run with (update the link after editing this file on gist)
# bash <(curl -s https://gist.githubusercontent.com/vysogot/5f30427e1f6a9cfe17320d62114faa47/raw/2f03b48494657ffecec7fa26f0e221e82833973c/vim_zsh_install.sh)
sudo apt-get update
# linux packages (when not available via apt)
cd && curl -LO https://github.com/sharkdp/fd/releases/download/v8.2.1/fd_8.2.1_amd64.deb
sudo dpkg -i fd_8.2.1_amd64.deb
curl -LO https://github.com/BurntSushi/ripgrep/releases/download/12.1.1/ripgrep_12.1.1_amd64.deb
sudo dpkg -i ripgrep_12.1.1_amd64.deb
@vysogot
vysogot / configurable.rb
Created April 19, 2021 08:57
Simple configurable extension to a class
# Animals share some behaviour but each kind needs to be configured properly
# I used it to configure sidekiq workers that share sending metrics, logging,
# or error handling, but some of them don't send metrics for example
# and they need to be configured.
class Animal
def say_hi
puts(greeting_prefix + config.name + hobby_prefix + config.hobby)
end
@vysogot
vysogot / ruby-lambda-factorial.rb
Created October 16, 2019 14:04
Ruby lambda factorial
IS_ZERO = -> (x) { x == 0 }
ONE = -> { 1 }
ONE_LESS = -> (x) { x - 1 }
ITSELF = -> (x) { x }
COND = -> (cond) { -> (doit) { -> (doelse) { cond ? doit.(nil) : doelse.(nil) } } }
MULT = -> (x) { -> (y) { x * y } }
puts(
-> myself {
-> (n) {
@vysogot
vysogot / 01_odd_elements.ex
Last active September 26, 2019 09:46
Odd elements of list in Elixir
defmodule Solution do
def odds(elements) do
Enum.with_index(elements)
|> Enum.map_reduce([], fn {element, index}, acc ->
case rem(index, 2) == 1 do
true -> {{element, index}, acc ++ [element]}
_ -> {{element, index}, acc}
end
end)
|> elem(1)
@vysogot
vysogot / podcast_generator.rb
Created September 16, 2017 18:13
Generates RSS file from the files in a folder with subfolders
#!/usr/bin/env ruby -wKU
#
# based on a script
# by Kelan Champagne
# http://kelan.io
require 'date'
# Config values
podcast_title = "Title"
@vysogot
vysogot / youtube-transcript-to-srt.rb
Created March 16, 2017 09:15
YouTube Transcript to SRT - Ruby script
# Paste your transcript between the quotes
# and run
# ruby youtube-transcript-to-srt.rb > subtitles.srt
transcript = "0:00 Hello and welcome
0:05 This is a very nice story
0:10 and it needs subtitles"
times = transcript.split("\n").map {|x| x[0..4].strip.rjust(5, '0')}
times << times[-1]
@vysogot
vysogot / MultipleOutputTimeline.ino
Last active May 29, 2021 06:31
Arduino – multiple output control with timeline
/* Algorithm based on delay for running different outputs in given LOW/HIGH intervals
This code is meant to control the relay grid behind a washing machine
and it can be used for many other devices. By Jakub Godawa (vysogot) */
/* addresses for Arduino Uno (!setup properly for Arduino Mega or other!) */
const int r1out = A0;
const int r2out = A1;
const int s3out = A2;
const int s4out = A3;
const int s5out = A4;
@vysogot
vysogot / people_matcher.rb
Created July 16, 2011 20:27
Using FilterMatcher example
class PeopleMatcher
include FilterMatcher
attr_reader :db
def initialize(db, input)
@db, @input = db, input
end
def match
@vysogot
vysogot / filter_matcher.rb
Created July 16, 2011 20:26
FilterMatcher module
module FilterMatcher
#
# define filter in a class that uses this module
# named like:
# - name_filter
# - age_filter
#
# they should a filtered array
#
@vysogot
vysogot / filter_matcher_test.rb
Created July 16, 2011 20:17
FilterMatcher test suite
require 'test/unit'
class PeopleMatcherTest < Test::Unit::TestCase
def setup
@db = [
{ :id => 1, :name => "John", :age => 33, :homepage => "www.johny.com", :matched => false },
{ :id => 2, :name => "Mike", :age => 30, :homepage => "www.mikes.com", :matched => false },
{ :id => 3, :name => "Johny", :age => 25, :homepage => "www.johny.com", :matched => false },
{ :id => 4, :name => "Mike", :age => 30, :homepage => "www.realmike.com", :matched => false },
{ :id => 5, :name => "Dan", :age => 25, :homepage => "www.danny.com", :matched => false },