20 Şubat 2015 Cuma

Java Projelerini Import ve Export Etme

Merhabalar arkadaşlar, bu makalemizde Java programlama dili kullanarak eclipse geliştirme ortamında oluşturduğumuz projeyi başka bir bilgisayara taşımak istersek yapmamız gereken projeyi export edip başka bir bilgisayara taşımak olacaktır. Sırayla önce Export ardından da Import işlemlerini inceliyor olacağız.

Öncelikle Eclipse ortamında yeni bir proje oluşturalım ekrana sadece helloworld yazan minik bir uygulama olsun.























Oluşturduğumuz proje içerisine bir src dosyası eklenmiş olarak gelecektir. Buraya bir tane class ekleyelim içerisinde Main metodu barındıran bir class olsun. Main metodu programın başlama noktasıdır. Biz projeyi çalıştırdığımız zaman main içerisinde yukarıdan aşağıya doğru sırasıyla kodlar çalışır. Eklemiş olduğumuz classın içindike main içerisinde kodlar yazalım ve ardından export edelim.

























Programın içerisine ekrana bilgi yazdıran komutlar yazalım. Ardından projemizi Export etme aşamasına gelebiliriz.File menüsü altındaki Export bölümüne tıklayalım.

























Önümüze açılan pencereden General menüsü altındaki Archieve File bölümüne tıklayalım.


























Bir sonraki aşamada ise hangi projeyi export etmek istersek bunu seçelim. Ardından seçtiğimiz projeyi nereye kaydedeceksek orayı belirtelim.






Ardından belirtmiş olduğumuz isimle kaydediyor olacaktır. Şimdi bu paketi başka bir bilgisayarda çalıştırmak istersek bu klasörü eclipse içerisine import ediyor olmamız yeterli olacaktır.
File menüsü altındaki import seçeneğine tıklarız.









 General sekmesi altında bulunan Existing Projects into Workspace dememiz yeterli olacaktır. Select archieve File yazan kısımdan daha önce import ettiğimiz dosyanın yolunu belirtiyor olmamız yeterli olacaktır.

























Select archieve file kısmından dosyayı belirtelim ve ardından finish buttonuna basarak işlemleri bitirebiliriz. Böylece aynı projeyi başka bir bilgisayarda tekrar kullanabiliriz.

Bir sonraki makalede görüşmek dileğiyle...








6 Ocak 2015 Salı

SQL Injection Nedir, Nasıl Korunuruz?



SQL Injection, bilindiği gibi veritabanı bağlantısı olan projelerde bulunan bir yapıdır. Bunu göstermek için bir web projesi üzerinde uygulamasını ve bu yöntemden nasıl korunabiliriz bunu gösteren bir çalışmadır. Asp.net yapısı ile oluşturulan web sayfası Visual Studio kullanılarak C# kodlanarak gerçekleşmiştir. Açık olduğu bizzat test edilip ardından bundan nasıl korunmak için nasıl bir kodlama yapmamız gerektiği üzerinde durulmuştur.


Veritabanımız hazırlanır. Ardından Web Sayfamızın tasarımı hazırlandıktan sonra ilgili kodlamalar yapıldıktan sonra artık SQL Injection nedir nasıl gerçekleştirilir gösteririz. Sonrasında ise bu durumu engellemek adına yapılması gereken kodlamları düzenleriz.

Tablo Oluşturma
SQL Injection üzerine konuşabilmemiz için veritabanı içeren bir uygulama yazmamız gerekmektedir. Bunun için SQL tarafına gidip bir veritabanı oluşturmamız gerekir. Veritabanı oluştururken MSSQL kullanacağız. Veritabanımızın ismi LoginDB olsun ve içerisine Kullanici isminde bir tablo ekleyelim. Tablomuzun içerisinde Id, kullanici ve sifre gibi kolonlarımız bulunsun. İlgili kolonları belirlerken girilecek olan türlere uygun veri tiplerini belirtmemiz gerekecektir. İçerisine birkaç tane kayıt girelim. Kayıt girme işleminde MSSQL ara yüzünü kullanarak kayıt girebileceğimiz gibi direkt olarak SQL sorgu cümleciği olan insert into Kullanici values(değerler) yapısını da kullanabiliriz.







