ENGLISH BLOG |  HAKKIMDA  |  ARSIV   | DELETE LANGUAGE COOKIE

Enes TAYLAN

Mind Hegemony - Mood 1.0 - Total Control Edition

.NET' TE I/O İŞLEMLERİ - 1 (Dosya, Klasör yaratma, silme ve listeleme)

clock Haziran 1, 2009 10:43
.NET'te I/O işlemleri için gelişmiş sınıflar bulunmakta.Her ne kadar kullanıcıya daha fazla kontrol imkanı vermek için bazı alt level işlemler de yapılabiliyorsa da çoğunlukla birkaç statik metodla işimizi görebiliyoruz. Şimdi nasıl dosya ya da klasör yaratılır , silinir ve herhangi bir dizin altındaki veya bir yerel diskteki dosyalar windows explorer tarzında ağaç yapısıyla nasıl gösterilir buna bakacağız. I/O işlemleri .NET' in tamamı için aynı olmakla ( System.IO , System.Web.IO değil örneğin ) beraber kolaylık olması bakımından ASP.NET üzerinde yazalım kodları. Bu kodları sadece kopyala yapıştır ile diğer .NET yapılarında örneğin WPF' te rahatlıkla kullanabiliriz. "System.IO" içerisinde kullanacağımız sınıflar şunlar olacak:

  • DriveInfo
  • DirectoryInfo
  • FileInfo
  • Directory
  • File
