Po delší odmlce, další várka informací o životě balíčků ve Fedoře
 
Těšit se můžete na prohlížeč obrázku vimiv, nové manuálové stránky TLDR, na virtuální stroj jazyka .NET, na sbírku hratelných her na implementaci ranges pro jazyk C++ a další
 

Aplikace

Knihovny

Knihovny-rust

reimplementace některých starých, ale stále používaných hašovacích funkcí do jazyka rust

Hry – nejveselejší tučňáci na Linuxu

Koprovka

Černá kronika

Paběrek

 

Aplikace

electron-cash – A lightweight Bitcoin Cash client

https://bugzilla.redhat.com/show_bug.cgi?id=1526429
https://src.fedoraproject.org/rpms/electron-cash

$ sudo dnf install electron-cash
$ electron-cash # nebo kliknout v menu

Populární python3+qt5 bicoinová peněženka, bohužel nepodporuje více měn, ale na druhou stranu je dobře navržená a zdá se být bezpečná

Pozor! Bitcoinová peněženka obsahuje majetek! Jediná kontola, že aplikace dělá co má, je mezi námi navzájem! To nejjednodušší co může každý uživatel Fedory udělat je ověřit, že balíček opravdu staví z oficiálních zdrojů a není tam žádný patch typu:

if (prevod_penez) then
  zmen_cil_do_me_penezenky()
end

A to samozřejmě po celé délce voláni, přes java.net.openURL až po systémové volání open_net_socket:)

tldr – command line client for tldr

https://bugzilla.redhat.com/show_bug.cgi?id=1520915
https://src.fedoraproject.org/rpms/tldr

$ sudo dnf install tldr
$ tldr jmeno_programu_ke_zobrazni_napovedy
$ # eg:
$ tldr tldr #ekvivalent oblibeneho man man
$ tldr tar

Klient pro „formát“ tldr, který se snaži nahradit (či spíše doplnit) stále používané, ale občas trošku neohrabané, občas trošku nepřehledné manuálové stránky man.
Napsáno v pythonu, s defaultně zapnutým obarvováním. Tldr manuálové stránky jsou čteny z webu, se všemi plusy (stále aktuální) i mínusy. S tím že největší mínus – režim offline – má tldr vyřešen příjemnou cache. Nakonec – celý obsah všech součastných tldr nápověd (a je jich již hodně) má ani ne pár mega, a tldr si ho celý drží pro offline použití.
Rozhodně to nepovažuji za náhradu manuálových stránek, ale zcela jistě je to velmi vítaný doplněk, neboť spíše než detailní přepínače obsahuje základní i pokročilé ukázky a různé vychytávky – neboť je nepíší autoři aplikací, ale komunita uživatelů.

Jak jeuvedeno v nadpisu, tento program je klientem do příkazové řádky. Pro databázi tldr existuje spousta GUI klientů nebo klientů v prohlížeči a samotné tldr manuálové stránky jsou exportovány do pdf, html, javadocu a cokoliv prapodivného co vás napadne.
Data pro tldr podporují jak linux, tak windows, tak solaris. Nejen klienty, ale i s podklady – pokud se implementace či použití liší, rozdíl je vidět. Tento tldr klient navíc umožňuje i na Linuxu prohlížet stránky pro win a podobně.
Zdroje pro tldr prebírají oblíbenou a jednoduchou md syntaxi. Například https://raw.githubusercontent.com/tldr-pages/tldr/master/pages/linux/adduser.md, takže hurá přispívat!

thonny – Python IDE for beginners

https://bugzilla.redhat.com/show_bug.cgi?id=1503175
https://src.fedoraproject.org/rpms/thonny

$ sudo dnf install thonny
$ thonny # nebo v menu

Opravdu jednoduché vývojové prostředí pro učení se skriptování v pythonu. Našeptávátko a doplnovač kódu (ctrl+mezerník) jsou na dostatečné úrovni a i s debuggerem se pracuje příjemně.

vimiv – An image viewer with vim-like keybindings

https://bugzilla.redhat.com/show_bug.cgi?id=1517006
https://src.fedoraproject.org/rpms/vimiv

$ sudo dnf install vimiv
$ vimiv  /usr/share/backgrounds/fedora-workstation/himalayan-desert-mountains.jpg 
$ vimiv  /usr/share/backgrounds/images/default.png 


