You are on page 1of 15

Web Programc›l›¤›

<<
JSP ile çerez ve
oturum
uygulamalar›
JSP uygulamalar›n›zda ziyaretçinizin durum bilgisini korumak
için çerez ve oturumlardan faydalanabilirsiniz.

S
unucu-tarafl› uygulamalarda ziyaretçinin durum bilgisini ko- r›na s›¤d›r›labilecek içerik ne olabilir?” derseniz: Web uygulamalar›-
rumak önemlidir. Bu sayede bir ziyaretçiyi di¤erinden ay›ra- n›z›n ziyaretçileri tan›yabilmelerini sa¤layabilecek birkaç ufak ama
bilmek, daha önce ziyarette bulunup bulunmad›¤›n› denetle- önemli bilgi; ziyaretçinin ad›, flifresi, web sitenizi kaç›nc› defa ziya-
mek, flifre ile girdi¤i bir sayfadan sonra ayn› oturumda di¤erlerine ret etti¤inin bilgisi ya da daha önceden sitenizle ilgili tercihleri gibi.
de sorunsuzca girebilmesini sa¤lamak ya da flifresini hat›rlamak Böylece web uygulamalar› daha önce kendisini ziyaret etmifl olan
mümkün oluyor. Tüm sunucu-tarafl› teknolojilerde oldu¤u gibi bir müflteri ya da ziyaretçiyi tan›y›p, onunla ilgili bilgileri ve tercihle-
JSP’de de bu ifllevi yerine getirmek için cookie (çerez) ve session’lar- ri kullan›c›n›n bilgisayar›ndaki cookie sayesinde hat›rlayabilmekte-
dan (oturum) faydalan›l›r. dir.
Web’de en s›k kullan›lan protokol olan HTTP’nin, ziyaretçilerin Cookie: Web’de durum bilgisini koruyabilmek amac›yla web uygu-
sayfalararas› seyahatinde durum bilgisinin kayd›n› tutan bir ifllevi lamalar› taraf›ndan ziyaretçi bilgisayar›nda oluflturulan küçük me-
bulunmamaktad›r. Ziyaretçi sunucudan bir istekte bulunur, sunucu tin dosyalar›d›r.
istenen sayfay› gönderir ve ba¤lant› kapan›r. Bir baflka ziyaretçi bir Cookie’lerden faydalan›rken izlenen prosedür flu flekildedir. Bir
baflka istekte bulunur, sunucu ona da istedi¤i sayfay› gönderir, bu ziyaretçi bir web sitesine ilk olarak geldi¤inde web uygulamas› ziya-
ifllem böylece devam eder. Sunucu aç›s›ndan bir ziyaretçinin bir di- retçinin bilgisayar›na kendisi taraf›ndan oluflturulmufl bir cookie
¤erinden fark› yoktur. Bu durumda önceden sayfam›z› ziyaret etmifl olup olmad›¤›na bakar. E¤er yoksa ziyaretçiden elde edece¤i bilgiler
bir müflterinin ziyaretini tekrarlamas› an›nda bunun tan›nmas›n› ve ›fl›¤›nda yeni bir cookie oluflturur. Ziyaretçi siteden ayr›ld›¤›nda bile
alg›lanmas›n› sa¤layacak durum bilgileri için baz› ek mekanizmalar› oluflturulan bu cookie bilgisayar›nda sakl› tutulur. Ziyaretçinin ayn›
uygulamalar›m›zda oluflturmam›z gerekir. Bu
tür mekanizmalar›n oluflturulmas›nda kulla-
n›lan en temel unsurlar cookie’ler, session’lar-
d›r.

Cookie’ler (Çerezler)
Web uygulamalar›n›n ziyaretçi bilgisayarlar›
üzerinde hiçbir tasarruflar› yoktur. Yani web
üzerinde çal›flan hiçbir uygulama (buna app-
let’ler de dahil) bilgisayar›n›z›n içindeki bilgi-
leri ve dosyalar› okuyamaz, silemez ya da ye-
nilerini kaydedemez. Bu web ile ilgili protokol-
lerde oluflturulmufl bir güvenlik önlemidir. Bu
duruma bir tek cookie’ler istisna teflkil ederler.
Cookie’ler web uygulamalar› taraf›ndan ziya-
retçi bilgisayar›nda oluflturulan küçük metin
dosyalar›d›rlar. Cookie’lerin oluflturulma ifl-
lemleri ziyaretçi aç›s›ndan perde arkas›nda
gerçekleflen bir olayd›r ve bundan genellikle
kullan›c›lar haberdar olmazlar. Cookie’lerin zi-
yaretçinin güvenli¤ini tehdit etmemeleri aç›-
s›ndan büyüklükleri bir kaç byte’la s›n›rland›-
r›lm›flt›r. “Peki bu kadar küçük metin dosyala-
Bilgisayardaki Cookie dosyalar›

140• CHIP Workshop >>


>> Web Programc›l›¤›

siteye gerçeklefltirece¤i daha sonraki ziyaretlerde ise uygulama da-


