14 Nisan 2016 Perşembe

İzlediğim Açık Kaynak Projeler

Genel olarak .Net teknolojilerini kullanmaktayım. Eğer bu konuda piyasada durumlar nasıl ,hangi patternler nasıl kullanılıyor diye merak ediyorsanız açık kaynak projeler size yol gösterebilir. Githup'ta .Net konusunda bir çok popüler açık kaynak projeler bulunmakta. Hatta artık bu konuda Microsoft bile katkıda bulunuyor. Benim takip ettiğim ve incelediğim genel olarak web projeler.
Bunların başında NopCommerce,MVCForum,YAFNET gibi projeler bulunmakta.

NopCommerce adından da anlaşıldığı gibi bir e-ticaret projesi.  ASP.NET(MVC) kullanılarak geliştirilmiş bir proje. Plugin alt yapısına sahip.ORM olarak Entity Framework kullanılmış. Bir buçuk milyondan fazla indirilmiş bir proje.

MVCForum bir forum sitesi ancak StackOverFlow mantığında bir proje. MVC ve Entity Framework kullanılarak geliştirilmiş.
Genel özellikleri:
  • Çoklu dil özelliği
  • Puan sistemi
  • Postları düzenleyebilme
  • Badge sistemi (StackOverflowdaki gibi)
  • Roller
  • Taglama
  • RSS Besleme
  • Emotion
  • Dosya ekleme
  • Oylama sistemi (Kimin oyladığını görebiliyorsunuz)
YAFNET projesi de bir forum projesi. ASP.NET kullanılarak geliştirilmiş. Projenin demosundan genel özelliklerini inceleyebilirsiniz.

Projeler açık kaynak olduğu için hem kodunu inceleyebilirsiniz hem de kurup kendi işiniz için kullanabilirsiniz. 


6 Nisan 2016 Çarşamba

Kitap Severler İçin Kitap Öner

Bu aralar boş zaman buldukça kitap okuyorum. İnternet üzerinde kitap önerisi için bulabileceğiniz bir çok web sitesi var. Yeni açılan kitaponer.com sitesi de bunlardan biri. Ancak sitenin tasarımı ve kullanımı gayet güzel. Henüz kitap veritabanı çok geniş olmasa da zamanla o sorunu da aşacaklarını düşünüyorum.  Site içinde yapacağınız işlemlerde puanlama sistemi mevcut. Her yorumunuz ,beğeniniz sistem üzerinde puanınızın artmasını sağlıyor. Site yeni açıldığı için yapacağınız işlemlerde top 10 a girmeniz kolay.

Entity Framework VS SQL

Projelerimde genel olarak kullandığım teknolojiler web server tarafında ASP.NET MVC  veritabanı SQLSERVER ve kodlamayı  C sharp kullanarak gerçekleştiriyorum.

Entity Framewok 'e yeni geçen biri olarak kolaylıklarından ve sql bazlı sorgulama mantığıyla arasındaki genel farklılıklardan bahsetmek istiyorum. Aslında bu karşılaştırmaya genel olarak ORMler ile SQL arasındaki karşılaştırma diyebiliriz.

ORMlerin en büyük kolaylıkları sql sorgusu yazmadan veritabanı işlemleri yapabilmenizi sağlamasıdır.  Domain Driven Development yapısı için uygundur.
Code-First çalışıyorsanız bütün gerekli işlemleri projenizin içine gömebilirsiniz.
Ancak bazı durumlarda bu özellikler performans konusunda sıkıntı yaratabilir.
Entity tabanlı çalışan bir sistem olduğu için hiç gerekmeyen özellikler her daim sql server tarafından çekilir. Uzak sql server kullanıyorsanız bu baya bir sıkıntı oluşturabilir.
Bunların dışında prosedürlerin performansı büyük çaplı sorgularda çok daha iyi bir sonuç için kullanmanız gerekebilir.

Mesela benim geliştirdiğim bir araç takip uygulamasında günlük 15 milyon kayıt kaydediliyor. Bu data boyutunda olan verilerinizin işlemlerini linq sorgularıyla client tarafta yapamazsınız. Veriyi listeye dolduramazsınız. Sistem kaynakları iflas edebilir. Sql server gibi bir veritabanı sunucusunun görevi burada büyük bir anlam taşımaktadır.

Verinin büyüklüğünden çok ne kadar zaman aralığında bu sorguların çalıştırıldığı önemlidir aslında.
Bir günlük veri çekebilirsiniz bir saatlikte çekebilirsiniz. Gerekli indexleri ayarladığınızda sorgularınız çok hızlı bir şekilde çalışabilir.

Kısacası Entity Framework kullanıyorsanız bile altında sql sorgularının çalıştığını unutmamak gerekir. Onun için her daim sql bilgilerinizi taze tutmanız önemlidir.


30 Ekim 2014 Perşembe

PDKS Nedir?

