Yorumlar kapalı

fstream (File Stream, Dosya Akışı)

Tarih: Salı, Nisan 21, 2009 Kategori: Bilgisayar, Bilgisayar Kavramları

Yazan : Şadi Evren ŞEKER

Özellikle C++ dilinde dosyalara erişmek ve dosyalar üzerinde işlem yapmak için çeşitli fonksiyonlardan oluşan bir kütüphanenin ismidir.

Aslında bilgisayarlardaki giriş çıkış işlemlerini ( I/O input/output) dört ana başlıkta toplamak mümkündür.

  • Standart giriş çıkış işlemleri (klavye ve ekran) (Standard input output)
  • Dosya giriş çıkış işlemleri (İşletim sisteminin dosya yapısındaki bir dosyadan okumak ve bu dosyaya yazmak şeklinde) (File input output)
  • Hafıza giriş çıkış işlemleri (Hafızanın herhangi bir bölgesinden veya bazı durumlarda farklı işlemlerin (process) aralarında iletişimi için hafızadan okumak ve yazmak şeklindeki giriş çıkışlar (Memory input output)
  • Ağ giriş çıkış işlemleri (Ağda bulunan başka bir bilgisyara belirlenmiş bir protokol çerçevesinde (Örneğin TCP/IP) ile veri göndermek ve almak şeklindeki giriş çıkış işlemleri) (Network input output)

Bu yazının amacı, dosyala giriş çıkış işlemlerini içeren fstream kütüphanesini tanıtmaktır.

Yine başlamadan önce bilinmesi gerekir ki dosyalar programlama dillerinde iki ana grup altında incelenebilir:

  • Metin dosyaları (Text Files)
  • İkili dosyalar (Binary Files)

Metin dosyalarını basitçe bir metin editörüyle açıp okuduğumuz (örneğin notepad, vi gibi) dosyalar olarak düşünebiliriz. Bu dosyalarda veri ardışık bir şekilde (sequential) dosyaya yazılmıştır. Dosyadaki herhangi bir veriye erişmek için dosyanın başından o veriye kadar ilerlemek gerekir.

İkili dosyalarda ise, dosyada bulunan verilere erişmeyi rastgele olarak yapabiliriz. Örneğin dosyanın 100. byte’ındaki bir veriye tek seferde erişilebilir. Ancak ikili dosyaların okunması ve yazılması metin dosyaları kadar basit değildir. Bu dosya tiplerinin kodlanma durumlarına göre özel editörler ile açılması gerekir. Örneğin herhangi bir ofis uygulaması ile (openoffice, microsoft office gibi) kaydettiğiniz bir dökümanı basit bir metin editörü ile açmayı deneyebilirsiniz. Dosya açıldığında sizin için anlamsız semboller belirecektir. Sembollerin bu şekilde belirmesinin sebebi aslında dosyada bulunan değerlere ASCII tablosundan birer karşılık aranmasından kaynaklanmaktadır. Oysaki bir ikili dosyadaki değerlerin ASCII karşılığı olması gerekmez.

Dosyalama işlemlerini içeren fstream kütüphanesini bu yazı kapsamında 4 grupta inceleyeceğiz.

  1. Dosyaların açılması
  2. Dosyaların kapatılması
  3. Dosyalardan okuma ve yazma işlemleri
  4. İlave fonksiyonlar

Dosyaların açılması

Dosyalar 3 farklı şekilde açılabilir:

  1. Okuma şeklinde (Reading Mode)
  2. Yazma şeklinde (Writing Mode)
  3. Ekleme şeklinde (Append Mode)

Basitçe okuma şeklinde açılan bir dosyadan sadece veri okunabilir. Yazma şeklindeki dosyalara veri yazılabilir ve dosyada daha önceden bulunan bütün veriler silinir (bir anlamda üzerine yazılmış olur). Ekleme şeklinde açılan dosyalarda ise mevcut veri saklanır ve yazılan veriler dosyanın sonuna ilave edilir.

Dosyaların iki farklı tutulma şekli bulunduğunu daha önce görmüştük. Aşağıda dosyaların bu tutulma şekillerine (ikili veya metin) ve yukarıdaki açılma şekillerine göre fstream kütüphanesinden hangi fonksiyonla açıldığını görmekteyiz:

Metin Dosyaları İkili Dosyalar
Yazma Şekli

(Write mode)

Yazmak için

ofstream out (”dosya.txt”);

veya

ofstream out;

out.open(”dosya.txt”);

Yazmak için

ofstream out (”dosya.txt”,ios::binary);

veya

ofstream out;

out.open(”dosya.txt”, ios::binary);

Ekleme Şekli

(Append Mode)

ofstream out(”dosya.txt”,ios::app);

veya

ofstream out;

out.open(”dosya.txt”, ios::app);

ofstream out (”dosya.txt”,ios::app|ios::binary);

veya

ofstream out;

out.open(”dosya.txt”, ios::app | ios::binary);

Okuma Şekli

(Read Mode)

ifstream in (”dosya.txt”);

veya

ifstream in ;

in.open(”dosya.txt”);

ifstream in (”dosya.txt”, ios::binary);

veya

ifstream in ;

in.open(”dosya.txt”, ios::binary);

Yukarıdaki tablodaki kod örnekleri kullanılarak bir dosya okuma, yazma veya ekleme şekillerinde açılabilir.

Dosyaların Kapatılması

Dosya işlemleri sırasında özellikle bir dosyaya veri yazıldıktan sonra dosyanın kapatılması çok önemlidir. Çünkü işletim sistemi bir dosyaya yazılacak olan verileri doğrudan yazmak yerine hafızada bekletebilir. Bunun sebebi dosyaya yazılacak veriler üzerinde ileride bir değişiklik olma ihtimali ve bu durumda dosyaya erişmeden hafıza üzerinden ilgili değişikliğin yapılmasıdır.

Ancak dosya kapatıldığı zaman, programımızda dosyaya yazılmasını istediğimiz şeylerin tamamının dosyaya yazılmış olduğundan emin olabiliriz. Aksi halde yukarıda bahsedilen durum gibi dosyaya yazılması beklenen herşey yazılmış olmayabilir.

fstream kütüphanesinde dosyaların kapatılması için close() fonksiyonu bulunur. Bir dosyanın hangi şekilde açıldığına bakılmaksızın (ekleme, yazma veya okuma) ve dosyanın tipine bakılmaksızın (metin veya ikili dosya) bu fonksiyon kullanılabilir.

in.close();

veya out.close();

şeklinde dosya kapatılabilir.

Dosyalardan okuma ve yazma işlemleri

Veri Tipi Okuma fonksiyonları Yazma fonksiyonları
char get(); put();
Kelime (boşluğa, dosya sonuna yada satır sonuna kadar) >> (yönlendirme operatörü) << (yönlendirme)
Satır (dosya sonuna yada satır sonuna kadar) getline(); << (yönlendirme)
Nesne (struct veya object tipinde) read(); write();
İkili dosya tipleri için Yukarıdakilerin aynısı Yukarıdakilerin aynısı

Yukarıdaki tablodan okunmak veya yazılmak istenen veri tipine göre bir fonksiyon seçilerek kullanılabilir.

İlave Fonksiyonlar

Aşağıda pekçok zaman dosya işlemlerini kolaylaştıran bazı fonksiyonlar ve kullanım açıklamaları verilmiştir.

İşlem Fonksiyon Açıklama
Dosya sonunu kontrol eof() Dosyadan okuma yapılırken dosyanın sonuna gelindiğinde true veya 1 değeri döndürür.
Herhangi bir işlemin hatalı olması. bad() Yazma veya okuma işlemleri sırasında bir işlemin herhangi bir sebeple gerçekleştirilememesi durumunda true veya 1 döndürür.
Dosya açık mı kontrolü is_open() Dosyanın açık olup olmadığını kontrol eder. Şayet açıksa true değilse false döndürür.
Okunan verinin miktarı gcount(); Dosya açıldıktan sonra şimdiye kadar dosyadan okunmuş olan verinin byte cinsinden değerini döndürür.
Karakter atlatma igonore() Verilen miktar kadar karakteri atlayarak sonrasından devam eder. Dosyadan okuma işlemi yapılırken belirli bir bilgiyi atlamak için kullanılabilir.
Sıradaki karakteri kontrol peek(); Sıradaki karakteri kontrol eder ama dosyada ilerlemez. Yani dosyadan okuma işlemi yapıldığında kalınan yerden devam eder ama peek fonksiyonu ile sıradaki karakter kontrol edilebilir.
Rastgele erişim (sadece ikili dosyalarda) seekg();

seekp();

tellg();

tellp();

Fonksiyonların sonu g ile bitenler get (Almak) sonu p ile bitenler ise put(Atamak) için kullanılır. Basitçe dosyanın belirli bir konumuna gitmek veya mevcut konumunu öğrenmek için kullanılırlar.

İğrenç bir hikaye

Tarih: Cuma, Nisan 17, 2009 Kategori: Bilgisayar

Bir aile varmış. Çocuklarından birisi resim hayranıymış. Bu yüzden kendi yaptığı tabloları Picasso’nun tablosu diye milyarlarca paraya satılıyormuş. Aradan zaman geçmiş. Çocuğun dükkanını polis basmış. Hapse girmiş.

Bir çocuk ise kendi notalarını Beethoven’in eserleri diye satıyormuş. Yine basılmış hapse girmiş. Aralarında birisi kopya program yapıyormuş arkadaşıyla. Yine basılmış. Yine aynı şey.

Bir çocuğu ise sahte makyaj malzemeleri yapıp satmış. Yine hapse girmiş. Ailenin babası sporcuymuş. O da çelme takmış. Hapse girmiş. Tek anne kalmış. Polis gelmiş. Tek kalmak yasak demiş.

Ve o da hapse girmiş.

Dördüncü sınıfta yazdığım iğrenç hikaye için alkış istiyorum.

© 2005 – 2009 wolkanca. Bu yazi blog.wolkanca.com adresinde yazildi, sitenin yazilari yalnizca izin alinmak kaydi ile alinti yapilabilir ve yayinlanabilir.


Etiket: , , ,

Bunu okuyan şunları da okur;

Yalnız başınızayken kalp krizi geçirirseniz?

Tarih: Salı, Nisan 14, 2009 Kategori: Bilgisayar

kalp-kriziDiyelim ki, mesai saati bitti ve siz de akşam 18:30 civarında, alışılmadık derecede zorlu bir iş gününün ardından (tabii ki tek başınıza) arabanıza binip evin yolunu tuttunuz. Çok yorgunsunuz ve canınız da fena halde sıkkın ve sinirli bir haldesiniz.

Birdenbire göğsünüzde, kolunuza ve çenenize doğru yayılmaya başlayan korkunç bir ağrı hissediyorsunuz. En yakın hastaneye sadece on dakikalık mesafedesiniz ama hastaneye ulaşmayı başarıp başaramayacağınızdan bile emin değilsiniz.
Ne yapacaksınız?

İlk yardim kurslarına katılacak kadar akli başında biriydiniz ama kurstaki eğitmen, sizin başınıza bir şey geldiğinde ne yapacağınızı öğretmedi!

Yalnız başınızayken kalp krizi geçirirseniz nasıl hayatta kalırsınız?

Pek çok kalp krizi geçirdiği sırada tek başına oluyor; etrafta yardim edecek kimse bulunmuyor. Kalp atışları düzensizleşen ve kendisini bayılacakmış gibi hisseden birinin bilincini yitirmeden önce yalnızca 10 saniye kadar zamanı vardır. Bu durumda ne yapmanız gerekir?

Cevap:
Paniğe kapılmadan üst üste kuvvetlice öksürmeye başlayın.

Arabanızı sağa çekin motoru durdurup dörtlüleri yakin arabanın arkasına geçip sırt üstü yere yatın ayaklarınızı arabanızın bagajına doğru yukarı kaldırın ve öksürmeye başlayın öksürmeden önce her seferinde derin bir nefes alin; öksürükleriniz güçlü olsun, derinden gelsin ve uzun sürsün, tıpkı göğsünüzde birikmiş balgamı atmaya çalışır gibi öksürün.

Her iki saniyede bir derin nefes alıp öksürün ve bunu ya yardim gelene dek yada kalp atışlarınız tekrar normale dönene dek sürekli yapın. Sakin arabanızın içinde oturmayın bu esnada sizi gören insanlar yardim edeceklerdir.

  • Derin nefes almak ciğerleri oksijenle doldurur.
  • Öksürmek kalbe tazyik yapar ve kan dolaşımını rahatlatır.
  • Kalbe uygulanan bu tazyik, kalbin normal ritmine dönmesini kolaylaştırır.
  • Bütün bunlar size, bilincinizi kaybetmeden önce hastaneye yetişecek zamanı tanir.
  • Ayaklarınız yukarı doğru kaldırılmış olduğundan vücudunuzdaki bütün kan kalbe basınç yapacaktır.
  • Bu pozisyonda yatmak kalbin normal çalışmaya düzenine geçmesine yardımcı olur.

Lütfen bu konuda mümkün olduğunca çok kişiyi bilgilendirin. Bu bilgi sayısız insanin hayatini kurtarabilir! Asla, "benim başıma gelmez!" diye düşünmeyin. tarzımızın epeyce değiştiği şu son yıllarda artik her yaşta kalp krizi geçiriyor. Gerçek bir dost olduğunuzu gösterip bu makaleyi tanıdığınız herkese yollayın.

© 2005 – 2009 wolkanca. Bu yazi blog.wolkanca.com adresinde yazildi, sitenin yazilari yalnizca izin alinmak kaydi ile alinti yapilabilir ve yayinlanabilir.


Etiket: , , , , , , , , , ,

Bunu okuyan şunları da okur;

Hosting firması önerim

Tarih: Salı, Nisan 14, 2009 Kategori: Bilgisayar

hostingArkadaşlar yüzlerce mail ve mesaj var bana gönderilen hosting yani barındırma servisi için öneri sorulmuş.

Öncelikle çok eskilerden beri ’de hostbul.net adresinde yayın yapan bir sitesi var, bu site de kullanıcılar kullandıkları hosting firmalarını yorumluyorlar onlara puan veriyorlar, ayrıca çeşitli fırsat paketleri vs. var. Bu siteyi bir kolaçan ediniz fikir sahibi olunuz. Yine buna benzer, bu konseptte yabancı internet siteleri de mevcut bolca, onları da imkanınız ve vaktiniz varsa gezin dolaşın. Ayrıca bu konularda deneyim çok önemlidir, satın almadan önce mutlaka o firma hakkında güvenilir kaynaklardan yorum, alınız.

Bana çokça sorulmasındaki neden sanırım bu sitenin uzun süredir sorunsuz yayında olması. Şu bir gerçek ki bu blog sitesi Wordpress alt yapısını kullanıyor olmasının yanı sıra birçok ekstradan işlevlerle dolu, bunlar bizzat kendi çalışmalarım. Yani çıkıp da aman efendim wordpress kurmuş takılıyor başka numara yok diyen insanlara inanmayın. Wordpress blog platformunun ilk sürümünden şimdikine kadar tümünü denemiş kullanmış biri olarak hala şunu diyebilirim ki bu hazır sistemler her zaman onu kullanacak kişi/kurum tarafından tamamen gözden geçirilmelidir ki zaten açık kaynak olduğu için bunu yapmakta hiç bir sıkıntı yok.

Hosting servisine gelecek olursam, şimdiye kadar ki tecrübelerime göre eğer paranız çok değilse ve aklınız da az değilse, eğer kurumsal bir şirket de değilseniz ’den bu hizmeti almayınız. Amatör veya gelişmeye açık yeni bir iş yapacaksanız mutlaka ABD kaynaklı isimli bir yerden bu hizmeti alın, isimli den kastım tavsiye edilen ve çokça kullanılan firmaları tercih etmekten bahsediyorum. Bunun yanında WordPress, Joomla veya Durpal ya da benzer içerik sistemlerini kullanacaksanız bu sistemleri gerçekten tanıyan firmaları seçin, hatta almadan önce(’den alacaksanız) firmaya direk sorun bunu biliyorlarsa onlara bir puan verin bilmiyorlarsa hiç bulaşmayın derim.

Çoğunlukla karşılaştığım durumlar ve bana gelen mesajlarda ’deki hosting firmalarından almış arkadaşlar ve onlara fazla trafik tükettiğiniz için vb. gibi isimlerle fazladan fatura kesiyorlar para alıyorlar. Bu ’de malesef bir gerçek, sanıyorum bu firmalar parayı ancak bu şekilde kazanabiliyorlar acı ama gerçek.

Benim tavsiye ettiğim firmalar Wordpress.Org’un tavsiye ettikleri ile aynı, yani öncelikle DreamHost, MediaTemple olmak üzere diğer tavsiye ettikleri firmalara babanızdan daha fazla güvenebilirsiniz. Bu firmaların hizmetlerinde ortak özelliklerinden birkaçı şöyledir; trafik(bandwidth)ler neredeyse sınırsız ve gerçekten sınırsızdır, verdikleri alan(disk storage) neredeyse sınırsız veya sınırsızdır, alan adı(domain) barındırma sayısı neredeyse sınırsız veya sınırsızdır ve hepsi bit tıklamada Wordpress, Durpal vb. içerik sistemlerini kurabilen sistemlere sahiptirler. Ayrıca yedekleme, veritabanı vs. aklınıza gelecek tüm konularda ileridirler. En önemlisi ise ABD deki bir firmaya ’deki ben hosting firmasıyım diyen bir firmadan daha kolay ulaşıp sorununuzu çözeceğinize emin olabilirsiniz.

Dreamhost’dan alacaksanız promo code(promosyon kodu) kısmına “wolkanca” yazın %50 kadar indirim alabilirsiniz ayrıca. Başka indirim kodları da var bu standart bir uygulama ama bazı indirim kodları daha az bazıları daha çok indirim sağlayabiliyor.

Tüm bu yazdıklarımı tecrübelerimle yazdığımı tekrar belirtmek isterim, bana hosting konusunda yazan arkadaşlara artık bu yazının bağlantısını göndereceğim, alın size bir blogunuzun olmasının güzel bir yönü daha.

© 2005 – 2009 wolkanca. Bu yazi blog.wolkanca.com adresinde yazildi, sitenin yazilari yalnizca izin alinmak kaydi ile alinti yapilabilir ve yayinlanabilir.


Etiket: , , , , ,

Bunu okuyan şunları da okur;

UYAN YOKSA ÖLÜRSÜN / ELM SOKAĞI KABUSU YENİDEN

Tarih: Salı, Nisan 7, 2009 Kategori: Sinema

“Bu dünya bir rüyadır” der Hz Mevlana; “Öldüğümüzde uyanırız.” Aynı düşüncenin latincesi La Vida Es Sueno olarak düşer kayıtlara; hayat bir düştür…
Bu dünyayı bir sınav yeri olarak görmek, idealar dünyasının yansıması olarak görmek, rüyaların gerçek olduğunu savunmak belki de bu dünyada nefsi terbiye edebilmek içindir. Yine de bu alandaki düşünsel üretim sanatı da etkilemiştir. Yaşananların rüya, rüyaların ise gerçek olması ihtimali edebiyattan sinemaya hemen hemen her sanat dalında kullanılan bir tema olmuştur. Bu önermenin üzerine sinema alanında inşaa edilen Matrix filmi örneğin, aslında insanlığın yüz yıllardır tartıştığı pekçok şeyin başarılı bir kolajıdır.

\

Korku filmleri de bu önermeden ziyadesiyle beslenmiş ve beslenmeye de devam etmekte: Elm Sokağı Kabusu- Fredy Krueger’ da işte bu alandaki kült filmlerden.
Wes Craven tarafından yazılan ve yönetilen serinin ilk film, 1984 tarihini taşıyor. Film Johnny Deep’in ilk sinema deneyimi olması açısından da hayranları için başka bir önem taşırken, Robert Englund dışında John Saxon, Heather Langenkamp, Roone Blakley, Amanda Wyss, Jsu Garcia, diğer rolleri başarıyla paylaştılar.

devamını oku »

bu yazı sahaf1976 tarafından sinepil.org adresli sitede yayımlanmak üzere yazılmıştır. kaynak gösterilmeksizin kopyalanamaz.

etiketler: , , , , , ,

Yeni Sinemalardan.com Karşınızda!

Tarih: Cuma, Nisan 3, 2009 Kategori: Bilgisayar

Aşağı yukarı bir haftadır fazla süregelen revizyon çalışmamızdan sonra an itibariyle blogumuzu tekrar yayına geçirdik. Blogumuzda irili ufaklı 40 adet değişiklik gerçekleştirdik. Bu değişikliklerin bazılarını hemen farkedebileceğiniz türde olurken, bazıları ise daha çok işin mutfağında farkedilen, yani biz yazarların görebileceği ve kullanabileceği değişiklikler oldu. Ayrıca bahsetmeden duramayacağım; bu yazının sonunda da okuyabileceğiniz üzere sizler için küçük bir sürpriz yaptık. Ama durun! Acele etmeyin. Size belli başlı yeniliklerden bahsedeyim.

Yenilikler

  • Forumumuzu kapattık. Çünkü blogun yanısıra forumla uğraşmak gerçekten çok zaman alıyordu. İleride böyle bir ihtiyaç doğarsa ve şartlarda uygunsa yine bir forum açabiliriz.
  • Artık yazılarımızdaki fotoğraflar tek bir yerde toplandı. Bu sayede okunulabilirlik sorununu ortadan kaldırdığımızı düşünüyoruz. Yazıların alt kısmında yer alan fotoğraf kutusundan ilgili fotoğraflara hızlıca erişebiliyorsunuz.
  • Yazdığınız yorumlarda isimlerinizin yanında artık Gravatar hesabınızdaki size özel avatar gösteriliyor. Eğer avatarınız yoksa bizim varsayılan avatarımız görüntüleniyor. (Gravatar nedir ve nasıl kullanılır bilmek ister misiniz?)
  • Artık blogumuza özel Twitter ve Friendfeed hesabımız var. Her ikisiyle de yeni yazılan yazılarımıza kolayca ulaşabileceksiniz (ayrıca Friendfeed’den gelen yorumları da blogumuzda göstermeye çalışacağız).
  • Artık yazılarımıza puan verebiliyorsunuz (bu kategoride olan yazılara hariç :) ). Verdiğiniz puanlara göre de alttaki “En Popüler Yazılar” kısmı sıralanıyor.
  • Az önce de bahsetmiş olduğum blogun altında yer alan “En Popüler Yazılar” kısmının yanısıra, “En Son Yorumlar” ve “Vasat Filmler” bölümü yapıldı. Aslında blogumuzun alt kısmı tamamen yenilendi diyebiliriz. Sizce de alt kısıma güzel bir makyaj oldu değil mi? :)
  • Daha iyi okunulabilirlik adına biraz Tipografi düzenlemesi yapıldı.
  • Yazılara etiket sistemi getirildi. Artık sağdaki kısımda yer alan “Etiketler” adlı bölümden etiketlere göre de yazıları gösterebiliyorsunuz. Ayrıca her yazının altında da etiketler gösteriliyor. Yine buradan da etiketlere göre ilgili yazılara erişebiliyorsunuz.
  • Ekonomik şartlar göz önüne getirerek reklam fiyatlarını makül bir seviyeye çektik. Tamam, ilk açıldığımızdaki sunduğumuz tarifeyi biraz abarttığımızı itiraf ediyorum. :) En azından yeni açılan bir blog için yanlış bir tarife idi. Şimdi daha makül bir seviyede. Yani aylık 30$’a 125×125 piksellik kutularımızın bir tanesine reklamınızı yerleştirebiliyorsunuz. Eğer bu konuda iletişime geçmek istiyorsanız sizi buraya alalım. :)
  • Sağdaki 125×125 piksellik reklam kutularının yanısıra okuyucularımızı rahatsız etmeyeceğini düşündüğümüz şekilde Google Adsense reklamları yerleştirdik.
  • Arşiv sayfasında eski yazılarımızı liste halinde görüntülemenin dışında oradaki etiket bulutu ile de ilgili yazılara ulaşabiliyorsunuz.
  • Eskiden sadece sağ kısımda küçük bir kutu halinde yer alan “Vizyondakiler” kısmı şimdi ayrı bir bölüm haline geldi. Hatta eğer yapabilirsek seans bilgilerine de yine bu bölümden ulaşabileceksiniz. Şimdilik sadece gösterime giren filmler hakkında kısa bilgi ve fragmana erişebiliyorsunuz.
  • Blogumuza artık iPhone/iPod Touch ile girerken yazılarımızı daha rahat biçimde okuyabileceksiniz. Bunun için özel bir eklenti kullanıp iPhone/iPod Touch kullanıcılarına daha rahat blog okuma şansı tanıyoruz. Eğer iPhone/iPod Touch’da sitemizi dolaşırken herhangi bir hata ile karşılaşırsanız bize bildirebilirsiniz.

