Kadın,Cinsellik,Magazin,Güncel Haberler,Internet,Teknoloji

Asp Nesneleri

Posted on Haziran 7th, 2009

ASP’DE NESNELER
OBJELERÖZELLİLLERİMETODLARI ve NESNE TEMELLİ PROGRAMLAMA

Günlük yaşamımızda kullandığımızdokunabildiğimiz her şey obje olarak adlandırılır

Bu tanıma oturduğumuz sandalye bilgisayarımız ve televizyonumuzda dahildir. Bize telefonu tanımlamamız gerektiği söylendiğinde telefonun özelliklerinden bahsederiz. Sözgelimi; telefonu mikrofonu hoparlörü ve arama yapmak için kullanılan tuş takımı vardır. Ayrıca telefonun ne amaçlar için kullanıldığı da (birini aramak gibi) yine bu objenin tanımı için kullanılır. Bir arkadaşımız bizi aradığında telefonun çalması ve bizim haberdar olmamız telefonun gerçekleştirdiği bir olaydır. İlerideki kısımlarda telefon örneğinde olduğu gibi fiziksel objeleri kullanarak programlama anlamında obje kavramını anlatmaya çalışacağım.

Programlama da kullanılan objelerde tıpkı fiziksel objeler gibidir yani özellikleri metotları ve olaylar vardır. Nesne temelli bir programlama ise rogramlama objelerin kullanılarak yapıldığı programlama türüdür. Bu programlama türünde uygulama bir çok objeden oluşan parçalara ayrılır. Daha sonra bu parçalar arasında gerekli ilişkiler ve bağlantılar kurulmak suretiyle ana uygulama meydana getirilir.

Not: Obje temelli programlamayı anlatmak için kullanılan telefon örneği Wrox yayınları tarafından basılan “Beginning Active Server Pages 3.0″ adlı kitabın 6. Bölümünden alınmıştır
Obje Terimleri:

Nesneleri tanımlamak için üç terim kullanırız. Bu terimler özellik (property) metot (method) ve olaylar (events) dır. Genel kullanımı daha yaygın olduğu için bu noktadan sonra bu terimlerin bazen İngilizcelerini (property method events) kullanacağız.
Properties (özellikler):

Nesneye ait bazı özellikler kullanarak o nesneyi tanımlarız. Bir nesneye ait bir özellik ve bu özelliğe ait bir değer bulunur. Telefon örneğimize geri dönelim ve aşağıdaki tabloya göz atalım.
ÖZELLİK DEĞER
Renk Kırmızı
Malzeme Plastik
Ağırlık 800gr
Tuş sayısı 12

Tabloyu incelediğimizde telefon nesnesine ait özellikleri ve değerleri görmektesiniz. Mesela rengi kırmızı yapıldığı malzemenin plastik olması gibi…
Metodlar:

Nesneleri tanımlamak için kullandığımız bir diğer olgu ise objelerin fonksiyonlarıdır. Örneğin; telefonu kullanarak birini aramak işlemi yerel telefon ağına bağlanmak suretiyle aradığımız kişinin telefonunun çalmasına neden olan bir metotdur. Telefon objemizin metodlarına bir göz atalım
Metod Adı Tanım
Arama Herhangi birini aramak
Cevap Verme Çalan bir telefona cevap vermek
Kapatmak Telefonu kapatmak
Parametreler:

Nesnelere ait bazı metodlar direkt olarak nesneye uygulanabilirken bazıları da bir takım bilgilere ihtiyaç duyarlar. Bu bilgiler parametre olarak adlandırılır. Örneğin; çalan bir telefona cevap vermek için herhangi bir parametreye ihtiyacımız yokken bir arama yapmak için arayacağımız kişinin telefon numarası parametre olarak kullanılmalıdır.
Dönen Değerler (return values) :

Metodlar sadece parametre kabul etmenin dışında gerçekleştirdikleri işlemlerden sonra bize geri bilgi sağlayabilirler. Metod tarafından sağlanan bu bilgilere dönüş değeri (Türkçe si belki farklı olabilir önerilerinizi bekliyorum ama İngilizce si return value) adı verilir. Örneğin; bir telefon numarası çevirdiğimizde bu işlemin başarıyla gerçekleşmesi return value olarak true başarısız olması ise false şeklinde bir return value döndürür. Fakat her metod bir return value döndürmek zorunda değildir. Mesela telefona cevap vermek bir return value döndürmez.
Olaylar (Events):

Örnekte kullandığımız telefonu düşünelim. Telefonumuz dışardan arandığında bu bilginin yani dışardan arandığı bilgisinin bize bir şekilde ulaşması gereklidir. Obje(telefon) bu arama gerçekleştiğinde bunu zil vasıtası ile bize bildirir bu işleme objenin bir olayı(event) adı verilir.
ASP Nesne Yapısı:

ASP sahip olduğu 7 temel obje vardır. Bu objeler built-in objects olarak tanımlanır. Bu 7 temel obje:

* Server Object
* Application Object
* Session Object
* Request Object
* Response Object
* ObjectContext Object
* AspError Object

Server Object:

Server nesnesini kullanarak yapabileceğimiz bazı başlıklar aşağıdaki gibidir.

* Yazdığımız ASP scriptlerinde bir hata çıktığı zaman ne kadar süre sonra sonlandırılacağı ile ilgili script timeout değeri
* Kullanıcı tarafından sağlanan bilgilerin HTML formatına dönüştürülmesi
* Sanal(virtual) path’ lerin fiziksel yola (path) dönüştürülmesi işlemi
* Createobject metodu kullanımı ile bir ActiveX nesnesinin örneğinin(instance) oluşturulması işlemleri için
* Transfer veya Execute komutlarının kullanımı ile bir başka ASP sayfasının çalıştırılması işlemi için

Application Object:

ASP teknolojisi kullanılarak hazırlanan sayfaların birbirine bağlı olarak işletilmesi yani web uygulamasının çalışması esnasında uygulama geliştirici uygulamanın tümü üzerinde bir takım kontrollere sahip olmak ister. Bu tip bir işlem application objesinin özellikleri kullanılarak yapılır. Genel olarak application nesnesi kullanılarak;

* Web uygulaması ile başladığında bazı değişkenleri set etmek(değişkenlere bazı değerlerin atanması) veya bazı işlemlerin otomatik men yapılması için
* Uygulama sona erdiğinde devreye alınmak istenen bazı işlemler için
* Bazı bilgilerin web uygulaması çalıştıran her bir kullanıcı için ulaşılabilir hale getirilmesi.

