ingilizce kelime/cümle/gramer

Sunday, May 28, 2006

JAVA

Java'nın Özellikleri

Java Basittir.

Java, kendisine yakın güçteki dillerin en basitidir. Örneğin, Java model olarak aldığı C++'tan çok daha kolaydır. C++'ın çok güçlü bir dil olduğu tartışılmaz. Ama C++ ve C# çoğu bir dilde bulunması çok da şart olmayan karmaşık bir çok özellik içermektededir. Bütün bu özelliklerin öğrenilmesi çok zaman alır. Oysa Java gereksiz çok fazla özellik içermez. Ve Java'da bir özelliğin öğrenilmesi ve kullanılması çok kolaydır. Başka dillerde çok zor yazılan işlemler Java'da çok basit ifadelerle gerçekleştirilebilmektedir.

Java'nin basitliği yanlış anlaşılmamalıdır. VisualBasic/ASP, Delphi/Pascal, Perl, PHP gibi dillerden ve ortamlardan daha basit değildir. Bu sayılan diller çok kolay öğrenilebilen, kısa zamanda yeterli düzeye ulaşılabilen dillerdir. Ancak bu dillerde yapılabileceklerin belli bir sınırı vardır. Bu dillerde büyük çaplı ve karmaşık işler yapamazsınız veya yapmanız durumda çok zorluk çekersiniz. Oysa Java programlamanın her dalında iddia sahibidir. Her geçen gün Java yeni bir alanda söz sahibi olmaktadır. Bu bağlamda 'basit' demek, 'çok gelişmiş işlemlerin basit bir şekilde yapılabilmesini sağlayan' demektir. Yoksa 'programcı bunu anlamaz' diye düşünülmesinden ötürü hiç bir özellik dışarda bırakılmamıştır.

Java Nesneye Yöneliktir.

Java tamamen (bazı kişilere göre %99) nesneye yönelik'tir. Diğer bazı diller gibi nesneye yöneliklik sonradan dile eklenmemiştir, başından beri Java'da bulunmaktadır. Bir Java programında olabilecek her şey ya nesnedir ya da bir nesnenin parçasıdır. Java nesneye yönelik programlamayı sadece mümkün değil aynı zamanda kolay kılmıştır. Java'da bir nesnenin yapılması, kullanılması, geliştirilmesi, başka bir yere aktarılaması çok kolaydır.

Java Dağıtıktır.

Java 'dağıtık' bir dildir. 'Dağıtık' birden fazla bilgisayarda çalışan programların bir biriyle uyumlu çalışabilmesidir. Bir yazılım parçasının bir kısmının bir makinede diğerinin başka makinede aynı anda çalışması mümkündür. Bu yüzden Internet'in dilinin Java olduğu söylenmektedir. Günümüzde tek bir makine üzerinde çalışan, başka hiç bir yerle bağlantısı olmayan uygulama kalmamış gibidir. Bir çok işletme Interenet üzerinden iş yapmaktadır. Bir çok işletmede birden fazla makine birbirine bağlı olarak çalışmaktadır. Bu yüzden Java dağıtık programlama için en uygun çözümlerden biridir.

Java Sağlamdır.

Java sağlam bir dildir. Programlamadaki hataların çoğu daha yazılma aşamasında anlaşılabilmektedir. Yazılma aşamasında anlaşılmayanlar, programın çalışması esnasında yakalanabilmektedir. Bir 'exception'la, programda hatanın ne olduğu, nerede olduğu ve hangi işlemi yaparken olduğu bile belirtilebilmektedir. Başka dillerin aksine çalışma esnasında bir Java programı "Bir hata oldu!" deyip çökmez. Bir çok durumda hataya rağmen program çökmeden çalışmaya devam eder. Hata olması durumunda da programı çalıştıranlar hatayı ayrıntılarıyla öğrenme olanağına sahip olur.

Java Güvenlidir.

Java güvenli bir dildir. Java diliyle virüs yapılamaz. Hiç bir virüs bir Java programına bulaşamaz. Bir Java programının yaptığı her hareket takip edilir. Kötü niyetli bir program, bir işlemi eğer izin verilmediyse yapamaz. Bu özellik, Internet gibi herkesin başkasının makinesine erişebildiği bir ortmada çok önemlidir. Java'yı güvenlik gereksinimi yüksek bir çok firma bu yüzden tercih etmektedir.

Mimarilere Yansızdır.

