You are on page 1of 15

Web Programcl

<<

Etkileimli frame almalar


Gnmz web sitelerindesayfalar aras gezintinin en nemli unsurlarndan biri olan framelere etkileim katabilir, Javascript yardmyla milyonlarca benzerinden kolayca ayrlan sayfalar tasarlayabilirsiniz.
yn pencere ierisinde birden fazla HTML sayfasn gsterebilmenin en kolay yolu frame kullanmak olduundan web tasarmc ve gelitiriciler tarafndan ska bavurulan zmlerden biridir. Olduka kompleks kod yazmay gerektiren baz ilevleri frameset kullanarak ok daha basit bir ekilde zebilmemiz mmkn olmaktadr. Ancak web ziyaretileri asndan framelerle ilgili tecrbeler her zaman olumlu olmayabilir. Tm dier HTML elementleri gibi frameler de istekleriniz dorultusunda JavaScript ile kontrol edilebilir. Zaten nemli bir ilevi yerine getiren frameler JavaScript sayesinde daha dinamik, etkileimli ve de kullanl bir hal alabilirler. Frameler aras etkileimle neler yapmak istediiniz sizin hayal gcnze ve tecrbenize kalm. Bize den bu etkileimin nasl salandn gstermek elbette. ncelikle ie en temel frameset yapsn oluturmakla balayalm. Bu yap bu ayki almalarmzn tabann oluturacak. En temel frameset yapsn oluturmak iin adet farkl HTML sayfas yazmamz gerekir. Birincisi her iki sayfay da ekranda gste-

recek frameseti kullanacak olan sayfa (frame.html), dier ikisi ise ekrann solunda ve sanda iki ayr frame olarak grnecek olan iki ayr HTML sayfas (sol.html ve sag.html).
frame.html <html> <head> <title>frame</title> </head> <frameset cols="170,*"> <frame src="sol.html" name="soldaki"> <frame src="sag.html" name="sagdaki"> </frameset> <noframes> <body bgcolor="#ffffff"> </body> </noframes> </html>

sol.html <html> <head> <title>sol</title> </head> <body bgcolor="#ac0000"> <h2>Soldaki sayfa</h2>

</body> </html>

sag.html <html>

En temel frameset yaps

<head> <title>sag</title>

166 CHIP Workshop > >

>>
</head> <body bgcolor="#cccccc"> <h2>Sadaki sayfa</h2> </body> </html>

Web Programcl

nelerine ulaabilmemiz ve bu nesnelerin zelliklerini deitirebilmemizdir. Bu bakmdan DOM tablosunu doru kullanmak hayati nem tar.

Framedeki bir sayfadan dierini kontrol edin


imdi gelelim bir frame iinde bir sayfadan bir dierine nasl ulaabileceimizi renmeye. Bunun iin sayfadan oluan yukardaki ilk frame rneini kullanacaz. imdi sayfalarnzn kodlarn aynen aada grld gibi gncelleyip kaydedin.

sag.html <html> <head> <title>sag</title> </head> <body bgcolor="#cccccc"> <h2>Sadaki sayfa</h2> <form name="formum"> <input name="tepki"> </form> </body> </html>

sol.html <html>

DOM Tablosu

<head> <title>sol</title> <script language="javascript">

Eer bir taraycnn DOM (Document Object Model) tablosuna bakacak olursak frame objesinin hiyerarik olarak frame iinde gsterilen HTML sayfalarndan daha st pozisyonda olduunu grrz. Zira bir frameset, altnda birden fazla HTML sayfasn barndrabilir. JavaScript ile alrken ayn frameset iindeki farkl frameleri ifade etmek iin frameset ierisinde tanmlandklar referans isimleri kullanlr. Yani rneimizde soldaki ve sagdaki diye adlandrlan isimler. Zira frameler iinde grnecek sayfalarn isimleri deiebilir ama framelerin kendine ait isimleri olmaldr. JavaScript asndan dnecek olursanz, gznzde canlanmas gereken sahne u ekilde olmaldr: Frameset (ya da framesetin bulunduu sayfa) st obje iken framelerde gsterilen sayfalar alt obje olarak kabul edilir. st obje top ya da parent anahtar kelimeleri ile tanmlanrken alt objeler child ya da frameset iinde alm olduklar referans isimleri ile tannr. Yani frameset rneimizdeki st obje iki adet alt objeye sahip, soldaki ve sagdaki. Burada bizim iin en nemli nokta, DOM model tablosunu kullanarak bir frameset iinde bulunan sayfalara ve ilgili sayfalarn nes< CHIP Workshop 167 <

function tepkiVer() { parent.sagdaki.document.formum.tepki.value="Merhaba!"; } </script> </head> <body bgcolor="#ac0000"> <h2>Soldaki sayfa</h2> <form> <input type="button" value="Tepki ver!" onClick="tepkiVer()"> </form> </body> </html>

Web Programcl

<<

sayfalara aktarabilmek iin framesette bir dier framede tanml deikende saklayabilirsiniz. imdiki rneimiz framesetteki bir sayfada tanmlanm JavaScript fonksiyonunu arp kullanacak. Grelim.
frame.html <html> <head> <title>frame</title> </head> <frameset cols="170,*"> <frame src="sol.html" name="soldaki"> <frame src="sag.html" name="sagdaki"> </frameset> <noframes> <body bgcolor="#ffffff"> </body> </noframes> </html>

