Scala pro práci s XML a JSON daty nabízí hned několik užitečných nástrojů. Pro XML je to Scala.XML ze standardní knihovny a pak výborná Anti-xml (o obou těchto knihovnách jsem psal už dříve). V případě JSONu pak můžeme použít lift-json, který býval nedílnou součástí web-frameworku Lift, ale nedávno byl vyčleněn do osamostatněn projektu json4s.
Parsování XML a (špatného) HTML je nejspíš moje životní poslání. V nekonečné snaze najít ideální nástroj pro zpracování těchto formátů jsem napsal další mikro-knihovnu. Tentokrát jde o XPath.scala – jednoduchý Scala wrapper nad Jaxa XPath API, který se v mnohém se podobá mojí dřívější PHP kreaci Atrox\Matcher.
Kosinová podobnost (cosine similarity) je míra podobnosti dvou vektorů, která se získá výpočtem kosinu úhlu těchto vektorů.
Toho se dá využít pro zjištění podobnosti dvou dokumentů. V takovém případě budou vektory reprezentovat četnost jednotlivých slov (popřípadě n-gramů, tagů nebo jakékoli jiné feature).
Jednou ráno jsem někomu chtěl napsat, ale nevěděl jsem jestli bude vzhůru. Hned mě napadlo, že z jeho tweetů můžu snadno zjistit, kdy obvykle chodí spát a kdy obvykle vstává. Tak jsem napsal tenhle malý & jednoduchý skript a hned nato ho publikoval na githubu.
Jiří Knesl píše jak jednoduše zrychlit stránkování v MySQL pomocí speciálního modifikátoru SQL_CALC_FOUND_ROWS, který zjistí kolik záznamů by dotaz vrátil, kdyby neobsahoval LIMIT a OFFSET. Problém je, že tato technika nefunguje jako zázračný všelék a existují případy, kdy jsou dva samostatné dotazy rychlejší než jeden s SQL_CALC_FOUND_ROWS.
Skript, který jsem použil na vygenerování koláčových grafů
Atrox\Arr je PHP třída inspirovaná frameworkem kolekcí jazyka Scala, která implementuje funkcionální neměnnou kolekci.
V projektu chanminer používám pro dotazování relační databáze ScalaQuery, která vrací instance TupleN neboli uspořádané n-tice (a tak je to správně). Někdy je potřeba převést tuto n-tici na objekt určité třídy, která má všechny potřebné metody a popisná jména členských proměnných.
V projektu
Chanminer jsem měl nějaké funkce f, g,
h typu A => Boolean a potřeboval jsem je skládat
jako kdyby šlo o Boolean hodnoty, např: f && (g || h).
Bylo by pěkné, kdyby to šlo takhle přímo, ale bohužel FunctionN nemá
žádnou z metod &&, !!, unary_!
nebo ^.
Tak dlouho jsem se hrabal v cizím HTML kódu, scrapoval, crawloval, parsoval, až jsem si napsal Atrox\Matcher, který tuhle práci velice usnadňuje.
Po téměř třech letech vyšla finální verze PHP 5.4, která přináší mnoho novinek. Tady jsou ty nejzajímavější.
String interpolation (SIP-11) je jedna z mnoha novinek jazyka Scala plánovaných pro verzi 2.10. Je to vlastnost typická pro dynamické jazyky, kdy můžete přímo do stringového literálu uvést proměnné, které jsou následně interpolovány, ale v podání Scaly je maximálně zobecněná, aby dala programátorům co největší moc.
Groovy je skriptovací jazyk, který běží v JVM, vychází z Javy a dokáže využívat všechny knihovny v ní napsané. Oproti staticky typované Javě je typovaný dynamicky (podporuje tedy duck typing). Navíc do samotného jazyka přidává několik vylepšení inspirovaných Pythonem, Ruby nebo Smalltalkem, které mohou zásadně zvýšit produktivitu psaní kódu za cenu vyšší runtime režie. Výkon výsledné aplikace je mnohem menší než ekvivalent napsaný v čisté Javě, což je způsobeno zmíněným dynamickým typováním, které vnitřně hojně využívá reflexi. Přesto může být použití Groovy výhodné. Když vezmeme v potaz kratší čas vývoje a možnost používat všechny Javovské knihovny, může se z Groovy stát „lepidlo“, které rychle pospojuje několik komponent.
StripBot je jednoduchý robot, který sleduje RSSka několika online stripů a komiksů a na všechny novinky upozorňuje na Twitteru.
StripBota jsem původně napsal v březnu 2009 v Groovy, po víc než roce jsem ho přepsal do Javy a konečně před několika měsíci ho přepsal do Scaly.
Tady je kompletní zdroják.
Scala má skvělý REPL (interaktivní konzoli). Celkem často, než se pustím do programování „načisto“, tak začnu experimentovat v REPLu. Někdy bych výsledek těhle pokusů chtěl zachovat, ale z historie se vytahuje dost nepohodlně. Proto jsem nepsal skript, který historii REPLu uloží do souboru.
Jmenuji se Karel Čížex, v síti také známý jako kaja47 - tak trochu spisovatel, trochu programátor, trochu webař, milovník divné hudby atd atd.