Archiv 12. Februar 2006

Sonntag, 12. Februar 2006

Mein Blog-Kalender (PHP)

Irgendwie hat dies in der Blogosphäre – oder zumindest bei meinem Blog-Dienstleister Blogger.com – noch gefehlt: Ein Kalender, in dem man die eigenen Blog-Einträge in einer leicht erfassbaren Auflistung wiederfindet.

Ich habe mich deshalb (trotz Prüfungen in der nächsten Woche) hinter SubEthaEdit gesetzt und etwas zurecht gecodet. Da ich mein Blog per FTP von Blogger.com direkt auf meinen Server spitzen lasse, verfüge ich zum Glück über die „Rohdaten“ und kann so die Artikel relativ einfach herausschälen. Per Blogger-API wäre dies natürlich noch schöner gewesen, aber leider verfügt diese nicht über die Möglichkeit, alle Posts nur mit dem Titel ausgeben zu lassen. Dann ist halt etwas Handarbeit angesagt … Die Monats-Archive parse ich mit ein paar Regex-Pattern. Das Script basiert auf PHP. Hier das Resultat:

Blog-Kalender

Kalender-Scripting – kleiner Wettbewerb gefällig?

Irgendwann im Leben eines jeden Programmierers erreicht ihn die ruhmvollen Aufgabe, einen Kalender zu coden. Die auf Anhieb nicht so triviale Aufgabe habe ich in meiner „Karriere“ nun bereits einige Male übertragen bekommen, doch erst jetzt bin ich überzeugt. Effizienter geht es nimmer, würde ich behaupten (Gegenvorschläge bitte im Kommentar oder per Mail an mich):

function bloggercal__make_cal_month($str_date_ym) { //str_date_ym e.g. '2006-02'
 global $arr_chron;
 
 $str_output = NULL;
 
 $str_regex_pattern = "^[0-9]{4}-[0-9]{2}$";
 if(!ereg($str_regex_pattern,$str_date_ym)) {
  return $str_output;
 }
 
 // --- BEGIN ESSENTIAL CODE ---
 
 $arr_date_start = getdate(strtotime($str_date_ym . "-01"));
 
 $str_date_end = $arr_date_start['year'] . "-" . ($arr_date_start['mon'] + 1) . "-01"; //Get the first day of the following month
 $arr_date_end = getdate(strtotime($str_date_end) - 1); //Substract 1 sec to get the last day of the month
 
 $int_wday = $arr_date_start['wday'];
 $arr_days = Array();
 for($i = 0; $i < $int_wday; $i++) { //Fills array until we arrive at 1st
  $arr_days[] = 0;
 }
 
 $int_day = 0;
 while($int_day < $arr_date_end['mday']) {
  $int_day += 1;
  
  $arr_days[] = $int_day;
 }
 
 while(count($arr_days)%7 != 0) { //Fills array until we get a full week
  $arr_days[] = 0;
 }
 
 $arr_weeks = array_chunk($arr_days,7);
 
 // --- END ESSENTIAL CODE ---
 
 $str_output .= "<h2>" . date("F Y",strtotime($str_date_ym . "-01")) . "</h2>";
 $str_output .= "<table class=\"tblCal\">\n";
 
 $str_output .= "<thead>";
 $str_output .= "<tr>";
 
 $arr_weekdays = Array(
      "So" => "Sonntag",
      "Mo" => "Montag",
      "Di" => "Dienstag",
      "Mi" => "Mittwoch",
      "Do" => "Donnerstag",
      "Fr" => "Freitag",
      "Sa" => "Samstag"
      );
 foreach($arr_weekdays as $str_weekday_short=>$str_weekday_long) {
  $str_output .= "<td>" . $str_weekday_short . "</td>";
 }
 
 $str_output .= "</tr>";
 $str_output .= "</thead>";
 
 foreach($arr_weeks as $int_week_no=>$arr_days) {
  $str_output .= "<tr>\n";
  
  foreach($arr_days as $int_mday) {
   if($int_mday == 0)
    $str_day = NULL;
   else
    $str_day = "<b>" . $int_mday . "</b>";
   
   $str_date = $str_date_ym . "-" . sprintf("%02d",$int_mday);
   if(isset($arr_chron[$str_date])) {
    $str_day .= "<ul class=\"ulArticles\">\n";
    
    foreach($arr_chron[$str_date] as $str_title) {
     $str_day .= "\t<li>" . $str_title . "</li>\n";
    }
    
    $str_day .= "</ul>\n";
   }
   
   $str_output .= "\t<td>" . $str_day . "</td>\n";
  }
  
  $str_output .= "</tr>\n";
 }
 
 $str_output .= "</table>\n";
 
 return $str_output;
}

Fazit: Nicht dass man einen Kalender coden kann, sondern wie effizient man diesen programmiert/scriptet sagt etwas über die Fähigkeiten eines Entwicklers aus.

