GAMS Paket für Sublime Text 2

Dieses Semester geht es in die zweite Runde General Algebraic Modeling System (GAMS). Da mir die GAMS IDE nicht besonders zusagt, habe ich mich auf die Suche nach einer Alternative gemacht.
Wuala, wer suchet der findet. Da gibt es sogar bereits ein Paket für den geliebten Sublime Text Editor. Wer den schicken, schlanken und schnellen Multiplatform-Editor noch nicht kennen, sollte ihn wirklich mal ausprobieren.

Laurent Drouet, aus der Schweiz, hat das GAMS Paket geschrieben. Es kann via Package Control oder manuel installiert werden. Das Repository befindet sich auf github.com/lolow/sublime-gams.
Neben dem Syntax Highlighting der .gms Datei bietet das Plugin auch noch das Anzeigen der .lst Dateien, Ausführen des GAMS Modele (CTRL+B), Umschalten zwischen GAMS code und dem Listing (ALT+L), sowie die schnelle Navigation zu den Errors in dem Listing (CTRL+R).
Wer noch andere interessante Pakete sucht, findet hier ein paar tolle gelistet.

It’s time to modeling for the real world.

Automatische Proxy Einstellungen (TH-Wildau)

Neues Semester und jetzt gibt es vom HRZ auch automatische Proxy Einstellungen. Zugegeben, aufgrund der Vielzahl an Geräten nicht ganz einfach, aber solch eine .pac / .dat Datei sieht mehr nach einen Prototypen bzw trial and error aus.

====
ftp.th-wildau.de/proxy.pac

