ugrás a tartalomhoz

Scriptometer - a lehetetlen küldetés?

Heilig Szabolcs · 2004. Jún. 21. (H), 14.50
Mindenkinek megvan a maga szubjektív véleménye arról, melyik szkriptnyelv a legjobb. Számos szavazás is lefutott már ebben a témában, ami alapján megkaphatjuk azon emberek véleményének átlagát, akik még szavazni is hajlandóak kedvencükre. A merd néven futó vaporvare írója viszont arra vállalkozott, hogy egy objektív összehasonlító szempontrendszert dolgozzon ki, és ezt a lehetõ legtöbb nyelvre mérceként alkalmazza. A projekt hetek alatt elért oda, hogy már közel 30 bedolgozó finomítgatja, bõvítgeti mind a bevont nyelvek, mind a szempontok irányában. A napokban így kerülhetett be a PHP is a megmérettetett nyelvek közé.

A bevont nyelvek között megtalálhatóak a legismertebb "P" kezdetûek, azaz a Perl, A PHP valamint a Python. Emellett górcsõ alá kerülnek olyanok is, mint az sh shellscript nyelve (megjegyzem, most õ vezet), az awk vagy éppen a JavaScript. A sok más mellett olyan, nem éppen szkriptnyelvnek minõsülõ nyelvek is versenybe szállnak, mint a C vagy a Java.

A felmérés két nagy részre osztható, az egyikben alapvetõ szolgáltatások, tulajdonságok megléte illetve hiánya hat a végsõ pontértékre. A második rész az egyszerû szkriptekkel kezdve elmegy a már viszonylag összetettebb feladatok felé. Itt csupán az számít, hogy mennyit kell az adott feladat megoldásához gépelnünk.

A Scriptometer eredményei még közel sem véglegesek, a végsõ pontértékek még igen képlékenyek. Személy szerint a PHP-nek drukkolok, hogy egy kicsit jobb eredményt érjen el a jövõben. Emellett epekedve várom, hogy a beküldött PHP kódocskám megjelenjen a compile what must be feladatot megoldó kódok között.

A projekt nyílt, szívesen várják a különféle észrevételeket, javításokat, optimalizált kódokat, akinek tehát észrevétele van, ne késlekedjen!
 
1

php beallitastol fugg

kmm · 2004. Jún. 21. (H), 20.42
nehamy pontot elvettek kedves scriptnyelvunktol:
persze ebbol nem minden jogos ;o)

nem midenben vagyok biztos, pls nezze meg vmelyik okos ;o)

/eredeti/tenyleges/register_globals/extra-brutal/

access command line parameters: 35/31/20/16

<? echo $_SERVER[argv][1] . "\n" ?>
<?=$_SERVER["argv"][1] . "\n"?>
<?=$argv[1] . "\n"?>
<?="$argv[1]
"?>

access environment variable: 28/23/17/13
<? echo $_ENV[HOME] . "\n"?>
<?=$_ENV[HOME] . "\n"?>
<?=$HOME . "\n"?>
<?="$HOME
"?>

return exit code error (non zero) if a file does not exist: 43/43/43/40 
<? file_exists("/etc/mtab") or exit(1); ?>
<? file_exists("/etc/mtab") or exit(1); ?>
<? file_exists("/etc/mtab") or exit(1); ?>
<? file_exists("/etc/mtab")or exit(1)?>

return exit code error (non zero) if a file is not readable: 43/43/43/40
<? is_readable("/etc/mtab") or exit(1); ?>
<? is_readable("/etc/mtab") or exit(1); ?>
<? is_readable("/etc/mtab") or exit(1); ?>
<? is_readable("/etc/mtab")or exit(1)?>

call an external program and check the return value: 81/81/81/74
<? system("false") or fwrite(STDERR, "false failed\n"); 
system("echo done"); ?>
<? system("false") or fwrite(STDERR, "false failed\n"); 
system("echo done"); ?>
<? system("false") or fwrite(STDERR, "false failed\n"); 
system("echo done"); ?>
<? system("false")or fwrite(STDERR,"false failed
");system("echo done")?>

remove #-comments from a file (modifying the file, i.e. in place): 126/126/117/110
<?
$name = $_SERVER[argv][1];
$result = preg_replace("/#.*/", "", file_get_contents($name)); 
file_put_contents($name, $result);
?>
<?
$name = $_SERVER[argv][1];
$result = preg_replace("/#.*/", "", file_get_contents($name)); 
file_put_contents($name, $result);
?>
<?
$name = $argv[1];
$result = preg_replace("/#.*/", "", file_get_contents($name)); 
file_put_contents($name, $result);
?>
<? $name=$argv[1];$result=preg_replace("/#.*/","",file_get_contents($name));file_put_contents($name,$result)?>

find and compile .c files into .o when the .o is old or absent: 447/345/xxx/257
!szinte csak ugyanugy csinaltam a behuzast mint az sh es ~100 char!
<?
function doit($p) {
    $d = dir($p);
    while ($f = $d->read()) {
        $c = $p . '/' . $f;
        if (is_dir($c) && $f != '.' && $f != '..') {
            doit($c);
        } elseif (ereg('(.*\.)c$', $c, $r)) {
            $o = $r[1] . 'o';
            if (filemtime($o) < filemtime($c)) {
                echo "compiling $c to $o\n";
                system("gcc -c -o $o $c");
            }
        }
    }
    $d->close();
}
doit('.');
?>
<?
function doit($p) {
	$d = dir($p);
	while ($f = $d->read()) {
		$c = $p . '/' . $f;
		if (is_dir($c) && $f != '.' && $f != '..') {
			doit($c);
		} elseif (ereg('(.*\.)c$', $c, $r)) {
			$o = $r[1] . 'o';
			if (filemtime($o) < filemtime($c)) {
				echo "compiling $c to $o\n";
				`gcc -c -o $o $c`;
			}
		}
	}
	$d->close();
}
doit('.');
?>
<? ... ?>
<? function doit($p){$d=dir($p);while($f=$d->read()){$c="$p/$f";if(is_dir($c)&&$f!='.'&&$f!='..'){doit($c);}elseif(ereg('(.*\.)c$', $c, $r)){$o="$r[1]o";if(filemtime($o)<filemtime($c)){echo"compiling $c to $o\n";`gcc -c -o $o $c`;}}}$d->close();}doit('.')?>

grep with -F -i -h handling, usage, grep'ing many files:
ez kimaradt?
ja es ha jol tom phphoz is van debugger ha nem is olyan egyszeru...

igy ha csak az egyszrubb dolgokat vesszuk akkor is sztem elorebb lepne

--
üdv: kmm...
2

Pontvadászat

Heilig Szabolcs · 2004. Jún. 21. (H), 22.16
Hja, érdekes dolgok vannak, néha kicsit gyanús, de ha szól az ember, kijavítják. Néhol olyan, mintha a Perlt is vissza akarnák fogni. Pl nem értem, minek van odabiggyesztve néhol a "perl -le" az egész elejére.

Azt, hogy register_globals off kompatibilisek a kódok, én helyeslem. Viszont javasolni fogom, hogy a szóközöket vonja le a hosszból, mert a kód olvashatósága nõ tõle, viszont amúgy elhagyható lenne sok helyen. Szóval van mit csiszolni.

A compiler kódot amúgy backtick megoldással küldtem be, nem tudom miért lett system hívás a dologból. Bevallom, fel sem tûnt. Viszont a kommentkiszedõs kód végén eredetileg nem a file_put_contents() állt, azt szintén én javasoltam, meg a PHP 5-re való általáno átállást. Elfogadták. Oda lehet hatni. Fõleg, hogy a file_put contents helyén az általános $fp filehandler helyett a $handler változónevet nyomatták. Ez a PHP 5-re lépés amúgy 1 pontot jelentett, így lett 109 pontból 110.

A grep-es feladattal kapcsolatban: hajrá kmm! :) Bevallom, mivel nincs a külön feladatokra részletes specifikáció, és mivel nem volt türelmem a többi kódból kibogarászni, mit kéne csinálni pontosan, nem foglalkoztam vele.

Van php-hoz debugger, de nem beépített, szóval azért nincs ott.
3

szokozok

kmm · 2004. Jún. 21. (H), 22.20
szokozoket nem szamoljak csak 1x
azert par pontal tobb lenne
a <?= a <? echo helyett pl elfogadhato lenne.

--
üdv: kmm...
4

5k compo után...

T.G · 2004. Jún. 21. (H), 23.54
Ahhoz képest, hogy a kód mérete a lényeg, mindenki teljesen átlatható kódokat készít...

5k compo után ezek már csak ujjgyakorlatok... :)

<?$r=join('',file($n=$_SERVER['PATH_TRANSLATED']));
fwrite(fopen($n,'w'),preg_replace("/#.*/","",$r));
Kérdés: nekem miért nincs $_SERVER['argv']-m???
5

> Kérdés: nekem miért ninc

Heilig Szabolcs · 2004. Jún. 22. (K), 01.14
> Kérdés: nekem miért nincs $_SERVER['argv']-m???

CLI API-n keresztül tetszett megnézni? :)
Amúgy jogos az átlátható kód, hiszen a praktikusság a lényeg. A fenti kód jó egy compo-ra, de hétköznapokon, hétköznapi feladatokra nem ilyen scripteket írsz ugyebár... :)
6

Természetesen nem...

T.G · 2004. Jún. 22. (K), 09.21
Természetesen nem ilyen kódot írok, de nehéz meghúzni a határt... :)

<?
function doit($p){
  foreach (glob($p.'/*', GLOB_ONLYDIR) as $d) doit($d);
  foreach (glob($p.'/*.c') as $c) {
    $o = substr($c,0,-1).'o';
    if (filemtime($o) < filemtime($c)) {
      echo "compiling $c to $o\n";
      system("gcc -c -o $o $c");
    }
  }
}
doit('.');
?>
7

Beküldve

Heilig Szabolcs · 2004. Jún. 22. (K), 10.53
Helló!

Utólagos engedelmeddel elküldtem a fenti kódot az illetékesnek. Átírtam a system() hívást backtick operatorosra, és rákérdeztem, az elõzõ kódban miért cserélte le system()-re... A kód viszont tisztázva lesz, benne lesznek a szóközök, mint minden nyelvnél. Utólag belegondolva, jogos is. Igaz, hogy ettõl minden kód hosszabb lesz, de ez jobban kihangsúlyozza, mennyire összetett kód kell egy adott feladat megoldásához. Ha úgy kell összerakni egy stringet 5 darabból, az büntetõpont a nyelvnek. Átnéztem, ilyen szempontból egységesnek tûnik az összes task összes nyelven írt kódja.
Kéne egy grepes cucc is. Valaki?
10

grepes cucc

T.G · 2004. Jún. 22. (K), 11.42
Pontosan mi is az? Ennyi infóból nem pontosan látom, hogy mit kell csinálni... :)
Se Java, se C a többihez meg nem értek annyira, hogy nekiálljak kibogarászni az eredményből a feladatot...
11

grep

Heilig Szabolcs · 2004. Jún. 22. (K), 12.18
Azon nekem is elfogyott a türelmem. :)
18

grep under way

gerzson · 2004. Jún. 23. (Sze), 10.22
elkezdtem a grepet, beküldöm ide, ha kész van, további kozmetikázásra.

A legnegyobb gondot nekem az -F kapcsoló értelmezése jelent, soha nem használtam.

ui.: egyébként kicsit eltorzult a verseny, ha arra gondolunk, h. kifejezetten shell funkciókra kihegyezett versenyben lépnek pályára a szkriptnyelvek. Így nem csoda, h. az sh vezet, mégha meg van támogatva is seddel, greppel és a többivel.
21

A tervek szerint lesz ott web

