abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 16:22 | Nová verze

Byla vydána verze 0.11.0 softwaru pro statistickou analýzu dat GNU PSPP (Wikipedie), svobodné alternativy k proprietárnímu softwaru IBM SPSS Statistics (Wikipedie). Vedle několika vylepšení a oprav chyb jsou řešeny také 2 bezpečnostní chyby CVE-2017-10791 a CVE-2017-10792. O týden později byla vydána verze 1.0.0 přinášející pouze aktualizaci překladů. Proč verze 1.0.0 a ne například 0.11.1? Dle vývojářů jsou důvody následující:

… více »
Ladislav Hagara | Komentářů: 0
včera 10:35 | Komunita

Na blogu Oracle se objevila zpráva o tom, že plánovaná verze Java EE 8 bude uvolněna jako open source (referenční implementace a compatibility kit). V současné době je uvolněna jen Java SE (standard edition) pod licencí GPLv2 v podobě OpenJDK (Open Java Development Kit), kterou začal v roce 2006 uvolňovat Sun.

Max | Komentářů: 4
21.8. 23:55 | IT novinky

Google na YouTube oficiálně představil Android 8.0 Oreo. Přehled novinek v příspěvku na blogu věnovaném vývojářům.

Ladislav Hagara | Komentářů: 26
21.8. 16:44 | Zajímavý článek

Po téměř 3 měsících od vydání třetího čísla publikoval Michal Špaček na svých stránkách čtvrté číslo newsletteru věnovanému bezpečnosti, bezpečnému vývoji převážně webových aplikací a bezpečnosti uživatelů. Jedná se současně o číslo poslední: "Nepíše se mi to lehce, a trvalo to, než jsem to ze sebe dostal, ale tohle je poslední newsletter v této podobě. Ani jsem ho nestihl pojmenovat a už jsem ho zabil. Nezbývá mi tolik času, abych každou událost, novinku a změnu v prohlížeči detailně popisoval tak, jak bych v newsletteru chtěl, mrzí mě to".

Ladislav Hagara | Komentářů: 2
21.8. 07:00 | Nová verze

Byla vydána diaspora* ve verzi 0.7.0.0. Jedná se o svobodný software, který slouží jako osobní webový server pro poskytování služeb sociální sítě (Wikipedie). Přehled novinek v příspěvku na blogu a na GitHubu. Sociální síť diaspora* byla před pěti lety předána komunitě.

Ladislav Hagara | Komentářů: 0
21.8. 06:00 | IT novinky

Společnost Hardkernel stojící za jednodeskovými počítači ODROID představila na YouTube minipočítač určený pro domácí cloud ODROID-HC1 vycházející z ODROID-XU4. Minipočítač s kovovou krabičkou, do které stačí vložit 2 a půl palcový disk, lze koupit za 49 dolarů. ODROID-HC1 je stohovatelný.

Ladislav Hagara | Komentářů: 39
20.8. 16:22 | Nová verze

Byl vydán DB Browser for SQLite (sqlitebrowser) ve verzi 3.10.0. Nejnovější stabilní verze této grafické nadstavby nad relačním databázovým systémem SQLite (Wikipedie) přináší například integraci s DBHub.io, tj. platformou pro sdílení SQLite databází. Podrobnosti na GitHubu.

Ladislav Hagara | Komentářů: 2
20.8. 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 1
19.8. 13:44 | Zajímavý software

Evropská komise vydala novou verzi 1.4.0.1 svého open source v Javě naprogramovaného softwaru pro online průzkumy EUSurvey. Online dotazníky lze vytvářet na stránkách Evropské komise nebo si lze software stáhnout (zip a war) a nainstalovat lokálně. Zdrojové kódy jsou k dispozici pod licencí EUPL (European Union Public Licence).

Ladislav Hagara | Komentářů: 0
18.8. 23:55 | Komunita

Ubuntu 17.10 (Artful Aardvark) bude ve výchozím stavu zobrazovat Dok (Launcher). Jedná se o rozšíření GNOME Shellu Ubuntu Dock. To bylo forknuto z rozšíření Dash to Dock. Ukázka na YouTube [reddit].