Sol framedeki dmeye basnca sa framede bir mesaj grnecek


sol.html

imdi frame.html sayfasn web taraycnzda an. Sol framedeki dmeye tklayn. Sa framedeki sayfada bulunan form girdi alannda bir mesajla karlaacaksnz. Bu u anlama geliyor: JavaScript kullanarak frame iindeki bir sayfadan bir dierinin zelliklerini kontrol edebiliyorsunuz! imdi kodumuzu biraz inceleyelim. frame.html sayfasnda dikkat edilecek tek nokta frameset ierisinde kullanlan framelerin referans isimleri (soldaki ve sagdaki). Asl ilem ise sol.html sayfasndaki kodda gerekleiyor. Kullanc dmeye bast anda JavaScript tepkiVer() fonksiyonunu aryor. Bu fonksiyonun ierdii koda bir bakalm imdi.
parent.sagdaki.document.formum.tepki.value="Merhaba!";

<html> <head> <title>sol</title> <script language="javascript"> function tepkiVer() { parent.sagdaki.document.formum.tepki.value="Merhaba!"; } </script> </head> <body bgcolor="#ac0000"> <h2>Soldaki sayfa</h2> </body> </html>

Satrnn yapt i sa framedeki form girdi alannn iinde grnecek bilgiyi Merhaba! metni olarak belirlemek. Peki ama bu girdi alann JavaScripte nasl ifade ediyoruz? Cevap: Eitliin sol tarafndaki ifade ile. Burada parent ile nce st obje olan frameseti, sagdaki ile de bu framesete ait olan sadaki framei ifade ediyoruz. Document bu framedeki sayfay, formum sayfadaki formu, tepki ise formdaki girdi alann ifade ediyor. Value ise ifade edilen objenin ilgili deerini belirten zellik. Elbette sayfanza farkl elemanlar ekleyip bu elemanlarn zelliklerini deitirmeyi deneyebilirsiniz.

sag.html <html> <head> <title>sag</title> </head> <body bgcolor="#cccccc">

Frameleraras JavaScript ifadelerinin ortaklaa kullanm


Baz durumlarda bir baka sayfada yazl olan (fonksiyon veya deiken gibi) script kodundan faydalanmak ya da baka bir sayfada tanmlanm bir fonksiyonu arp kullanmak isteyebiliriz. Mesela bir framede tanml bir fonksiyonu her seferinde kopyalamak yerine orijinalinden arabilirsiniz. Ya da bir framede oluan bilgiyi dier

168 CHIP Workshop > >

>>

Web Programcl

rnek iin herhangi basit bir frameset kullanabilirsiniz, mesela bu blmdeki ilk rnek framesetmizi kullanalm yine. Sadece sag.html sayfasnn kodunu aadaki gibi deitirin.
sag.html <html> <head> <title>sag</title> <script language="JavaScript"> if (top.location!= self.location){

sol framede tanmlanm bir JavaScript fonksiyonunu sa frame ierisinden ararak kullanyoruz.

<h2>Sadaki sayfa</h2> <form name="formum"> <input name="tepki"><br><br> <input type="button" value="Buradan da tepki ver!" onClick="parent.soldaki.tepkiVer()"> </form> </body> </html>

frame.html sayfasn altrdnzda, sadaki sayfadaki dmeye basnca yine ayn sayfada mesajn grndn gzlemleyeceksiniz. lk bakta ok nemli bir ilem deilmi gibi dnebilirsiniz. Ama burada gerekleen asl olay mesaj gsteren scriptin soldaki sayfada olduu ve sadaki sayfann bu scripte ait tepkiVer() fonksiyonunu arp kullanabilmesi! sag.html sayfasnn koduna bakacak olursanz JavaScript kodu olmadn greceksiniz! arma taktiimiz aa yukar ayn temele dayanyor. DOM modelini kullanarak ilgili sayfaya oradan da ilgili fonksiyona ulamak burada da iin temeli.
parent.soldaki.tepkiVer();

framedeki sag.html sayfas iindeki JavaScript kodu tarayc tarafndan okunduu anda sag.html sayfas frame.html sayfasnn yerini alr.

top.location=self.location } </script> </head> <body bgcolor="#aaaaaa"> <h2>Frameden kurtarlacak sayfa</h2>

Web sayfanz servis sunucu frameinden JavaScript ile kurtarabilirsiniz!


Baz durumlarda sayfanz harici bir aplikasyon tarafndan her zaman bir frameset iinde grnmeye zorlanabilir. Oysa JavaScript yardmyla sayfalarnz bedava servis veren sunucularn banner ve reklamlarn ieren framelerinden kurtarabilirsiniz.
< CHIP Workshop 169 <
</body> </html>

frame.html sayfanz atnzda muhtemelen ilk frame sayfasn

Web Programcl

<<

dahi grmeden sa sayfasn karnzda greceksiniz!


if (top.location!= self.location)

<html> <head> <title>sag</title> <script language="JavaScript"> if (top.location == self.location){ top.location.href = "index.html?sag.html" } </script> </head> <body bgcolor="#aaaaaa"> <h2>Frame'de grnmeye zorlanacak ierik sayfalarnzdan herhangi biri</h2>

