Is it just み?

Tag: Argh!

Developers Shame Day 2010

by on Nov.03, 2010, under PHP, Programmierung

Danach habe ich gesucht – ein Vorwand der mir wieder Lust macht was in mein Blog zu schreiben.

Auf zum…

Auch bei mir finden sich ziemliche Klöpse aus meiner PHP-Anfangszeit und daher möchte ich doch gerne meine Unfähigkeit in der Vergangenheit  protokollieren. und das obwohl PHP nicht meine erste Programmiersprache war – ich glaube ich werde in meine Pascal und Delphi Quelltexte aus Schulzeiten lieber erst gar nicht mehr reingucken… Man möge mir einfach glauben, dass ich dazugelernt habe. Wirklich!!!1!

Das folgende Beispiel ist schon ein wenig gekürzt, sollte aber die vielen Probleme und Dämlichkeiten deutlich zeigen. Ich glaube das war so von 2002 oder so.

In der “secure.php” wurde bloß das übertragene Passwort überprüft. Und ob dem Benutzer der vorher in der globalen Variable $permstring gesetzte String zugeordnet ist – ‘SA’ stand, glaube ich, für “Server Admin”. Man achte auch auf das hardgecodete (jedoch hier durch XXX ersetzte) $_POST[‘password’]. m(

Der Rest des Codes schreibt Befehle in eine Datei, die dann alle 5 Minuten mit root-Rechten (!) von eimen Cronjob als Bash-Script abgearbeitet wird. Übelst.


<?php


session_start
();

$permstring 'SA';
include(
'secure.php');
$myself basename($_SERVER['PHP_SELF']);

function 
writeCommand($command)
{
  
$cronfile '/srv/www/htdocs/XXX/html/XXXcron';

  
$fp fopen($cronfile,'a');
  
fputs($fp,$command."\n");
  
fclose($fp);
}

$jobs = array(
  
//array( Gruppe, Bezeichner, Befehl, Beschreibung)
  
array('Sonstiges''timesync''/root/timesync > /dev/null''Zeitsynchronisation'),
  array(
'Apache''apache2_restart''/etc/init.d/apache2 restart > /dev/null''Apache2 Restart'),
  array(
'Lokales Backup''local_backup_mysql''/root/local_mysqlbackup > /dev/null''Lokales MySQL-Backup (FullDump)'),
  array(
'Lokales Backup''local_backup_webs''/root/local_websbackup > /dev/null''Lokales Webspace-Backup (Alle Webs)'),
  array(
'Backup''backup_webs'    '/root/websbackup > /dev/null''Webspace-Backup (Alle Webs)'),
  array(
'Backup''backup_srvbackup''/root/srvbackup > /dev/null''/srv-Backup (Alle Webs)')
);

sort($jobs);

if(
$_POST['password'] == 'XXX' && !empty($_POST['which']))
{
  echo 
"
    <center>
    <div style='width: 350px; border: 2px #AA0000 dashed; text-align: left; vertical-align: middle; padding: 20px;'>
    <br/>
    <center style='color: #FF0000; font-weight: bold;'>
        Folgende Änderungen wurden geschrieben:
    </center>
    <br/>"
;

  
$which $_POST['which'];
  echo 
"
    <ol>"
;

  for(
$x=0;$x<count($which);$x++)
  {
    for(
$y=0;$y<count($jobs);$y++)
    {
      if(
$which[$x] == $jobs[$y][1])
      {
        echo 
"<li>";
        
writeCommand($jobs[$y][2]);
        echo 
$jobs[$y][3];
        echo 
"</li>";
      }
    }
  }

  echo 
"
    </ol>"
;
  echo 
"
    <br/>
    <div style='color: #FF0000; font-weight: normal; font-size: 10px;'>
    Die Abarbeitung der Aufgaben wird innerhalb der nächsten 5 Minuten beginnen.<br/>
    <i>Eventuelle Fehlermeldungen werden an root geschickt.</i><br/>
    </div>
    <br/>
    </div>
    </center>"
;
}
else
{
  echo 
"<form action='$myself' method='POST'>";
  for(
$x=0$x<count($jobs); $x++)
  {
    if(
$gruppe !=  $jobs[$x][0])
      echo 
'<b>'ucfirst($jobs[$x][0]) .':</b><br/>';
    if(@
in_array($jobs[$x][1], $_POST['which'])) $checked 'checked=checked ';
      echo 
"<input type='checkbox' name='which[]' value='"$jobs[$x][1] ."' $checked/>"$jobs[$x][3] ."<br/>";
    
$checked '';
    
$gruppe $jobs[$x][0];
  }
echo 
"
  <br/>
  Autorisation: <input type='password' name='password' /><br/>
  <input type='submit' value='Starten...'/>
  </form>"
;
}

Es tut schon ein wenig weh, diesen alten Code, den ich aus meinem ältesten Festplatten-Backup geholt habe zu veröffentlichen, irgendwie habe ich jetzt das verlangen duschen zu gehen…

Ab Morgen kann ich ja wieder so tun als würde ich keine Fehler machen. 😉

3 Comments :, more...

[Bild] Frisch gepresst

by on May.27, 2010, under Argh!, Asides

Comments Off on [Bild] Frisch gepresst :, more...

Keyboard vs. Mouse

by on Nov.13, 2009, under Asides, Computer

Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen – um in der Übung zu bleiben.

Do most people really never use the keyboard to work with desktop applications more quickly? There are so many cases of applications that are completely unusable with the keyboard – and I am not talking about image processing which cannot work without a mouse (though those programs are mostly optimized for keyboard use as much as possible, just take a look at photoshop).

But many programs (especially under windows) don’t allow even the simplest tasks to be done via keyboard. While I can automate most of the tasks I have to do again and again and again in Office1 via Shortcut, most all of the addins I have to use do not support keyboard use.

Linux is usually better, but far from perfect in this respect: Can anyone tell me how to search in Synaptic (the default gnome package manager) and change where to search in? How do i change from “name” to “name and description” only using the keyboard?

1 I have to admit, Microsoft really did a good job to make Office 2007 usable via keyboard.

Comments Off on Keyboard vs. Mouse :, , , more...

Proprietäre Software

by on Nov.06, 2009, under Argh!, Asides

Nun habe ich lange Zeit hauptsächlich mit freier Software arbeiten können – mal abgesehen davon, dass auf der Arbeit zu 80% Windows als Betriebssystem zu Einsatz kam und man an Powerpoint nicht vorbei kam, war die ansonsten genutzte Software fast vollständig frei.

Nun muss ich wieder ein unfreies Programm namens Articulate einsetzen und hatte unglaublich viele und nervtötende Probleme damit: Daten wurden unvollständig exportiert, Dialoge waren plötzlich leer, Dateizuordnungen verschwunden und tausend weitere kleinere Dinge…

Bei meinen Kollegen traten diese Probleme nicht auf. Ich habe mich also auf die Suche gemacht und bin dann erst viel später auf die eigentlich offensichtliche aber dank meiner Gewöhnung an gute Software verloren gegangene Lösung gekommen: Neu starten.

Articulate ist ein Powerpoint-Addin und ich hatte durchgehend ein Makrodokument im Hintergrund auf – dadurch wurde Articulate nie neu gestartet und drehte nach kurzer Zeit vollkommen ab. Die “Lösung” ist also: Nach jedem zweiten Arbeitsschritt alles schließen und wieder öffnen – ich erinnere mich wieder an Windows 95 Zeiten… 🙁

Wie schlecht muss eigentlich ein Addin geschrieben sein, dass beim Öffnen einen neuen Dokuments solche Probleme auftauchen? Es war ja nicht nur eine Kleinigkeit, sondern defekte Dialoge und sogar komplett fehlende Daten. Der Support ist übrigens nicht einmal auf die Neustart-Lösung gekommen. Vielleicht zu offensichtlich, der Standardnutzer schließt eh alle 5 Minuten alles…

Comments Off on Proprietäre Software :, , , more...

Die hatten schon was drauf, damals…

by on Aug.11, 2007, under Asides

Manchmal zweifle ich an mir.

Da hab ich mich doch eben bei der Frage ertappt wie die das damals geschafft
haben so genau zu messen, um die die Sternwarte in Greenwich genau auf den
Nullmeridian bauen zu können…

Comments Off on Die hatten schon was drauf, damals… :, more...