Subscribe:

5 Temmuz 2013 Cuma

STORED PROCEDURE OLUŞTURMA - SQL DİLİNDE IF YAPISI

Stored procedure güvenlik, hızlılık ve verimlilik gerektiren veritabanı uygulamalarında sıkça kullanılan bir yapıdır. Bu yapı ile ilgili daha önce yazdığım yazıya buradan ulaşabilirsiniz.
En basit ifadeyle stored procedure şu şekilde oluşturulur.

CREATE PROCEDURE [Procedure İsmi](
--Girilecek parametre isimleri buraya yazılacak
)
AS
BEGİN
--İlla BEGİN-END kullanmak zorunda mıyız? -Hayır, kullanılmasada olur.
END

Stored procedure ler bir defa derleniyor demiştik. Eğer her defasında derlenilmesi isteniyorsa "AS" den önce "WITH RECOMPİLE" kullanılması yeterli.

Şimdi aşağıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerine begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.

Şimdi yukarıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerini begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.
Stored procedure çağırmak için "exec" ifadesini kullanıyoruz.
exec <stored procedure ismi> varsa parametreler.
Aşağıdaki sorgu sonucunda dönen değer "0" olduğuna göre bu demek oluyorki veritabanında bu tc numarasına ait kayıt yokmuş ve bu sebepten dolayı veritabanı kayıt eklenmiş bulunmaktadır.
Bu yazıda sizlere kısaca stored procedure oluşturmadan bahsettim. Aynı zamanda sql de IF şartlı ifadesini ve değişken oluşturmayada değinmiş olduk. Stored procedure kavramıyla ilgili sorularınız varsa yorum olarak yazabilirsiniz. Bir başka yazıda görüşmek üzere. İyi çalışmalar.

STORED PROCEDURE

sadık dereköy, stored procedure anlatımı
Stored Procedure yapısının faydaları oldukça fazladır
Bu yazımda özellikle orta ve büyük çaplı projelerde olmazsa olmazlardan olan stored procedure yapısına değineceğim. En basit açıklamayla bu yapıyı bizim uygulamalarda kullandığımız fonksiyon yapısı gibi görebilirsiniz. Zaten kelime anlamı da saklı yordam, methot anlamalarına geliyor.
Konuya giriş yapmadan önce kendimden örnekler vererek bu yapıya giriş yapmak ist
edim. Ben bir proje yaparken ilk başlarda temel sql ifadelerini kullanarak veritabanı işlemlerini gerçekleştiriyordum. Nasıl oluyordu bu? Mesela en basit ifadeyle veritabanına kullanıcı eklediğinizi düşünün. "İnsert" ifadesini kullanarak işlemi gerçekleştiriyoruz. Sonra eklediğimiz kaydın veritabanında olup olmadığını kontrol etmemiz gerektiğinin farkına varıyorsunuz. Onun için "select" ifadelerini kullanarak tekrar veritabanına bağlanıp o kaydın veritabanında olup olmadığının kontrol edilmesine ihtiyaç duyuluyor. Bunun gibi daha bir çok veritabanına sürekli bağlanıp işlem yapılması gereken durumlar ortaya çıkıyor. Durum böyle olunca stored procedure kavramını kullanmak en mantıklı ve sağlıklı çözüm oluyor. O kadar fazla faydası var ki şimdi onlardan bir kısmına kısaca değineceğim.
Stored Procedure'ler veritabanı sunucularında tutulduğu için çok hızlı çalışırlar. Bunun sebeplerinden biri, bir defa derlendikten sonra bir daha derlenmeye ihtiyaç duymamalarıdır. Bir de uygulama katmanında yazmış olduğumuz koda bakalım. Burada sql kodu her çağırmada tekrar tekrar derlenmek zorunda. Büyük çaplı projelerde oluşacak zaman ve performans kaybını siz düşünün.
Programlama dili ile veritabanı dili dediğimiz kavramları birbirinden ayrı tutmaya olanak sağlıyor.
Güvenlik açısından da kullanılması mutlaka önerilen bir yapıdır. Tablo isimlerimizi ve alanların görülmemesi için bu yapıyı kullanmak şart.
Bir kere yazıp bir yerde kullanmak gibi daha bir çok faydası olan bu yapıyı kısaca anlatmak istedim. Farkı büyük çaplı projelerde daha belirgin olan bu yapıyı karmaşık veritabanı işlemleri gerektiren projelerle uğraşırken mutlaka öğrenmeniz gerekecektir.

