English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 7 post

kemi  (statz) Főfasz
#2, Főfasz (2970)
598 | #4642 | ^ | Idézet | Thu, 05 Oct 2017 22:10:08 +02
134.255.*.* Linux x86 Mozilla Firefox Hungary *.dsl.pool.telekom.hu
Mi ez?
Mondtam már, hogy imádom a póvershellt? Szerintetek ez mit ad vissza?
function kecskefasz {
	if ([File]::Exists("anyad.txt")) {
		return dir
	}
	return "kúúúúúúúúúúúúúúúúúrjunklovat"
}


Ne olvasd tovább, inkább írd meg kommentben. :D


Természetesen, ha az if igaz, visszaad egy "True"-t, meg a dir listát egy tömbben, ellenkező esetben simán egy sztringet, vagyis visszaad mindent, amit kiértékelt, és 0 exit kóddal tért vissza, egy tömbben. Logikus nem? Minden szkriptnyelv így működik. Egy egész napomba telt mire kidebuggoltam, aztán utánaolvastam.


TCH  (statz) Főfasz
#1, Főfasz (10443)
1273 | #4643 | ^ | Idézet | Thu, 05 Oct 2017 23:00:49 +02
94.21.*.* Linux x86 Opera Classic Hungary *.pool.digikabel.hu
@kemi:
Mi ez?
Lényegében arról van szó, hogy van egy nagy területed, benne egy kis területtel. Ha a nagy területet átméretezed/elmozgatod, a kicsin is végre kell hajtani ezt és ez a függvény megmondja a kis terület új paramétereit.
@kemi:
Természetesen, ha az if igaz, visszaad egy "True"-t, meg a dir listát egy tömbben, ellenkező esetben simán egy sztringet, vagyis visszaad mindent, amit kiértékelt, és 0 exit kóddal tért vissza, egy tömbben. Logikus nem? Minden szkriptnyelv így működik.
Bevallom én ezt nem értem. Az odáig érthető, hogy amennyiben létezik az anyad.txt, akkor visszaadja a dir eredményét soronként szétdobva egy tömbbe, ha meg nem, akkor meg azt, hogy kúúúúúúúúúúúúúúúúúrjunklovat, de mi az, hogy ha létezik, akkor true-t ad vissza pluszba, ha meg nem, akkor meg 0-t? Magyarán ez mindig egy tömböt ad vissza, ahol az egyik elem az vagy true vagy 0, a másik meg amit ténylegesen visszaadtál?
@kemi:
Egy egész napomba telt mire kidebuggoltam, aztán utánaolvastam.
Távol álljon tőlem a mikorfos bárminő védelme, de ha kapásból utánaolvasol, akkor lehet nem kell egy napot debuggolnod.


kemi  (statz) Főfasz
#2, Főfasz (2970)
819 | #4644 | ^ | Idézet | Fri, 06 Oct 2017 07:01:56 +02
134.255.*.* Linux x86 Mozilla Firefox Hungary *.dsl.pool.telekom.hu
@TCH:
Bevallom én ezt nem értem. Az odáig érthető, hogy amennyiben létezik az anyad.txt, akkor visszaadja a dir eredményét soronként szétdobva egy tömbbe,
Nem, mert bele fogja dobni a true-t a dir lista elé, mert a [File]::Exists("anyad.txt") kiértékelés volt, és 0 exit kóddal tért vissza. Erre nem is találtam jobb megoldást, minthogy ki kell venni az utolsó elemet a return value-ból.
Gyakorlatilag tök mindegy mi van a return után. Akár így is írhattam volna:
function kecskefasz {
	if ([File]::Exists("anyad.txt")) {
		dir
		return
	}
	Write-Output "kúúúúúúúúúúúúúúúúúrjunklovat"
	return
}
Mert nem azt az értéket adja vissza ami a return után van, hanem minden sikeres kiértékelést beledob egy tömbbe, és visszaadja.


djpety  alias  "Pety" Lófasz
#6, Lófasz (953)
1048 | #4645 | ^ | Idézet | Fri, 06 Oct 2017 09:39:53 +02
188.143.*.* Apple Mac OS X x86 Google Chrome Hungary *.pool.digikabel.hu
@kemi:
Mert nem azt az értéket adja vissza ami a return után van, hanem minden sikeres kiértékelést beledob egy tömbbe, és visszaadja.

Hát akkor ez olyan, mintha PHP-ban ezt csinálod:

function x_dir(){
        return print_r(scandir(getcwd())); // PS-ben valami ilyesmit jelenthet a dir
}

var_dump(x_dir());


PS esetében gondolom visszatér egy tömbkiírással a dir (mint itt PHP-ban az x_dir()) a return pedig visszatér a függvény visszatérési értékével (true). Ez a természetes viselkedése, doksiban biztos leírják. Olyan nincs, hogy egy nyelvnek hasonlítania kell egy másikra. Az mondjuk lehet, teljesen logikátlan, vagy körülményesen van kialakítva.

Mivel a PowerShell alapvetően egy shell, így shellként is működik. Bash-ben is hasonlót érsz el, ha a scripteben az van, hogy ls. A kimenetét el kell kapnod, hogy ne írja ki és dolgozz vele. Return után meg jó hogy mindegy mi van, hiszen visszatér. A shelleknél egy function inkább subshellként működik, tehát nem teljesen szokványos függvények.