Blogumuzu Destekleyin

Eğer siz de bizim gibi sinema ile ilgili bir bloga sahipseniz karşılıklı olarak bağlantı değişimi yapabiliriz. Bunun için bizimle iletişime geçmeniz yeterli. Öte yandan herhangi bir konuda bir bloga sahipseniz bizi desteklemek adına da blogunuzda bize bağlantı sağlayabilirsiniz. Buna kesinlikle hayır demeyiz ve bunun için şimdiden size teşekkür ederiz.

Blogumuzda herhangi bir hata ile karşılaşmanız durumunda bizimle iletişime geçebilirsiniz. Aynı zamanda blogumuz hakkında yapıcı eleştirilerinizi bu yazıya yorum olarak yazabilirsiniz.

İşte Sürprizimiz!

Blogumuzun tekrar açılışı nedeniyle siz okuyucularımıza küçük bir sürpriz yapmayı düşündük ve bir kişiye bir adet DVD filmi hediye etmek istiyoruz.

Hediyemizi kazanmanız için yapmanız gereken tek şey sinemalardan.com’daki yazımızda yer alan soruyu doğru cevaplandırmak.

Sorumuzu doğru bilenler arasında yapacağımız çekiliş sonucunda DVD’yi kazanan kişiyi 1 hafta sonra açıklayacağız. İyi şanslar!


