Marcel Eichner // Ephigenia

  • Home
  • Illustration
  • Code
  • Kontakt

Aktuelle Projekte

Horrorblog.org
jQuery.slideShow
Franklin
code.marceleichner.de

This Blog-Website is built with Harrison!

Blogs & Freunde

Gimmixx
Martin Fleck
Torsten Bergler
Jens Franke
Robokid
Peter Kröner
Polycoder
Coding Horror
Lotterliebe
CodeBalancer
Pseudocoder
Migrador
Piv-Berlin, Immobilienverwaltung Verwaltung Berlin Peter Arold Dachdeckermeister im Vogtland und Werda blogoscoop

#498

04.06.2010 12:39
3 Kommentare
Share
  • code
  • script
  • bash
  • shell
  • apache
  • benchmark
  • ab
In einem aktuellen Projekt steht bald ein signifikanter Server-Wechsel an. Um später genau sagen zu können, was das gebracht hat, wollte ich mehrere Teile der Website (verschiedene URIs) mit dem Apache Tool ab zu verschiedenen Tageszeiten, einmal vor Wechsel des Servers und nach Wechsel des Servers, testen. Da ich nicht viel Zeit verschwenden wollte, hab’ ich ein Shell-Script geschrieben das mir wenigstens die Arbeit abnimmt die verschiedenen URIs abzuchecken:
#!/bin/bash
##############################################################################
# Run ab on a list of URIs
#
# Usage:
#   ab_batch.sh
#
# Author: Marcel Eichner // Ephigenia <love@ephigenia.de>
# Date: 2010-06-03
##############################################################################
URL="http://www.horrorblog.org"
SLEEP=30
URIS=(
  "/"
  "/blog/reca-drei-clips-und-red-band-trailer/"
  "/blog/the-crazies-remake-horrorblog-kritik/"
  "/blog/the-crazies-interview-clips/"
  "/blog/the-devils-playground-erste-bilder/"
  "/blog/a-nightmare-on-elm-street-remake-horrorblog-kritik/"
)
date
echo -e "Batch Apache-Benchmarking on n${URL}"
for URI in ${URIS[@]};
do
  echo "uri: ${URI}"
  ab -c 10 -t 60 "${URL}${URI}" | grep -P "(request|second):"
  sleep ${SLEEP}
done

