Monatliches Archiv für Dezember, 2007

Alte Bekannte und ihr PHP-​Code

Ich gebe zu: Ich mag PHP nicht. Es ist eine unstruk­tu­riere Dad­delspra­che, mit der man zwar schnell vie­les machen kann, aber nur weni­ges rich­tig struk­tu­riert desi­gnen. Jeder halb­wegs kom­plexe Code, der dann auch noch struk­tu­riert und — wich­tig — sicher sein soll, ver­liert sich in viel­fa­chen Indi­rek­tio­nen von einem mehr­di­men­sio­na­len Array zum nächs­ten. PHP ist was für Bast­ler und Tüft­ler, aber wer wart– und wie­der­ver­wert­ba­ren Code schrei­ben will, der sollte sich lie­ber eine andere Spra­che suchen.

Vor kur­zem unter­hielt ich mich mit einem Bekann­ten über einen gemein­sa­men drit­ten Bekann­ten, mit dem wir beide die­selbe nega­tive Erfah­rung gemacht hat­ten: Unzu­ver­läs­sig, nach­läs­si­ger Pro­gram­mier­stil, kaum wart­bar. Wir beide hat­ten ihn schon mal jeweils im Laufe eines Pro­jek­tes „ver­lo­ren” und anschlie­ßend sei­nen Teil weg­ge­wor­fen und neu geschrie­ben. War einfacher.

Was mir ent­gan­gen war: In einem Modul unse­res Sys­tem kreuchte der fünf Jahre alte Ori­gi­nal­code noch herum. Und natür­lich ist genau die­ser Teil Amok gelau­fen, als ich jetzt eine Por­tie­rung von PHP 4 auf PHP 5 vor­ge­nom­men habe. Höhe­punkt pro­gram­mier­tech­ni­scher Meis­ter­leis­tun­gen: Eine hier­ar­chi­sche Daten­struk­tur wird rekur­siv geparst. „((a b)(c d))” wird also zu „Array([0]=>Array([0]=>"a" [1]=>"b") [1]=>Array([0]=>"c" [1]=>"d"))”, wobei jedes Klam­mer­paar von einer neuen Instanz der­sel­ben Par­s­er­klasse aus­ein­an­der­ge­pflückt wird.

Dumm nur, wenn man statt neuer Instan­zen immer den­sel­ben Par­ser nimmt, der zudem nur einen Satz inter­ner Varia­blen hat. Dann geht die ganze Baum­struk­tur über den Jor­dan und das Par­sin­ger­geb­nis sieht so aus: „Array([0]=>"a" [1]=>"b" [2]=>Array([0]=>"a" [1]=>"b") [3]=>"c" [4]=>"d" [5]=>Array([0]=>"c" [1]=>"d"))”. Urks. Zwei Stun­den habe ich die PHP-​Spaghetti umge­baut, bis der Code das machte, was er soll.

Was ich daran jetzt PHP ankreide? Ganz ein­fach: Das hätte nie funk­tio­nie­ren dür­fen! Ich will lie­ber gar nicht wis­sen, wel­ches pro­gram­mier­tech­ni­sche Kabi­nett­stü­cken dazu geführt hat, dass diese völ­lig ver­hunz­ten Par­ser­kon­strukte fünf Jahre klag­los unter PHP 4 gelau­fen sind…

Schatzmeister in der Piratenpartei

Der eine oder andere, der mich kennt, weiß, dass ich bereits seit Novem­ber 2006 Mit­glied der Pira­ten­par­tei bin. Nach­dem ich das ganze nun ein Jahr als ein­fa­ches Mit­glied beob­ach­tet habe, hatte ich mich ent­schlos­sen, zum heu­ti­gen 2. Lan­des­par­tei­tag der nie­der­säch­si­schen Pira­ten als Bei­sit­zer im Vor­stand zu kan­di­die­ren. Das lief auch alles erst­mal so wie geplant, bis dann die bis­he­rige Schatz­meis­te­rin völ­lig über­ra­schend erklärte, dass sie nicht mehr zur Wie­der­wahl zur Ver­fü­gung steht. Ich weiß auch nicht, was mich gerit­ten hat, als ich mich statt­des­sen habe auf­stel­len lassen…