ha önceden oluflturulmufl olan cookie’den hemen ziyaretçiyi alg›la- Cookie isim = new Cookie("Ad","Hakan");
yarak ona ait bilgi ve tercihleri uygulamaya yans›t›r. //isim.setMaxAge(6000);
response.addCookie(isim);
Cookie terimi nereden geliyor?
Türkçemizde kelime karfl›l›¤› “kurabiye” ya da “çerez” olan “co- Cookie soyisim = new Cookie("Soyad","Pek");
okie”ler ilk olarak Netscape firmas› taraf›ndan ortaya at›ld›. Netsca- soyisim.setMaxAge(6000);
pe için ilk cookie spesifikasyonunu oluflturan Lou Montulli, cookie te- response.addCookie(soyisim);
riminin nereden geldi¤ini flöyle aç›kl›yor: “Cookie terimi Bilgisayar bi-
limi çevrelerinde bir arac› unsur taraf›ndan korunan ve kullan›c›ya out.println("Cookie oluflturuldu.<br>");
fleffaf olmayan bilgi parçalar›n› tan›mlamakta kullan›l›r. Bu anlamda out.println("Cookie'nizi okumak için
bu tan›mlama bu küçük dosyalar›n kullan›m amac›na çok uyuyor.” ‚<a href='cookie_oku.jsp'>buraya</a> t›klay›n.");
Cookie’ler sayesinde ziyaretçinizin login bilgilerini tekrardan sor-
madan hat›rlayabilir, ziyaretçinin sitenize kaç›nc› defa u¤rad›¤›n›n %>
bilgisini kay›tl› tutabilir, web sitenizde (ders gibi) bir dizi bölümleri
s›ras›yla takip ediyorsa en son hangi bölümde kald›¤›n› hat›rlatabilir </body>
ya da sitenizin arka plan rengini daha önce nas›l istediyse ayn› flekil- </html>
de sunabilirsiniz. </html>
Gelelim cookie’lerle ilgili s›n›rlamalara. Cookie’ler sadece kendi-
sini oluflturan web uygulamalar› (daha do¤rusu ayn› alanad› [do-
main] alt›nda yer alan uygulamalar) taraf›ndan okunup silinebilir-
ler. Dolay›s› ile bir web uygulamas› bir baflka uygulama taraf›ndan
oluflturulmufl cookie bilgilerine ulaflamaz. Bunun da bir güvenlik
önlemi oldu¤unu belirtmeye gerek yok san›r›m. Ancak bedava deni-
len yaz›l›mlarla birlikte bilgisayar›n›za isteyerek ya da istemeyerek
yerlefltirdi¤iniz spyware ad› verilen casus yaz›l›mlar›n bilgisayar›n›z-
daki cookie’lere ulaflabileceklerini akl›n›zdan ç›karmay›n.
Her taray›c› cookie’leri desteklemez ve destekleyen taray›c›larda
da bilgisayar›na cookie yaz›lmas›n› istemeyen ya da yaz›lm›fl tüm
cookie’leri silmek isteyen kullan›c›lara bu imkan› tan›yan seçenekler
mevcuttur. Bu aç›dan bak›ld›¤›nda hayati ifllevlerde sadece co-
okie’lere bel ba¤layan uygulamalar üretmek pek de ak›ll›ca olmaz.
Cookie’leri sadece ek ifllevsellik katan unsurlar olarak ele almak da-
ha ak›lc› bir yaklafl›md›r. Sayfam›z›n ç›kt›s› yukar›daki gibi olacakt›r. Cookie’mizi okumak
Cookie’lerin oluflturulmas› s›ras›nda, oluflturulacak her co- için linkle verilen sayfam›z› birazdan oluflturaca¤›z.
okie’nin ömrünün belirtilmesi gerekir. Ömrü dolan cookie kullan›c›
sisteminden kendili¤inden silinir. Oluflturulma esnas›nda ömrü be-
lirtilmemifl bir cookie ise ziyaretçi taray›c›s› aç›k oldu¤u sürece yaflar
ve taray›c› kapand›¤› anda yok olur.

Bir cookie oluflturma


Cookie’leri farkl› web teknolojileriyle oluflturmak mümkündür. JSP
de bu teknolojilerden bir tanesidir. Daha önceki StudioWeb say›lar›-
m›zda JavaScript ile cookie oluflturmay› görmüfltük hat›rlarsan›z.
Afla¤›da yer alan örnek cookie’lerin JSP ile nas›l oluflturulabilece¤ini
gösterecek. Örne¤imizde ziyaretçi bilgisayar›na cookie yoluyla iki
Oluflturdu¤umuz cookie dosyam›z!
de¤er kaydedece¤iz.

cookie_yaz.jsp ‹flleyece¤imiz her bir de¤er için new anahtar kelimesi ile farkl› bir
<html> cookie nesnesi oluflturduk.
<head>
<title>Cookie yaz</title> Cookie isim = new Cookie("Ad","Hakan");
</head>
Parantezler içinde virgülle ayr›lan iki terimden ilki parametrenin
<body bgcolor="#ffffff"> ismiyken ikincisi ise cookie’de bu parametre alt›nda kaydedilen de-
¤eri belirler.
<h2>Çerez yaz</h2> Bundan sonra cookie’mizin ömrünü belirleyen sat›rlar› girmemiz
gerekir. Bunu setMaxAge() metoduyla gerçeklefltiriyoruz. Parantez-
<% ler içindeki de¤er saniye cinsindendir.

<< CHIP Workshop • 141


Web Programc›l›¤›
<<
Önce sayfam›z› çal›flt›ral›m ve biraz önce cookie yoluyla iflledi¤i-
isim.setMaxAge(6000); miz bilgilere ulaflal›m.

addCookie() metodu ile oluflturdu¤umuz de¤erleri response nesnesine


aktar›yoruz.

response.addCookie(isim);

Burada cookie’ye kaydedece¤imiz de¤erlerden ilki için bu sat›rlar


yorum tak›s›n›n arkas›na yerlefltiriliyor. Böylece ömrü belirtilen bir
cookie ile belirtilmeyen bir cookie aras›ndaki fark› birazdan daha iyi
gözlemleyebilece¤iz. Ama önce cookie’mizi okuyabilecek bir JSP
sayfas› yapmal›y›z.

Oluflturulmufl bir cookie’yi okuma


Bu sayfam›z biraz önce oluflturdu¤umuz cookie’yi okuyabilecek.
fiimdi taray›c› pencerenizi kapat›n. Ve cookie_oku.jsp sayfan›z›
cookie_oku.jsp tekrar aç›n. Karfl›laflaca¤›n›z manzara muhtemelen afla¤›daki gibi
<html> olacakt›r.
<head>
<title>Cookieler</title>
</head>
<body bgcolor="#ffffff">

<h2>Çerez oku</h2>

<%

Cookie[] cookieler = request.getCookies();

for (int i = 0; i < cookieler.length; i++) {

Cookie cookieAktif = cookieler[i];

String cookieIsmi = cookieAktif.getName();


String cookieDegeri = cookieAktif.getValue(); Bunun anlam› flu: Ömrü belirtilmeyen cookie’lerin ömürleri tara-
y›c› kapand›¤›nda sona erer. Burada ilk cookie de¤iflkenimizin ömrü
if ("Ad".equals(cookieIsmi)){ belirtilmemiflti. Dolay›s›yla oturumla beraber bu de¤er yok oldu. Ge-
out.println(cookieIsmi + " = " + cookieDegeri + lelim okuma iflleminin nas›l gerçekleflti¤ine.
‚"<br>");
} Cookie[] cookieler = request.getCookies();

if ("Soyad".equals(cookieIsmi)){ sat›r› ziyaretçi bilgisayar›nda kay›tl› ve ulafl›labilecek tüm co-


out.println(cookieIsmi + " = " p okie’leri cookieler isimli bir diziye kaydeder. Daha sonra oluflturula-
+ cookieDegeri + cak bir döngü ile dizide yer alan cookie de¤erlerine teker teker ulafl›-
‚"<br>"); yoruz.
}
} for (int i = 0; i < cookieler.length; i++) { }

%> Döngü blo¤umuzdaki

<br><br> Cookie cookieAktif = cookieler[i];

Cookie'yi silmek için <a href="cookie_sil.jsp">buraya</a> t›klay›n›z. sat›r› döngüde o an ulafl›lan cookie için bir nesne oluflturur. S›ra
aktif durumdaki cookie de¤erlerinin uygun metotlarla elde edilme-
</body> sinde.
</html>
String cookieIsmi = cookieAktif.getName();

142• CHIP Workshop >>


>> Web Programc›l›¤›

String cookieDegeri = cookieAktif.getValue(); ‚tekrar oluflturmak için ");

Daha sonra da iflledi¤imiz parametre isimlerine karfl›l›k gelen de- out.println("<a href='cookie_yaz.jsp'>buraya</a>
¤erleri yazd›rmakta. ‚t›klay›n.");

if ("Ad".equals(cookieIsmi)){ %>
out.println(cookieIsmi + " = " + cookieDegeri + "<br>");
} </body>
</html>
if ("Soyad".equals(cookieIsmi)){
out.println(cookieIsmi + " = " + cookieDegeri + "<br>"); Bir dosyada yer alan cookie de¤erlerini silmek amac›yla aynen co-
} okie yazd›r›rken yapt›¤›m›z gibi her bir de¤er için önce birer nesne
olufltural›m ve parametre de¤erlerini null (hiçlik) de¤eri ile s›f›rlaya-
Oluflturulmufl bir cookie’yi silme l›m.
S›ra geldi oluflturdu¤umuz bir cookie’yi ömrü dolmadan nas›l silece-
¤imize. Taktik basit asl›nda. Yapmam›z gereken cookie’nin ömrünü Cookie cookieSil = new Cookie("Ad", null);
belirleyen setMaxAge() metoduyla 0 de¤erini atamak.
Cookie’nin yeni ömrünü 0 olarak atayal›m
cookie_sil.jsp
<html> cookieSil.setMaxAge(0);
<head>
<title>Cookieler</title> ve addCookie() metoduyla response nesnesine gönderelim.
</head>
response.addCookie(cookieSil);
<body bgcolor="#ffffff">
<h2>Çerez sil </h2> Yukar›daki ifllemlerin yerine getirildi¤i cookie de¤eri yer ald›¤› co-
okie dosyas›ndan silinecektir. Bu ifllemler zincirini bir cookie dosya-
<% s›nda yer alan tüm cookie’ler için gerçeklefltirdi¤inizde ise cookie
dosyas›n›n, bulundu¤u klasör içerisinden yok oldu¤unu gözlemleye-
Cookie cookieSil = new Cookie("Ad", null); ceksiniz. Bu bak›mdan örne¤imizde yer alan
cookieSil.setMaxAge(0);
response.addCookie(cookieSil); //Bu ikinci blok ile birlikte tüm cookie dosyasi silinecek
Cookie cookieSil2 = new Cookie("Soyad", null);
//Bu ikinci blok ile birlikte tüm cookie dosyas› silinecek cookieSil2.setMaxAge(0);
Cookie cookieSil2 = new Cookie("Soyad", null); response.addCookie(cookieSil2);
cookieSil2.setMaxAge(0);
response.addCookie(cookieSil2); bloku ile birlikte dosyam›zdaki ikinci ve son de¤erle birlikte tüm
dosyan›n silindi¤ini görürsünüz.
out.println("Cookie'niz silindi.<br> Cookie'nizi
Session (Oturum)
Oturum bir kullan›c›n›n bir uygulamaya ba¤-
lanmas› ile bafllay›p ayr›lmas›yla sona eren sü-
rece verilen add›r. JSP’de bu süreç session nes-
nesiyle temsil edilir. Session’lar cookie’ler gibi
durum bilgisi kayd›n›n tutulmas›nda kullan›-
lan bir di¤er unsurdur. Session’lar›n temel he-
defi bir oturum süresince belli bir kullan›c›ya
özel bilgilerin uygulama içindeki farkl› sayfa-
larca paylafl›lmas›n› sa¤lamakt›r. Session nes-
nesi o kullan›c›ya ait farkl› bilgileri sunucuda
oluflturur ve bu bilgilerin kayd›n› sunucuda
tutar. Bu bilgileri o kullan›c›yla iliflkilendirmek
için de kullan›c› bilgisayar›na özel bir session
cookie’si oluflturur. Session cookie’si o kullan›-
c›ya ait olmak üzere rastgele üretilmifl bir
kimlik numaras› (SessionID) ihtiva eder. Böy-
lece kullan›c› bir sayfadan bir di¤erine gitti-
¤inde uygulama bu SessionID’den kullan›c›-
n›n bir önceki sayfadaki ile ayn› oldu¤unu an-
Cookie dosyam›z silindi.

<< CHIP Workshop • 143


Web Programc›l›¤›
<<
lar ve ona ait bilgileri kapsayan de¤iflkenlere ulafl›m sa¤lar.
Session’lar› kullanman›n cookie’lere ba¤›ml› bir yaklafl›m olma-
s›ndan dolay› cookie’ler için geçerli olan tüm k›s›tlamalar session’lar
için de aynen geçerlidir. Ancak session’lar› kullanmak cookie’lere
oranla daha kolay olup session’lar için bir ömür belirtmeniz gerek-
mez.

Oturum açma ve bir session de¤iflkeni oluflturma


Örne¤imizde amac›m›z bir kullan›c› için bir oturum açmak ve oturu-
mu süresince di¤er sayfalardan ulaflabilece¤i bir de¤iflken de¤eri
oluflturmak olacak.

oturum_baslat.jsp
<html>
<head>
<title>Oturum</title> Web uygulamam›z›n en bafl›nda yer alacak olan kodlar›m›z üret-
</head> ti¤i ID numaras› alt›nda bir oturum açm›fl oldu. Oturum için yeni bir
<body bgcolor="#ffffff"> session nesnesi oluflturman›z gerekir.

<h2>Oturum Yönetimi</h2> HttpSession oturumNesne = request.getSession(true);

<% E¤er kullan›c› için önceden aç›lm›fl bir oturum söz konusu de¤ilse
HttpSession oturumNesne = request.getSession(true); buradaki getSession() metodu null de¤erini getirecektir.
oturumNesne.putValue("KullaniciAdi", "Kemal"); Session nesnemiz di¤er oturum içinde ziyaret edilecek di¤er say-
out.println("<b>" + oturumNesne.getValue("KullaniciAdi") falardan ulafl›labilecek, kullan›c›ya özgün bir de¤iflken de¤eri ata-
‚+ "</b> adina <b>"); mak için putValue() metodunu kullan›yor. fiimdilik test etmek için
sabit bir de¤er kullanabilirsiniz. De¤iflkenimizin ad› KullaniciAdi, de-
out.println("ID" + oturumNesne.getId() + "</b> ¤eri ise “Kemal” olsun.
‚No'lu bir oturum bafllat›lm›flt›r.<br>");
oturumNesne.putValue("KullaniciAdi", "Kemal");
out.println("Oturum ilgileri için
‚<a href='oturum_oku.jsp'>buraya</a> t›klay›n›z"); Son bölümde JSP sayfam›z tan›mlanm›fl olan de¤iflken de¤erine
%> ve session numaras›na ulafl›p sayfa içerisinde gösteriyor gerçi ama
önemli olan bu de¤erlere baflka bir sayfadan ulaflabilmek elbette.
</body> Bir sonraki sayfam›z bu sayfada tan›mlanan session de¤iflkenlerine
</html> ulaflacak.

Oturum açma sayfam›z›n ekran ç›kt›s›

144 • CHIP Workshop >>


>> Web Programc›l›¤›

Session de¤iflkeni okuma out.println("<br>Oturumu sona erdirmek için


Diyelim ki afla¤›da yer verdi¤imiz örnek web uygulamam›zda yer ‚<a href='oturumu_kapat.jsp'>buraya</a> t›klay›n›z");
alan sayfalardan biri. fiimdi amac›m›z ilk sayfada belirlenen de¤iflke- %>
ne ulaflmak olacak.
</body>
oturum_oku.jsp </html>
<%@ page import="java.util.*"%>
fiimdi bir önceki örne¤imiz ile oturumu açt›¤›n›z taray›c› pencere-
<html> si içerisinden bu sayfaya ulafl›n. Baflta bir önceki sayfada atad›¤›m›z
<head> de¤er olmak üzere oturum ile ilgili bilgilere ulafl›yor olacaks›n›z.
<title>Oturum</title> Gördü¤ünüz üzere session de¤iflkenlerini elde etmek cookie de¤er-
</head> lerini elde etmekten daha kolay.
<body bgcolor="#ffffff"> Dilerseniz oturumun aç›ld›¤› an› getCreationTime() metodu ile
oturuma son eriflim an›n› ise getLastAccessedTime() metodu ile elde
<h2>Oturum Yönetimi</h2> edebilirsiniz. Bu arada java.util paketini sayfan›z›n en üstünde ça¤›r-
may› unutmay›n.
<% Oturuma ara verme süresi: E¤er kullan›c› oturum esnas›nda belli bir
HttpSession oturumNesne = request.getSession(); süre için uygulama ile hiç bir iletiflim içine girmez ya da reaksiyon
göstermezse oturum kendili¤inden sona erer. Bu sürenin ola¤an
out.println("<br>Kullanici ismi: " + de¤eri getMaxInactiveInterval() metodu ile elde edebilir ya da set-
‚oturumNesne.getValue("KullaniciAdi")); MaxInactiveInterval() metodu ile yeni bir de¤er atanabilir.

Date olusturulmaTarihi = new ‚Date(oturumNesne.getCreationTime()); Session kapatma


Kullan›c›n›z sitenizden ayr›l›p taray›c› penceresini kapatmas›yla bir-
Date erisimTarihi = new likte oturum sona erecektir. Ancak belirli flartlar alt›nda oturumu
‚Date(oturumNesne.getLastAccessedTime()); kendiniz kapatabilir (Logout) ve session de¤iflkenlerini silebilirsiniz.

out.println("<br>Oturumun aç›ld›¤› tarih: " + oturumu_kapat.jsp


‚olusturulmaTarihi); <html>
<head>
out.println("<br>Oturuma en son ulafl›m tarihi: " <title>Oturum</title>
‚+ erisimTarihi); </head>
<body bgcolor="#ffffff">
out.println("<br>Oturuma maximum ara verebilece¤iniz
‚süre: " + oturumNesne.getMaxInactiveInterval()); <h2>Oturum Yönetimi</h2>

oturumNesne.setMaxInactiveInterval(10); <%
HttpSession oturumNesne = request.getSession();
out.println("<br>Yeni ara verme süresi: " + ‚oturumNesne. p oturumNesne.invalidate();
getMaxInactiveInterval()); out.println("Oturumunuz sona erdi..");

%>

</body>
</html>

Oturumu sona erdirip oluflturulan session


de¤iflkenlerini silmek için invalidate() meto-
dunu ça¤›rman›z yeterli olacakt›r.
Not: Bu ayki atölyemizde kulland›¤›m›z
örneklerin kaynak kodlar›n› CD’deki Stu-
dioWeb+ bölümünde bulabilirsiniz.

StudioWeb+’da bu ay:
JSP sayfalar›nda Türkçe karakterlerin
kullan›lmas›.

Numan Pekgöz
numanp@chip.com.tr
<< CHIP Workshop • 145
Linux
<<
Yaz›l›m yükleme ve
güncelleme
Yaz› dizimizin bu üçüncü bölümünde, önce Linux ortam›nda çeflitli yaz›l›m yükleme yöntemleri ve alter-
natiflerini, ard›ndan bu yöntemlerden MandrakeLinux'un da kulland›¤› RPM (RedHat Package Manag-
er) teknolojisini inceleyece¤iz.

L
inux, asl›nda sadece iflletim sisteminin sa, kullan›c›dan güncellenmesi istenip is- m› dünyas›nda en popüler paket yöneticisi-
çekirde¤ini oluflturdu¤u için, Linux da- tenmedi¤i sorulur. dir.
¤›t›m› üreticileri, y›llard›r kendi kullan›- DEB: Debian ve türevi Linux da¤›t›mlar›nda
c›lar›n›n ihtiyaçlar›na göre yaz›l›m paketle- 2 Paketin içindeki -varsa- ba¤›ml›l›k (de- kullan›lan bir paket yöneticisidir (dpkg).
rinin kurulmas›n› sa¤layacak düzenekler pendency) listesi kontrol edilir. Bu liste, bu TGZ: Standart s›k›flt›r›lm›fl bir arfliv dosyas›-
gelifltirmifllerdir ve bunu ço¤unlukla birbir- yaz›l›m paketinin gerek duydu¤u di¤er yaz›- d›r ve ba¤›ml›l›k (dependency) bilgisi içer-
lerinden ba¤›ms›z bir flekilde yapm›fllard›r. l›m paketlerinin listesini içermektedir. E¤er mez. Profesyonel da¤›t›mlarda hala kulla-
Bir “yaz›l›m paketi”, üç ana k›s›mdan eksik bir paket var ise paket yöneticisine n›lmaktad›r.
oluflmaktad›r. ba¤l› olarak ya durum kullan›c›ya bildirilir MandrakeLinux da, birçok di¤er Linux
ve ifllem durdurulur, ya da gerekli ba¤›ml›- da¤›t›m› gibi RPM sistemini kullanmaktad›r.
1 Yaz›l›m›n kendisi (çal›flabilir ikili (binary) l›klar otomatik olarak bulunarak yüklenir. Bunun yan›nda, ba¤›ml›l›klar›n (depen-
kodu) dency) otomatik olarak yüklenmesine ola-
3 Arflivin kendisi aç›larak dosyalar sistem- nak sa¤layan URPM sistemini de beraberin-
2 Yaz›l›m hakk›nda genel bilgi ve ba¤›ml›- de gerekli yerlere kopyalan›r. de getirmektedir.
l›klar (dependency) URPM, “RPM Cehennemi” (RPM Hell)
4 Yaz›l›m kurulumundan sonra sistemde olarak adland›r›lan problemden kurtulma-
3 Yaz›l›m kurulumundan sonra sistemde yap›lacak de¤ifliklikleri içeren bir betik m›z› sa¤lar. RPM cehennemi, bir yaz›l›m pa-
yap›lacak de¤ifliklikleri içeren bilgiler. (script) çal›fl›r. ketinin, bir ya da birden fazla yaz›l›m pake-
Bu üç k›s›m, yaz›l›m paketi yöneticisinin Bu ifllem tamamland›¤›nda, gerekli di- tine ihtiyaç duymas› (ba¤›ml› olmas›), bu
kulland›¤› biçime göre paketlenir, bir algo- zinlere, yaz›l›m›n gerekli bileflenleri yüklen- paketlerin de baflka paketlere ihtiyaç duy-
ritma kullan›larak (ZIP vb.) s›k›flt›r›l›r ve tek mifl olur. malar› neticesinde bir yaz›l›m yüklemek için
bir dosya haline getirilir. uzun bir u¤rafl gerektirmesi durumu olarak
Bir yaz›l›m paketini kurdu¤umuz zaman, Popüler Paket Yöneticileri nitelendirilebilir. URPM sayesinde, ba¤›ml›-
s›ras›yla flu ad›mlardan geçilir: Linux da¤›t›mlar›nda, yaz›l›m yüklemek için l›klar (dependency), paket yöneticisi yaz›l›-
herhangi bir standart, k›s›tlama ya da dü- m› taraf›ndan otomatik olarak yüklenecek-
1 Yaz›l›m›n ismine bak›l›r, e¤er paket sis- zenleme bulunmad›¤›n›, da¤›t›m› haz›rla- tir.
temde hali haz›rda kurulu ise ifllem bu afla- yanlar›n tercih ettikleri birbirinden ba¤›m- Bilgisayar›m›z› MandrakeLinux ile aça-
mada biter, e¤er daha eski bir sürümü var- s›z sistemler oldu¤unu belirtmifltik. fiimdi rak masaüstümüze eriflti¤imiz andan itiba-
bunlardan en popüler olan- ren (Resim 1) yeni bir paket yüklemek için
lar›na bir göz atal›m: haz›r›z demektir. ‹nternetten ya da baflka
RPM: RedHat Package Ma- bir kaynaktan edindi¤imiz MandrakeLinux
nager (RedHat Paket Yöne- için olan RPM paketini yükledi¤imiz yeri bu-
ticisi) program›n›n bafl harf- larak üzerine t›klayarak çal›flt›rmam›z yeter-
lerinden oluflmufltur. Red- li olacakt›r.
Hat taraf›ndan gelifltirilmifl Örne¤imizde, (Resim 2) sistemin bize ga-
olsa da, flu an Linux da¤›t›- im-0.81-1.norlug.i586.rpm dosyas›n› yükle-

Resim 1 Resim 2

25• CHIP Workshop >>


>> Linux

Resim 3 Resim 4

mek isteyip istemedi¤imizi sordu¤unu gö- için derlendi¤ini göstermektedir.) 5). Örne¤imizde ele ald›¤›m›z program olan
rüyoruz. Öncelikle burada bir süre durarak Bu bilgiler, yüklemek istedi¤imiz yaz›l›m GAIM (Gnome AOL Instant Messenger) ICQ,
RPM format›nda isimlendirme standard›n› paketlerini seçerken bize her zaman laz›m MSN, AIM, Yahoo gibi servislere tek bir
inceleyelim. olaca¤›ndan önemlidir. program› kullanarak ba¤lanmam›z› sa¤la-
Herhangi bir RPM dosyas› ile karfl›laflt›¤›- Yaz›l›m yükleme ifline geri döndü¤ümüz- yan bir “an›nda mesajlaflma” (instant mes-
m›zda, o dosyan›n flu flekilde isimlendirilmifl de, bu paketin baz› ba¤›ml›l›klara sahip ol- saging) yaz›l›m›d›r (Resim 6). Yak›n bir za-
oldu¤unu görece¤iz: isim-sürüm-reviz- du¤unu gözlemlemekteyiz (Resim 3). Mand- manda, Linux ortam›nda e¤lence ve sohbet
yon.mimari.rpm rakeLinux'un URPM sistemi, gerekli olan ba- servislerini incelerken, GAIM program›na da
Burada; ¤›ml›l›klar› listeleyerek, toplam boyutunu detayl› olarak de¤inece¤iz.
‹sim: Yaz›l›m›n k›sa ya da mümkünse tam da göstererek bizden bu paketleri yüklemek Görüldü¤ü gibi, RPM paketlerini kullana-
ismini içermektedir. (Örne¤imizde progra- için onay bekleyecektir. Bu onay› verdi¤i- rak sisteme yeni yaz›l›m yüklemek gayet ko-
m›n ismi “gaim”dir.) mizde, bizden bu paketleri içeren CD’leri lay ve h›zl›, hatta URPM sistemi sayesinde
Sürüm: Yaz›l›m›n sürümünü göstermekte- yerlefltirmemizi isteyebilir ya da bu paketle- otomatik.
dir. (Örne¤imizde 0.81 olarak görülmekte- ri internet üzerinden yükleyebilir.
dir.) E¤er paket yöneticisi, bize paketin imza- Yaz›l›m› derleyerek yüklemek
Revizyon: Yaz›l›m›n kaç›nc› kere paketlendi- lar›n›n geçersiz oldu¤undan bahsederse Bir yaz›l›m, programland›ktan sonra derle-
¤ini göstermektedir. Bazen yaz›l›mlar›n ayn› (Resim 4), bu, paketi haz›rlayan kifli ile, bi- nerek çal›flt›r›labilir hale getirilir. Derlenme-
sürümleri farkl› flekilde paketlenmekte ya zim ba¤›ml›l›k paketlerimiz aras›nda bir mifl haline, yaz›l›m hangi dilde yaz›lm›fl ise,
da baz› paketlenme hatalar› giderilmekte- fark oldu¤unu, iki paketin dijital imzalar›n›n o dilin kaynak kodu ad› verilir. Derlenmifl
dir. Burada sadece say› varsa da¤›t›c›n›n birbirini tutmad›¤›n› gösterir. Bunun nedeni programlar ise, her ne dilde yaz›lm›fl olursa
kendisi, paketleyen kiflinin ismi ya da takma basit bir paketleme fark›, onaylanmam›fl bir olsun afla¤› yukar› ayn› özellikleri tafl›rlar.
ad› varsa, üçüncü bir kifli taraf›ndan paket- kaynaktan al›nan bir paket ya da dijital im- Linux, do¤as› gere¤i GNU felsefesini de-
leme yap›lm›fl demektir. (Örne¤imizde zalar›n tafl›nmas›nda kullan›lan algoritma- vam ettiren aç›k kaynak kodlu bir yaz›l›m ol-
“1.norlug” olarak görülmektedir. Bu, bu sü- daki bir problem olabilir. Paketi edindi¤imiz du¤undan dolay›, onun için gelifltirilen yaz›-
rümün “norlug” taraf›ndan yap›lm›fl ilk pa- kayna¤›n güvenilir oldu¤una inan›yorsak, l›mlar›n da ço¤u aç›k kaynak koda sahiptir.
ketleme revizyonu demektir.) imzalar geçersiz olsa da paketi yük-
Mimari: Yaz›l›m›n hangi mimari için derlen- lemeye devam edebiliriz.
di¤ini ve paketlendi¤ini belirtir. (Örne¤imiz- Yükledi¤imiz program›, ismini
de i586 olarak gösterilmifltir. Bu, Pentium yazarak ya da menüde gerekli seçe-
ve üstü (veya uyumlu) ifllemci mimarileri ne¤i bularak çal›flt›rabiliriz (Resim

Resim 5 Resim 6

<< CHIP Workshop • 26


Linux
<<

Resim 7 Resim 8

Bu yaz›l›mlar›n kaynak kodu gizli de¤ildir ve derleyici ve yaz›l›m gelifltirme araçlar›n› sim 9), bir terminal penceresi ile karfl›laflaca-
herkes taraf›ndan görülebilir, de¤ifltirilebilir kurdu¤umuz için, yaz›l›mlar› kaynak kodla- ¤›z. Bu pencerenin siyah görüntüsü ve be-
ve uyarlanabilir. r›n› derleyerek yükleyebilece¤iz. yaz yaz›lar› ilk bak›flta korkutucu gelse de,
Aç›k kaynak kodlu yaz›l›mlar, genellikle Örnek olarak yine bir mesajlaflma prog- bu bölümümüzde fazla detay›na inmeden
gelifltiriciler taraf›ndan sürekli (çok aktif ya- ram› olan KMess'i ele alal›m. KMess, KDE üç (evet üç) basit komutta bir yaz›l›m› derle-
z›l›mlar günde birkaç kere olmak üzere) masaüstü ortam› için bir “MSN Messenger” yerek yüklemeyi inceleyece¤iz.
güncellenmektedir. Bu yüzden, birçok aç›k program›d›r. http://kmess.sourceforge.net Birçok yaz›l›m, “GNU autoconf” sistemi
kaynak kodlu yaz›l›m gelifltiricisi, haz›r der- adresinden flu anki sürümü olan KMess ile derlenmeye haz›rland›¤› için, bize fazla
lenmifl paketler sunmamakta, ya da sun- 1.3'ü bilgisayar›m›za indirerek iflleme baflla- yap›lacak bir fley zaten kalm›yor. Bu nokta-
duklar› paketler güncel olmamaktad›r. Bu yabiliriz. da, derlemeye bafllamadan önce de¤inilme-
durumlarda yaz›l›m›, derleyerek yüklemek Daha önce de yapt›¤›m›z gibi, dosyam›z› si gereken en önemli olgulardan biri, derle-
gerekebilir. bafllang›ç (masaüstümüzdeki “ev” fleklinde- me iflleminin h›z›n›n ifllemcinize, belle¤inize
Ayn› fley, yaz›l›m›n üzerinde de¤ifliklik ki Bafllang›ç simgesine t›klanarak ulafl›labi- ve yaz›l›m›n büyüklü¤üne ba¤l› olmas›d›r.
yapmak istendi¤inde de geçerlidir. Aç›k kay- lir) dizinimizdeki Documents (Belgeler) dizi- Bu ifllem k›sa da uzun da sürebilir. Örne¤i-
nak kodlu yaz›l›mlar›n kaynak kodlar› üze- nine yüklüyoruz (Resim 7). Dizindeki kmess- mizdeki yaz›l›m, h›zl› bir ifllemcide 5-6 daki-
rinde (programc›l›k bilgimiz dahilinde) iste- 1.3.tar.gz dosyas›na sa¤ fare tuflu ile t›kla- ka gibi bir sürede derlenmifltir.
di¤imiz de¤iflikli¤i yaparak kendimize uyar- yarak menüye ulafl›yoruz ve oradan Eylem- Terminal penceresinde:
layabiliriz. Bunun için de, program› kaynak lerk›sm›ndan Buraya Aç seçene¤ini seçiyo-
kodunu derleyerek yüklemek gerekecektir. ruz (Resim 8). Böylece, arflivin bulundu¤u ./configure
Kaynak kodu derleyerek bilgisayar›n an- yerde kmess-1.3 ad› alt›nda bir dizin (klasör)
layaca¤›, çal›flt›r›labilir (executable) hale dö- olufluyor. Bu yeni aç›lan dizine sa¤ fare tuflu yazarak Enter tufluna bast›¤›m›z zaman,
nüfltüren yaz›l›mlara derleyici denir. Kurulu- ile t›klayarak Eylemler k›sm›ndan Terminali sistemimizde yüklü yaz›l›m bileflenleri tara-
mumuzda (yaz› dizimizin ilk bölümünde) Burada Aç seçene¤ini seçti¤imiz zaman (Re- nacak ve derleme ifllemi için gerekli olan or-

Resim 9 Resim 10

27• CHIP Workshop >>


>> Linux

Resim 12

12), KMess menüye eklenecek ve çal›flt›r›l-


make install maya haz›r olacakt›r. Hatta daha sonra ‹kon
yazan yere t›klayarak, menüde duracak gü-
yazarak yaz›l›m›n zel bir simge de belirleyebiliriz (Resim 13).
kurulumunu tamam- Gerekli de¤iflikleri yap›p disket fleklinde-
Resim 11 lam›fl oluyoruz. ki Kaydet tufluna bast›¤›m›zda ise, menü
güncellenecek ve art›k, söz konusu menü-
tam›n mevcut olup olmad›¤›na bak›lacakt›r. exit den (Resim 14) KMess program›n› çal›flt›ra-
Bu ifllem herhangi bir hataya sebep olma- bilece¤iz. Yak›n bir zamanda, Linux orta-
dan sona erdi ise (Resim 10): yazarak normal kullan›c›m›za döndü¤ü- m›nda e¤lence ve sohbet servislerini ince-
müzde yaz›l›m›m›z kurulmufl demektir. Bu lerken, KMess program›na da detayl› olarak
make flekilde kurdu¤umuz programlar, KDE me- de¤inece¤iz.
nüsüne otomatik olarak eklenmedikleri Bu yaz›m›zda, ilk olarak RPM sistemini
yazarak yaz›l›m› derlemeye bafllayabili- için, bu ifllemi bizim yapmam›z gerekmek- kullanan bir Linux da¤›t›m›nda yaz›l›mlar›n
riz. Sorunsuz biten (ama uzun süren) bir tedir. nas›l yüklendi¤ini, daha sonra da aç›k kay-
derleme iflleminin ard›ndan, problemsiz bir KDE menüsüne sa¤ fare tuflu ile t›klayarak nak kodlu bir yaz›l›m›n nas›l derlenerek ku-
biçimde bu noktaya kadar gelmiflsek, prog- gelen menüde Menü Düzenleyici seçene¤ini rulabildi¤ini, yüzeysel olarak gördük. E¤er
ram› kurmaya haz›r›z demektir. Bir progra- seçti¤imizde, karfl›m›za MandrakeLinux'un farkl› programlar› çekip, Linux'ta denemek
m› sisteme kurmak için, sistemde yönetici menü editörü olan MenuDrake gelecektir. istiyorsan›z, aç›k kaynak kodlu yaz›l›mlar›
yetkisine sahip olmam›z gerekmekte oldu- Burada, kurdu¤umuz KMess program›n› bulabilece¤iniz en büyük iki kaynak site:
¤undan, burada MandrakeLinux'u kurarken menünün neresine eklemek istiyorsak oray› http://freshmeat.net
belirtti¤imiz “root” flifresini kullanmam›z seçerek ifle bafllayabiliriz (Resim 11) (Inter- http://sourceforge.net
gerekiyor. net bafll›¤› alt›nda An›nda Mesajlaflma k›s- Bu adreslerde bir çok yaz›l›m›, RPM ya da
m›, KMess için uygun bir yerdir). Bu ifllemi kaynak kodu format›nda bilgisayar›m›za çe-
su - tamamlad›ktan sonra sa¤ üstteki art› iflareti kip yükleyebiliriz.
simgesine sahip Uygulama Ekle dü¤mesine Yaz› dizimizin bir sonraki bölümünde
yaz›p Enter tufluna bast›¤›m›zda, sistem t›klad›¤›m›zda ç›kan diyalog penceresinde ofis programlar›na de¤inece¤iz. Yorum ve
bize “root” flifresini soracakt›r. Bu flifreyi bizden Bafll›k (Menüde ç›kacak isim) ve Ko- önerileriniz için e-postalar›n›z› bekliyoruz.
yazd›¤›m›zda, kendi kullan›c›m›z› terk ede- mut (program› çal›flt›rmak için normalde Bol Linux'lu günler dileklerimizle.
rek sistemde “tam yetkili kullan›c›” olan ro- yazaca¤›m›z komut) istenecektir. Bafll›k k›s-
ot kullan›c›s›na geçmifl oluyoruz. Bu durum- m›na “Kmess” Komut k›sm›na da “/usr/lo- Do¤aç fienol
dayken: cal/kde/bin/kmess” yazd›¤›m›zda (Resim dsenol@masterz.com

Resim 13 Resim 14

<< CHIP Workshop • 28


3D
<<
3DS Max’te partikül
(parçac›k) sistemleri ile
patlama efekti
Bu ayki yaz›m›zda tüm 3D modelleme ve animasyon yaz›l›mlar›n›n önemli unsurlar›ndan biri olan ve
özellikle film endüstrisinde s›kça kullan›lan partikül (parçac›k) sistemlerine ve patlama efektlerine
de¤inece¤iz.

T
üm 3B modelleme ve animasyon yaz›l›mlar› partikül (parça- Space warp: Partikülleri etkileyen güç alanlar›d›r, örne¤in rüzgar ve
c›k) sistemlerini kendi içerilerine dahil etmifllerdir ve partikül yerçekimi.
sistemleri 3B animasyon için önemli bir kavramd›r. Partikül Emitter: Partikülleri oluflturan kaynakt›r, partiküller emitter’dan 3
sistemlerinin kullan›m alanlar› çok genifltir ve hemen hemen her boyutlu uzaya yay›l›rlar.
yerde kullan›l›r. Özellikle film endüstrisinde ço¤u efektin kökenini Spread: Partiküllerin da¤›lma aç›lar›d›r.
partikül sistemleri oluflturur. Partikül sistemleri özellikle çeflitli do¤a Variation: Parametrenin rastgele de¤iflimidir. Örne¤in farkl› büyük-
olaylar›n› taklit etmek için vazgeçilmezdir. Bununla birlikte her 3B lüklerde veya farkl› h›zlarla ilerleyen parçac›klar istiyorsak variation
yaz›l›m›n partikül sistemi birbirinden farkl›d›r ve çal›flma prensipleri de¤erlerini art›r›r›z.
dahil farkl›l›k gösterir. Hatta partikül sistemleri kendi içerilerinde de Spin Time: Parçac›klar›n kendi eksenlerinde dönüfl zamanlar›d›r.
s›n›flara ayr›l›rlar ve her partikül çeflidi farkl› yerlerde kullan›l›r. Par- Deflector: Partiküllerin ilerleyifllerini etkileyen nesnelerdir, örnek
tikül sistemleri ile neler yapabiliriz? Duman, uçuflan yapraklar, bal›k olarak bir duvar› düflünebiliriz.
sürüleri, patlama efektleri, f›rt›na, göktafllar›, ya¤mur ve kar gibi ço- Bu al›flt›rmam›zda bir nesneyi patlatarak parçalar›na ay›raca¤›z
¤u do¤a olay› partikül sistemleri ile yap›l›r.
Yapaca¤›m›z efekte uygun olan parti-
kül sistemini seçeriz ve gerekli parametre-
lerini ayarlad›ktan sonra animasyonumu-
za dahil ederiz. Hatta partikülleri çeflitli
spacewarp’lara (güç alanlar›na) ba¤laya-
rak davran›fllar›n› etkileyebiliriz, deflec-
tor’larla (yans›t›c›lar) etkileflim içerisine
sokarak birbirleriyle çarp›flmalar›n› veya
sahnemizdeki nesnelerle çarp›flmalar›n›,
sürtünmelerini ve sekmelerini sa¤layabili-
riz. Örne¤in bir nesnenin k›r›l›p parçalara
ayr›ld›¤› bir olay› düflünelim. Parçalar yer-
çekiminin etkisiyle afla¤› do¤ru düflmeye
bafllarlar ve birbirleriyle çarp›flt›klar›nda
sekerler ve yere düfltüklerinde s›çrarlar;
hatta parçalar daha küçük parçalara bile
ayr›l›rlar. Baz› durumlarda ise tam tersi
olarak parçac›klar birbirleriyle tekrar birle-
flirler. Örne¤in sualt›ndaki hava kabarc›k-
lar› belli bir seviyede ve yak›nl›kta birbirle-
riyle birleflerek büyüme e¤ilimi gösterir-
ler. Ayn› durumu s›v›larda da gözlemleriz;
bir flelaleden veya bir hortumdan f›flk›ran
su önce küçük damlalara ayr›l›r, sonra tek-
rar birleflir. fiimdi partiküllerle ilgili bilme-
miz gereken önemli terimleri aç›klayal›m.
3ds max’teki partikül sistemleri “Bliz-
zard, P-array, PCloud, Super spray, Spray
ve Snow” dur.

9• CHIP Workshop >>


>> 3D

ve çeflitli space warp’larla etkileflime sokarak efektimizi daha ger- h›zlar›n› %20 oranda de¤iflken k›ld›k. Böylece hareketleri daha da
çekçi bir hale getirece¤iz. Bir PArray partikülü, bir Superspray kulla- gerçe¤e yaklaflacak.
naca¤›z, partiküllerin daha do¤ru hareket etmelerini sa¤lamak için
rüzgar ve yerçekimi ile etkileflime sokaca¤›z. Partikülleri dokuland›- 6 Particle timing bölümündeki Emit start’› “30”, Emit stop’u da
r›p nesnenin içerisine bir patlama dahil edece¤iz ve opacity (say- “45” olarak de¤ifltirelim. Display until de¤erini “200” olarak ayarla-
daml›k) kanal› ile maskeleme yapaca¤›z. yal›m. Life de¤erini “200” olarak de¤ifltirelim. Parçac›klar›m›z 30. ka-
Ben nesne olarak bir bilardo topunu seçtim. Sizler de bir küreden rede yay›lmaya bafllayacak ve 45. karede yay›lmalar› duracak. Tam
bafllayabilir, farkl› dokuland›rma yaparak küreyi bir gezegen veya “200” kare boyunca da görünür olacaklar. Buradaki Variation de¤e-
dünya haline getirebilirsiniz. Biraz sonra küremizi parçalara ay›rarak rini de “12” olarak de¤ifltirelim.
partikül sistemlerini yo¤un olarak kullanaca¤›z.
7 Particle Type bölümündeki Standart particle sekmesini kald›ra-
1 Max’i file-reset ile reset’leyerek bafllayal›m. Sahnemizin ortas›n- rak Object Fragments sekmesini seçelim. Böylece parçac›klar›m›z kü-
da bir “sphere” olufltural›m. De¤erlerini radius:53 ve segments:64 remizin parçalar›yla uyumlu hale gelmifl oldu. Küremiz “Front” gö-
olarak ayarlayal›m ve x:0 y:0 z:0 noktas›na alal›m. Parçalara ay›raca- rüfl penceresinde flekil-2’deki gibi görünmeli.
¤›m›z objemizi oluflturmufl olduk. Unutmamam›z gereken önemli
bir nokta, nesnemizin tek parçadan olufluyor olmas›d›r. Çünkü sah- 8 Modify panelini biraz daha afla¤› kayd›rarak Object Fragments
nede birden çok objeyi parçalamak isteseydik her birine ayr› ayr› Controls bölümünü bulal›m. All faces ayar›n› Number of Chunks;
partiküller oluflturmam›z gerekirdi. E¤er sphere’den baflka bir nesne Thickness de¤erini :”12,63” olarak de¤ifltirelim. Number of Chunks
kullan›yorsan›z bunun gruplu veya çok parçadan oluflan bir nesne alt›ndaki Minimum de¤erini “89” olarak ayarlayal›m. Bu ayarlardan
olmamas›na dikkat edin. sonra “perspektif” görüfl panelimizde “fiekil-3” tekine benzer bir gö-
rüntümüzün oluflmas› gerekir. Burada parçac›klar›n say›s›n› ve da-
2 Partikül sistemleri Modify panelindeki Create sekmesinin alt›n- ¤›lan parçalar›n kal›nl›klar›n› ayarlam›fl olduk. fiimdi partiküller ger-
da bulunur. Buradan istedi¤imiz partikül tipini seçtikten sonra her- çekten küremizin birer parças› gibi görünüyor olmal›.
hangi bir görüfl penceresinde imlecimizi sürükleyerek partikül siste-
mini sahnemize yerlefltiririz. fiimdi PArray partikül tipine t›klad›ktan 9 Modify panelini daha da afla¤› kayd›rarak Mat’l Mapping and So-
sonra, “top” görüfl penceresinde, küremizin hemen sa¤ yan›na imle- urce k›sm›na gelelim. Burada parçac›klar›m›z›n dokular›n› küremizle
cimizi sürükleyerek PArray partikülünü oluflturuyoruz. denkleyece¤iz. Icon sekmesindeki iflareti kald›rarak Picked Emitter’i
iflaretliyoruz ve Get Material From butonuna t›kl›yoruz. fiimdi parça-
3 PArray partikülü nesnemizden parçac›klar›n yay›lmas›n› sa¤la- c›klar›m›z dokular›n› küremizden alm›fl oldu, böylece parçalar ger-
yacak partiküldür. fiimdi PArray parametrelerini ayarlayal›m. PArray çekten küremizin bir parças›ym›fl gibi görünecek.
seçili durumdayken Modify paneline geçelim. En üstte yer alan Ob-
ject Based Emitter bölümündeki Pick object’e t›klad›ktan sonra küre- 10 Modify Panel’de Rotation and collision bölümündeki Spin time’›
mizi seçelim. fiimdi sahnemizde “+” flekliyle temsil edilen parçac›k- “43” olarak ayarlayal›m. Parçac›klar›m›z art›k havada dönmeye bafl-
lar› görmemiz gerek. Zaman çubu¤unu sa¤a ve sola kayd›rd›¤›m›z- layacaklar.
da parçac›klar›n küreden ç›kt›klar›n› görü-
rüz.

4 PArray’in Modify panelini biraz afla¤›-


ya kayd›rarak Viewport display bölümün-
deki ticks ayar›n› mesh olarak de¤ifltire-
lim. Bu ayar› de¤ifltirerek görüfl pencerele-
rindeki art›lar›n mesh olarak görünmesini
sa¤lad›k. Bu de¤ifliklik parçac›klarda hiçbir
de¤iflikli¤e yol açmaz sadece bizim onlar›
gerçek boyutlar›yla “viewport”larda gör-
memizi sa¤lar. Nesnemizi parçalara ay›ra-
ca¤›m›z için bu önemli, çünkü parçalar›-
m›z›n boyutlar›n› ayarlarken parçac›klar›
birebir boyutlarla görmemiz gerek.

5 fiimdi Modify panelinin biraz daha al-


t›na inerek Particle generation sekmesini
geniflletelim. Bu bölüm partikül sistemi-
mizin en önemli ayarlar›n›n yer ald›¤› bö-
lümdür. Particle Motion bölümündeki Spe-
ed parametresini “3,4” olarak de¤ifltire-
lim. Variation parametresini de “20” ola-
rak ayarlayal›m. Böylece parçac›klar›m›z›n

<< CHIP Workshop • 10


3D
<<
12 fiimdi parçac›klar›m›z›n hareketle-
rine çeflitli Space warp’larla müdahale
edece¤iz. Sahnemize “front” pencere-
sinde bir tane “wind” space warp’› ek-
leyelim. Wind’in konumunu küremizi
karfl›dan görecek flekilde birazda sa¤a
do¤ru ayarlayal›m. Parametrelerini
strength:0,1 turbulence: 0,134 olarak
de¤ifltirelim. Bind to space warp arac›-
na t›klayarak PArray’i, wind’e ba¤la-
yal›m. Böylece parçac›klar›m›z› wind
ile etkileflime sokarak arkaya do¤ru
savrulmalar›n› sa¤lad›k, turbulance ile
hareketlerini da¤›tarak parçac›klara
daha gerçekçi bir hareket vermifl ol-
duk Bu ad›mdan sonra isterseniz sah-
neye bir de gravity space warp’› ekle-
yerek bu ad›mdaki ayn› ifllemlerle
parçac›klara yerçekimi de verebilirsi-
niz. E¤er gravity eklerseniz ayarlar›n›
yapmay› unutmay›n, aksi takdirde
parçac›klar yere do¤ru h›zla ve aniden
ilerlemeye bafllarlar ve hareket ger-
çekçili¤ini yitirmifl olur.
11 Parçalar›m›z küremizden d›flar› do¤ru yay›l›yorlar fakat küremiz

halen oldu¤u yerde duruyor. fiimdi küremize bir bir Visibility track 13 PArray’a sa¤ t›klayarak Properties bölümünü açal›m ve buradan
ekleyece¤iz. Visibility track görünürlük izidir ve bir nesneye eklendi- Motion blur’u (hareket bulan›kl›¤›) Image olarak ayarlayal›m ve 1,9
¤inde o nesneyi istedi¤imiz karede görünmez k›labiliriz. Biz de ay- de¤erini girelim. Böylece render ald›¤›m›zda parçalar hareket halin-
nen böyle yapaca¤›z ve parçac›klar›m›z›n yay›lmaya bafllad›¤› anda deyken bulan›k görünmeye bafllayacaklar.
(bunu 30. kare olarak daha önce ayarlam›flt›k) küremizi ortadan
kaybedece¤iz. Küremiz seçiliyken Curve editor’ü açal›m ve Dope she- 14 fiimdi 0. karede sahnemizde “front” görüfl penceresinde bir pla-
et moduna geçelim. Küremizin seçili olmas›na çok dikkat edelim ve ne olufltural›m. Parametrelerini L:194 W:264 olarak ayarlayal›m ve
Dope sheet’te Tracks bölümünden Visibility track bölümüne ve Add x:0 y:0 z:0 konumuna alal›m. Sa¤ t›klayarak Properties bölümünü
menüsüne t›klayal›m. Visibility track “sphere1” in hemen alt›nda ek- açal›m. Receive shadows ve Cast shadows iflaretlerini kald›ral›m. Ma-
lenmifl olmal›d›r. Dope Sheet’ te Visibility track seçiliyken 29. ve 30. terial editor’› açal›m. Herhangi bir slotu seçerek Diffuse kanal›na Bit-
karelere birer anahtar kare yerlefltirelim. De¤erleri 29. s›ras›yla “1” map atayal›m. Bitmap olarak 3dsmax klasörünün içerisinde Tutori-
ve “0” yapal›m. Dope Sheet’te anahtar kareleri Add keys butonu ile als\space\Hercules.avi’yi seçelim. Malzemeye geri dönerek opacity
oluflturuyoruz. fiekil-4. bölümünün yan›ndaki kanal kutusuna t›klayarak yine bitmap’i se-

11• CHIP Workshop >>


>> 3D

çelim ve Hercules.avi’nin bulundu¤u kutucu¤a t›klayarak Bitmap’in ayarlar›-


klasörden HerculesM.avi’yi seçelim. Bu na girelim. Time bölümünü genifllete-
bir patlama görüntüsüdür ve biz normal lim ve Start bölümünü “24” End conditi-
patlama görüntüsünü HerculesM dos- on’u hold olarak ayarlayal›m. Ayn› ifl-
yas› ile opacity kanal›n› kullanarak mas- lemleri opacity kanal›nda kulland›¤›m›z
kelemifl olduk. Render ald›¤›m›zda art›k HerculesM.avi’nin parametrelerinde de
sadece patlama görünecek. fiimdide yapal›m ve de¤erlerin birbirleriyle ayn›
malzememizin Self illumination bölü- olmas›na dikkat edelim. fiimdi bu doku-
münü color olarak ayarlayal›m ve RGB yu az önce oluflturmufl oldu¤umuz Pla-
de¤erlerini s›ras›yla 0,35,124 olarak ne’e uygulayal›m.
ayarlayal›m. Patlamam›z›n rengini de-
¤ifltirmifl olduk. 16 Sahnemizin tam ortas›nda bir Super
spray partikülü olufltural›m. Parametre-
15 Diffuse kanal›n›n yan›ndaki küçük lerini ayarlayal›m. “1.Spread:158,
2.Spread:86”, “wievport display:
mesh”, “use rate:18”, “speed:5,6”
,“variation:50”, “emit start:28”, ”
emit stop:40”, “life:50”, “size:6,316”,
”variation:50”, “standart partic-
les:”sphere”.

17 Material editor’de yeni bir slotta


diffuse de¤erleri s›ras›yla RGB:150,
194,204 olan bir material olufltural›m.
Self illumination de¤erini “75” olarak
ayarlayal›m ve superspray’e atayal›m.

18 SuperSpray’e de sa¤ t›klayarak


Properties bölümüne girelim ve Moti-
on blur’u “image” olarak ayarlayal›m
de¤erini “2” olarak ayarlayal›m. OK’e
t›klayal›m.

19 Sizler de ayarlar› de¤ifltirerek farkl›

sonuçlar elde edebilirsiniz, farkl› parti-


kül sistemlerini deneyebilirsiniz. Her-
kese iyi çal›flmalar..

Nebi YIKARO⁄LU
nykaroglu@chip.com.tr

<< CHIP Workshop • 12

You might also like