Sıradan kullanıcıların bildiğinin aksine dünya üzerinde bir çok işletim sistemi vardır. Hatta kullanıcın çoğunun iyi bildiği Windows işletim sistemi bazı bilgisaya alanlarında hiç kullanılmaz. UNIX/Linux, Apple Mac, IBM'in çeşitli işletim sitemleri dünya işletim sistemi pazarında büyük yer tutmaktadır. Bir çok masaüstü kullanıcısının tek bildiği işletim sisteminin, bazı sektörlerde adı dahi geçmemektedir. Java'da yazılan bir program hemen hemen bütün işletim sistemlerinde hiç değiştirmeye gerek duymaksızın çalışır. Diğer dillerde bu özellik yoktur. Hatta Windows'un bir versiyonunda çalışan program diğer bir versiyonda çalışmayabilmekte, bazen makinenin çökmesi gibi büyük sonuçlar bile doğurabilmektedir. Windows'u üreten Microsoft firmasının yazdığı programlar bile kendilerinin işletim sistemlerinin bazılarında çalışmamaktadır. Kendilerinin yazdığı belgelerde hangi işletim sistemlerinin hangi versiyonlarında hangi programlarının çalışmadığını belirtilmektedir. Bu durum bütün işletim sistemi ve bütün programlar için geçerlidir. Ürettiği yazılımların her platformda çalışmasını isteyen firmalar giderek daha çok Java'ya yönelmektedir.

Java Taşınabilirdir.

Java programları her ortamda aynı veya benzer bir şekilde çalışır. Her ortam/makine için ayrı bir program yazmaya gerek kalmaz. Programcı programın çalışacağı makinenin durumunu göz önüne almak zorunda kalmaz. Bir programın görüntüsü çalıştığı hey yerde hemen hemen aynıdır. C programları da hemen hemen her işletim sisteminde yeniden derlenmek suretiyle çalışabilir. Ama programcı bunun için hazırlık yapmalıdır. Bir işletim siteminde tamsayı -2^15 ile 2^15 arasında değer alırken diğerinde -2^31 ile +2^31 arasında alabilir. Ama Java bu farkları programcıya şeffaf kılar. Programcı her işletim sistemi ve her sürüm için ayrı bir program yazmak zorunda kalmaz.

Java Yorumlanır.

Java 'yorumlamalı' bir dildir. Yani bir Java programının komutları, çalışırken makinenin anlayacağı formata çevrilir. Java'da bu Java Virtual Machine (JVM) tarafından yapılır. Bunun avantajı bir programın kullanıdığı standart kütüphanelerin programla birlikte taşınması zorunluluğunu ortadan kaldırmasındır. Bir yorumlayıcı herhangi bir ortamda varsa, bir dildeki standart her özellik o ortamda var demektir. Programla birlikte bu kütüphanelerin de taşınması gerekmez. Bu da bir Java programının bir makineden başka makineye indirilmesini çok hızlandırır. Çünkü sadece programcının yazdığı nesneler yolculuk yapar. Applet'lerin çalışma prensibi budur. Ana makinede bulunan applet, tarayıcı tarafından kullanıcının makinesine alınır ve çalıştırılır. Java ortamı, yani JVM tarayıcının içinde mevcutur.

Java Yüksek Başarımlıdır.

Diğer dillerde olmayan bir çok özelliğe sahip olmasına rağmen, Java'da bunun için fazla bir performans kaybı yoktur. Java'nın ilk versiyonlarında çalışan programlar diğer dillerde yazılan eşdeğerlerine göre elbette yavaştır. Ancak Java'nın gelişmesiyle birlikte Java bu farkı, üstün özelliklerinde vazgeçmek zorunda kalmaksızın kapatmaktadır. En son Java sürümüyle birlikte JIT (Just-In Time-Tam Zamanında Derleme) teknolojisi devreye girmiş bulunlaktadır. Bununla birlikte Java programları, diğer dillerde en iyi yazılmış programların hızını hemen hemen yakalayabilmektedir. Java yapılması 'imkansız' gibi görüneni çok da fazla performans kaybına yol açmadan yapar.

Java'nın yavaşlığı en fazla eleştiri alan özelliklerden biridir. Bir programın hızlı çalışması, makinelerin hafıza veya işlemcisini terfi ettirerek çözülebilir. İşlemcinin ve hafızanın çok ucuzladığı günlerde, bu, bir işletme için pek fazla maddi bir yük değildir. Bir programcının sağlam, güvenli ve Java'nı sahip olduğu üstün özelliklere sahip program üretmesi daha fazla masraflıdır. Bir işletmenin, durup dururken bir programın makineyi çökertmesinden dolayı katlanacağı külfet az değildir. Programı yapanların bile hatayı anlamak için saatlerce bazen günlerce uğraşması işletmeye yine maliyet olarak yansıyacaktır. Bu kadar eleştiri almasına rağmen Java'nın giderek daha fazla yaygınlaşmasının elbette nedenleri vardır. Java'nın yavaşlığından sadece Java'yı bilmeyenler ve kullanmayanlar şikayet etmektedir. Ancak Java 'hızla' yayılmaktadır.

Java Çok Kanallıdır.

