Szkriptek: Python, Perl, Bash, ...

Python fejtörő

Játszunk egy kicsit a rekurzióval, ha már úgy is téma volt a funkcionális programozás. (Disclaimer: a thread valószínűleg semmilyen gyakorlati hasznonnal nem szolgál, aki ilyesmi keres az fogja fel logikai rejtvénynek.)

Köztudott, hogy rekurzióval mindent meg lehet oldani, legfeljebb nem lesz hatékony. Nézzünk egy egyszerű példát, fordítsunk meg egy python stringet:


def rev_str(s):
  if s == "":
    return s
  else:
    return rev_str(s[1:]) + s[0]
...
>>> s = "abcd"
>>> rev_str(s)
'dcba'

A feladat: az előzőhöz strukturálisan teljesen hasonló függvény definiálása, amely egy listát fordít meg, valahogy így:


def rev_lst(l):
  if l == []:
    return l
  else:
    ... l[1:] ... l[0] ...

Kérdések:
- mi legyen az utolsó sorban?
- miért nem működik a naív megoldás, miért működik a trükkös?

(Ez utóbbiban én sem vagyok biztos, ezért örülnék minden észrevételnek.)

[Megoldva] stdout buffer "bug" | sh pipe probléma

(A környezet: MIPS-es processzor, a rootfs egy jffs2 filerendszeren van)

Egy program kimenetét kellene feldolgoznom egy sh szkriptben, de ha pipe-on keresztül, vagy fileba írva próbálom feldolgozni, akkor csak egy bizonyos mennyiség után hajlandó kiírni, viszont ha elküldöm a /proc/self/fd/0 -ra, akkor azonnal kiírja a terminálon.

A filet, ami "vezetékként" szolgál a szkript és a program stdout-a között, az "mknod filenev p" paranccsal hoztam létre.

Mitől lehet ez a késleltetés?
(Ez a bizonyos mennyiség lehet hogy 1024byte, nem számoltam. Olyan, mintha cache-elne valahová, és csak akkor írná ki a fileba, ha az már megtelt. Ilyen problémára hol keressem a megoldást?)

Hogy lehet még "elküldeni" a szkriptemhez a folyamatosan áramló adatot?

---------

Megoldás: http://hup.hu/node/97918#comment-1202388

---------

awk tömb

egy olyan kérdésem lenne, hogy lehetséges e awk-ban egy asszociatív tömb eleme egy másik asszociatív tömb?
Nekem ezt dobja :(
awk: (FILENAME=- FNR=1) fatal: attempt to use array `alma' in a scalar context

Perl Mysql hash [megoldva]

Sziasztok!

Van egy Perl szkriptem amiben egy mysql lekérdezés adatait akarom egy hash-be eltárolni további feldolgozáshoz ha csak egy értéket akarok akkor egy tömbbe eltárolom így:

$query = "SELECT emberek.name FROM emberek ORDER BY emberek.name";
$sth = $dbh->prepare($query);
$sth->execute( );

while (@row = $sth->fetchrow) {
push (@nevek, $row[0]);
}

Csakhogy nekem kellene a név mellett az azonosító is ezért a lekérdezés így néz ki:

$query = "SELECT emberek.name, emberek.id FROM emberek ORDER BY emberek.name";
$sth = $dbh->prepare($query);
$sth->execute( );

Ugye így megkapom a $row[0]-ba a nevet a $row[1]-be az id-t de nem találtam olyan függvényt mint a push csak hash-re. Tud valaki ilyen függvényt? Vagy más módszer is érdekel

[Megoldódott] Python interpreter indítása meglévő konzolablakba: hogyan?

A probléma tehát, hogy Windowson az interpreter mindenképpen nyit magának egy külön konzolablakot, nem hajlandó meglévőbe írni a dolgait. Ezen lehetséges egyáltalán valahogy segíteni? Illetve ha valaki jó gugli keresőszavakat tud, azt is megköszönöm, sajnos túl sok a kérdés a neten a mindenféle konzolos mahinációkkal hogy az érdemi találatot észrevegyem.

Megoldás: annyi helyről hallottam, hogy náluk jó, hogy a végső megoldáshoz folyamodtam, és újratelepítettem. Most faja, bár nem értem miért. Mondjuk volt egy nem-főverzió ugrás közben.

[Megoldva] curl, post form

Sziasztok!

Lenne egy probléma, amire kéne írnom egy scriptet. Jó sok weboldalnak kellene átadnom ugyan az a adatot. A form method post, ami még önmagában nem is lenne baj, az adatokat át is tudom adni, viszont van egy kis gondom vele:

input type="Submit" value="Apply" align="MIDDLE"

A submit gombnak nincs neve. Ez esetben hogyan hivatkozok rá curl-el? Meg lehet oldani? Ha nem, akkor valami más tipp? Google nem sok sikerrel járt.

txt to postscript [?]

Van egy rakat txt fájlom.

mappa1/mappa2/valami.txt
mappa3/valami2.txt
mappa4/mappa5/valami3.txt

az odáig ok, hogy beledobom őket find/cat/stb.-vel, 1 db txt filébe [azért a txt, mert így névsorrenbe kerülnek, mert később lehet, h. bővítve lesznek, és akkor csak le kell futtatni a scriptet, 1 perc alatt kész az egész txt].

Egy gond van: az oldalak számozása. Hogyan lenne érdemes? Van olyan nyelv, ami támogatja az ékezetes karaktereket, és meg lehet benne adni, hogy mikor jön a következő oldal? Jó lenne az egészet automatizálni [ism.: jön egy új txt -> script lefuttat -> nyomtatható, kész tartalom/számozás, h. melyik txt melyik oldalon található, stb].

Előre is köszi.

shell feladvany

Aki megmondja, hogy mi a kulonbseg az alabbi ket shell kod kozott, az elmehet a boltba es vehet maganak egy csokit. :)

Nekem nem kell a megoldas, en mar megfejtettem egy kis szivas aran, de talan masnak is jot tesz egy kis agyalas (az alma es a barack mukodo programok). Gondold meg es ne olvass lejjebb, valaki biztos leirja a megoldast es oda a gondolkodas orome. ;)
(a shell bash, de szerintem majdnem mindegy)

--- 1. ---


if alma
  then barack
fi

--- 2. ---


alma && barack

shell feladvany

Aki megmondja, hogy mi a kulonbseg az alabbi ket shell kod kozott, az elmehet a boltba es vehet maganak egy csokit. :)

Nekem nem kell a megoldas, en mar megfejtettem egy kis szivas aran, de talan masnak is jot tesz egy kis agyalas (az alma es a barack mukodo programok). Gondold meg es ne olvass lejjebb, valaki biztos leirja a megoldast es oda a gondolkodas orome. ;)

--- 1. ---


if alma
  then barack
fi

--- 2. ---


alma && barack

Portra érkező adattovábbítás

Sziasztok!

A következőben kérném a segítségeteket:
egy telefonközpont a hívásadatokat elküldi egy meghatározott IP/port-ra ahol az feldolgozásra kerül egy Debian Etch alatt futó programmal.
A feladat az lenne hogy ezeket a rekordokat a program továbbra is fel tudja dolgozni, de továbbítani kellene egy másik IP címre is a beérkező rekordokat, hogy ott egy másik, Windows alapú program is fel tudja dolgozni. A telefonközpont csak egy IP/portra tudja küldeni ezért a Debianon kellene megoldani.. A kérdésem az lenne, hogy ez a továbbítás, hogyan, mivel oldható meg?