Bu yazı Fatih Turan tarafından 22 Şubat 2009 23:21 tarihinde yazıldı. 6 yorum var.

Web Projelerinde Dosya ve Klasör Yapısı

Tarih: Cuma, Nisan 3, 2009 Kategori: Bilgisayar

Bütün işlerimizde olduğu gibi web projelerini geliştirirken de belli bir düzen dahilinde çalışmak verimliliği arttıran önemli unsurlardan biridir. Herkesin kendine özgü bir düzeni bulunmakta ve kimi zaman kendimize göre en iyi düzeni yakalamak çok uzun zaman alabiliyor. Hatta bana göre bu süreç durağan bir süreç değil. Çünkü devamlı daha iyi bir düzen seviyesi yakalamak istiyoruz.

Şahsen ben öyleyim. Devamlı olarak yeni yöntemler keşfederek mevcut düzenimi daha iyiye yönelik geliştiriyorum. Yani şimdiki yöntemimi belkide bir dahaki yıl daha farklı bir biçimde kullanmış olacağım. :) Yine de bu yazımda hali hazırda kullanıyor olduğum mevcut geliştirme düzenimi sizinle paylaşmam yerinde olacağını düşünüyorum.

Projenin Klasör Yapısı

Klasör yapısı web projelerindeki düzeni oluşturmamızı sağlayan önemli etkenlerden biridir. Klasör yapısı ne kadar karmaşık olursa projelerimizi geliştirmek bir o kadar zor olacaktır. Hele bir de ofis çatısında takım olarak çalışıyorsanız işler iyice karmaşık bir hal alabilir. Bu sebepten dolayı takımınızın benimseyeceği, ortak olarak kullanabileceğiniz, akıllı bir şekilde standart klasör yapısını oluşturmanız iyi olacaktır.

