Posts under Programlama Category
Tecrübeli bir .Net programcısısınız.
ASP.Net kullanarak bir sürü uygulama geliştirdiniz.
ASP.Net’in çalışma mantığını anlamak ve programınızı yazabilmek için uykusuz geceler geçirdiniz.
Değişik tasarım modelleri öğrendiniz. Programınızın daha anlaşılır ve bakımı kolay olması için envai çeşit model denediniz.
Bu işten para da kazandınız.
Neden Ruby On Rails öğrenmek isteyesiniz ki?
Yazı böyle başlıyor. Senelerini .Net üzerinde program yazarak geçiren bir yazılımcının Ruby on Rails öğrenmeye kalkması ve sonrasında yaşadıklarını anlatıyor.
Yazının kendisini okuyun. İngilizce ama akıcı ve anlaşılır.
Okuyamayacaklar için ben başlıkları özetleyeyim:
- Derlemek yok, her şey runtime olarak çalışıyor.
- Classları genişletmek çok kolay.
- Tip tanımlama zorunluluğu yok.
- Ajax içine gömülü geliyor.
- Veritabanından bilgi çekmek ya da veritabanına yazmak için bir sürü model oluşturmaya gerek yok.
- Transaction yönetimi çok kolay. Veritabanının istediğiniz haline rollback yapabiliyorsunuz.
- Wrapper class oluÅŸturmak gibi bir dert yok.
- Her ÅŸey nesne, classların kendileri bile…
Yazının sonunda ilginç bir yorum var:
“Being a 5 year .Net guy married (was) to the MS way… I’ve been using Rails extensively for the last 3 months… It’s now incredibly painful to return to c#. I’ve going to begin using IronPython for all my .Net requirements now.”
“5 yıldır .Net ile neredeyse evli olan ben, 3 aydır Ruby on Rails kullanıyorum. Åžimdi c#’a geri dönmek ne kadar zor geliyor. .Net ile ilgili ihtiyaçlarım için de IronPython kullanacağım.”
Bilgisayar Programlama derslerinin ilk adımı, bir yazılımın omurgası olan algoritma tekniklerini öğretmek… Programın nasıl baÅŸlayıp nerede biteceÄŸini, izleyeceÄŸi yolu, kontrol noktalarını algoritma kullanmadan yapmaya kalkmak hep baÅŸarısız sonuçlara yol açıyor.
Liselerde öğretilen programlama derslerinde en başta anlaşılması genelde çok zor olan algoritma teknikleri için Türkçe bir algoritma dili geliştirilmiş: Anlat2005. Bir grup akademisyen tarafından geliştirilen Anlat2005 aslında üniversite öğrencileri için tasarlanmış ama kolaylaştırılarak lise öğrencilerine de uyarlanmış.
Anlat2005 bir dilin tüm temel özelliklerini barındırıyor. DeÄŸiÅŸken tanımlama, Klavyeden bilgi bekleyen OKU komutu, ekrana çıktı veren YAZ komutu, EÄžER-İSE-DEĞİLSE kontrol döngüsü, SAYARAKYİNELE iÅŸlem döngüsü, diziler vesaire…
Örnek bir Anlat2005 programı
Yordam ortalamaUstuBul
#tanımla NMAX = 100;
Tamsayı ogrenciNo[NMAX], say;
Kesirli ogrenciNotu[NMAX] , toplam ;
// öğrenci notlarının girişi
SayarakYinele ( k = 1, k <= N, k = k + 1 )
{
YAZ( ekran, k, ".inci öğrencinin önce numarasını sonra notunu giriniz" ) ;
OKU( klavye, ogrenciNo[k - 1] , ogrenciNotu[k - 1] ) ;
}
// ortalamanın üzerindeki öğrenciler
SayarakYinele ( k = 1, k <= N, k = k + 1 )
{
EÄŸer (ogrenciNotu[ k - 1 ] > ortala )
ise
{
YAZ( ,ogrenciNo[ k - 1] , ogrenciNotu[k - 1] );
}
}
Yordam ortalamaUstuBul-bitti;
Anlat2005 dilini anlatan bildiriyi buradan indirebilirsiniz.
Hangi programlama dilini öğrenmeliyim? Donanımda yeni gelişmeler hangi konuda olacak? Cepten televizyon izleme, müzik indirme gibi işlerde gelecek var mı? gibi soruların cevaplarını verebilmek için araştırma şirketlerinin yayınladıkları raporları ve grafikleri incelemekte fayda var.
Hem bir arşiv bilgisi olarak saklamak üzere, hem de yön gösterici olması için değişik konulardaki yönelimleri bir inceleyelim.
Hangi programlama dili?
Gartner’in 2002 yılında yaptığı bir araÅŸtırma sonucuna göre, o yıl büyük iÅŸletmelerde en çok kullanılan programlama dili Java ve Visual Basic’miÅŸ. Hatta bir çok bankada, Cobol’da yazılmış programlar çok eskiden beri kullanıldığı ve hala deÄŸiÅŸtirilmediÄŸi için %45 oranında bir Cobol kullanımı bile var.

