Posts

Showing posts from January, 2014

C++ Operator Overloading

Operator overloading, halihazırda bulunan operatorlere yeni anlamlar yüklemek için yazılan operator fonksiyonlardır. C++ dilinin esnek olmasını sağlayan özelliklerden birisi olan bu işlem, kendi yazdığımız tipler için implement edilir. Örnek verecek olursak;

Friend Function

Image
Bu makalede C++ programlama dilindeki friend function olayından bahsedeceğim. Bir class içerisinde friend function olarak belirtilen bir fonksiyon bu class’ın private data member ve private member function ’larına erişebilir. Aslında friend function, C++ temelinde yatan information hiding olayına tamamen ters bir mevzudur bu nedenle C++ dilinde kodlama yapan bir çok uzman bu olaya itiraz etmektedirler. İsterseniz bir örnekle friend function olayına göz atalım.

Function Template

Image
Bu makale sizlere C++ template fonksiyonlardan bahsedeceğim. Template, kelimesine zaten çoğumuz yabancı değiliz. İster Web olsun ister Desktop olsun bütün programcılar template yazmış veya kullanmışlardır. Biz yine de C++ dilinde template function ne anlama gelir açıklayalım. Template function , bir kereye mahsus olmak üzere yazılan ve  bütün tipler  üzerinde kullanılan generic fonksiyonlardır. Yani template olarak yazdığımız bir karşılaştırma fonksiyonunu hem integer, hem double hem de char tipleri için kullanabiliriz. Yine bir örnekle template function olayına bir göz atalım

This Pointer & Cascading

Image
C++ dilinde kullanıcı tarafından oluşturulan class’larda her object’in sahip olduğu bir tane pointer vardır. Kendisi constant olan ve non-constant bir object’in adresini tutan bu pointer’a  this pointer ’ı denir. Class içerisinde yazdığımız non-static member function’ların hepsine implicity olarak gönderilir. Kendimiz bu pointer’ı explicitly olarak da kullanabiliriz. Basit bir class yaratıp, implicitly ve explicitly kullanılışını görelim.

EclipseUML

Image
Bu yazıda sizlere Eclipse kullanarak UML diagramlarını nasıl oluştururuz ondan bahsedeceğim. Kullanacağım Eclipse’nin versiyonu Eclipse Galileo versiyonudur. Eclipse Galileo’nun son versiyonu : Eclipse Galileo 3.5 Omondo EclipseUML son versiyonu : EclipseUML 3.5 Eclipse Galileo 3.5 kurulu olan arkadaşlar sadece ikinci linkteki EclipseUML.jar dosyasını indirirse yeterli olacaktır. Programı indirdikten sonra jar dosyasını çalıştıralım.

Generic vs Template

Java dili, programlama yapan kişilere çok fazla uzak olmasın diye C++ dilinin syntax’ını ve bazı özelliklerini baz alarak piyasaya sürülmüştür. Tabi sadece bu özelliklerle kalınılmamış,üstüne extradan bazı yenilikler sunulmuştur. Java dilinin C++ dilinden almadığı bazı kavramlar vardı. Bunların başında pointer, multi implementation inheritance, operator overloading, template geliyordu. 4-5 sene öncesine kadar yapılan bazı çalışmalar sonucu Java diline ’Generic’ adında bir konu daha eklendi. Generic, C++ dilinin template konusuna karşılık gelmektedir. 

Linux Serial Port Documentation

- Giriş      Linux sistemlerinde serial port haberleşmesi, bir bilgisayar ve bu bilgisayara USB yolu ile bağlı bir donanım arasında gerçekleşir.      USB yolu ile bilgisayara bağlanan donanım, dev dizininde kendisine ait bir tane dosya seçer veya oluşturur ve bu dosya yardımıyla  bilgisayar ile veri transferini gerçekleştirir. Başarılı bir haberleşme için donanım ve bilgisayar arasında öncelikle gerekli bir kaç  anlaşmanın yapılması lazımdır.

JAVA RMI