PDKS(Personel Devam Kontrol Sistemi) personellerin giriş ve çıkışlarının takibi ve raporlanması için kullanılan bir sistemdir. Takip ve tanımlama işlemleri kart okuyucular veya biyometrik cihazlar ile yapılabilir. Bunun için kartlar id olarak veya direk personel verisini tutacak şekilde yapılandırılabilir. Biyometrik cihazlarda ise personelin parmak izi,yüz tanımlaması gibi özelliklerinin cihazlara tanımlaması yapılır.  Bu yazılım sayesinde personelin takibi kolaylaşır ve insan hatasını minimize eder.
Şirketler genel olarak bu sistemleri çeşitli raporların oluşturulması için kullanırlar. Belli başlı raporlar verileri şöyle sıralayabiliriz.

  • Puantaj hesabı.
  • Geç gelen,erken çıkan , devamsız ve fazla mesai raporları.
  • Günlük , haftalık , aylık çalışma saatleri.
  • Günlük ve yıllık izin
Bu sistemden elde edilen veriler bordro yazılımına aktarılabilir.

Sistem nasıl çalışır ?
  • Pdks donanımları turnike istemlerine bağlanır.
  • Pdks yazılımı ve veritabanı kurulur.
  • Pdks donanımı ile yazılımı haberleşmesi sağlanır.
  • Personelin takibi için gerekli tanımlamalar yapılır. Kart tanımlaması ve dağıtımı yapılır veya  biyometrik cihazlarla personelin parmak izi veya yüz gibi kişinin biyo verisi sisteme tanıtılır.

ASP.NET MVC Hakkında

Web uygulamaları için bu aralar daha çok .NET teknolojilerini kullanıyorum. Daha önceleri ASP.NET web form üzerinde uygulama geliştiriyordum. Ancak yeni teknolojilere uyum sağlama ve özelliklerini anlayabilmek için ASP.NET MVC kullanmaya başladım. Elimdeki yeni projeler için kullandıkça mantığını da kavramaya başladım. Ancak bazı alışkanlıkları terketmek bazen zor olabiliyor. Özellikle  web formlardaki postback olayı bazı işleri çok kolaylaştırıyordu. Ancak performansı kötü etkileyebilecek bir durumdu. Yinede sayfayı yenilediğiniz de form verilerinin dolu gelmesi işinizi çok kolaylaştırabiliyor .

Aslında web programcılığın temelinde stateless bir mimari bulunmakta. Bu durumu ASP.NET viewstate ile çözüyordu. MVC'de ise bu durumu kendiniz kodlama ile halletmeniz gerekiyor. Ancak bu beni client  tarafında sorunları çözmeme neden oldu.  Bütün  validation olaylarını javascript ile hallet bir sıkıntı yoksa servera post et. Tabi bu biraz güven açığı oluşturabilecek bir durum. Ancak bu sistemi dışarı kapalı ve bir kaç kişinin kullanacağı uygulamalarda sıkıntı çıkaracağını pek düşünmüyorum.

Ayrıca MVC ile Entity Framework daha koordineli çalışmakta. Ancak ORM araçları bana biraz ters gelmekte açıkçası. SQL dili ile sorgu tabanlı çalışmak çok daha esnek olduğunu söyleyebilirim.
Özellikle büyük verilerin bulunduğu tablolarda işlem yapmak için tam olarak nasıl çalıştığını bilmediğimiz Linq kütüphanesini kullanmak başımı ağırtabilir düşünüyorum. Küçük işler için bazen çok kullanışlı olabiliyor benim için.

Ayrıca web programlamasında artık mümkün olduğunca ajax sorgularıyla çalışmak gerekiyor. Kullanıcı her yapacağı değişiklik için sayfanın yenilenmesi(sadece sayfanın titremesi bile) sıkıntı yaratabiliyor. Uygulalar için kullandığım gridler artık tamamen javascript tabanlı. Telerik Kendo UI kütüphanesi oldukça kullanışlı bu işler için. Ancak lisans gerektiren bir kütüphane.

29 Ekim 2014 Çarşamba

Piyano Metodları

Bu aralar müzikle uğraşmak istiyorum. Önceden beri aklımda klavyeli bir enstrüman öğrenmek vardı.
Yavaştan denemelere başladım ancak , direk olarak belli parçaları çalmaya başlamaktansa işin metolojisinide öğrenmeye çalışacağım. Diğer türlü pek bir ilerleme katetmek biraz zor görünüyor.
İnternette http://www.akademimuzik.com.tr/default.asp?page=content&content_id=63 adresine güzel e-kitaplar bulunmakta. Umarım zaman ayrırıp bir ilerleme katedebilirim.

10 Nisan 2013 Çarşamba

Bombermine

Çok güzel düşünülmüş bir oyun . Bomberman oynunun MMO tarzı diyebilirim. Oyna takma adınızı yazarak direkt girebiliyorsunuz. Oyunda aynı ayna bir çok kişiyle bir haritada bomba döşeyerek saldırı yapıyorsunuz. Grafikler oldukça güzel. Haritanın sonunu göremedim. Bu özellik aslında aklımı karıştırmadı değil.


Tavsiye ederim.

http://bombermine.com/