Web projelerinde benim oluşturduğum ve kullanıyor olduğum klasör yapım ve açıklamaları aşağıda yer almakta:

Klasör isimlerini İngilizce olarak oluşturdum çünkü XHTML KITCHEN‘da artık yabancılara da hizmet vermeyi planlıyoruz. Siz kendi ihtiyaçlarınıza göre klasör isimlerini Türkçe’de yazabilirsiniz.

İsterseniz yukarıdaki klasör yapısını şablon olarak indirip siz de kendi çalışmalarınızda kullanabilirsiniz.

Projenin Dosya Yapıları

Projelerimizdeki klasör yapısının düzenli olmasının yanısıra dosyalarınızın da düzenli olması tutarlılık ve verimlilik açısından gayet önemli. Bunun için xHTML ve CSS dosyalarınız için size ayrı başlıklar altında tavsiyelerde bulunacağım.

xHTML Dosyaları İçin Tavsiyelerim

  • Kodlarınızı TAB tuşunu kullanarak girintili biçimde yazmaya özen gösterin. Girintili kodları okumak daha kolaydır.
  • Sayfanızdaki önemli bölümleri xHTML‘de kullanılan yorum etiketi yani <!--YORUM--> ile gruplandırın.
  • Beyaz boşluğu en iyi şekilde ayarlayın. Ben genelde xHTML dosyalarımdaki önemli bölümleri yorumlarla ayırmamın yanısıra bir de birer satır boşluk bırakarak ayırmaya çalışırım. Yine okunabilirlik açısından bunu yapıyorum.
  • Etiketlere id ve class verirken mantıklı bir isimlendirme yöntemi ile verin. Ben ecnebilerin CamelCase diye tabir ettikleri türde kelimeleri birleşik yazıyorum. Örneğin: <div id="mainContent"></div>. Bunun yanısıra alt çizgi ve tire ile de isimlendirme yapabilirsiniz (yani _ ve - karakteri ile). Örneğin: <div id="main_content"></div> veya <div id="main-content"></div>.

