Archiv für die Kategorie ‘howto’

WWAN am Thinkpad X100(e) defekt? Eine mögliche Lösung.

Eine Reihe Thinkpad X100 bzw „X100e“ – Besitzer der ersten Serie können nach einem BIOS-Update das WWAN (UMTS) Modem Gobi2000 nicht mehr aktivieren. Siehe u.a hier und in diversen deutschsprachigen Foren.

Es werden diverse „Tips“ von kompletter Neuinstallation bis zum Support Call bei Lenovo und Austausch der Modemkarte gegeben; bei einigen Geräten scheint das Schrotflintenprinzip aber wohl funktioniert zu haben – man hat alles ausprobiert, und „irgendetwas“ hat dann geholfen. Offenbar aber nicht immer.

Hier die Ausgangssituation und eine (mögliche) Lösung aus der Praxis ohne Garantie.

Nach einem BIOS-Update auf 1.20a (ECP: 1.16) war das WWAN-Modul nicht mehr sichtbar, weder in der Systemsteuerung noch in den Access Connections. Mit FN+F5 war zwar der (Soft)-Schalter sichtbar, hatte aber keine Funktion. Ich hatte im Rahmen eines Treiberupdates in Windows XP Professional die EXE-Datei benutzt,  6xuj05us.exe.

Einige Quellen, die sich auch auf die Lenovo-Hotline beziehen, nennen als „Trick“ das Deaktivieren und erneute Aktivieren der WIMAX- und WWAN-Geräte im BIOS, was aber so keinen Erfolg zeigte. Ein BIOS-Downgrade auf 1.11 (eine weitere Empfehlung aus den diversen Foren) war auch nicht mehr möglich, weder von einer Boot-CD noch via Programm.

Folgendes hat dann aber funktioniert:

Erneuter Aufruf von 6xuj05us.exe -> UPDATE SYSTEM BIOS -> logische und korrekte Meldung: „Dieses BIOS haben wir schon, Update nicht notwendig„.  Dann Punkt 2: UPDATE MODEL NUMBER. Angezeigt wird der vierstellige Typcode des Geräts, und die dreistellige ID. Bestätigen ohne die ID zu ändern.

Interessanterweise läuft dann doch der BIOS-Flash durch,die 32 Blocks werden geschrieben, danach Aufforderung zum Boot. Bestätigen.

Jetzt im BIOS die WIMAX- WLAN und WWAN-Steuerung deaktivieren, speichern, und während das Gerät wieder neu startet hart abschalten. Ladegerät ggf. abziehen und 10 Sekunden warten. Neustart, mit F1 ins BIOS, WLAN, WIMAX und WWAN wieder an.

Speichern und booten – das sollte es gewesen sein, unter der Voraussetzung, dass Powermanagement, der aktuelle Gobi2000-Treiber und die neusten Access Connections korrekt installiert sind. Einen Versuch ist es wert.

Viel Erfolg. 🙂

Redaxo 4.x aus WordPress-Feeds speisen

Das CMS Redaxo in der Version 4.2.x reklamiert für sich, „Einfach, flexibel und Sinnvoll“ zu sein. Dem kann ich so zustimmen – das System ist schlank und überschaubar, der Trainingsaufwand für die Administration im Backend bleibt deutlich unterhalb dem, was für größere und komplexere Systeme veranschlagt werden muss, benötigte Zusatzmodule sind schnell programmiert – all in all eine intelligente Alternative in Projekten bis vielleicht 1000…2000 Seiten Content.

Die Aufgabenstellung

Feedreader, die fremden Content einbetten gibt es für jedes CMS zuhauf, natürlich auch für Redaxo – hier am Beispiel eines importierten Google-Kalenderfeeds.  Fast allen ist aber gemein, dass sie – zu Wahrung des Copyrights und des Anstands – die eingebetteten Artikel zurück auf die Quelle verlinken, d.h. ein Klick auf den jeweilgen Artikel öffnet in der Regel die Quellenseite, womit die ursprüngliche (Redaxo) Site verlassen wird.