Naja, was soll ich sagen: Ich bin sogar gewählt wor­den. So habe ich jetzt das­je­nige Amt inne, das ich eigent­lich nie haben wollte. Aber ich denke, es wird span­nend. Erfreu­li­cher­weise über­nehme ich ja ein auf­ge­räum­tes Haus.

Server gehackt

E-​Mails, die man nicht so gerne bekommt: „Sehr geehrte Damen und Her­ren, Ihr Ser­ver hat einen Angriff auf einen ande­ren Ser­ver im Inter­net aus­ge­führt. Dabei wur­den erheb­li­che Netz­wer­kres­sour­cen bean­sprucht und folg­lich ein Seg­ment unse­res Netz­wer­kes stark nega­tiv beein­träch­tigt. Ihr Ser­ver wurde des­halb vor­sorg­lich deak­ti­viert. Mit freund­li­chen Grü­ßen, Ihr Hos­ting­pro­vi­der.

Auch nach 2:00 Uhr nachts löst sowas einen anhal­tend hohen Adre­na­lin­spie­gel aus. Ich gehe dann aber doch irgend­wann ins Bett und schaue mir die Besche­rung am nächs­ten Mor­gen über die Fern­zu­griffs­kon­sole an. Die Load ist wie­der bei 0, aber wenn in /tmp eine Datei back liegt, die ein Perlskript beinhal­tet, das auf einem Port auf wei­tere Kom­man­dos lau­ert, dann ist irgend­was nicht in Ordnung.

Nach umfang­rei­cher Daten­si­che­rung plätte ich den Rech­ner und spiele die aktu­elle SuSE 10.3 auf. Noch bin ich aber ein wenig unschlüs­sig: War es wirk­lich nur das zuge­ge­be­ner­ma­ßen ziem­lich antike Linux mit dem genau­so­gut abge­han­ge­nen Apa­che auf dem Rech­ner? Oder hat da wohl auch das nicht wirk­lich aktu­elle Mambo einer der lau­fen­den Web­prä­sen­zen sein Scherf­lein zu beigetragen?

Jetzt ist jeden­falls Kul­tur­schock ange­sagt: Statt Mambo kommt Joomla auf die Kiste und wir haben auch nicht mehr PHP 4, son­dern das ja nun zuge­ge­be­ner­ma­ßen auch schon nicht mehr ganz neue PHP 5 in aktu­el­ler Ver­sion. Inso­fern hat ja alles irgend­wie auch sein Gutes.

Die­ser Hacker oder Bot­be­trei­ber sollte sich trotz­dem hüten, mir über den Weg zu laufen…

Sockfuß

Eine Kol­le­gin, gebür­tige Kie­le­rin, erzählt mir, wie ihr beim Schlitt­schuh­lau­fen die Stra­ßen­schuhe geklaut wur­den. Mut­ter brachte dann Ersatz­schuhe, die aber so aus­ge­lutscht waren, dass sie — puber­tie­rend und von Freun­din­nen umge­ben — „am liebs­ten sock­fuß wei­ter­ge­gan­gen wäre”.

„Sock­fuß”. Ein span­nen­des Wort. Ich kannte bis­lang nur den Aus­druck „auf Socken” dafür, dass man zwar nicht bar­fuß ist, aber auch keine Schuhe anhat. Wir rät­sel­ten ein wenig, ob es sich dabei wohl um ein typi­sche nord­deut­sches Idiom han­delt. So wie „krö­keln” ein typisch han­no­ver­sches Wort für Tisch­fuß­ball ist. So rich­tig zu einem Ergeb­nis kamen wir aber nicht.