Session Object:

ASP uygulamalarında her uygulama için sadece bir application objesi web server üzerinde bulunabilir. Bu uygulamaya bağlanan her kullanıcı(client) bu objeye referans eden örneği ile çalışır.

Uygulamaya bağlanan her client(kullanıcı) bir oturum(session) açar böylece her client kendini ait bir session nesnesine sahip olur. Application nesnesi ile session nesnesi arsındaki fark application nesnesinin uygulamaya bağlanan herkes için aynı değerleri sunmasına rağmen session nesnesinin bağlantı kuran her kullanıcı için farklı olmasıdır. Application için anlatılan maddeler session için geçerli olmakla beraber tek fark bu özelliklerin uygulama bazında değil
Request Object:

Bir web browser veya herhangi bir uygulama web server’ a bir sayfa için bir istekte bulunduğunda bu olay request olarak adlandırılır. Request objesi server tarafından sağlanan bu sayfa ve dolayısıyla gönderdikleri bilgilere ASP uygulamasının çok kolay bir şekilde ulaşabilmesini sağlamaktır.

Request objesi ile yapılan bazı işlemler:

* URL ile gönderilen bilgilerin QueryString koleksiyonu kullanılarak toplanması
* Eğer Client Form içerisinde bilgi gönderiyorsa form koleksiyonu kullanılarak bilgilerin toplanması
* Web server tarafından sağlanan HTTP Server Variables bilgilerine ulaşılması
* Cookielerin okunması
* Client sertifikalarının (Güvenlik SSL) koleksiyonunun okunması

Response Object:

ASP teknolojisinin kullanımının temel amaçlarından en başında geleni şüphesiz dinamik olarak oluşturulmuş web sayfalarıdır. Bu görevin yerine getirilmesi için gerekli olan client’ e bilgileri nasıl göstereceği işaret etmektir. Response objesi bu temel amacı yerine getirmek için kullanılan built-in objesidir. Response objesi ile;

* Client tarafından gösterilecek bilgilerin Html stream içerisine eklenmesi
* Browser tarafından oluşturulan cookieler için gerekli olan bilgilerin browser’ a gönderilmesi
* Redirect metodu kullanılmak suretiyle kullanıcının bir başka sayfaya yönlendirilmesi
* Sayfanın tamamıyla oluşturduktan sonra veya sürekli olarak gönderilmesi kontrolünün sağlanması
* Sayfaya ait bazı özelliklerin (Html header gibi) düzenlenmesi

ObjectContext

Ayrıntılı olarak ele alınacak olmasına rağmen basitçe açıklamamız gerekirse; ObjectContext object componentlerin kullanılmadan uygulama geliştirme amacı için yardımcı olan bir objedir. Transaction (Bir işlemler bütünüsözgelimi bir banka hesabından paranın alınarak diğer bir hesaba aktarılması.) işlemlerinin yönetimi bu obje tarafından yapılabilir. Obje Transaction yönetimi için MTS(Microsoft Transaction Server) objesi ile bağlantı kurmak sureti ile işlemleri yönetir
AspError object:

Asperror objesi ASP script veya asp.dll tarafından oluşan hataların yakalanması için kullanılır. Asperror objesi Server.GetLastError metodu gelen hataları yakalayarak kullanıcıyı standart hataların açıklandığı sayfalara yönlendirmek için kullanılabilir.

Bu noktaya kadar obje nedir ve obje ile gelen bazı kavramları açıklamaya çalıştık. Tüm bu anlattıklarımız herhangi bir obje temelli programlama dili için aynı olan bilgiler olup sadece ASP’ ye özel değildir. Daha sonra ASP’ de kullanılan ve built-in objects adını verdiğimiz 7 adet standart objeyi kısaca özetlemek sureti ile sizleri biraz olsun bilgi sahibi yapmayı amaçladık. Şimdi bu objenin her birini tün yönleriyle ele alıp detaylı inceleyeceğiz. kullanıcı bazında olmasıdır.

  • Share/Save/Bookmark

Tags: , , , , , , , , , , , , , , , , , ,
Filed under Asp, Internet, Teknoloji, WebMaster | No Comments »

Asp Aktif Kullanıcılar

Posted on Haziran 7th, 2009

Aktif kullanicilar - global.asa
————————————————–
<Object Runat=”Server” Scope=”application” ID=”dOnlineUsers” ProgID=”Scripting.Dictionary”></Object>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
application(”ServerStart”) = now
end sub
function Decrypt(sText)
Decrypt = sText
end function

function adZero(sText)
if isNull(sText) then exit function
adZero = string(5 - len(sText) “0″) & sText
end function

Sub Session_OnStart

Session.TimeOut = 5
sAktifUsrList = application(”AktifUsrList”)

sNewUserName = Decrypt(request.cookies(”isim”)+ request.cookies(”soyisim”))

if sNewUserName = “” then sNewUserName = “Ziyaretci-” & AdZero(CInt(application(”Ziyaretci”)))

sLastActionTime = Time

sUserInfo = sNewUserName & “<|>” & sLastActionTime & “<|>” & sLastPageViewed

dOnlineUsers.Add Session.SessionID sUserInfo

application.lock
application(”AktifUsr”) = application(”AktifUsr”) + 1
application(”Ziyaretci”) = application(”Ziyaretci”) + 1

if application(”TodaysDate”) <> Date() then
application(”PageViewsToday”) = 0
application(”ZiyaretciToday”) = 0
end if
application(”ZiyaretciToday”) = application(”ZiyaretciToday”) + 1
application(”TodaysDate”) = Date()
application.unlock

End Sub

Sub Session_OnEnd

on error resume next
dOnlineUsers.Remove Session.SessionID

application.lock
application(”AktifUsr”) = application(”AktifUsr”) - 1
application.unlock

End Sub
</SCRIPT>

  • Share/Save/Bookmark

Tags: , , , , ,
Filed under Asp, Internet, Teknoloji, WebMaster | No Comments »

Asp Nasıl Meydana GeLdi ?

Posted on Haziran 7th, 2009

