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
Dachdeckermeister Peter Arold in Werda, Plauen, Hof und Umgebung La Petite Provence - Pension und Festsaal in Leisnig Piv-Berlin, Immobilienverwaltung Verwaltung Berlin blogoscoop

#506

28.06.2011 11:16
0 Kommentare
Share
  • config
  • facebook
  • server
  • nginx
  • hotlinking
  • referer
  • block
  • how-to
Almost two weeks ago I moved my personal blog-project horrorblog.org from a domainfactory managed hosting server to a JiffyBox which is a scalable cloud server solution also by domainfactory. I won’t talk about the setup for now (but later this or next week) but I want to show you an example for a nginx config file that prevents your images from beeing hotlinked but still enabling google and facebook.

Prevent hotlinking in nginx is really simple and some rules and examples can be found via google:
# apply this rule on any location that’s an image using Regexp
location ~* \.(png|gif|jpg|jpeg|swf|ico)(\?[0-9]+)?$ {
  # block empty blocked or whiteliste referers
  valid_referers none blocked horrorblog.org www.horrorblog.org;
  if ($invalid_referer) {
    return 403;
  }
}

This works fine, unless you won’t have your images displayed on facebook when anybody likes your stuff with the facebook share button (og:image) or in google image search. The solution that enables facebook to grab the images from your host is by adding
~\.facebook\.
and
~\.fbcdn\.
to the whitelist of hosts:
# apply this rule on any location that’s an image using Regexp
location ~* \.(png|gif|jpg|jpeg|swf|ico)(\?[0-9]+)?$ {
  # block empty blocked or whiteliste referers
  valid_referers none blocked horrorblog.org www.horrorblog.org ~\.google\. ~\.yahoo\. ~\.bing\. ~\.facebook\. ~\.fbcdn\.;
  if ($invalid_referer) {
    return 403;
  }
}

#505

30.03.2011 19:25
0 Kommentare
Share
  • google
  • filter
  • mail
  • notification
  • boolean
  • operator
Nach dem ich am Montag Die Kunst der Mailminimierung - Hermetisches Schreiben von Sascha Lobo auf Webciety gelesen hatte, hab’ ich mich gestern Abend ran gemacht und meine Google Mail Filter überarbeitet. Der Vorteil daran, seine Mails direkt in Google Mail zu filtern, und nicht erst im Mail Client (Mail, Thunderbird) liegt darin, dass die E-Mails schon von Google gefiltert werden und so auf jedem Endgerät, auf dem man seine E-Mails lesen will, schon sauber sortiert ankommen.

Bestimmt hat jeder von euch irgendeinen kleinen Filter, der zum Beispiel Newsletter oder die Mails von der Familie in einen entsprechenden Ordner legt.
So lange man dabei mit der Benutzung der ersten drei Felder From, To und Subject, die später alle zu einer UND Verknüpfung werden, klar kommt, ist alles super. Nun ist es aber so, dass man, wenn man mehrere Kriterien die auf To und Subject mit ODER verknüpft werden sollen nur zwei Möglichkeiten hat:
Entweder man erstellt zwei Filter mit einmal dem gefüllten To Einstellungen und einmal mit gefüllten Subject Einstellungen oder man macht es auf die elegante Weise und benutzt das Has the Words Feld.

Dieses Has the Words sucht eigentlich in der gesamten E-Mail (auch in den Headern) nach dem Vorkommen der gewünschten Zeichenkette. Wenn man den Suchbegriff jedoch mit geschweiften Klammern {} einklammert kann man hier jede Menge coole Sachen machen:

Suche in E-Mails die an horrorblog.org gingen, dabei soll es egal sein ob sie direkt oder via cc an horrorblog.org gingen:
Abgekürzt geht’s auch so:

Der Clou dabei ist, wie oben schon erwähnt, das Google Mail jetzt in den Feldern mit ODER statt mit UND sucht. Hätte man einfach in die From, To Felder horrorblog.org eingetragen, hätte der Filter nur funktioniert, wenn die Mail von und an horrorblog.org geschickt worden wäre.

Die ganze Macht der Filter kommt auch in dem folgenden Beispiel zu tragen, mit dem man alle E-Mails die von so automatischen Services kommen gesammelt in einen Ordner Notifications packen lassen kann:

Die generelle Syntax für die UND oder ODER Verknüpfungen in den Filtern wird auch in Build advanced Gmail filters and persistent searches bei Lifehaker beschrieben wo es heisst, dass normale Klammern () immer UND bedeuten und geschweifte Klammern {} ein ODER. Diese Filter kann man übrigens am besten bearbeiten, wenn man sie vorher in einem Text-Editor (mit Syntax Highlighting) bearbeitet und dann in das Feld pastet. Die Filter funktionieren auch in der normalen Suche von Google Mail.

#503

14.07.2010 11:40
0 Kommentare
Share
  • firefox
  • tool
  • open
  • source
  • console
  • Nerd
  • extension
Screenshot vom Vimperator in Aktion
Auf dem LinuxTag 2010 hat Caspar die Vimperator Erweiterung für den Firefox Browser vorgestellt die ich mir zu Hause gleich zu Gemüte geführt habe.

Die Erweiterung ist total für Nerds gedacht. Man kann den kompletten Browser, alle Links und Befehle von der durch den Vimperator hinzugefügten Kommandozeile aufrufen. So bekommt man noch mal mindestens 100 Pixel in der Höhe Platz für die Websites und gerade auf Netbooks ist das eine Menge Platz!

Nach einer leichten Einführungsphase um die wichtigsten Befehle wie
o www.spon.de[ENTER]
für Seite aufrufen oder
t www.horrorblog.org[ENTER]
für Tab öffnen zu lernen hab ich mir mitlerweile die komplette Bedienung zugelegt und auch schon mein erstes "Plugin" geschrieben das mit die aktuelle URL mit Bitly als ShortURL in die Zwischenablage legt. Hier meine eigene
.vimperatorrc
Datei die noch ein paar mehr Sachen macht:
" only use with buftabs plugin
set showtabline=0
"
custom colorsheme
colorscheme darkness
" set textmate as editr

set editor="mate -w"
" show hover links in status bar

set showstatuslinks=2
js document.getElementById("status-bar").setAttribute("moz-collapsed", false);
" no error sound, just flash display

set errorbells visualbell
" alternative tab navigation

map b gt
map v gT
" tab navigation via arrow keys

map <Left> <C-p>
map <Right> <C-n>
map h <C-p>
map l <C-n>
" bit.ly shortener.

javascript <<EOF
shortenURLIsGd = function (url) {
  var req = new XMLHttpRequest();
  " get your username and api key from bit.ly!!!

  req.open("GET", "http://api.bit.ly/v3/shorten?login=[Username]&apiKey=[API_KEY]&format=txt&longUrl=" + escape(url), true)
  req.onreadystatechange = function (ev) {
    if (req.readyState == 4) {
      if (req.status == 200) {
        util.copyToClipboard(req.responseText, true);
      } else {
        liberator.echo(req.responseText);
      }
    }
  }
  req.send(null);
}
EOF
map <silent> short :javascript shortenURLIsGd(buffer.URL);<CR>
map <silent> bitly :javascript shortenURLIsGd(buffer.URL);<CR>

Des weiteren sei noch erwähnt, dass man noch weitere ColorShemes oder Vimperator Plugins im Internet findet. Ein super Plugin ist auch das Buftabs Plugin, dass sogar die Tableiste überflüssig macht.

