Adam And Eve
[Paul Anka]
45'lik - 1960
Birkaç kuşak üzerinde derin etkiler bırakan Paul Anka pop müziğin en tanıdık simalardan biri şüphesiz. 1960’ta 45’lik olarak piyasaya sürülmüş olan Adam And Eve şarkısı Adem ile Havva’nın bilinen hikayesini konu alıyor...
Seneler önce Ottawa’da yürürken Paul Anka caddesiyle karşılaşıncaya kadar ben onu hep Amerikalı sandım. 2006’daki İstanbul konserine gidemediğim için ise hala yanarım…
[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 ve Windows Sistemlerinde Stdin, Stdout ve Stderr Dosyaları
Yalnızca UNIX/Linux sistemlerinde değil modern işletim sistemlerinin çoğunda aygıtlar birer dosyaymış gibi ele alınmaktadır. Örneğin klavye ve ekran -aslında birer dosya olmadığı halde- işletim sistemi tarafından sanki birer dosyaymış gibi işleme sokulurlar. Aygıtlara ilişkin bu tür dosyalar için de birer dosya betimleyicisi ve dosya nesnesi vardır. Bu betimleyicilerle işlem yapıldığında işletim sisteminin dosya alt sistemi aslında bu dosyaların birer aygıta ilişkin olduğunu anlar ve okuma/yazma amacıyla o aygıtlara yönelir. UNIX türevi sistemlerdeki çokbiçimliliği (polymophism) andıran bu tasarıma Sanal Dosya Sistemi (Virtual File System) denilmektedir.
[Blog] C#'taki Yapı ve Sınıf Nesneleri Nerede Yaratılıyor?
Pek çok C# programcısının sınıf ve yapı kavramlarıyla stack ve heap kavramlarını yanlış bir biçimde ilişkilendirdiğini görüyorum. Örneğin, “yapı nesneleri stack’te sınıf nesneleri heap’te tutulur” biçiminde yanlış anlaşılmaya yol açacak bilgiler veren yerli ve yabancı çok sayıda yazı ve makaleyle karşılaştım. Konuya biraz açıklık getirmek istiyorum.
[Makale] UNIX/Linux Sistemlerinde Dosya Betimleyicilerinin Anlamı
UNIX/Linux sistemlerinde her prosesin proses tablosu yoluyla erişilen bir dosya betimleyici tablosu (file descriptor table) vardır. Dosya betimleyici tablosu bir gösterici dizisi biçimindedir. Betimleyci tablo içersindeki her gösterici açılmış bir dosyanın bilgilerinin tutulduğu ve ismine dosya nesnesi (file object) denilen bir veri yapısını gösterir. open fonksiyonundan elde edilen dosya betimleyicisi (file descriptor) prosesin dosya betimleyici tablosunda bir indeks belirtmektedir.
[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.
Bu Web Sitesine (kaanaslan.com ve kaanaslan.net alan adları altında bulunan web sitesi.) girerek ve kullanarak Kullanım Koşullarına, burada bulunan her türlü koşul ve gerekliliğe veya bu Web Sitesinde gündeme getirilen her türlü koşula uymayı kabul etmiş olursunuz. Kullanım Koşullarını reddediyorsanız lütfen bu Web Sitesini kullanmayınız.
Kullanım koşulları, Site Editörleri (Web Sitesi yönetim paneline erişim hakkı olan ve bu şekilde içerik yayımlayan kişiler.) tarafından herhangi bir zamanda değiştirilebilirler. Kullanım koşullarındaki değişiklikler bu Web Sitesinde yayımlanmalarından itibaren geçerlidirler. Lütfen, olası değişikliklerden haberdar olmak için düzenli olarak Kullanım Koşulları sayfasını ziyaret ediniz.
Site Editörleri, Web Sitesinin içeriğinde Web Sitesinin formatında herhangi bir zaman, duyuruda bulunmadan değişiklik yapma hakkını saklı tutar. Site Editörleri Web Sitesine erişimi kaldırma veya kısıtlama hakkını saklı tutar.
Site Editörleri, Web Sitesindeki bilgilerin doğruluğunu sağlamak için çaba harcarlar ancak bu konuda hiçbir garanti vermezler ve sorumluluk almayı reddederler. İçeriğin tamamı "olduğu gibi" ve "erişilebildiği gibi" sunulmaktadır. Site Editörleri, açık veya dolaylı herhangi bir temsil ve garantiyi, herhangi bir istisna veya sınırlama olmaksızın, ticari amaca uygunluğu, herhangi bir amaca uygunluğu, hatasızlığı veya bu Web Sitesinin çalışması veya içeriğiyle ilgili konular dahil olmak üzere reddeder.
Site Editörleri, bu Web Sitesini güvenli bir biçimde ziyaret edebilmeniz için gereken önlemleri almaya gayret eder ancak Web Sitesinin güvenli olduğunu garanti etmezler. Gönderilen herhangi bir bilginin üçüncü şahıslar tarafından elde edilebileceğini kabul ediyorsunuz. Site Etitörleri bu Web Sitesinin, onu destekleyen sunucu ve bilgisayarların ve Site Editörleri tarafından size gönderilebilecek elektronik mesajların virus veya diğer zararlı bileşen içermediğini garanti etmezler.
Site Editörleri bu tip zararların oluşabileceği konusunda uyarılmış olsa da, Bu Web Sitesinin ve içeriğinin kullanılmasından veya yanlış kullanılmasından kaynaklanabilecek zararlar (Herhanbi bir sınırlama olmaksızın, iş kaybı, kazanç kaybı, veri kaybı, bilgi kaybı veya ticari faydaların aksaması da dahil olmak üzere.) konusunda hiçbir sorumluluk taşımazlar.
Bu Web Sitesinde, Site Editörleri'nin kontrolünde olmayan web sitelerine linkler bulunmaktadır. Site Editörleri bu web sitelerinin içeriğinden sorumlu tutulamaz. Site Editörleri bu linkleri Web Sitesi'nin kullanıcılarına kolaylık sağlamak amacı ile yayımlamaktadır ve bu durum, link verilen sitelerin içeriğinin her bakımdan onaylandığı veya önerildiği anlamına gelmez.
Web Sitesinin içeriği ile ilgili telif ve tüm diğer öncelik hakları (yazılım, ses, görüntü, metin, ve fotoğrafları içermek ancak bunlarla sınırlı olmamak üzere) Site Yöneticileri'ne aittir. Bu Web Sitesinin içeriği, kaynak göstermek şartı ile ve sadece kişisel, ticari olmayan kullanım için, değiştirilmeden çoğaltılabilir ve dağıtılabilir. İçeriğin başka bir kullanımı, dağıtımı, çoğaltımı, değiştirilmesi, sergilenmesi ve üçüncü kişilere verilmesi de dahil olmak üzere, Site Yöneticileri'nin yazılı izni alınmadan gerçekleştirilemez. Tüm çoğaltmalarda telif ve diğer öncelik hakları gözetileceklerdir.
Bu Web Sitesi üzerinden veya bu Web Sitesiyle bağlantılı olarak gönderilen herhangi bir bilgi (Kullanıcı Malzemeleri) gizlilik dışı ve öncelik dışı olarak kabul edilecek ve Site Editörleri'nin mülkiyetine geçerek, Site Editörleri'nin bu Web Sitesinde yayınladığı gizlilik politikalarına tabi olacaktır. Site Editörleri bu Kullanıcı Malzemelerini, herhangi bir sorumluluk ve tazminat taahhütü altında olmadan ve herhangi bir hak, fikir mülkiyeti hakkı ve/veya diğer mülkiyet haklarını göz önünde bulundurma gerekliliği olmaksızın, uygun gördüğü biçimde kullanabilir.
CSD C ve Sistem Programcıları Derneği