Ancak aynı araştırmada 2002-2008 yılları arasında, dünyadaki yazılım geliştiricileri sayısının değişiminin incelendiği grafiğe baktığımızda, bu sıralamanın ciddi bir şekilde farklılaştığını görüyoruz. Visual Basic ve Cobol kullanımının büyük bir hızla düşeceği, Java ve .Net dillerinin ise tırmanacağı öngörülüyor.

Bu arada grafikte tahmini 7 milyon geliÅŸtirici olacağı varsayılmış. Bu tür tahminleri yapmak çok zor. Çünkü, Evans Data ÅŸirketi, geçtiÄŸimiz aylarda yayınladığı araÅŸtırmada, 2009 yılında dünyada 17 milyon yazılım geliÅŸtiricisi olacağını iddia etmiÅŸ. 2009’da en çok yazılımcının bulunacağı ülkeler ise ABD, Çin ve Hindistan olacakmış.
2007’ye geldiÄŸimizde sonuçlar biraz daha deÄŸiÅŸik görünüyor. O’Reilly’nin kitap satışlarına göre hazırladığı grafikte, Java’nın kullanımının biraz düşmekle birlikte liderlik pozisyonunda olduÄŸu, C#’ın yükseldiÄŸi, ancak Ajax teknolojisiyle web uygulamalarının popülerliÄŸinin artmasına baÄŸlı olarak PHP’nin de yükseldiÄŸi, Ruby on Rails’in büyük bir ilerleme kaydettiÄŸi görülüyor.

Tiobe’nin arama motorları sonuçlarının karşılaÅŸtırılması ile elde ettiÄŸi bilgiler de hemen hemen aynı yönde. Dikkati çeken ise, C# yazılımcılarının oranının bu grafikte çok daha az gözükmesi…