Was ist aber, wenn die Feed-Quelle eine exklusiv eigene Site ist, die nur dazu dient, extern Content für Redaxo zu generieren?

Das Modul: „Feed Hijack“

Module in Redaxo bestehen aus einer „Eingabe“ –  (optionale) Parameter, die mit übergeben werden,  und der „Ausgabe“, üblicherweise ein Stück PHP-Code, der das Content-Fragment ausgibt.
Weitere Bibliotheken werden hier nicht benötigt; Feed Hijack läuft ohne externe Anhängigkeiten.

Das Modul steht aktuell auf der REDAXO-Addon-Seite zum download bereit; die erste Version 1.0 als ZIP gibt es vorläufig hier:   feedhijack-1.0

Bitte Copyrights und README -Hinweise beachten!

Die Crux mit dem NumLock und dem Ziffernblock

Leute, die von Berufs wegen viele Zahlen eingeben müssen – z.B.  im Umfeld von Steuerberatung oder Rechnungswesen Tätige – arbeiten auf einer Standard-104-Tasten-PC-Tastatur gerne mit dem Nummernblock rechts. Die traditionell als „NumLock“ benannte Taste schaltet vom Cursor- in den Ziffernmodus und zurück.

Soweit, so gut. Aber was, wenn man ein Notebook einsetzen möchte, das nicht über diesen abgesetzen Ziffernblock verfügt? Man kauft sich einen separate Ziffernblock-Minitastatur (erhältlich  ab 8,– € mit USB-Anschluß  z.b. hier) und glaubt, das Problem gelöst zu haben.

Unschöner Nebeneffekt: Der NumLock-Status der separaten Zifferntastatur ist an den Status der Notebook-Tastatur gekoppelt, mit dem Ergebnis, dass dort die Buchstabentasten im rechten Bereich (I O P JK L N M) ebenfalls mit Ziffern belegt sind. Also nur der halbe Nutzen, denn um sinnvoll Text einzugeben, muß man doch wieder umschalten.

Wie so oft zeigt sich auch hier, dass die Macher der legendären IBM Thinkpads einen Schritt weiter gedacht haben und dies auch noch aller Unkerei zum Trotz unter der neuen Flagge Lenovo fortsetzen.

Die Thinkpads der Serien R52, T60, T61 und das aktuelle T500 haben im BIOS eine Option versteckt, mit der die beiden Tastaturen entkoppelt werden können: INDEPENDENT NUMLOCK KEYBOARD auf „An“.

Resultat: Text eingeben über die normale Notebooktastatur (NumLock aus), Ziffern eingeben über den separaten USB-Ziffernblock (NumLock an)

Keine zeitraubenden Hacks. Einfach nur das richtige Notebook.

Dokumente einfach aus Sharepoint 2001 und 2003 extrahieren

Werkzeuge für die Microsoft Sharepoint Portal Server (SPS) gibt es viele: Ausgefeilte, durchdachte, professionelle usw. Für die einfache Aufgabe, einen Dokumentenbaum auszulesen, genügen Grundkenntnisse der Struktur und ein paar Zeilen Programmcode. Wir betrachten im folgenden die beiden ersten Versionen von Microsoft Sharepoint Server, also 2001 und 2003:

Exportieren mit einer einzigen Zeile Shellscript: Sharepoint Portal Server 2001

Der SPS 2001 war für die Windows 2000 – Serverumgebung zugeschnitten; schon unter Windows 2003 Server läuft er nicht mehr. Microsoft hat aber neben HTTP und DAV einen Zugang per IFS (installable file system) vorgesehen, um lesenden Zugriff auf die Dokumentenstruktur eines Arbeitsbereichs zu erhalten. Das gleiche Verfahren wird übrigens auch noch von Exchange 2000 angewandt, sodaß man durch die „Hintertür“ Zugriff auf die Dateistrukturen hat.
Mit diesem Shell-Kommando auf dem W2K-Server selbst (via cmd.exe) wird ein Laufwerksbuchstabe zugeordnet:

 
subst M: \\.\backofficestorage