satrlarndaki art ile JavaScript kodumuzun bulunduu sayfamzn yerinin tarayc penceresindeki en st frameset objesinin yeri ile ayn olup olmadn sorguluyoruz. Eer ayn deilse
top.location = self.location

satr ile sayfamz, en st frame objesinin yerine yerletiriyoruz.

Sayfalarnzn daima frameset iinde grnmesini garanti altna alabilirsiniz


Bir web sitesi yaptnz ve mennz bir framee, ierik sayfalarnz ise baka bir framee yerletirdiniz. Byk kolaylk. Ama arama motorlaryla ierik sayfalarnzdan birine ulaan bir ziyareti ekranda sadece ierik sayfanz gryor; ancak mennz gremiyor. Oysa siz sayfa tasarmnz frameset ile grnecek ekilde yaptnz. Bu gibi durumlarda tm ierik sayfalarnz her zaman ait olduu frameset iinde almaya zorlayabilirsiniz. Aadaki rnei inceleyin. Sitemizin framesetini oluturan ilk sayfa.
index.html <html> <head> <title>anasayfa</title> </head> <script language="JavaScript"> if (location.search) { var sayfa = location.search.substring(1) } else { var sayfa = "home.html"; } var blok = ""; blok += '<frameset cols="130,*">'; blok += blok += blok += '<frame src="sol.html">'; '<frame src="' + sayfa + '">'; '</frameset>';

</body> </html>

Ayrca ierii nemli olmayan iki adet daha sayfamz olmal. Menmz ieren sol.html ile her zaman ierik frameinde ilk olarak grnecek home.html. Evvela index.html sayfanz an. Greceiniz sitenizin olaan hali olacaktr. Daha sonra herhangi bir ierik sayfamz temsil eden sag.html isimli sayfanz amaya teebbs edin. Sayfanzn olmas gerektii gibi framesetinizde aldn greceksiniz.

imdi kodlar inceleyelim. Sag.html sayfasn atnzda tarayc


<script language="JavaScript"> if (top.location == self.location){ top.location.href = "index.html?sag.html" } </script>

document.write(blok); </script> </html>

kodlarn ileme alyor.


if (top.location == self.location)

satrndaki art bulunduunuz sayfa bir frameset iinde deilse salanm oluyor. Bu durumda
top.location.href = "index.html?sag.html"

Her zaman frameset iinde grnmesi gereken herhangi bir ierik sayfamz.
sag.html

satr ekrana index.html?sag.html url adresli dosyay yklyor. Bu url sayesinde index.html sayfasn yklemekle kalmayp geldiimiz sayfann ismi olan sag.html bilgisini de parametre olarak bir sonraki sayfaya tayoruz. Bu bilgi birazdan index.html sayfasndaki
170 CHIP Workshop > >

>>

Web Programcl

var sayfa = "home.html"; }

Satrlarnda nce url adres ubuunda bir parametre olup olmadn sorguluyor. Eer varsa bu parametre deerini ierik frameinde gsterilecek sayfa ad olarak kullanmak zere sayfa isimli deikene kaydediyor. Eer yoksa olaan deer olarak home.html sayfasnn framede ilk sayfa olarak grnmesini salyor (Dorudan olarak anasayfa.html sayfasn atnzda bu yzden home sayfasn gryorsunuz).
var blok = ""; blok += '<frameset cols="130,*">'; blok += blok += '<frame src="sol.html">'; '<frame src="' + sayfa + '">';

blok += '</frameset>';

satrlar elde edilen sayfa deiken deerine gre sayfaya yazdrlacak frameset kurgusunu blok isimli bir deikende toplayp
document.write(blok);