3 Temmuz 2013 Çarşamba

LINQ YAPISI


LINQ(Language Integrated Query-Dile Entegre Edilmiş Sorgulama)
Bu yapı bize veritabanı üzerinde gerçekleştirdiğimiz gelişmiş sorgulama işlemlerini programlama dili ile oluşturduğumuz veri yapılarımız üzerinde gerçekleştirme fırsatını sunuyor.
Bu veri yapısını C# ile nasıl kullanmaya başladım ondan bahsedeyim biraz. Sunucu üzerindeki veritabanına sürekli gidip gelerek sorgulama işlemleri yapmam gerektiği durumlar oluyordu. İnternet bağlantısının düşük olduğu durumlarda işlemler oldukça büyük zaman alıyordu. Bu da tabi kullanılabilirliği ve hızlılığı olumsuz yönde etkiliyordu. Araştırdığımda bu linq yapısı karşıma çıktı. İlk başta yapı biraz karmaşık gelsede sonra çok faydalı bir şey olduğunu anladım. Sadece verileri bir kez veritabanından yükleyip uygulamam üzerinde uygun sınıflar oluşturarak veritabanına bağımlılığı azalttım.
Dolayısıyla bu teknoloji, veritabanı ile kullanılan programlama dili arasıda kodsal bir bütünlük sağlıyor. Bu sayede veritabanındaki sorgulama işlemlerini programlama dili çatısı altında kodlarla yönetebilir hale geliyoruz. LINQ teknolojisi kullanılmadığı durumlarda uygulama katmanı ile veri katmanı birbirinden bağımsız bir görüntü çiziyor.
LINQ yapısı sayesinde veritabanından çektiğimiz verileri nesneler haline dönüştürüyoruz.
Bu yapıyı zamanım oldukça örnekler üzerinde göstererek anlatmayı hedefliyorum. O zaman daha iyi anlaşılacaktır. LINQ ile ilgili farklı konuları ayrı bir yazı dizisi şeklinde ele alıp aşağıdaki gibi bağlantı vererek paylaşıyor olacağım.

LİNQ YAPISI İLE SORGU OLUŞTURMA
LİNQ YAPISI İLE FARKLI TABLOLAR ARASINDA İLİŞKİ KURMA

25 Mayıs 2013 Cumartesi

TRACKER PROGRAMI

Bu yazımda sizlere bilgi güvenliği ve özellikle taşınabilir bilgisayarları çalan hırsızları deşifre etmek üzerine geliştirdiğim ve geliştirmeye devam edeceğim bir programdan bahsediyor olacağım.
Hemen herkesin başına gelebilecek olan elektronik eşya kayıpları günümüzde sıklıkla karşılaşılan bir durum oldu. Kayıplardan ziyade bu tür eşyaların çalınması daha olasılıklıdır. Özellikle dizüstü bilgisayarlar için bu durum söz konusu diyebiliriz. Şüphesiz eşyaların kendisi değilde içindeki veriler madur olan kişileri daha fazla tedirgin etmektedir. Bu gibi durumlar karşısında “Tracker” adında bir bilgisayar programı geliştirdim ve daha da geliştirmeye devam edeceğim.
Open Security Foundation’ın DataLossDB aracılığı ile kişisel bilgilerin kayıp, çalınma ve sızdırma kategorilerinde toplanan bilgiler dikkate alındığında;
2012 yılında 1606 olay
2011 yılında; 1090
2010 yılında; 828
2009 yılında; 727
2008 yılında; 1048
2007 yılında; 774
2006 yılında; 644
2005 yılında; 157
2004 yılında; 43
2003 yılında; 21
2002 yılında; 10 olay olarak gerçekleşmiş.
Çalıntı Notebook, %16
Web, %11
Dolandırıcılık, %11
İmha edilen doküman, %8
Çalınan bilgisayar, %6
Geleneksel Posta, %4
Çalınan Doküman, %4
E-Mail, %3
Kayıp Doküman, %3
Kayıp Medya, %3
Kayıp Sürücü, %2
Çalıntı Sürücü, %2
Virüs, %1
Kayıp Teyp, %1
Kayıp Notebook, %1
Çalınan Medya, %1
Çalınan Teyp, %1
Tanımsız, %6
Dolandırıcılık, %20
Çalıntı Notebook, %11
Web, %9
Geleneksel Posta, %5
Çalınan Doküman, %5
İmha edilen Document, %2
E-Mail Kaybı, %2
Çalıntı Medya, %2
Kayıp Medya, %2
Tanımlanamayan, %4
Hükümet, %19
Eğitim, %16
Sağlık, %17
%23 kazara,
%10 içeriden zararlı bir yazılım tarafından,
%6‘sı içeriden bir personel tarafından gerçekleştirilmiş.

