- D1Rect: Nagy "hülyétkapokazapróktól" topik
- bitpork: Augusztus 2- szombat jelen állás szerint.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Fogkefe: elektromos vagy manuális?
- Magga: PLEX: multimédia az egész lakásban
- Parci: Milyen mosógépet vegyek?
- sziku69: Szólánc.
- Aggregátor gondjai, örömei, és elmélkedései
Új hozzászólás Aktív témák
-
coco2
őstag
válasz
pelyib #20099 üzenetére
Memcache kétélű fegyvert. Nem tudom stabilan tartani az alap adathalmazt. Redist nézegettem, de write-back caching nélkül félkarú óriás. Postman-ről fogalmam sincs, hogyan kellene használni. A feldolgozás háttérszálas.
Session tömbök eldobva, a következő jelentkező sql szerver memory table - van valami ismert baj velük?
-
coco2
őstag
válasz
pelyib #20097 üzenetére
Sokan használnák a szervert, és a lehető legtöbb felhasználót kellene kiszolgálni a lehető legolcsóbban. Az lenne a lényeg.
A session-ökkel játszadozni gyorsítási trükk lenne. Természetesen dobálhatok mindent valami sql szerverre, de akkor sql kapcsolatokat kell építgetni minden alkalommal, amikor klienst szolgálok ki. Ha sikerül session-ök között adatot átadnom, az sql kapcsolatokat kispórolhatom azokra a feladatokra.
De egyenlőre nem működik a példa, amit heggesztek. Wamp 2 szerver mindig ugyan azt a session id-t adja a folyamatoknak. Hiába csukom le az ablakot és nyitok újat, hiába használok 3 külön xmlhttprequest socketot javascriptből, a fene tudja mit kellene tennem, hogy adjon már egy unique session id-t - mert nem ad
-
pelyib
tag
Miert akarod ennyire logoutolni a usert? Foleg ha van mas is (" ha nem mentette az adatait") amit tud csinalni az oldalon?
Amikor w1 session-t vált s2-re, és azon dolgozik, addig egy w2 beléphet s1-re? Vagy w1 megfogja s1-et és s2-t is?
`session_write_close
` oldja a lock-t.Szoval elmeletben mukodhet, DE en nem piszkalnek egy masik sessiont, csak bajt lehet vele okozni.
Ahogy mar irtam en szetvalasztanam a session kezelest es a feature / resource elerest.
Ahogy irtad, eltarolod, h melyik sessionnek van joga eleri a streamet (resource, ha mar http). Tehat amikor le akarja kerni a streamt (gondolom egy sima HTTP GET => xhr) akkor le tudod ellenorizni, h a session hozzaferhet vagy sem ([status code 403]).
Ha a kliens ezt a 403-t kapja akkor eldonti, h rahiv a "/logout"-ra vagy kirak egy uzenetet es gombot, h "Masik helyen mar nezed, szeretnel atvaltani erre a bongeszore?".Igy csak azt kell nyilvan tartanod, h melyik session fer hozza. Nem kell masik sessionhoz nyulni.
-
coco2
őstag
válasz
pelyib #20093 üzenetére
Kérnék szépen egy sanity check-et a lenti elgondolásra.
Felírom db-be a session_id-kat, adott user name onnét tudja majd, ha már be volt loginolva. Ha be volt loginolva, session_id() és session_start() hívásokkal "átkapcsolok" a régi session-re, és a $_SESSION[]-ben beállítom, hogy session logged out (valami változót majd kitalálok rá). Aztán újabb session_id() és session_start() hívásokkal visszakapcsolok a jelenlegi session-re. Az értelme annyi lenne, hogy egy időben egy user login csak egyszer lehessen aktív. Az újat mindig engedem, a régit automatán kidobom, és bánom is én, ha nem mentette az adatait, vagy olyasmi, elveszik minden. Tanuljanak rendet a nyavajások
Ami problémákat még kutatok:
1.
Session-öket adott scriptben cserélgethetek-e kedvem szerint akárhányszor, vagy azt a technikát illegal-nak minősítik későbbi verziókban? Egyenlőre éppen teszt scriptet írok kipróbálni, de ez a környezet csak php 5-ös. Eddig annyit találtam, hogy a session váltásnál lock-ot kap a web worker, ha a session éppen foglalt. Azon még gondolkodom, hogyan is van a session csere egy futó scriptnél. Aktuális webworker w1 fut egy session id-n s1. Amikor w1 session-t vált s2-re, és azon dolgozik, addig egy w2 beléphet s1-re? Vagy w1 megfogja s1-et és s2-t is?2.
Találtam session "kinyíró" scriptet itt [link] de a magam részéről egy ilyesmit:<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
?>
egyszerűen csak túl durvának találtam. A kiloginolt session tűnik elegánsabbnak, aztán hagyni a cookie, meg session változók meg minden olyasmit time-out-re futni a saját tempójában. Vagy teljesítményben jobban jöhet ki, ha explicite gyilkolok? A cpu-matek mit mondhat erről?Köszönöm a tippeket mindenkinek.
@instantwater
A streaming nagyon lassú. Nem videó, hanem csak fényképek, amiket base64-en küldök le stringekben - alkalmasint azt is darabokban xhr-en. Jó, tudom, websocket, de nem problémamentes az sem. Szóval igen, custom a stuff. Tudok rajta barkácsolni kedvem szerint, ha valami mókás ötletet kell kivitelezni.
-
Netflix hogy csinálja?
Ott is limites az egyidőben élő streamek száma és még a pozíciót is megjegyzi.Custom streaming server implementáció szóba jöhet? Vagy esetleg valami plugint/proxyt lehet készíteni a streaming serverhez? Valamiféle APIn keresztülnlehet vele beszélgetni?
-
-
pelyib
tag
Az a "helyes megoldas" ami mukodik es lefedi az igenyeket
En kulon kezelnem a login-t es azt, h elerheti e a streamet.
Generalsz egy token, elrakod a userhez, leadod kliensnek, az bekuldi amikor a stream-t akarja elerni, server oldalon validalod a tokent.
Kliens oldalon meg kell oldani, h uj eszkozon valo bejelentkezeskor "at tudja venni a streamet". Tehat uj token + regi token invalidalasa + kapcsolat bontasa a regi tokennel.
A pontos use case-ket te tudod.
Kicsit feleslegesnek tunik egy ingyenes szolgaltatasnalvegtelen szoponak tunik
-
pelyib
tag
válasz
instantwater #20090 üzenetére
Igen.
Most vesztem el a maradek "johiremet"?
-
coco2
őstag
válasz
pelyib #20089 üzenetére
Az "aki először kezdi el" dologgal az a baj, hogy van a csajszi mobilról, haza ér, átcsüccsen laptopra, és nézi onnét tovább. A mobilon meg elfelejt kiloginolni. Szóval nem mondhatni, hogy login hijack vagy olyasmi, de akkor is, elég nehezen lehet olyat mondani weben, hogy egy user ki van-e loginolva, vagy nincs. Javascriptból betehetek az oldalra valamilyen logikai szintű pingeket ajaxxal, de az sok felhasználónál már rendesen eszi a szervert.
Ha streaming iparban tolod, esetleg van valami tipped, mi a "helyes megoldás" ?
-
-
pelyib
tag
Ha jol ertem neked az a fontos, h a stream elereset korlatozd, ezt en fuggetlenne tennem a logintol.
mert a kosarat kifizetni az a pont, ahol úgyis minden egybe fut
En arra gondoltam, hogy az osszes login (ugyan attol a usertol) ugyan abba a kosarba pakol. Tehat csak 1 kosarad (streamed) van. Nalad abban mas a helyzet, h csak azt engeded tovabb pakolni a kosarat (nezni a streamet) aki eloszor kezdi el.(btw, olyan helyen dolgozok ahol streaming a fo termek
)
-
coco2
őstag
válasz
pelyib #20085 üzenetére
Ingyenes streaming jellegű a szolgáltatás. Ha 15 felhasználóm van valójában, azt jobb szeretném a statisztikában 15 regisztrált felhasználónak látni, és nem egynek. Webáruház másmilyen kontextus. Webáruházban tök8 hányszor loginol ugyan az a user, mert a kosarat kifizetni az a pont, ahol úgyis minden egybe fut. Nálam a "kosár" nem kerül pénzbe, és nem csak egy valaki viheti el. De amúgy köszönöm a tippet.
@instantwater
Én inkább azon gondolkodom, hogy nem engedem loginolni. Session sql memory table-ben lenne. -
-
-
pelyib
tag
Akkor mar valami cache (local vagy replicalt ha tobb gepes). Amugy tuti a logint kell tiltani? Nem lenne egyszerubb az adott muveletet "in progress"-be rakni + session Id? Hasonlo a webaruhazak bevasarlo kocsija.
Illetve arra is gondolj, ha "A session" megsemisul (private ablak, es bezarja kilepes nelkul) kliens oldalon akkor azzal mi fog tortenni server oldalon. -
coco2
őstag
válasz
instantwater #20083 üzenetére
A "B" terv az, hogy pakolok azonosítót sql szerverre, és barkácsolok magamnak ellenőrzést. Az "A" terv pedig az, hogy előtte még megkérdezem, nem fogom-e újra feltalálni a kereket?
Például hogy valamelyik superglobals változó ki van találva ilyesmire, és nem kell sql szerveren memory táblákat olvasgatni. Alaposan gyorsabb lenne.
-
-
coco2
őstag
Sziasztok!
Jellemzően mi van arra webszerver környezetben kitalálva, hogy egy felhasználó ne tudjon duplán loginolni?
-
wibemm
friss újonc
Köszi a gyors választ....Nekem 3 gyerek mellett ez nem ilyen egyszerű. A hibákat javítottam, és a bindinggel megy a mysqli is és kipróbáltam PDO-val az is jó.
Köszi a segítséget wibemm -
válasz
wibemm #20077 üzenetére
Szia,
Mindig === t használj a == helyett.
Soha ne használd a @ operátort, mert némítja a hibákat, azokat pedig kezelni vagy megelőzni kell.
Használd PDOt a mysqli helyett, a mysqli elavult.
Ne echozd a $queryt.
Használj parameter bindinget (kérdőjelek) mert így lehet injektálni az SQLt.
Ha kódot illesztesz be, kérlek használd a kód formázást.
-
wibemm
friss újonc
Sziasztok !
Tudna valaki segíteni? Van egy MySQL adatbázisom, két táblával. Hiba nélkül felkonnektálok és php-vel szeretnék új sorokat beszúrni, de valamiért nem megy. Ugyanez a phpmyadminból sql paranccsal műkszik.
Itt a kódrészlet :
if($error_data==false ) {
echo "<div class='message notice'>Sikeres űrlapkitöltés!</div>";
$db = @ new mysqli("localhost","root","","alma");
if($db->connect_errno) {
echo "<div class='message error'>Adatbázis hiba: ", $db->connect_errno." ".$db->connect_error;
exit();
}
echo $query = "INSERT INTO `regist` ('compnev','kapcsolattarto')VALUES ('$company','$name')";$db -> query($query) or die("Hiba");
}
}Ez jön vissza:
Sikeres űrlapkitöltés!
INSERT INTO `regist` ('compnev','kapcsolattarto')VALUES ('Kombinat','Gaz Ella')Hiba -
ace05
senior tag
Helló!
A változtatni szeretnék valamit wp oldalamban. Már megtaláltam a firefox elem vizsgálatával, hogy mit kellene átírnom. Azt hol tudnám megnézni, hogy melyik fájlt kell átírni, mert most én vagyok vak, de nem találom.
-
pigmeus
tag
Sziasztok, az alábbi funkciót szeretném beépíteni a programomba egy kereséshez, de nem működik és sajnos ötletem sincs, holott másnak működik:
$(function(){
$(".search_text").keyup(function(){
var text = $(this).val();
if(text != ""){
$.ajax({ url: "fetch.php", type: "post",dataType: "text",data: {search:text}, success: function(data){
$(".result").html(data);} })}
else{
$(".result").html('');}})})Nem tudom, hol írhattam el, nem dob semmi hibát és a keresés se fut le. Van esetleg valakinek ötlete, hogy lehetne ezt debugolni?
-
WaterWave
veterán
Szuperul működik, köszi srácok
-
WaterWave
veterán
válasz
instantwater #20066 üzenetére
megvan, szuper
-
-
-
pelyib
tag
válasz
WaterWave #20062 üzenetére
Szerintem a "./data"-ba rakja a feltoltott fajlokat.
Ezt meg ujrafogalmazom, mert teljesen ertelmetlen lett a vegeredemny
:
Csinal egy volum-t abba a mappa ahova tolt a rendszer es a NAS-n mappat megosztja a host mappajat.Szoval ugy kell inditani a container-t hogy a NAS-n megosztando mappat a "/valami/path/a/containerben/data"-ra mutasson.
Ahogy irjak is.(Jobban megnezve a PHP kodot, hat felszaladt a szemoldokom tole, vannak megoldasok)
-
WaterWave
veterán
válasz
pelyib #20055 üzenetére
király, még szharakodni se kellett mert van hozzá docker konténer, az meg elfut a nason.
Mukodik szuperulAz az egy nem világos, hogy amit feltöltök képet, azt ő hova rakja fel a szerverre? melyik mappában? Mert dockernél mikor megcsináltam, nem látom, hogy hova rakná fel.
Köszi
-
WaterWave
veterán
Sziasztok..
Nas szerveren szeretnék egy puritán kezdetleges kepfeltöltés.eu-ról ismert megoldást... Nem kell login csak szűk baráti körömnek aki ismeri a lapot, az feltudjon képet tölteni magának és vagy direkt link lehetőséget vagy kicsinyitett link kép lehetőséget generáljon... (havonta a könyvtár tartalmát törölném script segitségével)
Privátban kit tudnék ezzel "zaklatni"
Már elkezdtem a dolgot, de a feltöltés magaslabdaWaterWave
-
-
Ispy
nagyúr
válasz
nevemfel #20051 üzenetére
Nem új keletű vita ez, vastagkliens vagy vékonykliens, mindegyiknek van előnye meg hátránya. Jelenleg ott tartunk, hogy nekünk az a jó, ha inkább a szerver "vastag", mert 2 kattintással feltoljuk az azure-t egy szinttel odébb és máris van 2x annyi power az adatbázis oldalon, ha kell. A user viszont nem fog köpködni, ha az android app rohadt lassú, megkap mindent előemésztve, a beállításoktól kezdve az adatokig, amiknek meg kell jelenni, ő meg csak kirakja a képernyőre. Aztán persze idővel lehet más lesz a helyzet, de most innen indultunk el.
A PHP-nak itt meg csak tényleg az a dolga, hogy route-olja az adatokat, nem kell tudnia, hogy miért az van benne, ami, vagy hogy hogyan és miért kapcsolódik az egyik adat a másikhoz, erre ott van a relációs adatbázis. Ismerek én is nem egy vastag klienssel futó programot, ahol az adatbázis tk. csak az adatok tárolására van, aztán a kliens meg csinál minden mást, kinek a pap, kinek a paplan.
-
Ispy
nagyúr
Közben megoldottam a rejtélyt, megy rendben a dolog, csak a postmanban nem váltottam nézetett, ezért nem a raw adatokat teszteltem, hanem a pretty-t, mybad, lehet nem kéne hétvégén dolgoznom.
-
Ispy
nagyúr
Minden eljárás saját verzióval rendelkezik, 1001, 1002 stb., az api csak ezekhez az eljárásokhoz fog hozzáférni, ha az adatbázis oldalon bármi változik, akkor csak csinálni kell egy 1003-as verziót, ami visszaadja a szükséges adatokat. Így simán lehet, hogy az android app az 1001-es kódot használja, a .net-es alkalmazás meg már az 1003-as kódot, mert ott valami frissítés lett csinálva már, de az androidban még nem lett beépítve a módosítás. A tárolt eljárásban meg tk. bármit lehet szimulálni, ha kell.
Btw. inkább megírok 1000 tárolt eljárást, mint 1000 php kódot, de persze kinek mi.
-
Ispy
nagyúr
De ez az adatbázis nem lesz cserélve, pont ez a lényege, hogy az üzleti logika ott van tárolva, ezért akarom ott összerakni az outputot, nem pedig a php apiban, aminek kb. annyi a dolga, hogy a kérést elküldje a db-nek és visszaadja a db válaszát. Nem szeretném egyessével összeszedegetni az adatokat php-ban és ott összerakni a json (6 különböző táblából jönnek adatok, amik különböző relációkban vannak egymással).
-
Ispy
nagyúr
Hát pedig az ms sqlnek complett kódjai vannak, hogy jsont készíts vagy kiolvass, ez a része kész is van. Csak amikor a fetch array-el visszakapom az adatot (ami itt tk. egy string), akkor ezt a stringet 11 részben kapom meg, ha array, ha meg string, akkor olyan, mintha sortörésekkel lenne összerakva a 11 rész. Tehát ebben a formában már nem json. Ha kimásolom egy text editorba, kézzel megszüntettem a töréseket, akkor kész a json.
-
Ispy
nagyúr
Sziasztok!
Elakadtam...hátha van valakinek valami jó ötlete.
PHP-ból hívok meg sqlsrv-vel egy tárolt eljárást, ami összekészít egy json-t és azt visszaadja. De a visszakapott adat 2033 hosszú blokkokra szétszedve jön (11db), amit az istenért nem tudok utána php-ban összerakni, hogy abból valid json text legyen, próbáltam már loopot, implode-ot, akkor sem add vissza semmit a json_decode. Szóval ott vannak az adatok egy arrayben, vagy meg van egy stringben, csak nem jól összefűzve.
-
supercow
őstag
Sziasztok veteránok,
Egy új Laravel munkát kezdek, azoktól kérnék ötletet akik hasonlóan felépített rendszeren dolgoztak már.
A végső cél a rendszerben CAD és PDF fájlok generálása egy gyártási rendszernek / gépsornak. A PDF a megrendelések melléklete, rajta a méretekkel, amolyan műszaki rajz szinten "preview". A CAD dxf és/vagy CNC kimenet megy a gyártósornak.
Példának legyenek KRESZ táblák. Amikor egy új táblát készít a user, elsőre ki kell választania milyen táblát csinál mondjuk útjelző tábla az autópálya szélén, melyik szabvány szerint (pl magyar, német, kínai, esetleg 2018-as Rev2 olasz KRESZ stb) ezután kiválasztja a tábla méretét, szöveget, rögzítési pontokat stb.
A választható tábla alapméretek, szöveg betűtípusa, a betűk mérete, betűk közötti távolság, háttérszín, tábla minimális és maximális mérete, betűk széltől mért min. távolsága stb stb mind a szabványban van és néha összefüggnek (pl 400mm-es táblán 254mm betűvel kell), ezek a "build szabályok" amiket be kell tartani hogy jó bemenetet kapjon a CNC gép, ami majd kivágja a táblát alamíniumból vagy a fényvisszaverő fóliából.
A kérdésem az, hogy hogyan szerveznétek a kódot hogy ezeket a szabályokat rugalmasan lehessen definiálni, illetve későbbiekben minimális munkával új szabályokat vagy teljesen új szabványt lehessen hozzáadni. -
jattila48
aktív tag
válasz
jattila48 #20030 üzenetére
Közben éppen az általad linkelt Wikipédia cikkben megtaláltam, hogy a
waitid
-del visszakaphatod mind a 4 byte-ot. Tehát valóban a többi wait* fv. az, amelyik lecsonkolja az exit kódot. Így méginkább igaz, hogy a main fv.-nek semmi köze a csonkoláshoz, ez nem az ő speciális viselkedése. -
jattila48
aktív tag
válasz
jattila48 #20029 üzenetére
A PHP exec visszatérési értékén a 3. argumentumát értem. A PHP értelemben vett visszatérési értéke az stdout-ra írt utolsó sor (ami egyébként a 2. argumentum utolsó eleme is lesz) sztringként. A 3. argumentumban kapom vissza az exe program visszatérési értékét, ezért értem azt az "igazi" visszatérési értéknek. Bocs, ha esetleg zavarosan fogalmaztam.
-
jattila48
aktív tag
válasz
disy68 #20016 üzenetére
Továbbra is fenntartom, hogy a main fv. semmiben sem speciális, nem hívja meg (legalábbis magától) az exit-et, és nem csonkolja az int visszatérési értékét. Egyébként a linkereknek megadhatod, hogy mi legyen a belépési pont, a main csupán a default. Ahogy az előző hozzászólásomban írtam, az exit végülis valóban meg lesz hívva, de nem a main, hanem a main fv.-t hívó entitás (RTL, libc,...) fogja azt meghívni. Leegyszerűsítve nagyjából így:
exit(main(...));
Amikor a rendszer egy processzt kerál (pl. a shell), akkor CreateProcess rendszerhívással hozza létre (Windowsban) az exe fájlból. Először az exe-hez linkelt Startup (RTL, libc) fv. indul el, amely különböző inicializálások után meghívja a main fv.-t, majd annak visszatérési értékével (ha a main nem hívott explicite exit-et), az exit rendszerhívást. A processz indító entitás, pedig WaitForSingleObject-tel várakozik a processz befejeződésére, ami az exit végrehajtásával következik be. Az exit által kreált exit kódot a GetExitCodeProcess hívásával szerzi meg. Windows-ban semmi különös nem történik, visszakapom a 4 bájtos visszatérő értéket. Linux-on azonban, vagy az exit, vagy a wait* fv. (valószínűleg az utóbbi) 8 bitre csonkolja azt. Hogy ez a viselkedés POSIX szabvány-e vagy nem, azt nem tudom (újabban valószínűleg nem az), de mindenesetre semmiképpen nem a main fv. specialitása.
Az IPC módokat ismerem (kb. 30 éve programozok), szerintem az most itt nem releváns.
"A standard out-ra kerülő adat a visszatérési érték a php shell_exec és exec függvényénél is "
Ez szerintem nem így van, az exec visszatérési értéke (exec 3. argumentuma) a hívott exe program visszatérési értéke (amit végül is az exit->wait* állít elő), az stdout-ra írt értékeket pedig az exec 2. argumentumában kapom vissza tömbben. -
venic
kezdő
válasz
bandi0000 #20027 üzenetére
Nem biztos, hogy választ tudok adni a kérdésedre
De mondjuk nem a beirt adatokból számolok, hanem a beirt info alapján még az adatbázisban vannak az adatok, ahonnan veszem a számokat amivel számolok.
Amit belinkeltem oldalt (kaloriabazis.hu), ha azt vesszük példának, akkor pl beirod hogy almát ettél, és akkor az adatbázisban meg kell nézni, annak mennyi a szénhidrát fehérje stb tartalma és akkor azzal kell számolni.
Illetve egy étel adatfelvételekor 3, tehát 1 küldés során 3 érték megy az adatbázisba, nemcsak 1.
Persze létrehozhatnék változókat a beirt adatoknak (vagy nem tudom, hogy gondolod), csak jelenleg nekem az most bonyolultabbnak tűnik. -
bandi0000
nagyúr
Én mêg mindig nem értem ezt az eltàrolást, hacsak nem valami marha bonyolult sok időt igénybe vevő szàmolást csinálsz
Gondolj egy online szàmológépre, ahol összeadsz 2 szàmot és az "=" gombra kattintva elküldi az adatokat a szervernek, aki visszaadja az eredményt, ettől független frontenden megtarthatod a 2 szàmot amihez hozzàír megint egyet, megint a gombra kattintva adja az eredményt
Persze ettől független csinálhatod azt amit javasoltak feljebb, de az olyan megkerülő megoldàs
-
venic
kezdő
válasz
bandi0000 #20023 üzenetére
Úgy szeretném, hogy beir valamit a felhasználó és akkor már ezzel is történik számolás, majd ha megint hozzáir valamit, akkor módosul a számolás... szóval közben is van számolás, minden egyes adat beirás után, nemcsak a végén.
Szóval most úgy van felépitve, hogy beirsz valamit, akkor az adat megy az adatbázisba, majd a szükséges adatokból számol. Ha újra beirsz valamit, akkor az megint megy az adatbázisba, de számolásnál már a korábbi és a mostani beirt adatot is figyelembe véve történik a számolás. -
bandi0000
nagyúr
Nem tudom hogy építetted fel a backendet, de amit bhonti kolléga mond, kb úgy kellene csinálni, mintha/ vagy ha van egy REST API-d, akkor frontenden beírogatja amit akar a felhasználó, és elküldi a szervernek, az kiszámolja és visszaküldi az eredményt, és így nem fog ütközni semmit
-
venic
kezdő
válasz
bandi0000 #20018 üzenetére
Mutatok egy példát, ehhez hasonlót szeretnék, talán igy jobban érthető lesz.
Ezen az oldalon is lehet regisztráció nélkül is beirni, hogy miket ettél egy nap.
És ha beirod az ételeket, utána kijön egy táblázat, ahol összegzi.
Csak ugye ez a gondom, hogy mig beir a felhasználó 2 adatot, közben beirhat egy másik felhasználó egy másikat.
Nekem is ilyesmi, hogy több adatot lehetne beirni és később ezekből számol, ahogy itt is végülis.
https://kaloriabazis.hu/ -
venic
kezdő
Sziasztok!
Irtam egy kisebb programot, ami a felhasználó által beirt adatok alapján kiszámol valamit.
A beirt adatok adatbázisba kerülnek, majd onnan történik a számolás.
Eddig működne is, csak most azon gondolkozom, ha véletlen feltenném internetre, akkor valószinű gond lenne, ha egyszerre 2 felhasználó is lenne, mert összeakadnának a beirt adatok, szóval valahogy szét szeretném szeparálni, hogy 1 felhasználó által beirt adatok csak hozzá tartozzanak és ne keveredjenek a beirt adatok.
Gondolom lehetne regisztrációval megoldani, de egyelőre anélkül szeretném.
Szerintetek ezt hogy lenne érdemes megoldani?
Köszi előre is. -
disy68
aktív tag
válasz
jattila48 #20014 üzenetére
"Márpedig az int main(int, char **) fv. éppen olyan közönséges fv., mint bármelyik"
Ez nem igaz, a main függvény végén lesz egy system exit call, vagy a return által visszaadott értékkel vagy default 0, amennyiben nem volt explicit exit hívás vagy bármi egyéb runtime error.A fentiek alapján látszik, hogy az exit code az nem adat átadásra szolgál, hanem a process befejézés állapotának a közlésére. Processek közötti kommunikáció vagy adatcsere az nem ilyen egyszerű. Erről itt találsz egy összefoglalót. A táblázatban az anonymous pipe, amit én is írtam a standard out, ami a te esetedben a bevált és használt megoldás. Bármi más az vagy lassabb lesz (pl. file-ok) vagy sokkal komplexebb (pl. socket vagy message queue-k). Persze ragaszkodhatsz az exit code megerőszakolásához is, ez a te dolgod.
A standard out-ra kerülő adat a visszatérési érték a php shell_exec és exec függvényénél is (a megkötések benne vannak a dokumentációban).
A windows vonatkozást én néztem be, sorry, figyelmetlenül olvastam a dokumentációt.
-
jattila48
aktív tag
válasz
jattila48 #20014 üzenetére
Közben beledebuggoltam a programba (Windows alatt, Linux-on még nem), és a rendszer (Windows RTL, Linuxon libc) a main meghívása után valóban meghívja az exit fv.-t, aminek a main-ből return-nel visszaadott értéket adja át. Az exit ezt az értéket lehet, hogy Linux-on 8 bitre csonkolja, Windows-on nem. Vagyis szerintem itt lesz a kutya elásva, az exit-nél. Akkor is meg lesz hívva (a libc által), ha a main-ből return-nel térek vissza. Minden esetre az továbbra is igaz, hogy ez nem a main fv. specialitása. A válaszokat köszönöm, probléma felderítve. Most már legalább ezt is tudom. Igaz rá ment egy napom, hogy kiderítsem, linuxon miért nem működött a PHP szkriptem.
A Windows max. 499-es visszatérési értéke mellékszál, de azért még érdekel. Ha tudtok róla bővebbet, kérlek ne tartsátok magatokban. -
jattila48
aktív tag
válasz
sztanozs #20012 üzenetére
Azt tudom, hogy az int mérete általában rendszerfüggő. Engem most csak az intel x86 és x64 rendszerek érdekelnek, ezeken az int 4 byte hosszú. Nem hiszem, hogy egy int f() -ként definiált fv. csak úgy lecsonkolná a visszatérési értékét 8 bitre. Márpedig az int main(int, char **) fv. éppen olyan közönséges fv., mint bármelyik, nem lehet olyan speciális tulajdonsága, hogy a return-nel visszaadott int értéket 8 bitre csonkolja. Szerintem a kutya máshol van elásva. Az OK, hogy az exit lecsonkolja az argumentumaként kapott int-et 8 bitre (legalábbis Linuxon), de a return biztos, hogy nem. Windows-ban biztos, hogy nincs is így, mert ahogy említettem, a CreateProcess => WaitForSingleObject => GetExitCodeProcess API hívás sorozattal a végén megkapom mind a 4 byte-ot. Linux-on vagy az exit lehet a "bűnös", de mivel ezt nem használom, akkor a parent process által hívott valamelyik wait* fv., vagy a PHP valóban bash-on keresztül hívja a programot, és akkor a bash lesz a hunyó. De nagyon valószínű, hogy ez nem a main fv. lényegi viselkedése.
Azt, hogy "POSIX rendszerekben a visszatérési érték 0-255 között lehet" hogy érted? Minek a visszatérési érétékét mondod? A main fv.-ét? Nem hinném, hogy a POSIX ilyet állítana (legalábbis igen csodálkoznék rajta).
Amit Windows-ról írtatok, hogy a maximális exit kód 499, ilyenről még nem hallottam, pedig igen régóta programozok Windowst. Nem lehet, hogy ez valami hiba család maximális értéke, amit pl. a GetLastError ad vissza (a GetLastError ennél egyébként nagyobb értékekekt is vissza szokott adni).
-
pelyib
tag
Piwig csak egy példa, biztos vagyok benne, hogy tele a net self hosted gallery app-l ami tud jogosultságot kezelni.
"csak egy folder legyen elerheto a webservernek (tipikusan web vagy public neven)"
Ezt nem értem pontosan, de jelenleg is így van. Egy mappában van a dashboard és a képek mappa is ami htaccessel le van védve, így csak az viewer applikációban nézhetők a képek.
Lehet én nézek be valamit, de jelenleg ./ a docroot a webszervernek, ami azt jelenti, h pl az SQL installer fájl is pulikusan elérhető (beirom a böngészőbe és meg tudom nyitni), illetve a class folder is elérhető. Csak az legyen elérhető a webszerveren keresztül aminek kell. Pl rossz esteben ki lehet szedni a DB credential-t.Ez az injektálási eljárás pontosan mitől is jobb? Illetve nem nagyon értem, hogy a require_once nélkül akkor hogy is érem el vele a DataSource.php fájlt?
Egyrészt láthatóak lesznek az osztályod függőségei, hisz ott van az interface-n (public function __construct(DataSource $source)
) illetve megadja a lehetőséget, hogy szabadon kicseréld annélkül hogy ott változtatni kelljen ahol használod.
PéldaA readme fájlban meg fogom említeni, hogy milyen PHP verziókon fut
Bár az is több mint a semmi, de a Composer vagy Docker jobban segíthet annak aki maga is akarja használni.Composer használata megoldja a require_once kérdését is (autoloader). Ez így lehet nem sokat segít de tele a net leírással hogy miként kell beállítani és használni.
[Ez] így biztos jó?
-
sztanozs
veterán
válasz
jattila48 #20011 üzenetére
POSIX rendszerekben a visszatérési érték 0-255 között lehet (vélelmezhetően 8-bites rendszerekhet való kompatibilitási okok miatt).
Az int mérete rendszerenként más és más, általában a rendszer natív kódszélességét jelenti (x86 rendszereken 32 bit, 64 bites rendszereken lehet 64 bit, de pl 8 bites rendszereken csak 8 bit). A word (modern rendszerekben long) dupla int hosszú.256-ból úgy lesz 0, hogy a 256-tal (8bit) való maradékos osztás eredményét adja vissza a rendszer - illetve a visszatérési érték RETVAL & 0xff
-
jattila48
aktív tag
válasz
disy68 #20009 üzenetére
Akkor nem vagyok tisztában az exit kód fogalmával, de most sem lett világosabb. Végülis pontosan mi akkor az exit kód? Windows-ban biztos, hogy vissza lehet adni return-nel a main fv.-ből 499-nél nagyobb értéket is, ilyet már csináltam (pl. CreateProcess => WaitForSingleObject => GetExitCodeProcess ). Az lehet, hogy az exit fv. lecsonkolja az int értéket, de windowsban miért 499-ig, miért nem 255-ig ? A main fv. visszatérési értéke miért int (Linuxban is), ha nem tud 4 byte-os egész értéket visszaadni?
Egyáltalán nem biztos, hogy a main fv.-ből bármit is ki akarok írni az stdout-ra, viszont szeretném pl. batch-ből meghívni, és a visszatérési értékével kezdeni valamit. Ez sokkal egyszerűbb, mint stdout-ra írni, aztán valahogy ezt visszaolvasni. Egyébként ezt a konkrét problémát megoldottam másképp (nem adok vissza 256-ot). -
disy68
aktív tag
válasz
jattila48 #20003 üzenetére
Az exit code és fogalma az nem értelmezés kérdése. Linux alatt az exit code 0-255 között míg Windows alatt 0-499 között értelmezett (foglalt és szabad exit kódok).
Általában a programok a standard out/standard error csatornákat fogják írni, ez lesz a kimenete a programnak, a tényleges adat (persze lehet ezen kívül ezer meg egy módon kimenetet generálni, pl. fájlba írni, de ez most nem érdekes).
"A programom viszont egyszerűen return-nel adja vissza az értéket, nem hív exit-et."
A main-ből hívott return az kvázi az exit-nek fog megfelelni. A main-ből nem térünk vissza return-nel, hanem a standard out-ra kiírjuk az adatot, amivel csinálhat a hívó, amit szeretne. Ez okozza nálad is a problémát. Írd ki a program végén az eredményt és azt használd php-ből. -
btz
addikt
válasz
pelyib #20001 üzenetére
Üdv!
Először is köszönöm, ezbben leledzik minden PHP tudásom, amit össze tudtam szedni a cél érdekében. (Nem foglalkozom napi szinten programozással)
Nem ismerem az általad ajánlott PHP galleryt-t de így első ránézésre azt mondom, hogy az enyém jóval egyszerűbb céleszköz kamerakép nézegetésre, mindazonáltal jobban szemügyre veszem majd az általad ajánlott Piwigo scriptet is.
PDO-t már nézegettem, ha jól tudom az előnye abban rejlik, hogy könnyedén lehet változtatni az SQL típusokat és teljesen objektumorientált, de jelenleg a PHP tudásom nincs azon a szinten, hogy egy könnyű félórás szabadidőben csak úgy lecseréljem. Szívesen veszek minden forkot, ami a PDO-ra építkezik adatbázis tekintetében, ebből én is építkezni tudnék PHP ügyileg
Az aktruális scripten való bejelentkezési pontot már én fabrikáltam rá. Igen, sajnos ezzel kódismétlés van. Erre is szívesen várnék egy változatot, ami egy ponton beléptet és vissza tud dobni a refer oldalra.
"csak egy folder legyen elerheto a webservernek (tipikusan web vagy public neven)"
Ezt nem értem pontosan, de jelenleg is így van. Egy mappában van a dashboard és a képek mappa is ami htaccessel le van védve, így csak az viewer applikációban nézhetők a képek.Probálom minél jobban szétválasztani a vieweket a PHP változóktól és minden egyébtől.
Amint lesz időm rendezem a kód sorait olvashatóság szempontjából.
public function __construct(DataSource $source)
{
$this->ds = $source;
}Ez az injektálási eljárás pontosan mitől is jobb? Illetve nem nagyon értem, hogy a require_once nélkül akkor hogy is érem el vele a DataSource.php fájlt?
A readme fájlban meg fogom említeni, hogy milyen PHP verziókon fut, csak előtte le kéne magamnak is tesztelni, eddig az egész 7.4-en ment , nem néztem meg, hogy mondjuk 5.6-on van e nyűgje
if(true === empty($_SESSION["userId"]))
{
require_once './view/login-form.php';
exit;
}
//amit vedEz jó ötlet, azthiszem ez lesz az első a listán amit majd cserélek. Ennél legalább dereng is, hogy miért jobb ha így csinálom
A Class folder a PHPPOT cucca volt eredetileg, de persze bele nyúltam mivel kellett néhány módosítás itt ott.
Köszi a hasznos tippeket, ahogy haladok a PHP-vel való ismerkedésben próbálom behúzni a kódba a hasznos módosításokat.
-
jattila48
aktív tag
válasz
disy68 #20002 üzenetére
Hogy mit jelent a program visszatérési értéke, az azon múlik, hogy az őt meghívó PHP szkript hogy értelmezi ezt az értéket. A lényeg az, hogy a program 4 byte-os intet ad vissza, amit a php feltehetőleg már csak 1 karakterként lát. A kérdés az, hogy ez miért van így. Ha az exec a bash közbeiktatásával hívja a programot, akkor megvan a magyarázat, mert a bash csak karakternyi egész értéket ad vissza. Csakhogy a dokumentáció nem ezt állítja. A shell_exec PHP fv. az, amely a shell segítségével hívja az adott programot. A Windows cmd-ben tudtommal nincs ilyen korlátozás, hogy maximum 499-et adhat vissza egy batch program. Nem tudom, erre gondoltál-e.
-
pelyib
tag
Gratula az elert eredmenyhez.
Miben mas a te alkalmazasod mint egy szimpla gallery app? pl: https://piwigo.org/Par eszrevetel:
- mysqli helyett PDO
- egy framework, vagy legalabb egy router lib hogy egy belepesi pontja legyen az alkalmazasnak => nem kell minden fajlban duplikalni a kodot ellenorizni a sessiont => csak egy folder legyen elerheto a webservernek (tipikusan web vagy public neven)
- template engine hasznalata, vagy legalabbis view kiszervezese
- PSR hasznalata => tobbi PHP fejlesztonek konnyebb lesz olvasnia a kodot
- hasznalj 1 fajta karaktert behuzasra space VS tab (PSR a space-t ajanlja)
- injectalj, e helyettfunction __construct()
{
require_once "DataSource.php";
$this->ds = new DataSource();
}ezt
public function __construct(DataSource $source)
{
$this->ds = $source;
}- injectalas igaz a DB connection configra is
- PHP verzio nincs megemlitve,jobban mondva semmilyen requirements nincs megemlitve, 7.2 legyen legalabb, MySQL ?, egyeb?
- ezt meg lehetne forditani:if(!empty($_SESSION["userId"])) {
// amit ved
}
} else {
require_once './view/login-form.php';
}erre:
if(true === empty($_SESSION["userId"]))
{
require_once './view/login-form.php';
exit;
}
//amit ved- "class" folder atneveznem "src"-re
Új hozzászólás Aktív témák
Hirdetés
- HiFi műszaki szemmel - sztereó hangrendszerek
- PlayStation 5
- Háztartási gépek
- Tőzsde és gazdaság
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- 3D nyomtatás
- Samsung Galaxy A56 - megbízható középszerűség
- iPhone-t használók OFF topikja
- Mibe tegyem a megtakarításaimat?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- HP Elitebook 745 G3 érintőképernyős laptop (14FHD/I5-G6/8GB/256SSD)
- RTX 4090 / RTX 3090 videokartya hütő ventivel olcson! Dobozzal!
- Thinkpad T14s Gen4 14" FHD+ IPS i5-1345U 16GB 512GB NVMe ujjlolv gar
- HP Elitebook 840 G3 laptop (14FHD/I5-G6/8GB/256SSD/Win11)
- Eladó Samsung Odessey G6 S27DG600SU Monitor!
- Bomba ár! Lenovo IdeaPad 330S-15IKB - i5-8G I 8GB I 256SSD I 15,6" FHD I HDMI I Cam I W11 I Gari!
- BESZÁMÍTÁS! MSI Z370 i5 9500 16GB DDR4 512GB SSD RX6600 8GB Cooler Master MB510L Chieftec 500W
- REFURBISHED - DELL Thunderbolt Dock WD19TBS docking station (210-AZBV)
- LG 27UL500-W - 27" IPS - 3840x2160 4K - 60Hz 5ms - HDR10 - AMD FreeSync - 300 Nits - sRGB 99%
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest