Skip Navigation LinksAna sayfa
Kategorilerim

En son beş notum...

Planlanan yazılarım...

asp.net tanımsız kullanıcılar
İnternetten para kazanma yöntemleri

Rastgele yazdıklarım...

09.02.2010
iki veritabanı arasında olmayan sp bulma.

iki veritabanı arasında olmayan sp(stored procedure), FN(function), V(view), U(Table) bulunması

Böyle bir yazı yazmamın amacı;
    2009 yılına ait bir veritabanı kullanıyorsunuz ve 2010 yılında bu veritananını yeniden oluşturyorsunuz. Ama kullandığınız program (ERP, MRP, vs.) bunları otomatik olarak yapıyor. Fakat siz 2009 yılında bir takım P(stored procedure), FN (function), V(view), U(Table) oluşturdunuz ve bunları yeni açılan veri tabanında olup olmadığının kontrolünü yapıp yeni veritabanına aktarmak istiyorsunuz.

Bu makalemde sizlere bunu anlatacağım. şimdiyekadar muhtemelen kullanmadığınız değişik bir yöntemle yapacağız. EXCEL kullanarak hem iki veritabanındaki farklılıkları bulacağız hemde bu farklılıkları otomatik oluşturacağız.

Sırasıyla Yapmamız gerekenler;

  • Öncelikle iki veri tanabı arasında olmayan stored procedure yada function' ları bulan ve table donduren bir function yazacağız.
  • Bunları excel'de listeliyeceğiz
  • Bu stored procedure, function'ların sahip olduğu komut satırlarını bulan bir kod yazağız.
  • Bu kodları EXCEL'de ilgili storedProcedure'un karşılığı olarak getittireceğiz.
  • Saha sonra bir komut satırıyla bunları olmayan veri tabanımızda oluşturacağız.
  • SQL programımıza girerek Fonksiyonumuzu hazırlayalım

            
    --ilk veritabanımızdaki tüm kayıtlar getireleceğinden
    --ikinci veritabanında karşılığı olmayan stored procedure'ler
    --null değer alacaktır. LEFT OUTER JOIN ile iki veritabanını
    --ilişkilendiriyoruz.
            
    create function SH_iki_veritabani_arasinda_olmayan_veriler_TABLE (@verininCinsi nvarchar (5))
        returns table as
        return
            (
                select  
                    ilkVeriTabani.name as ilkVeriTabani_NAME 
                    ,ilkVeriTabani.id as ilkVeriTabani_ID
                    ,ikinciVeriTabani.NAME as ikinciVeriTabani_NAME
                    ,ikinciVeriTabani.id  as ikinciVeriTabani_ID from byhasanusta.dbo.Sysobjects  as ilkVeriTabani
                    left OUTER join byhasanustayedek.dbo.Sysobjects  as ikinciVeriTabani  
                    ON ilkVeriTabani.name = ikinciVeriTabani.name 
                    where ilkVeriTabani.Xtype = @verininCinsi
            )
    
    
    Burada Sysobjects tablosundan bilgi aldık. Daha önceki dersimizde bu tablonun içeriğini incelemiştik.

  • Şimdi gelelim Excel'e. Bir excel dosyası açalım.
    Burada dikkat ederseniz üst tarafta bir componentimiz mevcut. controls adı altında. Eğer bu sizde ekli değilse, menü çubuğunda sağ tuşa basarak ekleyebilirsiniz.

    Menü Çubuğunda sağ tuşa basın -> Customize Quick Access Tollbar' ı seçin. Aşağıdaki ekran gelecek ve buradan Controls tool'unu bulup Add' itıklayın. Ok 'e basarak ekranı kapatın.

    Controls -> Insert -> ActiveX Controls' un altından bir adet button seçelim. Ve Excel'e ekleyelim. Aşağıdaki gibi bir görüntümüz olacak.

    Şimdi Command Button1' i tıklayarak kod editörümüzde geçelim. Kodlamaya geçmeden önce yapmamız gereken EXCEL' e kütüphaneden bir kitaplık eklememiz.

    Tools -> References tıklayalım. Burada bize kütüphane listesi açılacak.

    Burada microsoft ActiveX Data Object 2.1 Library 'i işaretliyelim. Ve OK butonuna basalım.

    Aşağıdaki gibi bir Sub oluşturalım. Ve butonumuzun Click olayına veritabanindaOlmayanSP yazalım.

    Public Sub veritabanindaOlmayanSP(veriTabani As String)
    
        'Bağlantı Nesnesi yaratıyoruz
        Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
    
        'SQL Bağlantısı için string tanımlıyoruz
        Dim connstr As String
    
        'SQL Server OLE DB Provider' kullanıyoruz
        connstr = "PROVIDER=SQLOLEDB;"
    
        'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olaraj firma değişkeni atadık.
        connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
    
        'Bağlantıyı oluşturuyoruz.
        connstr = connstr & "Integrated Security=SSPI;"
    
        'Bağlantıyı açıyoruz.
        conn.Open connstr
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim cmd As New ADODB.Command
        cmd.CommandType = adCmdText
        cmd.ActiveConnection = conn
        
        'SQL cümlemizi yazıyoruz
        cmd.CommandText = "select * from SH_iki_veritabani_arasinda_olmayan_veriler_TABLE('P') where ikinciVeriTabani_NAME is null"
        
        'dönen satayı bir record sette tutuyoruz
        Set rs = cmd.Execute
        
        'bağlantıyı boşaltıyoruz.
        Set conn = Nothing
        
        'Record Set'in yapısı excel gibi olduğundan
        'içerisindeki bilgiyi direkt istediğimiz
        'bir hücreye yapıştırabiliyoruz
        
        Sheet1.Cells(2, 1).CopyFromRecordset rs
         
        
    End Sub
    
    Private Sub CommandButton1_Click()
        veritabanindaOlmayanSP ("byhasanusta;")
    End Sub
    

    çalıştırıp sonuca baktığımızda. Ilk veritabanımızda olupta ikinci veritabanında olmayan stored Procedure'ler listelenmiş oldu.

  • Şimdi Tekrar SQL programımıza gelelim ve aşağıdaki stored procedure yazalım ve oluşturalım.
    create procedure SH_sp_F_komut_satirlari_getir  
        @sp_veya_F_ID nvarchar(100)  
        AS
        select text from SysComments where id=@sp_veya_F_ID
    

  • Şimdi texrar Excel dosyamıza gelelim ve bir Command Button oluşturalım. Ayrıca aşağıdaki Sub'ı yazalım.

    Public Sub veritabanindaOlmayanSPKomutsatiriGetir(veriTabani As String)
    
        'Bağlantı Nesnesi yaratıyoruz
        Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
    
        'SQL Bağlantısı için string tanımlıyoruz
        Dim connstr As String
    
        'SQL Server OLE DB Provider' kullanıyoruz
        connstr = "PROVIDER=SQLOLEDB;"
    
        'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olaraj firma değişkeni atadık.
        connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
    
        'Bağlantıyı oluşturyoruz.
        connstr = connstr & "Integrated Security=SSPI;"
    
        'Bağlantıyı açıyoruz.
        conn.Open connstr
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim cmd As New ADODB.Command
        'Bu sefer komut tipimizi stored procedure olarak değiştiriyoruz
        cmd.CommandType = adCmdStoredProc
        
        cmd.ActiveConnection = conn
        
        'SQL cümlemizi yazıyoruz
        cmd.CommandText = "SH_sp_F_komut_satirlari_getir"
        
        'Satırlar arasında döneceğimiz için
        'Bir değişken tanımlıyoruz
        Dim i As Integer
        
        'storedProcedure atamak için değişkenimiz tanımlıyoruz.
        'SQL' de tanımladığımız sp miz bizden parametre isteyecek
        'Bu parametreyide Excel'deki satırlardan temin edeceğiz.
        Dim spText As String
          
            For i = 2 To 7
            
                    spText = Sheet1.Cells(i, 2).Value
                    
                    cmd.Parameters.Append cmd.CreateParameter("@sp_veya_F_ID", adVarChar, adParamInput, 100, spText)
                
                    'dönen satayı bir record sette tutuyoruz
                    Set rs = cmd.Execute
                    
                    'İçerisindeki bilgi teksatır döneceğinde ilgili satırın
                    'karşısına sql'deki kod bloğumuzu yapıştırıyoruz.
                    Sheet1.Cells(i, 5).Value = rs.GetString()
                    
                    Set rs = Nothing
                    cmd.Parameters.Delete ("@sp_veya_F_ID")
                                      
            Next i
            
        'İşimiz bitince bağlantıyı boşaltıyoruz.
        Set conn = Nothing
         
    End Sub
    
    Private Sub CommandButton2_Click()
        veritabanindaOlmayanSPKomutsatiriGetir "byhasanusta;"
    End Sub
    
    

    ikinci butonumuza tıklayınca ilgili stored Procedure ait komut satırları sayfa1' de 5. kolona gelecektir. Bundan sonra geriye yapılacak tek bir işlem kalıyor bunları ikinci veritabanımızda oluşturmak.

    excel görüntümüz aşağıdaki gibi olacaktır;

    "E" sütununda ilgili stored Procedure ait komut satırları yer almaktadır.

  • Gelelim bunları ikinci veritabanımızda oluşturmaya.

    Excel dosyamızda üçüncü bir Command Button oluşturalım ve aşağıdaki kodlamayı yapalım.

    Public Sub komut_satiri_calistir(firma As String)
        'Bağlantı Nesnesi yaratıyoruz
        Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
    
        'SQL Bağlantısı için string tanımlıyoruz
        Dim connstr As String
    
        'SQL Server OLE DB Provider' kullanıyoruz
        connstr = "PROVIDER=SQLOLEDB;"
    
        'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olarak firma değişkeni atadık.
        connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
    
        'Bağlantıyı oluşturyoruz.
        connstr = connstr & "Integrated Security=SSPI;"
    
        'Bağlantıyı açıyoruz.
        conn.Open connstr
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        Dim cmd As New ADODB.Command
        'komut tipimizi tekrat text olarak değiştiriyoruz
        cmd.CommandType = adCmdText
            
        cmd.ActiveConnection = conn
        
        'Satırlar arasında döneceğimiz için
        'Bir değişken tanımlıyoruz
        Dim i As Integer
        
           For i = 2 To 7
            
                    'SQL cümlemizi yazıyoruz. Bu sefer sql cümlemiz
                    'E kolonundaki cümlelerimiz olacak.
                    cmd.CommandText = Sheet1.Cells(i, 5).Value
                   
                    Set rs = cmd.Execute
                    
                    'Bilgi amaçlı 3. kolona "ok" yazdırıyorum.
                    Sheet1.Cells(i, 3).Value = "ok"
                    
                    Set rs = Nothing
                    
                  
            Next i
            
        'İşimiz bitince bağlantıyı boşaltıyoruz.
        Set conn = Nothing
    
    End Sub
    
    Private Sub CommandButton3_Click()
        'Dikkat!!! stored procedur' leri oluşturacağım
        'veri tabanını belirtiyorum.
        komut_satiri_calistir "byhasanustayedek;"
    End Sub
    
    

    İşimiz bittiğinde görüntümüz aşağıdaki gibi olacaktır. SQL' de stored procedurlerinizi kontrol edebilirsiniz.