Nun habe ich mal Google befragt. Ergeb­nis: 313 Tref­fer (unge­fähr). „Auf Socken” bringt es auf 24.500. Viele Tref­fer sind einem gewis­sen Sock­fuss geschul­det, der auch bloggt und in Foren schreibt. Span­nen­der: Zum einen kommt der Begriff im „Ang­ler­fo­rum Schleswig-​Holstein vor und zum ande­ren im Titel eines Youtube-​Videos: Beschuht — Sock­fuß durch Nütschau. Wenn dort das Klos­ter Nütschau gemeint ist, dann deu­tet auch das auf Schleswig-​Holstein hin. Nicht wei­ter hilft übri­gens der Duden. Seine ein­zige Ein­las­sung: „Mein­ten Sie: ‚Zuck­fuß’?

Trotz­dem scheint es fast so, als wäre „sock­fuß” wirk­lich ein Begriff, den man vor allem nörd­lich von Ham­burg benutzt. Meine Kol­le­gin hat mir aber ver­si­chert, zu noch stär­ker beklei­de­ten Füßen wür­den sie nicht „schuh­fuß” sagen.

Einkaufen

Vier­tel nach elf Uhr abends. Auf dem Weg nach Hause. Hun­ger. Kein Brot im Haus. Was tun? Frü­her wär’s dann wohl doch die Tief­kühl­pizza gewor­den. Oder der China-​Bringdienst. Heute haben wir den gro­ßen Kauf­land hin­ter dem Bahn­hof, der ein­fach immer auf hat: Von Mon­tag um 6:00 Uhr bis Sams­tag um 24:00 Uhr.

Wie soll man eigent­lich Jün­ge­ren erklä­ren, wie das frü­her war? Um 18:30 Uhr war Schluss. Nicht mal mehr im Bahn­hof war noch was zu bekom­men. Und was war das für eine Sen­sa­tion, als es den „Dienst­leis­tungs­abend” gab. Wo die Geschäfte bis 20:00 Uhr auf­hat­ten. War das eigent­lich Diens­tag oder Donnerstag?

Naja, bevor das hier in so eine „Was der Opa noch wusste”-Litanei aus­ar­tet: Es dürf­ten um kurz nach 23:00 Uhr noch so gut fünf­zig Kun­den im Laden gewe­sen sein. Bei sechs offe­nen Kas­sen gab es auch nicht wirk­lich eine Warteschlange.

Und dass fünf Bröt­chen nur sech­zig Cent gekos­tet haben, erin­nert einen dann ja fast schon wie­der an die gute alte Zeit… (Eigent­lich wollte ich das anders for­mu­lie­ren — weiß irgend­je­mand, wie man „Remi­ni­s­enz” schreibt?)

Spam, Spam, Spam, Wonderful Spam: Postfix dreht am Rad

Wenn die Work­sta­tion unver­mit­telt beim MP3-​Abspielen Aus­set­zer hat, wird man miss­trau­isch. Zumal wenn die lokale Aus­las­tung unpro­ble­ma­tisch ist. Hm. Der NFS-​Server? Per ssh ein­log­gen. Yup, zäh. Load 3,5. „qmgr” zieht Rechen­zeit wie ein Gro­ßer. Was ist da los? Der Auf­ruf von „mailq” lässt nichts Gutes ver­mu­ten: Er scrollt und scrollt und scrollt. „tail –f /​var/​log/​mail” löst Roten Alarm aus: Ver­bin­dun­gen in alle Him­mels­rich­tun­gen wer­den auf­ge­baut und es wird (offen­sicht­lich so gut wie immer erfolg­los) ver­sucht, E-​Mails auszuliefern.

Panik!

Ist unser Post­fix gehackt? Ein offe­nes Relay womög­lich? Buchen wir gerade Logen­plätze in den Black­lists die­ser Welt???

Erst­mal den gan­zen Post­fix anhal­ten. Noch­mal „mailq”: Ins­ge­samt 6037 E-​Mails sind „defer­red”, wer­den also zurück­ge­hal­ten. Urks. Ein­mal drü­ber­schauen: Nur unbe­kannte Absen­der. Was geht hier vor??? Ich über­lege kurz und hole dann erst­mal den Eiser­nen Besen her­vor. Mit