Heilig Szabolcs · 2004. Jún. 23. (Sze), 13.39
A tervek szerint lesz ott webes orientaltsagu es gui-s taszk is idovel. Webbel nem lesz baj, a GUI-ra meg ott van a "gtk" es az "ncurses".
12

T.G. is beküldte :)

Heilig Szabolcs · 2004. Jún. 22. (K), 12.24
Hali!

Bekerült a cucc, +1 pont lett a dologból. Most kuncsorgok hogy a

-system("utasitas");
+echo `utasitas`;


patch felkerülhessen. A sima backtick-el az volt a baj, hogy az stdout-ra
nem nyomott semmit. Ha szerencsénk van, az a 3 byte is lehet egy pont.
Mondjuk szvsz nem kerekíteném egészre a pontokat, hanem mondjuk 2 tizedre.
13

Megjött a válasz. Perl-nél

Heilig Szabolcs · 2004. Jún. 22. (K), 12.40
Megjött a válasz. Perl-nél is volt ilyen kérés, de azért lett elutasítva, mert a system folyamatosan löki a kimenetet, míg a backtick pufferel, majd amikor kész, akkor adja át a kimenetet. Végülis jogos, ha a többi nyelven írt progi sem pufferel.

Közben javasoltam, hogy a ?> záró tag-eket szedje le, viszont minden script végzõdjön pontosvesszõvel.
14

Ez is megvolt :)

Heilig Szabolcs · 2004. Jún. 22. (K), 13.28
Nnna, a ?> tag-ek elhagyásra kerültek, ez is plusz 2 pontot jelent. Így már 112 pontja van a PHP-nek, megelõzve a TCL-t.
15

kellene még

kmm · 2004. Jún. 22. (K), 13.29
a <? echo xxx ?>
helyett a <?=xxx?> forma, hiszen ez is elfogadott

--
üdv: kmm...
16

kellene még 2.

T.G · 2004. Jún. 22. (K), 14.09
Ha már itt tartunk:
$_ENV[HOME] . "\n"
"$_ENV[HOME]\n"
17

Tadaam!

Heilig Szabolcs · 2004. Jún. 22. (K), 14.55
Elment minden kérés, plusz még kicsit én is ügyeskedtem az argv-s feladaton, nyerve 1-2 byte-ot. Így mostmár 113 pontunk van!
8

Hello Word

sajt · 2004. Jún. 22. (K), 11.05
Ez mi alapjan pontozodik?
9

Pontozás HOGYAN

Heilig Szabolcs · 2004. Jún. 22. (K), 11.18
Elég kevés az infó, de az biztos, hogy a hossz a mérvadó. Az adott feladatot megoldó scriptek közül a legrövidebb kód hosszát levonják a többi hosszából. Így a 0 és a leghosszabb kód között lineárisan oszlik el, ki mennyi pontot kap. Legalábbis így tippelem. Szóval a hello_world megoldása PHP esetén max. pont elvileg.
19

grep 1.

gerzson · 2004. Jún. 23. (Sze), 12.40
Két grep változattal állok elő, a változók nevét nem rövidítettem le, h. könnyebb legyen eligazodni a kódon. Alapvetően a Perl és sh változatot írtam, illetve, amit megértettem belőle.

1. változat az ereg[i] függvényekkel. Először ezt kezdtem el, mondván a grep és az ereg kb. ugyanarra a regexp motorra épül(t).

<?
$grep = 'ereg';
$args = $_SERVER[argv];
$prefix = array_shift ( $args );

while ( $o = array_shift ($args) ) {
    if     ( $o == '-h' ) break;
    elseif ( $o == '-i' ) $grep = 'eregi';
    elseif ( $o == '-F' ) $lit = 1;
    else break;
}
$rexp = $lit ? quotemeta($o) ? $o;

if (empty ($args) || $o == 'h')
    die("usage: $prefix [-F] [-i] regexp [files...]\n");

foreach ($args as $f)
    foreach (file($f) as $l)
        echo $grep($rexp, $l) ? "$prefix: $l\n": "";