CommandButton1: İkinci veritabanında olmayan stored procedurleri getirdi.

CommandButton2: Bunlara ait komut satırlarını getirdi.

CommandButton3: İkinci veritabanında olmayan stored procedurleri oluşturdu.

Yapacaklarımızın hepsi bukadar. CommandButton1' de "P" parametresi gönderdik "P" parametresi çekeceğimiz verinin procedurlerden oluşacağını gösterir. Eğer function olsaydı "fn" yazardık. Bu şekilde istediğimiz verinin kontrolünü yaptırabiliriz.

 
yazıya git
01.12.2009
Flex nedir?
Flex adobe firmasının geliştirmiş olduğu data içeriği açısından flash'dan kuvvetli bir geliştiricidir. Flex ile data içerikli güzel programlar hazırlayabilirsiniz. Ben flex yazılarımda bir veritabanından veri nasıl alınır ve işlenir bunları anlatacağım.
flex ile program geliştirmek çok zevklidir. Kullanımı çok basittir. Makalelerimde sıklıkla veri tabanından veri çekme işini göstereceğim.
inventor Crack
 
yazıya git
Flash Nedir?
Adobe firmasının geliştirmiş olduğu görsel içerik bakımından en güçlü editördür. Bu editör ile güçlü animasyonlar hazırlayabilirsiniz. Action Script 3.0 ile çok güçlü bir program alt yapısı sunmaktadır. Adobe firmasının eskiden oyun animasyonları hazırlamak için çıkardığı flash günümüzde çok güçlü bir yapıya sahiptir.
flash editürünün yeni versiyonu CS4
 
yazıya git
asp.net nedir?
ASP ( Active Server Page ) sayfa uzantısı ".asp" olan asp.dll isimli ISAPI yorumlayıcı tarafından yorumlanması ve kodla istenilen işlemlerin gerçekleştirilmesinden sonra sunucunun istemciye göndermesi mantığı ile çalışıyor. Sunucuların performansını ciddi şekilde etkilemektedir sunucuların üzerinde bir çok asp ile yazılmış sitelerin barındığını düşünürsek eğer sunuculara ne kadar çok yük düştüğünü anlayabiliriz.
İşte programlama editörlerinin bence ağa babası. Profosyenel programlarınızı bu editörle oluşturabilirsiniz. Tabi ki programcılık bilginizin birazcık kuvvetli olması gerekir.
 
yazıya git
25.02.2010
AS3 3D fotograf galaresi hazırlama
Arkadaşlar nihayet bu yazımıda yazmaya vakit bulabildim.

Şimdi hep birlikte üc boyutlu bir resim galerisi hazırlayacağız. Profesyonel üç boyut olmayacak tabiki ama Mouse yönüne göre resimlerimize hareket yönü belirleyeceğiz.

Bildiğiniz gibi profesyonel uc boyutlar Autodesk Inventor, 3D Max gibi profesonel programlarda hazırlanabiliniyor.

Proje örneğimizi aşağıda görebilirsiniz.

Sırası ile yapacaklarımız.

  • Projeye hazırlanış
  • Yeni bir flash document oluşturuyoruz.
  • Resimlerimizi eklemek için 110x100 boyutlarında bir movie clip oluşturuyoruz
  • Bu movie Clip içerisinde yükleyeceğimiz resimler için ayar yapıyoruz. Bu moviClip her bir resmimiz için tek tek oluşturulacak.
  • Yükleme işlemini bildirmek için yükleniyor yazısı.
  • Bu movie clip’e resimlerin yüklenmesi için Flash Develop editöründe bir sınıf oluşturuyoruz.
  • Ana sınıfımızı yani projenin oluştuğu kodların olacağı sınıfı oluşturup işlemlerimizi bu sınıfta yapıyoruz.
  • Projeye Hazırlanış.
    • Öncelikle bir klasör oluşturalım. Klasörümüzün adı “ucBoyutluResimGalerisi” olsun.
    • Bu klasörün içerisinde “img” ve “efekt” adlı iki klasör oluşturuyoruz.
    • “img” klasöremize “.jpg” resimlerimzi yükleyeceğiz. Resimlerimizin kare boyutlarında ve ölçülerinin 110x110 olmasına dikkat edelim. Böylelikle ekranımızda daha şık bir görüntü elde etmiş oluruz.
    • “efekt” klasörümüzün içerisinde flash içerisinde kullanacağımız tween efektleri olacak. Bunları buradan indirebilirsiniz.
    • Ve daha sonra oluşturacağımız *.fla, *.as dosyalarımızda “ucBoyutluResimGalerisi” klasöründe bulunacaklar.

  • Yeni bir flash document oluşturuyoruz.
    • File -> New menüsünden yeni bir flash document oluşturalım
    • Dokümanımızın büyülüğünü width=1000px height=500 px olarak ayarlayalım.
    • Zemin rengini siyah yapalım.
    • Dosyamızı “ucBoyutluResimGalerisi.fla” olarak kayıt edelim.

  • Resimlerimizi eklemek için 110x100 boyutlarında bir movie clip oluşturuyoruz
    • Oluşturduğumuz flash dokümanımızın içerisinde Araçlar menüsünden “rectangle” aracını kullanarak 110x110 boyutlarında bir kare oluşturuyoruz. Bu kare bizim her bir resmimiz için yazacağımız kodlarla yeni bir örneği oluşacak.
    • Bu karenin çizgi rengini beyaz olarak ayarlıyoruz ve kalınlığını 5 yapıyoruz.
    • Çizgi içerisinde kalan kısmı rengini koyu gri yapabiliriz. Bu alana resim geleceğinden rengi çok önemli değil.
    • Oluşturduğumuz kareyi komple seçerek movieClip’e dönüştüroyoruz. İsmini fotoBack olarak belirliyoruz.
    • Movie Clip’ dönüştürürken Registration noktasını orta nokta yapıyoruz. Bunu yapmamızın nedeni resim büyüdüğünde orta noktadan büyümenin sağlanması içindir.
    • "Export for Action script" seçeneğini işaretleyip Linkage ismini FotoBack olarak belirliyoruz.
    • "Enable guides for 9 –slice scaling" seçeneğini işaretliyoruz. Bunun sebebi belirlediğimiz noktalardan itibaren resmi büyütmesini istememizdir.
    • Ok tuşuna basıp MovieClip oluşturuyoruz.

  • Bu movie Clip içerisinde yükleyeceğimiz resimler için ayar yapıyoruz. Bu moviClip her bir resmimiz için tek tek oluşturulacak.
    • Oluşturduğumuz “fotoBack”isimli movieClip mizin içerisine girip kesikli çizgileri çizgilerimizin kenarına doğru çekiyoruz.
    • Ekleyeceğimiz resimleri orta alana ekleyeceğimizden bu alanı da movieClip’e dönüştürüyoruz.
    • İsmini "resimPano" olarak ayarlıyoruz ve registration’u orta nokta yapıyoruz.
    • resimPano movieClip’i seçip “Instance Name” ini resimPano olarak ayarlıyoruz.

  • Yükleme işlemini bildirmek için yükleniyor yazısı.
    • fotoBack MovieCLip’e yeni bir “layer” açıp fotoBack movieClip’ imizin üstüne gelecek şekilde “Dynamic Text” ekliyoruz.
    • Bunun Instance Name’i “yuklemeYazi” olarak ayarlıyoruz.

  • Bu movie clip’e resimlerin yüklenmesi için Flash Develop editöründe bir sınıf oluşturuyoruz.
    • Flash develop editörümüzü açalım. File -> New -> AS3 Document’ i seçelim ve yeni bir class oluşmasını sağlayalım.
    • Oluşturduğumuz sınıfı .fla dosyamızın bulunduğu klasöre kayıt edelim. İsmini "fotoBack.as" verelim. Bunun nedeni flash içerisinde oluşturduğumuz Movie Clip ‘in ismi ile aynı olmak zorundadır.
    • Movie Clip içerisine fotograf yükleme işlemi yaptıracağımız kodlarımızı yazalım. Kodların içerisinde gerekli açıklamaları bulabilirsiniz.

      fotoBack.as
          package 
      {
      	import flash.display.Loader;
      	import flash.display.MovieClip;
      	import flash.events.Event;
      	import flash.events.ProgressEvent;
      	import flash.filters.BlurFilter;
      	import flash.net.URLLoader;
      	import flash.net.URLRequest;
      	
      	/**
      	$(CBI)* ...
      	$(CBI)* @author ...
      	$(CBI)*/
      	public class fotoBack extends MovieClip
      	{
      		private var path:String; //yükleyeceğimiz resim dosyalarımızın yolunu belirtmek için kullanacağız.
      		private var ldr:Loader; //resim yüklemek için Loader nesnesi tanıtıyoruz.
      		
      		//yapıcı sınıfımız "constructor" bu sınıfın bir örneği oluştuğunda
      		//direkt olarak yapıcı sınıf çalışacaktır. 
      		//Bu sınıftan örnek oluşturulurken bizden path bilgisi bekleyecektir.
      		
      		public function fotoBack(path:String):void
      		{
      			this.path = path; //yukarıda tanımladığımız path değişkenimize dışarıdan gelen path' i atıyoruz.
      			ldr = new Loader (); //Loader nesnesinin örneğini oluşturuyoruz.
      			ldr.load (new URLRequest(path)); //URLrequest ile path bilgisi bekliyoruz. Ve gelen adrsteki resmi yüklediyoruz.
      			
      			ldr.contentLoaderInfo.addEventListener (Event.COMPLETE, resimYukle);//Resim yükleme olayı tamamlandığında resimYukle fonsksiyonunu çalıştıryruz.
      			ldr.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, resimYukleniyor); //resim yüklenirken nekadarının yüklendiğini oluşturduğum dynamic
      			//text dosyamızda gösteriyoruz.
      			
      			
      			
      		}
      		private function resimYukleniyor (evt:ProgressEvent):void
      		{
      			//Resimlerimiz yüklenirken ekrana nekadar yüklendiği bilgisini gösteriyoruz.
      			yuklemeYazi.text = String(  Math.round ((evt.bytesLoaded / evt.bytesTotal) * 100));
      			
      		}
      		
      		private function resimYukle (evt:Event):void
      		{
      			//yükleme işlemi bitince ekrandaki yazıyı kaldırıyoruz.
      			yuklemeYazi.visible = false;
      			
      			ldr.x = -55; //Oluşturduğumuz fotoBack MovieClip mizin registration noktası ortası olduğundan
      			ldr.y = -55; //yüklenen resmimizi 0 noktasına almasını sağlıyoruz.
      			ldr.width = 110; //fotoback nesnemiz in boyutları 110 olduğundan yüklediğimiz resmin
      			ldr.height = 110; //110 height ve width ölçülerinde olmasını sağlıyoruz.
      			resimPano.addChild (ldr); //resmizi resimPano instance name'li nesnemizin içerisine yüklüyoruz.
      			
      		}
      	}
      	
      }
      
  • Ana sınıfımızı yani projenin oluştuğu kodların olacağı sınıfı oluşturup işlemlerimizi bu sınıfta yapıyoruz.
    • Yeni bir as3 document oluşturuyoruz. Bu dükümanımızda artık resim yükleme ve Mouse yönüne göre hareketlerimizi yapıyoruz.
    • Oluşturduğumuz sınıfı “ucBoyutluResim.as” olarak .fla doyamızın bulunduğu klasöre kayıt ediyoruz.
    • Flash Dokümanımızın class ismini "ucBoyutluResim.as" olarak belirliyoruz.

      ucBoyutluResim.as
      package 
      {
      	
      	import flash.display.MovieClip;
      	import efekt.*;
      	import efekt.easing.*;
      	import flash.events.*;
      	
      	
      	/**
      	$(CBI)* ...
      	$(CBI)* @author ...
      	$(CBI)*/
      	public class  ucBoyutluResim extends MovieClip
      	{
      		var container:MovieClip; //21 adet resmimiz olacağından bu resimleri bir movie clip içerisine eklemek için 
      		//container movie clibi tanımlıyoruz.
      		
      		var count: Number = 0; //Bu sayac resimlerimizin ilk satırda 7 adet yüklendikten sonra sıfırlaması için tanımlıyoruz.
      		var tiklanan:MovieClip; //tıklanan movieClip'i daha sonra bulunmasını sağlama için tanımlıyoruz.
      		
      		public function ucBoyutluResim ():void
      		{
      			container = new MovieClip();
      			container.x = 100;
      			container.y = 100;
      			
      			addChild(container);
      			
      			
      			for (var i:int = 1; i <21 ; i++) //resimlerimizi eklemek için for döngüsünden yararlanıyoruz.
      			{
      				var mc:fotoBack = new fotoBack("imgucBoyut/" + i + ".jpg");//fotoBack nesnemizin örneğini oluşturduk.
      				//Böylelikle her bir i değeri için fotoBack nesnemiz oluşturulacak ve resimlerimizi container nesnemize eklemiş olcağız.
      				
      				mc.x = 125 * count; //count değişkeninin modunu aldık. Yani 7'nin katıysa sıfırladık. Buda x ekseninin 7 satırdan oluacağını belirlemiş oluyoruz.
      				mc.y = 125 * Math.floor (i / 8); //y eksenide 7 satır dolduktan sonra aşağı geçmesi için i nin değerine 8'i böldürüyoruz.
      				
      				
      				container.addChild (mc);
      				
      				
      				
      				if (i % 7 == 0)
      				{
      					count = 0;
      				}
      				else
      				{
      					++ count;
      					
      				}
      				
      				mc.addEventListener (MouseEvent.ROLL_OVER, mouseUstunde);
      				mc.addEventListener(MouseEvent.ROLL_OUT, mouseDisinda);
      				mc.addEventListener(MouseEvent.CLICK, tiklandi);
      			}
      			
      			addEventListener (MouseEvent.MOUSE_MOVE , mouseOynuyor);
      		}
      		
      		private function mouseOynuyor(evt:MouseEvent):void
      		{
      			var yerX:Number = mouseX / 1000;
      			var yerY:Number = mouseY / 500;
      			trace (yerX, yerY);
      			
      			TweenLite.to (container, 2, {rotationY:(-60+(125*yerY)), rotationX : (60 -(125*yerX)),ease:Expo.easeOut } );
      			
      		}
      		
      		private function mouseUstunde(evt:MouseEvent):void
      		{
      			
      			var mc:MovieClip = evt.currentTarget as MovieClip;
      			if (tiklanan != mc)
      			{
      				mc.alpha = 0.2;		
      			}	
      			
      		}
      		
      		private function mouseDisinda(evt:MouseEvent):void
      		{
      			var mc:MovieClip = evt.currentTarget as MovieClip;
      			if (tiklanan != mc)
      			{
      				mc.alpha = 1;
      			}
      		}
      		
      		private function tiklandi(evt:MouseEvent):void
      		{
      			var mc:MovieClip = evt.currentTarget as MovieClip;
      			mc.alpha = 1;
      			
      			if (tiklanan == null)
      			{
      				container.addChild (mc);
      			
      			TweenLite.to (mc, 0.5, { scaleX:5, scaleY:5,ease:Expo.easeInOut} );
      			tiklanan = mc;
      				
      			}
      			else if (tiklanan == mc)
      			{
      				TweenLite.to (mc, 0.5, { scaleX:1, scaleY:1, ease:Expo.easeInOut } );
      				tiklanan = null;
      			}
      			else
      			{
      				TweenLite.to (tiklanan, 0.5, { scaleX:1, scaleY:1, ease:Expo.easeInOut } );
      				container.addChild(mc);
      				TweenLite.to (mc, 0.5, { scaleX:5, scaleY:5, ease:Expo.easeInOut } );
      				tiklanan = mc;
      				
      				
      			}
      			
      		
      			
      		}
      	}
      	
      }
      
 
