Casa Bianca
[Don Backy / Marisa Sannia / Ornella Vanoni]
Casa Bianca (1968)
Beyaz Ev anlamına gelen Casa Bianca 1968 yılında Don Backy tarafından bestelenmiş bir parça. İlk olarak Sanremo müzik festivalinde Ornella Vanoni ve Marisa Sannia tarafından söylendi. Ben en çok Don Backy’nin kendi yorumunu beğeniyorum. Fakat diğerleri de güzel...
Don Backy Söylüyor (1968)...
Marisa Sannia Sanremo'da söylüyor (1968)...
Ornella Vanoni Sanremo'da söylüyor (1968)...
[Makale] C’nin Standart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması
Standart C fonksiyonlarını kullanmadan bir dosyanın her byte’ı üzerinde sırasıyla işlem yapmak isteyelim. Herhalde ilk akla gelecek yöntem doğrudan işletim sisteminin sistem fonksiyonlarını çağırmak olacaktır. Örneğin UNIX/Linux sistemlerinde dosyayı read fonksiyonuyla (Windows sistemlerinde ReadFile fonksiyonuyla) byte byte aşağıdaki gibi okuyabiliriz:
int fd;
ssize_t result;
unsigned char ch;
if ((fd = open("test", O_RDONLY)) < 0) {
perror("open");
exit(EXIT_FAILURE);
}
while ((result = read(fd, &ch, 1)) > 0) {
/* Okunan byte işleniyor */
}
if (result < 0) {
perror("read");
exit(EXIT_FAILURE);
}
close(fd);
[Makale] Programların Komut Satırı Argümanları
İşletim sistemi tarafından prosese geçirilen komut satırı argümanları program içerisinden çeşitli biçimlerde elde edilebilmektedir. En yaygın yöntem komut satırı argümanlarının programın başlangıç fonksiyonunun parametrelerinden elde edilmesidir. Örneğin, C ve C++’ta komut satırı argümanları main fonksiyonuna parametre olarak geçirilirler. Bu dillerin standartlarına göre programın başlangıç noktasını (entry point) belirten main fonksiyonunun parametrik yapısı ve geri dönüş değeri aşağıdaki iki durumdan biri biçiminde olmalıdır:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }
[Makale] UNIX/Linux Sistemlerinde Proseslerin Yaratılması ve Sonlandırılması
Hemen her işletim sistemi bir proses yaratıldığında, o prosese ilişkin bilgileri bir veri yapısında saklar. Proses bilgilerinin saklandığı bu veri yapısına proses kontrol bloğu (process control block) denilmektedir.[1] Örneğin UNIX türevi sistemlerde proseslerin gerçek (real) ve etkin (effective) kullanıcı ve grup id’leri, çalışma dizinleri (current working directories), açmış olduğu dosyalar gibi önemli bilgilerin hepsi, onların kontrol bloklarında tutulmaktadır. Proses kontrol bloğunun nasıl düzenlendiği ve tam olarak hangi elemanlara sahip olduğu sistemden sisteme, hatta aynı sistemlerde versiyondan versiyona değişebilmektedir. Örneğin Linux sistemlerinde proses kontrol bloğu oldukça fazla elemana sahip olan task_struct yapısı ile temsil edilmiştir. Bu yapının bir bölümünü aşağıda veriyoruz (Version:2.6.35, include/linux/sched.h):
[Makale] UNIX/Linux Sistemlerinde exec İşlemleri
UNIX/Linux sistemlerinde fork fonksiyonu prosesin yeni ve özdeş bir kopyasını oluşturmaktadır. Yani fork işlemi sonrasında alt ve üst prosesler aynı program kodunu (muhtemelen onların farklı kısımlarını) çalıştırıyor durumda olurlar. Halbuki pek çok uygulamada programcı yaratmış olduğu alt prosesin farklı bir program kodunu çalıştırmasını ister. İşte exec fonksiyonları prosesin başka bir program olarak çalışmaya devam etmesini sağlamaktadır. exec işlemleri sonrasında prosesin id değeri ve kontrol bloğu değişmez. Prosesin kod, data ve bss alanları çalıştırılabilen (executable) dosyadan alınarak yüklenir. Proses artık yaşamını başka bir program olarak sürdürür.
[Makale] UNIX Türevi Sistemlerde Blokeli ve Blokesiz Modda Dosya İşlemleri - Temel Bilgiler
Disk tabanlı dosyalar (regular file) üzerinde read ve write fonksiyonları ile okuma ve yazma yaparken uzun süreli bir bekleme söz konusu olmaz. Bu fonksiyonlar işlemlerini göreli olarak hızlı bir biçimde başarılı ya da başarısız olarak sonuçlandırırlar. Her ne kadar normal dosyalarla çalışırken işletim sistemi disk okuma ve yazmaları sırasında prosesi bloke ederek belli bir süre çizelge dışına çıkartabiliyorsa da buradaki bekleme önemli bir boyutta değildir. Halbuki bazı tür dosyalarla çalışırken bekleme belirsiz bir boyutta ve çok uzun süreli olabilmektedir
[Makale] Proseslerin Çevre Değişkenleri
Modern işletim sistemlerinde her prosesin bir çevre değişken bloğu vardır. Prosesin çevre değişken bloğu çevre değişkenlerinden ve onların değerlerinden oluşmaktadır. Örneğin, MESAJ bir çevre değişkeninin ismi olabilir, “Merhaba Dunya” ise onun değeri olabilir. Çevre değişkenleri pek çok işletim sisteminde proses yaratılırken belirlenebilmekte ya da üst prosesten (parent process) aktarılabilmektedir. Çevre değişkenlerinin üst prosesten aktarılması en çok karşılaşılan tipik durumdur.
Band on the Run (Wings-1973)
20 seneden fazla bir zamandır günde kemiksiz en az 7 saat (ilerleme amacıyla yapılan çalışmaları kastediyorum. Para kazanmak için yapılanları değil). Bunun yarısı teorik yarısı pratik çalışma...
"Hocam, babanız ne iş yapıyor?.."
Burçlara inanmam. Bence tam bir zırvalık. Toplumun burçlara yoğun ilgisi 80'li yıllarda başladı galiba. İşte o zamanlarda bir gün Ortaköy'deki bir çay bahçesinde bir grupla oturmuş sohbet ediyorduk. Gruptan bir kız bana burcumu sordu. "Bilmiyorum" dedim. O da bu kez ne zaman doğduğumu sordu. Ben de söyleyince "aaa sen oğlaksııın" demesin mi? Tuhaftır, tam olarak ne zamandı, kimler vardı hiç hatırlamıyorum. Ama o yüz ifadesini çok iyi hatırlıyorum.
Ben de eskiden Bell Lab'ın B'sinden ya da BCPL'in B'sinden geldiğini sanırdım. Fakat Ken Thompson bir röportajda karısı Bonnie'nin B'sinden geldiğini şaka yollu söylüyor. Nasıl, romantik değil mi?
Teknik olarak bir atomun anahtar sözcük olması için derleyicinin ona diğer değişken atomlardan farklı bir işlem uygulaması gerekir. Yani anahtar sözcükler parse işlemi sırasında diğer değişkenlerden (identifiers) ayrılmaktadır. Halbuki C ve C++'ta her ne kadar main fonksiyonunun diğer fonksiyonlardan farklı bir özelliği varsa da derleyici bu bu ismi gördüğünde buna diğer değişkenlerden farklı bir işlem uygulamamaktadır. main derleyici tarafından değil, bağlayıcı (linker) tarafından aranır. Ayrıca main anahtar sözcük olmadığı için bu isimde başka değişkenler bildirilebilir.
Bunu bilemem. Bundan sonra kaç kişinin görev alacağına ve bu işe ne kadar zaman ayıracağımıza bağlı. Fakat iki sene içerisinde biteceğini umuyorum.
Gereken bir düzine koşulun neredeyse hiçbiri tam olarak sağlanmadığından darbe marbe olmaz; güldürmeyin beni... Zaten en küçük bir risk olsa bazı çevreler bu kadar pervasızca hareket edebilir mi ? :-). Tabi yine de temkinli konuşmakta yarar var. Yeterli koşullar oluşursa bırakın Türkiye'yi Amerika'da, İngiltere'de ve hatta Fransa'da bile darbe olur :-).
Şu anda kod optimizasyonu üzerinde çalışıyorum. Optimizasyonsuz beta versiyonunun Eylül 2009'da çıkacağını umuyorum.
Olanı incelemek ya da değiştirmek hiçbir zaman sizi onları yazanların düzeyine getirmez. Bu kafayla da bir yere varılmaz. Zaten dediğiniz yazılımları yazanlar da sizin kafada olsalardı bu yazılımlar asla gerçekleştirilemezdi.Şunu unutmamak gerekir ki bu tür projeler gerçekleştirilirken pek çok kişi yetişmekte ve önemli deneyimsel kazanımlar elde edilmektedir. Belli aşamalardan geçmemiş olan bizim gibi ülkelerin bu kazanımları kestirmeden elde edebilmeleri mümkün değildir. Zaten teknolojiyi dışarıdan alarak onların önüne geçmiş olan bir ülke modeli de yoktur.
İlhan Selçuk.
The Beatles.
I Want to Hold Your Hand / This Boy (The Beatles-1963)
En iyi olduğunu sandığınızdır. Bu konuda sizi ikna edemem.
Rubber Soul (The Beatles-1965).
CSD C ve Sistem Programcıları Derneği