Java dili başından 'çok kanallıdır' (multi-threaded'dir). Çok kanallılık, bir programın aynı anda birden fazla işlemi yürütebilmesi demektir. Bir program herhangi bir şeyi beklerken arada başka bir işlemi gerçekleştirebilir. Beklenen olay gerçekleşince ilk işlem kaldığı yerden aynen devam ettirilir. Üstelik bunun için programcının fazla bir şey yapması da gerekmemektedir. Çok kanallılık bir çok dilde hiç yoktur. C++ gibi dillerde de dilin özelliği değil, ona sonradan eklenmiş kütüphanelerle kullanılabilmektedir. Ama Java'nın kendisi doğuştan çok kanallıdır. Bu yüzden çok kanallı program yapmak için en kolay dil Java'dır.

Java Dinamiktir.

Java'da bir programla kullandığı birimlerin (kütüphaneler,modüller veya sınıfların) birbirine bağlanması çalıştırma anında yapılır. Buna 'sonradan bağlama' (late binding) denir. Kullanılan birimlerin iç yapısı değiştirildiğinde, bu birimleri kullanan programın değişmesi gerekmez. Yeter ki birimlerin dışarıdan çağırma şekilleri değişmesin. Oysa C++ gibi dillerde herhangi bir değişiklikte (bu bir modülün iç yapısında çağıranları ilgilendirmeyen çok ufak bir değişiklik bile olsa) herşeyin yeniden işleme tabi tutulması gerekir. Buna da 'erken bağlama' (early binding) denir. Java'da late-binding bu özellik olmasaydı, Java kütüphanlerindeki her hata düzeltme ve değişiklikte dünyadaki bütün programları yeniden işleme tabi tutmamız gerekirdi ki bu mümkün değildir.

Sonuç

Java iyi bir programlama dilidir. Giderek yaygınlaşması, diğer dillerin giderek Java'ya benzemeye başlaması ve taklitlerinin çıkması da bunu göstermektedir. Java'yı tercih etmeyenler elbette olmuştur ve olacaktır. Ama buzdolabının bile Java bildiği bu dönemde bu dili hiç bilmemek, tümüyle yok saymak bilgisayar alanında var olmak isteyen insanlar için büyük bir eksiklik olacaktır.



Java Platform'u

Java Platform'u

Java sadece bir programlama dili değildir. Aynı zamanda bir yazılım platformudur. Java Platform'u işletim sistemi üzerinde çalışan, uygulamalara çok çeşitli servisler veren, bunu her işletim sistemi için standart bir biçimde başarabilen bir platformdur. Java Programlama Dili ise bu platform üzerinde yazılım geliştirmek için kullanılan programlama dilidir. O yüzden Java'yı öğrenmek sadece Java dilini öğrenmek demek değildir. Java platformu üzerinde çalışan farklı bir dil de üretilebilir. Ancak Java dilinin iyi bir programlama dili olması nedeniyle böyle bir ihtiyaç doğmamışır.

Java platformunun yapısı, daha önce benzer bir platform olmaması nedeniyle, özellikle başka dillerle çalışmış insanlara karmaşık gelebilir. Ancak Java, diğer dillerdeki, özellikle de C/C++ dilindeki "çözümsüz" veya "çözümü zor" konulara pratik çözümler üretmiştir. O yüzden başka dillerle profesyonel programlama yapmış olan insanlar sık karşılaştıkları bir çok sorunun Java'da çok kolay çözülmüş olduğunu görebilmektedirler. Bu bölümde bir Java programının çalışma biçimini, öncellikle diğer dillerde yazılmış programların çalışma biçimlerini gözden geçirerek inceleyeceğiz.

Derleme (Compilation) ve Yorumlama (Interpretation)

Programalama dili, insanla makine (bilgisayar) arasında iletişim kurmak için kullanılan dildir. Başka bir deyişle programcı bilgisayara, özellikle de işlemciye istediklerini yaptırmak için bir dil kullanır. Bu dil konuşma diline yakın bir dil olmalıdır ki insanlar rahatça kullanabilsin. Bilgisayar işlemcisinin dili ise sadece sayılardan oluşur. Bilgisayarlar sayısal (dijital) aygıtlardır. İşlemciler sadece belli sayılarla ifade edilen makine kodlarından anlar. Bu kodlardan oluşan dile 'makine dili' denir, üretilen koda da 'makine kodu' (machine code) denir. Bilgisayarın ilk dönemlerinde insanlar programlarını sayı kodları kullanarak yazıyorlardı. Bu kodlar her işlemci türü için değişik olduğundan, yazılan programlar sadece belli bir işlemci ile çalışabiliyordu. Hatta bir işlemci sürümü için yazılan kod bir önceki sürümde çalışmayabiliyordu. Bu yüzden 'programlama dili' kavramı ortaya çıkmıştır. Bu yapıda, programcı bilgisayarın yapması gerekenleri ona, konuşma diline yakın bir dille söyler. Bu dilde yazılanlar makine diline çevrilir. Böylece programcılar, hem işlemciminin kendine komut kümesini öğrenmek zorunda kalmazlar; hem de yazdıkları programlar birden fazla işlemciyle çalışabilir.

Programalama diliyle düz metin şekinde olan programa 'kaynak kodu' (source code) denir. Makine dilinde olan koda da "ikili kod" (binary code) denir. Programlama dilinden makine diline çevirme işi iki şekilde yapılabilir. Biri 'anında', ikincisi 'önceden'. Anında çevirmek, programa dilindeki ifadeleri bir yandan okuyup bir yandan makine diline çevirmek demektir. Buna 'yorumlama' (interpretation) denir. Önceden çevirme ise, programlama dilindeki ifadelerin çalıştırılmadan önce makine diline çevrilmesi, sonra da çalıştırılması anlamına gelir. Buna da 'derleme' (compilation) denir. Derleme'nin faydası daha hızlı olmasıdır. Çünkü makine diline çevirme sadece ve sadece bir kere yapılmaktadır. Yorumlama da ise her çalıştırmada çevirme işlemi yapıldığından daha yavaştır. Derlemenin zararı da, programdaki her değişiklikte önce derlemeyi sonra çalıştırmayı gerekli kılmasıdır. Sık değişiklik yapılan durumlarda bu, programcı için ciddi bir sorundur. Oysa yorumlama anında olduğu için, değişiklik de anında etkili olmaktadır. Perl, Basic gibi diller yorumlamalı, C ve Pascal gibi diller de derlemeli dildir.

JVM - Java Virtual Machine (Java Sanal Makinesi)

Java'daki durum biraz daha karışıktır. Java hem 'derlemeli' bir dildir, hem de 'yorumlamalı'. Java programlama diliyle yazılmış kaynak kodu, sanal bir işlemcinin anlayabileceği makine koduna çevrilir. Bu kod gerçek bir makine olmadığından ona makine kodu denmez. Ama programala dili gibi konuşma dilinde de olmadığından kaynak kodu da değildir. Bu ara dille yazılmış koda 'bayt kod' (bytecode) denir. Çünkü makine kodu gibi baytlardan oluşur. Yani kaynak kodu bayt koduna 'derlenir'. Sanal işlemci bu bayt kodlarının makine koduna programın çalışması esnasında çevirir. Her işletim sistemi ve işlemci için ayrı bir sanal makine vardır. Java kaynak kodları Java derleyicisi tarafından bayt koda çevrilir. Üretilen bu kod bütün işlemciler için aynıdır. Her işletim sistemi ve işlemciye göre sanal makine, bu bayt kodu ilgili işlemcinin makine diline anında çevirir yani yorumlar. Bu sanal makineye Java Sanal Makinesi - Java Virtual Machine (JVM) denir.

Şimdi teorik olarak anlattığımız sürecin, uygulamadaki bileşenlerini inceleyelim. Java platformunun programlama dili 'Java' dır. Bu dilde yazılmış kaynak kodları '.java' uzantılı dosyalarda saklanır. "javac" adlı bir derleyici ile ikili koda çevrilir. İkili kod'lar '.class' uzantılı dosyalarda saklanır. Bu dosyalar 'java.exe' adlı yorumlayıcı tarafından çalıştırılır. Java kaynak kodu herhangi bir metin düzenleyici ile yazılabilir. Java'nın derleyicisi ücretsiz olarak dağıtılmaktadır. Java'nın yorumlayıcısı (JVM)'de plug-in olarak yüklenebilmektedir. Bu plug-in de ücretsizdir. Ayrıca bilinen bütün tarayıcılar'ın bir JVM'i bulunmaktadır.

Bir JVM içerinde çalışan Java application'u C ile yazılmış native kodu çağırabilir. Bu durumda performans'tan kazanılmakla birlikte platform bağımsızlığı kaybedilmiş olur. O yüzden bu, sadece çok hız gerektiren az sayıda işlem için kullanılabilir. Java'nın hızı giderek arttığından buna zamanla daha az ihtiyaç duyulmaktadır. Bir .exe programı da Java programlarının içerisinden çalıştırılabilir. Ancak bu durumda çalışan proses tamamen JVM'in dışında, aşağıdaki işletim sisteminin kontrolünde bulunur. Application'la veri alışverişi bulunmayan programları dışarıdan çağırmak için kullanılabilir.


Java'nın Kullanım Alanları

Applet'ler

Bir web sayfası içerisinde çalışabilen görsel Java bileşenlerine 'applet' denir. Bir web sitesinden client'a .html veya .gif dosyası gibi indirilir ve browser tarafından çalıştırılır. Client'ta çalışması nedeniyle kullanıcıyla çabuk etkileşim kurabilmektedir. Server'da çalışan CGI ve benzeri programlar her işlemde server'a gidilmesini gerekli kılmaktadır. Bu da bandwith'i sınırlı client'lar için ciddi bir sorun olmaktadır. Özellikle game ve chat gibi uygulamaları da applet hemen hemen tek mantıklı seçenek olarak durmaktadır.

Servlet'ler

Server makinelerinde bir application server içerisinde çalıştırılabilen program modüllerine 'servlet' denir. Bunlar bağımsız application değildirler ve yüklenmeleri, çalıştırılmaları ve gerektiğinde devreden çıkartılmaları bir application server tarafından yapılır. Bir URL olarak çağrıldıklarında, varsa kullanıcıdan gelen parametreleri alıp çalışırlar ve çıktı olarak da HTML üretirler. Bir dosyada 'statik' olarak bulunan HTML'in client'a aktarılması yerine HTML'in 'dinamik' olarak (real time'da) üretilip output'a basılması söz konusudur.

Application'lar

Java'nın önce Applet'lerle sonra da Servlet'lerle gündeme gelmesi, onun sanki normal bir programlama dili olarak kullanılamayacağı gibi bir izlenim yaratmamalıdır. Java'nın internet'e en uygun dil olması, internet dışındaki uygulamalarda kullanılamayacağı anlamına gelmez. Bir ortamda Java platform'u yüklüyse her tür işlem için Java application'u çalıştırılabilir. Ancak, herhangi bir makinede bir Java programı çalıştırılabilmesi için JRE (Java Runtime Engine - Java Çalışma-Zamanı Motoru) bulunmalıdır. Bir çok işletim sistemi Java'yla birlikte gelmekte veya kurulurken Java'yı tercihe bağlı olarak yüklemektedir. JRE yaklaşık 10 MB yer kapladığından ve çok çabuk kurulduğundan CD ile dağıtılan programlarla birlikte de verilebilmektedir.

Micro Edition

Java'nın kullanım alanlarında biri de el cihazlar veya çeşitli makinelerdir. Bunlarda Java'nın micro edition'u çalışır. Standart Java'dan farklı olan bu edition, bazı ek class'lar içerdiği gibi bazı standart kütüphaneleri de içermez. Dilde de bazı farklar vardır. Örneğin kesirli sayılar micro edition'da yoktur. Bunların dışında Java'nın temel çalışma biçimi aynıdır. Bir server veya başka bir kaynaktan aplication yükleyip çalıştırmak applet benzeri olan midlet class'larıyla yapılır. Java'yı destekleyen cep telefonları, buzdolapları, arabalar bulunmaktadır. Yakın bir gelecekte Java'nın kullanım alanının daha da yaygınlaşacağını düşünülmektedir.

