EoL hell, git a Windows

Dostali jsme se trochu do end of line hell. Používáme několik nástrojů na automatickou úpravu kódu: ESLint, Prettier,… Máme v týmu různé editory a operační systémy. Doposud jsme neměli problém, avšak teď se nám několikrát stalo, že se pomíchaly konce řádků. Momentálně vidím merge s konflikty u téměř všech souborů a všech řádků 🤯 máte nějakou zkušenost co s tím:
/1/ Kterou variantu zvolit CRLF vs. LF? (CR se už předpokládám nepoužívá?)\n
/2/ Jak všem nástrojům říct, aby náš výběr respektovali – výše zmíněným i GITu, VSCode, OS,…\n
/3/ Je rozumné projít celou GIT historii a tenhle problém hromadně upravit a přepsat?\n

Dům vs. byt

(Převzato z jedné české skupiny o amatérském kritizování architektury)

Tohle je přesně návod k tomu, jak může vzniknout nechutná sídlištní kaše….

Jakože ano, sídliště nemusí být ten nejhezčí architektonický skvost (a jistě se dá hromadné bydlení řešit vizuálně lépe).

Podle mě je mnohem lepší bydlet v paneláku a mít hned za domem les (To je taková běžná situace pražských panelových sídlišť), než mít na každou stranu kilometr rodinné domky a potom pole (+každé 2 roky v létě vysazenou řepku).

Jak nastavit loadbalancer pro složitější aplikace jako Collboard?

Mám otázku pro mé kolegy serveraře:

Virtuální tabule @Collboard.com nám žere čím dál tím víc prostředků na serveru a stálé navyšování CPU a RAM je dlouhodobě a pro další znásobení uživatelů neudržitelná. Nastavuju tam cluster s více běžícími node vlákny, avšak narazil jsem na otázku, jakým způsobem řešit rootování v rámci load-balancingu.

Naše aplikace je v tomhle smyslu trochu specifická – představte si, že každá tabule je něco jako chatovací místnost. Jednu tabuli tak zatím nedokáží obsluhovat dva servery – do databáze by se vše zapsalo, ovšem real-time změny by se mezi dvěma skupinami uživatelů obsluhovanými dvěma servery nepropagovali v reálném čase.

Nemám s tímto typem problému úplně zkušenosti, proto se ptám na optimální strategii řešení:

1/ Změnit kód aplikace tak, aby nebyla závislá na stavu paměti v Node, ale aby se všechny změny propagovali do in-memory tabulky v MySQL databázi případně jiné realtime databáze.

2/ Jednotlivé instance Node propojit mezi sebou napřímo a pokud bude potřeba, posílat informace mezi nimi.

3/ V Loadbalanceru nastavit to, aby routoval podle URL a stejná tabule bude obsluhovaná vždy jednou instancí Node.

(Tohle řešení by asi nebylo úplně robustní, pokud by existovala nějaká naprosto gigantická tabule s mnoha tisíci uživateli (předpokládám, že to bude hlavní důvod, proč má většina sdílecích appek limit maximálního počtu uživatelů v rámci jednoho dokumentu))

4/ Rootováná do konkrétního API si klient vybere sám. Ty pak mohou běžet na separátních subdoménách api1.collboard.com, api2.collboard.com,…

Možná se ptám trochu hloupě a ani jedna z těch možností není to ono, mám s loadbalancováním zkušenosti pouze v případě jednodušších aplikací, kdy je vytvoření clusteru naprosto instantní a jednoduché.

Moc mě zajímají i širší odpovědi se širším pohledem na věc; případně články videa úplně cokoliv, kde bych mohl hlouběji proniknout do návrhu tohoto problému.

Díky moc za za rady!

Montessori pedagogika na Collboard.com

Na @Collboard.com jsme dnes přidali plugin pro výuku matematiky podle Montessori pedagogiky. Mohli jste ho vidět již před Vánoci v rozpracovaném stavu, dnes by však měl být již plnně dokončený a funkční.

V zásobníku můžete najít všechny potřebné objekty pro prostředí:
Červeno-modré tyče, Perlový materiál, Karty s čísly, Sudá a lichá, Sčítací proužková tabulka, Stovková tabulka, Seguinova tabulka, Známková hra a Zlomky.

Doufáme, že se vám takovéto rozšíření bude hodit a že i učitelé, kteří neučí Montessori matematiku některé funkce ocení.
Plugin najdete pod názvem Montessori prostředí v kategorii Matematika.

(Jednodušší) JS Proxy pro neexistující metody a hodnoty

JavaScript má utilitu Proxy, kdy můžu jakýkoliv objekt obalit a když na jeho instanci následně volám kteroukoliv metodu nebo přistupuji k jakýmkoliv datům, vše jde skrz funkci definovanou při vytváření Proxy obalu.
Mám nějaký původní objekt a ten mám obalený Proxy objektem. A až tento obalený objekt používám.

Existuje však nějaký způsob, jak tuhle funkcionalitu zabudovat už do původního objektu (bez nutnosti dále ho obalovat), kdy, pokud budu přistupovat k definované metodě, dostane se vyhodnocování do definované metody; pokud budu přestupovat k nedefinované metodě, dostane se vyhodnocování k nějaké univerzální proxy metodě?