for i in `mailq | grep "^[0-9A-F]" | cut -c1-10 | sed /s/\*//g` ; do echo $i ; postsuper -d $i ; done

leere ich erst­mal die Queue. Dann vor­sich­tig den Post­fix wie­der star­ten. Sofort wie­der High Life an Port 25. Ich reihe mich mal ein und mache meine übli­chen Tests auf Relay­ing. Nega­tiv. Puh! Dann beob­achte ich das mun­tere Trei­ben und ver­stehe end­lich genauer, was gespielt wird:

Unser Post­fix ist — wir sind halt zu lieb — immer noch auf den emp­foh­le­nen Stan­dard ein­ge­stellt, Zustel­lun­gen bis zu vier Tage lang zu ver­su­chen, bevor eine E-​Mail end­gül­tig ver­wor­fen wird. Und außer­dem set­zen wir Absen­der immer noch davon in Kennt­nis, dass sie eine nicht vor­han­dene E-​Mail-​Adresse anspre­chen woll­ten. Lei­der ist die Mischung im heu­ti­gen Inter­net explo­siv: Es wird eine Boun­cemes­sage gene­riert, die aber nicht ange­nom­men wird. Also wird noch­mal ver­sucht. Und noch­mal. Und nochmal.

User­sei­tig habe ich den Spam ja mit spa­mas­sas­sin und Thun­der­bird schon län­ger im Griff. Scheint so, als ob ich mir so lang­sam mal Gedan­ken über Ent­las­tungs­maß­nah­men auf Sys­tem­seite machen muss. Vor­schläge anyone?

Wolfgang Schäuble und die Stasi 2.0

Lie­ber Wolf­gang Schäuble,

die Wirt­schafts­Wo­che fragt Sie in einem Inter­view: „Herr Schäu­ble, seit Ihren Plä­nen für Online-​Durchsuchungen müs­sen Sie sich den Vor­wurf gefal­len las­sen, ein Modell der Stasi 2.0 umzu­set­zen. Wie lebt es sich mit dem Ruf eines Über­wa­chungs­mi­nis­ters?” Dar­auf ant­wor­ten Sie: „Damit lebe ich unbe­schwert, da sol­che Vor­würfe mit der Rea­li­tät nichts zu tun haben. Die jun­gen Men­schen, die mir der­ar­tige Vor­hal­tun­gen machen, mei­nen das ja auch nicht ernst.

Es freut mich, dass ich, Jahr­gang 1972, immer noch den „jun­gen Men­schen” zuge­rech­net werde. Ansons­ten zeigt diese Ein­las­sung mal wie­der, mit wel­cher Her­ab­las­sung Sie mit den Grund­wer­ten die­ses Staa­tes umge­hen. Eigent­lich sollte es einem Bun­des­in­nen­mi­nis­ter zu den­ken geben, wenn sein Name viel­tau­send­fach in einem Atem­zug mit einer anti­de­mo­kra­tischs­ten Ein­rich­tun­gen der jün­ge­ren deut­schen Geschichte genannt wird. Und es ist ja nicht so, dass Ihre irr­lich­tern­den Ideen zur Online-​Durchsuchung der ein­zige Anlass für so einen Quer­ver­weis wären. Eigent­lich kann man ja mitt­ler­weile dar­auf wet­ten, dass Sie spä­tes­tens jedes zweite Wochen­ende eine neue Sicher­heits­sau durchs Ter­ro­ris­mus­dorf trei­ben. Mal wer­den Poli­zei und Geheim­dienste zusam­men­ge­legt, mal reden Sie mög­lichst weit gehen­den prä­ven­ti­ven Poli­zei­rech­ten das Wort. Die Unschulds­ver­mu­tung ist für Sie ja eigent­lich auch nur stö­ren­des Bei­werk im Hei­li­gen KriegKampf gegen den Ter­ror. Und wer ver­däch­tig ist, der wird am bes­ten erst­mal weg­ge­sperrt — prä­ven­tiv, ver­steht sich. Damit das alles klappt, brau­chen wir schließ­lich noch eine Bun­des­ab­hör­zen­trale.