Enterprise Edition

Server'larda, işletmelerin network'lerinde e-ticaret, mail, kullanıcı sistemi gibi bir çok işlemi desteklemek üzere çeşitli kütüphanelerle donatılmış bir başka Java versiyonu daha vardır : Enterprise Edition. Bu edition standart Java artı dağıtık işlemler için bazı kütüphaneler içermektedir. Değişik veritabanı ve e-ticaret çözümü üreten firmalar için bir standart teşkil ettiğinden, Java'nın platform bağımsızlığı yanında, yazılım üreticilerinden bağımsız sistem kurulabilmesini de sağlamaktadır. Firmayı tek bir işletim sistemine veya yazılım üreticisine bağımlı olmaktan kurtarmaktadır. Sisteme entegre bir ürün başka bir şirketin yaptığı ürünle rahatlıkla iletişim kurabilmekte, bir sistem yerine diğeri çok kolay yerleştirilebilmektedir. Bir çok büyük veritabanı ve e-ticaret yazılımı üreticisi Java enterprise edition'u desteklemektedir.

Saturday, May 27, 2006

"Türkiye'de ilk olarak yapılacak üç şey var.
  1. Eğitim,
  2. ekonomi ve
  3. savunma

millî olacak.

Bunları sen kumanda edeceksin, el aleme kumanda ettirirsen böyle olur. Biz savunmayı NATO'ya vermişiz, ekonomiyi Amerika'ya vermişiz. Bakın Mustafa kemalin ağzından hiçbir zaman **Garplılaşacağız** lafı çıkmıyor.Gazi, bütün nutuklarında **muasır millet olacağız** diyor.Muasırlaşmanın muadili çağdaşlıktır, batılılaşma değil.

İsmet İnönü ile birlikte başlamıştır bu batıcı değişim..
Oysa Cumhuriyet kurulur kurulmaz Mustafa Kemal'in ilk işlerinden biri Türk Dil ve Tarih kurumlarını kurmak olmuştur."

ATTİLA İLHAN

Monday, May 22, 2006

Kutucuk Modeli

Kutucuk Modeli

24 Şubat 2005

Bu yaziyi, Zoque formunda karsilastigim bir konu basligindan sonra yazmaya karar verdim. Bu yazinin icerigi ic karartici nitelikte teknik olup, teknik konularla ilgilenmeyen okurlarin, daha fazla zaman harcamadan baska eglenceli yerlere gitmeleri onerilir.

CSS'li tasarimlarin vazgecilmeyen ogesi "kutucuk" lardir. Ornegin bu yazinin gorundugu kisim bir kutucuk, yukarida gordugunuz logonun bulundugu kisim ise baska bir kutucukdan olusmaktadir. Eskiden kullanilan bir metod olan tablolarin yerini, CSS'de kutucuklar almaktadir. Tabloda ki TD elementinin yerini, CSS'de DIV elementleri almaktadir.

CSS'de bir kutucuk yaratmak gayet basittir.

  1. #kutu {
  2. width: 400px;
  3. margin:0;
  4. padding:20px;
  5. border: 20px solid #000;
  6. }

Yukarida tanimlanan kutucuk icindeki elementlerin anlami su sekildedir:

width: yazinin bulunacagi alanin uzunlugu (tablodaki width'e esittir)
margin: bu kutucugun diger kutulardan uzakligi (tablodaki cellspacing ile ayni anlamda)
padding: yazi ile kutucugun basladigi yer arasindaki uzaklik (tablodaki cellpadding ile ayni anlamda). Yanlizca 20px degeri verildiginde bu tekste, kutucugun tum kenarlarindan 20 px tampon verir. Eger yanlizca kutucugun sol kenarindan tampon verilmek istenirse o zaman padding-left:20px yazilir.
border: kutunun etrafindaki kenar cizgisi (tablodaki border ile ayni anlamda). 20px kenar cizgisi kalinligini, solid cizginin sitilini ve #000 ise rengini belirlemektedir.

Iste bu CSS kodunu kullanarak, kutucugunuzu asagidaki gibi olusturabilirisiniz

Burada yazi var... Burada yazi var...

Buraya kadar hersey guzel. Maalesef, bu basit CSS kurali, butun web standartlarini destekleyen browserlarda duzgun calisirken, IE'de farkli calismaktadir. Iste bu probleme "Kutucuk Problemi" adi verilir.

Bunu gorsel bir ornek ile size aciklamaya calisacagim. Yukarida gordugunuz kod, web standartlarini destekleyen browserlarda asagidaki gibi bir sonuc verecektir:

Kutucugun Firefox'da gorunumu

Goruldugu gibi width:400px dedigimiz alan yanlizca yazilarin bulundugu kismin genisligini gostermektedir. Kutucugun toplam alan genisligi ise 480px olacaktir.

Fakat ayni kod, IE'de su sekilde goruntulenmektedir:

Kutucugun IE'de gorunumu

IE, toplam alandan, border ve padding miktarlarini cikararak, 320px'lik bir yazi alani bize vermekle birlikte, kutucugun toplam alani, bizim verdigimiz width degerine yani 400px'e esit olmaktadir. Bu problem, bir tasarim asamasinda, bizim kafamizi duvarlardan duvarlara vurmaya neden olmaktadir :)

Milyonlarca kisi, IE 5.x browser kullandigindan bu soruna bir cozum bulmak gerekli idi ve bu cozum Tantek Celik'de geldi. Tantek'in teknigi, bir tane CSS DIV elementi ile, standart ve standart olmayan browserlara, yazi alan genisligini tanimlamamizi sagladi. Iste bu teknigin ismine "Kutucuk Problemi Cozumu" deniyor. Tantek'in cozumu ile ilgili ayrintili bilgiyi "Box Model Hack" yazisinda bulabilirsiniz. Ben onun yerine, daha kolay olan Andrew Clover'in metodunu size gosterecegim.

Gelin bu teknige bir goz atalim. Bizim amacimiz yazi alaninin tum browserlarda 400px olmasi. Firefox gibi modern browserlarda yazi alani zaten 400px gorunmekte. IE'de ise 320px olarak algilanmakta. IE'de bu alani 400px yapmanin tek yolu, istedigimiz toplam degere sag padding, sol padding, sag border ve sol border genislikliklerini eklemek olacaktir.

400px + 20px sol padding + 20px sag padding + 20px sol border + 20px sag border = 480px

Biz, 480px'lik bir width tanimlayip, sayfamiza IE ile baktigimizda, tekst alani 400px olacaktir.

Peki bunu Firefox gibi modern browserlari etkilemeden CSS'imiz icine nasil koyabiliriz? Iste Andrew'nun cozumu:

  1. #kutu {
  2. padding: 20px;
  3. border: 20px solid #000;
  4. width: 480px; /* Bu kisim IE icin */
  5. w\idth: 400px; /* gercek deger - modern browserlar icin */
  6. }

Iste bu hepsi bu kadar. w\idth teknigi ile kutucugumuzun yazi alani hem IE'de hem de Firefox gibi modern browserlarda 400px olacaktir.

Dipnot: Bu problem IE'nin tum versiyonlarinda gorulmektedir. Microsoft, IE 6 ile birlikte, IE'nin cok gizlenmis bir ozelligini browserina dahil etti. IE 6, DOCTYPE'i belirlenmemis bir websitesine "Garip Mod"da calismakta iken eger DOCTYPE sayfaya eklenirse "Standart Mod"da calisiyor ve boylece, yukarida gosterdigimiz teknige gerek kalmiyor. Eger sitenizi ziyaret edenlerin buyuk bir cogunlugu IE 6 kullaniyorsa ve siz yukarida kullanilan teknigi, IE 5.x ve asagisi "standart" browserlar olmadigi icin desteklemek istemiyorsaniz, butun yapmaniz gereken sitenize DOCTYPE eklemek. Sizin sitenize uyan DOCTYPE'i gormek ve "DOCTYPE Salteri" hakkinda daha fazla bilgi almak istiyorsaniz, Eric Meyer'in sitesini ziyaret edebilirsiniz.

orijinal: mehmet doğan

Grafikler Renkler

Grafiklerde başarıyı yakalamak

Şubat 7, 2006 | Tasarım | 3 yorum

Grafiklerde baÅ�arıyı yakalamakGrafikler, sitenin en önemli parçalarından biridir. Siz de, aynı ressamların resimlerine imzalarını bıraktıkları gibi, grafiklerinizi imzalamak istemez misiniz? Bu yazı da, grafik kalitenizi artırmaya yarayabilecek birkaç ipucundan bahsediyoruz.

