Monday, August 29, 2011

Ders Notlari ve Github

ODE, Lineer Cebir ve Hesapsal Bilim ders notlarinin tex, png, py dosyalari Github uzerindeki classnotes adli projede.

Github


Wednesday, August 24, 2011

Lokal Dosya Arama - recoll

Google Desktop yerel dosyalari indekslerken bazen hata yapiyor. Onun yerine daha yalin / basit bir sistemi denedik: recoll. Kurmak icin

sudo apt-get install recoll

Komutta recoll yazilinca GUI acilir. Preferences | Indexing configuration ile indekslenecek dizinler eklenebilir, cikartilabilir. Komut satirindan indeksleme icin recollindex cagrisi yeterli.

Lineer Optimizasyon, Simplex ve Berlin Hava Ikmali

Baglanti

Monday, August 15, 2011

Emacs Uzerinden Twitter

Emacs icinde Twitter kullanabilmek icin, once TwitteringMode kodlari indirilir.

http://github.com/hayamiz/twittering-mode/tree/master

Acildiktan sonra kodlarin [DIZIN] icinde oldugunu farzedelim, .emacs icinde

(add-to-list 'load-path "[DIZIN]")
(require 'twittering-mode)
(setq twittering-use-master-password t)

Emacs icinde M-x twit komutunu kullandiktan sonra Twitter mod'u acilacak. Ilk kullanimda eger Web uzerinden Twitter kullaniyorsaniz, ve sifreniz hep hatirlaniyorsa, OAuth uzerinden Emacs'ten erisim icin izin istenecek. Bu y ve n sorusuna y ile cevap verin, bundan sonra tarayici bir sayfayi acip o sayfada bir PIN kodu verecek. Bu kod Emacs'e girilirse, Emacs bir sifre soracak. Bu sifre artik Emacs uzerinden Twitter kullanma sifresidir. Her M-x twit sonrasi bu sifre sorulur.

Programa girince 'i' ile kisi ikonlari gosterilebilir. Yeni tweet icin 'u' kullanilir, mesaj girildikten sonra eklemek icin C-c C-c.

Kaynak

Thursday, August 11, 2011

Arastirmacilar Icin Bedava EC2

Su baglantiya gore edu alanindan bir email ve 4000 harflik bir tasari / teklif mesaji sonrasi $7500'lik bedava EC2 kullanim kredisi elde edilebiliyor, ve her 6 ay bu kredi yenilenebiliyor. Gunun 24 saatinde 4 cekirdekli bir islemci mi, 4 saatlige 100 cekirdekli islemci mi kullanmak istersiniz? GPU kullanimi mi istiyorsunuz? 16 cekirdek ve 60 GB RAM? 10 Gig-E ic network baglantili kumeler mi istersiniz? Bunlarin hepsi mumkun. Hatta ve hatta buyuk verili projeler icin hard diskleri postayla Amazon'a gondermek bile mumkun. Veriyi postadan alip onlar sisteme yukluyorlar.

Fiziksel Veri Transeri


EC2


Saturday, August 6, 2011

KineticsKit

VPython uzerine kurulu bir paket: KineticsKit. Bu paket kutleler ve yaylardan olusan sistemleri kurmayi iyice rahatlastiriyor, hatta kutlelerin uzerine mouse ile tiklanip hareket edilebilmelerine bile izin veriyor. Biz bu sistemi MIT OCW Hesapsal Bilim problemlerinden biri icin kullandik.

Iki ucu sabitlenmis du^2/dx^2 = 1 sisteminin ayriksal cozulmesi u(x) icin bir parabol ortaya cikartti (sistemin matematiksel detaylari MIT OCW Hesapsal Bilim Ders 1 sonunda). Bu parabol zincir halindeki bir kutle, yay sisteminde ortadaki kutlelerin daha fazla yer degistirmesi anlamina geliyordu. Bunun fiziksel olarak nasil gozukebilecegini gormek icin alttaki simulasyonu yaptik. Resmin sol tarafi once, sag tarafi yercekim etkisi sonrasi.

KineticsKit kurmak icin baglanti: http://kineticskit.sourceforge.net. Buradan zip indirilir, acilir ve

sudo mv  KineticsKit /usr/lib/python2.7/dist-packages/

ile gereken yere kopyalanir, setup.py secenegi vermemisler, yani kurulumu elle yapmak gerekiyor. Ustteki simulasyon icin

from KineticsKit import *
from visual import vector

system = System(timestep=0.04, gravity=1)

mass1 = Mass(m=0.1, pos=(0.0, 0.0, 0.0), fixed=1)
mass2 = Mass(m=0.1, pos=(0.0, 0.5, 0.0))
mass3 = Mass(m=0.1, pos=(0.0, 1.0, 0.0))
mass4 = Mass(m=0.1, pos=(0.0, 1.5, 0.0))
mass5 = Mass(m=0.1, pos=(0.0, 2.0, 0.0))
mass6 = Mass(m=0.1, pos=(0.0, 2.5, 0.0))
mass7 = Mass(m=0.1, pos=(0.0, 3.0, 0.0), fixed=1)

system.insertMass(mass1)
system.insertMass(mass2)
system.insertMass(mass3)
system.insertMass(mass4)
system.insertMass(mass5)
system.insertMass(mass6)
system.insertMass(mass7)

spring1 = SingleHelixSpring(m0=mass1, m1=mass2, k=1, damping=0.5)
system.insertSpring(spring1)
spring2 = SingleHelixSpring(m0=mass2, m1=mass3, k=1, damping=0.5)
system.insertSpring(spring2)
spring3 = SingleHelixSpring(m0=mass3, m1=mass4, k=1, damping=0.5)
system.insertSpring(spring3)
spring4 = SingleHelixSpring(m0=mass4, m1=mass5, k=1, damping=0.5)
system.insertSpring(spring4)
spring5 = SingleHelixSpring(m0=mass5, m1=mass6, k=1, damping=0.5)
system.insertSpring(spring5)
spring5 = SingleHelixSpring(m0=mass6, m1=mass7, k=1, damping=0.5)
system.insertSpring(spring5)

loc_1 = [mass2.sphere.pos.y, mass3.sphere.pos.y,
        mass4.sphere.pos.y, mass5.sphere.pos.y,
        mass6.sphere.pos.y]

count = 0

while 1:
   system.step()
   count += 1
   if count == 100: break
 
loc_2 = [mass2.sphere.pos.y, mass3.sphere.pos.y,
        mass4.sphere.pos.y, mass5.sphere.pos.y,
        mass6.sphere.pos.y]

from itertools import izip
for x,y in izip(loc_1, loc_2):
   print x-y
SingleHelixSpring yay cesitlerinden bir tanesi, bir sure sonra sistemin durmasini istiyorsak surtunme eklemek gerekli, damping=0.5 bunun icin verildi. System olustururken gravity secenegi verilmezse sistem baslangic halinde kalir, tabii kullanici mouse ile kutleleri cekip cevirirse sistem buna gore kendini duzenliyor.

Wednesday, August 3, 2011

Ubuntu ve Masaustu Goruntu, Video Kaydi

Ekranda olanlari, ozellikle belli bir pencerede olanlari, video olarak kaydetmek icin biz sunlari yaptik.

Kaydedilecek gorsel programi baslatin.

Sonra baska bir komut satirindan xwininfo programini baslatin. Bu program ok isaretini bir arti haline donusturecek, ve bu arti isareti hangi diger pencere uzerine getirilirse o pencerenin bilgileri dokulecek. Bizim ihtiyacimiz olan "Window id" satirinin ne soyledigi. Burada mesela 0x4200003 gibi bir sayi var. Bu sayiyi alin ve

recordmydesktop --windowid=0x4200003

olarak kayit islemini baslatin. Istediginiz kadar kaydedince Ctrl-C ile cikin, kaydedilen her sey out.ogv adli bir video dosyasina yazilacak. Eger recordmydesktop kurulu degilse, su sekilde kurulabilir.

sudo apt-get install recordmydesktop zenity

Eger ogv dosyasini animasyonlu gif formatina cevirmek istiyorsak, su komut yeterli

ffmpeg -i out.ogv -loop_output 0 -pix_fmt rgb24 -r 5 -s 250x250 output.gif

-loop_output gif'in ne kadar tekrar edilecegini kontrol eder, 0 degeri sonsuza kadar demektir. -r secenegi bir saniye icinde kac kare (frame) gosterilecegi.

Tek Goruntu

Eger masaustundeki goruntuyu tek imaj olarak (screenshot) almak istiyorsak, secenekler sunlar. PRTSC, yani print screen dugmesi kullanilabilir. Bu ise yaramazsa, ImageMagick kurulur (apt-get install imagemagick), ve komut satirinda su girilir:

import [dosya.png]

Bu komutun hemen arkasindan ekrandaki isaret (cursor) arti isaretine donusecek. Bu isaret ile hangi pencereye tiklanirsa onun goruntusu dosya.png icine yazilir.

Ya da Applications | Accessories | Take Screenshot programi baslatilir.

Tuesday, August 2, 2011

vpython

3 boyutlu animasyon, fiziksel objelerin modellenmesi icin bir paket: vpython. Fizik derslerinde egitim amaclari icin ideal. Paket fiziksel objelerin sanal olarak 3 boyutlu ortama konulmasi, onlarin diger objelere verecegi tepkilerin kodlanmasi icin ozellikler sunuyor.

Ubuntu 11 uzerinde kurmak icin

sudo apt-get install python-visual

Eger KineticKit eklemek istersek, suraya bakilabilir.

Orneklerden biri sabit ay ve dunya kosullarinda Apollo 13 uzay seferinin takip ettigi yolu simule etmek. Sonuc animasyonlu olarak gosterilecek. Kodlar alttaki baglantida.


VPython paketinden cikan bazi ornek kodlar surada. Cok objeli bir yayli sistemi canli olarak gosteren ilginc bir program crystal.py. Sonuc alttaki gibi (yuklenmesi biraz zaman alabilir). Bu animasyonu yapan kod 160 kusur satirlik bir koddan ibaret. Tum fiziksel kosullari tanimlanmis ve canli halde isliyor. Bu tur simulasyonlari yapmak cok daha fazla kodlama ve eskiden ozel bilgisayarlar gerektirirdi.



Kaynak

Monday, August 1, 2011

Git Tavsiyeleri

Kaynak Kod Idare Sistemi Git ile calisirken takip edilmesi tavsiye edilen bir is akisi (workflow) surada. Tavsiyeye gore dis dunyaya acik (public) bir dal (branch) olmali, bu dalin uzerindeki kod degisim notlari (commit history) olabildigince lineer, temiz olmali. Programci bir ozellik uzerinde calisiyorsa bunu kendine ozel, disa kapali (private) bir dal uzerinde yapar, o dala bol bol, istedigi kadar commit yapar, vs. Fakat -ve burasi onemli nokta- master dalina kod birlestirme (merge) yapmadan once bu kapali dalin degisim tarihini tekrar yazabilir. Gelistirme dallari bir nevi taslak olarak gorulmelidir, ve "disa yayin yapilmadan once" yani birlestirme operasyonundan once temizlenmelidirler. Pek cok kez yapilan birkac commit birlestirilip tek hale getirilebilir mesela. Bu temizlik isi icin kullanilabilecek bir rebase numarasi da gosterilmis.