A második megoldás preg_* függvényekkel:

<?
$args = $_SERVER[argv];
$prefix = array_shift ( $args );

while ( $o = array_shift ($args) ) {
    if     ( $o == '-h' ) break;
    elseif ( $o == '-i' ) $case = 'i';
    elseif ( $o == '-F' ) $lit = 1;
    else break;
}
$rexp = $lit ? preg_quote ($o, '/') : $o;

if (empty ($args) || $o == 'h')
    die("usage: $prefix [-F] [-i] regexp [files...]\n");

foreach ($args as $f)
    foreach ( preg_grep ("/$rexp/$case", file($f)) as $l )
        echo "$prefix: $l\n";
Aki tud finomítson rajta, és küldjük be!
20

Tegnap kicsit eljatszottam ve

Heilig Szabolcs · 2004. Jún. 23. (Sze), 13.35
Tegnap kicsit eljatszottam vele en is, de csak a parameter feldolgozasog jutottam el vele,
Az ereg-es megoldasnal a
$grep = 'eregi';

Helyett a
$grep .= 'i';
az az optimalizacio, amit igy ranezesre hozza tudnek adni.

Viszont a -F parameter nem azt jelenti szvsz hogy quote-olni kene, hanem azt, hogy akkor tobb regexp van egymas utan, \n karakterekkel elvalasztva.

-F: "Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched."
22

death match

gerzson · 2004. Jún. 23. (Sze), 13.43
$grep = 'eregi' vs '$grep .= 'i' én is lejátszottam, de több -i megadásakor ez a változat elvérzik. Ennek ellenére, ha beküldjük, akkor meg lehet említeni, h. van egy ilyen helytakarékossági lehetőség is. Máskülönben a 2. változat még így is rövidebb.

A -F nem tudom, mit csinál, mint mondtam. A Perl-es Ruby-s példa mind quote-olja a mintát, ezért bátorkodtam így csinálni. A Python-os példán keresztül megvilágosodom majd. A legjobb lenne, ha vki tudna vmi példát mutatni.
23

grep stdin -- az első visszajelzés

gerzson · 2004. Jún. 23. (Sze), 14.03
Megkaptam az első visszajelzést, és egy nagyobb gondot is meg kell oldani, amire hirtelen nincs kompakt méretű ötletem:
if there is only one file (or stdin), you must not print "$prg: "


Én először a streamekre gondoltam mint lehetséges megoldás, PerlPython verzió is vmi ilyesmi elven működik. Lehet azonban, h. van ennél okosabb - rövidebb - megoldás is.

ui.: biztatást is kaptunk a jövőre nézve:
i'm sure the next one is going to fit perfectly :)
24

stdin

Heilig Szabolcs · 2004. Jún. 23. (Sze), 14.08
Akkor a quote cuccot ugy latszik beveszi. Talan jo is ra, mert quote-olja az ujsorokat, es talan a preg cucc elbanik a tobb regexp-el. Nemtom. De mashol is ennyit tettek, szoval fair igy. :)
26

Az alábbi verziót küldtem

gerzson · 2004. Jún. 23. (Sze), 14.36
Az alábbi verziót küldtem be, de ha vkinek eszébe jut még vmi finomítás, akkor azt nyugodtan javasolja.

<?
$args = $_SERVER[argv];
$prg  = array_shift ($args);

while( $o = array_shift ($args) ) {
    if     ( $o == '-h' ) $h = 1;
    elseif ( $o == '-i' ) $i = 'i';
    elseif ( $o == '-F' ) $F = 1;
    else break;
}

if( !$o || @$h )
    die("usage: $prg [-F] [-i] regexp [files...]\n");

if( empty ($args) )
    $args []= 'php://stdin';

$r = $F ? preg_quote ($o, '/') : $o;

foreach( $args as $f )
    foreach( preg_grep ("/$r/$i", file($f)) as $l )
        echo "$prg: $l\n";
25

ciklus gebasz?