Unutmadan örnek olarak hazırladığım xHTML dosyasının kodunu inceleyebilir ve üstteki tavsiyelerle karşılaştırma yapabilirsiniz.

CSS Dosyaları İçin Tavsiyelerim

  • CSS dosyanızın başında hazırladığım örnekteki gibi müşteri ile ilgili isim, editör adı ve tarih/saat gibi bilgiler yerleştirin. Böylece kimin hangi dosyayı ne zaman kim için düzenlediğini belirlemiş olursunuz.
  • Yine örnekte görebileceğiniz üzere önemli bölümler için yorumları kullanarak gruplandırma yapabilirsiniz. İşin bu kısmında dikkat ederseniz grup başlıklarında eşittir işareti bulunmakta. Bununla kullandığınız editör ile arama yaparken gruplar arasında kolayca geçebiliyoruz. Kısacası bu eşittir işaretini kullanarak grup adları ile kodlar karışmamış oluyor.
  • Web projesindeki sayfaların herhangi bir yerinde kullanılabilecek önemli CSS komutlarını class haline getirip kullanıma hazırlayın. Hazırladığım örnekte Global Classes grubu altında kullanıma hazır 11 tane class vardı.
  • Seçici adından önce (yani selector’dan önce) xHTML etiketini yazın. Örneğin: div#header { ... }. Böylece bu kodun xHTML dosyasında hangi etiket için yazılmış olduğunu kolayca görüp anlayabileceğiz.
  • Her CSS kodunu tek satırda yazın. Bu CSS dosyanızın boyutunu azaltmakla kalmaz, kodları gözünüzle çok daha rahat tararsınız.
  • Daha önce xHTML dosyaları için bahsettiğim TAB tuşu ile girinti oluşturma yöntemini CSS dosyalarınızda da kullanmalısınız.
  • Yine daha önce xHTML dosyaları için bahsettiğim beyaz boşluğu iyi ayarlama yöntemini CSS dosyalarınız için de kullanabilirsiniz. Ben CSS dosyalarımda her gruptan sonra üç satırlık boşluk bırakıyorum. Bu da kodları daha okunabilir yapıyor.

