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.

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.

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