Das liefert dann zum Beispiel folgendes Ergebnis. Die Werte kann man dann in eine Tabelle übertragen und ein Diagram draus machen. Nach dem Server wechseln dann das ganze noch einmal durchführen und schon hat man einen schönen Beweis was der Umzug denn gebracht hat.
Fr  4 Jun 2010 12:15:54 CEST
Batch Apache-Benchmarking on
http://www.horrorblog.org
uri: /
Finished 349 requests
Requests per second:    5.57 [#/sec] (mean)
Time per request:       1794.754 [ms] (mean)
Time per request:       179.475 [ms] (mean, across all concurrent requests)
uri: /blog/reca-drei-clips-und-red-band-trailer/
Finished 588 requests
Requests per second:    9.79 [#/sec] (mean)
Time per request:       1021.170 [ms] (mean)
Time per request:       102.117 [ms] (mean, across all concurrent requests)
uri: /blog/the-crazies-remake-horrorblog-kritik/
Finished 407 requests
Requests per second:    6.78 [#/sec] (mean)
Time per request:       1474.255 [ms] (mean)
Time per request:       147.425 [ms] (mean, across all concurrent requests)
uri: /blog/the-crazies-interview-clips/
Finished 397 requests
Requests per second:    6.60 [#/sec] (mean)
Time per request:       1514.682 [ms] (mean)
Time per request:       151.468 [ms] (mean, across all concurrent requests)
uri: /blog/the-devils-playground-erste-bilder/
Finished 331 requests
Requests per second:    5.50 [#/sec] (mean)
Time per request:       1816.657 [ms] (mean)
Time per request:       181.666 [ms] (mean, across all concurrent requests)
uri: /blog/a-nightmare-on-elm-street-remake-horrorblog-kritik/
Finished 506 requests
Requests per second:    8.43 [#/sec] (mean)
Time per request:       1185.792 [ms] (mean)
Time per request:       118.579 [ms] (mean, across all concurrent requests)

Für Verbesserungsvorschläge bin ich wie immer offen! Kommentiert einfach!

#497

30.05.2010 21:31
0 Kommentare
Share
  • buch
  • javascript
  • js
  • O’Reilly
  • Verlag
  • Meinung
Da mir schon vor einiger Zeit der Computer-Lesestoff ausging, hab’ ich mir letzte Woche jQuery Cookbook bei Amazon bestellt.
Das Buch ist angefüllt mit praktischen Beispielen und Lösungen, auf die man, wenn man viel mit jQuery arbeitet, schon gestoßen ist. Wenn ihr Glück habt findet ich viele, oder so wie ich, weniger neue Sachen in dem Buch. Auf jeden Fall sollte man mal reinschauen! Die deutsche Ausgabe kommt im Juni raus, jQuery Kochbuch kann man schon vorbestellen.

#495

26.05.2010 00:54
0 Kommentare
Share
  • code
  • php
  • blog
  • tipp
  • links
  • Aktion
  • herz
  • websites
Ich bin nicht wirklich das Parade-Beispiel von jemanden der alle möglichen News-Quellen, Zeitungsartikel, Trend-Berichte liest. ich versuche jedes Gefühl von Das gab’s doch schon mal oder Das hätt’ ich auch gern gemacht von mir fern zu halten und will euch von daher meine Dauerbrenner-Blogs im Zuge der von meinem Namensvetter uarrr.org wieder ins Leben gerufenen Ein Herz für Blogs-Aktion vorstellen:

@TheKeyboard Das Blog des Programmierers Chris Hartjes ist immer wieder eine Erleuchtung wenn es um das große ganze beim Programmieren geht.

CodingHorror Die gleiche Qualität wie bei @TheKeyboard, nur eine andere Person. Auch eine absolute Empfehlung und Must-Read für jeden Programmierer!

HighScalability ist ein Blog für die Leute die gerne mal eine große Website betreiben. Den Tipp zu dem Blog bekam ich von Ugur von StudentSN und mittlerweile les’ ich, wenn ich Zeit hab viele Beiträge von dort um von den Großen zu lernen.

#494

02.05.2010 21:25
3 Kommentare
Share
  • code
  • tutorial
  • tool
  • script
  • bash
  • shell
  • Gewinner
  • Email
  • Verlosung
  • Beispiel
  • Datei
Wie manche von euch wissen betreibe ich seit einiger Zeit ja ein kleines aber mittlerweile echt ganz gut erfolgreiches Blog über Horror- und Fantasyfilme. Bei dem dritten Gewinnspiel haben über 150 Leute mitgemacht und mir eine Email geschickt. Leider etwas viele um per Losverfahren Gewinner auszuwählen. Das folgende Beispiel wird für erfahrene Programmierer nichts neues sein oder total langweilig. Eventuell hilft’s aber dem einen oder anderen weiter ;-)

Einfach mit OSX Mail die Mails extrahieren, die das richtige Lösungswort enthalten, oder die man untersuchen möchte. Dabei erstellt Mail einfach eine Datei mit allen Email-Quelltexten untereinander in einer Textdatei. Diese kann man super mit der Bash maltretieren und die Absenderadresse extrahieren:
grep -Z -P '^From:s(.+)' mail_export.txt | uniq
Wenn man dann noch zwei Gewinner auswählen möchte, braucht man nur doch die Anzahl der Zeilen in der Datei und wählt dann einfach zwei aus. Das ganze Shell-Script sieht dann so aus:
#!/bin/bash
##########################################################
# Extract n radom emails from a file
#
# Usage:
#   winner.sh [filename] [count]
#
# Author: Marcel Eichner // Ephigenia <love@ephigenia.de>
# Date: 2009-03-30
##########################################################
TMPFILE=`mktemp -t emails` || exit 1
grep -Z -P '^From:s(.+)' "$1" | uniq > $TMPFILE
# select random line from file
LCOUNT=`wc -l "${TMPFILE}" | awk ' { print $1; }'`
echo "Choosing ${2:-1} winners from ${LCOUNT} emails"
for (( i = 0 ; i < ${2:-1}; i++ ))
do
  LINENUMBER=$((($RANDOM % $LCOUNT) + 1))
  sed -n ${LINENUMBER}p ${TMPFILE}
done

Das Script kann wenn es ganz doof kommt auch zwei mal die gleichen Absender auswählen. Wenn das passiert kann man das Bash-Script ja gleich noch mal laufen lassen. Danke an Caspar der noch weitere hilfreiche Anregungen gegeben hat!

#493

07.03.2010 18:53
0 Kommentare
Share
  • code
  • wordpress
  • php
  • deploy
  • local
  • programmieren
  • tutorial
  • url
  • permalinks
  • config
Ich hab ja in letzter Zeit mal sporadisch mit dem wunderbaren Wordpress zu tun gehabt und konnte mich eine Weile damit beschäftigen. Viele Sachen gefallen mir nicht, unter anderem die Tatsache das Wordpress URLs immer komplett haben muss. Wie soll ich bitte lokal entwickeln wenn alle URLs komplett sind?

Dem lässt sich zum Glück relativ einfach abhelfen. Man legt sich einfach eine wp-config.php Datei an die man nur benutzt wenn man lokal entwickelt. Das kann man zum Beispiel am username im System festmachen:
$envUsername = strtolower(get_current_user());
$envConfigFilename = dirname(__FILE__).'/wp-config-'.$envUsername.'.php';
if (file_exists($envConfigFilename)) {
  require $envConfigFilename;
}

Und dann kann man in der lokalen Konfigurations-Datei einfach den Wordpress-Installationspfad überschreiben:
define('WP_HOME','http://'.$_SERVER['HTTP_HOST'].'/wordpress/path/');
define('WP_SITEURL', WP_HOME);

So hat man zumindest damit keinen Stress mehr. Wie man die Bilder lokal verlinkt weiss ich allerdings auch noch nicht …

#489

19.11.2009 12:56
4 Kommentare
Share
  • code
  • Geo
  • Service
  • Location
  • Based
  • Augmented
  • Reality
  • Iphone
  • App
  • Tourismus
  • Tourist
  • Reise
  • Empfehlungen
Erst vor zwei Wochen etwa hatte ich das Vergnügen und konnte den Layar-Browser auf einem der neuen IPhones 3Gs ausprobieren und war schlichtweg begeistert!

Dort kann man einfach den Bildschirm wie ein Fenster in einer andere Welt benutzen. Man schwenkt das Handy hin und her und sieht an welcher Stelle im Raum (in 3D dargestellt) sich zum Beispiel Wikipedia Einträge befinden. Ganz praktisch wenn man sich verlaufen hat und den Fernsehturm gerade nicht sehen kann um sich zu orientieren. Erst eine Spielerei - die aber durchaus imenses Potential hat das Leben der Menschen zu erleichtern. Die intuitive Art wie man das Handy bewegt hilft dabei nur ungemein.

In Layar kann man so gut wie alle Daten die einen Ort haben anzeigen lassen, vorausgesetzt es gibt dort einen Stream dafür. Neu dazu gekommen sind heute die Jungs und Mädels mit ihren Reisetips von Spotted by Locals. Wer sich nicht so richtig vorstellen kann wie das genau abläuft guckt sich am besten eines der Videos an die es bei Youtube gibt.

Also nur noch eine Frage der Zeit, bis alle Leute mit dem Handy vor dem Gesicht durch die Straßen rennen und sich niemand mehr verläuft! Es sei denn, der Akku is’ leer ;-)

#488

23.10.2009 11:10
0 Kommentare
Share
  • code
  • php
  • buch
  • empfehlung
  • clean
  • style
  • java
  • Programmierung
  • Qualität
  • Handwerk
Ich hab mir letztens für meine kleine Bibliothek Zuwachs besorgt und mir die englische Originalausgabe von Clean Code (Amazon-Affiliate Link) von Uncle Bob aka. Robert C. Martin besorgt.
Nach Code Complete, Code Craft die ca 300 Seiten dicker sind, ist das das dritte Buch das sich mit Quellcode-Qualität beschäftigt.

Anders als in den zwei anderen Büchern gibt es in Clean Code genauere konkrete Code Beispiele und weniger Statistiken. Was überzeugender ist kommt ganz auf den persönlichen Geschmack an. Statistiken sind super Argumente für Projektmanager oder Chefs um ihre Pläne durchzubringen wohingegen die konkreten Beispiele den einzelnen Programmierer ansprechen. Besonders die zwei wirklich konkreten und auch nachvollziehbaren Kapitel weiter hinten im Buch geben ein Beispiel daran.

Wunderbar finde ich auch, dass anders als in den anderen beiden Büchern das Thema Respekt angesprochen wird. So ist es weder falsch sondern eher richtig den Quellcode von jemand anderen zu analysieren und zu kritisieren denn nur dadurch kommt ein Dialog zu Stande und die Qualität verbessert sich.

Am Ende von Clean Code welches nur Java Beispiel beinhaltet - was aber nicht wirlich stört - werden alle "Regeln" noch einmal aufgezählt und viele kennt man schon aus anderen Büchern. Für mich war das eine schöne Auffrischung für mich und ein Ansporn noch länger über den richtigen Namen der nächsten Variablen nachzudenken!
Programmierung ist kein Service sondern ein Handwerk das es gilt zu beherrschen!

#465

01.07.2009 11:23
1 Kommentar
Share
  • code
  • plugin
  • javascript
  • tool
  • js
  • jquery
  • slideshow
  • effect
  • animation
  • free
Letzte Woche habe ich für ein Projekt endlich mal meine verschiedenen jQuery Scripte zu einem Plugin vereinigt, dass es sehr einfach macht einfache Slideshows in seiner Website einzubinden.
Würde mich freuen wenn es euch mehr weiterhilft als mein Franklin, das erst 2 mal runtergeladen wurde ;-) Über Feedback würd’ ich mich natürlich auch freuen.

Hier noch ein kleines Beispiel wie ihr die Slideshow benutzt:
$(document).ready() {
  $('.mySlideShow').slideShow();
}
Mehr Beispiele, auch mit den slideClick und gotoSlide Callbacks gibts auf der jquery.slideShow Plugin Seite.

Mittlerweile habe ich es auch geschafft das Plugin in das Plugin-Verzeichnis von jQuery einzutragen. Über positive Bewertungen würde ich mich freuen!

#464

19.06.2009 16:27
0 Kommentare
Share
  • code
  • php
  • google
  • tool
  • cron
  • job
  • statistic
  • graph
  • seo
  • open
  • source
  • franklin
Franklin ist ein kleines Tool das Werte über eine Website (mit Hilfe von Google oder API’s) ausliest, abspeichert. Diese kann man sich später in einem Graphen anzeigen lassen.
Der Funktionsumfang ist noch nicht wirklich immens, aber für die kleine Überwachung für den SEO Profi oder aus eigenem Interesse vielleicht einen Blick Wert.
Als Beispiel, damit man sich eine Vorstellung von der Ausgabe machen kann hab ich eine Demo online gestellt, die auch schon eine Weile läuft: franklin.marceleichner.de.
Achso ganz nebenbei großen Dank an die Sourceforge Leute die einen echt feinen Service haben!

#457

05.06.2009 13:49
0 Kommentare
Share
  • code
  • osx
  • App
  • terminal
  • tool
  • script
  • scripting
  • apple
iTerm ist eine willkommene Alternative zu der nativen Terminal App für OSX. Jetzt kann man die auch mit AppleScript verwursten.
Wenn man es Leid ist immer wieder die selben Terminal Fenster aufzumachen um Apache-Logs zu lesen oder die Datenbank zu überwachen sollte man überlegen ob das nicht noch besser geht. Klaro geht das besser! Mit Apple-Script!
tell application "iTerm"
  activate
 
  -- create server log terminal
  make new terminal
  tell the last terminal
    activate current session
    launch session "Default Session"
    tell the last session
      write text "clear;"
      write text "tail -f /Applications/MAMP/logs/apache_access.log"
      set background color to {15000, 200, 200}
    end tell
  end tell
  set the bounds of the first window to {0, 700, 840, 900}
  set the name of the first window to "apace_access.log"
 
  -- creat working terminal
  make new terminal
  tell the last terminal
    activate current session
    launch session "Default Session"
    tell the last session
      write text "welcome user, start now"
    end tell
  end tell
  set the bounds of the first window to {0, 0, 840, 660}
  set the name of the first window to "workspace"
 
end tell
So kann man ganze Fenster Setups zusammencoden und erspart sich so hoffentlich einen Haufen Zeit.

Nachtrag:
Man kann dann das Apple-Script auch automatisch bei jedem Start von iTerm ausführen lassen indem man es in ~/Library/iTerm/AutoLaunch.scpt ablegt. Weitere Beispiele gibt es auf der Scripting Seite von iTerm.
  • 1
  • 2
  • 3
  • weiter »
marceleichner HTML5 Harrison Theme (Validate Source), © 2010 by Ephigenia M. Eichner, Impressum