Flickr ist ein sehr bekannter und guter Foto Dienst. Dort erstellte Alben sind schön anzusehen und bieten viele Funktionen. Nur eine Sache fehlt bis heute: der Download aller Fotos eines Nutzers, einer Gruppe bzw. eines Albums. Einzelne Fotos lassen sich herunterladen, dazu muss man nur das Foto öffnen, alle Größen anzeigen lassen und den dortigen Download Link nutzen. Bei mehreren Fotos sind externe Programme oder Dienste nötig.

Hier stelle ich ganz kurz 2 Programme und 1 Browser Plugin vor, die diesen „Massen-Download“ ermöglichen:

Downloadr (Freeware)

Downloadr ist ein kleines (<1MB) kostenloses Tool, welches neben dem Download von Flickr Bildern noch viele weitere Funktionen bietet. Diese lassen sich über viele Einstellungsmöglichkeiten im Programm einfach konfigurieren. Die Fotos werden immer in der größten Größe heruntergeladen, alle Bildinformationen (EXIF/IPTC) werden eingebettet, dank Authentication können auch private Bilder geladen werden, 1-Klick Backup aller Fotos, automatische Programm-Updates.
flickr-downloader-downloadr-settings flickr-downloader-downloadr-user-set-album

Daumen hoch, die Software ist einfach, effizient und hat echt viel Funktionen for free.

Bulkr (Shareware)

Bulkr ist eine Adobe AIR Anwendung, die ebenfalls sehr viele Funktionen in einer schönen und übersichtlichen Oberfläche bereitstellt; leider viele Funktionen nur für PRO User ($30 aufwärts). So kann man zwar umfangreiche Suchen starten, Bilder herunterladen, aber vieles geht dann nicht mehr: alle Fotos markieren, Fotos sortieren, in „Original“ Größe herunterladen, Bildinformationen einbetten und mehr bleibt den PRO Users vorenthalten. Trotzdem lassen sich alle Fotos eines größeren Sets auf einmal markieren, indem man das erste Foto markiert, zum letzten Foto scrollt und dieses dann mit Shift+Klick markiert. Immerhin.
flickr-downloader-bulckr-download flickr-downloader-bulckr-pro

Also als Pro User scheint man den gleichen Funktionsumfang zu haben wie bei Downloadr, nur etwas hübscher.

DownFlickr (Chrome)

DownFlickr ist ein Chrome Plugin mit 2 Hauptfunktionen: Einzelne Fotos und Foto-Sets erkennen und herunterladen. Dazu reicht es das Foto oder Set aufzurufen und auf das Extension Icon zu klicken; das Element wird erkannt und die Elemente automatisch angezeigt. Der Klick auf „Download All“ öffnet für jedes Bild einen neuen Tab, der automatisch sofort den Download initiiert, der Tab wird sofort wieder geschlossen. Im Endeffekt also ein bequemer 1-Klick-Download ohne, dass eine Software installiert werden muss; dadurch auch betriebssystemunabhängig.
flickr-downloader-downflickr-download

Für registrierte Flickr Nutzer könnte FlickAndShare noch interessant sein. Dort soll auch einiges möglich sein, wenn man diesen Dienst mit dem eigenen Flickr Account verknüpft. Allerdings bin ich nicht bei Flickr und konnte das gerade nicht weiter untersuchen.

WordPress mit Hilfe von XAMPP (oder einem anderen Ableger der lokalen Webserver) auf dem eigenen PC zu installieren, ist leichter als je zuvor. Die Installation macht sich eigentlich von ganz allein solange man die wp-config.php mit den korrekten Daten füllt.
Nach der Installation ist der Blog über localhost erreichbar. Beispielsweise:
wordpress-local-xampp-install-login
Easy peasy.

UND

Wenn man nun versucht von einem anderen PC aus dem eigenen Netzwerk auf diesen Blog zuzugreifen, muss man statt localhost logischerweise den Computernamen oder die IP des Hosts nehmen:
http://barketing055:8080/wsp/wp-login.php
Funktioniert auch.

ABER

Nach einem erfolgreichen Login erfolgt eine automatische Weiterleitung, normalerweise nach wb-admin.
Blöderweise erfolgt die Weiterleitung immer nach localhost, also nach
http://localhost:8080/wsp/wp-admin
was auf dem entfernten Rechner natürlich einen 404 Fehler erzeugt.