Zarytí příznivci vimu zajásají. Méně zarytí, ale nadšení ocení hlavně defaultně zapnutou nápovědu pro příkazy (ctrl+c : comamnds).
Klikáním se sice dá přesouvat mezi obrázky, ale z klávesnice je to větší legrace. Kdyby to bylo přímočaré, to by nebylo dostatečně alá vim!
Pokud tedy chcete přeponou obrázek z klávesnice, tak jedině přes příkaz! (řešení je na konci článku, a napovím, šipky to nejsou:)

Zřejmou výhodou je, že pokud chcete pouze koukat (čili nezadáváte příkazy), pak je v okně pouze ničím nerušený obrázek

Knihovny

range-v3 – Experimental range library for C++11/14/17

https://bugzilla.redhat.com/show_bug.cgi?id=1519760
https://src.fedoraproject.org/rpms/range-v3

Formální návrh pro přidání podpry rozsahuu do standardní knihovny C++ – https://ericniebler.github.io/std/wg21/D4128.html. Výrazně vychází z rozsahů pro jazyk D (https://dlang.org/phobos/std_range.html)

Jednoduše řečeno, rozsahy (ranges) jsou technika, kdy můžete pracovat s nějakou posloupností jako by to bylo pole, ale pole ve skutečnosti není naplněno, ale používá se – bez dopadu na výkon,jako by naplněno bylo. Hezký test je nadeklarovat pole čísel, které se vám nevejde do fyzické paměti RAM – pokud uděláte regulérní pole, program buď spadne nebo začne stroj swapovat. S „range“ nikdy tolik paměti ani nealokuje.
S Fedorkou, vždy používající nejnovější GCC (f28 bude mít již gcc8), můžete nyní vyzkoušet….

Základní ukázka „poslupnosti“ jak je implementována pro bash

$ for x in {1..10}; do echo $x ; done
1
2
3
4
5
6
7
8
9
10

Překvapivě bash naráží na limit pro sekvence:

for x in {1..1000000000}; do  : ; done
bash: brace expansion: failed to allocate memory for 1000000000 elements

Čili implementace rozsahů v bashi vůbec není spravaná „range“, neboť range by rozhodně neměla být omezena pamětí, ale jednoduchá expanze. Na pochopeni ranges to ale snad postačí.

Knihovny-rust

Po uvedení generátoru rust rpm balíčků – rust2rpm (dnf install rust-packaging) se rpm balíčky s rezavými knihovnami vynořují jako houby po dešti.
Mimochodem, pokud procházíte cargo soubory ručně, pak vězte, že jsou to prostě tar.gz archivy. A dokumentace z https://crates.io/crates/JMENO je většinou plně dostatečná.

rust-loopdev – Setup and control loop devices

https://bugzilla.redhat.com/show_bug.cgi?id=1519448
https://src.fedoraproject.org/rpms/rrust-loopdev

$ dnf install rust-loopdev

Tenhle balíček přímo přidává pro rust ve Fedoře podporu loop zařízení s funkcionalitou podobnou příkazu losetup.

Cargo.toml: loopdev = "0.2.0"
use loopdev::LoopControl;
let lc = LoopControl::open().unwrap();
let ld = lc.next_free().unwrap();
ld.attach_file("test.img").unwrap();

rust-tokio-io – Core I/O primitives for asynchronous I/O in Rust

https://bugzilla.redhat.com/show_bug.cgi?id=1516560
https://src.fedoraproject.org/rpms/rust-tokio-io

$ sudo dnf install rust-tokio-io
Cargo.toml: tokio-io = "0.1.4"

Toto není knihovna, kde bych uvedl ukázku na jeden řádek. Zájemci nechť pročtou https://cafbit.com/post/tokio_internals/.
Nakonec, podíváte-li se na node.js, pak je celkem zřejmé, že moderní jazyk bez něčeho podobného prakticky existovat nemůže.
Zajímavé by bylo srovnání výkonu node.js a tokio-io. Vzhledem k ceně za unwraping v rustu bych byl v pokušení, vsadit na node.js… moment… to je javascript.. né, nebyl 🙂

reimplementace některých starých, ale stále používaných heshovacích funkcí

Review Request: rust-md5 – MD5 hash function

https://bugzilla.redhat.com/show_bug.cgi?id=1518644
https://src.fedoraproject.org/rpms/rust-md5