Heilig Szabolcs · 2004. Jún. 23. (Sze), 14.27
Itt a ciklussal lesz kis gebasz szvsz. Ugye ha -h az aktualis param, akkor egyertelmuen jon az usage szoveg. Viszont lehet, hogy egy progi.php -F -i utan ha nincs semmi, csendben vege lesz a ciklusnak, ekkor azt fogja hinni a program, hogy a -i a regexp. Ami nem jo. Szvsz nem kezeli jol a regexp hianyat igy a cucc.

Javaslatom helyette:
<?
$v = $_SERVER['argv'];
array_shift($v);
while ($r = array_shift($v)) {
    if ($r == '-h') break;
    if ($r == '-i') $i = 'i';
    elseif ($r == '-F') $F = 1;
    else break;
}
if (!$r || $r == '-h') die("usage: grep [-F] [-i] regexp [files...]\n");

// $r-ben van a regexp most, eztan johet a quote/nem quote jatek
// aztan ha eztan az args ures, akkor stdin, kulonben foriiics


A $prefix miert kell? Szvsz Az usage-ban mashol is "grep" van, nem $prefix, mi se legyunk okosabbak maaaa! :)
27

minden eliminálva

gerzson · 2004. Jún. 23. (Sze), 14.48
Kösz a ciklus analízist, közben javítottam én is a kapcsoló feldolgozáson.

A $prefix-et már korábban rövidítettem $prg-re, így a mienk többet tud ugyanannyiért, bár ezt a jó tulajdonságát elfelejtettem megírni. :-)

Azóta rövidítettem a kapcsolók feldolgozásán is, és most várjuk, h. ez a 432 Byte-os csoda, mire lesz elég.

<?
$args = array_slice ($_SERVER[argv], 1);

while( $o = array_shift ($args) )
    if( ereg('^-[ihF]$', $o) ) $$o{1} = $o{1}; else break;

if( !$o || @$h )
    die("usage: grep [-F] [-i] regexp [files...]\n");

if( empty ($args) )
    $args []= 'php://stdin';

$r = $F ? preg_quote ($o, '/') : $o;

foreach ($args as $f)
    foreach (preg_grep("/$r/$i", file($f)) as $l)
        echo count($args)>1 ? "$f:$l" : $l;
28

6 karakter?

kmm · 2004. Jún. 24. (Cs), 16.11
<? $a=1; $b=2; echo "$a + $b = " .($a + $b). "\n";

helyett:
<?=($a=1)." + ".($b=2)." = ".($a + $b)."\n";

ez mehetne?

--
üdv: kmm...
29

esetleg?

kmm · 2004. Jún. 24. (Cs), 16.31
nem teszteltem:
<?
$f = $_SERVER[argv][1];
file_put_contents($f, 
    preg_replace("/#.*/", '', file_get_contents($f)));
helyett:
<?
file_put_contents($f=$_SERVER[argv][1], 
    preg_replace("/#.*/", '', file_get_contents($f)));
illetve
<?
function doit($p) {
    foreach (glob($p . '/*', GLOB_ONLYDIR) as $d) doit($d);
    foreach (glob($p . '/*.c') as $c) {
        $o = substr($c, 0, -1) . 'o';
        if (filemtime($o) < filemtime($c)) {
            echo "compiling $c to $o\n";
            system("gcc -c -o $o $c");
        }
    }
}
doit('.');
helyett:
<?
function doit($p) {
    foreach (glob($p . '/*', GLOB_ONLYDIR) as $d) doit($d);
    foreach (glob($p . '/*.c') as $c) {
        if (filemtime($o=substr($c, 0, -1) . 'o') < filemtime($c)) {
            echo "compiling $c to $o\n";
            system("gcc -c -o $o $c");
        }
    }
}
doit('.');
--
üdv: kmm...
30

Re: esetleg?

T.G · 2004. Jún. 25. (P), 01.47
Pont erre írtam, hogy nehéz meghúzni a határt, valljuk be, hogy elágazásba értékadást betenni nem túl szép, ellenben működik. :)
31

nem tul szep, de mukodik...