Yeni bir yazı dizisi ile sizlere merhaba diyoruz. Bu yeni yazı dizisinde ASP’yi başlangıç ve uzman kullanıcılar olmak üzere iki bölümde inceleyeceğim. Başlangıç bölümü ASP ye ilk defa başlayacaklar hedef alınarak hazırlanacaktır. Uzman bölümü ise tamamen ASP bilgisi olanların bu bilgileri ile performanslarını artırmaları veya yeni kod teknikleri ile yeni teknolojileri öğrenerek uygulamalarını konu almıştır.

Şu anda okumakta olduğunuz yazı ASP’ye yeni başlayanlar ve geliştirmek isteyenler için hazırlanmıştır. Eğer seviye size düşük geldi ise bir sonraki makaleye başvurmanız tavsiye edilir. Bu yazı dizisinde yer alacak konular okuyucuların yorumları doğrultusunda şekillenecektir. Lütfen anlatılmasını istediğiniz konuyu bana iletiniz.

World Wide Web (www) bir dizi deney sonucu olarak CERN labaratuarlarında uzun süren çalışmalar sonucunda geliştirilmiştir. Tim Berners-Lee nin başkanlığını yaptığı geliştirme grubu internet üzerinden dataların uzak yerlere iletilmesi üzerine yaptıkları araştırmalar sonucunda HTTP denilen protokolü oluşturmuşlardır. Ve bu protokolle birlikte HTML denilen basit ve esnek olan programlama dili bulunmuştur. Bu dil web browserler üzerinde metin ve grafik görüntülemeye imkan veriyordu. Ve yine bu dille (HTML) sayfalar arasında geçişe olanak tanıyan “Link” deyimide doğmuş oldu.

Bu yeni başlayan akım hızla geliştirilerek şu anda kullanılmakta olan HTML 4.0 versyonuna kadar ilerlemiştir. Günümüzde kullanılan HTML ilk bulunana göre bir çok ekstra özellik içermektedir. Bu özellikler içinde en önemli olanı esnek metin biçimlendirmedir. (<font> elementi yardımı ile) ikinci olarak sayfa yapısının tamamen esnek şekilde yapılandırılmasıdır (Tablo ve Frame’ler kullanılarak).

HTML dilinin standartlaşması ile metinler grafikler resimler ve diğer tüm belgeler network üzerinden diğer kullanıcılar ile paylaşılmaya başlandı. Fakat içerik yapısı tamamen sabitti ve herşey HTML içinde tanımlıydı değiştirilemezdi. Server’ın (sunucu) sunduğu dosyaları istemci (client) işletim sistemi farklılığı olmadan işleyebiliyordu.

HTML in gelişmesi ile birlikte kullanıcılara web sayfalarına bilgi girebilmelerine olanak tanında (<input> elementi yardımı ile). Bu şekilde bir çok uygulama geliştirildi çünkü artık kullanıcı da sunucuya bilgi gönderebiliyordu. Fakat çoğu uygulamada bu kullanıcıdan gelen bilgilerin anında işlenmesi ve yeniden bir text bazlı HTML dökümanı hanine getirilmesi gerekiyordu. Bu ise hiç hızlı bir yöntem değildi.

Bu zorluğu aşmak isteyen geliştiriciler kolları sıvıyarak CGI (Common Gateway Interface) arabirimini geliştirmeye başladılar. Bu arabirimi standart haline getirdiler ve tamamen “C” dili üzerine kurdular. Cgi-bin dizinide bu şekilde doğmuştur (“bin” terimi derlenmiş “C” kodu olmasından dolayı “binary code” anlamında eklenmiştir). İlk uygulamalar derlenmiş ufan progr*****lar halinde olmuştu. Fakat bu haliyle bile kullanışlı değildi çünkü dosya içinde yapılacak en ufak değişiklikte bile yeniden derlenmesi gerekmekteydi. Buda CGI ın kullanımını olumsu yönde etkiliyordu.

Bu kısıtlamaları kendine sınır olak görmeyen geliştiriciler yeni bir script dili geliştirdiler. Bu dil “Practical Extraction and Reporting Language” yani PERL adını aldı. Bu dil sunucu ile iletişim halinde olan ilk dildi yani “C veya C++” dilleri ile yazılan scriptin her seferinde derlenmesi derdi ortandan kaldırılmış oldu.

Perl hala populer bir dil olarak çoğu uygulamada özellikle de Unix ve Linux tabanlı sistemlerde kullanılmaktadır.

Server-Tabanlı Script Teknolojileri
Şimdiye kadar anlatdığım CGI dilleri web sunucusu üzerine bir yama yapmadan yada ekstra bir program yüklemeden çalışmamaktadır. Bu programlar kullanıcıdan gelen isteği algılar ve isteğe göre dosyayı okur daha sonra onu sunucu içinde işler ve bir çıkış dosyası oluşturarak kullanıcıya sunarlar.

Perl ilk populer sunucu-tabanlı uygulama geliştirme dili olarak litaratüre geçmiştir. Fakat bu dil çok fazla gelişim geçirmiştir. Özellikle de Unix ve Linux tabanlı sunucularda yeni nesil programlama dili olan PHP (Personal Home Page) ye yerini bırakmıştır.

Microsoft firması web sunucu sektöründeki en önemli atılımını “Windows NT 3.51” ve bu işletim sistemine entegre halde olan “Internet Information Server 1.0” (IIS) sayesinde yapmıştır. Bu yazılım geçmişe dönük olarak CGI desteklemekle (her şekilde C ve C++ dili ile geliştirilmiş uygulamaları) birlikte yeni bir arabirim içeriyordu.

Bu arabirime “Internet Server Aplication Programing Interface” yani ISAPI adı verilmiştir. Bu arabirim sayesinde web sunucu perl dilinin tüm esnekliği standart hale getirilmiş oldu. Bu atılımla birlikte tüm yazılım geliştirciler ISAPI ile uyumlu olan yazılımlar geliştirmeye başladılar.

Microsoft ISAPI ile berabe yeni teknoloji olan ASP’yi duyurdu. ASP teknolojisi IIS ile ISAPI sayesinde bağlanmış oldu. ASP den önce en çok “Internet Database Connector” (IDC) kullanılmaktaydı.

