Portál AbcLinuxu, 13. května 2025 19:08

Dotaz: Design programů pro OS linux

25.1.2009 03:56 Huge
Design programů pro OS linux
Přečteno: 528×
Odpovědět | Admin

Zdravím všechny programátory pod Linuxem, mám takovouto otázku:

Můj spolužák mi tvrdí, že programy pro linux jsou kvalitní v tom, že existuje spousta utilit, které stačí vhodně propojit pomocí pipe a podobně a ušetří se tak práce vývojáře.

Mějme příklad, chci udělat aplikaci, který zadám url a slovo a tato aplikace prohledá textový obsah zadané stránky a přečte mi větu ve které se dané slovo nachází. Jde to skutečně tak ideálně, že:

Pomocí jádra internetového prohlížeče načtu a naparsuju obsah stránky, pomocí grap-u, či awk nebo kdovíčeho vyhledám větu a pomocí Opensource frameworku / knihovny Festival ji nechám přečíst (případně nějaký děj při nenalezení).

Nebo jsou toto jen propagační výplody přátel Linuxového stolu? Pokud by to byla pravda, mohl by to být skutečně pádný argument proč přejít programovat pod OS Linux.

Díky za odpovědi (prosím bez urážek).

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.1.2009 05:12 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Design programů pro OS linux
Odpovědět | | Sbalit | Link | Blokovat | Admin

Hm, kdybys to chtěl udělat jako shellový one-liner (tzn. propojení utilit pomocí pipe, jak říkáš), asi by ses hodně zapotil, ale myslím, že by to šlo; jen to parsování a hledání v HTML by byl oříšek, XSLT by to snad umělo (grep nebo awk bych nepoužil, protože HTML není obyčejný text).

Vtip je v tom, že stránky se nenačítají ani neparsují "jádrem internetového prohlížeče" (např. Firefoxu), třeba na stažení něčeho z webu slouží obvykle wget nebo curl. Podívej se na man stránku wgetu, ať máš lepší představu, co v GUI (ani ve Windows) prostě nenaklikáš.

Konkrétně u tvého příkladu bych si dokázal mnohem lépe představit několikařádkový skript třeba v Pythonu.

Vtipné je, že pod jinými operačním systémy lze programovat úplně stejně jako v Linuxu, protože ty nástroje jsou open-source a když se s trochou snahy zkompilují pro Windows, tak běží i ve Windows (a ony už zkompilované jsou, stačí najít a stáhnout). Ale asi bude lepší použít "původní" platformu :-) Tím mám na mysli unix-like, jestli to bude Linux, BSD nebo něco jiného (Mac?) už nechám na tobě :-)

Tedy, nijak jsi nezmínil ten operační systém, který chceš s Linuxem porovnávat, ale předpokládám, že to jsou právě Windows. (Kdo jiný by se mohl takhle ptát...)

Osobně si myslím, že pokud člověk není beznadějně srostlý s Visual Studiem, měl by alespoň zkusit nenechat se omezovat Windowsy. Řečeno samozřejmě s nadsázkou. Koneckonců, kdo se chce stát programátorem, jistě se někdy s Linuxem nebo podobným systémem setká a měl by aspoň tušit, o čem to celé je.

25.1.2009 09:26 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Design programů pro OS linux
jen to parsování a hledání v HTML by byl oříšek, XSLT by to snad umělo (grep nebo awk bych nepoužil, protože HTML není obyčejný text)

Jenom doplním, existuje AWK pro parsování XML (xgawk), pomocí kterého by to šlo asi tak na 2 řádky.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
25.1.2009 22:48 Franta Hanzlik
Rozbalit Rozbalit vše Re: Design programů pro OS linux

A browsery lynx, elinks a nejspíš i další mají dump mód, při kterém na stdout vypíší formátovaný text bez html značek, takže parser už se jimi nemusí zabývat:

lynx -dump URL|parser|...

Ale v řadě případů (např. čtení z tabulek apod.) bude lepší parsovat HTML zdroják.

 

26.1.2009 03:56 luky
Rozbalit Rozbalit vše Re: Design programů pro OS linux
Odpovědět | | Sbalit | Link | Blokovat | Admin
Argumentem muze byt rozsahlost standardni vybavy, ale ne samotna moznost spojovani, protoze to podobne jde skoro vsude. A taky zalezi na tom, co si predstavujete pod pojmem programovat.
26.1.2009 19:48 Huge
Rozbalit Rozbalit vše Re: Design programů pro OS linux

Já jsem si vědom, že většina uxinových utilit lze (někdy s jistými potížemi) portovat i na OS jiných typů (Win).

Ten rozdíl měl být spíše v tom, že pokud na Windows bude chtít program používat nějaké utility, budou zabalené v instalačním souboru a nainstalují se pro každý program zvlášť do jeho složky. Zatím v Linuxu v aplikaci zůstane jen jádro a zbylé části se instalují pomocí balíčkovacího systému, čímž se zabrání několikanásobné instalaci.

26.1.2009 19:57 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Design programů pro OS linux
No, ale to dělá pod windows téměř každý program.

Jinak: pokud si např. nainstalujete cygwin, tak ten téměř vynucuje aby byl v systému jen jeden.
In Ada the typical infinite loop would normally be terminated by detonation.
26.1.2009 22:25 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Design programů pro OS linux
Ano tento rozdíl Lin-Win také existuje.
26.1.2009 06:52 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Design programů pro OS linux
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pletete programovací nástroje a programovací platformu. Jak bylo řečeno, nástroje jsou poněkud univerzální a měly by jít použít víceméně na jakékoli platformě. Že mají tyto nástroje kořeny spíš na unixových OS je věcí tradice. Každopádně Váš příklad není propagační ale jde udělat jednoduše v jakémkoliv vysokoúrovňovém jazyce, snad i v microsoftím power shellu.
In Ada the typical infinite loop would normally be terminated by detonation.
26.1.2009 08:04 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Design programů pro OS linux
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tvoja otazka je spravna a uplne na mieste, neviem preco by mala niekoho urazat. Je vsak velmi vseobecna a rovnako vseobecne mozu byt aj odpovede. Napokon, tyka sa iba jedej malej -- hoci vyznamnej - casti progranovania v unixe. Ak Ta tato tema skutocne zaujima, kup si skvelu knihu Umeni programovani v Unixu, obohati Ta bez ohladu na to v akom progranovacom jazyku ci operacnom systeme vyvijas.

Co sa tyka pouzitia jednoucelovych toolov pomocou rur, resp. ich spajanie v shellovych skriptoch, najuzitocnejsie su (aspon pre mna) nie tak na samotne "kodovanie", ako na kopec prilezitostnych uloh okolo. Jedna ilustracia: nedavno som potreboval zistit 10 najvacsich balikov v Java programe, skoncilo to takto:
for X in `find . -type d | fgrep -v .svn` ; do echo `cat ${X}/*.java 2>&1 | wc -c`": $X" ; done | grep -wv 0 | sort -r -n -k 1,1  | head | nl

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.