Bu durumda, önümüzdeki yıllarda, java ve .Net dilleri arasındaki çekişmenin devam edeceği, web tabanlı yazılımların geleceğinin parlak olması sebebiyle, php, python ve ruby kullanımının artacağı tahmin edilebilir.
Bilgisayar dünyasının en tanınan yazarlarından biri olan Memik Yanık, sitesinde çok ilginç bir davayı anlatıyor:
Bu sayfaları daha önce ziyaret etmiş olanların bildiği gibi beyinleri zirvede namlı programcılık konulu kitaplar yazan saygıdeğer Nihat Demirli ve Yüksel İnan beyler beni C# kitaplarından izinsiz alıntı yapmakla suçlayıp dava etmişlerdi. Mahkeme heyetinin görevlendirdiği saygıdeğer bilirkişi Turan MERMER bey 12 suçlama maddesinden 4 tanesinde değişken adı benzerliği tespit etmişti. Neydi bu değişkenler diye merak edenler için hemen buraya yazıyorum: Sayi1, Sayi2, dizi, i, j, dizi, dosya ve deger.
İyi de, hepimiz ilk toplama programımızı yazarken sayi1 ile sayi2 yi toplayıp deÄŸerini ekrana yazdırmadık mı? Google’da sayi1 sayi2 diye arattırın bakalım kaç sonuç çıkıyor?
Çok komik…
Replikasyon iÅŸlemleri veritabanı güvenliÄŸi için en sık kullanılan yöntemlerden birisi… Ancak genelde SQL Server gibi çok kullanıcılı veritabanlarında kullanılıyor.
Replikasyon işleminde Asıl veritabanına Tasarım Şablonu (Design Master), kopyalanan veritabanına da Yineleme (Replica) deniliyor.
İhtiyacımız olması durumunda Access veritabanı ile de replikasyon yapabiliriz. Microsoft’un yardım sayfalarında bu iÅŸlemin nasıl yapılacağı anlatılıyor.
Daha sonra iki veritabanını birbiriyle senkronize etmek için ise, Araçlar (Tools) menüsünden Yineleme (Replication) alt menüsünü ve oradan da Şimdi Eşitle (Synchronize Now) seçeneğini kullanabiliriz.
Ya da istersek, veritabanımızın açılışı ya da kapanışı ile ilgili kod bölümlerine alttaki kodu ekleyebiliriz:
CurrentDb.Synchronize yinelemedosyasınınadı
Arkadaşlarınıza, müşterilerinize doğum günlerinde otomatik olarak kutlama e-postası göndermek istiyorsunuz. Bu işlemi yapan ücretli-ücretsiz programlar var. Peki, sadece Outlook kullanarak bunu nasıl yapabilirsiniz?
Tüm Office ürünlerinde olduÄŸu gibi, Outlook’ta da, arkaplanda VBA ile program yazarak bazı iÅŸlemleri yaptırabiliyoruz. Åžimdi de bu yöntemi kullanacağız.
Önce Araçlar-Makro-Makrolar (Tools-Macro-Macros ) menüsünü açıyoruz. Makro adı olarak SendBirthdayMail veriyoruz. Oluştur (Create) düğmesine basıyoruz.
Açılan pencerede SendBirthdayMail prosedürünü alttaki kodla değiştiriyoruz.
Sub SendBirthdayMail()
Dim objContactsFolder As Outlook.MAPIFolder
Dim objContacts As Outlook.Items
Dim objContact As Object
Dim iCount As Integer
Dim olItem As Outlook.ContactItem
'Kişileri aç
Set objContactsFolder = Session.GetDefaultFolder(olFolderContacts)
Set objContacts = objContactsFolder.Items
'Yeni bir mail oluÅŸtur
Set objMsg = Application.CreateItem(olMailItem)
objMsg.Subject = "Doğum Günün Kutlu Olsun" & Date
objMsg.HTMLBody = " Nice Yıllara"
'Dolaş. Uygun olanlara gönder
For Each objContact In objContacts
If TypeName(objContact) = "ContactItem" Then
Set olItem = objContact
If olItem.Birthday = Date Then
'Email-1 adresi
objMsg.To = olItem.Email1Address
objMsg.Send
End If
End If
Next
'DeÄŸiÅŸkenleri temizle
Set objMsg = Nothing
Set objContact = Nothing
Set objContacts = Nothing
Set objContactsFolder = Nothing
End Sub
Bu makro çalıştırıldığı zaman, Kişiler (Contacts) listesinde bulunan ve doğum günü girilmiş olan kişiler kontrol edilecek ve doğum günü bugün olanlara e-posta gönderilecektir. Koddaki HTMLBody değişkenine göndereceğimiz mesajın içeriğini yazıyoruz.
Peki, eÄŸer her sabah bilgisayarımızı ve Outlook’u yeniden açtığımızda bu makroyu çalıştırmasını istiyorsak…
O zaman, makroyu yazdığımız pencereyi kapatmıyoruz. Soldaki Project kısmında proje listesinde ThisOutlookSession yazan yere çift tıklayıp alttaki kodu ekliyoruz.
Private Sub Application_Startup()
SendBirthdayMail
End Sub
Artık her gün doğum günü mesajları kendiliğinden gönderilecektir.
EÄŸer, Outlook’u ve bilgisayarı hiç kapatmıyorsak?
Üstte yazdığımız kod sadece açılışta çalıştığı için farklı bir yaklaşım getirmek durumundayız.
Şöyle çözeceğiz. Her gün sabah saat 09:00 için bir randevu ekliyoruz. Konu (Subject) kısmına Birthday yazıyoruz. Anımsatıcı (Reminder) seçeneğini işaretleyip O dakika (O minutes) olarak ayarlıyoruz.
Her gün aynı kontrolü yapması için randevuyu her gün tekrarlamasını istiyoruz. Pencerenin araç çubuğundaki Yinelenme (Recurrence) düğmesine tıklayıp gerekli ayarları yapıyoruz.
Araçlar-Makro-Visual Basic Düzenleyicisi (Tools-Macro-Visual Basic Editor) penceresini açıyoruz. Soldan ThisOutlookSession içine alttaki kodu ekliyoruz.
Dim WithEvents objReminders As Outlook.Reminders
' Hatırlatıcı çıktığında
Private Sub Application_Reminder(ByVal Item As Object)
If (TypeOf Item Is AppointmentItem) And (Item.Subject = "Birthday") Then
SendBirthdayMail
End If
End Sub
Private Sub Application_Startup()
Set objReminders = Application.Reminders
End Sub
'Hatırlatıcıyı da işin bitince kapat
Private Sub objReminders_ReminderFire(ByVal ReminderObject As Reminder)
If ReminderObject.Item.Subject = "Birthday" Then
ReminderObject.Dismiss
End If
End Sub
Outlook açık da kalsa, her gün o saatte mailleri gönderecektir.
Programlama dilinin editöründe en çok lazım olan özelliklerden biri, dikdörtgen kod alanı seçip, başka yere kopyalayabilmek. Eclipse içinde olmayan bu özelliği yine bir eklentiyle kazandırıyoruz: Editor Enhancements.
Özellikleri
- Satır Kopyala Alt-c
- Satır Sil Alt-k
- Satır Ekle Alt-ı
- Dikdörtgen alan seç – kopyala – kes
- Dikdörtgen alan Edit (süper bir özellik) Alt-r
- Satırın ilk karakterine git Alt-m
- Otomatik Tamamla Alt-7
Zip dosyasının içeriÄŸini Eclipse altındaki plugins klasörüne açıyoruz. Eclipse’i kapatıp yeniden açıyoruz. Window-Customize Perspective içinde Other bölümü altından Editor Enhancements’i seçiyoruz. Edit menüsü altında Enhancements menüsü oluÅŸacak.
Dikdörtgen alan seçme mantığı alışık olduğumuzdan az farklı. Üst köşe olacak karakterden başlayıp en son alt köşe olacak karaktere kadar normal seçiyoruz.
Rectangular Edit için bir kılavuzu da var.
http://lunar-eclipse.sourceforge.net/editor-tutorial/index.html
Delphi’den alıştığımız bookmark stili (satırlara ekleyip klavye kısayolları ile bunlara ulaÅŸma) Eclipse’te yok. Neyseki ÅŸu eklenti sayesinde bunu yapabiliyoruz. Eklentinin Eclipse 2 ve 3 için ayrı versiyonları var.
Eklentiyi kurmak için:
- Siteden ilgili dosyayı indirin.
- Zip dosyasını bir klasöre açın.
- Features klasörü altındaki dosyaları, Eclipse’in kurulu olduÄŸu yerdeki features klasörünün altına, plugins klasörü altındaki dosyaları da plugins altına kopyalayın.
- Eclipse’i kapatıp yeniden açın.
- Window-Customize Perspective içinde Other bölümü altından QuickMarks Both Style ‘ı seçin.
- Navigation menüsü altında Set/Delete Quickmark ve Go to Quickmark menüleri oluşacak.
Eklentiyi kullanırken, Bookmark Ekle/Kaldır işlemi için Ctrl + Shift + 0..9 kısayollarını, konulmuş yer imlerine gitmek için Ctrl- 0..9 kısayollarını kullanıyoruz.
Ayrıca, plugin farklı bir bookmark stilini de destekliyor. Klasör içindeki readme dosyasında detaylı anlatım var.
Güle güle kullanın.
QuickStart Prolog
http://actlab.csc.villanova.edu/quickstart/prolog/
Yazıda örnekler ve ileri seviye dokümanlar için linkler var.
Prolog Introduction
http://www.kuro5hin.org/story/2004/2/25/124713/784
Learn Prolog now!
http://www.coli.uni-saarland.de/~kris/learn-prolog-now/
Learning Prolog via Examples
http://ktiml.mff.cuni.cz/~bartak/prolog.old/learning.html
Adventure in Prolog
http://www.amzi.com/AdventureInProlog/
Excel Basic proje yöneticisinin Bill Gates ile inceleme toplantısı
http://www.joelonsoftware.com/items/2006/06/16.html
Ama nasıl patron:
- “… to keep an accurate count of how many times Bill said the f… word”
- “how strange it was that he had two legs, two arms almost exactly like a regular human being.”
- “Bill Gates was amazingly technical.He understood Variants, and COM objects…..”
- “he just wants to make sure you’ve got it under control”
Google programcısından “içeriden bilgiler”
http://blog.outer-court.com/archive/2006-06-15-n22.html
- ” they assume that programmers can manage their own time”
- “abusing logins is a fireable offense”
- “if engineers need something special from the IT teams, it tends to get done”
- “there’s a strong undercurrent of ’give the coders the tools they want and get the hell out of the way’”