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 14:44 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 2
    včera 13:11 | Zajímavý projekt

    Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.

    NUKE GAZA! 🎆 | Komentářů: 2
    16.1. 16:44 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.

    Ladislav Hagara | Komentářů: 2
    16.1. 15:11 | IT novinky

    Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.

    Ladislav Hagara | Komentářů: 15
    16.1. 13:55 | IT novinky

    Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny

    … více »
    Ladislav Hagara | Komentářů: 0
    16.1. 02:22 | Nová verze

    D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    16.1. 02:00 | Nová verze

    Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    15.1. 19:22 | Humor

    CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.

    NUKE GAZA! 🎆 | Komentářů: 3
    15.1. 12:33 | IT novinky

    Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.

    Ladislav Hagara | Komentářů: 3
    15.1. 12:11 | Komunita

    Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (5%)
     (0%)
     (10%)
     (20%)
     (3%)
     (6%)
     (2%)
     (11%)
     (41%)
    Celkem 481 hlasů
     Komentářů: 12, poslední 14.1. 21:12
    Rozcestník

    Dotaz: Bash a PHP

    16.11.2012 07:30 omorok | skóre: 2
    Bash a PHP
    Přečteno: 909×
    Přeji dobrý den, Mám pár dotazů. Předem upozorňuji, že nejsem programátor...

    Dávám si dohromady mylý monitorovací počítač (Raspberry PI), který mi bude odchytávat data z regulace (momentálně co se kdysi vyráběla a do budoucna ji vyměním za Arduino). Z regulace mi po RS 485 přichází každou sekundu naměřená data (teploty,stav čerpadla...). V Raspberry tyto hodnoty sleduji (pomocí Bash skriptu), zpracovávám a ukládám podle potřeby na disk. Zároveň mi na Raspberry běží i web-server s PHP. A mám dotazy: 1) Kam mám uložit spuštění Bash skriptu, aby se po výpadku napětí spustil? pokud to přidám do ~/.profile, nebo do ~/.bashrc, tak se skript spustí až se přihlásím (např. přes SSH)? 2) Jak posílat data ze skriptu Bash do PHP? Co jsem pátral, tak vím o dvou možnostech: 1- přes textový soubor. Bash bude např každou sekundu přepisovat určený soubor a PHP podle potřeby bude z něho číst. Nevýhoda- myslím si, že disk dlouhodobě takovéto ukládání nevydrží (v raspberry je SD karta). ideální by bylo, pokud by takový soubor neexistoval na disku, ale jen v paměti RAM, ale to nevím jak a kde udělat. Nebo 2- možnost přes pojmenovanou rouru. Ale to je navýhoda, pokud PHP nepotřebuje data (nikdo si stránku neprohlíží), roura se nevyprázdní a tím je Bash skript zastaven- nepřípustné.

    Děkuji za pomoc...

    Odpovědi

    16.11.2012 08:56 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    1. Asi bych v tomto případě si to dal spuštění s plnou cestou a & na konci /etc/rc.local (případně lze použít ještě nohup).
      V /etc/rc.local:
      /cesta/k/programu &
      Ale asi bude lepší a někdo to dále doporučí použít update-rc.d nebo ruční vytvoření linky.
    2. Soubor do paměti lze uložit nejjednodušeji, tím že se uloží /dev/shm/muj_nazev_souboru, ale mně přijde lepší si vytvořit vlastní ram-disk, vytvořit adresář např. /mnt/moje a do fstab dát řádek none /mnt/moje tmpfs defaults,size=10m 0 0
      Ovšem asi bude nutné nějak zamykat zápis/čtení. Třeba SQLite a datový soubor v paměti by to mohlo vyřešit samo.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 22.11.2012 12:37 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Já bych do tmpfs připojil celé /tmp (a dal mu trochu vyšší limit na velikost). Na takovém stroji to bude asi nejjednodušší a ušetří to flashku se systémem.

    Statistiky bych pak jednou za čas odzálohoval mimo paměť. Jak často záleží na spolehlivosti systému a důležitosti dat.

    Jinak bych se vykašlal na Bash a napsal to celé v PHP s tím, že ten první skript by se spouštěl stejně jako ten Bash script. Může to zjednodušit propojení těch dvou skriptů (generování a parsování toho souboru -- json_encode/decode) a odstranit případnou duplikaci některých částí.
    #!/usr/bin/env php
    <php
    ...
    Spouštění pak lze připsat rovnou do /etc/inittab. V případě pádu se zajistí i nové spuštění toho scriptu.
    Hello world ! Segmentation fault (core dumped)
    22.11.2012 15:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Klidně by to tak šlo, držel jsem se toho rozdělení…, ale autora už to nezajímá :-).
    K tomu: tmpfs připojil celé /tmp, mám jen zkušenost, že ten limit na /tmp je zrádný, nebo musí být velký (třeba 6GiB) aby to bylo v pohodě v dnešní době. Při nižších hodnotách se klidně může stát, že při vytváření například video DVD se to celé zauzlí či sletí (samozřejmě je to věc aplikací, ale už jsem měl potíže s 2GiB /tmp z podobných důvodů).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 22.11.2012 19:09 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Už vidím jak Raspberry připojené k čerpadlu vypaluje DVD ;-)
    Hello world ! Segmentation fault (core dumped)
    23.11.2012 11:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Vytvoří z naměřených dat prezentační DVD ;-).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    23.11.2012 13:33 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Děkuji za názory. Trochu jsem byl pracovně mimo a netušil jsem jak se to tady rozvine. Zaujal mě názor, že by to psal jen v PHP. Mám k tomu jeden dotaz: Pokud chci, by se mi každou sekundu prováděli nějaké matematické operace, jak to PHP bude dělat, pokud zrovna nikdo nebude prohlížet webové stránky? Já jsem měl za to,že PHP funguje tak, že pokud vyžádám danou stránku, kde je HTML kod s PHP, tak se provede kod a odešle do prohlížeče a pak se čeká na další požadavek od uživatele...Nebo ne?
    23.11.2012 13:35 DK
    Rozbalit Rozbalit vše Re: Bash a PHP
    PHP ma i CLI :) takze treba vytvorit nekonecnou smycku
    23.11.2012 16:18 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Můžete klidně použít výše odkazované #!/usr/bin/env php (nebo podobný zápis) a psát ot normálně jako script a přidat mu 'x' oprávnění.
    PHP lze používat jako každý podobný jazyk:
     php -r 'for($i=0;$i < 10;$i++){echo "Hallo PHP - $i\n"; sleep(1);}'
    nebo
    php file.php
    kde v file.php dáte jen na začátek <?php.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 24.11.2012 11:35 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Každou minutu to můžeš zpustit z cronu. Je celkem jedno, jestli to budeš spouštět wgetem přes webový server na localhostu nebo přes CLI (command line interface, jak už jsem psal poprvé).

    PHP není jen "HTML a něco k tomu". Pokud tu aplikaci chceš napsat slušně, na tenhle přístup zapomeň. Webové aplikace jsou obvykle rozrěleny na tři části: řídící logika, model a šablony. Model je pár tříd, které reprezentují věci, se kterými aplikace manipuluje. Řídící logika rozhoduje, co se s modelem bude dít. Šablony pak jsou to "HTML a něco k tomu", které dostanou od aplikační logiky připravená data k zobrazení.

    Nehledej v tom nic složitého, je to jen o uspořádání kódu. Uděláš si třídu pro čerpadlo, tam dáš ty svoje výpočty, pak druhou na komunikaci s čerpadlem. V index.php pak jen rozhodneš, co se bude počítat, co komunikovat a nasbíraná data hodíš do pole a předáš ho funkci (šabloně), která jako jediná bude dělat echo, echo, echo,... Takle se v tom neztratíš, bude to udržovatelné a přehledné. Jak ten index.php spustíš už je celkem jedno (web server nebo CLI).
    Hello world ! Segmentation fault (core dumped)
    27.11.2012 08:56 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Děkuji za radu a v podstatě tomu rozumím. Ještě musím ověřit spouštění PHP skriptu...

    Ale zatím nevím,jak mám pracovat v php s polem.

    Z regulace mi jde toto: 2,3,33,44,55,66,9,1 ,nebo i toto: 2888,3888,89,55,10,0,0.

    Bash skript mám takto:
    while true; do										 
    	a=`head -1 /dev/ttyUSB0 | tr "," " "`			
    	b=($a)											
    	U=${b[0]}									
    	I=${b[1]}										
    	Tkol=${b[2]}									
    	Tzass=${b[3]}									
    	Tzash=${b[4]}									
    	Taku=${b[5]}									
    	Pfv=${b[6]}										
    	Rez=${b[7]}									
    	Cer=${b[8]}										
    	
    fi
    kde do proměnné $a načtu vstup z ttyUSB0 a místo čárek vložim mezery. Proměnnou $a vložim do závorek a tím určim, že je to pole a přiřadim k proměnné $b. Dále již přiřazuji k proměnným jednotlivé položky a mohu s nimi pracovat (pořítat). Jelikož v poli jsou položky určovány čákou, mohou se měnit počet čísel v jednom poli.

    V PHP načítám z ttyUSB0:
    ?php $data=fopen("/dev/ttyUSB0", "r");
    	$text=fgets($data);
    	echo ($text); #poznámka
    	fclose($data); ?
    To načte celý vstup, což je vpořádku, pokud chci jen jednu položku a zadám pole: echo ($text[1]);, tak zobrazí jen jedno číslo, nebo i čárku ze vstupu ttyUSB0. Což nepotřebuji. Umí php načíst (rozdělit) do pole podle čárek...?
    27.11.2012 09:21 Kit
    Rozbalit Rozbalit vše Re: Bash a PHP
    Josef Kufner avatar 27.11.2012 11:17 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Možností je spousta.

    Btw, malé intro.
    Hello world ! Segmentation fault (core dumped)
    13.12.2012 09:19 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Po nějaké době jsem pohnul v "programování". A potřebuji pomoci. Napsal jsem program, který by měl dělat "rutinu". Bude načítat data z USB0, převádět, počítat a ukládat do souborů. Program mi sice funguje,ale v terminálu mi vypisůjí hlášky, které netuším co je:

    Výpis z terminálu, postupně se neustále opakuje:

    zde

    a rovněž přikládám daný program:

    Zde

    Nevím, kde mám chybu.

    A mám ještě dotaz:

    Jak bylo psáno výše, mám hlavní soubor např: index.php a do něho se načítají hodnoty z externího souboru např. regulace.php . Tím je v souboru index.php jen echo,echo... A v souboru regulace.php jsou načítány aktuální hodnoty. Tento soubor se aktualizuje pomocí volání z webového prohlížeče (index.php). A pokud k tomu potřebuji přiřadit další soubor regulace0_013B.php, který je spuštěn pomocí PHP5-CLI a ten dělá rutinu v ciklu. Jak hodnoty z regulace0_013B.php dostanu do souboru regulace.php? Nebo odstraním soubor regulace.php a nahradím souborem regulace0_013B.php? Nebude to dělat problémy, pokud by tento soubor byl spuštěn přes PHP-CLI a občas (zárověň) bude volán index.php?
    13.12.2012 11:58 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a PHP
    Měl jste to položit jako nový dotaz...

    K tomu problému s Notice:, pokud pole načtete ze souboru pomocí fgetcsv, nelze zaručit, že bude vždy vytvořeno pole dané délky, resp. existence hodnot na těch indexech 1, 2, 3..., které tam natvrdo dáváte. Proto ten warning. Šlo by nadefinovat pole určité délky pomocí nějakého splněcoarray, ale možná by se to dalo zajímavé obejít pomocí array_combine($keys, $textpole). Nejprve byste si nadefinoval pole klíčů (v podstatě názvy sloupců v tom csvčku čili $keys=array("Ufve", "Ifve"...) a pak ho zkusíte zkombinovat s tím, co načtete ze souboru (zdá se mi že čtete jen jeden řádek). Ohlídá vám to i počet načtených hodnot (vyhodí exception pokud nesouhlasí) a budete k tomu moct i přistupovat pomocí symbolických jmen, takže je pak otázka jestli to vůbec bude potřeba "přelévat" do proměnných. Každopádně předpokládám, že bychom se tím vyhnuli tomu problému s potenciálně nedefinovanými indexy.
    13.12.2012 14:17 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    tak jsem se na to díval a chápu řádek:

    $keys=array("$Ufve", "$Ifve", "$Tkol", "$Tzass", "$Tzash", "$Taku", "$Pfve", "$rez", "$cer");

    Do další proměnné bych měl dostat vstup z USB0, což nevím přesně jak-možná takto:

    $data= fopen("/dev/ttyUSB0", "r"); $textpole = array($data);

    a pak to zkombinovat...

    $cele = arrya_combine($keys, $textpole);

    do dev/ttyUSBO přichází data z regulace po RS485 přes převodník co 1s.
    13.12.2012 22:09 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a PHP
    Až na ty dolary, protože tam dáváte jen jakési symbolické memotechnické názvy pro ty výsledné hodnoty, je to podobné jako proměnné, ale proměnné to nejsou, proměnnou je to pole, jeho jednotlivé prvky pak rozlišujete těmi jmennými indexy:
    $keys=array("Ufve", "Ifve", "Tkol", "Tzass", "Tzash", "Taku", "Pfve", "rez", "cer");
    Potom můžete počítat rovnou s proměnnými jakožto prvky v poli:
    $cele["Ufve"] + $cele["Ifve"]
    nebo si to převést na normální proměnné jako předtím.

    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.