Yine örnek olarak hazırladığım CSS dosyasını inceleyebilir ve üstteki tavsiyelerle karşılaştırma yapabilirsiniz.

Benim bilmediğim ve burada yazmadığım, sizin bildiğiniz bu tip güzel tavsiyeleriniz varsa onu yorum yazıp bu yazıya katkıda bulunabilirsiniz.


Bu yazı Fatih Turan tarafından 07 Kasım 2008 22:31 tarihinde yazıldı. 19 yorum var.

Google Maps API Kurulum ve Kullanımı

Tarih: Cuma, Nisan 3, 2009 Kategori: Bilgisayar

Google Maps API ile ilgili bu yazıyı ne zamandır yazmayı düşünüyordum. Ama geçen gün Nettuts adlı sitede benden önce Google Maps API ile ilgili bir yazı yazmışlar. Yazının başlığını Google Reader’da gördüğümde “Tüh!” diyerek hayıflandım. E ne demişler: “Atamayana atarlar!”, pardon “Yazamassan yazarlar!”. xD

Yine de ben kendi blogumda Google Maps API hakkında yazı yazmak istedim. Ne de olsa herkes İngilizce’den anlamıyor. Hem Türkçe kaynak da az bu tür konularla ilgili. Yani bu yazı Nettuts’daki yazının çevirisi olmayacak.

