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í
×
dnes 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 0
včera 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 10
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 26
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 2
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 50
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
16.2. 16:26 | Bezpečnostní upozornění

Byla vydána verze 1.1.0e kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění 20170216 byla opravena závažná bezpečnostní chyba CVE-2017-3733.

Ladislav Hagara | Komentářů: 1
16.2. 13:03 | Pozvánky

GNOME hackaton proběhne v Brně na FIT VUT v Red Hat Labu (budova Q) v pondělí 20. února od 15:00. Registrace není nutná, ale pokud dáte na FaceBooku vědět, že plánujete dorazit, pomůže to s plánováním.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 658 hlasů
 Komentářů: 52, poslední 13.2. 12:45
Rozcestník
Reklama

Dotaz: Vnořené pole array

16.6.2013 14:52 bugme | skóre: 16 | blog: bugme
Vnořené pole array
Přečteno: 540×

Jak zapsat něco takového?:

SERVERS=()

SERVERS[ftb][name]='Name'

SERVERS[ftb][service]='abc.jar'

SERVERS[ftb][dir]='/var/abc'

 

SERVERS[van][name]='Van'

SERVERS[van][service]='van.jar'

SERVERS[van][dir]='/var/van'


Řešení dotazu:


Odpovědi

16.6.2013 15:22 ZAH | skóre: 41 | blog: ZAH
Rozbalit Rozbalit vše Re: Vnořené pole array
Doba zápočtů ? Jseš si jist že potřebuješ pole. Například v javě.
public class TestServers {

    private HashMap< String, Map< String, Object>> servers;

    protected HashMap< String, Map< String, Object>> getServers() {
        if (servers == null)
            servers = new HashMap< String, Map< String,Object>>();
        return servers;
    }
    
    public Object getValue(String server,String key){
        return getServers().get(server).get(key);
    }
    
    public void putValue(String server,String key,Object value){
        getServers().get(server).put(key, value);
    }
}
16.6.2013 15:30 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Vnořené pole array
Počítám, že se jedná o bash.

Nejlepší způsob jak pracovat s vícerozměrnými poli je nepoužívat bash a naučit se Python, Ruby, prostě libovolný normální programovací/skriptovací jazyk s podporou rozumných datových typů.

Druhým způsobem je emulovat vícerozměrná pole klíči s oddělovači, jako třeba SERVERS['ftb#name']='Name'. Pochopitelně pak nejde jednoduše udělat nic jako SERVERS['ftb'].
When your hammer is C++, everything begins to look like a thumb.
17.6.2013 20:54 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Resp. ono není problém přejít na python :) Jen jak na to pole??

17.6.2013 21:06 potato
Rozbalit Rozbalit vše Re: Vnořené pole array
Python samozřejmě má normální vysokoúrovňové datové struktury jako asociativní pole:
SERVERS = {
   'ftb': {
       'name': 'Name',
       'service': 'abc.jar',
       'dir': '/var/abc',
   },
   'van': {
        'name': 'Van',
        'service': 'van.jar',
        'dir': '/var/van',
   },
}
Můžeš to klidně plnit i postupně nebo jakkoli...
17.6.2013 22:13 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Když jsme u toho. Půjde vůbec použít v konzoli. -> příkaz /var/script start ....? Jak zachytim to slovo start.

18.6.2013 08:08 potato
Rozbalit Rozbalit vše Re: Vnořené pole array
Co?
18.6.2013 09:03 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

No když mám bash script, tak mohu volat /var/script start. Zachtim si slovo start a případně i nějaké argumenty. Jak toto udělat u toho pythonu?

Tarmaq avatar 18.6.2013 09:11 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Vnořené pole array
Don't panic!
18.6.2013 09:17 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

nefunguje.

NameError: name 'argv' is not defined

18.6.2013 09:19 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Joo už to mám díky. :)

17.6.2013 18:21 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Ano jedná se o bash, viz štítek.

 

Jde o to, že mám script na spuštění serveru a tyto proměnné jsou potřeba pro server. Aktuálně mám dva.

Proto jsem chtěl toto pole a pak to projet přes 'foreach' a spustit po nastartování serveru.

 

Samozřejmě mám pak nějaké funkce jako restart stop, které chci pouštět pomocí restart name, tedy: restart van nebo restart ftb

18.6.2013 11:18 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Jak v python spustit tyto příkazy:

pgrep -u root -f $SERVICE > /dev/null

ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVERJAR

 

Pořád to u pomlček řve něco o mezerách :/

18.6.2013 16:10 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Vnořené pole array
from __subprocess__ import print_function

import subprocess
import re

SERVICE="foobar"
NULL=open("/dev/null", "wb")

#pgrep -u root -f $SERVICE > /dev/null
subprocess.call(["pgrep", "-u", "root", "-f", SERVICE], stdout=NULL)

#ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVERJAR
# ^^^ neni lepsi pgrep screen?
SERVERJAR="hamspam"
for line in subprocess.check_output(["ps", "ax"]):
  if re.search(SERVERJAR, line):
      print(line, end='')
jinak viz dokumentace
When your hammer is C++, everything begins to look like a thumb.
18.6.2013 16:14 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Vnořené pole array
První řádek má být from __future__ import print_function
When your hammer is C++, everything begins to look like a thumb.
18.6.2013 18:53 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Díky. Ale to zapisování v pthon je nějak divné-

Potřebuji spustit tennto příkaz:

 

'cd ' + getServer()['dir'] + ' && screen -dmS ' + getServer()['screen'] + ' java -Xms512M -Xmx2048M -XX:MaxPermSize=1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -jar ' + getServer()['service'] + ' nogui'

Řešení 1× (bugme (tazatel))
18.6.2013 19:36 potato
Rozbalit Rozbalit vše Re: Vnořené pole array
Tak přesně tohle nedělej. Namísto cd můžeš prostě změnit ten adresář (os.chdir). Zbytek prostě nastrkej do pole, každý argument jeden prvek, a nekombinuj stringy.

Pokud by to mělo být něco složitějšího, tak bych už vůbec nematlal příkazy ze stringů, ale vytvořil wrapper shell skript, který má dostat jako argumenty věci, které se mění, všechny složitosti dal do shell skriptu a ten prostě spustil z pythonu s argumenty, které budou pouze ty hodnoty, které se mění.
18.6.2013 20:56 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Vnořené pole array

Díky za rady :)

Ještě jedna věc. Jak spustit příkaz s parametrem po přihlášení?

Potřebuji spustit soubor /etc/init.d/minecraft startAll

18.6.2013 21:50 potato
Rozbalit Rozbalit vše Re: Vnořené pole array
Zahodit /etc/init.d skript, najít příčetný spouštěcí mechanismus, tedy systemd unitu, protože každý normální program už ji má, tu povolit přes systemctl enable.

Pokud neexistuje, vytvořit systemd unitu. Vyžaduje přepsat ten minecraft skript -- který zjevně ani nefunguje s normálním SysV start/stop, ale potřebuje jakési speciální příkazy -- do něčeho použitelnějšího.

Pokud není ochota cokoli udělat pořádně, tak to fakenout (a nedivit se, že je to rozbité):
[Unit]
Description=Whatever
# Put dependences here.

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/minecraft startAll
nebo tak něco.

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.