G15 ve Transmission

Yeni klavyem oldu: Logitech G15. Cihazın güzel bir LCD ekranı var. İşi gücü olmayan bir grup insan da sağolsun buna Linux sürücüsü yazmış. Bir grup başka insan da sağolsunlar, G15Composer diye güzel bir dalga yapmışlar. LCD ekranı programlayabilmek için.

Efem şimdi ilk olarak ortamımız Debian Lenny.

apt-get install g15daemon g15composer

komutuyla kuruyoruz şeylerimizi. G15’e gönderilebilecek komutlara http://manpages.ubuntu.com/manpages/intrepid/man1/g15composer.1.html adresinden ulaşabilirsiniz. Biraz bakının, tekrar görüşürüz..

Baktınız değil mi?
Orada görüldüğü üzere kullanacağımız temel komut, “Ts “line 1” “line 2″ …”. TS(Text Small), küçük boyutta yazı yazmaya yarıyor.

g15composer > /tmp/g15

komutuyla composer ı başlatıyoruz. G15’imizde kocaman G15COMPOSER yazıyor olmalı şimdi. Örnek bir komut verelim,

echo 'TS "Hello G15"' > /tmp/g15

Ne oldu? Klavyede hello yazdı. 🙂 Şimdi bu komutları kurcalaya kurcalaya kurcalaya aşağıdaki şey çıktı. Kodun çalışması için Transmission 1.5x e ihtiyacınız var; ki bu da kararlı Debian deposunda yok. Ben sitesinden indirip derledim. “transmission” ile Transmission’ı başlatıyoruz, sonra konsolda “transmission-remote -l” ile Transmission’daki torrent bilgilerini listeliyoruz. Aaaa gösteriyor hepsini. İşte aşağıdaki şey burada görünen şeyleri düzgün bir hale sokup G15 e yazıyor.

Buyrun:

 /tmp/g15");
}
while(1)
{
	shell_exec('transmission-remote -l 2>&1');
	$output = shell_exec('transmission-remote -l 2>&1');

	$output = explode("n", $output);
	unset($output[0]);
	unset($output[count($output) - 1]);
	foreach ($output as $out)
	{
		$cout['done'] = trim(substr($out, 7, 3));
		$cout['have'] = trim(substr($out, 13, 6));
		$cout['haveMB'] = trim(substr($out, 20, 2));
		$cout['up'] = trim(substr($out, 37, 4));
		$cout['down'] = trim(substr($out, 44, 5));
		$cout['status'] = trim(substr($out, 57, 12));
		$cout['name'] = trim(substr($out, 70));
		$torrents[] = $cout;
	}

	foreach ($torrents as $tor)
	{
		if(empty($tor['name']))
			continue;
//		print_r($tor);
		$commands[] = """.str_pad("%$tor[done]", 3, ' ').str_pad("(".intval($tor['have'])."$tor[haveMB])", 8, ' ').str_pad(round($tor['up'])."/".round($tor['down']), 6, ' ')." $tor[name]"";
	}

	sendCommand('PC 0');
	sendCommand("TS "|||||||+++==--TRANSMISSION--==++|||||||| " "  Done    Up/Down          Name" ".implode($commands, ' '));

	unset($commands);
	unset($torrents);
	sleep(2);
}
?>

G15Composer çalışıyorsa, php transmission.php (Yukarıdaki dosyanın adı) komutuyla scriptimizi çalıştırıyoruz, ve G15’de iki saniyede bir güncellenmek üzere Transmission ile indirdiğimiz şeylerin listesiniz görüyoruz..

Hoşuma gitti bunu yapmak, aylak bir zamanda Sistem bilgisi şeyedici, mail şeyedici, RSS şeyedici falan gibi bilimum dalga dümenle karşınızda olabileceğim. Tekrar görüşene kadar “ei bakın gennize ha!”.

Sonsuz kategorilendirme

Sonsuz kategorilendirme için güzel bir fonksiyon:

function kategori($lev, $par, $arr)
{
	foreach ($arr as $a)
	{
		if($a[2] == $par)
		{
			for($i = 0; $i < $lev; $i++)
				echo " »";
			echo $a[1]."
n"; kategori($lev + 1, $a[0], $arr); } } } $kategoriler = array( array(1, 'Bilgisayar', 0), array(2, 'Donanım', 1), array(3, 'İşletim Sistemi', 1), array(4, 'Ekran Kartı', 2), array(5, 'Nvidia', 4), array(6, 'ATI', 4), array(7, 'İşlemci', 2), array(8, 'Intel', 7), array(9, 'AMD', 7), array(10, 'Linux', 3), array(11, 'Debian', 10), array(12, 'Ubuntu', 10), ); kategori(0, 0, $kategoriler);
#!/usr/bin/python

kategoriler = [
	[1, 'bilgisayar', 0],
	[2, 'donanim', 1],
	[3, 'isletim sistemi', 1],
	[4, 'ekran karti', 2],
	[5, 'nvidia', 4],
]

def f(seviye, par, arr):
	for a in arr:
		if a[2] == par:
			for i in range(seviye):
				print '+',
			print a[1]
			f(seviye+1, a[0], arr)

f(0, 0, kategoriler)