function FindProxyForURL(url, host) {
	// If URL has no dots in host name, send traffic direct.
	//if (isPlainHostName(host))
	//	return "DIRECT";

// If specific URL needs to bypass proxy, send traffic direct.
	if (shExpMatch(url,"*th-wildau.de*") ||
	    shExpMatch(url,"*tfh-wildau.de*"))
		return "DIRECT";

// If IP address is internal or hostname resolves to internal IP, send direct.

	var resolved_ip = dnsResolve(host);

	if (isInNet(resolved_ip, "10.100.12.*", "255.0.0.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
		isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
		return "DIRECT";

	//if (isInNet(resolved_ip, "194.95.48.*", "255.255.255.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
		//isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
		//return "PROXY proxy.th-wildau.de:8080; DIRECT";

// If not on a internal/LAN IP address, send traffic direct.
	if (!isInNet(myIpAddress(), "194.95.48.*","255.255.255.0"))
		return "PROXY proxy.th-wildau.de:8080; DIRECT"
	if (!isInNet(myIpAddress(), "10.100.12.*","255.255.255.0"))
		return "PROXY proxy.th-wildau.de:8080; DIRECT";

// All other traffic uses below proxies, in fail-over order.
	return "PROXY proxy.th-wildau.de:8080; DIRECT";
}

====
ftp.th-wildau.de/proxy2.pac

function FindProxyForURL(url, host) {
	// If URL has no dots in host name, send traffic direct.
	if (isPlainHostName(host))
	{
    return "DIRECT";
  }

// If specific URL needs to bypass proxy, send traffic direct.
	if (shExpMatch(url,"*th-wildau.de*") ||
	    shExpMatch(url,"*tfh-wildau.de*"))
		{
    return "DIRECT";
    }



//reip = /^d+.d+.d+.d+$/g;
//if (reip.test(host)) {
         if ( isInNet(host, "194.95.50.0", "255.255.255.0") ||
              isInNet(host, "194.95.49.0", "255.255.255.0") ||
              isInNet(host, "194.95.48.0", "255.255.255.0") ||
              isInNet(host, "194.95.46.0", "255.255.254.0") ||
              isInNet(host, "194.95.45.0", "255.255.255.0") ||
              isInNet(host, "194.95.44.0", "255.255.255.0") ||
              isInNet(host, "193.175.213.0", "255.255.255.0") ||
              isInNet(host, "10.100.0.0", "255.255.252.0") ||
              isInNet(host, "10.100.4.0", "255.255.252.0") ||
              isInNet(host, "10.100.8.0", "255.255.252.0")
          ) {
             return "DIRECT";
        }
//	}


	var resolved_ip = dnsResolve(host);

	//if (isInNet(resolved_ip, "10.100.12.*", "255.0.0.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
	//	isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
	//	return "DIRECT";

	//if (isInNet(resolved_ip, "194.95.48.*", "255.255.255.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
		//isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
		//return "PROXY proxy.th-wildau.de:8080; DIRECT";

// If not on a internal/LAN IP address, send traffic direct.
	//if (!isInNet(myIpAddress(), "194.95.48.*","255.255.255.0"))
		//return "PROXY proxy.th-wildau.de:8080; DIRECT"
	//if (!isInNet(myIpAddress(), "10.100.12.*","255.255.255.0"))
		//return "PROXY proxy.th-wildau.de:8080; DIRECT";


	if (url.substring(0,4) == "http") { return "PROXY proxy.th-wildau.de:8080"; }
 	if (url.substring(0,4) == "HTTP") { return "PROXY proxy.th-wildau.de:8080"; }

// All other traffic uses below proxies, in fail-over order.
	return "DIRECT";
}

====
ftp://ftp.th-wildau.de/wpad.dat

function FindProxyForURL(url, host) {
	// If URL has no dots in host name, send traffic direct.
	//if (isPlainHostName(host))
	//	return "DIRECT";

// If specific URL needs to bypass proxy, send traffic direct.
	if (shExpMatch(url,"*th-wildau.de*") ||
	    shExpMatch(url,"*tfh-wildau.de*"))
		return "DIRECT";

// If IP address is internal or hostname resolves to internal IP, send direct.

	var resolved_ip = dnsResolve(host);

	if (isInNet(resolved_ip, "10.100.12.*", "255.0.0.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
		isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
		return "DIRECT";

	//if (isInNet(resolved_ip, "194.95.48.*", "255.255.255.0") ||
		//isInNet(resolved_ip, "172.16.0.0",  "255.240.0.0") ||
		//isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
		//isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
		//return "PROXY proxy.th-wildau.de:8080; DIRECT";

// If not on a internal/LAN IP address, send traffic direct.
	if (!isInNet(myIpAddress(), "194.95.48.*","255.255.255.0"))
		return "PROXY proxy.th-wildau.de:8080; DIRECT"
	if (!isInNet(myIpAddress(), "10.100.12.*","255.255.255.0"))
		return "PROXY proxy.th-wildau.de:8080; DIRECT";

// All other traffic uses below proxies, in fail-over order.
	return "PROXY proxy.th-wildau.de:8080; DIRECT";
}

Über die Proxy-Auto-Configuration habe ich bereist geschrieben. Wer sich weiter mit dem Thema beschäftigen möchte, findet in den folgenden Links zusätzliche Informationen.

Vorhandene Festplatte in der VirtualBox bändigen

Hier möchte ich kurz beschreiben, wie man seinen VirtualBox Windows 7 Virtualbox Disk Images (VDI) Container verkleinern und vergrößern kann. Mit verkleinern ist hier die Inanspruchnahme des Fesplattenplates des Gastsystemes, auf dem Hostsystem, gemeint.

Speicherplatz gewinnen auf dem Hostsystem
Diese Beschreibung bezieht sich auf dynamische VDI Container, welche häufig genutzt werden. Viele merken, dass mit der Zeit der Container immer größer wird, obwohl die Nutzdaten nicht im gleichen Maße zunehmen. Grund hierfür ist, dass das Gastsystem die Daten verteilet in den Container schreibt. Somit stehen Datenblöcke auch im hinteren Teil des Containers.
Mit den folgenden Schritten konnte ich meine Windows 7 VirtualMaschine (VM) bzw. VDI Container um ca. 10 GB verkleinern.

  1. Windows VM starten
  2. Speicherplatz gewinnen: Parpierkorb leeren, alte Installationsdateien löschen, Datenträgerbereinigung durchführen, …

    Ggf. Installationsdateien des Windows 7 Service Packs (WinSxS Ordner) löschen. Achtung: damit lässt es sich nicht mehr deinstallieren. Folgenden Befehl mit Administratorrechten in der Eingabeaufforderung ausführen.

    DISM.exe /Online /Cleanup-Image /spsuperseded
  3. Festplatte mit dem Windows Standard Tool / Start / Zubehör / Systemprogramme / Defragmentierung oder z.B. MyDefrag defragmentieren
  4. Freien Speicherplatz mit Nullen überschreiben. Hier für kann man SDelete
    sdelete -z

    oder nullfile nutzen

  5. Windows herunterfahren
  6. Im Host Terminal folgenden Befehl ausführen
    VBoxManage modifyvdi IMAGE_NAME.vdi --compact
    • Benutzt man beispielsweise ein anderes Image-Format, so lässt sich diesen über die Terminal transformieren.
      VBoxManage clonehd --format vdi ORIGINAL.vmdk CONVERTED.vdi

Vergrößern
Wenn man beim Anlegen der VM doch die Festplattengröße zu gering gewählt hat oder man später keine zweite Festplatte hinzufügen möchte, kann man seinen Windows 7 VDI Container wie folgt vergrößern.

  1. Windows 7 Gastsystem herunterfahren
  2. Im Host Terminal öffnen, in den Ordner navigieren wo der VDI Container liegt und folgendes ausführen
    VBoxManage modifyhd IMAGE_NAME.vdi --resize 15000

    Hinweis: die resize-Angabe erfolgt in Megabytes und gibt die neue maximale Größe an.

  3. Windows 7 Gast System wieder starten und die neue Festplattengröße mitteilen
    • / Start / Datenträgerverwaltung / Festplattenpartitionen erstellen und verwalten
    • Festplatte selektieren / Volumes erweitern… / leeren Speicherplatz hinzu
    • Noch einmal auf weiter klicken und schon ist der neue Speicherplatz dynamisch eingebunden

PDF Restriktionen umgehen

Ab und an erhält man PDF Dateien mit Restriktionen. Solch eine Restriktion kann zum Beispiel die Druck- oder Editier-Funktion sein, welche ggf. ein Password benötigen. Ein einfacher Weg diese Restriktionen zu umgehen ist das UNIX-like Tool QPDF. Auf dem Mac lässt es sich ganz einfach mittels Homebrew installieren.

brew install qpdf

Nach der erfolgreicher Installation lässt sich die Restriktion mit folgender Zeile beheben.

qpdf --decrypt RESTRICTED.pdf FREE.pdf

Fröhliches Editieren und Drucken.

Proxy-Auto-Configuration (TH-Wildau)

Mit Hilfe der Proxy-Auto-Configuration (pac) findet der Webbrowser bzw. das System automatisch die passenden Proxy. Die pac ist eine einfache Text-/JavaScrip-Datei. Sie hat üblicherweise den Namen proxy.pac oder wpac.dat. Der Name ist jedoch Betriebssystem abhängig. Unter Mac OS X und den MS IE muss die Datei wpac.dat heißen.
Solch eine Proxy Konfiguration kann auch automatisch im Netzwerk verteilt werden. Dies passiert, aufgrund der Gerätevielfalt in der TH-Wildau, jedoch nicht.

In dieser wird eine JavaScript-Funktion FindProxyForURL(url, host) definiert.
Ein einfaches Beispiel für die TH-Wildau ist folgende Zeile.

function FindProxyForURL(url, host) { return "PROXY proxy.th-wildau.de:8080; DIRECT"; }

Die ganze PAC-Geschichte kann man natürlich auch noch weiter treiben…

function FindProxyForURL(url, host) {
	// function's
		// isPlainHostName(host)
		// dnsDomainIs(host, "localhost") || dnsDomainIs(host, ".beispiel.net")
		// shExpMatch(host, "192.168.178.*") || shExpMatch(host, "10.0.*") || shExpMatch(url, "https://*")
		// isInNet(host, "127.0.0.1", "255.255.255.0") || isInNet(myIpAddress(), "192.168.178.0", "255.255.255.0")
		// localHostOrDomainIs(host, "127.0.0.1") || localHostOrDomainIs(host, "beispiel.net")
	// return's
		// direkt - return "DIRECT";
		// proxy - return "PROXY your.proxy.net:port";
		// with fallback / multi proxy spec (proxy > direct) - return "PROXY proxy.th-wildau.de:8080; DIRECT";

	/*if (X() || Y()) {
		return "DIRECT";
	} else if (Y() && Z()) {
		return "PROXY proxy.th-wildau.de:8080";
	} else {
		return "PROXY proxy.th-wildau.de:8080; DIRECT";
	}*/
}

Diese Datei kann beispielsweise in das Benutzerverzeichnis gelegt werden.
Unter Mac OS X wird die pac unter Systemeinstellungen / Netzwerk / WiFi bzw. Ethernet / Button: Weitere Optionen / Tab: Proxies / Checkbox: Autom. Proxy Konfiguration eingetragen.

Hier gibt es noch weitere Informationen zum Thema Link.

Airport Express – drucken von Windows

Apple’s Airport Express ist schon ein schönes kleines Gerät. Die kleine Box, die man einfach in die Steckdose steckt, hat einen recht umfangreichen Funktionsumfang.

  • a/b/g/n Wi-Fi (2,4 GHz oder 5 GHz) und 10/100 LAN Anschluss
    • WEP, WPA, WPA2
    • NAT, MAC-Adressfilterung, VPN Passthrough (IPSec, PPTP and L2TP)
    • DHCP, PPPoE, DNS Proxy, IPv6 (6to4 und manuelle Tunnel)
    • WLAN auf 10 Benutzer begrenzt ):
  • Streaming von Musik an die Stereoanlage oder Aktivlautsprecher
  • USB-Anschluss für die Anbindung eines USB-Druckers (keine Festplatte ): )
  • 9,4 x 7,5 x 2,9 groß – ideal für Reisen


Nun aber zum eigentlichen Problem. Meine Freundin hat ein Notebook, auf dem Windows XP drauf läuft. Hier wollte ich ebenfalls den Drucker (GDI-Laserdrucker) einrichten. Die Einrichtung ging auch problemlos von der Hand (hier noch die orginal Anleitung). Jedoch als ich eine Testseite drucken wollte passierte nichts. Nach etwas Suche im Internet bin ich auf folgende Lösung gestoßen, welche bei mir funktioniert hat.

Drucker -> Eigenschaften -> Anschlüsse -> Konfigurieren des 10.0.1.1 bzw. IP der Airport Express und bei Protokoll von „lpr“ auf „raw“, mit der Portnummer 9100, umstellen.

Siehe da, es druckt.

ClipGrab³

ClipGrap 3.0.5 habe ich vorhin entdeckt. Es ist ein kleine, feines GPL Tool zum Download und umwandeln von Videos. Naja, klein mit 15MB ist relativ. Aber okay. Es ist für Mac, Linux und Windows erhältlich. Ggf. könnt ihr es auch selbst aus den Sourcen kompilieren.
Es funktioniert mit den Plattformen YouTube, Dailymotion, MyVideo, MySpass, Sevenload und Vimeo.
Die Videos können in den folgende Formaten konvertiert-gespeichert werden: orginal, MPEG4, WMV, OGG Theora (Video), OGG Vorbis (Audio) und MP3.

ClipGrap3