Web Sayfasının Tasarımı
SQL yapısını oluşturduktan sonra Visual Studio kullanarak web sayfamızın tasarımın yapalım. Bunun için sayfamıza iki tane label iki tane textbox ve label ekleyelim. Login olma işlemini denetleyeceğiz. İlgili kontroller koyulduktan sonra istersek bu web formun tasarımı için CSS ekleyebiliriz.














Kullanıcı adını ve şifresini girdiğinde ne iş yapmasını istiyorsak programatik olarak bunu buttonun arkasına kodlamamız gerekir. Bunun için projenin .cs uzantılı dosyasına geçiş yapmamız gerekecektir. Şimdi buttona çift tıklandığında neler olacağını denetleyelim.


Öncelikle veritabanına bağlanacak ve ilgili bilgileri denetleyip böyle bir kullanıcı var mı diyecek bakacak eğer böyle bir kullanıcı varsa sisteme girişi sağlanırken kullanıcının olmaması durumunda hata verip programı kapatacak. Veritabanı ve programı bağlamak adına Ado.Net teknolojisi kullanıyor olacağız. Bunun için aşağıdaki kodlar yazılır.


Kodlara bakıldığında öncelikle bağlantı nesnesi oluşturulur. Bunun data source, database gibi bilgileri verilir. Ardından SqlCommand nesnesi oluşturulup ilgili SQL cümleciği ve bağlantısı belirtilir. Oluşturalan baglanti nesnesi açılır, komut çalıştırılır ve gelen kullanıcıyı kaydetmek adına session kullanılır. Session içerisine o bilgi yani string olarak tablodaki kullanici kolonunda bulunan bilgi atanır.

Başka bir webform hazırlanıp eğer bilgileri doğruysa main.aspx diye bir sayfa yönlendirme yapılır. Kullanıcı Login sayfasında iken kullanıcıAdı ve Sifre kısmına aşağıdaki bilgileri girersek SQL Injection’a maruz kalırız.





Bilgilerinizi yazıp tekrar giriş buttonuna tıklarsa main.aspx olan sayfayı görebilecektir. Görmüş olduğumuz gibi bu sistemde SQL Injection açığı vardır. Burada böyle bir kullanıcı var mı diye bakacak textboxlara girilen değerler doğru olduğu için veritabanı tarafındaki ilk kayıtla girmesi sağlanacaktır. Dolayısıyla tabloda ilk kayıt adminse sisteme admin olarak giriş yapılmış olacağız. Bunu önlemek içinse mümkün olduğunca parametre içeren yapılar verilerek sisteme giriş denetlenirse SQL Injection’dan korunmuş oluruz.



Parametre içeren bir SQL cümleciği yazdığımız için dolayısıyla SQL Injection kullanılamıyor olacaktır. p1 ve p2 parametreleri komut nesnesinin içerisine ayrıca entegre edilmiştir. Dolayısıyla bu açıktan korunmuş oluruz.


24 Aralık 2014 Çarşamba

C# ile VeriTabanına Resim Kaydetme

Merhaba arkadaşlar,veritabanına resim kaydetme işleminden konuşuyor olacağız. Öncelikle visual studio tarafında forma ihtiyacımız vardır.

Yandaki gibi bir form tasarlarsak içerisine 1 tane picturebox, openfiledialog ve 2 tane button ekliyoruz. Picturebox nesnesinin eklenen resmi tam olarak göstermesi için sizemode özelliğini StrecthImage olarak düzenleyelim.


Ekle buttonuna tıklandığı zaman openfiledialog devreye girip dosyayı kaydedeceğimiz kısım açılır. Buttonun altında bu denetimleri yapıyor olmamız gerekecektir.


Öncelikle veritabanımıza bağlanmak için veritabanını oluşturalım. İlgili kolonları ve tiplerini belirtmemiz gerekecektir.


Bir veritabanı ekleyelim. İsmi resimDB olsun. Sonra bir tane table ekleyip hangi kolonlardan oluşacağını belirtmemiz gerekecektir. id ve resim kolonları olsun. Bu kolonların tipleri sırasıyla int ve image tipinden olsun. Bu table yapısını Kullanicilar isminde kaydedelim.

Veritabanı işlemlerini yaptıktan sonra şimdi yapmamız gereken bu iki programı bağlamak olacaktır. Bunun için öncelikle bağlantı nesnemizi oluşturmamız gerekecek. Diğer metotlar üzerinden de erişilebilmesi için metotların dışına bağlantı nesnesini tanımlayalım.






Ekle buttonunun altına aşağıdaki kodları yazmamız gerekecektir.










openFileDialog penceresi açıldığında başlığında Resim Aç yazıyor olacak. openfiledialog.filter=burada ise hangi tipten dosyaların kaydedileceğini seçeriz. Eğer buradan Ok butonu seçilirse picturebox kısmında burada seçilen resmin görünmesini sağlayacağız.

Resmi veritabanına kaydetme kısmında ise şunları yapıyor olmamız gerekecektir.


Bağlantı nesnemizi oluştururken data source=. dediğimiz kısım üzerinde çalıştığımızbilgisayarı ifade etmektedir. database=resimDB oluşturmuş olduğumuz veritabanının adını göstermektedir.




















Ve son aşamada programı test edelim.

Ekle buttonuna tıkladığımızda resim eklememiz için Resim Aç başlığı ile penceremiz açıldı. Resimi seçip Open tuşuna basarsak picturebox tarafında resim görünüyor olacaktır.







Yan tarafta görüldüğü üzere picturebox tarafında resim eklendi. Şimdi Kaydet buttonuna tıklayıp kaydetme kısmına bakalım.










Kaydet buttonuna tıklayalım.

Program bize mesaj verdi. Veritabanına kayıt yapıldı şeklinde belirtti. Şimdi de veritabanına gidip kaydetmiş mi diye kontrol edelim.







Veritabanından kontrol edersek resmi veritabanına kaydetmiş olduk.





Bir sonraki makalede görüşmek üzere...
İyi Çalışmalar. Kolay Gelsin.

3 Aralık 2014 Çarşamba

Appinventor Projesinde Farklı Ekranlara Geçiş

Merhaba arkadaşlar, appinventor ile uygulama geliştirirken ekranlar arası geçiş hakkında yazıyor olacağım. Öncelikle başlangıç ekranına bir tane button koyalım ve buttona tıklandığında yeni bir ekran açılsın. Bunu için öncelikle bir screen ekleyelim.













Uygulamaya screen eklemek için yukarıdaki menüden Add Screen kısmını seçmemiz gerekecektir. Daha sonra name kısmını belirleyip OK dersek uygulamaya bir tane ekran eklenecektir. Hangi ekrana geçmek istersek Screen1 yazan combobox yapısını tıklayıp oluşturmuş olduğumuz yeni sayfayı görebiliriz.

Daha sonrasında Screen1 bölümüne buton koyalım ve buton koyduktan sonra sağ üst köşeden blocks kısmına geçerek kodları oluşturmaya başlayalım. Buttona tıklandığında bir işin gerçekleşmesini istiyoruz ve bu iş yeni bir ekrana geçiş yapmaktır.






Eklemiş olduğumuz button nesnesi clicklendiği zaman yeni bir ekran açmasını istiyoruz. Diğer programlama dillerindeki metotları düşünerek bu kısmı anlamamız daha kolay olacaktır. Open another screen kısmını metot olarak düşünelim ve bu metodun çalışması için parametre olarak string ifade alması gerekir. Alacağı parametre ise az önce yeni eklemiş olduğumuz screen nesnesinin name bilgisin olmalıdır. Ekranın name bilgisini parametre olarak verirsek işlem tamamlanmış olacaktır.