Google Maps API’de Neyin Nesi?

Google’ın interaktif harita servisini yani Google Maps‘ı biliyorsunuzdur. İşte Google Maps API ile de kendi web sitemize veya web uygulamamıza Javascript aracılığıyla etkileşimli harita uygulamalarını yerleştirebiliyoruz.

Google Maps API‘nin o kadar gelişmiş özellikleri var ki insan Google Maps API Demo Galerisindeki örneklere bakınca aklı bitiyor. :) Kısacası Google Maps API ile basit haritaların yanısıra gelişmiş özelliklere sahip harita uygulamaları da oluşturabiliyoruz.

Google Maps API Kurulumu

Kurulum için ilk önce Google Maps API üyelik sayfasından haritayı kullanacağımız alan adına özgü anahtar almamız gerekiyor. Bu anahtar ile haritamız sadece üye olurkenki yazdığımız alan adında çalışacaktır. Aynı anahtar ile başka bir alan adında harita uygulamanız çalışmayacak. Farklı alan adlarında da Google Maps API’yi kullanmak istiyorsanız her farklı alan adı için yeni bir anahtar almanız gerekiyor.

Ben örnek için yukarıdaki ekran görüntüsündeki gibi kendi alan adıma ait bir API anahtarı aldım. Üye olduktan sonra aşağıdaki gibi anahtarınızı, hangi alan adı için aldığınızı ve bir de kullanımına dair küçük bir örnek veriyor.

Google Maps API Kullanımı

Anahtarımızı aldığımıza göre haritamızı sayfamıza entegre edebiliriz. Şimdi bunun için aşağıda bir örnek hazırladım. Eğer isterseniz örneği direkt olarak bilgisayarınızda indirip inceleyebilirsiniz. Örneği inceledikten sonra kodlara dair açıklamaları okuyabilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<title>Google Maps API Örneği</title>
 
<!--META-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Google Maps API Örneği" />
<meta name="author" content="Fatih Turan" />
<meta name="robots" content="index,follow" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="content-language" content="tr-TR" />
<!--/META-->
 
<!--STYLES-->
<style type="text/css" media="screen">
	* { margin:0; padding:0 }
	div#map { width:500px; height:500px }
</style>
<!--/STYLES-->
 
<!--SCRIPTS-->
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAApJ4fZWusAp4s0nPrMcxM0xRWK7WhrfsCEgcYY7INOmv0f1t97hTy6mNriyUhaj8OkidWbtIeb_t6hA" type="text/javascript"></script>
<script type="text/javascript">
 function load() {
 if (GBrowserIsCompatible()) {
 var map = new GMap2(document.getElementById("map"));
 map.setCenter(new GLatLng(41.02407481503792, 40.52083969116211), 14);
 }
 }
</script>
<!--/SCRIPTS-->
 
</head>
 
<body onload="load()" onunload="GUnload()">
<div id="map">
	<noscript><img src="rize.png" alt="Rize" /></noscript>
</div>
</body>
 
</html>

Örnek Açıklaması:

  • Satır 20′deki CSS kodu sayesinde haritanın yer aldığı div‘in boyutunu ayarladım.
  • Satır 25′de Google Maps API için Javascript dosyasının yolu (direkt Google sunucusundan çağırıyoruz) ve az önce aldığımız anahtarı key adlı değişkene giriyoruz.
  • Satır 29′da hangi div elementi üstünde haritayı göstermek istiyorsak onun id’sini yazıyoruz. Ben örnekte map olarak belirledim.
  • Satır 30′da haritanın nereyi göstereceğine dair koordinatları belirtiyoruz. Koordinatları belirlemek için birçok yol bulunmakta. Fakat ben size Get Lan Lon adlı aracı öneriyorum.
  • Satır 38′de haritanın sayfa yüklendiğinde çalışması için load() fonksiyonunu, sayfadan çıktığımızda bellek sızıntısı oluşmaması için de GUnload() adlı fonksiyonu çağırdım.
  • Satır 39′da sayfa üzerinde haritanın gösterileceği alanı div elementi olarak tanımladım.
  • Son olarak satır 40′da da tarayıcının Javascript özelliği kapalı olduğunda haritanın statik görselini göstermesi için noscript etiketinden yararlandım. Siz de bu görseli klavyenizden Print Screen tuşu ile alabilirsiniz.

