Category Archives: How-Tos

Windows XP: PPTP-VPN über Kommandozeile verbinden und trennen

Posted on in How-Tos, Windows

VPN verbinden

rasdial [Verbindungsname] [Username] [Passwort]
> rasdial VPN user password
Verbindung herstellen mit VPN...
Überprüfung des Benutzernamens und Kennworts...
Der Computer wird im Netzwerk registriert...
Verbindung mit "VPN" wurde hergestellt.
Der Befehl wurde erfolgreich ausgeführt.

VPN trennen

rasphone -h [Verbindungsname]

Ruby On Rails auf Ubuntu 8.04

Posted on in How-Tos, Linux, Server

Ich wollte soeben auf meinem frisch installierten Ubuntu 8.04 folgendermaßen Ruby On Rails installieren, um mal wieder zu versuchen, mich darin einzuarbeiten ;-)

maff@mafftop:~$ sudo apt-get install ruby rubygems irb ri rdoc
> ruby1.8-dev build-essential
maff@mafftop:~$ sudo gem install rails --include-dependencies

Die Installation der Pakete über apt verlief gewohnt problemlos, aber gems erwartete mich mit einer netten Fehlermeldung:

maff@mafftop:~$ sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
ERROR:  While executing gem ... (Gem::GemNotFoundException)
    Could not find rails (> 0) in any repository

Hmm, komisch. Gerade Rails wird nicht gefunden? Das kanns doch fast nicht sein. Also hab ich ein bisschen gesucht und einen Post gefunden, der das Problem beheben soll. Also hab ich mal schön Schritt für Schritt alles nachgemacht :-) Durch ein gem env wird das Installationsverzeichnis von gems ausgespuckt, in dem der cache-Pfad gelöscht werden soll:

maff@mafftop:~$ sudo gem env
RubyGems Environment:
  - VERSION: 0.9.4 (0.9.4)
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - GEM PATH:
     - /var/lib/gems/1.8
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
maff@mafftop:~$ sudo rm -f /var/lib/gems/1.8/source_cache

Ok, und nun? Ein erneuter Versuch, rails zu installieren scheiterte mit der selben Fehlermeldung. Also hab ichs mit einem Update von gems versucht:

maff@mafftop:~$ sudo gem update
Updating installed gems...
Bulk updating Gem source index for: http://gems.rubyforge.org
Gems: [] updated

Et voilà:

maff@mafftop:~$ sudo gem install rails --include-dependencies
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.8.1
Successfully installed activesupport-2.0.2
Successfully installed activerecord-2.0.2
Successfully installed actionpack-2.0.2
Successfully installed actionmailer-2.0.2
Successfully installed activeresource-2.0.2
Successfully installed rails-2.0.2
7 gems installed
Installing ri documentation for rake-0.8.1...
Installing ri documentation for activesupport-2.0.2...
Installing ri documentation for activerecord-2.0.2...
Installing ri documentation for actionpack-2.0.2...
Installing ri documentation for actionmailer-2.0.2...
Installing ri documentation for activeresource-2.0.2...
Installing RDoc documentation for rake-0.8.1...
Installing RDoc documentation for activesupport-2.0.2...
Installing RDoc documentation for activerecord-2.0.2...
Installing RDoc documentation for actionpack-2.0.2...
Installing RDoc documentation for actionmailer-2.0.2...
Installing RDoc documentation for activeresource-2.0.2...

Jetzt gehts ans Doku und Tutorials lesen ;-)

Notepad++: Code durch RegEx bereinigen

Posted on in Development, How-Tos, Software, Windows

Obwohl ich mit regulären Ausdrücken schon immer auf Kriegsfuß gestanden bin, habe ich gerade mit der RegEx Search&Replace Funktion von Notepad++ rumgespielt um meinen Code etwas aufzuräumen. Konkret wollte ich folgendes erreichen, einfach weil es sich besser lesen lässt und übersichtlicher ist:

// altes Schema: öffnende Klammern in der gleichen Zeile
function doSomeThing($params) {
	while(true) {
		do();
	}
}

// neues Schema: öffnende Klammern in neuer Zeile
function doSomeThing($params)
{
	while(true)
	{
		do();
	}
}

Also CTRL+H gedrückt und folgendes eingegeben:

Search:	^(t*)(.*)(s*){
Replace:	12n1{

Und schwupps … tausende Zeilen Code bereinigt. Bis jetzt sieht’s gut aus, mal sehen wann ich drauf komme, dass sich ein gravierender Fehler eingeschlichen hat und ich alles per Hand durchgehen kann ;-)

Sound unter Linux auf meinem Toshiba P100

Posted on in How-Tos, Linux

Update: Dieses Tutorial hat sich mittlerweile erübrigt. Sound läuft out-of-the-box in Ubuntu 8.04 (Hardy Heron).

Achtung: Diese Anleitung funktioniert nur bis Ubuntu Feisty (7.04). Auf Ubuntu Gutsy (7.10) funktioniert das Ganze aufgrund eines Bugs im verwendeten Kernel nicht. Siehe auch: https://bugs.launchpad.net/…/136469.

Update: Im Bugtracker für das Problem wurde endlich eine Lösung geposted, die bei mir einwandfrei funktioniert. Werde in Kürze hier eine neue Anleitung online stellen. Siehe: https://bugs.launchpad.net/…/136469/comments/238

Nachdem ich auf meinem Toshiba P100-351 Ubuntu installiert hatte, ging in Richtung Sound gar nichts, obwohl das System den richtigen Treiber eingebunden hatte (snd-hda-intel). Nach einiger Recherche habe ich herausgefunden, dass das Problem an einem etwas schiefgeratenen BIOS seitens Toshiba liegt. Durch folgende 2 Forumthreads habe ich es dann doch hinbekommen:

Im folgenden was ich gemacht habe (steht in den Threads auch schon drin, aber als kleine Übersicht). Getestet habe ich auf openSuse 10.2 und Ubuntu Feisty, immer mit BIOS-Version 2.40. Wie es mit anderen BIOS-Versionen aussieht und ob die Vorgehensweise dort brauchbar ist, weiß ich nicht. Hinweis: ihr benötigt root-Rechte für die nachfolgenden Schritte.

  1. Den Intel ASL Compiler installieren
    mt:~# apt-get update
    mt:~# apt-get install iasl
  2. Die DSDT-Tabelle in eine Datei schreiben
    mt:~# cat /proc/acpi/dsdt > dsdt.dat
  3. Die Datei dekompilieren und diese mit einem Texteditor öffnen
    mt:~# iasl -d dsdt.dat
    mt:~# nano dsdt.dat
  4. Die Datei wie folgt anpassen: Im String Name (_HID, "*PNP0C14") den Stern entfernen. Dann nach Linux suchen, die if-else Struktur auskommentieren und Store (0x07D6, OSYS) // Fake Windows 2006 vor der letzten geschweiften Klammer der Struktur einfügen. Der Teil mit der if-else Struktur müsste dann so aussehen:
    Scope (_SB)
         {
             Method (_INI, 0, NotSerialized)
             {
                 If (DTSE)
                 {
                     TRAP (0x47)
                 } 
    
                 Store (0x07D0, OSYS)
     //             If (CondRefOf (_OSI, Local0))
     //             {
     //                 If (_OSI ("Linux"))
     //                 {
     //                     Store (0x03E8, OSYS)
     //                 }
     //                 Else
     //                 {
     //                     Store (0x07D1, OSYS)
     //                     If (_OSI ("Windows 2001 SP2"))
     //                     {
     //                         Store (0x07D2, OSYS)
     //                     } 
    
     //                     If (_OSI ("Windows 2001.1"))
     //                     {
     //                         Store (0x07D3, OSYS)
     //                     } 
    
     //                     If (_OSI ("Windows 2001.1 SP1"))
     //                     {
     //                         Store (0x07D4, OSYS)
     //                     } 
    
     //                     If (_OSI ("Windows 2006"))
     //                     {
     //                         Store (0x07D6, OSYS)
     //                     } 
    
     //                     If (LAnd (MPEN, LEqual (OSYS, 0x07D1)))
     //                     {
     //                         TRAP (0x3D)
     //                     }
     //                 }
     //             }
              Store (0x07D6, OSYS)  // Fake Windows 2006
             }
  5. Datei speichern und wieder kompilieren
    mt:~# iasl -tc -f dsdt.dsl
  6. Der Befehl spuckt wahrscheinlich einige Fehler aus, aber am Ende solltet ihr eine fertige DSDT.aml bekommen. Diese kopieren wir nun nach /
    mt:~# cp DSDT.aml /
  7. Als nächstes benötigen wir ein Script, das die initrd mit der neuen DSDT patcht. Ihr kopiert das Script am besten nach /boot, wo ihr auch gleich ein Backup der aktuellen initrd machen könnt (solltet).
    mt:~# cd /boot
    mt:~# wget http://gaugusch.at/acpi-dsdt-initrd-patches/initrd-add-dsdt
    mt:~# cp initrd.img-$(uname -r) initrd.img-$(uname -r).original
  8. Jetzt können wir die initrd patchen
    mt:~# sh initrd-add-dsdt initrd.img-$(uname -r) /DSDT.aml
  9. Nun könnt ihr versuchen, das System neu zu starten um zu sehen, ob alles geklappt hat.

Das sollte es gewesen sein. Ich hatte nach diesen Schritten auf beiden getesteten Distributionen Sound. Viel Glück