TCH  (statz) Főfasz
#1, Főfasz (10443)
3355 | #4646 | ^ | Idézet | Fri, 06 Oct 2017 12:50:50 +02
94.21.*.* Linux x86 Opera Classic Hungary *.pool.digikabel.hu
Hát a shell-ekbe én nem másztam bele ennyire, így megnéztem mit csinál a bash és a zsh.
function kecskefasz {
	if [ -e "anyad.txt" ]; then
		return ls
	fi
	return "kúúúúúúúúúúúúúúúúúrjunklovat"
}
(Mind a két shellben ugyanígy kell megírni.)

Namármost, ezekben a shellekben visszaadni csak integert lehet (ráadásul logikailag negált értelemmel, értsd: a 0 igaz, minden más hamis), ha bármi mást (akár semmit se) adsz vissza, az 0-nak minősül, ill. a bash subshelles meghívás esetén, bereklamál, hogy azt nem lehet (illetve a semmit elfogadja, de az is 0 lesz). Ennek megfelelően a return-nek átadott ls stringként lesz lekezelve, ami 0 és ugyanez lesz a sorsa a másik ágon ülő "kúúúúúúúúúúúúúúúúúrjunklovat"-nak is. Azaz a függvény mindig 0 értékkel tér vissza. Tehát a fenti függvényt subshell-ként meghívva
if ( kecskefasz ); then
	echo y
else
	echo n
fi
zsh-ban "y"-t ír ki a konzol, bash-ban pedig hibát. Ha pedig nem subshellként, hanem test meghívást adva hívod
if [ kecskefasz ]; then
	echo y
else
	echo n
fi
akkor mindig "y"-t ír ki a konzol. Ennek megfelelően az UNIX shellekben nem is lehet visszatérési értékként visszaadni egy könyvtárlistát.

Amennyiben a második felírást nézzük:
function kecskefasz {
	if [ -e "anyad.txt" ]; then
		ls
		return
	fi
	echo "kúúúúúúúúúúúúúúúúúrjunklovat"
	return
}
akkor ott, ha a test meghívással hívod a függvényt, akkor a végeredmény megegyezik az első függvény végeredményével, a subshelles megoldás esetén viszont az ls és az echo "kúúúúúúúúúúúúúúúúúrjunklovat" tartalma viszont a képernyőn fog landolni. Ennek megfelelően a végeredmény, azaz a képernyőre kiköpött tartalom az anyad.txt létezésének függvényében egy könyvtárlista vagy egy "kúúúúúúúúúúúúúúúúúrjunklovat" és utánuk egy y.

Ezek szerint, ha az anyad.txt létezésének függvényében a könyvtárlistát szeretnéd visszakapni, vagy egy "kúúúúúúúúúúúúúúúúúrjunklovat" sztringet, akkor az így néz ki:
eredmeny=$(kecskefasz)
azaz ahogy Pety is mondta, el kell kapni a kimenetét azoknak a subshellből hívott parancsoknak.

Mint mondtam, távol álljon tőlem a mikorofos bárminő védelme, de szerintem a felsoroltak miatt kár ekézni a PowerShell-t, úgy viselkedett, ahogy az elvárható volt egy shelltől. Szerintem a probléma abban gyökerezett, hogy te "sima" scriptnyelvként kezelted, holott ez egy shell scripting nyelv, és a shell scripting egy külön állatfaj a scripteken belül.
Itt max annyit lehet a mikiszoft nyakába varrni, hogy ők összekeverték a kettőt (legalábbis az elmondásaid alapján) és a végeredmény finoman szólva sem lett logikus (legalábbis az elmondásaid alapján), de ettől még ha dokumentálva van, hogy mi miért történik, akkor max. a koncepciót lehet kritizálni, a működést nem nagyon...kivéve persze, ha bugos, ami mint tudjuk a jó öreg m$-nél nem ritka, de ez nem bug volt. :P

Illetve még azt nem értem, hogy a fájl létezésének vizsgálata miért büfög vissza szövegesen egy true-t, de annak a parancsnak gondolom át lehet irányítani a kimenetét, hogy ne tegye. Vagy nem?


djpety  alias  "Pety" Lófasz
#6, Lófasz (953)
455 | #4647 | ^ | Idézet | Fri, 06 Oct 2017 13:06:10 +02
188.143.*.* Apple Mac OS X x86 Google Chrome Hungary *.pool.digikabel.hu
@TCH:
Illetve még azt nem értem, hogy a fájl létezésének vizsgálata miért büfög vissza szövegesen egy true-t, de annak a parancsnak gondolom át lehet irányítani a kimenetét, hogy ne tegye. Vagy nem?


Szerintem ez sikerességet jelöl csak. Képzeljük el azt a helyzetet, ha a fájl nem létezik (false), vagy nincsen jogosultság elérni. Az meg a shell viselkedése lehet, hogy visszatérési értéket lefordít stringre és kiírja.


TCH  (statz) Főfasz
#1, Főfasz (10443)
196 | #4648 | ^ | Idézet | Fri, 06 Oct 2017 13:49:15 +02
94.21.*.* Linux x86 Opera Classic Hungary *.pool.digikabel.hu
Jó, csak egy vizsgálat eredményének az értékét nem szokás kiokádni az outputra.
https://nakedsecurity.sophos.com/2016/06/20/ransomware-thats-100-pure-javascript-no-download-required/


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!