20 Ekim 2017 Cuma

Asimptotik Gösterim

Asimptotik Gösterim
    Algoritmaları karşılaştırabilmek için bir algoritmanın zorluk derecesi ölçümüne “Computational Complexity” denir. Aslında problem veya algoritmaların çözüme ulaşmadaki karmaşıklığını ölçmek için kullanılır.Fonksiyon içerisindeki önemsiz kısımlar ve katsayılar atılarak basitleştirilir ve gerçek fonksiyona göre yaklaşık bir değer bulunur. Elde edilen bu yeni etkinlik ölçümüne “Asymptotic Complexity” denir.

    Bunun üç türünü göreceğiz: büyük- \Theta Θ gösterimi, büyük-O gösterimi, ve büyük- \Omega Ω gösterimi.

Büyük-O gösterimi: Algoritmanın çalışabileceği en yüksek üst sınırı ifade eder.Yani bu üst sınırdan daha kötü çalışamayacağını gösterir.
Asymptotic upper bound
-f(n) = O(g(n)), eğer sabit bir c ve n0 değeri için
-f(n) >= c.g(n) bütün n >= n0 değerleri için doğruysa
-f(n) ve g(n) pozitif değere sahip fonksiyonlardır.

Örneğin; T(n)=3n²+8n+3 için O(n²) olduğunu gösterelim.
T(n)=3n²+8n+3   g(n)=n²
c.g(n) >= 3n²+8n+3
c.n² >= 3n²+8n+3
3n²+8n²+3n²  >= 3n²+8n+3
14n² >= T(n)

n0=1 c=14



Büyük- \Omega Ω :Bazen, üst sınır belirlemeden, bir algoritmanın en az belirli bir süre aldığını söylemek isteriz. Bu durumda büyük-Ω gösterimini kullanırız.
Asymptotic Lower Bound
-f(n) = W (g(n)), eğer sabit bir c ve n0 değeri için
-c.g(n) <= f(n) bütün n >= n0 değerleri için doğruysa

Örneğin; T(n)=4n³+2n²+3 için O(n³) olduğunu gösterelim.
T(n)=4n³+2n²+3   g(n)=n³
c.g(n) <= 4n³+2n²+3
c.n³ <= 4n³+2n²+3
4n³ <=  T(n)

Katsayılar atıldığında O(n³) bulunur.


Büyük- \Theta Θ gösterimi:Büyük-Θ gösterimi kullandığımızda, çalışma süresinin üzerinde asimptotik olarak sıkı bir sınır vardır diyebiliriz. "Asimptotik olarak" çünkü sadece n'nin yüksek değerleri için önemlidir. "Sıkı sınır" deriz; çünkü çalışma süresini üstten ve alttan sabit bir çarpana kadar indirebildik.
Asymptotic tight bound
-f(n) = Θ(g(n)), eğer sabit c1, c2, ve n0, değerleri için
-c1.g(n) <= f(n) <= c2.g(n) bütün n >= n0 değerleri için doğruysa

Örneğin;T(n)=2n²+3n+1 için O(n²) olduğunu gösterelim.
T(n)=2n²+3n+1 g(n)=n²
c1.g(n) <= 2n²+3n+1 <= c2.g(n)
c1.n² <= 2n²+3n+1 <= c2.n²
2n² <= 2n²+3n+1 <= 6n²

c1=2 c2=6 n0=1


18 Ekim 2017 Çarşamba

Heroku

Heroku nedir?
Heroku, Ruby, Node.js, Java, Python, Clojure, Scala, Go ve PHP ile yazılmış uygulamaları dağıtmanıza, çalıştırmanıza ve yönetmenize izin verir. Kısaca bulut uygulama platformudur.

Heroku Kullanımı
-Kullanmaya başlamadan önce heroku.com bağlantısından üyelik kaydımızı yaptırıyoruz.
-Daha sonra set-up bağlantısından Heroku CLI aracını işletim sistemimize uygun olanı indirip kurulumunu yapıyoruz.
-İşlemlerimizi komut satırı üzerinden gerçekleştireceğiz. (Git versiyon kontrol sistemini kullanmayıda bilmelisiniz.)
-Komut satırında $ heroku login yazıyoruz ve üye olurken kullandığımız e-posta adresini ve parolamızı yazarak giriş yapıyoruz.

