19 Eylül 2015 Cumartesi

Programlamaya nereden başlamalı

Programlamaya nerden başlamalı ? (Abime, bir lise talebesi için tavsiyelerim)

İlk aşama:
Programlamaya yapısal dilleri öğrenerek başlanabilir.
Bizim zamanımızda QBASIC vardı. Lisede onunla programlama başlamıştık.
Üniversite de PASCAL, FORTRAN, C dillerinide gördük. Programlama mantığı, algoritma ve diğer ayrıntıları öğrenmek için buradan başlayabilir. İlk seviye için yeterlidir. Matematiksel problemleri çözmek, ekrana basit şekiller yazmak, basit kütüphane uygulaması yapmak gibi şeyleri programlanabilir.

İkinci aşama;
Şu an yazılım dünyası Obect Oriented (nesne yönelimli) programlama üzerinden dönüyor.
Bankacılık sektöründe kullanılan dillere örnek olarak Java (IBM, Oracle) ve C#.Net (Microsoft) verilebilir. Web tarafında yine HTML5, ASP.Net MVC öğrenebilir. Ruby On Rails tercih edilen bir teknoloji.

Veri tabanı programlama kısmında tarafında MySQL ve T-SQL öğrenmeye başlanabilir ki, Türkiye de yoğunlukla bu kullanılıyor.

Üçüncü Aşama ilk boyut;

Mobil kısmında Object Oriented mantığını bilmeden program yazmak zor.
O yüzden ilk önce ilk iki aşamanın halledilmesi gerekli. Burada teknoloji olarak Android ve IOS tercihi yapabilir. İkisi çok farklı şekilde çalışıyor. Android'in arkasında Google var, üyelik ücreti vs. daha ucuz ve Windows kurulu bir bilgisayar üzerinden rahat bir şekilde programlamaya başlanabiliyorsun. Apple'ın mobil işletim sistemi IOS da geliştirme yapmak istenirse, yıllık üyelik ücreti yüksek ve MacBook'un olması gerekiyor. (Alternatif yollar var ama bence gerek yok.)Proglama ortamı olarak Apple daha kolay ve kullanıcı dostu bir ortam sağlıyor.

Üçüncü Aşama ikinci boyut;
Robot ve drone gibi donanım kısmınında yer aldığı konulara girebilir.
Raspberry Pi, Ardunio ile ilgili bir çok kaynak bulabilir. (Ev koruma sistemi yapmak gibi.)
Akıllı ev aletleri yapmak vs. gibi bir çok alanda kendisini geliştirebilir.
Bu iki konuyla da ilgili oldukça kaynak bulmak mümkün. ( Open Source bunlar.)

Biraz daha ileri gidersek;
Yeni bir kavram nesnelerin İnterneti (#IOT) diye geçiyor.
O konuyu da takip edebilir. Bulut teknolojilerini kullanarak mobil ve birbiri ile haberleşebilen cihazlar yapılabiliyor. Cep telefonuna ağırlığını gönderen tartı, alış veriş sitesi ile haberleşen buzdolabı gibi.

Bu arada bir dili bilmek diğer dilleri öğrenmeyi kolaylaştır.
Diller hepsi birbirine benziyor.
Syntax kuralları vs. değişiyor ama birini bildikten sonra diğerinde kısa bir sürede kod yazmaya başlayabilirsin.

Programlamada Türkçe kaynaklar gelişiyor olsa da sınırlı maalesef, o yüzden İngilizce şart.
İyiyse hiç dert etme. Google bu noktada milyonlarca kaynak sunabilir.

Benim tavsiyem, sosyal ağ hesaplarında programlama ile ilgili herşeyi takip etsin. Yoksa kendine twitter, instagram vs tüm hesapları açsın. Kendine bir blog yazmaya başlasın. Programlama serüvenini kaleme alan.

Kendine bir proje belirleyip bunu nasıl yaparım diye düşünmeye başlaması da hem motivasyon sağlar hem de araştırmacılığını artırır.

Daha erken yaşlarda programlamaya başlatmak için güzel uygulamalar var. İlk okul seviyesinde;
http://ww2.kqed.org/mindshift/2011/05/16/5-tools-to-introduce-programming-to-kids/


Takip edilebilecek kişiler ve siteler (ilk aklıma gelenler).
Daron Yöndem
Aykut Taşdelen
https://gelecegiyazanlar.turkcell.com.tr/
http://www.w3schools.com/

22 Aralık 2014 Pazartesi

codezhemir


Codezhemir is the disease of software developer as forgetting core coding practices like  SOLID principles, design patterns, DRY and starting to use self repeated codes which is unreadable and prone to be reworked. Codezhemir is due to thinking less and coding much. Whereas sofware development is an art of thinking. It consists of logical thinking and artistic aestethic. Like poetry and architectural design. Shorter, deeper and more meaningful is valuable.

The era of sofware engineering is value driven. So any developer should care it and in order to protect (him/her)self from codezhemir, (s)he practices daily best coding practices and seek shorter, deeper and more meaningful.

Have a valuable codes...

12 Eylül 2014 Cuma

How to set default zoom in excel 2013

Hi all,

I googled it but I haven't found a satisfactory answer. After that, I realised that you can save your template as .xltx format to the your Custom Office Template folder, C:\Users\yourUser\Documents\Custom Office Templates .
It is so simple,

  1. Open a new excel document 
  2. Create your template (I changed zoom to %85)
  3. Then Save As your document with the name you give. (I gave it as Minus Fifteen Zoom :))
  4. When opening a new excel document you see yout template that you save in Personal section. 
  5. Open it and enjoy your template. 


