Çalışma Hayatı Başladı

Okul bittikten sonra tabi ben de iş arama çalışmalarıma büyük bir hızla başlamıştım. Sonuç olarak 1 Temmuz 2010 itibariyle, fransız bankası olan Societe Genarale bankasının türkiyedeki şubesi olarak son tüketiciye kredi veren krediver.com da Software Developmen Specialist ünvanıyla işe başladım Cool İnşallah burada başarılı olup kendimi en iyi şekilde geliştireceğim.

Hee yazılara ne oldu diyenler vardır. Uzun zamandır yazamadım ama inşallah aklıma geldikçe yazacağım. Şu anda yazmak istediğim bir kaç şey var aslında ama onları da boş zaman bulunca artık.

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 05.07.2010 at 13:49
Actions: E-mail
Post Information: Permalink | Yorumlar (1) | Post RSSRSS comment feed

C# Klasör içerisindeki dosyaları rekürsif olarak bulan fonksiyon

Geçenlerde ihtiyacım olmuştu. İnternetten aratınca buldum. Stack mantığıyla güzel, kullanımı çok kolay bir class yazmışlar. Burada paylaşmak istedim.

static class FileHelper
        {
            public static List<string> GetFilesRecursive(string b)
            {
                // 1.
                // Store results in the file results list.
                List<string> result = new List<string>();

                // 2.
                // Store a stack of our directories.
                Stack<string> stack = new Stack<string>();

                // 3.
                // Add initial directory.
                stack.Push(b);

                // 4.
                // Continue while there are directories to process
                while (stack.Count > 0)
                {
                    // A.
                    // Get top directory
                    string dir = stack.Pop();

                    try
                    {
                        // B
                        // Add all files at this directory to the result List.
                        result.AddRange(Directory.GetFiles(dir, "*.*"));

                        // C
                        // Add all directories at this directory.
                        foreach (string dn in Directory.GetDirectories(dir))
                        {
                            stack.Push(dn);
                        }
                    }
                    catch
                    {
                        // D
                        // Could not open the directory
                    }
                }
                return result;
            }
        }

Kaynağını da paylaşayım. Kullanımı ise şu şekilde;

List<string> dosyalar = FileHelper.GetFilesRecursive(path);

Başka nasıl yapabiliriz. Bilgi olsun diye, Directory.GetFiles(path); metoduyla rekürsif bir fonksiyon yazarak da bulabiliriz.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 16.12.2009 at 22:00
Tags:
Categories: C#
Actions: E-mail
Post Information: Permalink | Yorumlar (0) | Post RSSRSS comment feed

C# FileInfo LastAccessTime değerini kullanabilmek

FileInfo sınıfına ait LastAccessTime değerini kullanmaya çalıştığınızda LastWriteTime değeri ile aynı sonucu döndürüyorsa, hemen c# a kızmayın. Bu özelliği kullanabilmek için regedit te bir değerin değişmesi gerekiyor.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem

içerisinde, NtfsDisableLastAccessUpdate değerini 1 e ayarlayın, bilgisayarı yeniden başlattıktan sonra LastAccessTime ı kullanabilirsiniz.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 13.12.2009 at 13:00
Tags:
Categories: C#
Actions: E-mail
Post Information: Permalink | Yorumlar (0) | Post RSSRSS comment feed

C# Operatörlerin Aşırı Yüklenmesi

Operatörlerin aşırı yüklenmesi yani overloading desem daha fazla kişi anlayacaktır :) + - == gibi operatörlere değişik görevler vererek biçimlendirmek demek aslında. Sınıf kullandığımız zaman sınıflardan oluşturulan nesneler için çok işe yarar. Önce aşırı yüklemenin mantığını anlama açısından, daha çok bilinen metotların aşırı yüklenme (override) olayı ile ilgili çok yapılan ve kullanılan bir örnek yapalım. Metotların aşırı yüklenmesinde bildiğimiz üzere aşırı yüklenecek olan metot ana sınıfta virtual olarak tanımlanmalı, aşırı yüklenecek sınıfta da override olarak tanımlanarak aşırı yüklenebilir. C# ta ToString() metodu virtual olarak tanımlanmıştır o yüzden bu metodu herhangi bir sınıf içerisinde override ederek bize hizmet edecek hale getirebiliriz. Aşağıda örneklerde kullanacağım sınıf bulunuyor.

    public class Person
        {
            public Person(string name, string surname, int age)
            {
                this.Name = name;
                this.Surname = surname;
                this.Age = age;
            }

            public Person()
            { }

            private string name;
            private string surname;
            private int age;

            public string Name
            {
                get { return name; }
                set { name = value; }
            }

            public string Surname
            {
                get { return surname; }
                set { surname = value; }
            }

            public int Age
            {
                get { return age; }
                set { age = value; }
            }

}

