-
Drupal: PDF Vorschau als jpg, pdf2jpg
Verfasst von jan am Mo, 07/12/2010 - 14:39Immer schon wollte ich auf Webseiten pdf's als Bilder darstellen. Sinnvolle Hilfe dazu zu finden ist meiner Meinung nach eher schwierig. Für eine aktuelle Drupal-Installation wollte ich nun endlich mal einen Schritt weitergehen und meine Wünsche in etwas Handfestes umwandeln. Im Drupal CMS sollten sämtliche PDFs auch als jpg/png automatisch zur Verfügung stehen. Dazu habe ich ein neues Modul geschrieben, ich habs Preview genannt. Ich stellte mir vor, dass es in Zukunft verschiedene Dateitypen als Preview erstellen sollte, nicht nur PDFs. Zurzeit bin ich dran, das Modul so umzugestalten, damit ich es auf drupal.org contributen kann. Auf meiner vorhanden Drupalinstallation läuft es aber breits wie geschmiert. Ich werde bei Gelegnheit mehr Details dazu posten (wird auch vom Interesse von Euch abhängen...).Mein Fazit bis jetzt: Es ist alles was ich mir je gewünscht habe. Gerade grosse PDFs (bei uns handelt es sich um Baupläne, >90MB pro Seite) müssen so nicht heruntergeladen werden sondern werden innert Kürze in der "Vorschau" angezeigt.
screenshoots:
-
Drupal: Auf fremde/zweit Datenbank zugreifen
Verfasst von jan am Sa, 06/26/2010 - 12:38Problem: Auf der vorhanden Drupal Installation will ich auf Daten einer anderen Datenbank zugreifen. Drupal hat dafür bereits einen Weg vorgesehen. Dazu geht man in die sites/default/settings.php Datei. Folgende Zeile definiert die Standard Datenbank:
$db_url = 'mysql://drupal:drupal@localhost/drupal';
Wandelt man $db_url in ein Array um, kann man beliebig viele Datenbank definieren.:
$db_url['default'] ='mysql://drupal:drupal@localhost/drupal';
$db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] ='mysql://user:pwd@localhost/yetanotherdb';Im Modul, wo man dann auf die Daten zugreifen will mach man das folderndermassen:
db_set_active('mydb');
db_query('SELECT * FROM table_in_anotherdb');
//...
db_set_active('default');Default ist die Standard-Datenbank. Sie ist erforderlich. In dieser Datenbank ist Drupal installiert. Man muss aufpassen, dass man nach dem Sprung in die andere Datenbank die default Datenbank wieder auf aktiv stellt.
Quelle: http://drupal.org/node/18429
-
Drupal: Files Ordner verschieben
Verfasst von jan am Fr, 05/28/2010 - 15:20Um den Files Ordner zu verschieben (in meinem Fall im Private Mode), geht man folgendermassen vor:
- per FTP oder shell die Daten an den neuen Ort verschieben
- shell: mv <pfad>/files <neuer pfad>/files
- per FTP sicherstellen das .htaccess Datei mitgneommen wird
- Folgender MYSQL Befehl ausführen (zB in mysqladmin)
- update files set filepath = replace(filepath,'<alter Pfad>','<neuer Pfad>');
- Nach admin/settings/file-system gehen
- neuer Pfad angeben
- Fertig
Achtung: <...> ersetzen durch eigene Werte!
- per FTP oder shell die Daten an den neuen Ort verschieben
-
PHP: Dateien und Ordner rekursive Umbenennen
Verfasst von jan am Fr, 05/21/2010 - 21:36Ein altbekanntes Problem der deutschen Sprache im Zusammenhang mit Linux-Dateinamen: Ich habe von meinem Windows System Dateien per FTP hochgeladen und die eingekaufte PHP Anwendung kann nicht richtig mit den Umlauten im Dateinamen umgehen (oder anderen Sonderzeichen, welche Windows im Dateinamen erlaubt). Also lass ich per PHP Script einen ganzen Verzeichnisbaum rekursive durchgehen und alle Umlaute/Sonderzeichen umwandeln. Das geht mit folgendem Snippet:
<?php
// Directory to scan (Full System Path)
$dir = './';
function cleanName($name)
{
$name = str_replace('ä', 'ae', $name);
$name = str_replace('ö', 'oe', $name);
$name = str_replace('ü', 'ue', $name);
$name = str_replace('Ä', 'Ae', $name);
$name = str_replace('Ö', 'Oe', $name);
$name = str_replace('Ü', 'Ue', $name);
return $name;
}
function getDirectory($path = '.', $ignore = '')
{
$dirTree = array();
$dirTreeTemp = array();
$ignore[] = '.';
$ignore[] = '..';
$dh = @opendir($path);
while (false !== ($file = readdir($dh))) {
if (!in_array($file, $ignore)) {
if (!is_dir("$path/$file")) {
$dirTree["$path"][] = $file;
} else {
$dirTree["$path"] = array();
$dirTreeTemp = getDirectory("$path/$file", $ignore);
if (is_array($dirTreeTemp))
$dirTree = array_merge($dirTree, $dirTreeTemp);
}
}
}
closedir($dh);
return $dirTree;
}
// Get all Files and Folders in an Array
$dirTree = getDirectory($dir, $ignore);
$folders = array();
foreach ($dirTree as $path => $files) {
foreach ($files as $name) {
if (preg_match('/[äöüÄÖÜ]/', $name)) {
echo 'rename(' . $path . '/' . $name . ', ' . cleanName($name) . ');<br></br>';
rename($path . '/' . $name, $path . '/' . cleanName($name));
}
}
$folders[substr_count($path, '/')][] = $path;
}
// Sortiert Ordner nach "Tiefe"
krsort($folders);
// Benennt alle Ordner mit Umlauten um
foreach ($folders as $paths_by_debth) {
foreach ($paths_by_debth as $path) {
$pos = strrpos($path, '/');
$folder = substr($path, $pos);
if (preg_match('/[äöüÄÖÜ]/', $folder)) {
echo 'rename(' . $path . ',' . substr($path, 0, $pos) . cleanName($folder) . ');<br></br>';
rename($path, substr($name, 0, $pos) . cleanName($folder));
}
}
}
?>
<pre>
<?php
// Gibt den ganzen Ordner Baum aus
//print_r($dirTree);
?>
</pre>Das Programm wurde absichtlich ausführlich geschrieben, um die Einzelnen Schritte klar und verständlich darzustellen. Natürlich könnte man das ganze auch abgekürzter schreiben. Die Funktion cleanName kann beliebig erweitert werden. Hier könnte man auch via preg_replace bestimmte Dateinamen nach einem Muster umbenennen.
-
Android App Review: gmote Desktop Fehrnsteuerung
Verfasst von jan am Mo, 04/26/2010 - 12:13Ein Programm mit welchem man den Computer via Aondroid fehrnsteuern kann wollte ich immer schon. Ich war eher skeptisch, ob gmote mich auch überzeugen konnte.Zuerst muss man den gmote server auf dem PC installieren, danach auf dem Android den Gmote-Klient. Server starten, Firewall für Programm öffnen, danach Klienten starten und los gehts. Folgende Funktionen stellt gmote zur Verfügung:
- Abspielen von Medien auf PC oder Streaming auf Android (Es könnnen nur Dateien gestreamt werden, für welche es auch Codexe auf dem Android gibt)
- Android als Touchpad für PC benutzen
Mein Eindruck:
- sehr schnelle Reaktion: gerade die Touchpad-Funktion reagiert grossartig. Bei mir konnte ich absolut keine Verzögerung wahrnehmen.
- Auch das Verbinden geht augenblicklich. Man bemerkt gar nicht, dass sich Android zuerst noch verbinden muss.
- Zum Abspielen auf dem PC benutzt gmote eine eigene VLC Konfiguration (kein Problem, wenn man es schon installiert hat). Abgespielt werden kann also fast alles.
- Streaming nach Android hat auch gut funktioniert. Videos müssen natürlich im mp4 Format vorliegen.
Ich bin begeistert von gmote. Gmote hat mich überrascht. Es könnte zwar noch viel mehr können. Was es aber verspricht, das tut es excellent, und das ist meiner Ansicht nach das Wichtigste einer Applikation. Laut gmote funktioniert die App nur über das Netzwerk, ich denke aber, dass man mit Portforwarding auch über das Internet zugreifen könnte. Dadurch könnte man zum Beispiel zusätzlich seine Musik unterwegs aufs Android phone streamen. Habe dies aber noch nicht ausprobiert.Webseite von gmote: http://www.gmote.org
screenshoots:
-
Computer durchsuchen mit regulären Ausdrücken (regular Expressions)
Verfasst von jan am Mi, 04/21/2010 - 11:06Nicht gerade was man jeden Tag braucht. Es kommt jedoch immer wieder vor, dass ich froh darum gewesen wäre ein Programm zu haben, mit welchem ich den Computer mithilfe von regulären Expressions/ regulären Ausdrücken durchsuchen könnte. Mit FileSeek kann man das. Das Programm ist sicher nicht gedacht um die täglichen Suchvorgänge auf dem PC durchzuführen. Hat man jedoch eine Datei "verloren", kann es schon eine unersetzbare Hilfe sein.
Und das kann das Programm alles:
- Suche nach Text innerhalb von Dateien und Dateinamen
- Regular Expressions innerhalb von Suchquery
- Filtern nach Datum
- Filtern nach Dateityp
Bei regulären Ausdrücken muss man die /.../ -Slash weglassen.Beispiel: Suche nach Email Adressen:[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}Download (639KB)Das Programm ist natürlich Freeware und läuft auf allen Windows Systemen.screenshoots:
-
Gruppierte Linkliste mit Drupal erstellen
Verfasst von jan am Fr, 04/09/2010 - 14:18Nachdem ich viel Post bekommen habe, dass mein erstes Screencast zu diesem Thema nicht bis zum Ende lief, hier mein zweiter Versuch, ein Screencast über die Linkliste in Drupal zu machen. Diesmal klappt es hoffentlich bis zum Schluss! Also ich hoffe es ist verständlich. Da ich grad kein Mikrofon zur Hand hatte ist's halt ohne Ton.
Das ganze ist natürlich noch un-designt, es geht hier nur ums "Technische". Über ein paar Zeilen CSS kann man das noch ganz schön gestalten.
Ergänzung:
Die Links müssen mit http:// angegeben werden, sonst meint Drupal, dass es eine Unterseite ist und es gibt sowas wie http://www.meindomain.com/google.com
-
Billiger Home mini-Server mit Atom d510 mini-ITX geräuschlos
Verfasst von jan am Do, 04/08/2010 - 09:06Mein Ziel war es schon immer, ein billiger, geräuschloser mini-Server zu basteln. Das waren meine Anforderungen:
- unter CHF 300.-
- keine bewegliche Teile
- Stromsparend
- Geräuschlos
- schnell
- kompakt
Der Server wird für folgende Dinge verwendet:
- Web- und FTP-Server
- Mediaplayer
- NAS
- Netzwerk-Backups
Folgende Hardware habe ich zusammengestellt:
- Mainboard: Intel D510MO mini-itx (CHF 100.-, Steg)
- RAM: 2GB DDR2-667 (hatte ich noch vor)
- SSD: Kingston SSDNow V, 30GB (CHF 105.-)
- Stromversorgung: PicoPSU-80, 80Watt (von ebay, ca. CHF 60.-)
- Gehäuse: Schachtel von Mainboard umgebaut (CHF 0.-)
- Total Geld ausgegeben: CHF 265.-
Zusammenbau ging schnell, als Student bekomme ich Windows 7 gratis, also Windows 7 draufgemacht. Der neue D510 Atom Prozessor hat zwei Kerne und 4 Threads. Auf der Prozessorplatine befindet sich ebenfalls ein integrierter Grafikchip. Auf den Netzadapter warte ich noch. Da aus Amerika kommend, muss man mit längeren Wartezeiten rechnen). Ich habe aber schon sehr viel gutes darüber gehört/gelesen und es scheint meiner Ansicht nach auch Sinn zu machen.
Erste Eindrücke.
Der Miniserver ist super!
Er läuft schnell und ruckelfrei. HD Videos werden problemlos wiedergegeben. Gerade die SSD läuft super schnell. Als Storage dient meine bereits vorhandene externe StoryStation 1.5TB. Die Festplatte schaltet sich bei nicht Gebrauch automatisch aus, was für ein privater Fileserver Sinn macht und überhaupt nicht stört.
Ich werde noch weitere Tests machen und Fotos reinstellen. Auch sehr kostensparend ist die Benutzung der Kartonbox als Gehäuse. Dadurch das diese Kartonbox ja genau für das Mainboard angepasst wurde, ist der Raum optimal ausgenutzt. Im Zwischenfach mit den Handbüchern und Treiber steckt nun einfach die 2.5'' SSD. Gerade beim Gehäuse kann man so extrem viel Geld sparen, da mini-ITX Gehäuse sehr teuer sind. Und meistens sind sie für meine Vorstellungen viel zu gross und schwer.Fortsetzung folgt...
-
Drupal bleibt bei Installation hängen -> install Profile
Verfasst von jan am Di, 03/30/2010 - 22:26Immer wieder hatte ich das Problem, dass Drupal bei meiner Multisite Installation nach der Erstellung der Datenbanktabellen stehen blieb. Die Tabellen wurden zwar alle Ordnungsgemäss installiert, jedoch blieb der Installer hängen. Hier die Lösung:
install.php?locale=en&profile=default&op=do_nojs&id=1
als Pfad eingeben und weiter gehts mit der Installation!
Ich habe gelesen, dass es sich dabei um irgend ein JS Problem handelt
-
PHP Performance Tipps
Verfasst von jan am Do, 03/11/2010 - 11:00Heute bin ich auf einen interessanten Eintrag gestossen. Er nennt sich "PHP Script Tips: Cool Secrets of PHP" und birgt einige weniger bekannte Tipps zu PHP, welche ich jedem PHP-Programmierer empfehlen kann. Er behandelt u.a den Unterschied zwischen double quotes und single quotes, und wie es sich auf die Geschwindigkeit auswirken kann.