‘COM’ Etiket Arşivi

Win32 & .Net(Delphi->C#)

// 21 Haziran 2009 // 21 Yorum » // .Net, C#, Delphi, Programlama, Veritabanı, Win32

Aslında herşey Java adı verilen programlama dilinin doğuşuna kadar ilerliyor. Java, programlama dünyasına farklı bir perspektif katmıştı. Yazılan kodların applet’ler vasıtası ile web ortamlarında kullanılabilmesi yada Java Runtime ile değişik işletim sistemi platformlarında çalıştırılabiliyor olması onu günden güne daha popüler hâle getiriyordu.

Microsoft, kendi işletim sistemlerinin yeryüzündeki tüm bilgisayarlarda kullanılamayacağının farkına vardığında; Java’ya karşı bir önlem almak gerektiğini düşündü ve bu sayede veriye her ortamdan erişebilecek bir sistem planlamaya başladı. Ancak elbette Java’nın da hâla beceremediği gibi Microsoft’da platform bağımsızlığı hususunda başarılı olamadı. Zaten tasarımların gereği de bunu pek mümkün kılmıyordu. Java’da üretilen kodların bytecode’lara çevrilmesi ve JVM(Java Virtual Machine) adı verilen programlarla üzerinde çalıştığı platforma adapte edilmesindeki süreç, .Net’de de kendisine farklı isimlerle yer buldu.

.Net, ürettiği MSIL kodunu üzerinde çalıştığı platformun anlayacağı makina dili koduna ise JIT vasıtası ile çevirir. Bu tıpkı Java’nın JVM’ine benzer. Aradaki benzerlikleri saymaya kalksak emin olun sayfalarca yazı yazmamız gerekir. Benim bu makalede amacım bu iki platform bağımsız olduğunu iddia eden teknolojinin benzerliklerini ve farklılıklarını anlatmak değil. Bu bilgileri genel kültür amacı ile sunduktan sonra Delphi’nin bu teknolojiler ile iletişimi hakkında bilgi vermek ve gerçek platform bağımsız kodlamanın gelecekte Delphi ile olabileceğinin umudunu sizlerle paylaşmak.

Görüldüğü üzere gerek .Net gerekse de Java platform bağımsız native kod geliştiremiyorlar. Ürettikleri ara kodların, çeşitli işletim sistemlerinde yorumlanıp makina koduna çevrilmeleri gerekiyor. Dolayısı ile teoride bu teknolojileri kullanan uygulamaların, native uygulamalardan hızlı olması beklenmiyor.

.Net, bilindiği üzere programlama dillerinden bağımsız bir platform. Framework adı verilen kod kütüphanelerinin tüm programlama dilleri tarafından ortak bir şekilde kullanılabilmesi, CTS denilen ortak tip sınıflarının .Net içinde olması, herhangi bir .Net destekli dilin bir diğer .Net destekli dil ile iletişimini son derece sorunsuz ve kolay hale getirmekte. Büyük çaplı proje ekiplerinin pek çok programcıya sahip olduğu gerçeği göz önüne alındığında, bu ekip üyelerinin herhangi bir .Net dilini bilmesi ve bu dil ile geliştirme yapmasının projeye olumsuz bir etkisinin olmaması elbette son derece güzel bir durum.
(more…)

Delphi & Animated Flash Charts(Fusion Charts)

// 10 Haziran 2009 // 20 Yorum » // Delphi, Grafik, Programlama

fusioncharts

Infosoft Global firmasının animasyonlu(Flash destekli) pek çok ürünü var. Bu ürünlerin neler olduğunu ve ne gibi yetenekleri olduğuna buradan bakabilirsiniz. Ben elbetteki hepsini anlatmayacağım. Örneğimde Fusion Widgets kütüphanesine dahil olan silindir chart’ı anlatacağım. Lâkin burada izah edeceklerim diğer chart türleri içinde geçerli olacaktır.

Hepimiz yazdığımız uygulamaların vurucu gücünün; raporlar ve bu raporların ekrandaki sunum tarzının etkileyiciliği olduğunu biliriz. Programlarımızı pazarladığımız müşterilerimiz; genellikle programın alt yapısının ne kadar güçlü olduğu, stabilitesi gibi aslında son derece önemli olan hususlarla maalesef pek ilgilenmezler. Herşeyde olduğu gibi görsellik; programlarımız için de son derece önemlidir. Görselliğin günden güne önem kazandığını Microsoft’un Windows Presentation Foundation(WPF) yada SilverLight’a verdiği önem de kanıtlıyor sanırım.

Pek çok Delphi programcısı, hazırladığı raporların görselliğini genellikle TeeChart ile sunar. TeeChart açık kaynak kodlu ve güçlü bir görsel raporlama aracı olsa da; biz bu makalemizde Flash ile hazırlanmış bir raporlama aracı olan Fusion bileşenleri ile ilgileneceğiz.

Fusion bileşenleri; Fusion Charts, Fusion Widgets, Fusion Maps gibi ayrı ayrı pek çok grafiğin desteklenebildiği zengin bir kütüphaneden oluşuyor. En önemli özelliği; client tarafında sadece Flash Player’a ihtiyaç duyması. Genel olarak, Flash Action Script dilinde yazılmış olan chart kütüphaneleri, çalışabilmek için programlama ortamında XML, HTML ve JavaScript işbirliğinden yararlanıyor. Aşağıda makalemizde izah edeceğimiz silindir chart’ın bir örneğini görebilirsiniz. Elbette, bu örneği gözlemleyebilmeniz için makinanızda Flash Player’ın yüklü olması gerekiyor. Eğer Flash Player’ınız yüklü değil ise, buradan yükleyebilirsiniz.

Silindir Chart Örneği

 

 

(more…)

Delphi & Windows Firewall

// 7 Haziran 2009 // 8 Yorum » // Delphi, Internet, İşletim Sistemi, Programlama

Firewall temel anlamı ile işletim sistemlerini daha güvenli kılmak için tasarlanmış programlardır.Modern işletim sistemlerinin hemen hemen hepsinde gömülü olarak bulunan bir firewall vardır. Güvenlik duvarı, ateş duvarı gibi isimler alan firewall’lar; makinamızda çalışan uygulamaların internete çıkışlarını denetleyen, dışarıdan içeri gelen TCP/UDP paketlerini çeşitli kurallara göre filtrelemeye çalışan uygulamalardır. Kimi zamanlarda yazdığımız uygulamalar, firewall’lar tarafından güvensiz içerik olarak algılanırlar ve blok edilmeye çalışılırlar. Eğer programınız network ortamında çalışıyor ve ortam bilgisayarları ile çeşitli protokoller üzerinden haberleşiyor ise, yada programınız internet’e erişmek durumunda ise; firewall’larla sıkıntı yaşamış olabilirsiniz.

Yazdığınız bir uygulamanın, uygulamayı geliştirdiğiniz makinada çalıştığı, ancak müşterinin makinasında çalışmadığı; yada erişmek istediğiniz network kaynaklarına erişemediği, internete çıkamadığı durumlarla karşılaştı iseniz, bu makalemizden istifade edebilirsiniz demektir. İşletim sistemi ile birlikte gelen Windows Firewall, nispeten basit bir güvenlik duvarı. Pek fazla ayarı ve detayı yok, ancak yine de paralı muadillerinin yaptıklarını mümkün mertebe yerine getiren bir program.

Bizim makalemiz, işletim sistemi ile birlikte gelen güvenlik duvarının programlanmasına yönelik olacak. Sizde taktir edersiniz ki, piyasada gerek donanımsal gerekse de yazılımsal pek çok farklı firewall mevcut, bizim yazacaklarımız onlara destek vermiyor olacak.

firewall_delphi_1
(more…)

Delphi ve Google Maps API

// 6 Haziran 2009 // 40 Yorum » // Delphi, Internet, Programlama

google_maps Hepimizin bildiği üzere Google arama motorunun popüler haritalama hizmetidir Google Maps. Gelişen teknoloji ile iyice küçülen dünyamızı evlerinizde gözlerinizin önüne getiren faydalı bir hizmet. Hizmete girmesinden kısa bir zaman sonra popülerliğini arttıran Google Map, sunduğu API’ler ile daha da yaygınlaşacağa benzer.

Artık hemen hemen her web sitesinde bir Google Map haritasına rastlamak mümkün. Ancak masaüstü uygulamalarda emsaline pek rastlanılmıyor henüz. Bizim makalemizin konusu ise masaüstü uygulamalarda Google Maps API’lerini kullanmak. Devasa bir hizmet kütüphanesi olma yolunda hızla ilerleyen Google Maps’in tüm özelliklerini detaylıca anlatmamız elbette mümkün değil; ancak makelemiz, Delphi’de TWebBrowser nesnesi vasıtası ile Google MAP API’lerinin kullanımını ve JavaScript – Delphi interaktif haberleşmesini anlatacak.

Makalemizi okumakta ilerlemeden evvel, Delphi & JavaScript Kardeşliği isimli makalemizi okumanız faydalı olacaktır. Google’ın bizlere sunduğu bu harita hizmeti ile haberleşmenin temellerini “Delphi & JavaScript Kardeşliği” isimli makalemizde anlattığımız için bu kısımda haritalama hizmetini kullanacak olan JavaScript sınıf tanımını, bu sınıfın Delphi altından kullanımını ve karşılıklı etkileşimini göstereceğim.
(more…)

Delphi & JavaScript Kardeşliği

// 1 Haziran 2009 // 7 Yorum » // Delphi, Internet, Programlama

Son zamanlarda bir raporlama aracının Delphi’ye adaptasyonu ile uğraşıyorum. Bu aracın adı Fusion Charts. Son derece şık ve yetenekli bir araç. Arka planında Flash animasyonları kullanan, kendisine veriyi XML üzerinden alabilen , HTML & JavaScript kullanarak flash nesnelerinin erişimine müsaade eden bir raporlama aracı. Bu hali ile Fusion Charts aracı; Delphi üzerinde TWebBrowser nesnesi vasıtası ile rahatlıkla kullanılabiliyor. Yeterki uygulamanızın çalıştığı klasörde ihtiyaç duyduğu dosyalar olsun. Benim ileride yazacağım Fusion Charts & Delphi entegrasyonunda XML, HTML ve JavaScript dosyalarına gerek olmayacak. Ama bu raporlama aracı üzerinde çalışırken, JavaScript’e amiyane tabir ile biraz bulaşmak durumunda kaldım.

Meraklı bir mizacım olduğu için, Delphi üzerinde TWebBrowser nesnesi vasıtası ile bir JavaScript sınıfını yada metodunu kullanıp kullanamayacağımı araştırdım. Ve gördüm ki, bizim sevgili Delphi’mizin yapamayacağı şey yok :) Delphi üzerinden TWebBrowser nesnesi vasıtası ile(daha doğru bir ifade ile COM vasıtası ile) JavaScript’e ulaşmak ve JavaScript kodları çalıştırmak mümkün. Öncelikle söylemek isterim ki; JavaScript konusunda pek bilgili sayılmam. Dolayısı ile yazacağım örnekler sizlere basit gelirse yahut bazı hatalarım olursa şimdiden affınıza sığınırım.

