Translate

28 Haziran 2012 Perşembe

Ado.Net 2.0 ve Toplu Güncelleme İşlemleri (Batch-Updates),Mars


Toplu güncelleştirme işlemleri, birden fazla sql ifadesinin (insert,update,delete,select gibi) arka arkaya gelecek şekilde ancak tek bir seferde çalıştırılmasını baz alan bir tekniktir. Ado.Net 2.0 ile, toplu güncelleştirme işlemlerine daha fazla fonksiyonellik kazandırılmıştır. Bu koşul elbetteki toplu güncelleştirme işlemlerini destekeleyen veritabanı sunucuları üzerinde geçerli olmaktadır. Şu an için, yönetimsel kodda yer alan Oracle ve Sql nesnelerinin desteklediği bu fonksiyonelliği kazanmak için aşağıda prototipi verilen ve SqlDataAdapter yada OracleDataAdapter sınıflarına ait olan, UpdateBatchSize özelliği kullanılmaktadır.
public override int UpdateBatchSize {get;set;}
Bu özellik bir anlamda, DataAdapter nesnesinin Update komutu ile veritabanına doğru yapılacak güncelleme işlemlerinin toplu olarak hangi periyotta gerçekleştirileceğini belirtir. Örneğin, 1 varsayılan değeridir ve her bir güncelleme işleminin (insert,update veya delete) her satır için ayrı ayrı yapılacağını belirtir. Daha derin düşünecek olursa, örneğin Sql Sunucusunda yer alan sp_executesql stored procedure' ünün her bir satır için birer kez ilgili komutu (Insert gibi) çalıştıracağını belirtir.
Diğer yandan, bu özelliğe 0 değerini verdiğimizde tüm güncelleme işlemleri tek bir seferde gerçekleştirilir. Bir başka deyişle veritabanına doğru n sayıda güncelleme işlemi varsa, Sql Sunucusunda yer alan sp_executesql stored procedure' ü bu n sayıdaki işlemleri içeren toplu bir komut kümesini tek bir seferde çalıştırılacaktır. Ayrıca UpdateBatchSize özelliğine 0 ve 1 haricinde verilecek olan pozitif değerler, her bir toplu güncelleştirme işleminin kaç iç komut içereceğini belirtmektedir. Konuyu daha kolay bir şekilde anlayabilmek için basit bir Console uygulması geliştirelim.
#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

#endregion

namespace BatchUpdates
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection con = new SqlConnection("data source=localhost;initial catalog=AdventureWorks;integrated security=SSPI");
            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM MailList", con);
            DataTable dt = new DataTable();
            da.Fill(dt);

            DataRow dr;
            for (int i = 1; i <= 5; i++)
            {
                dr = dt.NewRow();
                dr["AD"] = "AD_" + i.ToString();
                dr["SOYAD"] = "SOYAD_" + i.ToString();
                dr["MAIL"] = "MAIL_" + i.ToString();
                dt.Rows.Add(dr);
            }
            da.UpdateBatchSize = 1;
            SqlCommandBuilder cm = new SqlCommandBuilder(da);
            da.Update(dt);
            Console.WriteLine("İŞLEMLERİN SONU");
            Console.ReadLine();
        }
    }
}
Bu uygulamada Ado.Net 1.1 ile yapabildiğimiz işlemlerden farklı bir şey yoktur. Yukon üzerinde yer alan MailList tablomuza SqlDataAdapter nesnesi vasıtasıyla 5 adet satır giriyoruz. Bizim için önemli olan UpdateBatchSize değerinin 1 olarak belirtilmesidir. Uygulamamızı çalıştırmadan önce, Sql Profiler aracını kullanarak yeni bir Trace başlatalım ve Sql Sunucumuzda gerçekleşen işlemleri izlemeye çalışalım. Trace' imiz çalışırken uygulmamamızı yürütecek olursak, Sql Sunucusu üzerinde aşağıdaki olayların gerçekleştirildiğini görürüz.
Şekil 1. UpdateBatchSize değeri 1 olduğunda.
Dikkat edecek olursanız, sp_executesql stored procedure' ü girilen her satır için insert komutunu birer kez çalıştırmıştır. Bunun nedeni UpdateBatchSize özelliğinin 1 değerine sahip olmasıdır. Eğer bu değeri 0 yapıp tekrar çalıştırırsak, bu takdirde kaç satır girersek girerlim tüm satırlar için geçerli olan insert komutları tek bir toplu-komut olarak işlenecek ve tek bir seferde çalıştırılacaktır. Örnek olarak, döngümüzün değerini 20 satır insert edilecek şekilde ayarladığımızı düşünürsek, UpdateBatchSize özelliğine 0 değerini vermek ile, 20 satır için parametre alacak tek bir stored procedure' ü çağırmış oluruz. Uygulamamızda bu kez tüm satırları update ettiğimizi düşünelim ve UpdateBatchSize özelliğine 0 değerini verelim.
for (int i = 0; i < dt.Rows.Count; i++)
{
    dr = dt.Rows[i];
    dr["AD"] ="_DEGISTI";
}

da.UpdateBatchSize = 0;
Şimdi Sql Profiler' da Trace' imizdeki işlemlere bakacak olursa, kaç satır güncellenmiş ise her bir satır için yapılan update işlemlerinin tek bir toplu-komut kümesinde gerçekleştirildiğini görürüz.
Şekil 2. UpdateBatchSize özelliğine 0 değeri verildiğinde.
Elbette daha önceden bahsettiğimiz gibi UpdateBatchSize özelliğine 0 ve 1 haricinde pozitif değerlerde verebiliriz. Bu durumda toplu-komut kümeleri belirtilen sayı kadar iç komut içerecektir. Örneğimizde, UpdateBatchSize değerini 7 yaparsak, her bir sp_executesql çağrısında, içsel olarak 7 satırlık işlem içeren toplu-komut kümeleri olduğunu görürüz.
da.UpdateBatchSize = 7;
Şekil 3. UpdateBatchSize değerini pozitif her hangibir sayı olarak belirlediğimizde.
Örneklerdende görüldüğü gibi, Ado.Net 2.0 toplu-komut güncelleme işlemlerine daha fazla fonkisyonellik katmak amacıyla kullanışlı bir özellik kazanmıştır. Bazı durumlarda, güncelleme işlemlerinin bağlantısız katmandan, veritabanına doğru olan hareketlerinde toplu olarak yapılması network trafiğini olumlu yönde etkileyecek bir gelişmedir. Çünkü, tüm güncelleme hareketleri için veritabanına doğru sadece tek bir tur atılacaktır. Elbetteki devasa boyutlara sahip olan veri kaynakları üzerinde yapılacak büyük çaplı güncelleme işlemlerinde, toplu-komut kümelerini belirli sayılarda komut içerecek şekilde ayarlamakta performans açısından olumlu bir etki yaratacaktır.
Bu makalemizde, kısaca toplu-güncelleştirme (Batch-Update) işlemlerine değinmeye çalıştık. İlerleyen makalelerimizde, Ado.Net 2.0' ın yeni özelliklerine bakmaya devam edeceğiz. Bir sonraki makalemizde görüşmek dileğiyle hepinize mutlu günler dilerim.

C# Programlama Sanatı


Programcılar modern çağın ressamları, heykeltıraşları yani sanatçılarıdır. Programlama da sanatın ta kendisi. Bir başka açıdan baktığımızda da programlama bir bilim, programcı da bilim adamıdır. Bence her ikisi de doğru. Şöyle ki, programcı da sanatçının esin kaynağına yani ilhama dayanarak program yazar, aklına ilginç bir fikir gelir, bu fikri kendi araçlarını kullanarak başlar program halinde vücuda getirmeye.
Programcının en büyük görevi, insanlar ile bilgi arasındaki iletişimi ve bağlantıyı sağlamaktır. İnsan yaşamını kolaylaştıran bu kutsal görev programcı olmayanlarca pek de önemsenmez. Geleceğin sanal şehirlerini kuranlar programcı dediğimiz gizli kahramanlardır. Yeni yazdığı programın kullanıldığını ve yararlı olduğun görmek ona her şeyi unutturur, programcı olmayanların asla anlayamayacağı bir haz verir.
Bilgisayar kullanıcısı sayısı gün geçtikçe geometrik olarak artıyor ama bu tür bir haz bilgisayar kullanıcılarının büyük bir çoğunluğu tarafından asla yaşanmaz. Çünkü bilgisayar kullanıcılarının büyük bir çoğunluğu programcı değildir ve asla da olmayacaklar. Onlar sadece yazılan programları ve içerisinde yazılım gömülü akıllı cihazları kullanırlar.
 

BİR PROGRAMLAMA DİLİ ÖĞRENMEK


Programlama dili öğrenmeyi yabancı dil öğrenemeye benzetebilirsiniz. Mesela her ikinde de öğrenilmesi gereken, o dile özgü bir grup kelime var. Anahtar kelime diye adlandırdığımız bu kelimelerin c# dilindeki sayısı 77 tanedir. C dilinin geleneğini sürdürdüğü için de bu kelimeler küçük harflerle yazılır.

Yabancı dil öğrenirken bir takım yazım ve dil bilgisi kuralları öğrenmek zorundayız. Programlama dilinin yazım ve dil bilgisi kuralları konuşulan dillerin kurallarına göre daha katıdır.

Programlama dili ile yabancı dil öğrenme arasındaki en büyük benzerlik bence her ikisinin de okuyarak öğrenilememesidir. Pratik yapmak zorundayız. Bir müzik aletini çalmayı öğrenirken olduğu kadar çok pratik yapmalıyız hem de. Bir programcı gibi düşünmeye ve kendi kodumuzu kendimiz yazmaya alışmalıyız.

Programlama bir problem çözme etkinliğidir. Programcının tek en önemli kalite göstergesi problemleri bileşenlerine ayırma ve daha küçük parçalara bölerek çözebilme yeteneğidir. Programcının sorumluluğu bu küçük parçaları bir araya getirip çözümü oluşturmaktır. Bu beceri de bence sadece pratik yaparak gelişir. 

PROGRAMLAMA NEREDEN NEREYE


Charles Petzold, bilgisayar devrimini iki evreye ayırır: Birinci evre bilgisayarların tasarlandığı ve yapıldığı zaman, ikinci evre ise onlarca yıl sonra bilgisayarların programcı olmayan kimseler tarafından da kullanılabilir olmasıdır.

İlk programlanabilir bilgisayar 1930'lu yıllarda yapıldı. Uzun bir süre programlama işlemi delikli kartlar gibi mekanizmalar kullanılarak sağlandı. Bilgisayarın kendisine donanım, üzerinde çalışan kodlara da yazılım adı verildi. Bir kaç dekad boyunca donanım ve yazılım birbirine bitişikti. Her makinanın kendine özgü bir komut seti vardı ve bu komutlar başka makinalarda çalışmazdı. Sayısal tümleşik devreler kullanıldığı dönemlerde de bu durum devam etti.

1950'lerin başında mimariden bağımsız bilgisayar dilleri geliştirilmeye başlandı. Bu diller Makine kodu ile karşılaştırıldığında yüksek seviyeli diller olarak aklandırıldı. COBOL, BASIC, FORTRAN gibi diller hala farklı sürümleri ile hayattadır.
 

Derlemek, Yorumlamak


Bilgisayar sadece Makine kodunu çalıştırabilir. Öyleyse yüksek seviyeli dillerle yazılan program kodları Makine konuda dönüştürülmelidir. Derleyici, bir programı tamamen Makine koduna çevirirken yorumlayıcı bu işlemi eş zamanlı olarak yapar.

Bilinen en eski programlama dillerinden birisi de ALGOL dilidir. 1950'li yıllarda uluslar arası bir komite tarafından geliştirildi ve uzun yıllar değişiklikler yapılarak kullanıldı. Hâlâ Pascal, PL/I ve C gibi dillerin temelini oluşturduğu için yaşamını sürdürmektedir. 

C Dilinin Serüveni