Tags:
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 12. Februar 2006

Solitär gespielt – gefeuert

Wie ein schlechter Witz:

Wie das Blatt berichtete, hatte Bloomberg [Bürgermeister NY] vor einigen Wochen ein Büro in Albany besucht den Angestellten Eward Greenwood kennen gelernt. Dabei habe er das Spiel auf dem Computer bemerkt. Anstatt den Mitarbeiter direkt zur Rede zu stellen, forderte Bloomberg einen Assistenten auf, um ihn zu entlassen.

Quelle: Rausschmiss wegen „Solitär“

Die Argumentation des gefeuerten Angestellten folgt einem Comic von Userfriendly.org:

Greenwood […] said in a telephone interview that he limited his play time to his one-hour lunch or during quick breaks when he needed a moment of distraction. ‚It wasn’t like I spent hours and hours a day playing, because I had plenty to do,‘ Greenwood said. ‚If I had been working at something exhaustively for two hours, I might get a cup of coffee and play for a minute but then go right back to my work.'“

Quelle: Slashdot | Fired for Solitare At Work

Alles klar. Schade nur, dass er anscheinend derart blöd war, Solitaire Fullscreen laufen zu lassen und sich dann auch noch vom Arbeitsplatz wegzustehlen (so gelesen in den Kommentaren auf Slashdot). Irgendwo hat dann mein Mitleid doch Grenzen …

Weitere Userfriendly-Comics mit Bezug auf Solitaire: Cartoon for May 27, 1998, Cartoon for Feb 13, 2000, Cartoon for Jun 17, 2000, Cartoon for Jan 10, 2002

Persönlich mag mich das ja nicht wirklich zu überzeugen. Wenn man aber andererseits bedenkt, was uns Steuerzahler und/oder private Unternehmen die notorischen Raucher kosten, die mindestens vier Mal täglich eine paffen müssen … Irgendwann einmal macht sich dort ja dann auch der Krebs bemerkbar.

Raucher brauchen mehr Pausen Wenn Firmen das Rauchen im Betrieb eindämmen, geht es nicht nur um persönliche Vorlieben. Handfeste betriebswirtschaftliche Überlegungen spielen eine Rolle. Raucher leisten statistisch weniger als ihre nichtrauchenden Kollegen. Wer sich während der Arbeit täglich 20 Zigaretten gönnt, braucht für das Hervorholen, Anzünden und Handhaben der Zigarette schon zwanzig Minuten, ermittelt die Nichtraucherinitiative Deutschland e.V. Wenn das Rauchen nur in einem speziellen Pausenraum erlaubt ist, verqualmt der Mitarbeiter natürlich noch mehr Zeit, in der andere arbeiten. Auch die häufige Krankheit der Raucher kostet die Arbeitgeber Geld. Das Statistische Bundesamt hat ermittelt, dass Raucher im Durchschnitt dreißig Prozent häufiger krank sind als Nichtraucher.

Quelle: Schade sind wir nicht in Deutschland!

Arbeitgeber dürfen aus meiner Sicht also durchaus wählerisch sein, was Angestellte betrifft.

Reaktionen

Auf Slashdot setzte sich gar ein engagierter Kanadier für den Entlassenen ein:

This has to be some sort of hoax. Aren’t government employees in the States, or New York, unionised? If not, I apologise for my ignorance. I am a government employee in Canada. The most common way to fire me would be as part of a downsizing exercise and even in that case pains would be taken to transfer me elsewhere. The only other way would be to have a well documented case history of my incompentence. One game of solitaire just would not cut it. I don’t know why anyone would put up with this and just shrug and say „oh well, he’s the boss…you/he/I should shape up.“ You’re reaction should be, damn…its time to get some organised labour up in here.

Quelle: Fired for Solitaire At Work

[…] they are siding WITH THE MAYOR against one of their own. That’s where our unions are.

Wage slaves vote against their own interests, and those of the families, because of their distaste of „socialism“ and „big government“.

Quelle: Fired for Solitare At Work.

Aber das ist ja kaum ein neues Phänomen – auch in der Schweiz begrüsst man beispielsweise Steuergesetze, von denen man nicht selber, sondern nur die oberen Zehntausend profitieren. Was in den Köpfen vorgeht? Wohl selten kaum etwas – höchstens vielleicht der Gedanke „vielleicht profitiere ich ja auch einmal davon, wenn ich meine erste Million gemacht habe“. Wer aber so denkt, wird es aber leider gar nicht erst dorthin schaffen.

[Auswandern] A place without cameras on every street, a scenario the Mayor of Chicago is bringing to fruition. Our new transit passes will track our movements, we’re to be watched at all times, they’re reading our email and listening to our phones down here. I didn’t waste all that time growing up to live in a prison populated by cowards overseen by the paranoid and greedy.

Pointiert!

Tags:
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen