Cumartesi, Eylül 03, 2005

Hava Durumu Tahminleri ve Ekonomik Tahminler

Katrina kasırgasının ABD yi vurduğu şu günlerde fraktallarla ilgili araştırma yaparken gözüme çarptı. Yazıdan ilginç alıntılar;

1961 yılının kış aylarında bir gün, Lorenz bu ardışık sayı dizilerinin birini uzun uzadıya incelemek istediği bir sırada kestirme bir yol izlemeye kalkıştı. Programı tekrar başa dönüp çalıştırmak yerine ortalarda bir yerden başladı. Makineye başlangıç durumundaki şartları vermek için, daha önce yazıcıdan çıkardığı dizilere bakıp oradaki sayıları klavyeden aynen girdi. Sonra da hem makinanın gürültüsünden kaçmak, hem de bir fincan kahve içmek üzere koridorun sonundaki hole gitti. Bir saat kadar sonra döndüğünde hiç ummadığı bir şeyle karşılaştı; hem de öyle bir şey ki bununla artık yepyeni bir bilim dalı filizlenmeye başlıyordu.

Bilgisayarın yaptığı bu dökümde bir önceki dökümün tıpatıp tekrarlanması gerekirdi. Lorenz aynı sayıları makineye kendi elleri ile girmişti. Programda bir değişiklik yoktu. Oysa Lorenz yazıcıdan yeni çıkan döküme baktığında gördüğü şey şuydu: Hava durumu bir önceki dökümde yer alan şekilden o kadar hızla uzaklaşmaktaydı ki, bir kaç aylık bir süre zarfında, aradaki bütün benzerlik ortadan kalkmıştı. Lorenz bir bu sayı kümesine baktı, bir de önceki sayı kümesine. Sanki bir şapkanın içinden rastgele iki hava durumu seçip almış gibiydi. İlk aklına gelen şey, gene vakumlu tüplerden birinin bozulduğu oldu. (1961 yılından bahsediyoruz, o zamanlar bilgisayarlar şimdikinden çok farklıymış) Birden gerçeği farkına vardı. Makina bozulmuş falan değildi. Mesele makinaya işlediği sayılardan kaynaklanıyordu. Bilgisayarın hafızasına kaydedilen ondalık kesir sayıları altı haneydi: .506127. Yazıcıdan çıkan dökümde ise yerden kazanmak için, sadece üç hane görünüyordu: .506. Lorenz sayıları kısaltarak son üç rakamı yuvarlamış, binde birlik bir farkın sonucu etkilemeyeceğini düşünmüştü. Aslında bu varsayımın akla aykırı bir yönü yoktu. Bir meteoroloji uydusu okyanusun yüzeyindeki sıcaklığı binde birlik bir hassaslıkla okuduğunda, uzmanlar kendilerini şanslı addediler. Lorenz'in Royal McBee'si (*) klasik programı uyguluyordu. Tamamiyle determinizme dayalı denklemler sistemi kullanmaktaydı. Belirli bir çıkış noktasından hareket edildiğinde hava durumunun her seferinde tıpatıp aynı gelişmeyi göstermesi gerekirdi. Biraz daha farklı bir çıkış noktasından hareket edildiğinde, hava durumunun da biraz daha farklı bir gelişme göstermesi gerekecekti. Küçücük bir sayı hatasının rüzgarın hafif esintisinden farkı yoktu; tabi ki hafif esintiler hava durumunda önemli, büyük ölçekli değişimleri getirmeden önce ya zayıflayıp ortadan yok oluyorlar ya da birbirlerini dengeliyorlardı. Oysa Lorenz'in kendine özgü denklemler sisteminde küçücük hatalardan büyük felaketler doğmaktaydı. devamı...

Cuma, Eylül 02, 2005

Bill Gates ve Apple




Ne Yorum Yapayım ki şimdi ben bu resmin üstüne...

Çarşamba, Ağustos 31, 2005

Programcılık Nereye Gidiyor ?

Bazen düşünüyorum programcılık nereye gidiyor diye....


Linux-programlama listesinde bir süredir devam eden bir tartışma var. Bir arkadaşımız genetik ile ilgili bir proje için 2 bitlik bir veri tipni nasıl oluşturacağını ve bu işin kazançlı olup oladığını soruyordu. Tüm tartışmaya linux-programlama listesinden erişebilirsiniz. Ancak benim aklıma takılan serdar hocanın yazdığı bir iletiydi


Alıntı:
Selamlar...


İki bitlik değişken olur. Ama bu yanındaki diğer bitlerde doluysa bir anlam ifade eder. Bkz: struct, ":" vs.


10^7 ne eder 10 milyon mu? 2 bit olsa her değer ne olur ? 20 Milyon bit. Ne eder, kabaca 2.5 MB filan. Her biri 8 bit olsa, 10 MB eder.


Genel olarak çoğu mimaride "int" 32 bit uzunlukta. Bu da bir int içine 16 tane 2 bit saklayabileceğiniz anlamına gelir. Fakat bu bitleri buradan çıkarmak ve yerleştirmek için çok çok daha fazla zaman harcarsınız. Kabaca, bu bitleri karşılaştırmak 5 saat çevrimi sürse, bitleri çıkarmak 30 saat çevrimi, koymak 30 saat çevrimi filan eder. Toplam 65 saat çevrimi. Bu da 10 kat daha yavaş çalışacaksınız demek olur.


2 yerine 8 bit kullanmakta benzer bir yavaşlığa sebep olur. Genel kural olarak en hızlı işlenen değişkenler "int" olanlardır.


Görüldüğü üzere sorun optimizasyon sorunu. Seçim yapmanız lazım: "Optimize for size" yada "Optimize for speed" arasında. 256 MB RAM olan bir sisteme dudak büküldüğünü düşünürsek, bir kaç MB için bir sürü takla atmaya ihtiyaç olmaz sanıyorum. O kodu yazarken kullanacağınız elektrik/su parasına sisteme biraz daha RAM
alabilirsiniz nerdeyse.


Saygı ve sevgiler..



Yıl içinde java ile ilgili bir sunumda java için yaklaşık şöyle birşey deniyordu


Alıntı:
JIT


Java ilk çıktığında bytecode işletme hızı çok iyi değildi. yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yanı "Just-in-time compile", "anında derleme" araçları üretmeye başladılar. Yapılan şey byte kodu sanal makinenin kurulu olduğu gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede performansta ciddi artışlar sağlandı. Ama 2000 yılından sonra HotSpot teknolojisinin gelişmesi ile JIT'in işlevi VM'içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerliğini kaybetmiştir. Bugün halen bir kaç ürün pazarda bulunsa da genellikle bu yöndeki ihtiyaç yok olmuş gibi gözükmektedir.


Kaynak vikipedi



Yani sonuç olarak gelişen teknolojinin işçilerinin yerini alan robotları üretmesi gibi gelişen teknoloji ve görsel programlama araçları da biz programcıların (en azından kod optimizasyonu vs gibi konulara değer ve önem verenlerin) yerinimi alacak.


Şimdilik Büyük ölçekli projelerde kod optimizasyonu önemli olsada sıradan günlük kullanım için olan ve pc ler için yazılan programlarda önemini kaybetmekte gibi geliyor bana.


Teknolojinin bu hızda gelişimyle yakın gelecekte sunucular üzerinde yazılacak uygulamalar içinde önemini kaybedecek ve bizde hala burda lisp şöyle hızlı Ruby de şöyle kolay kod yazılıyor üstelik java dan da % bilmem kaç hızlı oluyor diye konuştuğumuzla kalacağız.


Bu gün sürekle bırak programcılığının yaygınlaşmasıyla yazdığı programın kodunun tamamını görmeyen (zaten görsede anlamayan) programcı sayısı o kadar fazla ki.


Üstelik bu adamlar bayağı ticari işlerde yapıyorlar. Mesela benim yarı-zamanlı çalıştığım kuruma gelip bizim sektör için son derece komik br fiyata komple çözüm öneren ve bayağı ciddi referanslar veren bir yazılım firması ile ilgili şefe sorduğum soru halen aklımdadır.


Ben : "Ne ile yazmışlar programı ? (Bahsettiğimiz program 300+ bilgisayar ve 100 bin doların üzerinde sunucularla çalışan bir kuruma kurulacak) "


Şef: "Visual Basic"


Ben : ..... ?!&%

Pazar, Ağustos 28, 2005

Tatil Bölüm 1

Tatile çıkabildim sonunda. Hesapta işten uzak duracaktım. Ama nerde gene jsp, jsf derken daldım işlere.

Hazır başlmışken biraz anlatayım. www.myeclipseide.com da bulabileceğiniz oldukça güzel bir ide var jsp,jsf,hibernate gibi ihtayacım olan pek çok teknolojiyi destekliyor. Ayrıca entegre bir görsel web tasarım aracı sayesinde jsp tasarımını oldukça kolaylaştırıyor. Kusursuz değil ama yıllık 29$ a sahip olabileceğiniz güzel bir ide.

Özelliklerini keşfettikçe yazacağım.

Bu arada en sonunda Kubuntu kurdum. Gerçekten güzel olmuş. Yalnız paket deposunda MidnightCommander olmamasını kınıyorum. Onun dışında güzel. Debianımın her seferinde sorun çıkardığı usb belleğimi sorunsuz tanıdı. Java ve Zemberek işini de halledersem babamı Linux a geçirmiş olacağım.

Perşembe, Ağustos 11, 2005

Hoş Geldin Galaksi

Otostopçunun galaksi rehberinin buradaki sinemaya gelişinin 3 hafta ertelendiği haberinin verdiği üzüntüyü. FM galaksi biraz olsun hafifletti. Netekim 100 ünlü türk büyğünden birinin dediği gibi "Fazlamesai zağmiağsı biır zağmia değil biır Zumğuriyettir".

Cumartesi, Temmuz 09, 2005

Hoşgeldin Thunderbird

Vakti zamanında Miguel De Iceza'ya gıcık olduğumdan evolution ı bırakıp kmail a geçmiştim ama onun da yaptığı saçmalıklardan sıkılınca Thunderbird de karar kıldım. Artık bu da olmazsa bundan sonra mutt kullanacağımı ahanda buraya yazıyorum...

Not: Acaba TDK sözlüğüne göre ahanda daki "da" eki bitişik mi yazılır ayrı mı ?

Cumartesi, Temmuz 02, 2005

Bu gün Linux için ne yaptın ?

Sizde Linux'dan sistem kurcalamaktan vs. hoşlanıyor olabilirsiniz. Ama şu donanım sürücülerinin problem çıkarması yok mu... Hem o kadar para ver makina al hem de donanım üreticisinin sağlaması gereken işleri yap. Yok çekirdek derle yok modül ekle. Mecbur muyuz kardeşim ? O zaman ne yapılır ? Kuruma alınacak sunucun şartnamesine şöyle ufak bir madde eklenir hem ruh sağlımız hem de Linux için faydalı bir iş yapılır...

Madde 3.4



Sunucunun bütün parçaları Debian Linux 3.1 işletim sistemi ile uyumlu olmalıdır. Firma işletim sistemi tarafından tanınmayan veya sağlıklı olarak hizmet vermeyen donanımı üniversite tarafından belirlenecek uyumlu eşdeğeri veya uyumlu üst modeli ile değiştirmeyi taahüt edecektir.


Evet efendim bence de pek leziz oldu :-)

Perşembe, Haziran 30, 2005

Sun Ne Kullanıyor ?


Sun research sitesinde gezinirken yukarıdaki durumla karşılaştım php (jsp zor mu geldi acaba :) belki yakında ruby on rails ile yapılmış bir sun siteside görürüz...)+ mysql kullanan sitenin hangi işletim sistemini kullandığına bakmadım ama o da linux olabilir mi acaba :)

Çarşamba, Nisan 20, 2005

Bill Amca Kızarsa

Bir yazı okudum hayatım değişti. Bu adresteki arkadaş windowzunda java ile program yazmaya çalışırken biraz zorlanmış ve klavyesinden şu cümleleler dökülmüş;

.NET'te böyle miydi? Açıyordun Visual Studio.NET i, sürükle bırak ile ekranı tasarlayıp, sonra onlara çift tıklayıp kod yazıyordun, run edip kullanıordun...

Bir gün gelecek Bill amca artık dayanamayacak :
-tamam ulen, yeter zaten kazandığım para, siliorum piyasadan tüm Microsoft ürünlerini, bakem ne halt etceksiniz, diyecek, işte o zaman JAVA'cılar Linux'cular görecekler dünyanın kaç buçak olduğunu... Anlayacaklar Bill amcanın kıymetini...

Yazıyı okuduğumdan beri halen korkmakdayım. Lütfen yardım ediniz...

Cumartesi, Nisan 16, 2005

Java ile Tasarım Modelleri

Bana kalırsa Java'nın .Net e karşı en büyük üstünlüğü geniş ve çok seçenekli yapısı. Bu sayede Hem geniş bir kullanıcı ve döküman desteğine sahip oluyor hem de geliştiriciler için pek çok alternatif sağlıyor.

Ancak bu yapı öyle bir kavram karmaşasına sebep oluyor ki insan bazen bir java sözlüğüne ihtiyaç duyuyor.

Java ile web tabanlı yazılım geliştirme konusunu araştırırken karşıma sürekli "Model 1" ve "Model 2" olarak adlandırılan kavramlar çıkıyordu. Bu kavramların ne olduğuna dair açıklama burada , hangi modelin ne zaman kullanılması gerektiğini anlatan kısa not ise burada mevcut.

Ayrıca jsp ile web tabanlı uygulama geliştirmeyi planlayanların mutlaka gözatması gereken güzel ipuçları içeren bir diğer belge de burada bulunuyor.

Çarşamba, Nisan 13, 2005

Gezegen'e İnmişim

Bu gün ne zamandır göz atmadığım gezegen e bakarken haftalar önce atmış olduğum mail neticesinde (ben umudu kesmiştim) günlüğümün gezegene eklendiğini fark ettim. Tüm camiaya hayırlı uğurlu olsun :)

Cuma, Ocak 21, 2005

Uygulamalar Çekirdekle Nasıl İletişim Kurar

Uygulamalar ve çekirdek arasıdaki iletişim sistem çağrıları ile sağlanır. Çekirdek çağrı isteyenin bu çağrıdan yararlanıp yararlanamayacağına karar verir. Örneğin her isteyenin sabit diske veri yazmaması sağlanır.

Linux’ta strace komutu ile, çalıştırılan programların kullandığı sistem çağrılarını görebilirsiniz.

void main()
{
printf("Denemen");
}

Derleyip, strace ile inceleyelim.

siseci:~/kernel# make 1

siseci:~/kernel# strace ./1

execve("./1", ["./1"], [/* 32 vars */]) = 0

...

...

write(1, "Denemen", 7)= 7

....



execve ile yeni bir process başlatılıyor. write ile 1 ile gösterilen dosyaya 7 bayt uzunluğunda "denemen" yazılıyor.

Şimdi yukarıda anlatılanları burada somut olarak görmekteyiz. Uygulamamız çalıştığında write çağrısını kullanıyor. Çekirdek ise burada programın isteğini değerlendiriyor ve eğer uygunsa izin veriyor.

Burada bir noktayı hatırlatmak istiyorum. Biz direk makine koduyla (assambler) çalışıyor dahi olsak. Uygulamamız ve işlemcinin arasında çekirdek bulunduğundan sistem çağrılarını kullanmamız gerekir. Biraz daha açmak gerekirse çekirdeğin yüklenmiş olması işlemcinin artık meşhur protected mode safhasına geçmiş olması demektir. Bu noktadan sonra bizim uygulamamızın çekirdeğin izini olmadan aygıtlara direk erişimi söz konusu değildir.

Konunun daha açıklayıcı olması açısından sistemin başlama anına geri dönelim ve neler olduğuna bir bakalım:

Linux çekirdeği sadece standart bir C programıdır aslında. Yalnızca iki önemli farklılık vardır. C dilinde
yazılan programların başlangıç noktası main(int argc,char **argv) yordamıdır. Linux çekirdeği start_kernel(void) kullanır. Sistem baslarken ve çekirdek yüklenecekken daha program çevresi mevcut değildir. Yani ilk C yordamı çağrılmadan önce bir kaç şey daha yapılmalıdır. Bu isi gerçekleştiren donanım kodu arch/i386/asm/ dizini altında yer alır.


Assembler dili yordamı çekirdeği tam olarak 0x100000 (1 Mbyte) bellek adresine yükler, ardından da başlatma süreci esnasında dışlamalı olarak kullanılan kesme hizmet yordamlarını (interrupt servicing routines), genel dosya tanımlayıcı çizelgeleri (global file descriptor tables) ve kesme tanımlayıcı çizelgeleri (interrupt descriptor tables) yükler. Bu noktada işlemci korunurlu moda girer. Çekirdeği başlatmak için gereksiniminiz olan her şey init& dizini altındadır. Burası çekirdeği doğru düzgün başlatmakla görevlendirilmiş, geçirilen tüm açılış (boot) parametrelerini dikkate alan start_kernel() yordamıdır. İlk süreç sistem çağrıları kullanılmadan oluşturulur (daha henüz sistemin kendisi yüklenmemiştir).


Ayrıca Aşağıdaki tablo'da işlerin genel olarak nasıl yürüdüğünü anlamamıza yardımcı olacaktır. [En kısa zamanda türkçeleştireceğime söz :) ].

Buradaki gösterim basit ve anlaşılabilir olması için yalnızca temel öğeleri içermektedir. Ancak temel yapıyı kavramak için oldukça yeterlidir.




Yukarıda printf fonksiyonun sebep olduğu write çağrısını basitçe gördük. Ancak iş sistem çağrısı gerçekleştiğinde bitmiyor.

Aşağıda read çağrısı ve ardından gerçekleşen olaylar gösterilmiştir.




Şimdi burada neler olduğunu adım adım inceleyelim.

read çağrısın işlevi basitçe herhangi bir veriyi kaynağından alıp, onu isteyen programın bu iş için ayırdığı belleğe kopyalamaktır.

Bir sistem çağrısının çekirdeğe iletilmesi belirli bir "yazılım kesmesi" tarafından gerçekleştirilir. Bu kesme (aynı zaman da "kapı" da denir) x86 işlemcili Linux sistemler için 0x80 kesmesidir.

0x80 kesmesi hakkında not: Programcının işletim sistemi çekirdeğinden sistem servisi alması için kullanılır. Dosya açma, dosya kapama, aygıtlara erişim, terminal'e çıktı gönderme, yeni süreç yaratma gibi işlemleri yaparken çekirdek bize servis sağlar. Bu yapı, her programcının aygıtlar için kendi erişim kodunu tekrar tekrar yazması gibi bir zorluktan kurtarır bizi (ve tabi zaman kazandırır).Birçok programcı 0x80 kesmesini kullanmaz, hatta çoğu hayatında bir yada birkaç kez sadece ismini duymuş olabilir. Bunun nedeni ise bu tür servislerin üst seviye dillerde (HLL) programcının kolay kullanımı için önceden yazılmış fonksiyonlar tarafından yapılıyor olmasıdır. 0x80 kesmesinin direkt olarak kullanılmak zorunda olduğu tek dil Assembly Programlama dilidir.

İstediğiniz sistem çağrısını "EAX" yazmacına (yazmaç=register) atarsınız. Çağrının kabul ettiği parametreleri de geriye kalan yazmaçlara (EBX, ECX gibi) atayarak "0x80" kesmesini çağırırsınız. Şekilde direk olarak görünmese de aslında atanan __NR_read değil buna karşılık gelen çağrı kodudur. Söz konusu çağrı kodu ve __NR_read in alabileceği diğer parametreler /usr/include/asm/unistd.h dosyasında tanımlanmıştır.Ayrıca read ile ilgili man sayfasına "man 2 read" komutuyla ulaşabilirsiniz.

Buraya kadar yapılan işlemler "user space" de (user mode) da gerçekleşti. Basitçe read adlı sistem çağrısını 0x80 kapısını kullanarak "kernel space" e aktardık.
Şimdi bundan sonra kernel space'de (kernel mode da) olanlara bir bakalım.

Çekirdek ilk olarak bütün yazmaçları kaydeder (SAVE_ALL). Bir sonraki adımda EAX yazmacı tarafından yapılan isteğin bellek sınırlarını aşıp aşamdığı kontrol edilir (Check Limit of EAX) [1]. Daha sonra system çağrıları tablosuna bakıp (EAX yazmacındaki isteği kullanarak) uygun fonksiyonu çaliştırır. ( syscall_tab[EAX]() ). Burada çalıştırılacak fonksiyon sys_read fonksiyonudur.

Bir sonraki aşamada dosyaya ilişkin parametreler ve izinler kontrol edilir, eğer herşey uygunsa dosyadaki veri alınır (kopyalanır). Sonuç uygulamanın istediği belleğe kopyalanır ve sonuca dair onay değeri uygulamaya gönderilir.

Bu aşamadan sonra işlem tekrar user mode da devam eder. Uygulama kontrol değerine bakar hatasız ise işlemine devam eder. Artık uygulama istediği verinin hatasız biçimde geldiğini ve hafızadaki yerini bilmektedir.

Bu yazıda sizlere bir uygulamanın çekirdekle olan iletişimini elimden geldiğince sade ve basit bir biçimde anlatmaya çalıştım.
Umarım faydalı olmuştur.


Serbülent ÜNSAL
serbulentunsal (et) meds.ktu.edu.tr

Not: Bu belgedeki bilgiler GNU/Linux sistemler için olmasına karşın genel olarak diğer pek çok sistem içinde doğrudur.

[1]:İşlemcilerdeki hafıza oruma mekanizması ile ilgili daha ayrıntılı bilgi için (http://www.cs.ucsb.edu/~cs170/notes/memory/)

Kaynaklar:

http://www.acikkod.org/yayingoster.php?id=30
http://www.linuxfocus.org/Turkce/January1998/article19.html
http://www.core.gen.tr/Security/Documents/12.html
http://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/overview-kernel-service.html
http://plg.uwaterloo.ca/~itbowman/CS746G/a1/
http://www.linux-mag.com/2000-11/gear_01.html

Salı, Ocak 18, 2005

User mode ve Kernel mode nedir ?

Daha önce kulağıma çalınan ancak ne olduğunu tam olarak bilmediğim bu iki terim hakkında ne yazik ki tam ve açıklayıcı bir Türkçe kaynağa rastlayamadım. Bu yüzden öğrendiklerimi özetleyen kısa bir bilgi notu yazmaya karar verdim. Bu notun bir kopyasını tr.wikipedia.org adresinde User mode ve Kernel mode başlıkları altında bulabilirsiniz.


Önce birkaç terime açıklık getirelim.

Protected mode: x86 (286 ve üstü intel ailesi ve uyumlu (amd,via vb.) ) işlemcilerde bellek adreslerine erişim belirli kısıtlamar çerçevesinde olur. Yani her uygulama her istediği bellek adresini istediği gibi kullanamaz. Her bellek bölgesinin erişim hakları descriptor denen kayıtlarla saklanır. Bu kayıtların arka arkaya dizilimi ile hafızanın tamamen adreslendiği bellek haritası ( memory map ) oluşturulur.

CPL: Code Privilege Level (Kod Yetki Düzeyi). x86 işlemcilerde descriptor tarafından ayarlanan ve o kodun çalıştığı yetki seviyesini (privilage level) gösteren 2 bitlik değer. 0 en yüksek yetki seviyesidir, ring 0 diye geçer. 3 ise en düşük değerdir, ring 3 olarak geçer. Arada ring 1 ve ring 2 diye tanımlanan başka seviyeler olmasına karşın işletim sistemlerinin çoğu yalnızca ring 0 ve ring 3 seviyelerini kullanırlar.

Kernel Mode

Linux işletim sistemi açılışta kernel mode’da ( ring 0 ) baslar. Sistem açılışı sırasında kernel yüklenir yüklenmez işlemci Protected Mode'a geçer ve bunun ardından çalıştırılan tüm programlar User Mode'da çalışır ( bazı donanım sürücüleri hariç ). Kernel mode'da çalışan uygulamalar bütün hafıza adreslerine ve Giriş-Çıkış (harddisk ve benzeri) aygıtlarına tam yetki ile erişirler. Ayrıca bu mode'da iken tüm sistem fonksiyonlarına erişilebilir, hafıza yeniden adreslenebilir.

User Mode

Linux sistemi açılışta kernel mode’da baslar. Sistem açılışı sırasında kernel yüklenir yüklenmez işlemci Protected Mode'a geçer. Bu mode’da uygulamalar sistem için kullanılan fonksiyonları güvenlik açısından direkt olarak kullanamaz. Kullanıcı sadece kendi başlattığı uygulamaların adres alanları içerisinde kalmak suretiyle işlerini yürütebilir. Sistemin güvenli bir şekilde çalışabilmesi için kullanıcıya kısıtlı izinler tanınmıştır. Bu mode'da çalışan uygulamalar sistem kaynaklarına erişmek istediklerinde ring 3 seviyesinde çalışmakta olan çekirdek servisleri aracılığı ile çekirdeğe istek gönderirler. Sistem çekirdeği de eğer uygunsa isteği yerine getirir.


Not 1: Yukarıda yazılanlar Linux işletim sistemi referans alınarak yazılmıştır. Ancak diğer pek çok işletim sisteminde de geçerlidir.

Not 2: Bu belge'yi Tonguç Yumruk'un uyarıları doğrultusunda yeniden gözden geçirdim, kendisine teşekkür ederim. Ayrıca bu gözden geçirme işlemi sırasında bu belgeye rastladım. Konu ile ilgili daha ayrıntılı bilgi isteyenler için oldukça faydalı.



Pazartesi, Ocak 17, 2005

CNN LIVE vs IRAK LIVE

Irak'tan yazan bir kızın günlüğü, internette dolaşırken tesadüfen buldum. Söylenecek fazla birşey yok. Link burda.

Amerikan Özel Birlikleri İran'da

BBC NEWS sitesindeki bu habere göre Amerikan özel birlikleri İran'da bulunuyormuş. Daha Irak'tan çıkamayan Amerika İran'da ne yapacak merakla bekliyorum doğrusu.

Debian Postası

www.Debian-tr.org daki günlüğümüde buraya taşımaya karar verdim. Debian postası ile başlayacak olan bu dizide yaşadığım sorunları ve çözüm yollarını yazarak yeni başlayanlara yol gösterici olmaya çalışacağım.

1- Nerde benim Firefox'um

Yanlis Çözüm: " apt-get install firefox "
Dogru Çözüm: " apt-get install mozilla-firefox "

2-Kurulum dilini Türkçe seçtigim halde þðÝý karakterleri niye yazmiyor ? ve alt_gr tusu niye calismiyor. Bu tuslar hem X serverda hemde terminalde sorunlu.

Çözüm: Herhangi bir metin editörü ile /etc/XF86Config-4 dosyasını açıp "Input Device" kısmında "keyboard" yazan bölümü buluyoruz. Bu bölümde Option "Xkbmodel" "pc105" olarak ve "Xkblaout" "tr" olarak değiştiriyoruz. Kurulumu türkçe ayarlarla yapmama ve klavye olarakta trq seçmeme rağmen nedense "us" idi, öntanımlı değer.

3-firefox'u nasil türkce yapacagim.

Bu sorunun yanıtını debian türkçe listesinde buldum.

Onceki iletide mozilla-firefox-locale-tr paketini bir yabanci
gelistiriciye: Cesar Martinez Izquierdo'ya devrettigim belirtmistim.
Paketin Debian arsivlerine gonderilmesi icin kendisiyle gorusuyorum.
Asagidaki bagda bu calismanin bir urununu bulabilirsiniz. Paketi
hizlica test ettim. Gayet sorunsuz gorunuyor.

http://users.evtek.fi/~k0400388/debian/mozilla-firefox-locale-all/mozilla-firefox-locale-tr-tr_1.0-3_all.deb

Bu paketi kurmak icin once normal bir mozilla-firefox kurulumu yapin:

apt-get install mozilla-firefox

Daha sonra da paketi indirip dpkg ile kurun:

dpkg -i mozilla-firefox-locale-tr-tr_1.0-3_all.deb

--
roktas


4-Gnome'dan Kde ye nasil gececegim.

Soruma 2 yanıt aldım fcn ve Emre'ye teşekkürler. Yanıtlar aşağıda...

"gnome'dan kde'ye nasıl geçeceğim?" sorunuz bende soru işaretleri yarattı. eğer x açılışında nasıl seçim yapacağınızı soruyorsanız, http://ordiluc.net/selectwm adresinde ufak bir program var. incelerseniz işinize yarayabilir. ayrıca benim kullandığım desktop manager programım (gdm) hangi masaüstü yöneticisiyle açılacağını seçme fırsatı veriyor.

kolay gelsin.

Gnome dan kde ye update-alternatives --config x-window-manager komutuyla ya da kdm paketini yukleyip dpkg-reconfigure kdm den kdm yi secip masaüstünü kde olarak seçip login olarak geçebilirsiniz



Pazar, Eylül 12, 2004

Yediğimiz hurmalar, neremizi tırmalar?

BİR akıl hastanesine yeni bir başhekim atanmış. Başhekim, hastaneyi dolaşırken, aşağıdaki mutfağa da inmiş.Bir de bakmış ki, mutfağın ortasında yere tebeşirle çizilmiş koskocaman beyaz bir daire: dairenin de içinde yere yatmış yüzükoyun, sırtüstü kıvranıp duran 7 - 8 deli...Bir başka deli de, yemek masasına tek başına oturmuş; reçeli, tereyağı, zeytini, peyniri, rafadan yumurtasıyla, yerde kıvrananlara bakıp bakıp gülerek bir güzel kahvaltı ediyor.Başhekim, masada oturana sormuş:
- Yerdeki beyaz dairenin içinde; bir yüzükoyun, bir sırtüstü uzana döne, ne yapıyor bunlar? Masadaki deli:
- Tebeşirle o beyaz daireyi ben çizdim, demiş. İçindekilere de dedim ki:"- O beyaz dairenin altından geçerseniz, ancak kahvaltı edebilirsiniz benim gibi...
- Neden öyle kıvranıyorlar ki?
- Yere çizilmiş dairenin altından geçmeye çalışıyorlar da, ondan.Başhekimin gözleri hayretle açılmış ve yine sormuş masadaki deliye:
- Senin adın ne?
Hiç beklemediği bir yanıt gelmiş:
- Günter Verheugen...

Cuma, Haziran 18, 2004

Uludağa Tırmanış

Uludağ ( Ulusal Linux Dağıtımı Projesi ) duyduğumdan beri beni heyecanlandıran bir olay. Murat EREN'in cesaretlendirmesiyle ilk gününden beri takip ettiğim projenin bir ucundan tutmaya karar verdim. Öğrenilecek ne çok şey var. Üstelik öğrendikçe de ne kadar az bildiğimi görüyorum. Belki de Sokratın dediği gibi " Tek bildiğim hiçbirşey bilmediğimdir "
......................................................................................................................................

Çarşamba, Haziran 16, 2004

Modern Toplum Sorunsalı

Modern hayatın getirdiği zorunluluklar bazen aklımı karıştıryor. Birileri bize birşeyler mi dayatıyor yoksa bana mı öyle geliyor. Toplumun (daha doğrusu toplumun kurallarını belirlediklerini söyleyen insanların) belirledikleri kuallar çerçevesinin dışına çıkarsanız. Mutlaka damgalanıyorsunuz. Damganın ne olduğu o kadar da önemli değil. Irak a asker gönderilmesine karşı çıkarsanız hayalci romantik, birilerinin bazı değerlerin ardına sığınıp ülkeyi bölmeye çalışmalarına karşı çıkarsanız şoven milliyetçi. Bu ülkenin milli servetleri satılırken yahu biz bunarı üç otuz paraya satıyoruzda kime satıyoruz en azından onu bilelim derseniz, eski kafalı devletçi. Bırakın insanlar istediklerini giysin isteyen açsın isteyen kapasın derseniz gerici.

İşin en güzel yanı da aslında bu adamların gazına gelen ve kendileri farklı düşündükleri halde bunu söyleyemeyen veya zaman zaman kendileride damgalanan insanların hep birlikte hareket edip bu linç güruhuna katılmaları.

Bunun iki nedeni var birincisi malum toplumsal hastalığımız hoşgörüsüzlük. Çocukluğumuzdan beri kimse bizi affetmeyip insan değilde bir hayvan gibi ödül ceza yöntemiyle yertiştirilince farklılıkları hoşgörmeyi bilmiyoruz. Aslında yabancılara ve onların farklılıklarına karşı gayet hoşgörülüyüz. Bu sayede üç dinin barış içinde yaşadığı tek yer anadolu. Ama farklı olan bizdense seyreyleyin gümbürtüyü. Birbirimizi çekememezliğimizi şu küçük fıkra güzel anlatır:

“ Adamın biri cehenneme gitmiş bakmış yüzlerce dev kazan altında yanan devasa odunlar ve her kazanın başında birer zebani. Kazandan birileri başını çıkardıkça zebani vuruyor adamın kafasına elindeki odunu, adam içeri düşüyor. Yalnız bir kazanın başında kimse yok. Merak edip soruyor baş zebaniye “ Nedir bu hal ” diye. Zebani gülüyor kıs kıs ve cevap veriyor. “ O kazan mı ? onun başında kimseyi bulundurmaya lüzum yok, Birisi yukarı çıkmaya kalktımı diğerleri aşağı çeker onu. O kazan Türkiye kazanı ”

Hal böyleken başka söze gerek yok sanırım. Birbirimize olan tahamülsüzlüğümüz konusunda.

İkinci neden kendi kişiliğimizi ortaya koyamıyor olmamız. Malum bazı diziler, misal son günlerde Kurtlar Vadisi çok popüler. Bir psikolog bunun sebebinin kendi kişiliğimizi ortaya koyamamamızdan dolayı, dizideki kendi kişiliğini yaşamasının önünde hiçbir engel tanımayan kahramanlardan biriyle kendimizi özdeşleştirmemiz ve onu model almamız olduğunu söylüyordu.

Kendini toplum bilimci sanan bazı cahiller o dizi yasaklansın bu çizgi film kaldırılsın diyeceklerine. Toplumun çocukluktan itibaren nasıl daha kişilikli yetiştirileceğine kafa yorsalar herkes televizyonun yalnızca bir eğlence aracı olduğunu kavrar, orada ki kahramanları kişilik modeli olarak seçmezlerdi.

Salı, Haziran 15, 2004

Duy Şikayet Etmede Her An Bu Ney

Duy şikayet etmede her an bu ney,
Anlatır hep ayrılıklardan bu ney.

Der ki feryadım kamışlıktan gelir,
Duysa her kim, gözlerinden kan gelir.

Hiç değil feryadıma sırrım uzak,
Nerde bir göz, nerde bir candan kulak?

Mevlânâ'nın bu güzel şiirinin tamınını okumak için buraya bakın.