18 Mayıs 2017 Perşembe

C++ Boost.Log kütüphanesinin kullanımı (Boost Log Tutorial)

Boost C++ için geliştirilmiş içerik bakımından çok zengin bir kütüphaneler topluluğudur. Bu yazı kapsamında boost kütüphanelerinden birisi olan boost.Log kullanımına dair basit bir örnek gerçekleştirilmiştir. Log alma işlemi, bir yazılımın gerçekleştirdiği temel işlemler ile ilgili bazı bilgilerin dosyaya kaydedilmesidir. Böylelikle uygulama ile ilgili birşeyler yanlış gittiğinde log dosyasındaki veriler incelenerek uygulamanın davranışı analiz edilip gerekli düzeltmeler yapılmasına yardımcı olunabilir. Boost.Log kütüphanesini projemizde kullanabilmek için kaynak kodları indirip derlememiz gerekmektedir. Bunun sebebi; Boost kütüphanelerinden bazıları sadece header eklenerek kullanılabilir iken, bazı kütüphanelerin kullanılması için ise kaynak kodun derlenmesi gerekmektedir.

5 Mayıs 2017 Cuma

C++ SignalR İstemci Uygulaması


SignalR, bağlı olan istemciler arasında gerçek zamanlı haberleşme altyapısı sağlayan bir frameworkdür. Http tabanlı çalışır ve asenkron haberleşmenin kalıcı olmasını/kopmadan devam etmesini sağlar. SignalR ile bağlantı kurulumu için konfigürasyon ve bağlantı durumunu sorgulamak gibi işler kolaylaşır ve bu gibi temel işler kütüphane tarafından otomatik gerçekleştirilir .NET uygulamaları ve Javascript ile SignalR kullanımına dair örnekler internette bir hayli mevcut. Ben bu yazı kapsamında SignalR'ı C++ ile kullanarak C# uygulaması ile haberleşme sağlayan bir örnek gerçekleştireceğim.

C++ SignalR Client uygulaması için kurulumun nasıl yapıldığı ve örnek uygulamalar için : https://github.com/aspnet/SignalR-Client-Cpp


26 Nisan 2017 Çarşamba

Libpcap - Ağ adaptörüne gelen paketlerin yakalanması (C++)


Daha evvelki yazımda libpcap (winpcap) kütüphanesinin kullanımı hakkında kısa bir giriş yapıp, *.pcap uzantılı bir dosyadan paketlerin nasıl okunacağına dair bir örnek paylaşmıştım. 


Bu yazı kapsamında ise dosyadan değil de ağ adaptörüne gelen paketlerin nasıl elde edileceğine dair kısa bir örnek paylaşacağım. Daha önceki örnekte libpcap kütüphanesini offline modda açıp, yolunu belirttiğimiz .pcap dosyasındaki paketleri okumuştuk. Bu örnekte ise pcap_open_live modunu kullanıp o an adaptöre gelen paketleri yakalayacağız. Bunun için ilk olarak bilgisayarımızdaki ağ adaptörlerini listeleyip, seçilen ağ adaptörünü libpcap kütüphanesine belirtmemiz gerekiyor. Bilgisayarımızdaki ağ adaptörlerini listeleyen C++ kodu aşağıdaki gibidir, yazının sonunda ilgili kodlara ulaşabilirsiniz.

23 Mart 2017 Perşembe

Libpcap Giriş - Ağ paketlerinin yakalanması (network traffic capturing)


Libpcap güçlü bir ağ paket analiz kütüphanesidir, ağdaki trafiği dinlemeye ve ağa paket göndermeye yarar. http://www.tcpdump.org/

Winpcap ise libpcap 'in windows versiyonudur,  https://www.winpcap.org/

libpcap gelen paketlerin henüz işletim sistemi tarafından işlenmeden evvel bir kopyasını alır. Böylece gelen paketler işletim sistemi tarafından herhangi bir işleme tabi tutulmadan alınmış olur. Libpcap C/C++ ile birlikte kullanılacak şekilde dizayn edilmiştir fakat Python, Java, C# ile kullanılabilmesi için de ara birimler (wrapper) geliştirilmiştir.

18 Mart 2017 Cumartesi

C++ map ve unordered_map veri yapıları - Performans kıyaslaması


Map C++ standart kütüphanesinde bulunan bir veri yapısıdır ve ilişkisel verileri saklamak için kullanılır. Yani sırasıyla key (anahtar) ve bu anahtarın değerini ifade eden value elemanları saklanır.

typedef pair<const Key, T> value_type;
map içerisindeki elemanlar key değerine göre eşsizdir ve tüm elemanlar sıralanmış vaziyettedir. 




6 Şubat 2017 Pazartesi

MAC OS üzerine Tesseract OCR (Karakter Tanıma) kütüphanesinin kurulumu


Tesseract açık kaynaklı bir OCR(Optical Character Recognition-Optik Karakter Tanıma) motorudur/kütüphanesidir (https://github.com/tesseract-ocr/tesseract/wiki) Tesseract MAC üzerine MacPorts ya da Homebrew aracılığıyla kurulabilir. Tesseract ı homebrew kullanarak kurmak istiyorsak ;

23 Ocak 2017 Pazartesi

Python - OPENCV Yaya Tespiti (Görüntü İşleme)


Yaya tanıma (pedestrian detection) video takip, kişi davranış analizi, akıllı arabalar için sürücü destek sistemi gibi farklı uygulamalarda kullanılabilir. Yaya tespiti probleminde makine öğrenmesi teknikleri yaygın olarak kullanılmaktadır, bu tekniklerde eğitilmiş sınıflandırıcılar ile görüntü içerisindeki yaya tespit edilmeye çalışılır. Sınıflama yapılırken yani bizim örneğimizde görüntüdeki insanları bulurken, uygun bir sınıflandırıcı bulmak kadar bulunacak nesneye ait olan seçici/ayırt edici bir özelliğin (feature) çıkarılabilir olması da çok önemlidir. Yayaların tanınması probleminde HOG (Histograms of Oriented Gradient) ile özellik çıkarılması yönteminin başarılı sonuçlar verdiği gösterilmiştir.