Kolay gelsin arkadaşlar. Bir sonraki makalede görüşmek dileğiyle...

26 Kasım 2014 Çarşamba

Appinventor ile Tanışma

Merhaba arkadaşlar, google tarafından çıkartılmış olan appinventor hakkındaki bilgilerimi sizlerle paylaşıyor olacağım. Appinventor uygulaması aracılığıyla android cihazlarınız için mobil uygulamalar geliştirmenize yardımcı olacaktır.
Appinventor ile uygulama yazmak için ihtiyacınız olan bir gmail hesabıdır.

İlgili siteye gitmek için tıklayınız.

Siteye giriş yapıp kendi projelerinizi sistem üzerinde oluşturabilirsiniz. Böylelikle projelerinize online olarak ulaşma şansınız da olacaktır.

Mail adresinizle giriş yaptığınız zaman aşağıdaki gibi bir ekran sizi karşılıyor olacaktır.










Daha önceden yapmış olduğunuz projeleriniz varsa ekranda bu projeler listelenecektir. Projects menüsünün altından yeni bir proje oluşturabilir, eski projelerinizi açabilirsiniz. Daha önceden başkalarının yapmış olduğu projeleri kendi projenize dahil edip başkalarının kodlarını inceleyebilirsiniz. Projelerinizi kaydetme işlemini de yine aynı başlık altından gerçekleştirebilirsiniz.



Yeni bir proje oluşturalım ve  projemizin adını HelloWorld olarak düzenleyelim. Tasarımını yapalım ve sonrasında kodlama blockları üzerine konuşalım.

Projenin iki tane sekmesi bulunmaktadır ve biz bu sekmeleri sağ üst köşeden görebiliriz. Bunlar Designer ve Blocks sekmeleridir.



Projenin Designer kısmında ekran görüntüsü kısmının tasarımı gerçekleştirilebilir. Sol tarafta bulunan Palette bölümünden istediğimiz nesneleri sürükleyip bırakarak projelerimize dahil  edebiliriz.



Screen kısmına bir tane button,bir tane label sürükleyip bırakalım ve buttona tıklandığında ekranda Hello World yazıyor olalım.




Sayfanın tasarım kısmını bitirdikten sonra kodlamaları yapmak için şimdi de block kısmına geçelim.
Blocks tarafında adeta yapboz oynar gibi kodlama işlemini gerçekleştiriyor olacağız.
Buttona tıklandığında label textinin değişmesini istiyoruz. O zaman buttonun clicklenmesini denetlemek için sol taraftan button clicks parçasını sayfaya getirelim.


Buttonun üstüne bir kere tıklarsak when button1.click kısmını sürükleyip sayfamıza bırakalım. Tıklandığında ne olmasını istiyorsak onu belirtmemiz gerekecektir.
Bunun için label nesnesinin text özelliğini seçelim. Bu özelliği sürükleyip buttonun tıklanması olayına bağlayalım.







Tıklanma esnasında text kısmında ne göreceksem bunu text olarak yazdırayım. label nesnesi üzerinden text kısmına tıklarsak string ifadeyi yazarız.


Text içerisine HelloWorld yazalım ve projemiz artık hazırdır. En son aşamada programı varsa bir android cihazla eğer yoksa emulator kullanarak kodumuzu test edebiliriz.





Bütün işlemlerin sonunda aşağıdaki gibi bir ekran görüntüsünü blocks sekmesi tarafında oluşturmamız gerekmektedir.


Artık test edebiliriz. Bir sonraki makalede görüşmek üzere hoşçakalınız :)
Emülator kurulumu için tıklayınız .




















9 Kasım 2014 Pazar

Quick Sort Algoritma Karmaşıklığı

Merhaba Arkadaşlar, hızlı sıralama algoritması olarak adlandırılan Quick Sort Algoritmalarının karmaşıklığı hakkında bilgi veriyor olacağım.
Öncelikle elimizde bir dizi olsun.