Arbeitet man mit dem Windows-Explorer, müssen versteckte Ordner und Dateien angezeigt werden, sonst sieht man den Ordner WORKSPACES nicht, der die eigentlichen Dateien enthält; der Arbeitsbereich  TESTDOCS unter „Anwendungen“ ist leer (Dokumentenverzeichnis grün markiert)

explorer-sharepoint2001

Eine Zusammenfassung  zum IFS drive und dem Microsoft Web Storage System finden sich hier: http://support.microsoft.com/kb/294312/en-us/

Der Artikel betont auch noch einmal, daß diese Methode zwar zum Extrahieren von Dokumenten geeignet ist, nicht aber zum Zurückschreiben, denn man wird aller Wahrscheinlichkeit nach die darunterliegende Autoren-/Rechtestruktur kompromittieren.

Sharepoint Server 2003 alias Sharepoint 2: Dokumentenexport mit IronPython

IronPython, Microsofts Python-Implementierung in der Version 2.6 bei codeplex ( http://ironpython.codeplex.com/ ) ermöglicht, Dotnet-Assemblies auf einfachste Weise einzuhängen, z.B. mit clr.AddReference(‚Microsoft.SharePoint‘)

Hier ist der Code, um eine einzelne Dokumentenbibliothek auszulesen und auf eine lokale Platte unter Beibehaltung der timestamps zu spiegeln:

# --------------------------------------------------------------------------------------
#
# Dokumentenimport von MS SharePoint.
# Die originale Ordnerstruktur wird abgebildet; Zeitstempel der Dokumente bleibt erhalten.
# Autor: weitlandt. Klaus Stein 29.10.09
#
# Umgebung: Ironpython 2.6+ (www.ironpython.com bzw. codeplex.com)
#
 
SAVE_TO = "C:/SHP2"
SITEURL = "http://localhost"
DOCROOT = "Shared Documents"
 
# -----------------------------
 
import os,sys,stat,array,io,clr
from datetime import *
from time import mktime as mktime
 
clr.AddReference('Microsoft.SharePoint')
from Microsoft.SharePoint import *
 
def storefile(f,basedir,relpath):
  ptmp,ntmp = os.path.split(relpath)
  if not os.path.isdir(basedir + ptmp):
    os.mkdir(basedir + ptmp)
  a = f.ModifiedBy.ToString()
  d = f.OpenBinary()
  m = datetime(f.TimeLastModified)
  print f.Name+" (" + d.Length.ToString()+"), Letzte Speicherung von "+a+": "+m.ToString()
  fullpath = basedir + relpath
  b = open(fullpath,mode="w+b")
  for i in d: #
    b.write(chr(i))
  b.close()
  ts = int(mktime(m.timetuple()))
  os.utime(fullpath,(ts,ts)) # timestamp setzen
 
# main()
 
tstart = datetime.now()
if not os.path.isdir(SAVE_TO):
  os.mkdir(SAVE_TO)
 
S = SPSite(SITEURL)
W = S.OpenWeb()
 
print "Importieren von: " + W.Title + " (" + W.Url + ")"
 
R = W.GetListsOfType(SPBaseType.DocumentLibrary)[DOCROOT] # nur diesen Ordner
skip = len(DOCROOT)
cnt = 0
for i in R.Items:
  relpath = i.File.ToString()[skip:] # Das Startverzeichnis abgeschneiden
  storefile(i.File,SAVE_TO,relpath)
  cnt = cnt + 1
 
print "\nFertig. Angelegt: " + cnt.ToString() + ", Zeit: " + str(datetime.now() - tstart)
W.Dispose()
S.Dispose()
# ----

…das ist alles! Für Erweiterungen bietet sich an, die Objekteigenschaften von ‚Items‘ einmal genauer anzusehen – da ist noch etliches nützliches dabei.