ASP ile IIS ilişkisi
ASP sadece kendisi için yazılmış olan DLL i kullanır (asp.dll). Bu dosya standart olarak web sunucu da yer almaktadır (sadece IIS 1.0 sonrası) (Winnt\System32\ inetsrv dizininde yer almaktadır). Bu DLL sadece ASP dosyalarını (genellikle .ASP uzantılıdırlar) okuyup içerisindeki script komutlarını işlemek ve sonuçlarını HTML ve metin içeriği ile birlikte Web gözatıcısına yollamak görevini üstlenir.
IIS Uygulama Yapıları
IIS içerisindeki işlemleri daha iyi anlayabilmek için uygulama yapılarının windows içinde nasıl çalıştığını anlamalıyız. Web sunucudaki (IIS) her web sitesinin sunucu üzerinde yer alan bir kök dizini vardır. Varsayılan (Default) web sitesi otomatik olarak c:\inetpub\wwwroot dizinini kendine kök dizini atar (değiştirilebilir). Her yeni açılacak web sitesi için bir kök dizini belirlenmesi zorunludur. Sunucu üzerindeki web sitelerini görmek için IIS yönetim arabirimi olan “Internet Service Manager” programı kullanılır.
IIS üzerinden default web sitesine sağ tıklayıp özellikler seçeneğini seçtiğimiz zaman açılacak olan “default web site özellikleri” ekranından “home directory” tabına tıklanır. Gelecek olan sekmeden “configration” butonuna basarak uzantılar ile ilişkilendirilen arabirimler görülebilir.
ASP dosyalarının işletilmesi
Asp uzantılı dosyaların asp.dll yardımı ile derlendiğini bilmekteyiz peki ya bu derlenme nasıl olmakta.

Birinci basamak olarak asp dosyası içerisinde server taraflı kod olup olmadığı denetlenir. Eğer dosya içerisinde sunucu taraflı işletilecek bir kod bulunmaz ise IIS tarafından direkt istemciye gönderilir. Bu windows 2000 de yeni bir özellik olarak eklenmiştir. Bu sayede .asp uzantılı dosyaları kullanmamıza olanak tanır (içerisinde sunucu taraflı çalışacak kod bulunmayan dosyalara bile asp uzantısı verilebilmektedir).

Eğer DLL içinde server taraflı çalışacak bir kod olan dosya ile karşılaşırsa; satır satır bu dosyayı işleterek script blokları içerisideki komutları işletir ve çıktırısını yine aynı yere gelecek şekilde bir çıkış dosyasına kaydeder. Bu dosyada istemci bilgisayarına gönderilerek işlem tamamlanır.

Bilgi : IIS in ilk versiyonlarında DLL asp dosyalarını satır satır okuyup satır satır işleyip yine satır satır çıktı alırdı. Buda performansta ciddi bir düşme meydana getirirdi.

ASP ile IIS ilişkisi
Asp script motoru (asp.dll) dosya içerisinde sunucu taraflı çalışacak kod olup olmadığını iki şekilde anlar:

<% ve %> kullanarak

En çok kullanılan yöntem olup script bloğu başlangıcına “<%” ve sript bloğu bitişine “%>” yazılarak arasında kalan kısıma sunucu taraflı kod yazılır.

CODE
<HTML>
<Body>
Bu bir HTML metinidir
<%
Rem burasi sciprt bloğudur
%>
</Body>
</HTML>

********** elementini kullanmak

Nadir olarak kullanılan bu yöntem ile sunucu taraflı kodun yer aldığı script bloğunu ********** elementi ile açıp </scritp> elementi ile bitirilmesi baz alınmıştır. Bu şekilde ki kullanımda element içerisine yazılacak olan “Runat” özelliği sayesinde istemci veya sunucu taraflı çalışma özelliği eklenmiştir.

CODE
<HTML>
<Body>
Bu bir HTML metinidir
<script runat=”server”>
Rem burasi sciprt bloğudur
</script>
</Body>
</HTML>

Bilgi : Server Side Includes (SSI) kullanarak harici dosyaları da asp dosyamız içerisine dahil edebiliriz. Bu konuyu ilerideki derslerimizde ve uzmanlar için asp yazı dizisinde ayrıntılı olarak ele alacağız.
Script Dilini Belirlemek
IIS standart olarak iki script motoru (scripting engine) ile beraber gelir. Bunlar “VBScript” ve “Jscript” dir. Bu motorlar birlikte bulunurlar. Bunlar dışında TCL ve PerlScript gibi diğer script motorlarıda mevcutdur fakat bunlar IIS ile beraber gelmez sadece sonradan eklenir.

ASP ye biz hangi script motorunu kullanması gerektiğini söyleyebiliriz. Bu genelde standart olarak IIS de ayarlanmış haldedir. Bu tanımı yapmanın en kolay yolu ASP sayfamızın ilk satırında özel içerik tanımı yapmaktır. Aşağıdaki şekilde yapılır.

CODE
<%@Language = “dil”%>

Bu şekilde sayfanın VBScript mi yoksa Jscript mi kullanacağı tanımlanmış olur. VBScript için

CODE
<%@Language = “VBScript”%>

yazabiliriz. Aynı Mantıkta Jscript için

CODE
<%@Language = “JScript”%>

Bu tanımlama yapılsın yada yapılmasın script bloğumuzu ********** elementi ile tanımlamışsak istediğimiz dili oradada tanımlayabiliriz.

CODE
<HTML>
<Body>

Bu bir HTML metinidir

<script Runat = ”server” Language = “VBScript”>
Rem burasi sciprt bloğudur ve dil olarak VBScript Kullanılmıştır
</script>

<script Runat = ”server”
Language = “JScript”>
Rem burasi sciprt bloğudur ve dil olarak JScript Kullanılmıştır
</script>

</Body>
</HTML>

  • Share/Save/Bookmark

Tags: , , , , , , , , , , , , , , , , , , , ,
Filed under Asp, Internet, Teknoloji, WebMaster | No Comments »

HTML komutları ve kullanimları

Posted on Haziran 7th, 2009

1 HTML komutlari ve kullanimlari:

1.1 Temel bileşenler: html head title meta ve body
Bir WEB sayfasının standard bileşenleri şunlardır:
<html> ve </html> : sayfanin baslangic ve bitisini belirtir.
<head> ve </head> : sayfanin baslik bilgileri ‘title’ ‘meta’ vs. buraya yerlestirilir.

<title> ve </title> : sayfanin iceriginin ne oldugunun tanitilmasinda kullanilir. Sayfada gorunmez ama netscape bunu sayfayi tanimlamakta kullanir.

******> : sayfanin icerigi hakkinda www tarayicilarina bilgi saglamak icin gereklidir.

<body> ve </body> : sayfanin iceriginin baslangic ve bitisini belirtmekte ve sayfa hakkindaki genel tanimlamalari yapmakta kullanilir.
Yukaridaki bu komutlarin bir web sayfasinin icindeki siralari asagidaki gibidir. Bir yazi editoru (joe pico xedit edit vs.) ile ilk ornegimizi yazarsak:

<html>
<head>
<title>Bir HTML Denemesi</title>
****** name=”description” **********html sayfasi icin bir kullanim ornegi”> </head>
<body bgcolor=white>
‘Bu sayfa insa halindedir’ ya da ‘this page is under construction’ web sayfalarinda ille de olmasi gerektigi dusunulen sacma yazilardir. </body>
</html>

Aslinda en basit web sayfasi soyle olabilir:

<html>
Benim neyim eksik?
</html>

sondaki ‘</html>’ yi koymasak dahi www gosterici programi (lynx netscape …) bunu bir HTML sayfasi olarak yorumlayacaklardir.
1.2 Renkler body font ve h1..h6

Onceki ornekte ‘<body color=white>’ diye asagidakinin basitlestirilmis bicimini kullanmistik:

<body font=purple bgcolor=#FFFFFF text=black link=blue vlink=#808090>
Burada font ile kullanilan genel yazilarin rengi
bgcolor ile arkaplan rengi
text ile tanimsiz yazilarin rengi
link ile uzerine gelince el hareketi cekilen yazilarin rengi
vlink ile de secilmis baglarin rengi belirlenir.

renk belirtmek icin o rengin ingilizce adi ya da RGB degerleri onaltilik systemde verilir. RGB deki siraya gore 00-FF arasi uc deger kullanilir. Hepsi sifir ise hicbir renkten karistirilmaz. hepsi FF ise her renk maksimum oranda kullanilir ve beyaz elde edilir.
Ornegin salt bir kirmizi #FF0000 ile elde edilir.

<font color=…> ve </font> arasindaki yazilar belirtilen renkte yazilir.
<h1> ve </h1> den <h6> ve </h6> ya kadar standard yazi tiplerinden biri secilerek yazi yazilir. h1 ile belirtilenler h6 ile tanimlananlardan daha buyuktur.

ornegin:

<html>
<h1>Sayfa basligi icin uygun buyuklukte harfler</h1>
<h4>Bu harfler sanirim yazi icin yeterliler</h4>
<h6> Gozleriniz bozuk degilse ve her gun A vit***** aliyorsaniz bu yazi sizin icin okunabilir olmali.</h6>
</html>

1.3 Yazilari bicimlendirmek: kalin yatik ortalanmis vs. …
Onceki ornekte <h1> <h2> … ile yazilarin buyukluklerini ayarlamanin basit bir yolunu gormustuk. HTML sayfamizin yazilarina biraz daha kisilik kazandirmak icin asagidaki komutlari da kullanabiliriz.
<b> ve </b> arasindaki yazilar koyu gorunur.
<i> ve </i> arasindaki yazilar ise italik basilir.
<blink> ve </blink> arasindaki yazilar ise yanip soner.
<center> ve </center> arasindaki yazilar ortalanir.
<pre> ve </pre> ile sinirlanan yazilarin goruntusunde ayarlama yapilmaz. Yani birden fazla bosluk varsa bunlar bir tane olacak sekilde azaltilmaz.
<p> paragraf basi yapmak icin kullanilir.

<br> bir satir atlamak icin kullanilir.

<hr> bir cizgi ceker.

1.4 Sayfada resim gostermek

En basit sekliyle bir sayfaya resim koymak icin asagidaki komut su sekilde;

<img src=”dosya-adi” alt=”…” align=… >

kullanilir.

Burada dosya-adi gosterilecek grafik dosyasinin (gif ya da jpg tipinde) bulundugu yer ve adidir. Baglanilan html sayfasi ile ayni dizinde bulunan resimler icin yer adi belirtmeye gerek yoktur.

Alt ile ise lynx kullanicilarinin gorebilecegi bir aciklama yazmis oluruz.
Align ile de resmin konumunu belirleriz.

Ornegin:

<img src=resim.gif align=right> ile resmin saga yanasik olarak cizilmesini saglariz. ‘right’ yerine ‘left’ ‘center’ ‘middle’ gibi konum bildirici bir baska sozcuk de kullanilabilir.

Ayrica yukaridakilere ek olarak ‘border’ ‘width’ ‘height’ belirteclerini de <img …… > icinde kullanabiliriz. Bunlardan ‘border=’i kullanarak resmin cercevesini belirleriz; border=0 dersek hic cerceve cizilmez.
Width ve height ile resmin boyutlarini belirleyebiliriz. Bunlardan sadace birini verirsek resmin boyutu orantili olarak cizilecektir. Yani <img src=resim.gif width=300> demissek ve de resmimiz aslinda 100 nokta genisliginde 50 nokta yuksekliginde idiyse ekrana 300 nokta eninde ve 150 nokta yuksekliginde cizilecektir. Her iki degeri de (width=… height=…) kullanmissak
Bu arada sayfanin internetten indirilirken hizli gosterilmesini istiyorsak her resmin width ve height ozelliklerini kullanmaliyiz. Bu sayede browser (gosterici) progr*****z resimlerin yuklenmesini beklemeden cevrelerine yazilari yerlestirebilecektir.

Sayfanin hizli geliyor gibi gorunmesini saglamanin bir yolu da ‘lowsrc’ belirtecini <img …..> icinde kullanmak. Eger kullandigimiz resimlerin bir de bulanik/niteliksiz/siyah-beyaz ama az yer tutan bir benzerini daha yapar ve bunu <img src=”resim.gif” lowsrc=”hizliresim.gif” alt=”[resim]“> seklinde tanimlarsak ilk once hizliresim.gif yuklenip gosterilecektir. Bu sayede bulanik iken yavas yavas netlesmeye baslayan resimler belirir sayfamizda. Bunun yarari ise sayfaniza bakan kisinin cabuk karar vermesini sagliyor olmasindadir.

1.5 HTML sayfasina bag (link) yerlestirmek

<a> ve </a> : HTML’nin temeli olan bu komutlarla bag (link) yapilir.
<a href=”hedef bag”> Aciklama </a> Biciminde kullanilir.
Aciklama denilen kisim ister yazi ister bir grafik ya da herhangi bir nesne olabilir. “hedef bag” kismi ise yerel kaynaklari gosteren bir dosya adi ya da uzak bir makinadaki bir baska nesneyi (yazi grafik video vs.) gosteren bir bag (link) olur.

