Skip to content

Instantly share code, notes, and snippets.

View luchiago's full-sized avatar
🚀
Learning

Lucas Hiago luchiago

🚀
Learning
View GitHub Profile
@luchiago
luchiago / curry.rb
Created September 14, 2019 19:38
Currying in ruby
#Allows a function accepts n parameters and turns it into a sequence of n functions, each of them take 1 parameter.
power_function = -> (x, z) {
(x) ** z
}
base = gets.to_i
raise_to_power = power_function.curry.(base)
power = gets.to_i
@luchiago
luchiago / spread.js
Created January 8, 2020 22:52
An use of spread operator in JavaScript
const user = {
name: 'Lucas',
lastName: 'Hiago'
};
function getUserWithFullName(user) {
return {
...user, //spead operator
fullName: `${user.name} ${user.lastName}`
}
@luchiago
luchiago / reduce_and_map.js
Last active January 22, 2020 01:31
An example using reduce and map functions from JavaScript
const students_grades = [
[7.0, 8.0, 6.0],
[10.0, 10.0, 10.0],
[5.0, 9.0, 10.0]
]
const reducer = (exams) => {
let starter = 0
let number_of_exams = 3
@luchiago
luchiago / odd_or_even.py
Created March 5, 2020 17:28
Odd or even lambdas to make more readable
is_even = lambda number: number % 2 == 0
is_odd = lambda number: number % 2 != 0
range = range(1, 11)
# Generate list using list comprehension
even_numbers = [ number for number in range if is_even(number) ]
odd_numbers = [ number for number in range if is_odd(number) ]
# Output
@luchiago
luchiago / active_record_associations.rb
Created March 8, 2020 02:06
Rails preload, eager_load and includes
# Example Models
class Tournament
attribute :name, :string
has_many :teams
end
class Teams
attribute :name, :string
@luchiago
luchiago / pre-commit.bash
Last active April 28, 2020 00:46
Hook for pre-commit to check rubocop and erb problems
#!/usr/bin/env bash
echo "Running pre-commit hook"
fileList_rb=$(git diff --diff-filter=d --cached --name-only | grep -E '\.(rb)$')
fileList_erb=$(git diff --diff-filter=d --cached --name-only | grep -E '\.(erb)$')
if [ ${#fileList_rb} -lt 1 ] && [ ${#fileList_erb} -lt 1 ]; then
echo -e "You have no staged .rb or .erb files to test\n"
exit
@luchiago
luchiago / pre-push.bash
Created April 23, 2020 03:03
Hook for pre-push
// pre-push
#!/usr/bin/env bash
echo "Running pre-push hook"
./scripts/run-brakeman.bash
./scripts/run-tests.bash
# $? stores exit value of the last command
if [ $? -ne 0 ]; then
echo "Brakeman and Tests must pass before pushing!"
#!/usr/bin/env bash
GIT_DIR=$(git rev-parse --git-dir)
echo "Installing hooks..."
# this command creates symlink to our pre-commit script
ln -s ~/Scripts/ruby/pre-commit.bash $GIT_DIR/hooks/pre-commit
ln -s ~/Scripts/ruby/pre-push.bash $GIT_DIR/hooks/pre-push
echo "Done!"
@luchiago
luchiago / create_meetings.rb
Last active June 20, 2020 22:55
Migration for multiple foreign keys with the same model in Rails 6
class CreateMeetings < ActiveRecord::Migration[6.0]
def change
create_table :meetings do |t|
t.datetime :starts_at, null: false
t.datetime :ends_at, null: false
t.references :available_user, null: false
t.references :requester_user, null: false
t.timestamps
end
# @param {String} j
# @param {String} s
# @return {Integer}
def num_jewels_in_stones(j, s)
jewels = j.split("")
total = 0
s.split("").each do |stone|
total += 1 if jewels.include?(stone)
end