Lösung

Mit ein paar Änderungen kann diese Weiterleitung angepasst werden:
wp-login.php:
Folgende Zeile:

<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />

(müsste 2x auftauchen, der 2. Fund so bei Zeile 864+- ist für das Login Form zuständig)
ersetzen mit:

<input type="hidden" name="redirect_to" value="http://barketing055:8080/wsp/wp-admin/" />

wp-config.php:
Folgende 2 Zeilen hinzufügen:

define('WP_HOME','http://barketing055:8080/wsp');
define('WP_SITEURL','http://barketing055:8080/wsp');

Danach erfolgt nach einem Login die Weiterleitung nicht mehr zu localhost sondern zu der gewünschten URL.

beuth_berlin_haus_grashofWie einige bestimmt schon wissen, studiere ich Medieninformatik, Bachelor, an der Beuth Hochschule für Technik Berlin. Nach über 5 Jahren Vollzeit-Berufserfahrung als IT-Administrator wollte ich meine Kompetenzen ausweiten, vor allem in den Multimedia Bereichen. Auch als eine Art Bewusstseinserweiterung. Ist die Administration meine Tätigkeit für längere Zeit oder können mich die Webentwicklung, Mobile Applications oder Softwareentwicklung mehr in Begeisterung versetzen?
Letzteres habe ich nach der Hälfte meines Studiums natürlich noch nicht vollends entschieden.
Aber was das Studium angeht möchte ich gerne einige Eindrücke teilen. Ich wurde von medien-studieren.net kurz zu meinem Studium befragt, hier könnt ihr es nachlesen:

Zum Interview

Ich hatte letzte Woche mit einem eigenartigen Problem zu kämpfen. Die 2 nagelneuen Drucker auf Arbeit – beides HP Laserjet Pro 8600 Plus via Druckerserver – hingen sich regelmäßig, ja fast täglich, an irgendwelchen Dokumenten auf. Dieses Dokument kann dann auch auf keinem Wege abgebrochen werden.

Das Problem trat bei uns fast zur selben Zeit an beiden Druckern auf.
windows-druckerproblem-dokument-wird-nicht-gedruckt

Fehlersymptome:

  • Ein Dokument in der Druckerwarteschlange wird einfach nicht gedruckt. Alle weiteren Dokumente reihen sich ein, werden aber nicht gedruckt weil dieses Dokumente die Warteschlange blockiert.
  • Dieses dann aus der Druckerwarteschlange zu löschen funktioniert nicht. Es wird „Wird gelöscht…“ angezeigt und nichts passiert.
  • Drucker aus- und wieder anschalten löscht weder die Dokumente noch setzt es den Druck fort.
  • net stop spooler und net start spooler brachte nichts.
  • Drucker per LAN statt WLAN anschließen ändert auch nichts daran.
  • Am Druckerserver konnte man den Druckauftrag ebenfalls nicht erfolgreich entfernen. Druckerwarteschlange öffnen -> Drucker -> Alle Druckaufträge abbrechen zeigte ebenfalls keine Wirkung.
  • Auch das Anhalten des Druckers am Server und das Wiederholen der obigen Schritte bewirkte nichts.

Am Ende half nur eins: Neustart der Druckerserverrolle in Verbindung mit Drucker und PC, auf dem das verklemmte Dokument gedruckt wurde.
Das ist natürlich keine Lösung.

Lösung

Grundsätzlicher Tipp: Firmware- und Treiberupdate, hilft oftmals schon. Falls nicht:
Öffnet die Druckereigenschaften am Druckerserver und ändert folgende Einstellungen:

  • Freigabe -> „Druckauftragsbearbeitung auf Clientcomputern durchführen“ deaktivieren
  • Erweitert -> „Drucken nachdem die letzte Seite gespoolt wurde“ und „Fehlerhafte Druckaufträge anhalten“ aktivieren
  • Falls das Problem noch besteht, Anschlüsse -> „Bidirektionale Unterstützung aktivieren“ deaktivieren

Dies kann vielleicht zulasten der Dauer gehen, die benötigt wird bis ein Dokument vom PC über den Server auf den Drucker gelangt, aber dabei handelt es sich vermutlich um Millisekunden oder sehr wenige Sekunden.
Bei uns trat das oben beschriebene Problem seit dem nicht mehr auf.