$ heroku login
Enter your Heroku credentials.
Email: java@example.com
Password:

-Eğer githubda bulunan projeyi kullanmak istiyorsak öncelikle projeyi bilgisayarımıza indiriyoruz.

$ git clone https://github.com/heroku/myApp.git

-Eğer bilgisayarımızda yeni bir projeyi kullanmak istiyorsak öncelikle git ile projemizi sürüm kontrolü altına alıyoruz.
Komut satırında proje dizinimizi açıyoruz!

$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -am "First commit"

-Projemizi herokuya(localde) ekliyoruz.
Komut satırında proje dizinimizdeyken!

$ heroku create myApp

-Herokuya eklediğimiz projemizi uzak sunucuya yolluyoruz.
Komut satırında proje dizinimizdeyken!

$ git push heroku master

-Uygulamanın en az bir örneğinin çalıştığından emin olmak için

$ heroku ps:scale web=1

-Eğer uygulamamızı açmak istersek

$ heroku open

*- $ heroku keys:add komutunu girerek heroku public key ortak kullanılmasını sağlıyoruz.
*- $ heroku logs --tail  komutu ile heroku üzerinde yapılan aktiviteleri görüntüleriz.
*- Uygulamanızı başlatmak için hangi komutun çalıştırılacağını açıkça bildirmek için uygulamanızın kök dizininde bir metin dosyası olan bir Procfile kullanın. Procfile içerisine web: java -jar target/myApp-1.0.jar projemizin jarını belirtiyoruz.


26 Mayıs 2017 Cuma

Sosyal Haber Platformu

Spring Hibernate Thymeleaf Bootstrap JQuery
Bu proje bitirme tezim için yazdığım bir haber paylaşım projesidir.
Projeninin kısımları;
-Haber işlemleri
-Takip işlemleri
-Arama işlemleri
-Yorum işlemleri
-Haber pinleme işlemleri
-Haber rezerve etme işlemleri
Not:Kalan kısımları için proje raporunu inceleyebilirsiniz. Not:Proje geliştirilmeye açıktır. İşinize yarıyorsa istediğiniz gibi alıp kullanabilirsiniz.Eklediğiniz yeni özellikleri commit ederseniz projeyi daha güzel bir hale dönüştürebiliriz. Özellikle yeni bir java developer olarak öğrendiklerim kadarıyla standartlara uymaya çalışsamda hatalarım olmuş olabilir.Hatalarımı düzeltmem ve doğrularını öğrenebilmem için yardımlarınızı bekliyor olacağım.
Kodlara github adresinden ulaşabilirsiniz.

26 Ocak 2017 Perşembe

Restful Jersey Webservis Projesi

     Bu proje bir android uygulamasının kullanacak olduğu webservisdir. Proje java teknolojileri kullanılarak yazılmıştır. Başta maven ile bağımlılıklar kontrol altına alınmıştır. JAX-RS webservisidir. Projede veritabanı hibernate ile yazılmıştır.

     Webservis kısmında restful jersey frameworkü kullanılmıştır. Veritabanına kayıt girilmesi için servlet/jsp kullanılarak basit bir kayıt sayfaları oluşturulmuştur. Bu jsp sayfalarının görünümüne özen göstermedim çünkü benim için önemli olan webservis kısmıdır.

     Projenin kodlarını istediğiniz gibi uygulamalarınızda kullanabilirsiniz. Alıntı yapacak olursanız kaynak gösterirseniz iyi olur.

Yararlı olması dileğiyle.

Kodlara ulaşmak için github adresine gidin

23 Haziran 2016 Perşembe

Fikstur Otomasyonu

Bu projemde ödev için yaptığım fikstur otomasyonunu sizlerle paylaşıyorum.
Projenin kodlarını csharp entity framework kullanarak yazıldı.Veritabanı olarak mssql kullanıldı.
Projenin yapılış amacıda tasarım desenlerini öğrenmekti.
Projede gözlemci(observer) ve singleton (tek nesne) tasarım desenleri kullanıldı.

Projeyi ve projenin kodlarını anlatmayacağım kodları indirip incelediğinizde anlayacağınızı sanıyorum.

Proje dosyalarına github adresinden ulaşabilirsiniz.