Image
Remote Method Invocation, Türkçesi ile Uzaktan Metot Çağırımı, bir cihazda bulunan bir JAVA class object’nin uzaktaki başka bir cihaz tarafından çağırılması verilen isimdir. Server ve client mantığına dayanan bu teknoloji, farklı cihazlar ile internet üzerinden dağıtık uygulama geliştirmeye fırsat sunar. JAVA’nın local cihazlardaki Serializable olayına benzemektedir. RMI, JAVA’nın Remote adlı class’ı extend eden bir interface, bir server ve bir clientten oluşur. Client, server üzerinden metot çağıracağı zaman, stub adı verilen bir yapıya gider ve buradan metot çağırır. Direk olarak class’a erişmez. Client istek yapınca, stub’da bir paket oluşturulur ve client’a iletilir. Client tarafında bu paketi açan skeleton adında bir yapı vardır. Paket açılır, istenilen işlemler yapılır ve tekrardan server’da bulunan stub’a gönderilir. Stub gelen isteği işleyerek, gerekli sonuçları skeleton’a geri bildirir. Bu olay sayesinde sadece internet üzerinden ortak çalışmalar yapılabilir ve RMI, JAVA’nın t

Qt and Windows OS connect Function Conflict[tr]

Bir süredir yoğun bir şekilde kullandığım Qt kütüphanesi başıma bir sürü sıkıntı açtı ama hepsini teker teker hallederek ilerlemeye çalışıyorum.  Qt’nin socket desteğini kullanmak istemeyenler winsock kütüphanesini kullanmak isteyebilirler. Hem Qt hem de winsock içerisinde aynı isimli bir fonksiyon yer almakta :  connect

C++ Class-Object Kavrami [tr]

Image
Object Oriented Programming OOP ; nesnel programlama anlamına gelmektedir. Nesnel olarak tabir edilen yapı ise programcının kendi ihtiyaçları çevresinde yazdığı yeni tiplerin birer örneğidir.  Class – Object Kavramı Class ; programcı tarafından özel olarak kodlanan ve ihtiyaçlar doğrultusunda değişkenler ve fonksiyonlar barındıran yapıdır. Object ise yazılan class’ın özelliklerini barındıran değişkendir. Günümüzde kullanılan bir çok dil OOP yapısı ile çalışmaktadır. C++, JAVA, C#, Python, PHP vb. diller de OOP vardır. 

C++ Virtual Keyword [tr]

Default olarak, C++ compile time’da bir fonksiyon çağrısını bu fonksiyonun doğru tanımı ile karşılaştırır. Bu işleme static binding denir. Programcı bu işlemi run time da yapabilir, bu işleme de dynamic binding adı verilir. Eğer programcı dynamic binding yapmak istiyorsa, fonksiyonun başına virtual yazarak yapabilir.

C Pointers [tr]

Image
Default olarak, C++ compile time’da bir fonksiyon çağrısını bu fonksiyonun doğru tanımı ile karşılaştırır. Bu işleme static binding denir. Programcı bu işlemi run time da yapabilir, bu işleme de dynamic binding adı verilir. Eğer programcı dynamic binding yapmak istiyorsa, fonksiyonun başına virtual yazarak yapabilir.

Essential Matrix [tr]

Image
Essential matrix, epipolar geometride önemli bir yeri olan matristir. İki normalized image plane arasındaki dönüşüm işlemi için kullanılır. Aşağıdaki şekilde epipolar bir düzleme yerleştirilmiş object ve bu object’i farklı açılardan görüntüleyen iki adet kamera bulunmaktadır.

Javascript Global Fonksiyonlar [tr]

Javascript programcıya 7 tane global fonksiyon kullanımını sağlar. Bu global fonksiyonlar programcıya sunulan Javascript’in Global Object’nin parçalarıdır. Bazıları bu fonksiyonları metot olarak da adlandırabilir fakat metot olarak adlandırılabilecek fonksiyonlar bir object’e ait olmalıdırlar.(Örneğin Math.random() gibi). Javascript programcılarının global fonksiyonları kullanabilmeleri için Global Object’e ihtiyaçları yoktur çünkü Javascript bizim yerimize fonksiyonlara referans sağlar.

PHPMailer stream_socket_enable_crypto error

Sometimes, stackoverflow rescues life :) I have used PHPMailer script to send e-mail over gmail address. Everything was OK in my PC, but when i transferred my php files to windows server 2008 which has a XAMPP application, mail sender script didn't work. I ran the script file manually and an error arise on cmd screen about stream socket crypto. Then, i searched error in web, a stackoverflow answer helped me.