yazıya git
21.01.2010
Flash AS3 ile XML den veri çekme.

Flash'da dinamik veri oluşturmak mümkündür. Dinamik veri derken gösterilecek bilginin sürekli güncel kalması ve bu güncellemeninde otomatik olarak bir dosyadan yapılmasının sağlanması olayıdır.


Birlikte bir uygulama yapacağız ve bu uygulamayla XML dosyadan resimleri çektireceğiz.

Flash' da kod yazmak için kolaylık olması açısında flash develop editörünü kullanıyorum. Fikir sahibi olmak isterseniz Buradan bakabilirsiniz.

Örnek projemiz:

Projeye hazırlık.

  • Flash dosyasının hazırlanışı
  • Flash Develop dosyasının hazırlanışı
  • XML dosyamızı hazırlanışı
  • Resimlerin ayarlanışı
  • Kodlamaya geçiş
  • Flash dosyasının hazırlanışı

    Öncelikle flash programımızı açıyoruz. Yeni bir document oluşturuyoruz. Bu dosyayı xmlVeriCekme.fla olarak kayıt ediyoruz.

    Not:Kayıt ettiğimiz dosyanın bulunduğu klasörde XML, .as, .fla dosyalarımız olacak.

  • Flash Develop dosyasının hazırlanışı

    • Flash develop editörümüzü açıyoruz.
    • File -> New -> AS3 Document seçiyoruz. Gördüğünüz gibi yeni bir as3 dosyası oluşturuldu.
    • public class'ımızı public class xmlVeriCekme extends MovieClip şeklinde ayarlıyoruz.
    • Akışı başlatacak fonksiyonumuzu oluşturuyoruz. public function xmlVeriCekme ():void
    • dosyamızı .fla dosyamızın bulunduğu klasöre kayıt ediyoruz.
    • flash dökümanımıza gelerek class ismini as dosyamızın ismini veriyoruz. Yani xmlVeriCekme olarak tanıtıyoruz.

    Gördüğünüz gibi .fla ve .as dosyalarımızı oluşturduk.

  • XML dosyamızın hazırlanışı

    XML dosyamızı hazırlamak için notepad editörünü kullanabiliriz. Yapıyı aşağıdaki gibi hazırlayalım.

    XML dosyamız :
    
    
       
       
       
       
    
    
    

    Dosyamızı .as, .fla dosyalarımızın yanına xmlVeriCekme.xml olarak kayıtedelim. Ben burada sadece 4 adet resim için XML dosyası hazırladım dilerseniz bu sayıyı artabilirsiniz. Hiç problem olmayacaktır.

  • ayarladığımız 4 adet resmi dosyalarımızı koyduğumuz klasörün altında img klasörü açalım ve buraya atalım. Resimlerimizin aynı boyutta olması daha iyi olacaktır.

  • klasör yapımız aşağıdaki gibi olacaktır.

  • Sıra geldi kodlamaya geçiş.

    • Özetle bunları yapacağız;
      • XML dosyamızı yükleyeceğiz
      • XML dosyamızın içerisindeki dosya yolunu kullanarak loader nesnesi ile image dosyalarımızı çekicez
      • Bunları teker teker sahnemize eklyeceğiz.
      • Ve animasyon yapacağız.
    • Flash develop editörümüze gelelim. Aşağıdaki kodlamayı yapalım. Kod' ların yanında açıklamalarını yazdım.
    • 
          package 
      {
      	import flash.display.Loader;
      	import flash.display.MovieClip;
      	import flash.events.Event;
      	import flash.net.URLLoader;
      	import flash.net.URLRequest;
      	import fl.transitions.Tween;
      	import fl.transitions.TweenEvent;
      	import fl.transitions.easing.*;
      	
      	
      	public class xmlVeriCekme extends MovieClip
      	{
      		public var xmlResim:XML; //genel kullanım için öncelikle bir xmlResim Değişkeni tanımlıyoruz.
      		public var xmlResimUzunlugu:int; //xmlResim nesnemizin uzunluğunu tutmak için tanımlama yaptık.
      		public var frame:uint = 0; //frame' i dinlemek için "frame" değişkeni tanımlıyoruz ve 0' ıncı kareden başlamasını istiyoruz.
      		public var resimLoader:Loader; //Resim yükleme için Loader nesnesi tanımlıyoruz.
      		public var a:uint = 0; //Bu değişken ile kaçıncı resimde olduğumuzu tespit edeceğiz.
      		public var rootPath:String; //XML dosyamızdaki resimlerin hangi klasörden çekileceğini bulmak için tanımlanan string değişkeni.
      		
      		public function xmlVeriCekme ():void
      		{
      			//xml dosyamızı çağırmak için URLLoader nesnesi tanımlıyoruz.
      			//URLLoader : text tabanlı dosyaları çağırmak amaçlı kullanılır.
      			//Loader : resim içerikli dosyaları (.jpg, .png) gibi çağırmak için kullanılır.
      			//URLLoader dosyasına request nesnesini atıyoruz.
      			//URLRequest içeriğindeki dosyamızı URLLoader nesnesine taşır.
      			
      			var xmlLoader:URLLoader = new URLLoader (new URLRequest("image/ornekler/xmlVeriCekme.xml"))
      			
      			//xmlLoader nesnemiz yüklendiğinde ilgili fonksiyonu çalıştırıyoruz
      			xmlLoader.addEventListener(Event.COMPLETE, 	xmlLoaderYuklendi);
      			
      			
      		}
      		
      		public function xmlLoaderYuklendi (evt:Event):void
      		{
      			//Tanımladığımız xml nesnesine xmlLoader'a yüklenen dosya içeriğini atıyoruz. 
      			//Bunun için yeni bir XML nesnesi oluşturduk (new XML)
      			//Şu andan itibaran xmlResim nesnemizin içerisinde bizim XML dosyamızın içeriği bulunmakta.
      			xmlResim = new XML (evt.target.data);
      			//XmlResim dosyamızın içindeki node' ların uzunluğunu xmlResimUzunlugu değişkenimize atıyoruz.
      			xmlResimUzunlugu = xmlResim.node.length();
      			
      			//Resim klasörüne erişiyoruz.
      			rootPath = xmlResim.@rootPath;
      			
      			//Bu aşamda resimlerimize animasyon vermiyeceksek for döngüsü ile sahnemize eklyebiliriz. 
      			//Fakat bu örnekte animasyon kullanacağımızdan Yani resimleri teker teker görmek istediğimizden dolayı 
      			//ENTER_FRAME Event' ından yararlanacağız.
      			
      			//Sahneye EnterFrame Event tanımlıyoruz.
      			addEventListener(Event.ENTER_FRAME, resimleriEkle)
      			
      			
      		}
      		
      		function resimleriEkle(evt:Event):void
      		{
      			frame += 1; //sahnemiz hareket halinde iken her seferinde frame değişkenimizi 1 arttıryoruz.
      			
      			if (frame == 1) //frame bir de dosya yüklemesi yapacağız.
      			{
      				//Tanımladığımız resimLoader nesnesinden yeni bir tane oluşturup dosyamızın yolunu bildiriyoruz.
      				// dosyamızın yolu resimXML nesnemizde kayıtlı.
      				resimLoader = new Loader () ;
      				resimLoader.load(new URLRequest(rootPath + xmlResim.node[a].@path));
      				
      				//yüklenen resmi sahneye eklemek için resimYuklemeTamam fonksiyonundan yararlanıyoruz.
      				resimLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, resimYuklemeTamam);
      				
      				
      				
      			}
      			if (frame == 120) //yani 5 sn. sonra yüklediğimiz dosyayı kaldıracağız.
      			{
      				//Yüklenen resmi sahneden kaldırıyoruzki yeni resim geldiğinde üstüne binmesin.
      				removeChildAt(0) 
      				//Bir sonraki resmi yüklemek için a değişkenini 1 arttırıyoruz.
      				a += 1;
      				
      				//frame' i sıfırlıyoruz ki olaylar tekrarlansın.
      				frame = 0;
      				
      				//eğer a değişkeni xmlResim dosyamızın node uzunluğuna geldiyse.
      				//yani resimler bittiyse. Tekrar baştan başlatıyoruz.
      				if (a == xmlResimUzunlugu) 
      				{
      					
      					a = 0;
      					
      				}
      			}
      		}
      		
      		function resimYuklemeTamam (evt:Event):void
      		{
      			//Resim taşmasını engellemek için resim yüklendikten sonra boyutlarını
      			//sahne boyutuna göre ayarlıyoruz.
      			resimLoader.width = stage.stageWidth;
      			resimLoader.height = stage.stageHeight;
      			
      			//animasyon yapacağımızdan dolayı sahnede gözükmeyen bir yere ekliyoruz. Yani soltaraftan -700 uzaklıkta.
      			resimLoader.x=-700;
      
      			//sahneye ekliyoruz. Ama şu an gözükmüyor. Çünkü x=-700 verdik.
      			addChild (resimLoader)
      			
      			//animasyon fonksiyonuna yönlendiriyoruz.
      			animasyonYap();
      		}
      
      	function animasyonYap():void
      		{
      			//Yeni bir tween tanımlıyoruz. Bu tween resimLoader' ın x pozisyonunu -700'den 0'a getirecek ve 
      			//bunları 2 saniyede yapacak. Bunları yaparken Bounce.easeOut efekti uygulayacak. Yani çarpıp geri gelme.
      			var tw1:Tween = new Tween (resimLoader,"x",Bounce.easeOut,-700,0,2,true);
      			
      			//Animasyon bittiğinde animasyonBitti fonksiyonunu çalıştıracağız.
      			tw1.addEventListener(TweenEvent.MOTION_FINISH,animasyonBitti)
      			
      		}
      		
      		public function animasyonBitti(evt:TweenEvent):void
      		{
      			//Bu fonksiyonda resimLoader nesnemizi sahneden sağ taraftan çıkartacaktır.
      			//Bütün bunlar 4 sn. içinde olacak. Beşinci saniyede olaylar tekrarlanmaya başlayacak.
      			//EnterFrame Event 'den dolayı.
      			var tw2:Tween = new Tween (resimLoader,"x",Bounce.easeIn,0,700,2,true);
      		
      		}
      		
      	}
      	
      }
      
      