RENKLER
Koyu renkler her zaman çekicidir. Çalışmalarınıza kırmızı yerine bordo, mavi yerine lacivert serperek ayrı bir hava katıp, alıcılığı artırabilirsiniz. Kendinize güveniyorsanız, biraz da risk alarak açık veya farklı renkleri de deneyebilirsiniz. Seçtiğiniz renklerde uyumluluk da, yine çok önemli olup, kırmızının üzerine hoş bir mavi çalışmanızı henüz başlamadan öldürebilir. Renkler için, daha önceden de söylediğim gibi ColorSchemer programını deneyebilirsiniz. Ayrıca yine aynı şirketin ücretsiz Colorpix programının çok işinize yarayacağına emin olabilirsiniz.

FONTLAR
Bir sitenin, bir grafiğin, bir reklamın bel kemiğidir fontlar. Tasarımlarınızın kalitesini hoş bir fontun desteğiyle katlarca katlayabileceğiniz gibi, katlarca düşürmeniz -yine sizin elinizde-. Çok farklı işler olmadıkça, çalışmalarınızda genellikle Sans Serif tipi fontlar kullanmak size artı puan getirecektir. Ücretsiz fontlar için önerilebilecek en iyi site dafont.com olup, myfonts.com/whatthefont üzerinden adını bilmediğiniz fontların çoğunun adını öğrenmeniz mümkün.
Fontlarda gölge ve diğer efektlerin ayrı bir önemi vardır. Gölgelerin boyutlarını aşırıya kaçırmamak her zaman daha iyi olduğu gibi, farklı efektler uygulamak da kaliteyi artıran etkenlerdendir.

FOTOĞRAFLAR
Fotoğraflarla çalışmalarınıza farklı bir hava katabilirsiniz. En iyi stok fotoğraf sitesi olarak SXC‘i önerebilirim. Ayrıca Flickr’da çok hoş fotoğraflara rastlayabilir, bunları kendinize örnek alabilirsiniz. Flickr’da arama yaptıktan sonra, sol üstte bulunan Most interesting’i seçerek, en beğenilen fotoğrafları görebilir, seçeceğiniz fotoğrafın kalitesini artırabilirsiniz.

Son olarak, unutmayın ki sadelik ve ayrıntılar her çalışmaya kalite katacaktır. Ayrıntılara çok dikkat edin, her bulduğunuz efekti grafiğiklerinize uygulamayın.

Bu ve bunun gibi kriterleri uygulayarak, sizin yaptığınız grafiği bir ziyaretçi gördüğü zaman ‘aaa!, bak bunu Osman yapmış’ demesini sağlabilirsiniz. Bu kriterlerden her biri sizin imzanızın bir parçası olacak.

orijinal yazı:muhammetsevim

Class ve Id farkları ** CSS **

class ne ki? id ne ki?Anahtar Kelimeler : css, id, class

CSS ile ilgili en sık sorulan sorulardan birisi class ve id arasındaki farkın ne olduğudur. İtiraf etmek gerekirse, CSS öğrenmeye başladıktan bir sene sonra bile, id kullanımından uzak duruyordum -ki herhangi bir şeyi öğrenirken, eğer hazır değilseniz kafanızı karıştırabilecek konuları atlayın-.

ID

Bir HTML dosyasının içeriğinde, sadece bir öğeye verilebilecek bir değerdir id, basite indirgersek, id'ler HTML'de kullandığımız öğenin, nüfus kağıdıdır. Nasıl bizim nüfus kağıdımız sadece bize özelse, ve başkasıyla paylaşamazsak, id'ler de öğeye özeldir ve aynı sayfa içerisinde başka bir öğeyle id'sini paylaşmaz.

Eğer bir proje geliştiriyorsak, verdiğimiz id'yi aynı sayfada birden fazla olmamak koşuluyla istediğimiz kadar kullanabiliriz. Dolayısıyla id'ler site tasarımdan, kodlama aşamasına geçtiğinde, dikkatli kullanılması gereken kimliklendirmelerdir.

ID tamam, peki Class ne?

Demin ki örneğimizden devam edersek, class'lar id'lerden farklı olarak bir sayfa içerisinde istediğimiz kadar kullanabileceğimiz değerlerdir. Id'yi nüfus kağıdına benzetmiştik ya, class'lar bu durumda aynı oda içerisindeki "bütün erkekler", "bütün kızlar", "bütün gözlüklüler", "bütün sarışın, mavi gözlü, şahane hatunlar" kümelerine benzetebiliriz.

ID tamam, Class'ı da anladım.

Ama benim başka sorum var diyorsanız, bu bölümün sadece sizlerden gelen soruları açıklamak için hazırlandığını hatırlatıyorum. Oyun parkımız olan, WebStandartları.com forumuna kayıt olup, Soru&Cevap köşesine sorularınızı yollayabilirsiniz.


Alıntı yapılan yer: cemshid

Renkler ve uyumu