[UPDATE #1] Dank der Aktualisierung von Geshi, das das Code-Highlighting hier im Blog erledigt sieht das Vim-Script jetzt auch schön bunt aus.

#502

02.07.2010 12:18
4 Kommentare
Share
  • os
  • ubuntu
  • linux
  • open-source
  • betriebssystem
  • netbook
  • laptop
  • mobile
  • Bericht
Screenshot von Ubuntu 10.4
Um auch unterwegs ein wenig an meinen Horrorblog Reviews zu arbeiten und Konzepte zu schreiben oder sonstwas zu machen habe ich mir in der letzten Woche mein erstes Netbook zugelegt. Das trendige iPad kam nicht in Frage, da es keine Tastatur hat, nicht erweiterbar ist und man nur die Apps aus dem AppStore installieren kann.

Um mich nicht mit dem auf dem Samsung N150 vorinstalliertem Windows 7 rumägern zu müssen hab ich direkt beim zweiten mal hochfahren den vorher präparierten USB Stick mit der Ubuntu Live-CD angesteckt und schon nach wenigen Klicks war Ubuntu installiert. Beim erstellen des USB Sticks hat es sich herausgestellt, dass die Anleitung auf der Ubuntu Download Seite für OSX nicht funktioniert und dass man mit der Windows Anleitung besser fährt.

Nach der Installation stand mir die ganze Open-Source Welt offen und ich hab’ erstmal meine Lieblinge cmatrix und figlet für die Kommandozeile installiert. Weitere Programme findet man über die Software suche und kann sie super schnell und einfach installieren.

#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!

#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!

#492

20.02.2010 17:30
5 Kommentare
Share
  • interview
  • horrorblog
  • projekt
  • berlin
  • podcast
  • audio
Quelle: rebell.tv
Am vergangenen Donnerstag hatte ich die Chance und gleichzeitig Ehre für mein horrorblog.org-Projekt von rebell.tv interviewt zu werden. Das ungeschnittene, eine halbe Stunde lange Interview gibt es auf der Website zum anhören. Da dies mein erstes Interview überhaupt darstellt und es gar nicht so schlecht geworden ist möchte ich auch mein privates Blog nutzen um darauf hinzuweisen. Wer sich selbst für Horror- und Fantasy Filme interessiert sollte auf jeden Fall mal im Horrorblog vorbeischauen!

#490

22.11.2009 21:33
0 Kommentare
Share
  • Web
  • osx
  • virtual
  • box
  • google
  • os
  • preview
  • test
  • screenshots
Das Horrorblog in Chrome OS
Letzte Woche Freitag Nacht wurde von Google der Source Code aka Quellcode zu deren Online-Betriebssystem Chrome OS released. Ein paar Videos und noch mehr Infos gibt’s in dem dazugehörigen Blog-Post im Chrome-Blog.

Wer es drauf hatte auf Ubuntu seinen eigene Version zu compilieren kann sich glücklich schätzen und kennt sich wahrscheinlich gut damit aus. Ich musste mich mit dem Versuch begnügen das ganze mit einem Festplatten-Image von GDGT in Virtual Box (3.0.12 r54655) auf Snow Leopard (10.6.2) zum Laufen zu bekommen. Nachdem ich den Netzwerkadapter auf Desktop umgestellt habe, Linux - Ubuntu - Other Linux wie in der Anleitung angegeben hatte zeigte sich auch endlich der Login-Screen! So, jetzt noch die Tücken der englischen Tastatur besiegen und nachdem das "z" im Passwort auch hübsch als "y" auf der Tastatur eingegeben wurde komm ich auch mit meinem Google Account rein! (Manchmal geht das wohl nicht weil die Server überlastet waren?)

Ja, wie ist es? Ganz nett - es kann noch nich’ viel, alles läuft quasi im "Browser". Das Schachspiel das man schon gesehen hat vielleicht läuft in Flash und ich glaube nativ installiert, auf einem Netbook, ist Chrome OS superschnell! Frisch hochgefahren mit 3 Fensterchen offen, verbrauchte Chrome OS nur ca. 50MB!

Ich bin gespannt wie das fertige System aussehen wird. In einem Jahr wird sich ja hoffentlich noch viel Ändern und noch mehr "Programme" geboten werden. Zum Websites-Testen braucht man Chromium auf jeden Fall nicht - da reicht auch der Chrome-Browser.

#478

23.07.2009 17:18
0 Kommentare
Share
  • code
  • php
  • Project
  • blog
  • horror
  • film
  • movie
Nach ein wenig Programmieren und "Designen" ist jetzt endlich eines meiner Lieblingsprojekte online - das HorrorBlog. In dem Blog werde ich und ein paar andere Autoren jeden Tag die neuesten News zu Fantasy- und Horrorfilmen bringen. Wer auch ein Genre-Fan ist sollte unbedingt den Feed abonnieren!
marceleichner HTML5 Harrison Theme (Validate Source), © 2010 by Ephigenia M. Eichner, Impressum