Skip to content

Instantly share code, notes, and snippets.

View towhans's full-sized avatar

Jiri Sedlacek towhans

  • Brno, Czech Republic
View GitHub Profile
@towhans
towhans / complexity.md
Last active November 18, 2024 15:21
Static vs Dynamic Complexity in Software Systems

Static vs Dynamic Complexity in Software Systems

Jiri Sedlacek 17/11/2024

image

  • This is not a post about statically or dynamically typed programming languages. This is also not a post about eventually consistent systems. This post is about classic transactional software systems and how they decay over time and how.
  • Every software has inherent complexity that comes from solving the problem it needs to solve. Yet you can break it down to Static Complexity and Dynamic Complexity.
@towhans
towhans / rate_limit.md
Last active March 14, 2024 13:46
Rate Limit na volani externiho API

Rate Limit na volani externiho API

image

Nekdy potrebujete nepretizit externi API svymi pozadavky. Podivame se na jednoduchy zpusob, jak to provest pomoci knihovny jobs od Ulf Wiggera.

Externi API ma problem, kdyz mu posleme vic nez 5 pozadavku za vterinu. Takze potrebujeme omezit pocet volani na 5 za sekundu.

Jak přidat mini BI Dashboard do Elixir projektu

Když chcete přidat 2-3 grafy jako počet sign-upů za den nebo počet nových zakázek po týdnech. V Elixiru existuje aplikace phoenix_live_dashboard. Ta sama o sobě zobrazuje základní statistiky jako verze Elixiru, běžící aplikace, pomalé Ecto query, velikost databáze apod. Co se moc neví je, že do live_dashboard jdou jednoduše přidávat další záložky. Takže pokud už phoenix_live_dashboard v projektu máte, tak použít jej k vytvoření mini BI dashboardu je extrémně jednoduché. Ukážeme si jak na to.

Výhodou použití live_dashboard oproti třeba LiveBooku je, že je to jednoduchá závislost, kterou už v projektu nejspíš máte. Přidat LiveBook může být malinko složitější. Kvůli jednomu, dvěma grafům to uplně nemusí stát za to. Další výhodou je, že můžete použít veškerý existující kód k sestavení dat k z

@towhans
towhans / gist:4cb3ed739681b867a01c
Created June 22, 2015 11:07
Debug AnyEvent code with this one simple trick
# #############################################################
# Paste the following code in your program.
# It will redefine AE::cv globally.
# You'll be able to pause in-between individual closures
# as they are called by the event loop. You'll
# also see the source code of the closure being called.
#
# Credits:
# Brian D. Foy: http://www.effectiveperlprogramming.com/2011/09/enchant-closures-for-better-debugging-output/
# #############################################################
@towhans
towhans / gist:6221613
Created August 13, 2013 14:25
Prototype of mapping from ZeroGW to PSGI
sub zerogw2psgi {
my ($parts) = @_;
my $env;
# order of elements must be the same as in zerogw.yaml config file
# under key "contents"
$env->{REQUEST_METHOD} = $parts->[0];
$env->{HTTP_AUTHORIZATION} = $parts->[1];
$env->{HTTP_HOST} = $parts->[2];
$env->{HTTP_ACCEPT_LANGUAGE} = $parts->[3];
{
name => 'post',
ignore_missing => 1,
params => {
subject => {
required => 1,
length_between => [3, 40],
},
day => {
required => 0,