15 Mayıs 2013 Çarşamba

SEN DE YAZ 2.0

Geçen yıl ilki düzenlenen "Sen de Yaz" Yazılım Projesi Yarışması'nın bu yıl ikincisi düzenlenmiştir. Organizasyon, Fırat Üniversitesi Mühendislik Fakültesi Kongre Merkezi'nde gerçekleştirilmiştir. Koordinatörü olduğum bu yarışma Yazılım Kulübü tarafından gerçekleştirilmiştir. Bu yazıda yarışma ile ilgili bilgileri sizlere aktaracağım.
Yarışmaya başvurular 24 Ocak 2013 tarihinde alınmaya başlamıştı. Maalesef yarışmaya katılım beklenenden az oldu. Bu yarışmayı düzenlemekteki en önemli amaç üniversitedeki proje konusunda kendini geliştirmeye başlamış arkadaşlara fırsatlar sunmaktı. Bu gibi organizasyonlar proje konusunda tecrübesi olmayan arkadaşlar için daha büyük bir önem taşımaktadır.
Fazla detaya girmeden direkt yarışma gününe girelim. Yarışma 14 Mayıs 2013 tarihinde saat 10:00'da standların açılmasıyla başladı. Yarışmacılara jüri ve seyirci önünde performanslarını sergilemeden önce standlarda projelerini sergilemeleri için özel standlar açtık. Bu standlarda yarışmaya katılmayıp projelerini sergileyenlerde oldu. Yazılım projelerinin sergilenmesi deyince proje yapan kişilerin etrafındakilere projelerini anlatması şeklinde düşünebiliriz.


Yarışma jüri ve seyirci önünde Kongre Merkezi Mimar Sinan Salonunda saat 14:00 gibi başladı. Yarışmaya sırayla katılan takımları listelersem:
1-Gökhan Özbek & İlkay Altınay - Plaka Tanıma Sistemi
2-Ömer Faruk Doğru - İnternet Cafe Takipçi Programı
3-Veysel Gündüzalp - Amire
4-Mehmet Aslantaş - Lord of Mafia
5-Figen Önün - Kelime Anlamını Bul
6-Serhat Erçel - NANS Asistant
7-Kamil Kalkan & Veysel Demircioğlu
8-Kerim Torun - Bilgi Yarışması

Sunumların ardından dereceye giren yarışmacıları ve projelerini yazacak olursam.
1.Mehmet Aslantaş - Lord of Mafia
İnternet üzerinden karşılıklı oynanılacak web tabanlı strateji oyunu. Java programlama diliyle yazılmış olup, kendine has algoritma mantığıyla dikkatleri üzerine çekti.
2.Veysel Gündüzalp - Amire
Program 3 ana modülden oluşmaktadır. (crm ,matbaa fiyatlandırma ve iş takip) Bu ana modüllere bağlı modüller mevcut. Örneğin, crm'in altında firma kayıt, kişi kayıt, hareket kayıt, takvim vs. işlemleri yer almaktadır. Genel anlamda matbaa otomasyonu diyebiliriz.
CRM (Customer Relationship Management) : Şirketin müşterileri ile yaptığı görüşmelerin kayıt altına alındığı sistem olarak tanımlayabiliriz. İş sadece kayıtılar ile sınırlı değil yapılan satışlarda kayıt altına alındığı için ilerde satış kayıp nedenlerinizi görebilir ona göre değişikler yapabilirsiniz.
3.Serhat Erçel - NANS Asistant
Temelde görme ve fiziksel engellilerin bilgisayar kullanımındaki verimini artırmak için yazılmış NANDS Assistant programı sesli komutlar ile bilgisayarınızı yönetebilmenize olanak tanıyor. Microsoftun Speech kütüphanesi kullanılmıştır. Program içerisinde komutlara karşılık gelen sesli ingilizce ifadeleri işleyerek bilgisayar işlemler yaptırıyor. Örnek vermek gerekirse. "Notepad" dediğimizde bilgisayar notepad ortamını sizlere açıyor. 



Dereceye giren kişilere dijimecmuadan 1 yıllık olmak üzere 6 tane dijital dergi aboneliği verilecektir.

Katılan her yarışmacıya ve bu organizasyonda emeği geçen herkese teşekkür ederim.