Die Offlinedateien von Windows 7 werden ebenso selten genutzt wie sie das Netzwerk belasten können, wenn sie aktiviert sind.

Manuell kann man die Funktion folgendermaßen deaktivieren:
Start -> „Offlinedateien verwalten“ suchen -> Offlinedateien deaktivieren
oder
Start -> Systemsteuerung -> Synchronisierungscenter -> Offlinedateien verwalten (links im Menü unten) -> deaktivieren

disable-windows-7-offlinefiles-sync-offlinedateien

Im Unternehmen kann es durchaus sinnvoll sein, die Offlinedateien per Gruppenrichtlinie oder per Skript zu deaktivieren.
Und für die Verteilung im Windows AD Netzwerk habe ich natürlich wieder ein Skript vorbereitet:

@echo off & Color 9f & setlocal

set log=\\server\pfad\disable-offline-files.log
set preconfig=99

sc stop CscService
sc config CscService start= DISABLED

:check
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\CSC" /v Start^|findstr "Start"') do set preconfig=%%c
echo %date% %time:~0,8% - %computername% Offline-Files: %preconfig% >> %log%
if "%preconfig%"=="0x1" goto disable
goto end

:disable
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\CSC" /v Start /t REG_DWORD /d 4 /f
echo %date% %time:~0,8% - %computername% Offline-Files deaktiviert, errorlevel %errorlevel% >> %log%

:end
endlocal
pause

Auszug aus der Logdatei:
disable-windows-7-offlinefiles-sync-offlinedateien-log

Windows Update Fehler Code 80072EE2… verdammt nochmal, was ist das für ein Fehler?!
windows-update-fehler-error-code-80072ee2

Laut Microsoft Hilfe werden „möglicherweise ungewöhnlich viele Updates von den Windows Update-Servern angefordert.“. Also die Server oder das Netzwerk sind überlastet. Bei einem lokalen WSUS Server im Netzwerk an einem ruhigen Freitag kann man das eher ausschließen.

Es gibt aber auch Meinungen, nach denen der Fehler an fehlender oder geblockten Verbindung zum Update Server liegt, wie in diesem Video angesprochen. Also die Verbindung zum WSUS Server prüfen, Antivirenprogramme prüfen, ggf. vorübergehend deaktivieren.

Hilft nicht? Dann helfen vielleicht folgende Tools:

Microsoft Fix-It zum Zurücksetzen der Update Komponenten:
windows-update-fehler-error-code-80072ee2-fix-it

Hilft nicht? Bei mir auch nicht.
Weiter mit dem PC-WELT-Fix für Windows Update:
windows-update-fehler-error-code-80072ee2-ct-fix-it
Dieses Tool ist relativ aktuell und dadurch für die Systeme XP bis Windows 8 geeignet. Auf älteren Systemen (XP/Vista) kann man es ggf. auch mit dem pcwUpdateRepair probieren. Vermutlich sind diese Fixes aber im aktuellen Fix It mit enthalten.

Bei der Gelegenheit ein Hinweis für Admins: das PC-WELT Fix It Pack enthält ein paar nette kleine Tools im schnellen Zugriff für die Erste Hilfe am PC. Manche sind bereits fertig installiert, andere müssen noch schnell installiert werden. Die Installer sind aber in den Pack schon enthalten. Die Software ist neben der mächtigen Sammlung WSCC, welche alle nirsoft und sysinternals Tools enthält, eine kleine Alternative:
pc-welt-fix-it-pack-for-admins-usage

Hilft uns jetzt aber erstmal nicht weiter.

Der Fehler bleibt ungelöst und es geht wieder zurück zum Troubleshooting:

  • Ping/Remotezugriff zum WSUS Server (bzw. Windows Update) funktioniert?
  • Hat der WSUS Server den Computer in seiner Computerliste gelistet?
  • Wann war die letzte Aktualisierung laut WSUS?
  • Werden dort Fehler oder fehlerhafte Updates angezeigt?
  • Ggf. die Updates des WSUS bereinigen lassen (WSUS -> Optionen -> Assistent für die Serverbereinigung).
  • Antivirenprogramme/Firewalls/andere Verbindungsblocker sowohl auf dem Client als auch auf dem Server temporär deaktivieren. Achtung, natürlich alles so schnell wie möglich wieder aktivieren.