Flash AS3 ile XML' den veri çekme olayını tamamlamış olduk.

 
yazıya git
Flash da AS3 ile yönlendirme navigateToURL.
Basit ama işimizi çok kolaylaştıracak bir konu anlatmak istiyorum. navigateToURL
Bazen bir kontrole basılınca başka bir siteye gitmesini isteyebiliriz. Yada bir flash menu yaptığımızda diğer bir sayfa gitmesini isteyebiliriz işte bu gibi durumlarda navigateToURL komutu işimizi görecektir.

Bunun için bir urlRequest nesnesi tanımlayıp yönlenecek siteyi belirtmemiz gerekir.

var req:URLRequest = new URLRequest ("http://www.byhasanusta.com")
navigateToURL(req,"_blank")

_blank (Boş bir sayfaya yönlendirir.)
_parent (Bulunduğumuz sayfada açar.)

 
yazıya git
Takım çalışması nasıl olurmuş.
Takım çalışmasının önemini sıklıkla duyarız. Bu sefer bir resim bunu çok iyi anlatıyor. Eğer iyi bir takımınız varsa eşiniz, cocuğunuz, arkadaşınız, en önemlisi aileniz her yol size otoban gibi gelir.

 
yazıya git
30.12.2009
Bir yaş daha yaşlandım.
Yılın şu son günlerinde yılbaşı telaşının yanına bir de doğum günü telaşıda eklenince. Çifte telaş oldu. Tabiki bunlar tatlı telaşlar. Yılda birkez olsun okadar da diyelim.
işte buda benim ailem. Doğum günü yemeği. Annem, Babam, Eşim, Kardeşlerim ve yiğenim. Yengemiz malesef katılamadı.
 
yazıya git
Bebeğimize isim seçiyoruz.


25 Nisan 2010 rüzgarlı bir Pazar akşamı saat 20:00 civarlarında Bebeğimiz FURKAN dünyaya merhaba dedi.

Ankete katılan tüm arkadaşlara Teşekkür ediyoruz.


FURKAN isminin anlamı