Bling Bling Effekt mit jQuery

Ich habe für ein neues Projekt länger nach einem „Bling Bling“ Effekt für jQuery gesucht, der einem Bild den Eindruck geben kann, als würde es von einer Glasoberfläche bedeckt werden und jemand würde die Fläche hin und wieder leicht wenden, so dass darin Spiegelungen zu sehen scheinen (siehe Video). Eines Tages zeigte mir dann meine Kollegin ShineTime.

Eigentlich ist ShineTime eine Fotogallerie mit netten jQuery Effekten — beinhaltet aber eben diesen Effekt den ich so lange gesucht habe! Wenn ich mir für meine Zwecke den Code dazu aber anschaue, werde ich gleich von einer Lawine an jQuery code überrollt. Also habe ich den Code wirklich auf das wesentlichste abgespeckt und möchte euch zeigen, wie einfach dieses „Bling Bling“ umgesetzt werden kann.

Weiterlesen: Bling Bling Effekt mit jQuery »

Sind Mega Menüs oder Fly Out Navigation schädlich fürs Google Ranking?

Markus Hövener hat mich in der aktuelle Suchradar Ausgabe 26 mit einer Feststellung, die im Netz nur wenig bekannt ist, aber üble Konsequenzen haben könnte, ganz schön verunsichert.

Es geht um sogenannte „Fly Out Navigation“ oder „Mega Menüs“. Wie heutzutage schon üblich, werden mittels Mega Menüs große Teile der Webseite innerhalb des Menüs manuell strukturiert. An sich eine schöne Sache. Nützlich ebenfalls, wenn man es richtig macht.

Allerdings besteht eventuell ein hohes Risiko aus SEO Sicht.
Weiterlesen: Sind Mega Menüs oder Fly Out Navigation schädlich fürs Google Ranking? »

Speedport W504V: T-Online DSL Business Einstellungen


In diversen Foren nachzulesen, ist die Einrichtung des T-Online DSL Business Anschlusses narrensicher. Einfach die zugesandte Kennung in den Speedport W504V eingeben, fertig. Denkste!

Beim Speedport W 504V gibt es da nämlich eine Besonderheit. Die Zugangsdaten müssen bei der Providerauswahl "Andere Provider" und nicht unter "T-online" eingegeben werden. Also, der DSL-Anschluss ist top, passt nur bei der Einrichtung auf.

Kuriosität beim Passwort

Bei den zugesandten Unterlagen steht, dass man sein Passwort möglichst bald ändern sollte. Klar. Immer doch. Gesagt getan. Wer kann hier aber ahnen, dass in der Routerkonfiguration trotzdem das originale Passwort und nicht das geänderte eingegeben werden muss? Sicherlich niemand. Fast wäre mir dies zum Verhängnis geworden, da ich einen entfernten Router konfigurieren musste, der bei der Eingabe des falschen Passworts natürlich nicht mehr erreichbar gewesen wäre.
–jetzt ist es schon seit ca. 6 Monaten so!

SQL Query zum Finden von Duplikaten

Ich vergesse immer wieder wie es funktioniert. Dabei ist es doch so einfach.
Die SQL Abfrage:

SELECT A.uid, B.uid, A.name, A.first_name 
FROM table_name AS A 
JOIN table_name AS B  
ON ( A.name = B.Name 
   AND A.first_name = B.first_name 
   AND NOT (A.uid = B.uid)  
   )
ORDER BY A.name

Es geht auch einfacher:

SELECT * FROM table GROUP BY dup_feld having count(*) > 1

gibt alle Datensätze aus, die mehr als einmal vorhanden sind. Wobei dup_feld das Feld ist, wo das Duplikat drin gesucht wird. Es können mehrere Felder zugleich eingeschlossen werden.

TOP Suchanfragen zu Weihnachten

Seltsamerweise suchen wohl viel mehr Frauen nach Weihnachtsgeschenken für Männer im Netz als Männer nach Weihnachtsgeschenken für Frauen. Sind wir Männer denn so schwer zu beschenken, oder geben sich unsere Frauen nur mehr Mühe mit der sorgfältigen Auswahl?

Sowieso total interessant, wie die Verteilung der Keywords „Weihnachtsgeschenke“, „Weihnachtsgeschenk“ und „Geschenke“ gerade zu Weihnachten rapide ansteigt. Als würden wir alle erst kurz vorher daran denken. DAbei ist doch gerade im Internet noch der Versand und die Lieferung zu beachten.

Weiterlesen: TOP Suchanfragen zu Weihnachten »

Printlayout mit CSS

„Mittlerweile gehört ist es bei informativen Webseiten und Portalen Usus, separate Ansichten von einzelnen Seiten anzubieten, um auch beim Drucken ein ansprechendes Layout zur Verfügung zu stellen. Solche Druckansichten erhöhen den Service für den Besucher, der sich sonst umständliches Drucken in verschiedenen Ansichten erspart und z.B. Elemente, die gar nicht notwendig sind, mit ausdruckt.“ [via]