Have a nice excels...

11 Eylül 2014 Perşembe

OPENDATASOURCE usage

If you like to reach a server which is not defined for Linked Servers where you are working, and if you know  a user which has access for that server then you can OPENDATASOURCE as follows;

select * from  OPENDATASOURCE('SQLOLEDB','Data Source=ServerYouWantToReach;User ID=userNameForThatServer;Password=passwordForThatServer').databaseName.SchemaName.TableName

You can use this for inner join etc.

Have a good use.

For: More info: http://msdn.microsoft.com/en-us/library/ms179856.aspx

30 Kasım 2012 Cuma

BATCH INSERT, (SQL ve C# ile)


Birden fazla kayıt insert veya update edilecekse çoğunlukla bunu bir döngü ile yaparız. Fakat kayıt sayısı eğer çok fazla ise, örneğin 10 bin kaydın insert ve update’i gerekiyorsa o zaman bu performans anlamında büyük bir sıkıntı oluşturmakta. Fakat batch insert kullanılarak bu performans sorunu ortadan kaldırıabilir. Bir projede gerek duyduğumuz bir durum için adım adım aşağıdaki gibi sorunu çözdük.

1-   Batch insert’ü gerçekleştirecegimiz tablo aşağıdaki gibi üç alana sahip bir tablo.


2-   Tablomuz ile veri tipine ait bir tablo tipi tanımlıyoruz. (user-define table types sekmesinde tüm tanımlı tablo tipleri görülebilir. )


3-   Yukarıda tanımladığımız tablo tipini parametre olarak kabul eden sp’mizi de aşağıdaki gibi şekillendiriyoruz.


 Tablo, store procedure ve type'ı aşağıdaki gibi oluştu.



Buna kaşılık UI'dan örnek olarak 10000 kayıtlı bir liste gönderelim. Bunun için aşağıdaki kodu kullanabiliriz.
Bir console application açarak aşağıdaki gibi kodlayabiliriz.

class Program    {
        static void Main(string[] args)
        {
            List<IncomingFile> inFileList = new List<IncomingFile>();
 
            for (int i = 0; i < 10000; i++)
            {
                IncomingFile inFile = new IncomingFile();
                inFile.FileName = String.Format("{0}.File", i.ToString());
                inFile.Password = String.Format("{0}", i.ToString());
                inFile.BusinessDate = DateTime.Now;
                inFileList.Add(inFile);
            }
            IncomingFile.InsertAll(inFileList);
 
        }
    }
 
    class IncomingFile    {
        public string FileName { getset; }
        public string Password { getset; }
        public DateTime BusinessDate { getset; }
 
        public static void InsertAll(List<IncomingFile> contractList)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "server=BTUGUNSALNB\\UNSAL;database=BLOG;Trusted_Connection=true";
            
 
            SqlCommand command = new SqlCommand();
	   //Çalıştıracağımız command'in Store Procedure olduğunu belirtiyoruz. 
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "ART.ins_InComingFileBatch";
            command.Connection = con;
 
            var dtContractList = GenerateIncomingFileListTable(contractList);
            // Parameters            
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = "IncomingFileList";
            parameter.SqlDbType = SqlDbType.Structured;
            parameter.TypeName = "ART.TypeIncomingFileList";
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = dtContractList;
            command.Parameters.Add(parameter);
 
            if (con.State != ConnectionState.Open)
                con.Open();
            try            {
               int result =  command.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
        }
        
        private static DataTable GenerateIncomingFileListTable(List<IncomingFile> IncomingFileList)
        {
            DataTable valueTable = new DataTable();
            valueTable.Columns.Add("FileName"typeof(string));
            valueTable.Columns.Add("Password"typeof(string));
            valueTable.Columns.Add("BussinessDate"typeof(DateTime));
 
            if (IncomingFileList != null)
            {
                foreach (var item in IncomingFileList)
                {
                    DataRow dr = valueTable.NewRow();
                    dr["FileName"] = item.FileName;
                    dr["Password"] = item.Password;
                    dr["BussinessDate"] = item.BusinessDate;
                    valueTable.Rows.Add(dr);
                }
            }
            return valueTable;
        }
    }
 
Sonuc olarak, tek bir transaction ile 10000 kaydı database' göndererek insert ediyoruz.

28 Kasım 2012 Çarşamba

Visual Studio'da Çoklu Solution Template hazırlamak / Creating Mutliple Project Solution Template in Visual Studio

Visual Studio da proje template'i oluşturup benzer projeler üretirken zaman tasarrufu sağlayabilirsiniz.
Aynı zamanda kurumsal firmalar için bu bir standart sağlama yöntemi de olabilir. Bunun ile alakalı olarak faydalı bir link;  http://msdn.microsoft.com/en-us/vstudio/cc315061.aspx

Kendimce bir örnekle izah etmeye çalışacağım.

1-Önce template'ini çıkaracağımız solution'ı oluşturuyoruz.
   [First you should create the solution for your template.]


2-File menusunden Export Template ile solutiondaki her dosyanın template'ini oluşturuyoruz.(bir wizard yardımı ile) 
[We use Export Template action in File menu for each project in the solution.]



3-Bunun için, wizard bizi yönlendiriyor zaten.
[For this, wizard already leads us to do this.]
 4-Hangi projenin template'ni alacağımızı ve açıklamasını yazıyoruz.
[We declare template description and name, also we can choose an icon and preview image]
 5-My Exported klasörüne zip'li bir halde kayediyor.
[This creates a zip file to My Exported folder which is in C:\Users\yourUser\Documents\Visual Studio 2010\My Exported Templates]
 6-Bunu projedeki tüm projeler için tekrarlayın.
[Repeat this process for all project in the solution.]
 7-Bu zip'leri teker teker açın. (zipli dosyaları silebilirsiniz.)
[Open each zip files. (You can delete all zip files.]
 8-Ve zurnanın zırt dediği yer... bir tane .vstemplate uzantılı bir xml hazırlayacağız.
[here is make-or-break issue, create an xml file which has extension .vstemplate ]


9-Oluşan zip dosyasını MySolutionTemplate.vstemplate olarak klasörlerimizin olduğu yere kopyalıyoruz.
[This zip file as MySolutionTemplate.vstemplate should be in the same place with templated project folders; BusinessLogic, DataBaseAcces etc. ]

10-Sonra oluşan bu 5 nesneyi aşağıda görüldüğü gibi zipliyoruz.
[And then zip all folders and files... ]
 11-Zipli dosyayı My Exported Templates klasöründen keserek,
 [Cut that file from My Exported Templates to Templates\ProjectTemplates folder]
 12-Templates\ProjectTemplates klasörüne yapıştırıyoruz.
 [Cut that file from My Exported Templates to Templates\ProjectTemplates folder ]


 13-Sonrasında eklediğimiz template'i seçerek OK'lediğimizde Solution Explorerda aşağıdaki gibi Solution'ımız oluşuyor. Artık istediğimiz kadar kullanabiliriz.
[Finally as creating new project, we see our template and can use at any time. ]
 14-Ve mutlu son. En azından benim için öyle oldu.
[here is the happy end. at least for me :)]