Üstte yer alan maddelerdeki sonuncusunda dile getirdiğim tarayıcıdaki Javascript’in kapalı olma durumunda statik görsel yerleştirme yöntemi yerine yeni farkettiğim daha iyi bir yöntem olan Google Static Maps API‘yi kullanabilirsiniz. Bu konu ile ilgili ayrıntıları daha sonra ayrı bir yazı ile açıklamayı düşünüyorum.

Haritamız Hazır

Nihayet haritamız kullanım için hazır. Az önce tek tek açıklamasını yazdığım örneği şimdi canlı olarak görebilirsiniz.

Ayrıca Google Maps API ile ilgili bir tane daha yazı yazmayı düşünüyorum. Oluşturduğumuz haritayı nasıl daha fazla özelleştirebileceğimize dair bilgiler vereceğim. Şimdilik Google Maps API ile ilgili belgeleri, örnekleri ve uygulamaları incelemenizi tavsiye ediyorum.


Bu yazı Fatih Turan tarafından 21 Ekim 2008 17:07 tarihinde yazıldı. 23 yorum var.

Web Sayfalarımızı Neden Elle Kodlamalıyız?

Tarih: Cuma, Nisan 3, 2009 Kategori: Bilgisayar

Web tasarımcılığı veya web geliştiriciliğine yeni başlayan hemen hemen herkes Dreamweaver veya benzer tarzda WYSIWYG (Türkçesiyle “Ne görüyorsanız onu alırsınız”) tipindeki editörler ile tablo etiketlerini kullanarak (veya kullanmayarak), adeta suya sabuna dokunmadan, yani kodlara bulaşmadan, programdaki komutlarla anında görüp, düzeltme ve değişiklik yapıp web sayfalarını inşa etmeye çalışmışlardır.

Şahsen ben bu şekilde web sayfalarımızı geliştirmememiz gerektiğini düşünüyorum. Çünkü:

  • WYSIWYG tarzı editörler yeni başlayanlar için genelde kolay gözükmesine karşın arkaplanda ürettiği kodlar bizim kontrolümüz dışında oluşturulur. Bu yüzden bir sürü gereksiz kod ile karşılaşabiliriz.
  • Bu gereksiz kodlar yüzünden xHTML ve CSS dosyamızın boyutları artabilir. Aynı zamanda kodların okunulabilirliği de azalır. Okunabilirlik azalırsa, çalışmanızda bir sorun ile karşılaştığınızda profesyonel birinden yardım istemeniz durumunda yardım alma olasılığınız da azalabilir. Şahsen ben forumlarda tablo etiketi ile hazırlanmış, karışık kodlara sahip web sayfalarındaki sorunlarla pek ilgilenmiyorum.
  • Gereksiz kodlar aynı zamanda SEO açısından bizim için bir dezavantaj oluşturabilir. Çünkü arama motorları genelde kötü kodlanmış web sayfalarını daha iyi ve sade kodlanmış web sayfalarına göre önemsiz olarak nitelerler (bu konuda bazı istisnalar olabilir).
  • Genelde WYSIWYG tarzı editörler web sayfalarını yapı, sunum ve davranış olarak ayırmada (bu konuyu daha sonra ayrı bir yazı olarak ele almayı düşünüyorum) beceriksizdir. Yani oluşturulan xHTML dosyalarınıza CSS ve Javascript kodlarını da katarlar.
  • Yine yukarıdaki maddede bahsettiğim arkaplanda yaratılan kodlar otomatik olarak oluşturulduğu için tam olarak ne olduğunu, ne işe yaradığını anlamayabiliriz. Hatta öyle ki bazılarımız -özellikle tembeller xD- “nasıl olsa herşeyi fare ile bir-iki tıkla yapabiliyorum” diye düşünüp hangi etiketin, hangi kodun ne işe yarayıp yaramadığını öğrenme yerine komutları ezberlerler. Kısacası öğrenme ihtiyacı hissetmezler. Sonuçta neyin ne işe yaradığını bilmeden iş yapmış olursunuz ama bir sorunla karşılaştığınızda da kafanızdaki saçlarınızı yolabilirsiniz. xD
  • Dreamweaver veya Expression Web gibi WYSIWYG tarzı editörler pahalı uygulamalardır. Neden daha ucuz veya tamamen ücretsiz daha iyi programlar varken bu programları kullanalım ki? Değil mi? :) Ben E Text Editor‘u geçenlerde 35$ karşılığı satın aldım. Böylece uzun bir aradan sonra kod düzenleme aracı arayışıma son verdim. :) Bence siz de kendinize uygun bir kod düzenleme aracını edinin (Mesela Aptana, Notepad++, Komodo Edit, PSPad).

Kısacası web sayfalarını kodlarken WYSIWYG tarzı editörler kullanmayalım. Web sayfalarını kodlarken hangi etiketin, hangi kodun ne işe yaradığını öğrenelim (bunun için Sitepoint‘in çevirimiçi xHTML referansı ve CSS referansı kesinlikle işinize yarayabilir), ezbere gitmeyelim ve tabii ki web sayfalarımızı elle kodlayalım. Bu sayede orta ve uzun vadede siz kazanacaksınız. ;)


Bu yazı Fatih Turan tarafından 31 Ekim 2008 01:01 tarihinde yazıldı. 33 yorum var.