sayfaya yazdryor. Sonu olarak bu kurguya gre sitenizde frame iinde almasn istediiniz sayfalarn bana script tarafndan alglanacak ve framesette ierik frameinde bu sayfay grntleyecek.
ndex.html sayfasndaki scriptimiz if (location.search) { var sayfa = location.search.substring(1) } else { </script> <script language="JavaScript"> if (top.location == self.location){ top.location.href = "index.html?sag.html" }

blounu eklemeniz yeterli. Tabii sayfanzn adn dzeltmeyi unutmayn. Eer bu ekilde ok sayda sayfanz var ve de her birinin adn yazmak zor geliyorsa, sabit olarak
<script language="JavaScript"> if (top.location == self.location){ top.location.href = "index.html?" + self.location.pathname; } </script>

blounu yazmay deneyebilirsiniz. Not:: Bu ayki atlyemizde yer alan rneklerin kaynak kodlarn CDdeki StudioWeb+ blmnde bulabilirsiniz. Numan Pekgz numanpekgoz@chip.com.tr
< CHIP Workshop 171 <

Linux

<<

Her ofise ayr bir Office


Bu yazmzda Linux ortam zerinde elence ve sohbet (ICQ, MSN vb.) servislerini inceleyeceiz.

ir sre ncesine kadar Linux kullanclarnn ektikleri en byk zorluk, eski sistemlerinde kullandklar baz uygulamalarn elerinin bulunmamas idi. Oysa u sralar baktmzda, dier iletim sistemleri iin tek bir yazlm pazara hakimken, Linux iin de her i iin bir, hatta birden fazla popler yazlm bulunabilir oldu. Linux ortamnda en ok sknts ekilen konulardan biri elence ve sohbet servisleridir desek yanl olmayacaktr. Bunun nedeni, bu servisleri salayanlarn Linux ortamndaki kullanc tabann yeterli grmemeleri olduu sanlmakla beraber, salayclarn bazlarnn Linux iletim sistemini kendi rnleri ile rakip olarak deerlendirmelerinde de yatmaktadr. Bu servisleri salayanlarn, yukarda anlattmz eitli nedenlerden dolay Linux ortam iin bir istemci yazlm salamamalarndan dolay, bamsz yazlm gelitiriciler tarafndan bu protokoller tersten mhendislik (reverse engineering) yaplarak uygun yazlmlar gelitirmilerdir. ncelikle, bu yazlmlarn avantajlarn ve dezavantajlarn inceleyelim. Avantajlar: 1 Bu yazlmlar, bamsz yazlm gelitiriciler tarafndan gelitirildiklerinden, kullanc tarafndan grsel olarak rahatsz edici, istenmeyen unsurlar (reklam vb.) bulunmamaktadr. 2 Finansal bir ama gtmediinden, dola-

ysyla reklam ve bunun gibi sistemi devaml megul eden paralardan yoksun olduundan performans asndan daha tatmin edici olabilirler. 3 Bu yazlmlar genelde birden fazla protokol desteklemektedirler. Tek bir program aarak, birden fazla balant kurulabilir, bylece programlar aras gidip gelmekten kurtulabilirsiniz. 4 Baz durumlarda bu yazlmlar birden fazla ortam iin yazlm olabilir. Bylece

hem Windows ortamnda, hem Linux ortamnda ayn programn kullanlabilmesi mmkn olmaktadr. Dezavantajlar: 1 Yazlm gelitiren kii bu projesinden vazgeebilir (Popler ve zgr yazlmlarda, genelde bu olay takiben bir baka programc devralmaktadr). 2 Sohbet servisinin salaycs protokolde nceden uyarmakszn bir deiiklik yaparak bu programlar almaz hale getirebilir

Resim 1

31 CHIP Workshop > >

>>

Linux

(Ksa srede gncellemesi kmaktadr). 3 Tersten mhendislik sreci henz protokoln tm iin tamamlanmam olabilir (rnein program balanmay, mesaj gndermeyi destekliyor ama sesli mesaj gndermeyi desteklemiyor olabilir). Her ne kadar Linux ortam zerinde bu konuda birok yazlm bulunsa da (licq, gaim, kmess gibi), zerinde duracamz yazlm, en ok kullanlan drt protokol de destekledii (ICQ, MSN, Yahoo, AIM) ve KDE ile entegre olarak alt iin Kopete olacak. Kopete (http://kopete.sf.net) Kopete, KDE datm ile beraber sunulmaya balanm bir annda mesajlama (instant messaging) yazlmdr. Eklenti (plugin)

destei olduundan dolay, her trl protokol kullanabilir. Menmzde hali hazrda kurulu bulunduu iin problemsiz bir biimde Kopeteyi bulup altrabilirsiniz. Karmza kan pencere ile ilk olarak bizden hesap tanmlamamz istenecektir (Resim 1). Burada Yeni tuuna basarak yeni bir hesap ekleyebiliriz. rneimizde bir ICQ hesab, bir de MSN hesab ekleyeceiz. lk nce ICQ hesabmz ekleyeResim 2 lim. (Resim 2) Kopete'de her protokoln kendine ait hesap tanm ekranlar vardr. Burada ICQ protokol iin olan hesap tanm ekrann gryoruz (Resim 3). ICQ numaramz ve tercihen (kaydedilmesini istiyorsak) ifremizi de girelim. ifremizi kaydetmezsek, yazlm her balantda bize tekrar tekrar soracaktr. Bu yntem daha gvenli olsa da, bazen can sknts yaratabilir. Kopete'nin en ho zelliklerinden biri ise, tantlan her hesap iin bir renk seimi yapmamza izin vermesi. ki ICQ, iki MSN adresi olan bir kii, Kopete'ye drdn de ekleyip hepsine deiik renkler atayarak bu hesaplar birbirinden kolayca ayrabilir. Bu zelliin kullanlabilecei belli bal noktalar hobi ile ilgili olabilecei gibi, biri i biri kiisel olan hesaplar iin de ok byk pratiklik salamaktadr. rneimizde, eklediimiz ilk ICQ hesabna mavi renk atadk. (Resim 4) Ayn ekilde, bir de MSN hesab ekleyelim. Bunun iin ilk ekrana dnerek (Resim 1) tekrar Yeni tuuna basalm, bu sefer protokol olarak MSN'i seelim. Hesap bilgisi alanlarn doldurduktan sonra Kopete kullanma hazr demektir. Hesap ekleme ilemleri bittiinde tekrar yaplandrma ekranna dnm olacaz. (Resim 5) Burada grld gibi ICQ hesabmz mavi renkte, MSN hesabmz da pembe renkte tanmladk. ki ayn tr hesap tanmladResim 3 mzda bu renk ayrm ok da-

Resim 4

ha ie yarar hale gelmekte ve hesaplar kartrp yanl hesaptan yanl kiiler ile mesajlama durumlarna engel olmakta. Bu menden Tamam tuuna tklayarak ayrldmzda ise Kopete'nin balanmaya hazr ama bo ekranna (Resim 6) dnm oluyoruz. Bu ekranda dikkat etmemiz gereken baz noktalar mevcut.

1 Kopete aldnda zamanda durum ubuu denilen sa alttaki ksma kk bir simgesini yerletirir. Kopete kapatldnda kendini buraya minimize edecektir. Kopete'den tamamen kmak iin Dosya mensnden k seeneini iaretlemeliyiz. lk altan sonraki allarda da sa alta yerleip simge durumunda kaldndan, Kopete altnda almad hissini verebilir. 2 Tek tu ile tm hesaplarmza balanabilir ya da teker teker hangi hesaplarmza balanmak istiyorsak onlar seebiliriz. Kopete penceresinin sa altnda henz silik duran ICQ ve MSN simgelerine sa tklarsak (Resim 7 ve 8) kan menlerden o hesap iin bulunacamz durumu (Bal, megul, vb.) seebiliriz. Hesaplardan birine ya da bir kana balandmzda (eer varolan bir hesabmz tanttysak) balant listemiz sunucudan yklenecek ve ekrana gelecektir. Burada, bir balantnn zerine ift tkladmzda sohbete balayabilir, sa tkladmzda ise bir men aracl ile dier seeneklere ulaabiliriz. (Resim 9) Sohbet ekran, bu programlarda alagel-

< CHIP Workshop 32 <

Linux

<<

sim 10). Ayrca ayn ekranda bulunan Grnm sekmesinde de, Kopete'yi kiiletirmek iin birok ayar bulunmaktadr. Sohbet penceresi (Resim 11) benzeri yazlmlara nazaran ok fazla zellik barndrmakta ve bu zellikler eklentilerle (plugin) daha da gelitirilebilmektedir. rnein Resim 5 Ayarlar / Eklentiler (Plugin) mensnden ulaacamz ekran zerinde (Resim 12), standart kurulum ile gelen eklentilerden bazlarn inceleyelim. Buradaki eklentileri, yanndaki kutucuklara onay iareti koyarak kolayca etkinletirebiliriz. lk bakta gzmze arpan baz zellikler:

Resim 8

Resim 6

diimiz ekilde ikiye blnm bir ekran olmasna ramen, Ayarlar / Kopete'yi Yaplandr / Davran / Sohbet / Arayz zellikleri ksmndan tm ayrntlar ayarlanabilir (Re-

1 Auto Replace: Devaml yazdmz szleri ksaltmamza yarar. rnein metin ksmna mbn, yedek ksmna merhaba, bugn naslsn? yazp Ekle tuuna basarsak, artk sohbet srasnda mbn yazdmzda bu Kopete tarafndan otomatik olarak dntrlecektir. 2 Cryptography: Eer tanml bir PGP anahtarmz var ise, Kopete'yi kullanarak bu anahtar zerinden ifreli iletiim yapabiliriz (Tabii ki kar tarafta da bizim ak (public) anahtarmzn bulunmas gerekmektedir). 3 Highlight: Belli bir filtre tanmladmzda, o filtreye uyan mesajlar geldiinde Kopete'nin bizi uyarmasn salayabiliriz. 4 Kopetex: LaTeX dokman sistemi formatnda mesajlama salar. Bylece bilim-

sel formlleri mesajlarda kullanabiliriz. 5 Metin Efekti: Bu ekrandan, mesajlarmz istediimiz ekilde metin efekti vererek gnderebiliriz. 6 evirmen: Desteklenen dillerde eviri yapmaya yarar. Altavista'nin Babelfish ya da Google'n eviri hizmetini kullanabilir. Bu eklentinin en byk zellii, eviriyi annda yapmas. Diyelim ki bir Alman ile konuuyoruz ama Almanca bilmiyoruz ve bu eklentiyi aktif hale getirdik. Biz ngilizce yazdmzda, mesaj ona otomatik olarak Almancaya evrilerek gidecektir. Onun yazd Almanca mesajlar da bize otomatik olarak ngilizceye evrilerek gelecektir. Kopete, dier tm KDE uygulamalarnn yolunu izleyerek hem Trke, hem de kulla-

Resim 7

Resim 9

33 CHIP Workshop > >

Resim 10

nm rahat ve kolay bir arabirim salamtr. KDE'ye deinmiken, Linux ortamnda kullanlan en yaygn, kolay ve ho grnml masast ortam olan KDE'nin yeni srm olan 3.4'n yakn bir zamanda kmas bekleniyor. u sralarda Beta 2 durumunda olan KDE 3.4, birok enteresan ve yeni zellik getiriyor. Bu yeniliklere ve yeniliklerin getirildii yazlmlara ksacak bir gz atalm:

1 KDM: KDE'nin kullanc oturumu kontrol yazlm olan KDM, artk ayn anda birden fazla kullanc ile oturum amaya izin veriyor. Daha nceki srmlerde de bulunmasna ramen kulland yntem yeniden tanmlanm olan KDM, bylece programlar kapatmadan baka bir kullanc adyla KDE masast ortam amay salyor. 2 KPDF: KDE'nin PDF yazlm olan KPDF'in, Adobe Reader'dan dahi daha gzel ve kullanl hale getirildiini sylesek, yan-

l olmayacaktr. Yaz arama, seilen blgeleri yaz ya da resim olarak kopyalama gibi zelliklerin de kazandrld KPDF, performans asndan da gayet tatmin edici bir dzeye getirilmi. PDF dosyalarn slayt gsterisi olarak sunmaya yarayan bir de slide show zellii eklenmi. 3 Kopete: Yeni KDE ile birlikte gelecek olan yeni Kopete de yenilikler ieriyor. (Bu Kopete'yi yeni KDE'yi yklemeden de http://kopete.sf.net/ adresinden indirebilirsiniz) Kopete'yi, zellikle protokol destekleri ok ilerlemi ve dosya aktarmlar daha ilevsel hale gelmi ekilde greceiz. Grsel olarak da daha tatminkar olan Kopete, Linux ortamnda rakipsiz sohbet yazlm olma yolunda ilerliyor. Kopeteyi ve daha birok yararl KDE yazlmn http://www.kde-apps.org adresinden cretsiz indirebilirsiniz. Eer sisteminizi bozmadan yeni KDE'nin beta srmn denemek istiyorsak, Klax isimli Linux datmn deneyebiliriz. Klax; Slax, Knoppix, Movix gibi CD'den alan bir Linux datm olduu iin, internetten ekerek CD'ye yazdmzda ve bilgisayar bu CD'den atmzda, sabit diskimize hibir kurulum yapmadan bu yeni masast ortamn deneme frsat yakalam oluyoruz. Bu datmlar indirebileceimiz adresler:

Klax: http://ktown.kde.org /~binner/klax/ Slax: http://slax.linux-live.org/ Ayrca, konu KDE'den almken, baz KDE kullanclarnn Windows ortamlarnda da KDE kullanmak istediklerini duyuyorum. Bu isteklerini Cygwin isimli ortam Windows iletim sistemi kullanan bilgisayarlarna ykleyerek (http://www.cygwin.com) gerekletirebilirler. Cygwin, Windows ortamlarna UNIX sistem arlarn yantlama yeteneini kazandrarak Linux programlarmz Windows altnda tekrar derleyerek altrma imkann salamaktadr (Windows iin en son derlenmi KDE srm u an iin 3.1.4). Kurulum konusunda gerekli bilgileri: http://ptweber.home.comcast.net/kde/ adresinden edinmek mmkn. Gelecek iki yazmz, Windows uygulamalarn Linux ortamnda altrmaya ayracaz. Bu yazlmlar altrmann bir ok yolunu inceleyecek, bunlar teker teker sistemimize kuracak ve ok kullanlan Windows yazlmlarn bunlar zerinde deneyeceiz. Bu yazy, bir dahaki yazda ileyeceimiz konular aratrmak isteyenler iin bir ka adres vererek bitirmeyi uygun buldum. Bu yazlmlarn kurulumlar hakknda ekinmeden e-posta atarak sorularnz sorabilirsiniz. Win4Lin: http://www.win4lin.com/ Wine: http://www.winehq.com/ Crossover Office: http://www.codeweavers.com/ WineX: http://www.transgaming.com/ Problemsiz ve keyifli kullanmlar dileklerimle. Doa enol dogac@masterz.com

Resim 12 Resim 11

< CHIP Workshop 34 <

3D

<<

3DS Max ile fotogereki render teknikleri


En arpc boyutlu grntleri oluturmanz salayacak ipularna ve tekniklere yer verdiimiz bu sayfalarda, imdide gereki klandrma yntemlerine deiniyoruz.
boyutlu animasyon ve tasarm yazlmlaryla bir sahneyi modelleyip dokulandrma ilemlerini gerekletirdikten sonra aydnlatma ilemine geilir ve en son olarak sahnenin kts alnr. Bu ileme render denilir. Render sonrasnda aldmz sonucun kalitesi kullandmz aydnlatma tekniklerine baldr. 3ds Maxte ve dier animasyon yazlmlarnda kullanlan en temel aydnlatma ekli 3 noktadan aydnlatmadr ve bu teknik sinema ve fotoraf sektrnde de kullanlan bir tekniktir. 3 noktadan aydnlatma sahnedeki objemizi cepheden aydnlatan bir anahtar k, bir dolgu ve arka ktan oluur (ekil-2). Anahtar k bazen birka ktan oluabilir ve objemizi en yksek k deeriyle aydnla-

tan ktr. Dolgu ise objemizin anahtar k tarafndan aydnlatlamayan blmlerini aydnlatr, k deeri anahtar ktan daha kk tutulur. Arka k ise objemizi arkadan aydnlatarak obje zerinde bir kontur oluturur. Bylece sahnedeki objemiz en temel klandrma tekniiyle her ynden aydnlatlm olur (ekil-1). Fakat genellikle sahnemiz ierisinde onlarca farkl deerlerde k bulunur. Aydnlatmann kalitesi render ilemi sonrasnda alacamz sonuca dorudan yansr. Sahnemiz ierisinde ne kadar iyi bir aydnlatma kullanrsak sahnemizde o kadar gzel ve doru grnecektir. Tabii ki birok aydnlatma yntemi vardr ve bu yntemlere kendi yntemlerimizi ve aydnlatma tekniklerimizi de katabiliriz. Ba-

zen sahnemizde zel ruh durumlarn yanstmak iin ok farkl yntemler ve farkl renklerde klar kullanrz. Bu nemlidir, nk kullandmz klarn renkleri ve deerleri sahnemizin ruh halini de belirler. Burada gerek bir fotoraf veya bir sinemac gibi almamz ve scak-souk renklerin insanlar zerindeki etkilerini bilmemiz gerekir. Doay gzlemlediimizde, gnn her farkl saatinde, hatta yln her farkl mevsiminde n farkl etkiler yarattn grrz. Yaz mevsiminde gne dorudan geldiinden renkler daha parlak ve sararm olarak grnr. Fakat kn bulutlarn etkisiyle renkler parlak etkilerini yitirir. lk bakta, 3ds Maxin aydnlatma yntemi gerek dnyadaki aydnlatma ilkeleriy17 CHIP Workshop > >

>>

3D

1 2
le benzer grnr fakat 3ds maxin klar ile gerek klar ayn ilkelerle aydnlatmaz. Bunun en byk sebebi, yansyan klarn 3ds Maxin default render motorunda bulunmamas ve default render motorunun ikincil klar (bounce lights) hesaplamada kullanmamasdr. rnek olarak, gerek dnyada bir oday tek bir kla aydnlatabiliriz fakat 3ds maxte modellediimiz bir oday tek bir k kaynayla aydnlatamayz. Gerek dnyada k nesneler zerinden yansr ve ulaabildii her yere ular, halbuki Maxte k kesildii yerde durur. Maxteki bir nesnenin glgesi tam karanlktr fakat gerekte glgeler kendi ierilerinde deerlere sahiptir. Tabiatta tam karanlk glgeye rastlayamayz. Bu sebeple bazen renderlarda yapay grnen sonularla karlaabiliriz. Bu gibi sorunlar sadece Global Illumination yntemi ile render hesaplamas yapan render motorlaryla engelleyebiliriz. 3ds maxin 5.0 srmne kendi ierisine bir global illumination (genel aydnlatma) hesaplamas yapan render motoru eklenmitir ve piyasaya daha ncesinden eitli global illumination hesaplamas yapan ikinci parti render motorlar srlmtr. Global Illumination render motorlarnn en ok kullanlanlar Brazil, Final render, Vray ve Mental raydir. Global Illumination hesaplamas yapabilen render motorlar ile yansyan klardan daha fazlas da hesaplanabilir ve her geen gn zelliklerine yenileri eklenmektedir. Biz bu ay Splutterfishin Brazil render motorunu kullanacaz ve aydnlatma iin eitli alternatifler deneyeceiz. Brazilin deneme srmn www.splutterfish.com adresinden edinebilirsiniz. Daha sonra .hdr uzantl arka plan resimlerini kullanacaz. .hdr uzantl resimleri internette birok adresten temin edebilirsiniz (rnein www.debevec.org). Max 5 sonras srmler .hdr uzantl resim dosyalarn problemsiz olarak kullanabilirler fakat daha eski bir max srm kullanyorsanz, .hdr uzantl
< CHIP Workshop 18 <

4
z:112 konumuna tayalm. Target da x:0 y:-33 z:23 konumuna tayalm. Perspektif gr penceresinde klavyemizden [c] tuuna basarak kamerann grne geelim..

resimler iin hdr eklentisini www.maxplugins.deden cretsiz olarak bilgisayarnza indirebilirsiniz. .hdr uzantl resimler kendi ierilerinde klandrma bilgilerine sahiptirler ve .hdr uzantl resimlerle daha fotogereki sonulara ularz. Tm bunlarn en byk dezavantaj zamandr, nk global illumination hesaplamas yapan render motorlar render ilemini ok uzun srelerde gerekletirirler

4 Ksayol [m] ile material editoru aalm ve ilk slottaki malzemeyi planee ve krelerimize uygulayalm. 5 Sahnemiz ksz olarak render edildiinde ekil-4teki gibi gzkr. Henz aydnlatma ile ilgili hibir ilem yapmadmz iin sahnemiz maxin varsaylan klar ile aydnlatlyor. 6 imdi Rendering mensnden Rendera tklayarak Render Scene iletiim panelini aalm. Paneli aaya doru kaydrarak Current Renderers blmn geniletelim ve Production blmnn yanndaki Assign butonuna tklayalm. (ekil-5) Karmza kan seim penceresinden Brazilr.syi seelim. (ekil-6) Bylece geerli render motorumuzu Brazil ile deitirmi olduk. Eer [F9]a basarsak render ileminin daha ncekilerden farkl bir biimde gerekletiini

1 lk olarak maxi resetleyerek balayalm. Sahnemizin tam ortasnda bir plane oluturalm. Length:239, width:325. Plani xyz:0.0.0a alalm. 2 Daha sonra radius deeri 20 olan bir
sphere oluturalm. Spherei x: -42,704 y: -35,056 z: 20,867 konumuna tayalm ve front gr penceresinde x ekseninde yatay olarak iki defa kopyalayalm. Sahnemiz top grnmnde ekil-3e benzemeli.

3 imdi sahnemize bir adet target kamera ekleyelim. Kameramz x:0 y:-205 ve

3D

<<

nemizde hi k yok, fakat sahnemizi render ettiimizde Sky Lightn objelerimizi st taraftan aydnlattn grrz.(ekil-8)

9 imdi sahnemizdeki her bir kreyi farkl renklerle dokulandralm. Birbirine kontrast renkleri semeye zen gsterelim. Sahnemizi tekrar render edelim. (ekil-9) Render grntsnde krelerin kenarlarnda eitli przler olduunu gryoruz. Render Scene panelindeki Image Sampling blmn geniletip Min Samples deerini 2 ye karalm. imdi render ilemi daha uzun fakat daha temiz olarak gerekleir.
10 Gerekte birbirine yakn objelerin renk-

8
modelleme ve kapal mekan aydnlatmasnda sahnedeki nesneler birbirlerini etkileyerek daha gereki grneceklerdir.
11 Luma Server blmndeki sky lightn

6
grrz.

7 Eer tekrar Rendering mensnden Rendera tklarsak Render Scene panelinin alt ksmnda Brazil rsnin ayarlarn grrz. Bu panellerde Brazile ait parametreler bulunur ve bu parametrelerin her biri hassas ve nemlidir. 8 Render Scene panelini kaydrarak Luma Server alann bulup geniletelim. Bu blmde Brazilin global illumination ile ilgili baz ayarlar bulunur. Direct Illumination blmndeki Sky Light onay kutusunu iaretleyelim. (ekil-7) Bylece sky light denilen gkyz n etkinletirmi olduk. Bu k deerinin younluunu ve rengini ayn panelin alt ksmndan ayarlayabiliriz. Sah-

leri birbirlerini etkilerler. Fakat sahnemizdeki objelerin renkleri birbirlerine halen yansmamakta; imdi bunu gerekletirmek iin baz deiiklikler yapacaz. ncelikle Luma Server blmndeki Indirect Illumination altndan Enable onay kutusunu iaretleyelim. Sampling blmndeki Bounces deerini 2ye karalm (ekil-11). imdi sahnemizdeki objelerin renkleri birbiri zerine yansyarak daha fotogereki bir render sonucu alacaz. lk bakta bu zellik nemsiz grnebilir fakat karmak sahnelerde bu zellik kendisini gsterir. zellikle mimari

Color deerini 0,6 olarak deitirelim. Sahnemize top gr penceresinden bir adet Brazil light yerletirelim. Brazil lighta Create lights blmnn sekmesini Brazile getirerek ulaabilirsiniz. Brazil lightn targetn ortadaki krenin tam ortasna tayalm ve Brazil light da krelerin sa st tarafna tayalm.Brazil lightn glgelerini aktif hale getirelim. Sahnemiz Left panelinden ekil12deki gibi grnmeli. imdi bir deneme render alalm. Krelerin glgelerinin eitli tonlarla daldn grrz. Eer default render motorunu kullanyor olsaydk ya onlarca a ihtiyacmz olacakt yada glgelerimiz tam karanlk olacakt. Bu da istemediimiz bir sonu.

9
19 CHIP Workshop > >

>>

3D

10

11
zil Basic Material olarak deitirelim. Reflect zelliinin yanndaki siyah rengi gri olarak deitirelim. R:92 G:92 B:92 imdi Render Scene panelini tekrar aalm. Luma Server blmnden Sky Light alanndaki Use Environment Settings onay kutucuunu iaretleyelim. Bylelikle sahnemiz arka plana atadmz .hdr uzantl resimden alaca bilgilerle aydnlanacak. Eer deneme renderlar sonucunda karanlk veya fazla aydnlanm sonularla karlarsanz, bu durum .hdr uzantl resminizin ayarlarndan kaynaklanyor olabilir, Material Editorde resmin ayarlarn deitirerek doru sonuca ulaabilirsiniz. Her .hdr uzantl resim ayn deerlerle ayn sonucu veremez nk her .hdr uzantl resmin ierisindeki k deerleri farkldr.
17 imdi Luma Server blmnn Indirect Illumination alanndaki Sky Light onay kutusunu iaretleyelim. Bylece hdr uzantl res16

12 imdi sahnemizdeki Brazil light silelim

mimizin sahnemizi daha iyi etkilemesini saladk.


18 hdr ile aydnlatma yaparken hdr uzantl resmin Output ayar blmnden RGB output deerini ykselterek aydnlatma deerini ykseltebiliriz. Bu ayarlar deitirmek birbirinden farkl sonulara ulamamz salayacaktr. Sizler de sahnenizin aydnlatma ile ilgili ayarlarn deitirebilirsiniz. Brazilin dier parametrelerini de deitirerek sonular gzlemleyebilirsiniz, fakat her ayar deiiklii ve her yeni zellik render sresinin uzamasna sebep olabilir. Aydnlatma ve render, 3b animasyonun ok geni bir koludur, her farkl deneme ve pratik daha farkl sonulara gtrr, hatta her farkl k eidi sahnemizi daha farkl etkilere gtrebilir.

ve az nce drdmz Skylight Color deerini tekrar 1e ykseltelim. Material Editor aalm ve planei istediimiz ekilde dokulandralm. Rendering Environment mensnden .hdr uzantl bir resim ile bir environment map oluturalm. .hdr uzantl resimlerini maxe yklerken alan ayar penceresinde imdilik hibir deiiklik yapmayalm. Kameramz arkaplanda kullandmz resmi grmeyecek ekilde yukarya ve sahnemizin ortasna doru tayalm.
14 Material Editor aalm ve ilk kremizin dokusunu Standart butonuna tklayarak Brazil Chrome olarak deitirelim. Ortadaki kremizin dokusunu da Brazil glass olarak deitirelim. 15 En sondaki kremizin dokusunu ise Bra13

Herkese iyi almalar Nebi ykarolu nebi@yikaroglu.com

< CHIP Workshop 20 <

You might also like