Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
Na iVysílání lze zhlédnout všechny díly kultovního sci-fi seriálu Červený trpaslík.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl v březnu 5,33 % (Windows -4,28 %, OSX +1,19 %, Linux +3,10 %). Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 24,48 %. Procesor AMD používá 67,48 % hráčů na Linuxu.
Společnost Apple slaví padesáté narozeniny. Založena byla 1. dubna 1976.
FreeTube, desktopový klient pro YouTube využívající lokální API, byl vydán ve verzi 0.24.0. Toto velké opravné vydání implementuje SABR (Server-Based Adaptive Bit Rate), což řeší část nedávných problémů s načítáním videí z YouTube, a aktualizuje základní komponenty jako Electron nebo přehrávač Shaka Player.
Je tu opět apríl. O víkendu zmizel kamion s 12 tunami tyčinek KitKat. Firmy to využívají k aprílovým žertům. Groupon má super akci. Koupíte 1 tyčinku a dostanete 100 zdarma. Ryanair si přelepil letadla. Šéf Outlooku se ptá, proč mají v baráku 14 beden tyčinek KitKat (𝕏). Prusa Research představuje Prusa Pro ACU a vysvětluje proč přílišné sušení škodí vaším filamentům. Telefon Sony Xperia má miliónnásobný zoom (𝕏). PC.net představil Super Ultrabox 2600 se zajímavými parametry. Další aprílové novinky například na April Fools' Day On The Web.
Představím vám, jak děláme unit testy v našem projektu v Ruby on Rails (Rails). Předpokládám, že víte, co je gem a fixtures;) Svůj rozporuplný názor na jazyk Ruby si nechám na závěr.
Motivace
Nedávno jsme začali dělat s kamarádem Petrem na našem dalším magickém projektu - Hlídačky.cz. Jedná se o veselý komunitní portál, kde si rodiče mohou najít někoho na hlídání dětí - hlídačku. Zatím máme jen informační stránku a nabíráme hlídačky. Portál spustíme do měsíce.
Oba už máme nějakou delší praxi v RoR, ale testy jsme moc nepoužívali. Přesto jsme si uvědomili, že u tohoto projektu je hlavním pilířem bezpečnost uživatelů a plynulý chod. Navíc jsme došli do fáze, kdy už člověk nestíhá sledovat, co dělal ten druhý nebo se nepamatuje celý kód.
A tady nám hodně pomohly testy. V drtivé většině případů nám odchytily chyby ještě dříve než jsme na ně sami narazili. Např. změna metody u modelu měla za následek 500 error u několika stránek (funkcionální testy).
MiniTest
Od Ruby verze 1.9 se sice používá Test::Unit, ale pod kapotou už fičí Minitest::Unit. Přesto stále můžete používat
require 'test/unit'
aniž byste něco museli přepisovat.
Pro integraci do Rails:
gem install minitest-rails
rails generate mini_test:install # vygeneruje minitest_helper.rb v adresáři test
A už můžeme psát test. Jako příklad jsem si vybral test modelu Sitter. Hlídačkám říkáme sitterky:)
Zábava začíná se syntaxí MiniTestu (MiniTest::Spec), který se liší od Test::Unit. Syntax MiniTestu je nicméně volitelná a stále se mohou používat asserty.
Test::Unit
assert_equal 10, Array.new(10).size
MiniTest::Unit MiniTest::Spec
Array.new(10).size.must_equal 10
Věřím, že tento příklad zaujmul mnohé honiče nad syntaxí nebo lidi co viděli Cucumber:)
Vytvoříme první tes v test/unit/sitter_test.rb
require 'minitest_helper'
class SitterTest < MiniTest::Rails::ActiveSupport::TestCase
test "friends_that_used_sitter" do
parent = parents :parent_sandra # nacteme rodice z fixtures
sitter = sitters :sitter_will # nacteme hlidacku
sitter.friends_they_used_her(parent).must_equal [parents(:parent_petr)]
parent = parents :parent_sandra
sitter = sitters :sitter_rick
sitter.friends_they_used_her(parent).must_be_empty
end
end
Na prvním řádku se nastavuje testovací prostředí včetně fixtures. Potom si vytvořime test modelu Sitter pomocí třídy MiniTest::Rails::ActiveSupport::TestCase. Zatím obsahuje jen jednu metodu. Ta testuje metodu friends_they_used_her modelu Sitter. V tomto konkrétním příkladě se zeptáme hlídačky Willa, jakým kamarádům rodiče Sandry, hlídala děti. Ano, naše hlídačka má trochu divné jméno Will. Will hlídal pouze Petrovi, který je kamarád Sandry. Proto testujeme, zda-li je tomu tak.
V druhém případě se ptáme Hlídačky Ricka, jestli hlídal děti nějakému kamarádovi Sandry. On nehlídal nikomu. Na témeř posledním řádku se ujištujeme, že pole kamarádů je prázdné.
Pro spuštění všech unit testů:
rake test:units
Osobně mi přišel výstup málo veselý a silně doporučuju odkomentovat jeden řádek v test/minitest_helper.rb
require "minitest/pride"
Vůbec bych nevěřil, že tak málo barviček může vnést do mého života tolik radosti.
Tohle byl pouze jeden z příkladů. Testů tam máme samozřejmě více:) Lehkým nedostatkem je, že testovací data máme ve fixtures. Může se stát, že do fixtures přidáme dalšího rodiče, který bude kamarád se Sandrou. Touto nevinnou úpravou už se nám ale pokazí testy.
Bohužel vytvářet všechna data za běhu testu v metodě setup mi přijde zase redundantní, protože rodiče potřebujeme nakonfigurovat i ve funkcionálních testech.
Co používáte vy na unit testy v Rails?
Poznámka na konec:
Osobně bych šel do staticky typovaného jazyka s odvozováním typů, abychom se vyhli těm nejtriviálnějším chybám. Potom co jsem přečetl knihu Metaprogramming Ruby, často mívám deprese z DuckTypingu a strach z toho, co mi za objekt přijde jako paramater metody. Bude to mít metodu, co potřebuju? Bude ji mít i po spuštění tohoto příkazu? Má smysl žít ve světě, který je postaven na konvencích?
Na druhou stranu Ruby má gem skoro na všechno a ušetří moře času, syntax s underscores je nádherná a přehledná, každý problém už řešil někdo přede mnou (google). Komunita je taky velká a veselá.
PS: hledáme veselé mamky z Brna, které bychom chtěli pozvat na kafe a ukázat jim to. Potřebujeme si s někým popovídat, abychom vědeli, co tam máme změnit, vylepšit atd. Kdybyste o někom věděli, dejte mu odkaz na Hlídačky.cz.
Tiskni
Sdílej:
Osobně bych šel do staticky typovaného jazyka s odvozováním typů, abychom se vyhli těm nejtriviálnějším chybám.Statický typový systém může odhalit docela dost chyb – cituji z popisu jazyka Ur/Web, který je určen pro tvorbu spolehlivých webových aplikací:
The signature of the standard library is such that well-typed Ur/Web programs "don't go wrong" in a very broad sense. Not only do they not crash during particular page generations, but they also may not:
- Suffer from any kinds of code-injection attacks
- Return invalid HTML
- Contain dead intra-application links
- Have mismatches between HTML forms and the fields expected by their handlers
- Include client-side code that makes incorrect assumptions about the "AJAX"-style services that the remote web server provides
- Attempt invalid SQL queries
- Use improper marshaling or unmarshaling in communication with SQL databases or between browsers and web servers
Ač to vypadá zajímavě, je to teprve na začátku. Jen dva díly tutoriálu, reference manuál nejde. Osobně bych potřeboval knihovnu pro napojení na Facebook, něco jako ORM atd. To univerzum knihoven je příliš malé.
Ten HelloWorld ocsigenu nevypadá z nejpřívětivějších:) Ale to je taky tím že už jsem spoustu let zvyklý na jiné jazyky...
http://ocsigen.org/howto/helloworld
open Lwt
open Eliom_content.Html5.D
open Eliom_service
open Eliom_parameter
open Eliom_registration.Html5
let main_service =
register_service ~path:["hello"] ~get_params:unit
(fun () () -> return (html (head (title (pcdata "Hello World of Ocsigen")) [])
(body [h1 [pcdata "Hello World!"]])))
import Happstack.Server
main = simpleHTTP nullConf $ ok "Hello, World!"
Statický typový systém může odhalit docela dost chybNebo taky nemusi. Pokazde kdyz udelate
void x(void *p) {
...
some_struct* t = (some_struct*)p;
...
}
...jde type checking do pr...kenny vohrady.
Suffer from any kinds of code-injection attacksTo by se ten jazyk musel ale používat na všechno a řetězce v něm být pouhé texty, ne kód jako například SQL příkazy nebo javascript a kvůli některým vlastnostem by to v podstatě nemělo být ani HTML. To už by mi přišlo jako docela hezký framework. Nicméně s těmito vlastnostmi přichází neflexibilita. Tudíž je ten jazyk prakticky bez šance získat výrazný podíl na webových aplikacích a je vhodný jen pro určitou škálu projektů.
To by se ten jazyk musel ale používat na všechno a řetězce v něm být pouhé textyAno, on se používá na všechno – generuje se z něj C kód pro server, SQL pro databázi, HTML a JavaScript pro klienta.
Array.new(10).size.must_equal 10 není MiniTest::Unit ale MiniTest::Spec. assert právě naopak je součást MiniTest::Unit. To musí vypadat ta aplikace teda, když netušíte ani takovýhle základní fakt. Snad se v tom kolega vyzná líp.
describe a it pro "okomentování testů" a uvnitř použít klasický assert. Tahle možnost se mi líbí pro integrační testy a hojně jí využívám.
Jinak jako důkaz se můžete podívat na testy Rails. Ačkoliv jsou všechny přepsány do MiniTestu, používají klasický assert (schválně).
Lepší?
Máte pravdu. Tušil jsem, že tam budu mít chyby; bylo to psáno v rychlosti:) "must_equal" je v
MiniTest::Spec a ne v MiniTest::Unit. Opravím to.