kmm · 2004. Jún. 25. (P), 06.28
jatakkor?
:D

lenyomjuk a pajtont !!!

elkuldtem ...

--
üdv: kmm...
32

Ertekadas elagazasban

Hodicska Gergely · 2004. Jún. 25. (P), 11.57
Szia!

valljuk be, hogy elágazásba értékadást betenni nem túl szép

Abszolut bevett gyakorlat azokon a nyelveken, ahol ez lehetseges, sot teljesen jol olvashato is, ha mondjuk zarojelezessel jelzed.
C-ben ez teljesen megszokott peldaul:
while(d++ = s++) {}

Felho
33

koszonom

kmm · 2004. Jún. 25. (P), 14.29
koszi :D vegre valaki megvedett! ;o)
--
üdv: kmm...
34

Re: Ertekadas elagazasban

T.G · 2004. Jún. 25. (P), 15.08
while(d++ = s++) {}
Ezt a példát most nem látom, de sebaj... :)

Ez olvasható, és logikus:
while ($file = readdir($handle))

Ez már nem olvasható, és nem logikus:
if (filemtime($o=substr($c, 0, -1) . 'o') < filemtime($c))

kmm: visszaírt a csóka valamit? Neki mi a véleménnye erről?
35

visszairas:

kmm · 2004. Jún. 25. (P), 15.30
Nem tudom h kaptam -e valaszt, mert otthoni cimrol kuldtem, es otthon folyamatosan feccselem, es idebent meg csak 80as port van amugy is

holnap megyek legkozelebb haza...

--
üdv: kmm...
36

Re: Ertekadas elagazasban

Hodicska Gergely · 2004. Jún. 28. (H), 11.03
Ez már nem olvasható, és nem logikus:
if (filemtime($o=substr($c, 0, -1) . 'o') < filemtime($c))


Szerintem meg pont jo, teljesen bevett gyakorlat. Talan elsore fura, ha nem szoktal hozza, de altalaban abszolut nem neheziti az olvashatosagot, foleg, ha az igy letrehozott valtozot egy par soros blokkban hasznalod a feltetelt kovetoen.
Ezt sem igy irod:
$count = count($tomb);
for($i = 0; $i < $count; $i++) {}
hanem
for($i = 0, $count = count($tomb); $i < $count; $i++) {}

Felho
37

perl...

Bártházi András · 2004. Jún. 28. (H), 11.18
És akkor mindenki azt mondja, hogy a Perl azért "rossz", mert átláthatatlan a benn írt kód. :D Pedig ugyanennyire átlátható az is. ;)

-boogie-
38

valaki

kmm · 2004. Jún. 28. (H), 12.34
valaki elkuldhetne akkor, mert nekem valasz sem jott :/
--
üdv: kmm...
39

hát ...

gerzson · 2004. Júl. 10. (Szo), 19.26
én is híve vagyok annak, hogy a logikusan összetartozó dolgokat tarsuk is egyben, de ez a string átalakítás kicsit necces. A
$count = count($tomb);
rövidebb, és átláthatóbb, mint a
$o = substr($c, 0, -1) . 'o',
amiben több művelet van már felhalmozva így is.

A problémát Makefile operátorfélékkel csinos lenne megoldani [$(c:%.c=%.o)], de PHP-ban minden inkább "szöveges", függvényalapú, minthogy operátor lenne. Jelen esetben sajnos.
40

debugger ?

gerzson · 2004. Júl. 10. (Szo), 19.33
Azon veszt a PHP sok pontot, h. nincs alapból debuggere (2*5 pont).
Erről is leveleztem az emberrel, de nem győzte meg a pear-ből telepítheő apd sem az xdebug, mivel nem egy shell debuggolására valók.

Aki tud, segítsen ! A debuggerre vonatkozó kritériumok:
- egyszerűen csomagból telepíthető,
- nem kell különösebb mágia az elindításához (ini beállítás, auto_prepend-ek),
- valamennyire interaktív, menetközben vezérelhető működés.