Herşeyden evvel, TWebBrowser nesnesi kendisine yükleyeceği bir HTML dosya alır. Bu dosya disk üzerinde yada internet üzerinde bir yerdedir ve TWebBrowser’ın Navigate metoduna parametre olarak aktarılır. Navigate metodu, kendisine verilen HTML dosyayı yada linkin gösterdiği verileri parse eder ve TWebBrowser üzerinde gösterir. Buraya kadar herşey normal. Lâkin ben yapım gereği disk üzerinde bulunan dosyalar ile çalışmayı pek sevmem. Bu dosyaların bozulabilme ihtimalleri yada silinebilme ihtimallerinin olması programınızın doğru çalışmasını engelleyeceği için dosya erişimli yöntemlerden mümkün mertebe uzak kalmanızı tavsiye ederim. Bu bağlamda yaptığım araştırma sonucu, pek çok kaynakta HTML kaynak kodlarının herhangi bir dosyaya ihtiyaç duymadan TWebBrowser nesnesinde gösterilebildiğini öğrendim. Bulduğum metod aşağıdaki gibidir:

procedure LoadHTML(WebBrowser: TWebBrowser; HTMLCode: String);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank') ;

  if Assigned(WebBrowser.Document) then
  begin
     sl := TStringList.Create;
     try
        ms := TMemoryStream.Create;
        try
           sl.Text := HTMLCode;
           sl.SaveToStream(ms);
           ms.Seek(0, 0);
           (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
        finally
           ms.Free;
        end;
     finally
        sl.Free;
     end;
  end;
end;

(more…)

BITS(Background Intelligent Transfer Service) ile sessiz sedasız download ;)