Bu linkler mevcut internet araclarindan biridir.
Ornegin:
http:// ftp:// telnet:// gopher:// news:// bu araclardan bazilaridir.
Bunu kullanirken;

<a href=”telnet://orca.cc.metu.edu.tr/> Orca’ya Netscape icinden baglanmak icin buraya tiklayin</a>

yazarak telnet aracini bir bag (link) olarak sayfamiza yerlestirmis oluruz.
Ya da;

<a href=”resmim.jpg”>Neye Benzedigimi Gormek Icin Buraya Bas</a>
Yukarida adi gecen resim bu web sayfasi ile ayni dizinde (directory) olmalidir.

Baska sekilde ornekler ise:

<a href=”ftp://ftp.metu.edu.tr/pub/cica-win95/”> Windows95 icin Uygulama dosyalari</a>

<a href=”nntp://news.metu.edu.tr/> Netnews 60000 den fazla konuda insanlarin yazistigi bolge</a>

<a href=”news:comp.sys.cbm”> NetNews’in Commodore bilgisayarlarina iliskin tartismalari</a>

Ve internetin en gozde kullanimi: bir web sayfasindan baska bir web sayfasina baglanma:

<a href=”http://www.physics.metu.edu.tr/~filker/nukle er/”> Turkiye’de nukleer enerji tartismalari</a>

dikkat ettiyseniz yukaridaki ornekte sayfanin hangi dizinde oldugu (…ilker/nukleer/”) belli ama hangi dosyada oldugu yazilmamis. Boyle bir durumda gosterici program dosyanin adinin ‘index.html’ oldugunu ongorur.
Kendi dizininizdeki bir sayfa icin:

<a href=”ihd.html”> Insan Haklari Dernegi ve pismis tavuk icin buraya tiklayabilirsiniz.</a>

1.6 Baglar yardimiyla etkilesimli kullanim ornegi
Bir baga (link) ard arda tiklamak yoluyla slow motion biciminde ardisik resim gosterebilirsiniz. Bu kullanim en basit sekliyle bir Bilgisayar Destekli egitim sayfasinda kullanilabilir. Amac

Bunu yapmak icin once tek bir resim ve o resmin link olarak tanimlandigi bir web sayfasi hazirlamalisiniz:

<html>
<title>sayfa1</title>
<body>
<a href=”sayfa2.html”><img src=”resim1.gif”></a>
</body>
</html>

sonra da ikinci sayfa da hazirlanmali:

<html>
<title>sayfa2</title>
<body>
<a href=”sayfa3.html”><img src=”resim2.gif”></a>
</body>
</html>

… bu sekilde devam edilir.

ve ilk sayfa yuklendikten sonra resmin ustune tiklandiginda ikinci sayfa ve icindeki resim yuklenir.

Iyi hazirlandiginda bu basit HTML kullanim sekli ile www-programciligina (Java cgi-bin …) bulasmadan da etkili ’sunu’ ve ‘anlatilar’ yapilabilir.
1.7 Ekran duzenine iliskin daha cok komut:

<multicol cols=2> … </multicol> : Aradaki yazilar cols= ile belirtilen sutunlara ayrilarak ekrana basilirlar. Sadece Netscape3.0 ve ustunde calisir. Sutun icindeki yazinin sutunun ne kadarini kaplayacagini width parametresi ile belirtiriz. <multicol cols=3 width=75%> gibi. Burada boslugu yuzde yerine piksel olarak da verebiliriz. Ayrica iki sutun arasindaki boslugu da gutter parametresi ile veririz: <multicol cols=2 width=500 gutter=25> yazilar… </multicol>
<spacer ******… size=… height=… width=… align=…> : Bununla paragraf baslari icin bosluk birakmak mumkun. Ornegin
<spacer ******block size=48> ile 48×48 piksellik bir bos kare alan yaratmis oluruz. Burada block yerine vertical ya da horizontal kullanmak da olasi. Ayrica <spacer ******block width=320 height=200 align=right> ile 320×200′luk bir bosluk yaratip bunu ekranda saga dayatmis oluruz. Gene align komutundan sonra right left center absmiddle gibi diger konum belirteclerini kullanabiliriz.

: 1 karakterlik bosluk birakmak icin kullanilir. Basit tablolar yapmak icin kullanilabilir. Ornegin: <h3><br> yil ay gun <br> — — —<br></h3>

1.8 Sayfalarda tablo kullanimi

Genel kullanim:

<table [seçenekler]>
<tr [seçenekler] ><td [seçenekler] > sutun 1 yazilari </td><td [seçenekler] >sütun 2</td><td> sütun 3…..</td> </tr>
<tr><td>2.satirin 1. sütunu</td><td>2. sütunu</td><td>3. sütunu </td></tr></table>

Tablolar satirlar ve sütunlar seklinde ayrilmis hücrelerden olusuyor. Her yeni satira baslamak için <tr> etiketini her yeni sütun için ise <td> etiketini kullaniyoruz.

Bir örnek ile incelersek:

<table border=1 width=200 cellspacing=2 cellpadding=2> <tr>
<td align=top width=”50%”>Bellek tipleri</td> <td align=top width=”50%”>FPM<br>EDO<br>SDRAM<br>DDR RAM<br>RAMBus</td> </tr>
<tr>
<td align=top width=”50%”>Disk tipleri</td> <td align=top width=”50%”>MFM/RLL<br>ATA IDE<br>ULTRA ATA<br>SCSI</td> </tr>
<tr>
<td align=top width=”50%”>Islemci tipleri</td> <td align=top width=”50%”>RISC<br>CISC<br></td> </tr></table>

Burada 2×3′lük bir tablo olusturduk. Tablomuz 1 pixel kalinliginda cerceveye sahip (border=1) hücreler arasI 2 pixell bos ve 2 pixellik bir kalinlik efektimiz var (cellspacing ile cellpadding).

Örnekte hücre genisliklerin yazI uzunluguna göre otomatik ayarlanmamsI için genislikleri kendimiz belirledik (width=”50%”). Bunu pixel olarak da belirlememiz mümkündü: <td width=”100″> ile.
Hücreler içindeki yazIlarIn nasIl yerlestirilecegini ise align=”yer” ile belirtiyoruz. Burada “yer” yerine “top” “bottom” “left” “right” ve “center” kullanabiliriz.

