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

#507

04.07.2011 19:51
0 Kommentare
Share
  • php
  • apache
  • gd-lib
  • image
  • server
  • nginx
  • static
  • content
  • delivery
  • .htaccess
One problem when relaunching large projects with a ton of images is to re-create all the thumbnails that users have uploaded in the years. If you don’t use paperclip (ruby) or anything like it in PHP (is there any like it!?) where you can run run one command to re-create all the thumbnails in all specified sizes your can try to keep it flexible and create every image on demand.

Theory

The Webserver should serve the image if it exists. If the file does not exist, the request should be redirected to a PHP script that searches and creates the requested image file (in requested size) at exactly the location it was originally requested. The second request on the file will not be redirected to the PHP script and will server the image that now exists.

Practice

So the first thing to archive is to send the request of a not existing image to a PHP file. That’s easy if you’re familiar with all the nginx directives:

This rule can be combined with the anti-hotlinking rules for images with nginx I showed you last week.

After that we need to create a format that includes width and height of any requested image so that the
thumbnailer.php
knows which size the created image should have. A valid request for a resized file should always have all parameters (width, height) in it:
../img/public/9c4be029/438xauto/filename.jpg

This makes it easy to split up width, height with a regexp in
thumbnailer.php
. The following code is just an example. You’re surelly integrate the logic into your frameworks:

That’s it! After that you can request any image in any size on your webserver by only creating it once it’s requested.

There are some things you can add, like other parameters in the
$formatRegexp
string to add different resizing methods or even filters, or limitations on the
width
and
height
parameter.

Appendix: Apache

It’s almost the same thing with apache. Just add a few lines to your
.htaccess.
and all your image requests are redirected to the thumbnailer (or anything):

#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;
  }
}

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

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

#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 ;-)

#481

12.08.2009 10:21
0 Kommentare
Share
  • Web
  • osx
  • App
  • tipp
  • terminal
  • spielerei
  • tool
Von Jann hab ich den Hinweis auf GL Terminal bekommen. Emuliert wunderbar einen total klassischen, flimmernden, gekrümmten Terminal. Echtes Oldschoolfeeling!

#480

06.08.2009 18:13
0 Kommentare
Share
  • lustig
  • internet
  • video
  • youtube
Gerade hat mir Jann diese wunderbare Sendung mit der Maus Episode auf Youtube geschickt. Echt ein totaler Klassiker! Geht ein wenig lange aber lohnt sich auf jeden Fall da mal rein zu schauen.

#477

22.07.2009 18:44
2 Kommentare
Share
  • code
  • merg
  • diff
  • folder
  • directory
Wer Araxis Merge (119-219$), Changes (49$) oder DiffMerge (free!) kennt - kennt vielleicht noch nicht: DeltaWalker (39-189$).
Ich würde mir gerne das Geld sparen und mit FileMerge aus den XCode Tools von Apple klar kommen aber irgendwie hab’ ich mich noch nicht dran gewöhnt ;-) Was benutzt ihr?

#468

14.07.2009 16:58
5 Kommentare
Share
  • osx
  • virtual
  • virtualbox
  • sun
  • virtualisierung
  • desktop
  • ubuntu
  • linux
  • tools
  • apps
In einem Spiegel Artikel wurde ich auf eine kostenlose Alternative zu Parallels hingewiesen: VirtualBox von Sun!
Da meine Parallels Lizenz schon etwas alt ist und ich mir das Update auf die neue Version und die neue Serial verkneifen möchte kommt mir das sehr gelegen. Runtergeladen, Installiert, funktioniert! Sehr schnell und intuitiv hat man sich ein virtuelles Ubuntu auf seinen Rechner geknallt! Ausprobieren!

#463

19.06.2009 10:45
0 Kommentare
Share
  • code
  • osx
  • test
  • terminal
  • tool
  • apache
  • siege
  • unix
  • webserver
  • benchmark
  • performance
  • regression
Wie gestern schon beschrieben kann man super ab (Apache Bench) die Performance seiner Applikationen im Web testen. Durch Zufall hab ich in meiner Ports Sammlung noch ein anderes Programm gefunden das auch sehr vielversprechend aussieht: siege.

Dort kann man auch mehrere URLs testen, einen User simulieren und noch viel mehr. Damit habe ich allerdings noch nicht so viel Erfahrung. Hab aber gleich mal meine App getestet:
siege -c 100 -t 10s http://localhost/myProject/
Die Ausgabe sieht fast so aus wie beim ab:
Transactions:                    545 hits
Availability:                 100.00 %
Elapsed time:                  17.85 secs
Data transferred:               1.33 MB
Response time:                  1.02 secs
Transaction rate:              30.53 trans/sec
Throughput:                     0.07 MB/sec
Concurrency:                   31.01
Successful transactions:         604
Failed transactions:               0
Longest transaction:            3.31
Shortest transaction:           0.03

Mit einem Config File kann man aber auch noch mehrere Urls abfragen und so ein realistischeres Ergebnis erzielen. Mehr dazu steht in der Docu von Siege oder in Tutorials die man so im Netz findet: Regression testing with Siege.

Ich denke mal das solche Tools auch eine wunderbare Möglichkeit sind verschiedene Hoster zu testen oder einem Kunden zu zeigen wie Vorteilhaft eine Optimierung seiner Applikation wäre oder einfach nur welchen extremen Effekt der Einbau eines Caches hat.
  • 1
  • 2
  • 3
  • …
  • 5
  • 6
  • weiter »
marceleichner HTML5 Harrison Theme (Validate Source), © 2010 by Ephigenia M. Eichner, Impressum