Renk Uyumu ( Armoni )
Renkli bir uygulamada aynı büyüklük ve aynı renklilikte ( Chroma ) iki karşıt renk yan yana geldiklerinde, biçimde rahatsız edici bir ortam oluşur. Çünkü her ikisi de sürekli olarak bir egemenlik savaşında bulunurlar. Bu nedenle doğada olduğu gibi, bunlardan birisini pasif, ötekini aktif duruma getirmek, iki karşıtı bir aracı ile bağlamak gerekir.

Renk ilişkilerindeki bu özellikler değişik dengeleme sorunlarını, dolayısıyla renk uyumu kurallarını oluşturmuştur. Genel olarak üç renk kullanıldığı zaman, birincisi renklilik bakımından çok güçlü ( katıksız ), ikincisi hafiflemiş, üçüncüsü ise ancak fark edilebilecek derecede olmaktadır. Burada böylece ( Üç Güç Hiyerarşisi ) gerçekleşmiştir.

Birincisi yani renklilik yönünden en güçlü olan çok küçük, ikincisi orta, renklilik yönünden çok hafif olan ise çok büyük olarak uygulanmaktadır. Böylece denge, büyük parçalardaki zayıf renklerin küçük parçalardaki zayıf renklerin küçük parçalarındaki renklilik yönünden güçlü renkleri tartıya almasıyla sağlanmış olmaktadır. Öyleyse renkli uygulamalarda, bir renk büyük bir alanı kaplama durumundadır. Öteki renkler birbirlerinin ve bu birinci rengin değerini artırmak suretiyle aralarında ilişki kuracaklardır.

Büyük alan kaplayan rengin, renklilik yönünden öteki küçük alanı kaplayanlardan güçsüz olması gerektiğini söylemiştik. Bir rengin renklilik gücü, içerisine az ya da çok başka bir rengin karıştırılmasıyla sağlanır. Örneğin mavi ile sarıyı karıştırdığımızda yeşil renk elde ederiz.

Bu durumdaki yeşilin renklilik gücü, yabancı renk karıştırılmamış yeşilden daha zayıftır. Aynı kural öteki renkler için de geçerlidir. Elde edilmiş denge çok az başka bir renk daha eklediğimizde, renklilik gücü çok azalmış bir renk elde ederiz. Böyle bir renk ne kadar büyük olursa olsun, katıksız, son derece küçük bir karşıt renkle dengelenebilir.

Renkte bu üç güç hiyerarşisinden yola çıkılarak sağlanan denge, renk uyumunun temel koşuludur. İkinci koşul, rengin soğuk - sıcak değerlerinden kaynaklanır. Sıcak - soğuk ilişkilerini gerçekleştirirken tutulan yolda belirgin bir kişilik sağlanması gerekir.

Genel olarak üç temel yöntem izlenmektedir. Bunlara kontrast armoni, ton üzerine ton armoni ve nüanslı armoni de denir.

Wednesday, May 17, 2006

birinci bölüm

Can i see your passport. -> Pasaportunuzu görebilir miyim?
Here is my passport -> İşte pasaportum.
Ticket please, visa please.....

How long will you be in here? -> Burada ne kadar kalacaksınız?
How long will you stay in here? -> Burada ne kadar kalacaksınız?
How long is your stay?
I'm here for two days -> 2 Gün için buradayım.

What is the purpose of your visit? -> I'm here on bussines. (resmi)
Why are you here? -> We are here on holiday. (gayrı resmi)
What are you doing here -> Burada ne yapıyorsunuz .(gayrı resmi)

Where are you staying while you are here? -> I'm staying at the Ritz Hotel.
Where are you staying ? -> A Hotel.
Where are you staying ? -> I'm staying at A Hotel. (Otelin adını bilmiyoruz)
Where are you staying ? -> I'm staying at THE Ritz Hotel. (Otelin adını biliyoruz)

Do you have anything to the clear? -> Gümrüğe tabii bir şeyiniz var mı?
Would you mind opening your cases? -> valizlerinizi açabilirmisiniz?
Would you open them please?
These are my bags. (yakında ise "bunlar")
Those ara my bags. (uzakta ise "şunlar")
Which is your luggage?->hangisi sizin bagajınız?

Have you got paper for this? -> bunun için bir belgen var mı?
We've got that? -> Biz de şu var(belgeyi göstererek).

Does this bus go to the center? -> You need the number 42 bus.
Where is the bus stop? -> It's a long here on th right.(a long here = buradan giderken)

ticket office = biletçi, gişe

When is the next bus to the airport? -> Hava alanına bir sonraki otobüs ne zaman?
When is the last train into town? -> Şehrin içine giden son tren ne zaman?

Which bus do I take for the university? -> Universiteye gitmek icin hangi otobuse binmeliyim?
Which train do I take for the university? -> Universiteye gitmek icin hangi trene binmeliyim.
Which road do I take for the university? -> Hangi yol üniversiteye gider?

Does this bus go to the center? -> Bu otobüs şehir merkezine gider mi?
Does the number 47 go to the center? -> 47 numara şehir merkezine gider mi?