// 27 Mayıs 2009 // 12 Yorum » // Delphi, İşletim Sistemi, Programlama

Açılımı Background Intelligent Transfer Service olan BITS, arka planda dosya indirmeye yarayan bir windows servisidir. Windows 2000′den sonra ve daha ziyade Windows XP’ler ile tanınmış ve daha sıklıkla kullanılmıştır. Windows’un arka planda updatelerini yaptığı servisin adıdır aynı zamanda. Bu servisin en önemli özelliği network’ün bandwith’ini en uygun şekilde kullanmasıdır. Bundan sonra yazacaklarımızı deneyebilmeniz için öncelikle bu servisin makinanızda çalışıyor olduğundan emin olmalısınız.

bits_background_intelligent_transfer_service

BITS servisinin en önemli özelliğinin sizin internet trafiğinize pek zarar vermemesi olduğunu söylemiştik. C ve C++ kullanıcıları için geliştirilmiş olan BITS, kendisine verilen indirme emirlerini yerine getirmek için network’ün en az kullanıldığı zamanları takip eder(Idle). Bu zamanı tespit edebilmek için de ethernet kartını sürekli izler. Network’ün yeterince kullanılmadığını anladığında arka planda indirim işlemine başlar. Ancak network kullanımının artması durumunda hemen transfer hızını düşürür ve mevcut network sistemine zarar vermez. Tüm bu özelliklerinden dolayı Windows, kendisi için gereken update’leri bu sistem vasıtası ile karşı bilgisayardan sizin bilgisayarınıza indirebilmektedir.

Biz de bu makalemizde, mevcut ağımızı yormayan basit bir indirme yöneticisi yazmaya çalışacağız. Ancak kendi indirme yöneticimizi yazmaya başlamadan evvel BITS’i biraz daha tanımakta fayda var. BITS, mevcut ağ performansına zarar vermeden, iletişimi sekteye uğratmadan dosya indirmeleri için son derece uygundur. Yazdığımız programların internet üzerinden bir yerlerden güncellenmiş sürümlerini yada bazı dosyaları indirmesi gerektiğinde kullanılabilecek mükemmel bir yardımcıdır.
(more…)