Skip to content

Instantly share code, notes, and snippets.

View KamilLelonek's full-sized avatar
🏋️‍♂️
Do you even lift?

Kamil Lelonek KamilLelonek

🏋️‍♂️
Do you even lift?
View GitHub Profile
@KamilLelonek
KamilLelonek / ruby_hash_2.rb
Created November 20, 2014 04:50
Ruby hash quirks - part 2
[1] (pry) main: 0> default_array = [];
[2] (pry) main: 0> my_hash = Hash.new default_array;
[3] (pry) main: 0> my_hash[:hobbies] << 'dancing';
[4] (pry) main: 0> my_hash[:skills] << 'php';
[5] (pry) main: 0> my_hash[:hobbies] == my_hash[:skills]
=> true
[6] (pry) main: 0> my_hash[:hobbies] == default_array
=> true
[7] (pry) main: 0> default_array
=> ["dancing", "php"]
@KamilLelonek
KamilLelonek / ruby_hash_3.rb
Created November 20, 2014 04:57
Ruby hash quirks - part 3
[1] (pry) main: 0> my_hash = Hash.new { |hash, key| hash[key] = [] }
=> {}
[2] (pry) main: 0> my_hash[:hobbies] << 'swimming';
[3] (pry) main: 0> my_hash[:skills] << 'java';
[4] (pry) main: 0> my_hash[:hobbies]
=> ["swimming"]
[5] (pry) main: 0> my_hash[:hobbies].object_id
=> 70144893987080
[6] (pry) main: 0> my_hash[:skills]
=> ["java"]
@KamilLelonek
KamilLelonek / array.scala
Last active August 29, 2015 14:10
An attempt for better Array syntax in Scala
import scala.language.reflectiveCalls
import scala.language.postfixOps
import scala.reflect.Manifest
import scala.reflect.ClassTag
def |[T: ClassTag](x: T*) = new { def | = x.toArray }
val a = |(1, 2, 3)|
val b = |("a", "b", "c")|
val c = |(true, false)|
@KamilLelonek
KamilLelonek / service_object_command_pattern.rb
Created November 28, 2014 07:47
Service Object implementation skeleton
class DoSomeAction
def initialize(dependency_injection_arguments)
# ...
end
def call(optional_arguments)
# ...
end
private
@KamilLelonek
KamilLelonek / JavaConverters.scala
Created November 28, 2014 18:09
Using JavaConverters in Scala
scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._
scala> scalaList.asJava
res11: java.util.List[Int] = [1, 2, 3]
@KamilLelonek
KamilLelonek / JavaConversions.scala
Created November 28, 2014 18:10
Using JavaConversions in Scala
scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._
scala> val javaList: java.util.List[Int] = scalaList
javaList: java.util.List[Int] = [1, 2, 3]
@KamilLelonek
KamilLelonek / startpakker.scala
Created November 29, 2014 13:07
Startpakker features
def startpakkerCountForTelenor = startpakkerCount(Brands.Telenor)
def startpakkerCountForCBB = startpakkerCount(Brands.CBB)
def startpakkerCountForOne = startpakkerCount(Brands.One)
def startpakkerCountForColour = startpakkerCount(Brands.Colour)
private def startpakkerCount(brand: Brand) = startpakkerForBrand(brand) match {
case None => None
case Some(list) => Some(list.size)
}
@KamilLelonek
KamilLelonek / clients_controller.rb
Last active August 29, 2015 14:10
Exception driven development
class ClientsController < ActionController::API
def update_registration_number
update_registration_number_service.(registration_number)
render_success
rescue UpdateRegistrationNumber::RegistrationNumberAlreadyExist
render_error
end
# ...
end
@KamilLelonek
KamilLelonek / car_dealer.rb
Created November 30, 2014 12:13
Sell a car use case
class CarDealer
def sell_car(client_id, car_id)
# queries
client = find_client(client_id)
car = find_car(car_id)
# services
oder_car_for_client(car, client)
prepare_an_invoice(car, client)
deliver_car(car, client)
@KamilLelonek
KamilLelonek / exceptions_benchmark.rb
Last active August 29, 2015 14:10
Exceptions benchmark
require 'benchmark/ips'
def rescue_exception(divider)
1 / divider
rescue ZeroDivisionError
end
def without_rescue(divider)
1 / divider
end