Bell Laboratuarlarının etkisi olmadan çağdaş dünyayı düşünmek imkansızdır. 1947 yılında transistor orada icat edildi. 1970’lerde UNIX işletim sistemi orada geliştirildi.Uzun yıllar, büyük bir kısmı Dennis Ritchie tarafından geliştirilen C dili, UNIX işletim sistemi ile ilişkilendirilir. C dili tek harfle temsil edildiğinden bu adın nereden geldiği merak edilebilir: İlk olarak CPL (Combined Programming Language) dili vardı. BCPL (Basic CPL) dili daha sonra CPL dilinden esinlenerek geliştirildi. Sonraları BCPL dilinin basitleştirilmiş bir hali olan B dili ortaya çıktı. C dili de bu B dilinden türetildi. C ismi oradan gelir.
ALGOL ve onun türevi olan dillerde, program parçaları BEGIN ve END kelimeleri arasına yazılır. C ise bu işi küme parantezlerini kullanak yapar. C’de yazılmış programların en belirgin farkı hızlı olmalarıdır. Çünkü C işaretçiler dediğimiz, bellek bölgelerine doğrudan erişmeye yarayan yapılara izin verir. Bazıları C’ye yüksek seviyeli assembly dili der. Çünkü C; bit, byte ve bellek düzeyinde çok iyi çalışır.
Aslında bu yaklaşımın tehlikeli tarafı da var. Yüksek seviyeli dillerin derleyicileri program kodları derlenirken programın çökmemesi ve veri kayıplarına neden olmaması için fazladan kodlar eklerler. C derleyicisi ise hızlı program ortaya koyma adına, fazladan kod eklemez. Bu yüzden, dikkatli davranılmadığında hata oluşturmaya daha elverişlidir. Hatasız program olmaz ise de, C’de bu durum daha yaygındır. Hataların çoğunluğu işaretçi kullanmanın yol açtığı hatalardır.
C, hala çok yaygındır ama bazı açılardan tarih olmuştur. Geleneksel prosedürel diller grubuna dahil edilmektedir. Program içerisinde belirli bir işi yapan ya da algoritmayı gerçekleştiren program parçasına prosedür denir. Bir C programı da, bir grup prosedür ya da fonksiyondan oluşur. Fonksiyonlar, devamlı veriler ile çalışır. Prosedürel yapıda bu veriler ile program kodu iç içe bulunur.
Nesne yönelimli programlama terimini çok sık duymaya başladık. Nesne yönelimli programlama dillerinin (OOP) ilki Palo Alto Araştırma Merkezinde (PARC) geliştirilen SmallTalk dilidir. PARC, Microsoft Windows ve Apple Machintosh’ta da kullanılan grafiksel kullanıcı arayüzü kavramlarını geliştiren Xerox tarafından kurulan araştırma laboratuarıdır.
Nesne yönelimli dilde, programcılar prosedürler yerine sınıflar oluştururlar, kodların ve verilerin birleşiminden oluşan nesneler de bu sınıflardan türetilir. Programlamadaki bu bakış açısı değişimi, çeşitli programlama işlerinde tekrar tekrar kullanılabilecek kodlar yazmaya olanağı sağladı.
C dilinin de nesne yönelimli sürümünü yazmak isteyenler oldu. 1980lerin başında Bjarne Stroustrup tarafından Bell laboratuarlarında C++ (Si plas plas okunur) geliştirildi. C++ dilinin adında geçen ++, C dilinde bir sayıya 1 eklemek için kullanılır, yani sayının değeri 1 artar.
C++ dili, C’nin tüm özelliklerine sahip ama nesne yönelimli olması için bir takım ek özellikler katılmış hali diye özetlenebilir. Ama bu yapı biraz hantal bir yapı oldu. Çünkü C’de olan her şeyi destekleme kaygısı ile garip bir notasyon ortaya çıktı.

Bu hantal yapının yanında, baş edilmesi gereken bir sorun daha vardı. Bilgisayar donanımı hızla gelişiyor. Gereğinden fazla hızlı işlemciler ve gereğinden fazla bellek var. Bir program yazılırken dikkat edilen temel kriterler değişti. Eskiden performans ve ekonomik kaynak kullanımı iken şimdilerde yerini daha hızlı ve hatadan arınmış kod yazmaya bıraktı. Bu da alçak seviyeli yapıdan hızla uzaklaşma ve işaretçi kullanımının azalması demekti. Artık programcılar işaretçi kullanmaktan kaçınıyorlar.

1990’larda Sun Microsystems, C++ dilinden daha esnek bir notasyona sahip olan, daha güvenli kod yazmayı olanaklı kılan bir yapı ortaya koydu, yani Java dilini geliştirdi. 

C#’ın Doğuşu


Borland firmasından ayrılan Anders Hejlsberg, 20002li yılların başında Microsoft için C# (Si Şarp okunur) dilini geliştirdi. C#’taki diyez işareti (şarp), C++ taki ++ ın 2 tanesinin üst üste koyulmuş halidir.

C# Java gibi, C# da C’nin tehlikeli özelliklerini almadı. Ama işaretçiler C#’tan tamamıyla çıkarılmadı. Java ile C# arasındaki diğer bir benzerlik, derleyicinin rolündedir. Geleneksel olarak, derleyici kaynak kodu (yüksek seviyeli dil metin dosyası) makina koduna çevirir. Makina kodu, bilgisayar tarafından çalıştırılabilir bir formdadır. Bu da Microsoft Windows ile Apple Machintosh üzerinde aynı programın çalıştırılamayacağı anlamına geliyor.

C# derleyicisi, kaynak kodu bir ara dile (IL) çevirir. Program çalıştırılacağında ise IL makina koduna dönüştürülür. Bunu kullanıcı fark etmez. Teorik olarak, bu iki adımlı işlem, aynı IL kodunun farklı makinalarda da çalışabilmesine olanak tanır. Ayrıca IL formundaki bir programda bulunan kötü ve zararlı kod işletim sistemi tarafından kolaylıkla tetkik edilebilir.

Online Alışveriş Sırasında Dikkat Edilmesi Gerekenler


Bankacılık işlemlerini gerçekleştirmek, alışveriş yapmak, vergi ödeme, sosyal ağlara kaydolmak, trafik cezası ödeme, iş başvurusunda bulunma, okul ve ders kaydı, ders notları ve bunun gibi bir çok işlem internetten yapılabiliyoruz.
Bu işlemleri yaparken aşağıdaki maddelere özellikle dikkan edin. 
  • İyi bilinen, güvenilir sitelerden işlem yapın.
  • Başka bir internet sayfası üzerindeki ya da e-posta ile gelen bağlantılardan değil de doğrudan internet adresi yazılarak alışveriş sitesine bağlanın.
  • Her türlü sahte site tehdidine karşı dikkatli olmalısınız. Örneğin bankalardan geldiğini iddia eden şüpheli e-postalar aldığınızda hemen bankanızın müşteri hizmetlerini arayıp durumu bildirmelisiniz.
  • İnternet cafe gibi internetin ortak kullanıldığı alanlar yerine kendi bilgisayarınızı kullanın.
  • Ödeme sayfasının güvenli (https’li) site olduğu mutlaka kontrol edin.
  • Ödeme yaparken kişisel bilgilerinizi (Kullanıcı adı, hesap numarası veya şifre gibi) veya kredi kartı bilgilerini girerken sanal klavye kullanın. ( kimi casus yazılımlarda işe yaramıyor  bunun için ev kullanıcılarına sanal disk üzerinden linux kullanmalarını tavsiye ederiz )
  • Internetten yaptığınız ödemeleri mutlaka kredi kartı ekstrenizden kontrol edin.
  • Alışverişlerinizde sanal kredi kartı kullanmaya çalışın ve bu kartın limitini kontrol edin.
  • İnternet bankacılığı için kullandığınız parolanızı banka çalışanları dahil kimseyle paylaşmayın.
Sanal Kart Nedir?
Sanal kart, internet ortamında alışverişte riski sıfıra indirmek amacıyla, kredi kartı yerine kullanılmak için tasarlanmış bir karttır. Sanal kartlar, bankanın kredi kartı sisteminde fiziksel bir kartmışcasına sanal olarak tanımlanırlar, fiziksel olarak mevcut değildirler. Ancak bazı bankalar kullanıcıya kolaylık olsun diye kartın kartondan yapılmış bir benzerini gönderebilirler. Kartın anlık limitini, kart sahibi belirler.

27 Haziran 2012 Çarşamba

Jquery dersleri bölüm 1





jquery günümüz webyazılımcıları için çok önemli hale gelmeye başladı bizlerde bundan geri kalmamak için elimizden geldiğince takip etmeye çalışıyoruz ilk olarak jquery nasıl kullanılır onu öğrencez
ilk olarak jquery sayfasından  http://docs.jquery.com/Downloading_jQuery son sürümünü indiriyoruz
daha sonra bir html sayfası oluşturup içine




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Başlık</title>

<script src="jquery.min.js" type="text/javascript"></script>

</head>
<body>

</body>
</html>


Şeklinde html şablonumuzu oluşturuyoruz   ve jquery yolumuzu koyu yazıldığı şekilde belirtiyoruz
jquery "<script type="text/javascript "></script>" taglari arasında yazılır
ve tek tip   "var" dır  kolar herzaman "$" ile yazılmaya başlar '$(function())' ,'$('a')' gibi
cümle bitiminde ";" konulmalıdır


<script type="text/javascript">
$(function() {
$('a').click(function() {
$('#div').slideUp(4000);
});
});

</script>


yukardaki kod kısmında  bir fonksiyon oluşturduk ve box adındaki div i 4000 mili saniye (4 saniye) bekledikten slideup  ile sonra yukarı doğru kaybolsun dedik  css mantıgı burdada devam ediyor id ler "#" ile classlar "." id ya da class oldugunu belirtmezsek tüm div ya da ne için yazıldıysan hepsini kapsayacak şekilde olacaktır. daha iyi anlamanız için küçük bir örnekte gösterelim


html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script src="jquery.min.js" type="text/javascript">
</script>



<script type="text/javascript">
$(function() {
$('a').click(function() {
$('#box').slideUp(4000);
});
});

</script>

</head>

<body>
<div id="kutu"></div>
<a href="#">Tıkla!</a>
</body>
</html>


css 
    <style type="text/css">
#kutu {
background-color: red;
width: 300px;
height: 300px;
}
</style>


ASP ile Ajax Kullanımı



ASP ile ajax kullanımı hakkında basit bir işlem yapacağız. XMLHttpRequest nesnesi oluşturup formdaki bir bilgiyi nasıl post edeceğiz öğreneceğiz.


Öncelikle AJAX hakkında bilgi edinmenizi, nedir, neye yarar gibi soruların yanıtını bulmanız gerekmektedir.

Ajax fonksiyonlarını vererek kodlarda gerekli açıklamaları yaparak konuyu anlatıyorum.

function yeni_nesne(){
     var nesneyarat;
     /*@cc_on @*/
     /*@if (@_jscript_version >= 5) try { nesneyarat = new ActiveXObject("Msxml2.XMLHTTP"); }
     catch (e) {
          try { nesneyarat = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch (E) { nesneyarat = false; }
     }@end @*/
     if (!nesneyarat && typeof XMLHttpRequest!='undefined') {
      try {
       nesneyarat= new XMLHttpRequest();
      } catch (e) {
       nesneyarat=false;
      }
     }
     return nesneyarat;
}