Ich vermute der Fehler liegt am Netzwerk des PCs. Zwar funktionieren Pings und Serverzugriffe, jedoch zeigen die Netzwerkfunktionen teilweise abnormales Verhalten. Die Netzlaufwerke spinnen; sobald ich versuche Daten dort abzuspeichern, stürzt der Explorer (auch der Total Commander) ab und alle Netzlaufwerke sind nicht mehr erreichbar. Trotz WSUS Ping wird der Rechner nicht in der Computerliste des WSUS gelistet. Vielleicht Fehler in der Netzwerkkarte.

Weitere Windows Update Fehler und ihre Lösung findet ihr hier.

tech-struktur2In einem aktuellen Webprojekt verwende ich MongoDB als Datenbank und die Node Erweiterung mongoose als Aufsatz. mongoose ist für alle Entwickler, die bisher pur auf der MongoDB arbeiten, definitiv einen Blick wert.
Anfangs wurde lokal auf dem PC programmiert, mittlerweile beginnen wir den Umstieg auf einen Webhoster. Dabei ergab sich ein Problem, dass ich kurz erläutern möchte.

Die Mongoose Verbindung zur Datenbank erfolgt anhand eines Connection Strings, der bei einer Standardinstallation aller Komponenten sehr einfach aussehen kann:

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/proorg-test");

Dieser String verwendet localhost als Server, den Standardport von MongoDB 27017, die Datenbank „proorg-test“ und keine Authentifizierung. Das reicht für den Anfang und funktioniert gut.

Nach dem Umstieg auf einen (shared) Webserver trifft man jedoch meistens eine andere MongoDB Installation an. Oftmals wird diese mit dem Parameter –auth eine Authentifizierung erfordern, einen anderen Port nutzen und vielleicht auch einen anderen Server verwenden.
Neben den zusätzlichen Angaben für Server, Port und User muss man Mongoose jetzt auch befehlen, sich explizit an der „Admin Tabelle“ zu authentifizieren. Dies ist meisten die admin Tabelle, in der auch ein Admin Nutzer, dessen Daten im Connection String stehen, enthalten sein sollte.

var mongoose = require("mongoose");
mongoose.connect("mongodb://mongodb_admin:r0OtP4s$w0rd@localhost:20718/proganizer", {auth:{authdb:"admin"}});

Dieser String enthält jetzt den wichtigen Teil {auth:{authdb:“admin“}}, damit Mongoose sich mit dem mongodb_admin an der admin Tabelle authentifiziert.

Mehr dazu auch in den MongoDB Security Tutorials.

logo-trans-2012An dieser Stelle auch big shoutouts an uberspace.de, der sympathische deutsche Webhoster mit „Preis-selber-wählen“ Prinzip und einem riesigen Arsenal an vorinstallierten, vorkonfigurierten und bestens dokumentierten Server- und Entwickler-Tools. Ein kleiner Einblick: „SSH. Perl. PHP. Python. Ruby. node.js. Erlang. Lua. Compiler. FastCGI. MySQL. CouchDB. MongoDB. Cronjobs. HTTPS. IMAP. SMTP. Webmail. qmail. vmailmgr. maildrop. Spam­Assassin. ezmlm-idx. DSPAM. ~/service. runwhen. Eigene Logs. Backups. 10 GB Plattenplatz. Und das ist nur der Anfang.“

Mögliche Fehlermeldungen:
Dieser Fehler würde auftreten, wenn trotz –auth Parameter bei MongoDB der Standard Connection String benutzt würde:
assertion 16550 not authorized for query on proganizer.users ns:proganizer.users query:{ username: „SchurigH“ }
Wenn man nur Benutzername und Passwort eingibt, ohne den auth Parameter von Mongoose einzustellen, also

mongoose.connect("mongodb://schurigh_mongoadmin:r0OtP4s$w0rd@localhost:20718/proganizer");

, dann kommt:
auth: couldn’t find user schurigh_mongoadmin@proganizer, proganizer.system.users
Und selbst wenn man jetzt in proganizer.system.users einen neuen Admin User erstellt – das ginge mit db.addUser({user:“proganizer_admin“, pwd: „*****“, roles: [ „readWrite“, „dbAdmin“ ]}); – würde das nicht funktionieren. Ohne {auth:{authdb:“admin“}} geht es nicht.