Şimdi bu sınıftan bir nesne oluşturalım.

Person ps1 = new Person("Ahmet", "UZUN", 22);

Nesnenin sınıf içerisinde de tanımlanan üç özelliği vardır. Age, Name ve Surname. Şimdi ps1 nesnesini ToString() metodu ile içerisindeki özellikleri string e çevirip yazmasını istiyoruz. Bu yüzden ps1.ToString() i çağırdık. Çıktı şu şekilde olacaktır. Benim örneğimde 'blogOrnek.Form1+Person' (ProjeAdi.FormAdi+SınıfAdı) Buradaki nesnemiz ToString() metodu için kapalıdır. Biz bunu override ederek Ad + Soyad + Yaş şeklinde yazdırabiliriz. Bunun için tanımlı class içerisine aşağıdaki kodu eklememiz gerekiyor.

    public override string ToString()
            {
                return (this.Name + " " + this.Surname + " " + this.Age);
            }

şimdiki çıktımız ise  'Ahmet UZUN 22' olacak. Şimdi çıktının bir anlamı oldu.

Şimdi operatörlerin aşırı yüklenmesine dönelim. Operatörler de aynen yukarıda yaptığım örnek gibi aşırı yüklenerek sınıf tan tanımlı nesneler için anlamı olabilir. Yoksa Person sınıfından tanımlı iki insanı toplarsanız, toplayamazsınız :) hata alırsınız. Bunun için + operatörüne Person sınıfından tanımlı iki tane nesne geldiği zaman nasıl davranması gerektiğini söylememiz gerekiyor. Bu tanımlama sınıf içerisinde yapılmalıdır.

+ operatörüne gelen iki nesnenin yaşlarını toplayarak sonucu bize int olarak döndürmesini isteyelim. Bu durumda kodumuz aşağıdaki gibi tanımlanmalıdır.

    public static int operator +(Person ps1, Person ps2)
            {
                return ps1.Age + ps2.Age;
            }

Operatörleri aşırı yüklerken örnekte de olduğu gibi static olarak tanımlmak zorundayız. Ayrıca operator ve daha sonra hangi operatörü aşırı yükleyeceksek onu belirtmeliyiz.

Küçük bir örnek daha ve sonra bitiriyorum. Person sınıfından olan iki nesnenin özelliklerinin aynı olup olmadığını kontrol etmek için == operatörünü aşırı yükleyelim. Bunun için bir de != operatörünü aşırı yüklememiz gerekiyor.

    public static bool operator ==(Person ps1, Person ps2)
            {
                if (ps1.Name == ps2.Name && ps1.Surname == ps2.Surname && ps1.Age == ps2.Age)
                    return true;
                else
                    return false;
            }

            public static bool operator !=(Person ps1, Person ps2)
            {
                if (ps1.Name != ps2.Name && ps1.Surname != ps2.Surname && ps1.Age != ps2.Age)
                    return true;
                else
                    return false;
            }

Bu yazıyı yazmamdaki asıl amaç zor olan bir şeyi bildirmek değil de bilmeyenler, görmeyenler için böyle bir şey de var demekti. O yüzden basitte tutup anlatmaya çalıştım. Kaynak kodu buradan indirebilirsiniz.  blogOrnek.rar (32,13 kb)

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 24.07.2009 at 17:00
Tags: , ,
Categories: C#
Actions: E-mail
Post Information: Permalink | Yorumlar (4) | Post RSSRSS comment feed

ASP.net UpdatePanel içinde FileUpload Kullanımı

ASP.net projelerinde UpdatePanel i sayfada sadece istediğimiz bir yerin postback olması için kullanırız. Bütün sayfanın yenilenmediğini görmek gerçekten de çok güzel :)

UpdatePanel içerisinde iki çeşit tetikleme(trigger) vardır. Kendi ağzımdan kısaca açıklama yapayım.

AsyncPostBackTrigger: Bu trigger a değer olarak verdiğimiz kontrol ve event ile, kontrolün event i tetiklendiği zaman sayfada sadece UpdatePanel yenilenir. Sayfanın geri kalanı aynen kalır. AJAX ile yapılmak istenen şey de budur zaten.

PostBackTrigger: Bu trigger ise parametre olarak aldığı kontrol tetiklendiği zaman, her ne kadar UpdatePanel içerisinde de olsa bütün sayfanın yenilenmesini sağlar.

Peki, biz AJAX kulanıyoruz neden bütün sayfanın yenilenmesini istiyoruz ki, öyle olsaydı UpdatePanel kullanmazdık gibi bir soru akla gelir ve mantıklıdır da. Bu soru ile PostBack trigger kullanılması akla yatkın gelmiyordur. BAzı durumlarda AsyncPostBacTrigger kullanamıyoruz, örneğin tetiklendiğinde fileUpload ı kullanan bir kontrolü PostBackTrigger kullanarak tetiklememiz gerekiyor. Nedeni ise bazı güvenlik önlemleri. FileUpload kontrolü ile kullanıcının bilgisayarındaki dosyalara ulaşılıyor. Ajax ile yani javascript kullanarak fileUpload ile bu dosyalara ulaşım, kullanıcının güvenliği açısından engellenmiştir. Yani kısaca UpdatePanel in herhangi bir trigger ı fileUpload kullanıyorsa onu PostBackTrigger olarak tanımlamamız gerekiyor. Yoksa fileUpload kontrolünün çalışmadığını göreceksiniz.

Küçük bir örnekle bitireyim. FileUpload ile seçilen dosyanın adını label da gösteren kod.

.aspx

 <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    <br />
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>
            
        </div>
    </form>

.aspx.cs

protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = FileUpload1.FileName;
    }

Burada butona tıklandığında Label ın Text değeri değişmeyecektir. UpatePanel deki Trigger alanını aşağıdaki şekilde değiştirirsek kodumuz çalışacaktır.

  <Triggers>
       <asp:PostBackTrigger ControlID="Button1" />
  </Triggers>

9 kişi tarafından 3.9 olarak değerlendirildi

  • Currently 3,888889/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 23.05.2009 at 07:00
Tags: ,
Categories: AJAX | ASP.net
Actions: E-mail
Post Information: Permalink | Yorumlar (7) | Post RSSRSS comment feed

.sln Silinirse

Windows Forms projelerimizde .sln uzantılı dosya silinirse projemizi nasıl açacağız. Sorun bu. Aslında bunun çözümü VS içerisindeki Open Project altında saklı. Bir çok deneyimli, C# bilen ve Visual Studio (VS) kullanan kişilerin gözden kaçırabildikleri nokta olabiliyor bu. Yazılım stajı yaparken karşıma çıkmıştı. Şirket çalışanlarından biri bana sormuştu bu soruyu projeyi açamama endişesi içerisinde. Hemen nasıl açılacağına girelim.

File --> Open Project diyerek projemizin bulunduğu klasörün içinde bulunan .csproj uzantılı dosyayı seçerek projemizi açıyoruz.

Aşağıdaki VS dan alınan resimde, VS ile yapılan projelerde .sln uzantılı dosya silinirse hangi dosyalar kullanılabilir, cevabı mevcut.








1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 16.05.2009 at 08:30
Categories: C#
Actions: E-mail
Post Information: Permalink | Yorumlar (2) | Post RSSRSS comment feed

Bilişim Dergi (www.bilisimdergi.com)

İstanbul Üniversitesi Bilgisayar Mühendisliği öğrencileri tarafından ilk sayısı çıkarılan bilişim dergiyi en azından bloğumuzudan paylaşmak da bizlere düşen küçük bir görev. Bölümümüz adına çok güzel bir gelişme. Hatta geldiğimden beri yapılan en somut gelişme diyebilirim. Emeği geçenlere teşekkürler.

İnternet üzerinden okunabilen bu derigiye buradan ulaşabilirsiniz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 27.03.2009 at 19:03
Tags:
Actions: E-mail
Post Information: Permalink | Yorumlar (2) | Post RSSRSS comment feed

Blogger Yazılarınızı BlogML Formatına Aktarma

Blogger da bloğu olup başka altyapı kullanarak (benim gibi) yeni bloğuna geçmiş arkadaşlar için, eski bloğundaki yazıları nasıl yenisine aktarabilirim sorusuna cevap vermeye çalışacağım. Benim gördüğüm 2 yöntem var bununla ilgili. İki yöntemde çok pratik ama ben kesinlikle ikinci yöntemi öneririm. Ben de bu şekilde yazılarımı bloğuma aktardım.

