A type is a collection of possible values. An integer can have values 0, 1, 2, 3, etc.; a boolean can have values true and false. We can imagine any type we like: for example, a HighFive type that allows the values "hi" or 5, but nothing else. It's not a string and it's not an integer; it's its own, separate type.
Statically typed languages constrain variables' types: the programming language might know, for example, that x is an Integer.
In that case, the programmer isn't allowed to say x = true
; that would be an invalid program.
The compiler will refuse to compile it, so we can't even run it.
def defer(&block) | |
def block.each ; yield call ; end | |
block | |
end | |
app = | |
lambda do |env| | |
status = 200 | |
headers = { 'Last-Modified' => exec_sql('SELECT MAX(updated_at) FROM foos').httpdate } | |
/* | |
In any of the following scenarios, a critical attribute was left off and needs | |
to be corrected. | |
*/ | |
abbr[title=''], | |
abbr:not([title]), | |
a[href=''], | |
a[href='#'], | |
a:not([href]) { | |
color: var(--color-red-500) !important; |
I created this to help me run benchmarks/comparisons against Universal ID, but it could serve as the foundation for a robust ETL data pipeline... and it's less than 70 LOC right now! 🤯 🚀
It handles the extract and transform parts of an ETL process and supports the following options:
only
- specify which attributes to include
# A Pipeline extension to process steps concurrently | |
# Example | |
# class ConcurrentPipeline < Pipeline | |
# include ConcurrentProcessing | |
# end | |
# | |
# MyPipeline = ConcurrentPipeline.new do |pl| | |
# pl.step ValidateInput | |
# | |
# # These steps run concurrently |