CSS bietet die Möglichkeit, für verschiedene Medientypen unterschiedliche Layouts festzulegen.

<link rel="stylesheet" type="text/css" href="print.css" media="print" />

Enthält das allgemeingültige Stylesheet Definitionen, die auf einem Ausdruck störend wären, müssen diese im Druck-Stylesheet „print.css“ explizit überschrieben werden.

Anzeige von Links und deren Inhalten

Nehmen wir an, im Quellcode der Webseite wurde u.a. ein Hyperlink angegeben:

Wenn die Webseite ohne weiteres Zutun ausgedruckt wird, würde nur der Text „Link zu HTMLWorld“ angezeigt. Sollte der Leser des Drucks die dazugehörige Internetadresse nicht kennen, macht diese Information nicht viel Sinn.
Eine Abhilfe schafft hier die CSS-Eigenschaft content. Damit kann allgemein vor oder nach bereits bestehenden Inhalten weitere Elemente/weiterer Inhalt eingefügt werden. Ein Beispiel dafür ist das Ziel des Hyperlinks, was dadurch im Ausdruck mit angezeigt wird.
Es ist am sinnvollsten, das Ziel des Hyperlinks direkt nach dem eigentlichen Linktext mit anzuzeigen. Beispiel:

a:link:after { content: " (Link auf <" attr(href) ">) "; }

[via]

Google Docs nun auch mit LaTeX


Google pariert seit neuestem mit einem weiteren Highlight auf Google Docs: LaTeXLab

Noch nie war es so einfach LaTeX gesetzte Texte zu generieren.

Während ich mich schon immer gefragt hatte, wer wohl Google Docs oder Microsoft Lives Textsysteme nutzt und warum, halte ich die neue Lösung als Coup der Superlative! Jeder, der LaTeX schon mal benutzt hat, kennt das Problem der vorherigen Installation, die abhängig vom Rechnersystem und des Pakets nie so war wie man sie haben wollte. Ständig mussten Pakete nachinstalliert werden. Jeder Umstieg auf eine andere Machine brachte zudem wieder einen durchaus enormen Installationsaufwand mit sich.

LaTeX mit Google Docs kompilieren

Mit Googles LaTeXLab ist jetzt damit Schluss. Einfach LaTeX Code schreiben, bei Google Docs hochladen, und kompilieren — dabei hat man die Wahl zwischen dem LaTeX Lab, einem lokalem MikTeX oder einem lokalem LaTeX Live Kompiler.

Während der Bearbeitung des Textes ist eine parallele Vorschau möglich:
Google Docs LaTeXLab

Die Komplexität der Projekte muss dabei keinen Abschlag erhalten. Es lassen sich beliebige Strukturen ebenfalls einordnen:
Google Docs LaTeXLab Projekt Struktur

Ist LaTeX nicht was für Fetischisten?

Weiterlesen: Google Docs nun auch mit LaTeX »

Dateien Löschen, die älter sind als x Tage

Auf diese Weise lassen sich unter Linux in einem Verzeichnis Dateien finden, die älter sind als x Tage und daraufhin automatisch löschen. Perfekt also für cron-jobs, die automatische Sicherungen nach x Tagen wieder bereinigen (löschen) sollen.

„The find utility on linux allows you to pass in a bunch of interesting arguments, including one to execute another command on each file. We’ll use this in order to figure out what files are older than a certain number of days, and then use the rm command to delete them.“