function AoL(id,cikti,hedef) {
     var aktifform  = document.getElementById(id);
     var ekranayaz  = document.getElementById(cikti);
     var ciktiver   = new String("");
     var name, value;
          for(var C = 0; C < aktifform.elements.length; C++){
               name  = aktifform.elements[C>.name;
               value = aktifform.elements[C>.value;
               ciktiver += escape(name) +'='+ encodeURIComponent(value) +'&';
          }
     var nesneiste = new yeni_nesne();
          nesneiste.open("post", hedef, true);
          nesneiste.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-9");
          nesneiste.send(ciktiver);
          nesneiste.onreadystatechange = function() {
               if (nesneiste.readyState == 4 && nesneiste.status == 200) {
                    ekranayaz.innerHTML = nesneiste.responseText;
               }
               else { ekranayaz.innerHTML = ''; }
          }
     return false;
}


2 adet fonksiyonumuz mevcut. Birisi XMLHttpRequest nesnesi oluşturuyor, diğeri form bilgilerini post ediyor. XMLHttpRequest nesnesini burada anlatmak çok uzun olacağından sizi WIKI'deki kısa dökümanla başbaşa bırakıyorum. Farklı kullanımları mevcut, fakat ben genelde bu kullanımı tercih ediyorum.

2. fonksiyonumuzda ciktiver adında bir fonksiyon gözünüze çarpıyordur. Bunun amacı Türkçe karakterleri ve post esnasında tanınmayan karakterleri bozmadan gönderip, çıktı alabilmek içindir.

Herkes Turkçe karakter sorunundan yakınır. Eğer sayfanızın işaretleme tipi ile, setRequestHeader'i birbiriyle uyumlu hale getirir ve son olarakta ajax yordam sayfanıza bir charset belirtirseniz hiçbir sorun yaşamazsınız.

Form bilgilerimiz ise şöyle olacak,

<form id="form" onsubmit="return AoL(this.id,'sonuc','ajax.asp')">
     <label for="adsoyad">Adınız Soyadınız</label><br />
     <input type="text" name="adsoyad" id="adsoyad" />
     <input type="submit" value="Gönder" />
</form>
<div id="sonuc"></div>


Burada onsubmit yordamında (sizler değiştirebilirsiniz) 3 olay gerçekleşmekte. Formun id bilgisini gönderiyoruz, gelen sonucun sonuc adlı id'li elementte işlenmesini belirtiyoruz ve son olarak bu bilgiler ajax.asp adlı dosyada işleneceğini bidiriyoruz.

Ajax için elementlerin ID bilgileri çok önemlidir. Post edebilmek içinde form bilgilerine birer name eklememiz gerekir. Aynı olmak zorunluluğu yoktur.

şimdi ise ajax.asp adlı sayfamızı oluşturalım,

<%
     response.charset = "iso-8859-9"
     ad = request.form("adsoyad")
     If Len(ad) < 1 then
          response.write "Adsoyad alanını boş bıraktınız"
     Else
          response.write "Forma yazılan bilgi <strong><u>"&ad&"</u></strong>'dır"
     End If
%>

Bu sayfada pek yabancı işlem yapılmamış. Bir charset atanmış ve post ile gönderdiğimizden aynı şekilde verimizi alıp sınamışız.


Bu örneği sizlere birşeyler çağırıştırması açısından hazırladım. Ajax bu kadar basit mi? Hayır kesinlikle, ve yapılabilir en basit işlem budur. Javascript bilginizi zorlayarak bu mini modülü geliştirebilir daha esnek bir form işlemi hazırlayabilirsiniz.

Bu örneği download etmek için tıklayınız.

Geri Dönüşümsüz Disk Temizleme - DBAN Disk Wipe Tool



Merhabalar,
Kullanacağımız yazılım, DBAN (Darik’s Boot and Nuke)
Yazılımı CD, DVD, USB bellek ile kullanabilirsiniz
Nerelerde kullanabiliriz?
  • Sabit diskinizi satacak veya temelli başkasına verecekseniz
  • Adli bilişim tarafından incelenecekse
  • Sevmediğiniz biri var ve onun bilgisayarı ile karşılıklı oturabiliyorsanız, İşletim sistemi dahil her şeyini silebilirsin (İnternet kafeler dahil(Deepfreeze dahil))
DBAN ne işe yarar?
Sabit diskinizde sildiğinizi sandığınız dosyalar, aslında direk silinmez. Bu dosyaları silmeniniz için dosyanın üzerine yeni veri yazmanız gerekmektedir. Aksi taktirde veri kurtarma yazılımları ile geri getirilebilmektedir. Sabit diskimizi güvenli bir şekilde temizleyebilmemiz için bu aracı kullanacağız
DBAN’ı çalıştırabilmemiz için BIOS’dan format atıyormuş gibi boot ayalarını yapıyoruz
Boot ayarlarını tamamladıktan sonra aşağıdaki gibi bir ekran çıkacak karşınıza:
DBAN
ENTER tuşuna basıp enteraktif modunda devam ediyoruz, gerekli dosyalar çağırılırken biraz bekliyoruz
Aşağıdaki gibi bir ekran açılıyor, bu ekrandan gerekli ayarları yapıyoruz
DBAN
  • PRNG (Pseudo Random Number Generotor): 2 seçenek var, Mersenne Twister Japon tarafından yapıldığı için böyle bırakıyoruz
  • Method:Dosyaları silerken kullanılacak metod
    1. Quick erase: Zamanımız yoksa bunu kullanıyoruz tüm verilere 0 ekliyor
    2. RCMP TSSIT OPS-II (Royal Canadian Mounted Police Technical Security): Orta düzey siliyor, 8 tekrar destekliyor
    3. DoD Short(American Depertment of Defence): Orta düzey siliyor, 3 tekrar destekliyor
    4. DoD 5220.22-M (American Deperment of Defence): Orta düzey siliyor, 7 tekrar destekliyor
    5. Gutmann Wipe:  Yüksek düzey siliyor, 35 tekrar destekliyor
    6. PRNG Stream: Modern sabit sürücüleri için en iyi metot buymuş, çünkü encoding şemaları değişebiliyormuş. 4 tekrarda orta düzey siliyor, 8 tekrarda yüksek düzey siliyor
  • Verify: Onayı kapat, Son çözümü onayla, Bütün çözümleri onayla gibi seçenekler var
  • Rounds: Bu işlemlerin kaç kere tekrarlanacağını yazıyoruz
ENTER’a basıyoruz HD işaretleniyor ve F10 yapıyoruz, aşağıdaki gibi işlemimiz başlıyor
DBAN
İşlem tamamlandı
DBAN
Sonuç:
DBAN

26 Haziran 2012 Salı

XML Nedir?



XML, Extensible Markup Language sözcüklerinin kısa adıdır. Eks-em-el olarak okunur. XML'in teknik ayrıntılarına değinmeden kullanım alanı olarak bir bakalım: Örneğin denizcilik firmaları taşımacılıkla ilgili bütün bilgilerini dünyaya yayılmış acentelerine EDI (Electronic Data Interchange) aracılığıyla ulaştırırlardı. Ancak EDI, yalnızca uyumlu sistemler arasında çalışan bir sistem olduğu için, bilgisayar sistemleriyle bütünleşik değildir.
Belli firmalar tarafından uygulanan EDI iletişimi, faturaları, siparişleri uyumlu bir formatta transfer etmeyi sağlardı. İşte XML'i bu tür gereksinimleri karşılamayı amaçlayan bir teknoloji olarak algılamak gerekir.
Yıllardır firmalar ve uygulama geliştiriciler verilerin temsili (represent) üzerinde çalıştılar. XML, verilerin alış verişiyle ilgili temel sorunları ortadan kaldıran bir ortak dildir ve şu kolaylıkları sağlar:
*XML işaretler içine gömülü olan verilerin yapılandırması için kurallar tanımlar.
*Kendi terimlerimizi (vocabulary) tasarlamayı ve kendi verilerimizi temsil etmeyi sağlar.
*Web datasının (verisinin) depolanmasını ve iletilmesini sağlar.
*Bu durumda XML, kuruluşların aralarında veri alışverişini sağlayan bir "evrensel bütünleşme" aracıdır. Web temelli uygulamaların geleceği olan XML, bir firma temelli olmadan bağımsız olarak veri temsil ve gönderme kuralları ortaya çıkmıştır. Bunun dışında Web data gibi kavramlar ortaya çıkmıştır. Ayrıca Web'in yeni dili ve eski *EDI (Electronic Data Interchange) teknolojisi yerine Web üzerinde veri taşımak için kullanılan yeni bir teknolojiyi ifade eder.
"XML veriyi tanımlamak ve göndermek için tek tip (uniform) bir yöntem sağlar".
Teknolojik özelliklerinin dışında XML, HTML gibi de bir dildir. Bu dil aracılığıyla XML belgeleri oluşturulur. XML, bir meta-dildir. Dil tanımlamayı sağlayan bir dil gibi açıklayabiliriz.
XML verileri değiştirmek için kullanılır. Gerçek dünyada veritabanı sistemleri farklı biçimlerde (formatta) veriler kullanırlar. İşte XML, farklı sistemler arasında verilerin alışverişini sağlar.
XML (Extensible Markup Language), HTML gibi bir işaretleme dilidir (markup language). Ancak HTML gibi veriyi görüntülemek için değil de ana amaç olarak veriyi tanımlamak için (describe) geliştirilmiştir. Kuruluşlar arasında veri alışverişini sağlar.
XML, Web üzerinde veri (data) kullanımı için evrensel bir dildir. XML sayesinde çok değişik uygulamalar arasında veri alışverişi yapılabilmektedir.
XML'in sağladığı yararlar:
Açık standartlar (open standards).
Esnek Web uygulamalarının geliştirilmesi.
Farklı kaynaklar ve uygulamalar arasında verilerin bütünleştirilmesi.
Verilerin değişik görünümlerinin alınmasını sağlar.
Veriler üzerinde yerel olarak hesaplama yapılmasını sağlar. Ulaştırılan veriler tarayıcı tarafından okunur ve ardından sonraki işlem için bir yerel uygulamaya teslim edilir.
Değişik uygulamaların içindeki verileri tanımlamak için kullanılır. Verinin kendisini kendini tanımlayabildiği için (self-describing) gönderen uygulamaya bağlı kalmadan alınıp işlenebilir.
XML sayesinde yalnızca değişen verilerin güncellenmesi sağlanır. Değişen verinin görüntülenmesi bütün sayfanın yenilenmesine yol açmaz.
XML içinde kodlanmış veriler Web üzerinden masaüstlerine taşınır. XML'in ulaştırılması için de HTTP kullanıldığı için bütün veritabanları ve dosyalarla uyumlu hale gelir.
XML, text tabanlı bir formata sahiptir ve uygulama geliştiricilerin uygulamalarla istemciler arasında veri transferini sağlar. XML ayrıca yapısal verilerin sunucular arasında da alışverişini sağlar.

Anında Form Kontrolü



Bu video dersimizde genel olarak, onkeyup() nesnesi, onkeypress() nesnesi, Ajax ile PHP sayfasına veri gönderme ve gelen bu verileri yorumlayıp aynı sayfa içerisinde kullanıcı ile etkileşim kurmaktan bahsettim.

Dersimizin başlığından da anlaşılacağı gibi, anında form kontrolü uygulaması yaptık.

Daha açık anlatmak gerekirse, hani bazı sitelerde rastlarsınız, bir yazı kutusuna e-mail adresinizi yazarken hemen yanında bir kutucuk
belirir ve bu mail adresinin uygun olup olmadığını anlık olarak sizlere gösterip bilgilendirme yapar. Biz de işte buna benzer bir uygulama yaptık.

Umarım bu işi gerçekten öğrenmek isteyenlere bir yardımımız dokunur.

Dipnot: Form kontrolü yapılmıştır, ancak veritabanına kayıt yapılmamıştır.

Jquery dersleri bölüm 4 (Toggle Methodu)



Toggle Methodu 


Toggle methodu  çok kullanışlı bir methoddur bir çok sitede rasgelmişsinizdir aslında show ve hide methodlarının karışımıdır diyebiliriz.Zaten Türkçe olarak bir işlemden diğerine geç gibi bir anlamı var.
kullanımına bakalım;


toggle()
toggle(4000) // 4000 zaman belirtir. 4000 = 4 saniye
toggle('slow') // slow'un Türkçe karşılığı yavaş demektir.
HTML-Kodu:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script src="jquery.min.js" type="text/javascript">
</script>

<style type="text/css">
#box {
background-color: red;
width: 300px;
height: 300px;
display: none;
}
</style>

<script type="text/javascript">
$(function() {
$('a').click(function() {
$('#box').toggle('slow');
});
});

</script>

</head>

<body>
<div id="box"></div>
<a href="#">Tıkla beni!</a>
</body>
</html>
Tıkla beni yazısına tıkladıgımız div açılacak tekrar tıkladıgımızda kapanacaktır kullanımı bu şekildedir

AJAX ile Eş Zamanlı Form Kontrolü



Kısaca konuyu anlatmak gerekirse eski usulde form kontrolünde tüm formu doldururdunuz ve bittiği zaman "Gönder" düğmesine basardınız. Eğer girmiş olduğunuz kullanıcı adı veya e-posta adresi başkası tarafından kullanılıyorsa ancak tüm formu doldurup gönderdikten sonra bunu öğrenebilirdiniz. Oysa ki AJAX ile o an doldurmuş olduğunuz metin kutusunu eş zamanlı olarak kontrol edilmesini sağlama imkanınız var. Yani kontrolü, gönder butonuna basmadan önce, form elemanı doldurulduğu anda yapabileceğinizi kastediyorum. Konuyu anlatırken AJAX-TR için hazırladığım ve AJAX Tab Kontrol ismini verdiğim örnek uygulamayı kullanacağım. İsmine "Tab kontrol" dedim çünkü Tab tuşuna basıldığı anda veya kutudan çıkıldığı anda kontrolün yapılışını anlatacağım.


DosyalarUygulamada ana sayfayı oluşturan index.php dosyası, kontrolün yapıldığı ve bilginin gönderildiği kontrol.php dosyası ile eyceks kütüphanesinin dosyaları (loading.gif, eyceks.js) bulunmakta.

İlk Adım Kontrol edeceğimiz formu index.php dosyasında oluşturuyoruz. Sadece bir metin kutusu bize yetecektir. Yanına da yeşillik niyetine parola kutusu koydum

PLAIN TEXTHTML:
<form action="void(0)" method="POST" name="form1">
<table>
<tr><td colspan="2"><b>ÜYE GİRİŞİ</b><br><br></td></tr>
<tr><td width="100">Kullanıcı Adı</td><td width="350">: </td></tr>
<tr><td>Parola</td><td>: </td></tr>
<tr><td></td><td></td></tr>
</table>
</form> 

Dikkat ederseniz kullanıcı adı metin kutusunun onblur olayına kontrol_et() işlemini yapmasını belirttim. Bu kontrol_et() fonksiyonu form bilgisini kontrol.php dosyasına gönderecek olan fonksiyon. Aşağıda bu fonksiyonu açıklayacağım.

Formumuzu hazırladık diyelim. Bizim burada yapacağımız şey kontrol butonuna basılmadan kullanıcı adının girildiği kutuyu, biz parola hanesine geçerken kontrol edilmesini sağlamak. Kontrolde, girilen kullanıcı isminin var olup olmadığına bakılmasını ve kullanıcıyı buna göre uyarmasını istiyoruz.

İkinci AdımAJAX Tab Kontrol'de bu sitenin yazarı eburhan'ın arkadaşımızın eyceks kütüphanesini kullandım.

Bu ikinci aşamada eyceks'i form kontolü yapacağımız index.php dosyasına çağıralım.

PLAIN TEXTJAVASCRIPT:
[/javascript]

Bu işlemi de tamamladıktan sonra sıra geldi <strong>Tab</strong> tuşuna bastığımızda işlemesi gereken javascript fonksiyonuna.

<h3>Üçüncü Adım</h3>
[javascript]function kontrol_et(){
var sc = 'uyeadi='+ document.form1.kullanici_adi.value;
JXP(1, "sonuc", "kontrol.php", sc);


İşte bu kodlarla tabtuşuna basılıp parola kutusuna geçerken eyceks kutuphanesini de kullanarak kontrol.php dosyasına kullanıcı adını POST metoduyla (JXP) yolladık. Gelecek olan cevabı da "sonuc" id'sine sahip elemanda görünecek şekilde ayarladık.

Son AdımSon adım ise kontol.php dosyasını oluşturduğumuz kısım. Bu dosyada kontrolü dilediğiniz gibi ayarlayabilirsiniz. İster veritabanına bağlantı kurun, isterseniz de bir e-posta adresinin uygun yazılıp yazılmadığını kontrol edin. Burası size kalmış. Ben ise sadece 5 tane üye ismi belirledim ve girilen ismin bunlardan birisiyle aynı olup olmadığını kontrol ediyorum. Ne de olsa önemli olan mantığı kavramak

kontol.php

PLAIN TEXTPHP:
isim zaten mevcut :-(</font>';
break;
case "":
echo '<font>isim girmediniz!</font>';
break;
default:
echo '<font color="blue">isim uygun :-)</font>';
}

?&gt; 

25 Haziran 2012 Pazartesi

Yeni Firefox Görücüye Çıktı!


Firefox, yuvarlak köşeli yeni şık tasarımını görücüye çıkardı! İşte o tasarım ve onu deneme şansı...

Mozilla, bir yandan bir yandan Firefox'un yeni sürümünü çoklu platform desteğiyle sunma çalışmalarını sürdürürken, bir yandan da popüler tarayıcının tasarımını elden geçiriyor.  Yeni ortaya çıkan bir test sürümü, köşeleri yuvarlanmış sekmelerikullanıcıların beğenisine sundu.  Mozilla, tasarımcılardan birinin blogunda tanıttığı yeni sürüm için kullanıcıların yorumyapmasını istedi.  Yeni tasarımda etkin sekme yuvarlak köşeleriyle görünür halde olacak ve diğer sekmeler sadece başlık halinde görülecek.

Sürüm şimdilik sadece Windows altında çalışıyor.

Tarayıcının yeni görünümünü merak ediyor ve yorumlarınızla katkıda bulunmak istiyorsanız, bu adresi ziyaret edebilirsiniz.

24 Haziran 2012 Pazar

C# Ile FTP Üzerinde Dosya Ve Klasör İşlemleri


Microsoftun bize hazır sundugu sınıflardan biri olan FtpWebRequest Class'ı  ile işlemlerimizi rahatlıkla yerine getirebiliyoruz. FtpWebRequest class'ımız System.Net  namespace'i altında bulunmaktadır. aşağıda gösterdigimiz kodları uygularken import etmeyi unutmayın. Bu sınıfımızın haricinde System.IO'yada ihtiyacımız olucak.
FTP ile Dosya Gönderme
01FileInfo filei= new FileInfo(“DosyaAdresi”);
02string adres="domain veya server ipsi";
03string path = adres + filei.Name;
04FtpWebRequest FTP;
05FTP = (FtpWebRequest)FtpWebRequest.Create(new path(path));
06FTP.Credentials = new NetworkCredential("kullanıcıadı""Şifre");
07FTP.KeepAlive = false;
08FTP.Method = WebRequestMethods.Ftp.UploadFile;
09FTP.UseBinary = true;
10FTP.ContentLength = filei.Length;
11int buffLength = 1024;
12byte[] buff = new byte[buffLength];
13int contentLen;
14FileStream FS = filei.OpenRead();
15try
16{Stream strm = FTP.GetRequestStream();contentLen = FS.Read(buff, 0, buffLength);while (contentLen != 0)
17{strm.Write(buff, 0, contentLen);contentLen = FS.Read(buff, 0, buffLength);
18}
19strm.Close();
20FS.Close();Console.WriteLine("Başarılı");
21}catch (Exception ex)
22{
23Console.WriteLine(ex.Message);
24}
İşlemimizde öncelikle upload edicegimiz dosya yolunu alıyoruz daha sonra göndermek istedigimiz ftp deki yolunu belirliyoruz.sınıfımızı tanıplayıp ftp mizin kullanıcı adı şifresini,uygulayacağımız işlemin metodunu,veriyi gönderme türünü,dosya boyutunu ve son olarak buffer boyutunu belirtiyoruz.buffer dediğimiz olay anlık olarak gönderilcek  veri boyutudur.en sonda gönderme işlemini gerçekleştirip işlemimizi bitiriyoruz. Dikkat edersinizki try catch içine aldıgımız blok bu işlemi yapıyor. bi sorun olmazsa başarılı, olursada ekrana neden başarısız olduguyla ilgili hata mesajını ekrana yazdırıyor.
FTP ile Dosyaları Listelemek
01string[] Dosyalar;
02StringBuilder result = new StringBuilder();
03FtpWebRequest FTP;
04try
05{FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(serveripsi veya domain));
06FTP.UseBinary = true;
07FTP.Credentials = new NetworkCredential("kullanıcı adı ""şifre");
08FTP.Method = WebRequestMethods.Ftp.ListDirectory;
09WebResponse response = FTP.GetResponse();
10StreamReader reader = new StreamReader(response.GetResponseStream());
11string line = reader.ReadLine();while (line != null)
12{
13result.Append(line);
14result.Append("\n");
15line = reader.ReadLine();
16}
17result.Remove(result.ToString().LastIndexOf('\n'), 1);
18reader.Close();
19response.Close();Dosyalar=result.ToString().Split('\n');for (int sayac = 0; sayac < downloadFiles.Length; x++)
20{
21Console.WriteLine(Dosyalar[sayac].ToString));
22}
23}catch (Exception ex)
24{
25Console.WriteLine(ex.Message);
26}
burdada görüldüğü gibi bir önceki kodlarımızla karşılaştırdığımızda farklılıklar dikkatinizi çekicektir. öncelikle methodumuz değişti.Ftpmize istek gönderiyoruz,cevap alıyoruz,stream reader yardımıyla okutuyoruz ve satır satır yazdırma işlemimizi gerçekleştiriyoruz.
Ftp ile Dosya indirme
01FtpWebRequest
02FTP;
03try
04{
05FileStream SR = new FileStream("C:\\" "Dosyaismi",FileMode.Create);
06FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsiveya domain/"+ “Dosyaismi”);
07FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
08FTP.Method =WebRequestMethods.Ftp.DownloadFile;
09FTP.UseBinary =true;
10FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
11Stream ftpStream = response.GetResponseStream();
12long cl = response.ContentLength;
13int bufferSize = 1024;
14int readCount;
15byte[] buffer = new byte[bufferSize];
16readCount = ftpStream.Read(buffer, 0, bufferSize);
17while (readCount > 0)
18{
19SR.Write(buffer, 0, readCount);
20readCount = ftpStream.Read(buffer, 0, bufferSize);
21}
22ftpStream.Close();
23SR.Close();
24response.Close();
25Console.WriteLine("başarılı");}
26catch (Exception ex)
27{Console.WriteLine(ex.message);}
bilgisayarımıza nereye indircegimizin dosya yolunu giriyoruz. ftpden indirmek istediğimiz dosya yolunu yazıyoruz. bağlantı bilgilerimizi veriyoruz. metodumuzu WebRequestMethods.Ftp.DownloadFile  olarak değiştiriyoruz. response'umuzu webresponse türüne dönüştürüyoruz buffer bilglerimizide girip işlemi başlatıyoruz.
FTP ile Dosya Silme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripveya domain/+“Dosyaismi”);
05FTP.UseBinary =true;
06FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
07FTP.Method =WebRequestMethods.Ftp.DeleteFile;
08FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09Console.WriteLine(response.StatusDescription);
10}
11catch (Exception ex)
12{
13Console.WriteLine(ex.Message);
14}
yukarda digerlerinde olmayan bir komut gördünüz.  "response.StatusDescription"  adındanda anlaşılağı üzere isteğimize karşılık gelen cevapta durumundan haberdar oluyoruz. başarılımı değil mi şeklinde.
FTP ile Klasör Silme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Silinecekklasörismi” +"/"));
05FTP.UseBinary =true;FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
06FTP.Method =WebRequestMethods.Ftp.RemoveDirectory;
07FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
08Console.WriteLine(response.StatusDescription);
09}
10catch (Exception ex)
11{
12Console.WriteLine(ex.Message);
13}
FTP ile Klasör Oluşturma
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Yeniklasörismi” +“/”));
05FTP.UseBinary =true;
06FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
07FTP.Method =WebRequestMethods.Ftp.MakeDirectory;
08FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09Console.WriteLine(response.StatusDescription);
10}
11catch (Exception ex)
12{
13Console.WriteLine(ex.Message);
14}
FTP ile Dosya Adı Değiştirme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/+“Dosyaismi”);
05FTP.UseBinary = true;
06string yeniisim="dosyaismi";
07FTP.RenameTo = yeniisim;
08FTP.Credentials = new NetworkCredential("kullanıcıadı""Şifre");
09FTP.Method = WebRequestMethods.Ftp.Rename;
10FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
11Console.WriteLine(response.StatusDescription);
12}
13catch (Exception ex)
14{
15Console.WriteLine(ex.Message);
16}
işlemlerimiz bukadar.Gördügünüz gibi çogunda bir değişiklik yok sadece methodu değiştirmemiz işlemimizin gidişatını değiştiriyor. Bunun haricinde FTPlib olarak geçen FTP Client Library  sınıfınında oldukça kullanışlı olduğunu söleyebilirim. Okuduğunuz için

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger | Printable Coupons