Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.
Sníh roztál a roztávají i bastlíři. Žene se na nás celá řada konferencí a seminářů technického rázu. Zajímá vás, jaké? Pak se připojte k 60. Virtuální Bastlírně, tedy k veřejné diskuzi bastlířů, techniků, učitelů i vědců. Jako vždy přijde na přetřes spousta novinek ze světa hardwaru, softwaru i bizáru. Na začátek lze očekávat hardwarová témata, tedy například nový KiCAD 10, nové akcelerátory LLM s nízkou spotřebou, nejvíce fosforeskující
… více »IuRe (Iuridicum Remedium) v rámci programu Digitální svobody zveřejnila analýzu dopadů a efektivity systémů ověřování věku v digitálním prostoru, která srovnává implementace ověřování věku v Austrálii, Velké Británii a Evropské unii.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.3 (𝕏, Mastodon). Přehled novinek a vylepšení v poznámkách k vydání.
Byla vydána nová verze 14.4 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Databáze DuckDB (Wikipedie) byla vydána ve verzi 1.5.0. S kódovým názvem Variegata (husice rajská). Přináší řadu vylepšení, včetně nového ergonomičtějšího CLI klienta nebo podporu pro typ VARIANT a vestavěný typ GEOMETRY.
V pátek 6. a sobotu 7. března proběhl v pražském sídle Nejvyššího kontrolního úřadu (NKÚ) Hackathon veřejné správy 7.1. Publikovány byly vytvořené aplikace. V kategorii projektů rozvíjených z krajského kola zvítězil tým „Mackokládi“. Čtyři středoškoláci ze Dvora Králové uspěli s aplikací KompaZ. Jde o digitálního průvodce, který pomůže s rychlou a srozumitelnou orientací v životních i krizových situacích „krok za krokem“. Aplikace
… více »QGIS, svobodný desktopový GIS, byl vydán v nové hlavní verzi 4.0. Změny zahrnují několik nových analytických a editačních funkcí, rozšíření podpory 3D, více možností úprav uživatelského rozhraní či mnoho dalších zlepšení použitelnosti. Řada 3.44 má aktualizace plánovány do září.
Dan Blanchard vydal knihovnu pro Python chardet v nové verzi 7.0.0. S novou verzí byla knihovna přelicencována z LGPL na MIT. Souhlasili s tím všichni přispěvatelé? Dan Blanchard souhlasy vůbec neřešil. Zaúkoloval umělou inteligenci (Claude), aby knihovnu zcela přepsala a výslovně jí nařídil, aby nepoužila žádný LGPL kód. Dan Blanchard tvrdí, že se jedná o clean room design. Protistrana argumentuje, že umělá inteligence byla trénována
… více »Andy Nguyen si na svou herní konzoli PlayStation 5 (PS5) pomocí exploitu Byepervisor nainstaloval Linux (Ubuntu). V Linuxu si spustil Steam a PS5 tak proměnil v Steam Machine. Na PS5 může hrát hry, které jsou vydané pouze pro PC a jsou na Steamu [Tom's Hardware].
Už mě nebavilo neustále přepisovat koncovky v e-mailech co generujeme na Hlidacky.cz, tak jsem googlil páté pády křestních jmen a nalezl jsem.Nacpal jsem to zrůdně to jednoho velkého pole a uělal z toho gem - to kdyby se to někomu hodilo. Je to můj první pokus o gem - šlo by to udělat líp? Věřím že to i někdo další bude potřebovat a pak si vzpomene že o tom četl na abclinuxu:)
Tiskni
Sdílej:
% ruby benchmark.rb
Rehearsal ---------------------------------------------------------
using local variable: 62.000000 0.030000 62.030000 ( 62.237641)
using constant: 0.000000 0.000000 0.000000 ( 0.000484)
----------------------------------------------- total: 62.030000sec
user system total real
using local variable: 61.900000 0.000000 61.900000 ( 62.282676)
using constant: 0.000000 0.000000 0.000000 ( 0.000466)
Jak to zlepšit - dát to pole někde mimo tu metodu?
class CzechNamesVocative
NAMES = { "Marie" => "Marie",
"Jana" => "Jano",
... }
def self.do(name)
NAMES[name]
end
end
Takhle se ti to načte do paměti při startu aplikace, namísto toho, abys při každém volání té metody vytvořil 70k řetězců a pak je nechal GC zase uvolnit.
Super, to zní skvěle, předělám to.
Jak jen spouštíš ten benchmark?
Benchmark.bmbm do |x|
n = 1000
x.report('using local variable:') { n.times { CzechNamesVocativeLocal.do('Petr') } }
x.report('using constant: ') { n.times { CzechNamesVocativeConstant.do('Petr') } }
end