find /path/to/files/* -mtime +X -exec rm {} \;

X steht dabei für die (int) Anzahl Tage. Um Dateien älter als 20 Tage zu löschen, müsste also +20 eingetragen werden!

read more

  • Veröffentlicht in: Linux

HTML mit JavaScript (jQuery) nachladen

Edit 26.09.14: Dieser Beitrag braucht mal dringender Überarbeitung. Heute würde ich das nur noch mit einem $.ajax Aufruf machen, da sonst der PageSpeed in den Keller gehen kann. Asynchrones laden wär hier das Stichwort. Werde den Artikel heute Abend überarbeiten.

Manchmal ist es ganz nützlich den Inhalt einer HTML Seite extern nachzuladen. Beispielsweise ist es unheimlich nützlich, wenn eine vom Shop oder CMS losgelöste Landingpage (Startseite) hinundwieder mit frischem Inhalt versorgt werden will, die Quelldaten des Templates aber im Verzeichnisbaum in der Dunkelheit des Grabens verscharrt sind, oder dieser Inhalt von propriätär gestalteten Templates ferngehalten werden soll. Ist das Templatesystem bereits auf php basierend, ist es indes sehr leicht mit Hilfe eines includes HTML Inhalt nachzuladen.

<?php include('file.html'); ?>

Besteht das Templatesystem jedoch aus reinen HTML Dateien, wird es etwas komplizierter. Hier gibt es an sich wohl nur zwei Möglichkeiten: Server Side Includes (SSI) oder JavaScript. Da SSI nicht bei jedem Hoster funktioniert, besteht also im Prinzip nur die Möglichkeit über JavaScript. Mit Javascript lässt sich bspw. der Inhalt von div Elementen sehr einfach manipulieren und somit auch durch einen nachgeladenen Code ersetzen. Dazu stehen hier stellvertretend zwei divs mit je eigener ID, deren Inhalt beim laden der Seite per JS verändert wird

   
  <div id="teaserContent">alternative content</div>   
  <div id="teaserContent2">alternative content</div> 

Der alternative content ist dabei sehr wichtig, da sonst User ohne JavaScript an dieser Setlle nur ein weißes Feld ohne jeglichen Inhalt zu sehen bekämen. Der nachfolgende JavaScript Aufruf überschreibt dann den alternative content mit dem Dateien im angebenem Pfad. Er steht absichtlich nicht in einer document.ready() Umgebung, da der Inhalt möglichst schnell und vor dem rest der Seite nachgeladen werden soll.

 
<script type="text/javascript"> 
  $(function () {  
    $('#teaserContent').load('landingpage/teaser.html');      
    $('#teaserContent2').load('landingpage/teaser2.html'); 
  });  
</script> 

Anschließend sei noch geraten, die div Elemente mit der korrekten Größe von vornherein mittels CSS zu versehen, da sonst während des Nachladens die Elemente der Seite springen!

Suchen im Inhalt der Dateien mit Linux

Typisches Problem: Auf dem Server befinden sich 300 php Dateien eine CMS Systems und Du willst die Datei finden, in den eine bestimmte Funktion, eine Templateanweisung oder ein Funktionsaufruf drin steht. Doch wie machst Du das? Alle 300 Dateien wirst Du wohl kaum per Hand durchsuchen wollen.

Suchen mit Linux ist eigentlich ganz einfach! „grep“ durchsucht bspw. Dateien nach einem angegebenem String. grep sucht also keine Dateinamen sondern Textelemente in der Datei selbst.

grep "Linux" *

sucht dabei in allen Dateien des Verzeichnisses nach dem String ‚Linux‘

suchen in allen Dateien des Verzeichnisses und allen Unterverzeichnissen »

  • Veröffentlicht in: Linux

Mehrere Domains auf einer IP hosten (bspw. auf einem Hetzner Root Server)

Wer z.B. bei Hetzner einen Rootserver hat, der hat auch gleich mehrere IPs. Wem diese dennoch nicht ausreichen, oder wenn ein anderer Rootserver mit nur einer IP für Dich ackert, Du aber mehrere Domains darauf hosten möchtest, dann kannst Du Virtuelle Server in Betracht ziehen. Um den Server zu bedienen benötigst Du am besten PuTTY oder Alternativen

Virtuelle Server

Mit Apache2 lassen sich ziemlich einfach Virtuelle Server aufsetzen. Dazu bedarf es nicht einer virtuellen Maschine oder ähnlichem. Die komplette Verwaltung übernimmt ausschließlich der Apache.

Hierzu muss als aller erstes Apache mitgeteilt werden, welche IP ein virtueller Host sein soll. Das geschieht in der /etc/apache2/ports.conf. Syntax: NameVirtualHost IP:Port

NameVirtualHost 88.xxx.153.10:80
Listen 80

Die eingetragene IP ist jetzt also ein virtueller Host und lauscht auf verschiedene DNS Aufrufe.

Zudem muss in der /etc/apache2/sites-available/default die Vhost Beschreibung für diese IP hinterlegt werden. In dem folgendem Beispiel laufen (www.)domain1.com und (www.)domain2.com auf der gleichen IP. Je nach DNS wird dann entweder der ein oder der andere DocumentRoot aufgerufen:

<VirtualHost 88.xxx.153.10:80>
        ServerAdmin dite@domain1.com
        ServerName www.domain1.com
        DocumentRoot /var/www/domain1.com/
        <Directory />
               ...
        </Directory>
</VirtualHost>
<VirtualHost 88.xxx.153.10:80>
        ServerAdmin dite@domain1.com
        ServerName domain1.com
        DocumentRoot /var/www/domain1.com/
        <Directory />
               ...
        </Directory>
</VirtualHost>
<VirtualHost 88.xxx.153.10:80>
        ServerAdmin dite@domain2.com
        ServerName www.domain2.com
        DocumentRoot /var/www/domain2.com/
        <Directory />
               ...
        </Directory>
</VirtualHost>
<VirtualHost 88.xxx.153.10:80>
        ServerAdmin dite@domain2.com
        ServerName domain2.com
        DocumentRoot /var/www/domain2.com/
        <Directory />
               ...
        </Directory>
</VirtualHost>

Nicht vergessen, Apache neu starten. Bspw. mit /etc/init.d/apache2 restart

Um den Server zu bedienen benötigst Du am besten PuTTY oder Alternativen