Klasör ve Dosya Yaratma
System.IO içerisinde bulunan Directory ve File sınıfları statik metodlarıyla dosya veya klasörleri oluşturmamızı veya silmemizi sağlar.
Directory.Create(@"C:\örnekKlasör");
Directory.Delete(@"C:\örnekKlasör");
(@ işareti C#'ta stringlerden önce kullanıldığı zaman "\" karakterini kullanabilmek için "\\" yazma zorunluluğunu kaldırır ki bu da IO işlemlerinde büyük kolaylık sağlar) Eğer üzerinde çalıştığımız projenin klasöründe herhangi bir klasör oluşturmak veya silmek istiyorsak:
Directory.Create(@"Server.MapPath("örnekKlasör"));  
Directory.Delete(@"Server.MapPath("örnekKlasör"));  
kodunu kullanabiliriz. Dosya oluştururken veya silerken de "File" sınıfını kullanırız:
File.Create(@"C:\örnekDosya.doc")
File.Delete(@"C:\örnekDosya.doc")
veya
File.Create(@"Server.MapPath("örnekDosya"));  
File.Delete(@"Server.MapPath("örnekDosya"));  
Şimdi de bilgisayarda halihazırda bulunan klasörleri ve dosyaları hiyerarşik bir biçimde, ağaç yapısıyla "windows explorer" tarzında nasıl gösterebiliriz ona bakalım. Bu örnekte

  • System.IO.DriveInfo        //herhangi bir yerel disk'in ismine, kullanılabilir alanına, toplam alanına vs. ulaşmamızı sağlar
  • System.IO.DirectoryInfo    //herhangi bir klasörün ismine, büyüklüğüne, windows izinlerine vs. ulaşmamızı sağlar
sınıflarını kullanacağız. Yeni bir website açıp Default.aspx (TreeView ekledikten sonra) 'in Page_Load event'inde aşağıdaki kodu yazalım.
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            System.IO.DriveInfo drive = new System.IO.DriveInfo(@"D:\"); 
            //D yerel diski üzerinde çalışıyoruz
            TreeNode node = new TreeNode(); 
            //dinamik olarak TreeView'in node'larını oluşturuyoruz

            node.Value = drive.Name;  
            TreeView1.Nodes.Add(node); 
            //yerel diskin kendisini TreeView1'e ana node olarak ekler 

            klasorleriYukle(node, drive.Name);//bu recursive metoda,
            // node'u ve klasörlerini ekleyeceğimiz dosyanın harddiskteki
            // tam adresini veriyoruz
            
        }
    }

    private void klasorleriYukle(TreeNode parent, string path)
    {
        System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(path); 
        //artık yerel diskle (DriveInfo) değil klasörlerle çalışıyoruz

        try
        {
           // GetDirectories() ile klasörün hiyerarşik olarak altındaki
           // tüm klasörleri alıyoruz
            foreach (System.IO.DirectoryInfo d in directory.GetDirectories()) 
            {
                TreeNode node = new TreeNode(d.Name, d.FullName);  
                //üzerinde çalıştığımız klasörün ismini ve 
                //yerel diskteki yerini (fullName)

                parent.ChildNodes.Add(node);  //ini TreeView'e ekliyoruz

                //üzerinde çalıştığımız klasörün tüm alt klasörleri için 
                //aynı metodu recursive olarak çağırıyoruz
                klasorleriYukle(node, d.FullName);        
            }
        }
        catch (System.UnauthorizedAccessException e)
        {
            parent.Text += "(Erişim engellendi)";
        }

        catch (System.IO.IOException e)
        {
            parent.Text += "(bilinmeyen hata: " + e.Message + ")";
        }   
    }

Yukarıda  "System.IO.DriveInfo drive = new System.IO.DriveInfo(@"D:\");" yazarak sadece D yerel diskinin içeriğini gösterdik. Eğer tüm hardiski, tüm yerel disklerle göstermek isteseydik Page_Load şu şekilde olmalıydı.
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            foreach (System.IO.DriveInfo drive in System.IO.DriveInfo.GetDrives())  
            //tüm yerel diskler üzerinde çalışmak için
            {
                TreeNode node = new TreeNode();
                node.Value = drive.Name;

                if (drive.IsReady)
                {
                    node.Text = drive.Name;
                    loadDirectories(node, drive.Name);
                }                            

                TreeView1.Nodes.Add(node);
            } 
        }
}
Yukardaki işlem en az bir kaç dakika sürecektir. Program Files, Windows klasörü ve diğer dosyaların gösterilmesi için bayağı IO işlemine ihtiyaç var, çünkü.

Şimdi siteye bir GridView ekleyelim ve TreeView'den bir klasör seçtiğimiz zaman o klasördeki dosyaları isimleriyle, büyüklükleriyle, en son erişim zamanıyla vs. bu GridView'de görmek istiyoruz. Properties penceresinden TreeView'in events moduna geçelim ve "SelectedNodeChanged" eventine çift tıklayalım. Ve kod sayfasında şunu yazalım:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        DirectoryInfo directory = new DirectoryInfo(TreeView1.SelectedNode.Value);

        GridView1.DataSource = directory.GetFiles();
        GridView1.DataBind();
    }

System.IO kullanarak nasıl dosya, file oluşturur veya sileriz, ayrıca harddiskteki dosyaların hiyerarşik dizilimini nasıl TreeView'le görebiliriz, bunlara baktık.


MICROSOFT BING, YENİ ARAMA MOTORU

clock Mayıs 28, 2009 20:41
MICROSOFT BINGMICROSOFT CEO'su Steve Ballmer'in en son Turkiye ziyaretinde söylediği gibi, Microsoft geç de olsa arama motoru ve online reklam alanında atağa geçti.Uzun zamandır Kumo ve Bing’den hangisi olacak diye beklerken Bing dün açıldı. Her ne kadar faaliyete geçmesi için 3 Haziran’ı beklemek gerekiyorsa da dün akşamdan itibaren www.bing.com ‘ a girdiğimizde boş sayfa yerine tanıtım videosunu görebiliyoruz.
 
Bing’in kullanıcılara ne sunduğuna gelirsek, tanıtımında öncelikli vurgulanan Bing’in sadece arama motoru olmadığı bir karar motoru  da olduğu aynı zamanda ( bu da çıktı şimdi, cevap motorundan sonra – biz farklıyız demenin farklı yolları ) Yani sizden extra veriler toplayıp veya bazı kriterler sunup arama sonuçlarını  özelleştirmenizi sağlıyor. Örneğin, otel araması yaptığınızda size konumuna, fiyatına ve diğer özelliklere göre sınıflandırma yapıyor. Ya da fotoğraf makinesi arattığınızda, ürünlerin yanında kullanıcı değerlendirmelerini ve fiyat karşılaştırmalarını da sunuyor.Amaç kullanıcıya sadece bir liste vermek değil aynı zamanda bu listeyi filtrelemesine de yardım etmek, dediğimiz gibi. Dikkat çeken bir diğer özelliği de video araması yapıp thumbnaillerin üzerine geldiğinizde küçük bir özetini sunuyor video’nun size.
 
STEVE BALLMERAkla gelen soru Microsoft’un arama motoru alanında ( ya da karar motoru mu demek gerekiyor ) , Google’la ne kadar yarışabileceği. Şu an için Google’ın pazar payı 64.2 iken Microsoft’un 8.2 ( live search için bu bile fazla :D ) Microsoft reklam için önümüzdeki bir yıl içerisinde kullanmak üzere 100 milyon dolar ayırmış durumda. (Google yıllık yaklaşık 30 milyon dolar ayırıyor) Yalnız Steve Ballmer’ın da kabul ettiği gibi arama motoru kullanımında asıl önemli etken insanların alışkanlığı. Google kullanan ve arama işlemini Google’lamak olarak adlandıranlar nasıl bu alışkanlıklarından vazgeçip Bing’lemek diyecekler?. Zor bir soru, ama biz kullanıcılar açısından ne kadar rekabet o kadar iyi arama motorları demek. Yarışsınlar bakalım...


WOLFRAM ALPHA

clock Mayıs 22, 2009 20:43
Wolfram AlphaSon günlerde çok tartışılan bir konu Wolfram Alpha. Kendisi yeni bir cevap motoru (answer engine) . Bir arama motoru değil , çünkü yaptığı sizin herhangi birisini seçeceğiniz bir liste sunmaktan ziyade , direkt olarak cevabı vermek. ( eğer verebiliyorsa tabii ) Şu an için daha çok ( Wolfram|Alpha isn't sure what to do with your input. ) ( Wolfram Alpha girdinizle ne yapacağını bilmiyor ) uyarısı veriyor. Cevap verebildiklerine örnek vermek gerekirse “what is the avarage temperatur in Turkey” ( Türkiye’nin ortalama sıcaklığı kaç derece ) diye sorarsanız kendisine, verdiği cevap “18” derece oluyor. Ya da ( who is ataturk? - Atatürk kimdir? ) derseniz o da size “Head of State” (devlet başkanı) diyor. Wolfram’ın şu an anlayabildiği  girişler , çok kompleks olmayan ve çoğunlukla da istatistiki, matematiksel sorular ki zaten arka planda Mathematica ve birçok datanın kaydedildiği devasa serverlar bulunuyor.Çalışma prensibi olarak da bu bilgileri , fizikten ,matematikten , ekonomiden akla gelebilecek her bilimden formüllerle işliyor ve gerekli bilgiyi cevap olarak , muhtemel sitelerin linkleri olarak değil , sunuyor. Kurucusu Stephen Wolfram da zaten Wolfram Alpha’yı web’de bir dönüm noktası olarak tanımlıyor ve artık web de, içerik sadece taranıp potansiyel sonuçlar kullanıcıya verilmeyecek bunun yerine formüllerle o an içerisinde gerekli işlemler yapılıp bilgi sunulacak diyor. İsmi zaten bundan dolayı “sayısal bilgi motoru”  Örneğin siz Uluslararası Uzay İstasyonu şu an tam olarak nerde?” diye sorunca Dünya’nın kütle çekimini hesaba katarak , gerekli fizik formülleriye ve kendisine kayıtlı en son koordinatlarla cevabı buluyor. Aslında bu çalışma prensibi sisteme bir sınır da çiziyor. Çünkü sistem sadece sistematik olarak hesaplanabilir bilgiye dayalı olacak.
 
Peki Wolfram Alpha’nın arama motoru piyasasına etkisi ne olacak? Google LogoGoogle’ın, Microsoft’un tepkisi ve yeni stratejileri nasıl biçimlenecek? Şu an arama motoru devi olan ve bu piyasanın %64’ünü elinde bulunduran Google ilk cevabını verdi bile. Hem de geçen Nisan ayında Stephen Wolfram , Wolfram Alpha’nın ilk tanıtım sunumunu yaptığı saatte. Google da kendi yeni özelliğini tanıttı. Bundan sonra Google güncel devlet istatistiklerini arama yapıldığı an alacak ve gerekli işlemleri o sırada yapıp en güncel bilgiyi sunacak. ( Normalde Google'ın çalışma prensibi, gerekli arama kelimelerini indexleyip sonra bu kayıtlı indeksleri sunmak ) Mesela “işsizlik oranı” nı arattığınız zaman Google en güncel bilgiyi alıp buna uygun grafiği de hemen o sırada çizip size gönderecek.Rekabet kızgın yani….. Google’ın daha sağlam cevaplar vereceği de kesin gibi, sonuçta 20.000 çalışanı  ve kasasında 18 milyar doları var.
 
Stephen WolframBir de Stephen Wolfram meselesi var? Kim bu adam? Wikipedia’da şöyle tanıtılmış: fizikçi, matematikçi, bilgisayarcı, yazar ve işadamı. Benjamin Franklin’in bir küçük versiyonu yani. (o da yazar, ressam, politik teorisyen, politikacı, bilim adamı, kaşif, devlet adamı, diplomat) 50 yaşında bir İngiliz.Bir çocuk deha olarak yeteneklerini küçükken göstermiş. 16 yaşında parçacık fiziği ile ilgili bir makake yayımlamış. 17 yaşında Oxford’a girmiş ve 20 yaşında doktorasını yapmış. 1988’de Mathematica’yı çıkardıktan sonra iyi paralar kazanmış. Şimdi de yıllık 22 milyon dolar kazanmaya devam ediyor. Sağlam bir adam yani....Peki Wolfram Alpha projesini neden başlatmış. “Böyle bir projenin başarılı olup olamayacağını merak ettim.” demiş. Ayrıca “Amacım para kazanmak değil, işe yarar bir şeyler üretmek” de demiş. Microsoft LogoBakalım Wolfram Alpha gerçekten arama motorlarında yeni bir çığır mı açacak , yoksa eskiye devam mı diyeceğiz? Ya da sektör açısından düşünürsek Google’ın tahtı sallanacak mı? Bir taraftan Wolfram, bir taraftan Microsoft’un beklenen yeni arama motoru. Belli olmaz, belki Wolfram’la Microsoft veya Google’ın biri birleşmek bile isteyebilir? Bakalım.....
  


XML TABANLI WEB SERVİS YAZMA VE KULLANMA

clock Mayıs 13, 2009 23:29
Web servisi yazmak demek aslında, sunacağımız metodları bir sınıfa yazmak ve bu metodları internet üzerinden kullanılabilir hale getirmek.Bunun için ilk yapmamız gereken VVS2008'de File > New > Web Site üzerinden ASP.NET Web Service'i seçmek.Sonrasında da yazdığımız sınıfı web üzerinden kullanılabilir hale getireceğiz. (Yalnız, örnekte doğal olarak kendi bilgisayarımızda, VS2008'in kendi serverında çalıştırdığımız başka bir siteden servise ulaşacağız)

 
Şimdi "solution explorer" da "servis.asmx" dosyası var.Bunu silelim örneğe uygun şekilde "Customer.asmx" yapalım.



Aşağıdaki kodu VS2008'in bizim oluşturduğu /App_Code dosyasının içindeki "Customer.cs" dosyasına yazalım
[WebMethod] //web’e sunmak istediğimiz methodlar için onları web method olarak tanımlarız
public DataSet GetCustomers()   //database’den gerekli listeyi almak için klasik bir örnek
{
     SqlConnection conn;
     SqlDataAdapter adapter;
     DataSet result = new DataSet();
     string cmdString = "SELECT * FROM [SalesLT.Customer]";  //sql sorgumuz
     conn = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString);
     adapter = new SqlDataAdapter(cmdString, conn);
     adapter.Fill(result);  //dataset’I adapterle yükleme kısmı
     return result;  //dataset resultını return ediyoruz
}    
Customer.asmx dosyasına sağ tıklayıp browser'da görüntüle dediğimizde aşağıdaki ekranı göreceğiz. (ASP.NET''in servisleri otomatik client oluşturarak kontol etmemize imkan veren sayfası)

Customer() metoduna tıklayalım.Burda SOAP mesajlarını ve servisi kullanmamıza (kontrol etmemize) yarayacak "invoke" butonu var.Şimdi başka bir website'si  açalım diğer bir VS2008 açıp , proje ismine sağ tıklayıp "Add Web Reference"'ı tıklayalım. (Yazdığımız Consumer web servisini kullanacağız bu sitede)
 
 
URL kısmına Consumer.asmx'in URL'ını yapıştıralım. "Web reference name" kısmına "CustomerReference" yazalım. (Burası önemli çünkü birazdan servisi bu isimle çağıracağız) Şimdi "Default.aspx" sayfasına bir "Button" bir de "GridView" ekleyelim. Button1'in "onclick" eventinde aşağıdaki kodu yazalım.
protected void Button1_Click(object sender, EventArgs e) 
{
     CustomerReference.Customer ws = new CustomerReference.Customer(); 
     //CustomerReference  “Add Web Service” kısmında belirlediğimiz isim
     GridView1.DataSource = ws.GetCustomers(); 
     GridView1.DataBind();
}

Herhangi bir exception almadıysak aşağıdaki sonucu göreceğiz. (Özet olarak son yazdığımız projede database'den sonuç alma ile ilgili bir kod olmamasına rağmen ilk projeye bağlanıp (servis üzerinden) ordan gerekli bilgiyi alıyoruz.)



SERVİS TEMELLİ MİMARİ

clock Mayıs 12, 2009 07:45
Servis temelli mimari; gelişmiş, büyük sistem ve uygulamaların kullanıldığı günümüzde son derece önemli bir kavram.Bu büyük sistem ve organizasyonlarda farklı işletim sistemleri ve platformları kullanıldığından, bu platform ve sistemlerin iletişimi ciddi bir sorun oluşturur.Bu iletişim problemine geliştirilen çözümSOA,Service Oriented Architecture ise farklı platformlar arasında servis katmanları kullanmak.Örneğin, Facebook'u ele alalım.Milyonlarca insanın profillerini barındırıyor serverlarında ve bu serverlar birçok yere dağılmış durumda.Ayrıca serverların çoğu da farklı işletim sistemlerine ya da platformlarına sahip. (mesela Facebook, yeni bir teknolojiye terfi etmek istedi.Eskileri bir gecede yenileyemeceğine göre belli bir süre farklı sistemler birarada çalışmak zorunda kalacak.) Ve biz Facebook profilimize girip arkadaş listemize girdik.Listemizdekilerin profillerine bakarken farklı serverlar arasında veri paylaşımı gerekti.Nasıl olacak bu paylaşım?En iyi cevap şu an için servisleri kullanmak ve en baştan servis temelli bir mimari geliştirmek.Serviste de her sistemin anlayabileceği, esnek bir dil kullanırsak (SOAP,XML,ikisi vb.) ayrıca bu bilgiyi de yine her sistemin iletişimde zaten kullanmakta olduğu HTTP üzerinden, internet kablolarıyla gönderirsek sorun çözülmüş olur.Örneğimizde bir ana server, ikincil serverlardan gerekli bilgileri servislerle toplar işler ve kullanıcıya sunar.
MICROSOFT'un servis alanında geliştirdiği ve eski teknolojilerin (COM,DCOM,MSMQ ve diğerleri) artılarını içinde barındıran WCF (Windows Communication Foundation), şu an için tam fonksiyonelli bir servis katmanı oluşturmak için yeterli. (XML tabanlı ASP.NET servisleri de kullanılabilir yalnız WCF çok daha gelişmiş bir teknoloji) İlerleyen günlerde "bir WCF servisi nasıl hazırlanır ve kullanılır" üzerine bir yazım olacak.
 



FORTUNE 500 (2009 LİSTESİ)

clock Mayıs 1, 2009 23:40
FORTUNE 500, 2009FORTUNE dergisinin Amerika'daki şirketleri gelirlerine göre sıralandırdığı listenin 2009 versiyonu çıktı.Önce genel ilk 10:

Sıra    
Şirket Gelir (milyar $)  
Kar (milyar $) 
1. Exxon Mobil 442,851.0 45,220.0
2. Wal-Mart Stores 405,607.0 13,400.0
3. Chevron 405,607.0 23,931.0
4. ConocoPhillips 230,764.0 -16,998.0
5. General Electric 183,207.0 17,410.0
6. General Motors 148,979.0 -30,860.0
7. Ford Motor 146,277.0 -14,672.0
8. AT&T 124,028.0 12,867.0
9. Hewlett-Packard 118,364.0  8,329.0
10. Valero Energy 118,298.0 -1,131.0

Listeye baktığımızda gördüğümüz petrol şirketlerinin yılın ilk çeyreğindeki yüksek petrol fiyatlarının etkisiyle ilk sıralara kuruldukları....Exxon Mobil, 2008'in 1.si Wall-Mart'ı indirmiş.Diğer bir noktada ABD'de stimulus package için denenmedik yol bırakmayan bunun için CEO'larının özel jetlerinden vazgeçtikleri otomobil şirketlerinin (General Motors ve Ford) ilk 10'da oldukları ama yılı büyük zararlarla kapattıkları.
Şimdi de Yazılım alanında en büyük şirketlere bakalım:
Sıra   
Şirket 
Genel Sıra   
Gelir (milyar $)  
1. MICROSOFT 35 60,420.0
2. Oracle 113 22,430.0
3. Symantec 419 5,874.0
4. CA 5529 4,277.0
5. Electronic Arts 5590 3,665.0
6. AAdobe Systems 6601 3,579.0
7. IIntuit 6678 3,072.0
8. AAutodesk 8818 2,315.0
9. TTeradata 9979 1,762.0
10. BBMC Software 9994 1,731.0


Yine MICROSOFT'un yazılım firmaları arasında açık ara üstünlüğü...Beni şaşırtan nokta ise Adobe'un EA'in gerisinde kalması.... 


STEVE BALLMER: GOOGLE'IN İYİ BİR RAKİBE İHTİYACI VAR

clock Nisan 27, 2009 22:50
STEVE BALLMERMICROSOFT son zamanlarda Web alanında ciddi çalışmalar yapıyor. Geçen sene başlattığı Windows Azure, Windows Live'de serverların güçlendirilmesi, blog uygulamasının başlatılması, sky drive vb. normalde MICROSOFT'tan pek beklemediğimiz gelişmelerdi.  Fakat bunlar yeterli değil, günümüzün web tabanlı dünyasında. Ayrıca şu an için web üzerinden reklam piyasasında MICROSOFT nerdeyse yok. Fakat durum değişeceğe benziyor hem çevrimiçi reklam alanında hem de diğer web uygulamalarında.Geçen hafta ülkemize gelen MICROSOFT CEO'su STEVE BALLMER, Google'ın iyi bir rakibe ihtiyacı var dedi. "Google çok iyi bir iş yapıyor ancak bir rakibe ihtiyacı var, şu anda çevrimiçi reklâm konusunda dünya genelinde üçüncüyüz. Ancak, ikincilik için çalışıyoruz. İlerde bir gün birinci de oluruz." Bunlar iddialı açıklamalar ve MICROSOFT, Google piyasayı kaparken pek de bir pey yapmadı. Yalnız açıklamaya bakılırsa bu alanda ciddi yenilikler var önümüzdeki günlerde. Bekleyelim...


ASP.NET'te GÜVENLİK: KİMLİK DENETİMİ VE YETKİLENDİRME

clock Nisan 21, 2009 08:43
ASP.NET, programcılara son derece esnek ve güçlü güvenlik özellikleri sunar.Provider Model çatısının altında Membership Provider ve Role Provider ile bir çok ayarı web.config üzerinden yapmamızı sağlar.Ayrıca machine.config ve direk olarak IIS üzerinden gerekli ayarları yapabiliriz.(özellikle IIS7 bu konuda mükemmel) Kod yazarken web uygulamalarında kullandığımız system.web.security üzerinden birçok özelleşmiş sınıfı kullanabiliriz.Bu sınıflar providerlar üzerinden yaptığımız ayarlarla bizi extradan hiç uğraştırmadan, tamamen bağımsız bir şekilde çalışırlar.Şimdi machine.config veya web.config üzerinde <authentication> ve <authorization> nasıl kullanılır buna bakalım:

 

<authentication mode="Forms">  //"Windows|Forms|Passport|Name   

</authentication> 

Web uygulamalarında neredeyse her zaman mode="Forms" kullandığımızdan diğer değerlere açıklamaya gerek yok.Şimdi <authorization> tagına bakalım:


<authorization>

      <deny users="*"/>

      <allow roles="administrator"/>

</authorization> 

Bu web.config parçasında öncelikle (*) kullanarak tüm kullanıcıları yasaklıyoruz sonrasında da rolleri administrator olanlara siteye giriş izni veriyoruz.Burda bu ayarları yaptığımız web.config'i nereye koyduğumuz büyük önem taşıyor çünkü hangi klasöre koyarsak o klasörün ayarlarında etkili oluyor.Eğer uygulamanın kök dizinine atarsak tüm uygulamayı etkiliyor.Bizim örneğimizde ise administator klasörüne konulmuş bir web.config dosyası.Elimizde <deny> ve <allow> tagları ve users,roles attributeları (tag özellikleri) var.Bunları isteğimiz ve ihtiyacımıza göre gerekli kombinasyonlarla yazıp gerekli izinleri veriyoruz. 


using System.Web.Security;
protected void LoginButton_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(TextBox1.Text, TextBox2.Text))  //this method takes two arguments username,password
{
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true); //go to page which was intended 
//before redirected to loginpage           
}
else
FormsAuthentication.RedirectToLoginPage();  //otherwise go to loginpage again
}
}