Worin unter­schei­den sich Ihre Pläne jetzt genau von der DDR-​Stasi?

Sie ver­ste­hen es ja, bei all Ihrem nur wenig an den Grund­rech­ten ori­en­tier­ten Han­deln eine staats­män­ni­sche Fas­sade vor­zu­täu­schen. Nur manch­mal, da blitzt durch, was Sie da tief drin in Ihrer Innen­mi­nis­ter­seele wirk­lich den­ken mögen: Der Ver­gleich von „größ­ter Ver­fas­sungs­be­schwerde” und „Grö­FaZ” war schon ganz schön unter jeg­li­cher Gürtellinie.

Noch mögen Sie so über Ihre Kri­ti­ker her­zie­hen kön­nen, Herr Schäu­ble. Aber ich bin mir sicher, dass Sie irgend­wann in nicht all­zufer­ner Zukunft eine Weis­heit ein­holt, die schon meine Groß­mut­ter kannte: Hoch­mut kommt vor dem Fall.

Dirk Hill­brecht

Asus M2NPV-​MX, M2NPV-​VM and additional graphics card

Mul­ti­ple of our office com­pu­ters are based on the fine Asus M2NPV-​MX or M2NPV-​VM main­boards. Now one of the com­pu­ters should get a second moni­tor. First attempt: One into the board’s DVI plug, one to the „nor­mal” VGA port. Works flaw­lessly, the Linux NVi­dia dri­ver allows to setup both ports inde­pently and wit­hin some minu­tes you have a very nice and wide Xiner­ama desktop.

Second attempt: Put an addi­tio­nal gra­phics card into the com­pu­ter with ano­ther DVI port so that both moni­tors are digi­tally con­nec­ted. I purchase a cheap fan­less PCIe gra­phics card with NVi­dia 6200LE chip. Plug in. Boot. Works. Errr. Sort of.

I am not able to activate both cards at the same time. BIOS allows to define eit­her onboard or PCIe gra­phics card as pri­mary card. But the non-​primary card seems to be totally disa­bled and unu­se­able for the ope­ra­ting sys­tem. Linux’ hard­ware infor­ma­tion does always only report one of the gra­phics adapters.

Ok, the BIOS. It’s an –MX board and its BIOS 0509 is from Oct 2006. Cur­rent ver­sion: 1101 from Sept 2007. I per­form the update. Cool. Now the gra­phics option is dif­fe­rent: „Activate eit­her PCIe or onboard” and „Activate BOTH PCIe and onboard”. This seems sim­ple: Second option, saving, reboo­ting. Hooray! Linux now reports both gra­phics adap­ters available.

Unfor­t­u­na­tely, it still does not work. the board does always only activate the PCIe card. Any attempt to access the onboard chip is eit­her unsuc­cess­ful or even cras­hes the sys­tem. We’re tes­ting and try­ing the whole after­noon. No chance. Dig­ging through the inter­net brings some reports of simi­lar pro­blems.

Finally, we remove the PCIe card and replug the moni­tors to the buil­tin gra­phics ports. Now the work­sta­tion is use­able again with both moni­tors. I see three pos­si­ble solutions:

  • Wait for the next BIOS update which hope­fully fixes the problem.
  • Con­ti­nue living with the cur­rent setup. But there is a dif­fe­rence bet­ween ana­log and digi­tal video signals!
  • Buy ano­ther PCIe card which con­tains two DVI ports on its own. The chea­pest are around 80 EUR. That’s quite some money, espe­cially as the board its­elf costs less.

Ok, there is an oppor­tu­nity that we have over­seen that one BIOS set­ting which makes the dif­fe­rence. But we really tried lots of them…