$ dnf install rust-md5

Kdo by neznal md5 sumu? Jednu z nejstarších a pořád používaných, rozhodně ne bezpečnou, ale za to rychlou a „hezky vypadající“ (čti krátkou:) hašovací funkci. Tato knihovna ji přidává do rustu bez nutnosti se vázat na C implmentace, nedej bože na externí volání příkazu md5sum.

Cargo.toml: md5 = "0.3.6"
let digest = md5::compute(b"abcdefghijklmnopqrstuvwxyz");
assert_eq!(format!("{:x}", digest), "c3fcd3d76192e4007dfb496cca67e13b");

Review Request: rust-adler32 – Minimal Adler32 implementation for Rust

https://bugzilla.redhat.com/show_bug.cgi?id=1519891
https://src.fedoraproject.org/rpms/rust-adler32

$ dnf install rust-adler32
Cargo.toml: adler32 = "1.0.2"

O něco novější hašovací algoritmus než md5, zato s některými limitacemi (nevhodný pro krátké vstupy). I když je překonaný (crc32c), stále se používá například v zlib.

Wrapovaci funkce:

let digest = adler32::adler32<R: io::Read>(reader)

udělá co je potřeba. PS: nezkracovat na radler, mohli byste místo haše dostat něco jiného.

Hry: Nejveselejší tučňáci v Linuxu:

$ sudo dnf install supertux warmux extremetuxracer supertuxkart

Hry jsou docela velké (+-100mb každá), ale však jsou to také jedny z nejslavnějších a nejdéle vyvíjené, a znovu vytvářené pod dalšími jmény, a dále forkovány a předělávány, hry pro linux!
Povšimněte si, že jednotlivé postavičky warmuxu a supertuxkartu jsou založeny na různých svobodných lozích – linuxový tučňák, gimpovská liška, bsd býk, suse chameleoni a podobně…

$  warmux

https://src.fedoraproject.org/rpms/warmux
Hra na motiv starých dobrých červíku. Roztomilost červíků v žádném případě nepřekonává, ale hratelnost má blízkou, a nabrat GNU býkem BSD démona, kdo by neodolal!

$  supertux

https://src.fedoraproject.org/rpms/supertux
Další 2d hra, pro změnu supermario like plošinovka:

Proč zachraňovat princeznu, když můžete jen hrabošit bitcoiny a zachraňovat rodnou kru.

$   etr ## kdo ma porad do priakzove radky psat extremetuxracer...

https://src.fedoraproject.org/rpms/extremetuxracer
Přechod do 3D,

Místo panduláčka na bobech řídíte tučňáka na břiše.
Ehm, kdo by to chtěl dělat že…
ovšem pokud jste viděli sérii Zmrzlá planeta (Frozen Planet) od Davida Attenborougha, (rozhodně stojí za to!),
tak si určitě vybavíte nejlepší skok na břich – „perfect belly jump“ a celý extremetuxracer najednou získá zcela nový rozměr a navíc začne být hoden svého jména.

$  supertuxkart

https://src.fedoraproject.org/rpms/supertuxkart
Zavodní automobilový simulátor. Přeháním:) Spíše než o simulaci tu jde o legraci, což je podtrženo i výběrem aut – například bonusový létající koberec. Ale legraci si s tím užijete neskutečnou!

Koprovka

.NET

https://copr.fedorainfracloud.org/coprs/g/dotnet-sig/dotnet/

To, že se Microsoft rozhodl portovat polomrtvý .NET na linux se obecně celkem ví. Také se ví, že je .NET součástí Red Hat Enterprise Linuxu, ale máně se již ví že se s ním ve Fedroce můžete hrát z živého kopr repositáře https://copr.fedorainfracloud.org/coprs/g/dotnet-sig/dotnet/

Čili:

$ sudo dnf copr enable @dotnet-sig/dotnet
$ sudo dnf install dotnet-sdk-2.0
$ dotnet --version

A hurá do vývoje ASP ať se už jendou zbavíme té Javy:)
jen pozor, na rhelu jsou dostupné jak .NET 1.0, tak 1.1 i 2.0 a jsou dodávány jako softwareové kolekce. Čili po instalaci:

$ scl enable rh-dotnetcore10   dotnet --version
$ scl enable rh-dotnetcore11    dotnet --version
$ scl enable rh-dotnet20    dotnet --version