1--Aaron Lerch in kendi hazırlamış olduğu bir script. Bu script i çalıştırarak yazılarımızı blogml.xml formatında alabiliriz. Bununla ilgili türkçe kaynak burada. Açıkçası hiç güzel anlatamamış. Eksik ve kapalı. Sadece bir bakın geçin derim. Asıl kaynağı burası . Burada güzel bir şekilde anlatılmış ben anlatmayacağım, fakat bazı noktalara açıklık getireceğim. Tam olarak açıklamamışlar, en başta benim gibi anlamayan veya yanlış yönlendirilen olabilir. Çalışacak olan script in son hali bu;
PS C:\Test> .\BloggerToBlogML.ps1 “17257708406345880368″ | out-file aaronlerch.blogml.xml
   -Bu script Windows Powershell de çalışacak. O yüzden bu programı indirmeniz gerekiyor. Buradan indirebilirsiniz.
   -Şimdi yukarıda yazdığımız scriptin çalışması için de asıl ana olan script i (.ps1 uzantılı olacak) Aaron Lerch in sitesinden indireceksiniz. Yani şu.
   -Yukarıdaki script i yazarken gördüğünüz gibi C nin altında Test klasörünü gösteriyor. Siz de bu klasörü kullanacaksanız C nin altında Test klasörü oluşturun indirdiğiniz scripti ve içinden çıkan dll i o klasörün altına kopyalayın.
   -Windows Powershell programının dos gibi olan kısmını açarak bildiğimiz dos komutlarıyla Test klasörünün altına gelin ve daha sonra .\BloggerToBlogML.ps1 “17257708406345880368″ | out-file aaronlerch.blogml.xml kısmını yazın.
    *Yazacağımız script kısmında rakamlar var o rakamlar bizim bloggerID mizdir. Blogspot sayfanıza gelin oradan profilimi görüntüle deyin.Çıkacak olan şu linkin (http://www.blogger.com/profile/03335207168555889501) sonundaki sayılardır.
    *Son kısımda da dosya hangi isimde kaydedilsin yeridir. Sonunu blogml.xml uzantılı olarak bırakmayı unutmayın.Son olarak gerekli değişkenleri yerine koyduktan sonra script i çalıştırın tamam.

 2--Bunun için bir program yazılmış ve o programda da bloggerID miz bize lazım. Gerekli olan her şey de içinde yazıyor zaten. Bununla ilgili hiç bir şey yok benim anlatacağım. Buradan programı indirebilirsiniz.

Şimdi elinizde xml uzantılı bir dosya var ve içini açıp baktığınızda eski bloğunuzdaki yazılarınızı görebilirsiniz. Bu işlemi sadece aktarma için değil yazılarınızı yedeklemek için de kullanabilirsiniz.  Sadece saniyelerinizi alacak çünkü.

Bundan sonrasını blogEngine.net için söylüyorum. Ayarlar kısmına gelip en alttaki İçeri Aktar butonuna tıklayarak bir application indireceksiniz. Uygulamayı indirirken şöyle bir sorunla karşılaşıyorsanız,

 'Cannot download application. The application is missing required files. Contact application vendor for asistance.'

O zaman sayfanızı IE ile açıp tekrar İçeri Aktar butonuna tıklayın. Firefox un click once uygulamaları ile ilgili bir sorunu olduğundan firefox da çalışmayabilir. Sonra indirdiğiniz uygulamadki gerekli alanları doldurarak içeri aktarma işlemini tamamlayabilirsiniz. Bu kadar.
Herkese kolay gelsin.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 24.02.2009 at 19:05
Tags:
Categories: blog
Actions: E-mail
Post Information: Permalink | Yorumlar (4) | Post RSSRSS comment feed

Yine Yeni Yeniden

Artık blog yazmaya buradan devam edeceğim. Eski adresim auzunun.blogspot.com bilen bilir. Bu blog, BlogEngine altyapısı kullanılarak hazırlandı. BlogEngine ile kendi sitesini hazırlamak isteyen olursa yardımcı olabilirim, bir kaç şey kaptım Wink

Blog yarı ingilizce yarı türkçe gibi, bunun sebebi, gerekli gördüğüm yazıları hem türkçe hem ingilizce yazacağım. Sebep olarak ingilizcemi geliştirmek gibi daha saymayacağım kendimce bazı nedenler var.

Şimdilik bu kadar. İyi günler diliyorum...

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 30.01.2009 at 17:48
Actions: E-mail
Post Information: Permalink | Yorumlar (2) | Post RSSRSS comment feed

ASP.net AJAX Extensions

Visual Studio 2005 inizde web projesi oluştururken toolbox ınızda AJAX Extensions bölümü yoksa buradan indirip bilgisayarınıza setup ı kurun.
AJAX Extensions ScriptManager, UpdatePanel gibi önemli kontrolleri bulundurur. Örneğin internetten bulduğunuz bir Ajax tool kullanacaksınız, sayfanızda bir tane ScriptManager, ve sayfada server a gidecek yerin UpdatePanel içinde olması gerekmektedir. Yani Ajax kullanılan yerde bu extensions lar olmak zorundadır.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Ahmet UZUN
Posted on: 19.12.2008 at 07:00
Tags: ,
Categories: AJAX | ASP.net
Actions: E-mail
Post Information: Permalink | Yorumlar (2) | Post RSSRSS comment feed