Ve eger bir hücrenin iki hücre genisliginde veya yüsekliginde olmasini istiyorsak colspan ve rowspan seçeneklerini de kullaniyoruz. Önceki örnege bir baslik ekleyecek olursak:
<tr><td align=center colspan=”2″>Bilgisayar Ana Bilesenleri</td></tr>
Tablolari icice de kullanmamiz mumkun. Bu sekilde bir kullanimla bir www sayfasindaki resim ve yazilari tam istedigimiz gibi konumlandirmamiz mümkün olur.

1.9 Basit bir HTML sayfasi icin gereken son noktalar
Daha once kisaca deginildigi gibi ilk yuklenecek sayfanin adi standart olarak ‘index.html’ olarak belirlenmistir. Dolayisiyla ilk sayfanizi bu sekilde adlandirirsaniz;

http://www.physics.metu.edu.tr/~filker/ilksayfa.ht ml
yerine

http://www.physics.metu.edu.tr/~filker/ gibi daha kisa olan bir adres kullanabilirsiniz.

2 Ileri duzey bilgilerden secmeler

2.1 Sayfalara ‘meta’ komutu ile kimlik vermek

Web sayfamizin FindIt Excite Crawler Altavista vs. gibi tarayici programlar tarafindan icerigine uygun olarak dizinlerine aktarilmasini istiyorsak ****** …> komutunu kullanmak uygun duser. Ayrica gene bu komut sayesinde sayfamiza bagl***** bir baska www adresine yonlendirebilir bu yolla bir takim hareketli sayfalar dahi hazirlayabiliriz.
. Sayfanin kimligi:

Sayfayi tanimlamak icin uc ayri meta komutu yeterli. Bunlarla sayfa hakkinda kisa bir paragraf ve sayfayi hazirlayanin adini verebiliriz.

****** name=”description”
**********Bu sayfada Tusiad raporunun universitelerde
gerceklestirdigi degisim sonucunda universitelerin birer
“bilgili-ogretim-iscisi” makinasi durumuna gelmesi
tartisilmaktadir.”>

Yukarida sayfamizi kisaca tanitmis olduk. Bu yazi tarama sonucunda arayan kisiye gosterilecegi icin kisa oz ve icerige uygun olmasi gerekir.
Tarayicilar artik sayfanin tumunde gecen sozcuklere ve bu sozcuklerle ilgili diger sozcuklere bakarak arama yapsa da sayfanizin hangi olcutlere gore aranmasi gerektigini sizden iyi kimse bilemez. Onun icin sayfayi tanimlayan anahtar sozcukleri de su sekilde verebiliriz:
****** name=”keywords”
**********universite gelecek tusiad ogrenim ogretim egitim 21. yuzyil Turkiye sermaye yonetim etki rektor ozerk”>

Ve son kimlik bilgisi olarak sayfadan sorumlu kisiyi belirtiriz:
****** name=”author”
**********Ilker Ficicilar”>

Hazirladigimiz butun sayfalara bu turden kimlik vermeyi aliskanlik haline getirirsek interneti arastirmalari icin bir kaynak olarak kullananlara epey yardim etmis oluruz.

. Sayfa yonlendirme:

Eger yakinda www adresimiz gecersiz olacaksa ve yeni bir www adresine simdiden tasinmissak

<html>
<title>Ilker’s CBM Projects</title>
****** http-********refresh”
**********3;url=http://www.geocities.com/SiliconVal ley/Vista/5666/”>
<body>
<h1><center>This page is moved to a new address<br>
<blink> http://www.geocities.com/SiliconValley/Vista/5666/ </blink>
<br></center></h1>
<p><p><left>
<h3><font color=blue><br>If your browser does not direct you to the new address in 3 seconds then please
<a href=”http://www.geocities.com/SiliconValley/Vista/ 5666/”>
click here</a>.
</font></h3>
</left></body></html>

Bu ornekte ****** http-********refresh” …> diyerek www gosterici programina yeni bir sayfa yuklemesini istedigimizi belirtiyoruz.
Bu yuklemeyi kac saniye sonra yapmasi gerektigini ‘****** ..’ nin devamindaki ‘**********3;….”>’ yazisi ile belirliyoruz. Buradaki ‘3′ yerine saniye cinsinden herhangi bir sure belirtebilirsiniz. ‘0′ yazarsaniz dogal olarak hemen diger sayfayi yuklemeye baslar.

Yonelinen sayfanin adresi de ‘ … **********saniye; url=http://…”>
biciminde veriliyor.

Yukaridaki ornegin gerekli kismini bir daha yazarsak:
****** http-********refresh”
**********3;url=http://www.geocities.com/SiliconVal ley/Vista/5666/”>
Evet burada kendi istegimize gore degistirecegimiz yalnizca iki yer var: 3 sayisi ve url= isaretinden sonraki adres kismi.
. Basit sayfa canlandirma

Eger yukaridaki gibi bir ‘meta’ komutu iceren ardisik bir duzen iceren ayri ayri sayfalar hazirlarsak ve ‘meta’ komutunun adres kismina siradaki sayfanin adresini verirsek hayal gucumuz olcusunde hareketli sayfalar hazirlayabiliriz.

Ornegin birisi sayfamiza baglandiginda ekranda 3 2 1 seklinde bir gerisayim gormesini ve ardindan asil sayfanin yuklenmesini istiyorsak su sekilde sayfalar hazirlariz:

Diyelim ki http://www.physics.metu.edu.tr/~filker/
adresine baglanilmasini istiyoruz. Bu durumda index.html dosyasina ‘3′ sayisini koyup bu sayfayi siradaki ‘2′ rak***** iceren sayfaya yonlendiririz. En sonunda da hic bir yonlendirme icermeyen asil sayfamiza geliriz. Dolayisiyla ‘index.html’ ‘A.html’ ‘ B.html’ ‘ asil.html’ adlarinda dort sayfa hazirlamamiz yeterli olacaktir:
index.html icin:

<html>
****** http-********refresh”
**********1;url=http://www.physics.metu.edu.tr/~fil ker/A.html”>
<body>
<h1><center> 3 </center></h1>
</body></html>

A.html icin:

<html>
****** http-********refresh”
**********1;url=http://www.physics.metu.edu.tr/~fil ker/B.html”>
<body>
<h1><center> 2 </center></h1>
</body></html>