Ladislav Hagara | Komentářů: 8
Těžíte nějakou kryptoměnu?
 (5%)
 (2%)
 (18%)
 (76%)
Celkem 374 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: Jak udržet proměnné ve funkci

    26.10.2012 12:14 Dave
    Jak udržet proměnné ve funkci
    Přečteno: 369×
    Ahoj, mám dvě funkce, v té první mám nastaveny pomocí "local" všechny proměnné aby se nedostaly mimo tu funkci (aspoň jsem v tom omylu doposud žil) jenže výsledek je: 111222333. Proč není jen 333? Dík za radu
    #!/bin/bash
    
    function fce_one ()
    {
       local SKP ABV SSD
       SKP="111"
       ABV="222"
       SSD="333"
    
       fce_two "$SSD"
    }         
    
    
    function fce_two ()
    {
       echo "$SKP $ABV $SSD"
    }         
    
    fce_one

    Řešení dotazu:


    Odpovědi

    26.10.2012 12:45 kuka
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    No on bash je svet sam pro sebe...

    This is documented in the Bash manual:

    "Local can only be used within a function; it makes the variable name have a visible scope restricted to that function and its children." The ABS Guide author considers this behavior to be a bug.
    26.10.2012 12:48 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Proč není jen 333?

    Viz vysvětlení odkazující na man bash.

    všechny proměnné aby se nedostaly mimo tu funkci

    Jaký je účel? Obvykle přeci stačí, aby funkce označila svoje proměnné jako local a nepoškodila tak cizí.

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    26.10.2012 13:00 kuka
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Ten jednoduchy priklad v dotazu to ukazuje celkem jasne. Funkce fce_two se bude chovat ruzne podle toho, jestli se zavola z fce_one nebo odjinud. Tzn. implementacni zmena ve fce_one ma dosah mimo fce_one, coz je klasicka nocni mura kazdeho programatora. Ale samozrejme bash neni urcen na vetsi veci a tak to tolik nevadi.
    26.10.2012 13:16 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci

    Já jsem totiž (mylně) předpokládal, že se bash korektně (z pohledu jiných jazyků) popere s překryvem lokální/globální proměnné. Pak by totiž celý problém byl v tom, že se používají globální proměnné. Bohužel, následující kód

    #!/bin/bash
    
    fce1() {
    	local GLOBAL
    	GLOBAL="prepsano"
    	fce2
    }
    
    fce2() {
    	echo "GLOBAL = $GLOBAL"
    }
    
    GLOBAL="prvni"
    fce2
    
    GLOBAL="druhy"
    fce1
    fce2

    vypíše

    GLOBAL = prvni
    GLOBAL = prepsano
    GLOBAL = druhy

    což je poněkud matoucí.

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    26.10.2012 14:52 l4m4
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Mylný pohled je především to, že je lokální/globální znamená ve všech jazycích totéž. Ve skutečnosti existují v různých jazycích lexikální, dynamické a různé obskurnější rozsahy platnosti.

    Bash má naprosto běžný dynamický rozsah platnosti, tj. lokální proměnná je omezena na dobu vykonávání funkce, nikoli na její tělo. Tvůj příklad ukazuje, že funguje korektně.
    29.10.2012 15:46 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Proměnné shellu nejsou jako proměnné programovacího jazyka. Můžete se na to dívat tak, že funkce je vlastně něco jako samostatný podskript (byť vykonávaný stejným procesem) a má svůj vlastní environment, který je sdílen s "rodičem" kromě proměnných explicitně označených jako lokální. Pak to chování dává smysl.
    26.10.2012 13:07 Dave
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Díky a můžu to napsat třeba v php? Pokud ano, jde ta funkce pak zavolat a spustit na pozadí?
     fce_one &
    Díky
    26.10.2012 13:18 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Díky a můžu to napsat třeba v php? Pokud ano, jde ta funkce pak zavolat a spustit na pozadí?

    Ano. Ano. (A co doopravdy potřebujete?)

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    26.10.2012 14:55 l4m4
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Ne. Ne.

    Tělo funkce v shellovém skriptu je tvořeno příkazy shellu, nikoli náhodného programovacího jazyka. (A na co se doopravdy ptáš?)
    26.10.2012 15:07 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Ne. Ne.

    :-D Já si myslím, že stejné funkcionality jako je ukázka jde dosáhnout i v PHP. A funkci shellu lze pustit na pozadí.

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    26.10.2012 16:12 l4m4
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Já myslím, že ,to` je funkce v shellovém skriptu.

    Na druhou otázku lze, pravda, odpovědět i ano, pakliže se nejprve zkoriguje podle odpovědi na první.
    26.10.2012 15:54 Dave
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Tak chci programovat něco v linuxu, bash je kupodivu k "ničemu" respektivně k něčemu zcela jínemu jen ne k nějakému velkému projektu. No tak to zkusím v PHP ale ještš jsem nezačal a už je problém :-(
    26.10.2012 16:08 Kit
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Bash má svůj význam a dají se v něm napsat hezké aplikace. Práce s proměnnými je u něj občas trochu podivná, ale o to lépe pracuje se soubory, resp. jednoduše přesměruje požadavek na jinou aplikaci, která to za něj udělá. "shell" je vlastně jen skořápka, která skoro nic nedělá.

    PHP zkusit můžeš, také jsem si v něm napsal pár lokálních aplikací. Také můžeš zkusit Python. Tím výběr nekončí, záleží jen na tom, co chceš programovat.
    26.10.2012 16:19 l4m4
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Ano, bash je k něčemu jinému. Bash je totiž shell.

    Shell je příkazové rozhraní operačního systému, tedy především věc umožňující spouštět interaktivně programy. Moderní shelly mají různé vychytávky, včetně podmínek, cyklů a pod., ale pořád jde o totéž.

    Pokud ti někdo tvrdil, že shell (jakýkoli) je programovací jazyk vhodný pro systém řízení letového provozu, tak ti lhal.
    26.10.2012 16:22 l4m4
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Jo, a PHP taky není jazyk pro velké projekty. A především ne, pokud ten projekt nemá nic společného s webem. Pokud ti někdo tvrdil, že je, tak ti lhal.

    Obecně bych doporučil zkusit Python, ale bez znalosti typu projektu těžko říci.
    rADOn avatar 29.10.2012 15:14 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Jak udržet proměnné ve funkci
    Bash je shell, takto podstatně více "k něčemu" než cmd.exe. Pokud chceš něco "programovat" tak popiš co řešíš a poradíme v čem to udělat.

    BTW rada zdarma: neříkej "bash neumí" sic riskuješ že ze sebe uděláš vola. Ber to jako otázku vlastního místa v historii. Bash je starý, starší než wydle. Princip unixového shellu ještě o hodně více. Ergo cokoliv řešíš už řešil milion lidí před tebou a je značně pravděpodobnější že něco děláš blbě než že to "nejde".

    Mám to vyzkoušený na vlastní kůži, za svých mladých linuxáckých let jsem takhle "vynalezl" syslog, awk a xargs :-) Wydláci mají naučenou takovou zvláštní dichotomii – všechno buď musí být blbovzdorný grafický klikátko, nebo se musí programovat těmi nejhrubšími protředky. V unixu je obojí extrémní případ kterému je radno se vyhnout.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    30.10.2012 08:59 Ivan
    Rozbalit Rozbalit vše OT: Re: Jak udržet proměnné ve funkci
    Jo tohle je peklo i v jinych shellech. Treba takovej korn shell je v tomhle pripade mimoradne zaludny. Nejcasteji rozsirena verze ksh89, ktera neni kompatibilni s posix standartem se chova jinak nez verze ksh93, ktera je soucasti RHEL. A aby toho nebylo malo tak jeste navic zavisi na tom, jestli za jmenem funkce uvedes kulaty zavorky anebo ne.

    Smir se s tim, ze programovani v shellu ma za sebou desitky let vyvoje a to sebou prinasi ruzne kostlivce.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.