Ve Fedorce je pouze .NET 2.0 a je instalován „normálně“.

Také pozor, v .NET 1.X je příkaz dotnet new bezparametrový, ale ve 2.X bere parametr. Například dotnet new console. Následný dotnet run v adresáři projektu (čili tam kde jste běželi dotnet new) je bezezměny.
Sestavit .NET v otevřeném prostředí (i když sám .NET je pod MIT licencí), neni zrovna jednoduchá záležitost, a proto si ještě na C# v oficiálním repozitáři chvilinku počkáme, ale dotnet-sig dělá co může, a již velkou část závislostí do Fedory dostal.

Černá kronika

OmegaT

https://src.fedoraproject.org/rpms/OmegaT

Ismael Olea se rozhodl vzdát balení OmegaT kvůli příliř rychlému vývoji v usptreamu a tudíž příliš častému přidávání závislostí. Spolu s Omegou tedy odejdou i závislosti: gnudfif, htmlparser a vldocking.

OmegaT je pravděpodobně nejvyspěleji (a rozhodne nejvyvýjenější a nejpoužívanější) lokalizační nástroj s otevřeným kódem. I když ji velmi chválím, musím také ze zkušenosti zmínit, že v porovnání s proprietárními řešeními je velmi velmi pozadu. Když už nic jiného, je vidět, že překlad software není v hledáčku OS vývojářů, a že za překlad se platí a v celém tomto byznyse jsou pořád velmi velké peníze.

Ačkoliv je to java aplikace, jejichž spouštění občas nebývá zrovna přímočaré, tak sekce pro stahovnání přímo ze stránek OmegyT funguje skvěle. Presto je škoda ze Fedora o tuto aplikaci přichází a doufejme že se jí někdo ujme… Navíc icedtea-web, jako jediná otevřená implementace javaws nefunguje s částečně podepsanými aplikacemi (a nikdy nebude)…[čtěte icedtea-web OmegaT nespustí:( ]

Jako vývojář se s překladatelským software setkávám spíše z druhé strany – snažím se dohnat kde koho aby kde co přeložili. Občas se nabídne i nějaký dobrovolník, ale pravdou zůstává, že překlad udělaný bez překladové paměti (jejíž výbornou implementaci je OmegaT) je časem třeba vyhodit a udělat znovu. Zato překlady udržované pomocí podobných aplikací se jen stále adaptuji a zůstávají konzistentní.

Poběrky z Fedorky

Hádam, že si někdo mohl všimnout, že nám nějak uteklo Prosincové vydání Poběrků. Bohužel, Franta Zatloukal pomalu ale jistě opouští post šéfredaktora mojefedora, a tudíž opouští i práci na Poběrkách z Fedorky. Protože já Poběrky nejen rád píšu, ale i rád čtu, rád bych tímto zlákal dobrovolníka či dva, aby se se mnou ve vydávání Poběreků po cca měsíci střídali (neb měsíc je to, na čem se nám tento seriál +- ustálil). Navíc já mam jakousi podmnožinu programů, které rad zkouším, a proto by to chtělo, aby alespoň každé druhé Poběrky byly v jiném duchu, a tudíž by zajímaly i někoho jiného než mě…

Kdyby si to chtěl někdo vyzkoušet: Vetšinou se koukám na poslední review balíčků pomocí těchto dotazů do bugzily:

poslední upravené review bugy
poslední vytvořené, ale již zavřené review bugy

A následně kouknu na to, co mě zaujme, a není nakonec pouhý šum, jako například omylem otevřený a zavřený bug a tak. Následně samozřejmě balíček ozkouším.

Druhý zdroj bývají balíčky, na které mě někdo upozorní, kde dělám review, které zabalím, které jsem někoho přesvědcil zabalit, které se promílají na mejling listech Fedory a nebo o které jsem prostě nějak zakopl (jako teď .NET)

Paběrek

Možná mi něco uniklo, ale vimvi opravdu potřebuje k přechodu na další/předchozí obrázek 7 kláves?

ctrl c : prev
ctrl c : next

Ovšem abych programu vimiv neškodil – je to schopný a překvapivě použitelný a velmi stabilní prohlížec obrázků. A přiznám se, že až na next/prev se mi zabydledl v používaných apliakcích.


Krásný rok 2018!

J.