B.html icin:

<html>
****** http-********refresh”
**********1;url=http://www.physics.metu.edu.tr/~fil ker/asil.html”>
<body>
<h1><center> 1 </center></h1>
</body></html>

ve son olarak asil sayfamizi hazirlariz:

asil.html :

<html>
<body bgcolor=black text=red>
<h2>
Bu sayfa ‘WWW Sayfama Hos Geldiniz’ yazisi icermemektedir :-) <br>
<p>


vs.
</h2>
<hr>
<p><h5>
sayfayi en son 28 Subat 2000 tarihinde guncelledim.
</h5><br>
</body></html>

Biraz zor ve yavas olsa da bu sekilde animasyonlar (canlandirma) TV yayinciligi (bir arkaplan programi ile surekli yeni resimler ve yeni bir index.html hazirlayarak) ve anlik bilgi sunumu ( borsa fiyatlari ) gerceklestirilebilir. Ama basit resim canlandirmalari icin sanirim ‘animated gif’ turu ‘.gif’ dosyalari daha uygun duser.
2.2 Resimlerde ‘MAP’ kullanimi

Map’ler bir resmin degisik yerlerine tiklandiginda degisik baglarin yuklenmesi veya degisik bir cgi-bin isinin yapilmasi olarak tanimlanir.
Burada kullanacagimiz resmin ‘.gif’ biciminde olmasi gereklidir. Sayfanin icinde bu resmi tanimladigimiz ‘<img …’ belirtecinin icine bir kac unsur daha ekleyerek ve bir de ‘map’ (harita) alaninin kisimlarini sekilleriyle birlikte tanimlayarak isimizi bitiririz.

. Resmin betimi:

<img src=”filanca.gif” ISMAP usemap=”#falanca” width=160 height=100>
ISMAP resmin bir harita oldugunu.
usemap=”…” hangi harita tanimini kullanmasi gerektigini www gosterici programina soyluyor.

. Haritanin tanimi:

<map name=”falanca”>
<area shape=”rect” coords”1115950″ href=”dikdortgen.html”>
<area shape=”circle” coords=”8010040″ href=”daire.html”>
<area shape=”polyg” coords=”10110150110801909110″ href=”ucgen.html”>
<area shape=”default” nohref>
</map>

name ile belirttigimiz isim ‘<img ..’ icinde usemap=”#…” ile kullandigimizin aynisi.
shape belirteci ile dikdortgen daire ya da poligon tanimlayabiliyoruz. Dikdortgenin koordinatlarini: X-sol_ustY-sol_ustX-sag_altY-sag_alt biciminde ‘coords=”…” ‘ kisminda belirtiyoruz. ‘href=”…” ‘ bolumu ise bu dikdortgen alana tiklanildiginda neyin yuklenmesi gerektigini soyluyor.

Cember icin X-merkezY-merkezR-yaricap biciminde koordinat tanimliyoruz.
Poligonu tanimlarken sirayla ker bir kosenin XY biciminde koordinatlarini giriyoruz. Dikkat etmemiz gereken husus poligonun noktalarini saat-yonunde tanimlamamiz gerektigidir. Ayrica poligonu kapamaya da tarayici programlar arasinda uyumsuzluk nedeniyle dikkat etmeliyiz. Yukaridaki ucgen ornegini incelemek aslinda poligon tanimi yapabilmek icin yeterli. Ucgen icin dort nokta kullandik (dorduncu ilkinin dibinde). Ayni zamanda bu ucgenin XY betimlemeleri de saat-yonunde girilmis (noktalari kagit uzerinde yaklasik olarak isaretlerseniz bu ’saat-yonu’ kavr***** daha iyi anlayabilirsiniz).
son olarak da ‘<area shape=”default” nohref>’ ile resmin diger bolgelerine tiklanildiginda hic bir sey yapilmamasi gerektigini soyluyoruz.
Evet bir ‘map’ tanimi icin gerekenler bu kadar.

2.3 Dinamik HTML

Asagidaki ornekte mouse yazinin uzerine geldiginde tiklamaksizin yazi degisir:

<h2 style=”colorurple;” onmouseover=”detay.style.display=””
onmouseout=”detay.style.display=’none’”>Flash Haber</h2>
<div id=”detay” style=”display:’none’; color:red;”>
Son gelen haberlere gore Yunanistan Turkiye’ye savas acti…
</div>
<font color=blue>Ayrintilar 19.30 Ana haber bulteninde</font
resmin oranini istedigimiz gibi degistirmek mumkun olur. kullaniciya konuyu belli bir sirayla vermek ve konu icindeki iliskilerin anlasilmasini kolaylastirmak. tablo sayfada 200 pixel genisliginde yer tutacak (width=200) anahtar sozcuk listesi bunu kullanicalara onceden duyurmali ve onlari yeni adrese yonledirmeliyiz. Bunun icin eski sayfamizi su sekilde degistirebiliriz.:

  • Share/Save/Bookmark

Tags: , , , , , , , , , , , , , , , , , ,
Filed under Internet, Teknoloji, WebMaster | No Comments »

ŞifreLi Sayfa

Posted on Haziran 7th, 2009

html>

<head>

<*** http-********Content-Type”

**********text/html; charset=windows-1254″>

<*** name=”GENERATOR” **********Microsoft FrontPage 5.0″>

<title>şifre</title>

</head>

<body bgcolor=”#FFFFFF”>

<p><script language=”Javascript”>

<!–

var password = “Şifre Buraya”

var x = prompt(”Lütfen şifreyi giriniz”” “)

if (x.toLowerCase() == password) {

alert(”Şifre doğru Ana Sayfaya Girmek İçin Tamam’a Tıklayın”)

location = “Http://”

}

else {

location = “yanlış girdiniz sayfası”

}

//–>

</script></p>

</body>

</html>

  • Share/Save/Bookmark

Tags: , , ,
Filed under Internet, Teknoloji, WebMaster | No Comments »

Yukarı Kayan YazıLar

Posted on Haziran 7th, 2009

MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=1

scrollDelay=98 direction=up width=169 height=200 align=”center” name=”debono”>

<P align=center>

Buraya İstediğinizi Yazın.

</MARQUEE>

  • Share/Save/Bookmark

Tags: , , , , ,
Filed under Internet, Teknoloji, WebMaster | No Comments »

Günlük Okunma Sayısı

    1
Pagerank