Dizi elemanlarının içinden öncelikle bir pivot eleman seçeriz. Bu seçtiğimiz pivot diğerleriyle karşılaştıracağımız bir eleman olacaktır. Pivot elemanını istediğimiz yerden seçebiliriz. Ben pivot eleman olarak en sağda bulunan 5 elemanını seçiyorum. Seçilmiş olan pivot elemanı ortaya alalım ve bu pivot elemana göre küçük olanlar sol tarafa yazılır. Büyük olan elemanlar ise pivot elemanın sağ tarafına yazılır. 








Aynı algoritma bölünmüş gruplar için tekrar yapılır. Bölünmüş gruplar için tekrar pivot eleman seçilir ve işlemler tekrar yapılır.








Pivot elemanı ortaya alalım ve pivot elemana göre göre tekrar tekrar sıralama işlemi yapalım.




Her bir grup için sıralama işlemi yaptıktan sonra hepsini birleştiririz. Soldan sağa doğru yazdığımız zaman bütün elemanlar sıralanmış olur.

Algoritmanın Karmaşıklığı
Her satırdaki her elemena bakar eğer n tane sayı varsa n tane sayıya bakıyor olacağız.Algoritmanın adım sayısı  dersek logn tanedir. Buradaki log iki tabanında demektir. Problem her seferinde 2 parçaya bölünür.100 sayı var diye düşünelim log iki tabanında 100 sayısını yukarı yuvarlama işlemi sonucunda 7 elde edilir. Buradan çıkaracağımız sonuç algoritmanın sıralanması 7 adımda gerçekleşmektedir.

Algoritmanın performansı iyi bir durumda nlogn'dir. 
Her zaman nlogn ile karşılaşmayız. Tesadüfen bütün elemanlar pivottan küçük olsun böyle bir durumda biz elemnları iki parçaya bölemeyiz. En sondaki pivotu bırakıp hem bir solundaki elemanı pivot seçeriz. Böyle bir durumda n-1 tane sayı olacaktır. Yeni dizi için yeniden pivot seçeriz ve bu işlemleri tekrar tekrar yapmak zorunda kalırız.
Bu durumda algoritmanın en kötü durum karmaşıklığı n^2 olur. Genel olarak Quick Sort algoritmasında ise ortalama durum nlogn'dir.


14 Eylül 2014 Pazar

Asp.Net 4.5 Framework RequiredFieldValidator Kontrolü Kullanımı

Asp.Net 4.5 Framework ile Visual Studio ortamında yeni bir web projesi açıp RequiredFieldValidator kontrolünü kullanmak için yapmamız gerekenleri konuşalım.
Öncelikle yeni bir ASP.Net Web Application projemizi oluşturuyoruz. Projemize bir adet Web Form ekleyelim. Web formun adını default olarak verelim.


















Projenin üzerine sağ tıklayıp Manage Nuget Packages seçeneğinden Jquery ve Jquery Validation kütüphanesini ekliyoruz.
Bu kütüphaneleri eklediğimiz zaman Scripts isimli klasörün içerisinde bilgileri bizim için ekleyecektir.























Projemize yeni bir Global Application Class ekleriz.
















Ve eklemiş olduğumuz Global Application Class içerisinde bulunan Application_Start isimli metod içerisine aşağıdaki gibi kodları ekleriz.

Projeye daha önceden eklediğimiz adı default olan form içerisine textbox, RequiredFieldValidator ve button kontrollerini ekleyelim.
RequiredFieldValidator kontrolüne ControlToValidate="TextBox1" kodunu eklemeliyiz. Bu tarafta denetim yapmasını istediğimiz kontrolü vermemiz gerekmektedir. Hata olması durumunda kullanıcıya göstermek istediğimiz mesajı ErrorMessage kısmına yazalım.

Sonuç olarak default isimli web sayfasının son hali aşağıdaki gibi olur:

















Eğer işlemleri yaparsanız boş geçilemeyen bir textbox alanı eklemiş olacaksınız. :)

Session Nedir? Neden İhtiyacım Var?

HTTP nedir? HTTP, yani Hypertext Transfer Protocol , web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin t...