BİLGİ VE İLETİŞİM TEKNOLOJİLERİNİN TOPLUM VE EKONOMİ ÜZERİNE ETKİLERİ VE SON EKONOMİK KRİZDEKİ ROLÜ

clock Nisan 21, 2009 07:01
Bilgi ve teknoloji sistemleri üzerine kurulu dünyamızda, bu yapının topluma, ekonomiye ve son ekonomik krizdeki rolüne değindiğim makalemi aşağıdaki linkten okuyabilirsiniz: (Şu an için ingilizce ama fırsat bulunca çevirmeyi düşünüyorum:


ORACLE, SUN ' ı SATIN ALIYOR

clock Nisan 21, 2009 06:32

Oracle, 20 nisan itibariyle Sun ' ı satın aldı. Devasa bir birleşme.22 milyar dolar yıllık geliriyle Oracle, ORACLEdünyanın en büyük 127. şirketi Sun Microsystems'ı satın aldı. Zaten Oracle son database sistemlerinde java kullanmaya başlamıştı yani iki şirket arasında bayağı bir yakınlaşma vardı.Sun'un basın açıklamasından satır başları:

-Oracle Corporation ve Sun Microsystems, Oracle’ın Sun hisselerini hisse başına 9,5 dolar nakit karşılığı satın alacağının kesinleştirildiği bir anlaşma imzaladıklarını duyurdular. İşlemde, Sun’ın nakit ve borçları, yaklaşık 7,4 milyar dolar veya 5,6 milyar net olarak değerlendirildi. 
 
-Oracle’ın Sun’ın Java ve Solaris gibi iki önemli yazılım değerine sahip olması, uzun vadede stratejik bir müşteri avantajını da beraberinde getirecek. Oracle’ın şimdiye kadar satın aldığı en önemli yazılım olan Java, bilgisayar endüstrisinin en iyi bilinen markalarından ve en yaygın kullanılan SUNteknolojilerinden biri. Oracle’ın en hızlı büyüyen işi olan Oracle Fusion Middleware, Sun’ın Java dili ve yazılımının üzerinde oluşturulmuş durumda bulunuyor. Bu satın almayla birlikte Oracle, müşterilerin ve Java dünyasının yararına yönelik olarak, Java teknolojisinde yenilikçiliği ve yatırımları sürdürmeyi garanti edebilir duruma geliyor. 
 
-Sun Microsystems Yönetim Kurulu oybirliğiyle onaylanan satın alma işleminin; Sun hissedarlarının onayı, belirli yasal onayların alınması ve geleneksel kapatma koşullarına bağlı olarak bu yaz tamamlanması bekleniyo


YAZILIMCILARIN ÖNÜMÜZDEKİ 5 YIL İÇİNDE İHTİYAÇ DUYACAKLARI 10 TEKNOLOJİ

clock Nisan 18, 2009 20:56
Hayat tarzımızda ve Bilişim Dünyası'nda gerçekleşen gelişmeler sonucu isteklerimiz, ihtiyaçlarımız ve yazılımcılar olarak böyle bir dünyada başarılı olabilmek için bilmemiz gerekenler değişti.Artık çok daha fazla medya içeriği istiyoruz: müzik,video,efektler ve grafikler.Bu yeni dünyada daha iyi bir yazılımcı, bilişimci olmak için sahip olmamız gereken yetenekleri 10 başlık altında toplarsak:
 
1.  3 BÜYÜKLER(.NET,JAVA,PHP)
Günümüzde yazılım dünyası artık internet odaklı.Bu tarzda çözümler üretmek için 3 tane yıldıza sahibiz: .NET , JAVA (core JAVA,JSF,JavaFX) ve PHP.
 
2.ZENGİN İNTERNET UYGULAMALARI(RIA)
SILVERLIGHTNerdeyse tüm kalite web siteleri şu teknolojilerden birini kullanıyor: FLASH,SILVERLIGHT,JavaFX,Adobe FLEX veya AIR.Eğer piyasa odaklı büyük projelerde çalışmak veya böyle projeler yapmak istiyorsak bunlara hakim olmamız lazım çünkü ne yazık ki sadece JavaScript,CSS ve HTML kullanma devri geçti.
 
3.İNTERNET İÇERİĞİ GELİŞTİRME
Tüm gelişmelere karşın, hala tüm web uygulamalarının çekirdeğinde HTML,CSS ve JavaScript yatıyor. RIA teknolojilerini daha iyi kullanmak istiyorsak mutlaka bu çekirdek teknolojileri genel kültür anlamında değil ama gerçekten iyi bir şekilde bilmemiz gerekiyor.
 
4.WEB SERVİSLERİ
Birçok uygulamanın ortak yönü varsa ve biz bu ortak parçayı birkaç kez yazıp sürekli olarak yenilemek istemiyorsak mutlaka WEB servislerini kullanmamız gerekiyor.(örneğin WCF)
 
5.İLETİŞİM YETENEKLERİ
Sosyal yetenekler, iletişim yeteneği her alanda olduğu gibi bilişim alanında da gerçekten çok önemli.
 
6. 1 DİNAMİK + 1 FONKSİYONEL PROGRAMLAMA DİLİ
JavaFXYazılım geliştirken daha yaratıcı olmak ve ufkumuzu geliştirmek istiyorsak klasik programlama dillerinden çok daha farklı bir düşünme sistemi gerektiren dinamik ve fonksiyonel programlama dillerini öğrenmemiz gerekiyor (zaten bu diller son dönemlerde oldukça popüler oldu, Ruby ve şimdiden dikkatleri üstüne çeken F#)
 
Ruby7.FARKLI ÇALIŞMA GRUPLARI GEREKTİREN PROJELERDE ÇALIŞMA YETENEĞİ
Piyasa ölçekli büyük projelerde, birçok grup çözümün farklı kısımlarını üzerine alarak koordineli bir şekilde çalışır. (Günümüz dünyasında zaten diğer insanlar ve gruplarla çalışmak her alanda çok önemli)
 
8.MOBILE DEVELOPMENT
Günümüz cep telefonları, PDA vb. nerdeyse 10-15 sene önceki bilgisayarlarla aynı güçte.(Grafik olarak daha güçlü diyebiliriz) Onların bu yeteneğini RIA ve WEB servis uygulamalarıyla birleştirerek gerçekten güzel projeler ortaya çıkabilir ve çıkıyor da zaten.

http://blogs.techrepublic.com.com/10things


AJAX KULLANARAK ASP.NET SAYFASI YAPIMI

clock Nisan 18, 2009 07:34

ASP.NET 3.5 ve VS2008 son derece kullanışlı ve gelişmiş AJAX kontollerine sahipler.Bunlar: ScriptManager,ScriptManagerProxy,Timer,UpdatePanel ve UpdateProgress. Şimdi UpdatePanel ve UpdateProgres'i kullanmasını göreceğiz.Her zamanki klasik örnekten, server saatini almaktan başlayalım.İlk önce ismi AJAX olan bir proje açalım VS'de (veya başka bir adda)



Default.aspx dosyamızı açıp bir ScriptManager ekleyelim.Ama sadece bir tane ekleyelim ve onu da en tüm diğer AJAX kontrollerinin üzerine ekleyelim.Yoksa runtime'de hata alırız. (Ben en garanti yol olarak <form....> dan sonrasına ekliyorum

    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                <br />
                <asp:Button ID="Button1" runat="server" Text="Button" />
            </ContentTemplate>           
        </asp:UpdatePanel>

    </div>
    </form>

Şimdi de bir UpdatePanel ekleyelim.Design View'de direk sürükleyip bırakalım veya kod kısmında <UpdatePanel> içerisine bir <ContentTemplate> ekleyelim ve istediğimiz ASP.NET kontrollerini ekleyelim.Son derece simple olan kodumuz burda (default.aspx.cs)

protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
} 


Button'a tıkladığımızda serverdan saati alırız ama sayfa yenilenmez.Nedeni ise buttonun UpdatePanle içerisinde olması.UpdatePanel ilişkili bir event olduğu zaman update panel sadece kendi içerisinde bulunan html'i yeniler. (AJAX'ın yararı burda karşımıza çıkıyor, her ne kadar bizim örneğin küçük bir sayfadan oluştuğundan bu avantajı göremesek deLaughing)

Şimdi UpdateProgress'e bakalım.Bu kontrol de en az UpdatePanel kadar kolay kullanım olarak:

        <asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
                Lütfen Bekleyin
            </ProgressTemplate>
        </asp:UpdateProgress>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <br />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                <br />
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            </ContentTemplate>
        </asp:UpdatePanel> 

Yalnız sonucu görebilmek için server'ı uyutmamız ve aşağıdaki kodu yazmamız lazım

protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(4000);
Label1.Text = DateTime.Now.ToString();
}  
Server kendisine gelen isteği 4 saniye bekletir.Bu sırada UpdateProgress içeriğini gösterir ve ardından da kaybolur. Eğer bekleme gif'i göstermek istiyorsak aşağıdak gibi bir img eklemek yeterli

<ProgressTemplate>               
                <img style="float:left" src="ajax-loader-darkblue.gif" />
</ProgressTemplate> 

 



FORTUNE 500 LİSTESİ (yıllık ciroya göre en büyük American Şirketleri )

clock Nisan 17, 2009 17:57

FORTUNE dergisinin Amerika'daki ciroları en yüksek ilk 500 şirketi belirlediği 2008 (yayımlanan en son liste) listesinde İnternet ve Yazılım şirketlerinin durumlarına baktım.Ama önce genel listenin babaları:  

 

Listede görüldüğü gibi listenin ilk sırasında bir parekende zinciri sonraki 4 sırada ise petrol devleri var.Cirolar gerçekten devasa büyüklükte.Türkiyenin GSMH'sinin nominal olarak 750 milyar dolar civarında olduğunu düşünürsek bir Wall-Mart yıllık ham geliriyle bir yarım Türkiye yapabiliyor.Ayrıca GSMH'lerine ülkeleri sıralarsak Wall-Mart listeye 28.sırada giriyor.(190 ülke arasında)(Karşılaştırma sadece cirolar üzerinden eldeki toplam nakit ve gayri menkullara bakarsak örneğin yukardaki listemizin 8.'si Citigroup(her ne kadar batmak üzere olsalar da!!!!) yaklaşık 3 trilyon dolara sahip) Neyse şimdi İnternet şirketlerimizin durumlarına bakalım:

 

Bu listede neden Microsoft yok diye düşünebilirsiniz.Nedeni ise FORTUNE dergisinin Microsoft'u İnternet Şirketleri arasında değil de Bilgisayar Yazılım Firmaları (bu ayrım genel olarak doğru tabii ki,yalnız artık yazılım firmaları internet odaklı olmaya başladıklarından dolayı biraz da karıştı) kategorisinde sınıflandırması.Şimdi de yazılım firmaları:

Yazılım firmalarında açık ara Microsoft önde olmuş.İlk 8'in diğer 7'sinin yıllık gelirlerinin toplamı ilk sıraya ulaşmıyor.Ama bu arada sektörün büyüklüğünü de görmüş oluruz.Sadece bu liste bile 90 milyar dolar demek.