Tuprime Fitness Kulübü Yönetim Sistemi

Java teknolojilerini öğrenmek için yaptığım bir projeyi paylaşmak istiyorum.Projenin gelişim sürecini başından itibaren Github hesabımda paylaştım.Dilerseniz Github hesabımdan indirebilir kodları inceleyebilirsiniz. Tuprime Projesi Projeyi Maven kullanarak geliştirdim. Her bir katmanı multi-module desteğiyle ayırdım.Böylece dosyalar içinde karışıklıktansa modullere yoğunlaşma imkanı oldu. JPA implementasyonu olan Hibernate ile veritabanı yönetimini sağladım. Projenin sağlıklı çalışması açısından parent dizininde database klasörü altında sql scripti göreceksiniz. Mysql veritabanınızda çalıştırarak daha önceden oluşturduğum tabloları yükleyebilirsiniz. Ayrıca Mysql username ve password değerleriniz root:root değilse applicationContext.xml dosyasında bunlarıda düzenlemelisiniz. Bu işlemleri bitirdikten sonra artık derleme işlemine geçebilirsiniz. Projeyi derlemek için komut satırı ile dosya dizinine gidip... Devamını oku..

“Expected CSRF token not found. Has your session expired?” hatası ve çözümü

Spring Security ve Thymeleaf kullanarak bir proje geliştirirken takıldığım bir hatanın çözümünü paylaşıyorum.Öncelikle CSRF nedir ve neden kullanmalıyız buna değinelim. CSRF uzun haliyle Cross Site Request Forgery demektir. Kısaca formdan gelen verilerin bizim uygulamamız dışından gelmesini engelleme mekanizmasıdır.CSRF anahtarı otomatik olarak üretilir.Spring Security bize böyle bir kolaylık sağlıyor.Spring Boot’ta ise bu varsayılan olarak gelmektedir. Tek yapmamız gereken view katmanı yani thymeleaf dosyamızda form etiketinin içerisine aşağıdaki kodu eklemektir. _csrf değişkeni CsrfToken nesnesini barındırır.${_csrf.parameterName} komutu _csrf nesnesinin getParameter() methodunu çağırır ve bu varsayılan olarak _csrf’dir.${_csrf.token} komutu ise getToken() methodunu çağırır ve bu asıl anahtarımızdır. Devam edelim… Eğer Spring Security konfigürasyonu için XML yerine Java kullanıyorsak CSRF’nin... Devamını oku..

Stack and Queues– Yığıtlar ve Kuyruklar

  Bu yazımızda da yine çok önemli iki yapıdan söz edeceğiz.Stack ve Queues!(Yığıtlar ve kuyruklar demek pek hoşuma gitmedi.İngilizcesi daha aşina olduğum halleri. ) Peki nedir bu stack yapısı? Stack , veri ekleme ve çıkarma işlemlerinin en üstten yapıldığı bir veri yapısıdır.Yani veri ekleyeceğimiz zaman stack yapısının en üstüne ekleniyor.Her veri bir öncekinin üstüne ekleniyor.Veriyi çıkarma işleminde ise en üstteki veriyi alıyoruz.Bu vesileyle de bir altındaki en üste çıkmış oluyor.Aslında bunu güzel bir örnekle betimleyebiliriz.Bir tabanca düşünün.Şarjörüne mermi doldurduğunuz zaman en son koyduğunuz mermi silahtan ilk çıkacak olandır.Yani stack yapısında da dendiği gibi “Son giren ilk çıkar”. Resimde de görüldüğü üzere stack yapısı için iki adet fonksiyondan bahsedebiliriz.Push ve Pop. Push anlayacağınız üzere stack yapısının en üstüne veri eklemeyi ifade ediyor.Pop ise üstteki... Devamını oku..

Trees – Ağaçlar

  Ağaçlar bilgisayar bilimlerinde bir çok farklı alanda kullanılmaktadır.İşletim sistemleri,grafiksel işlemler,veritabanı sistemleri gibi alanlar buna örnektir.Doğadaki ağaçlar ile farkı ise burada kökün en tepede olmasıdır. Bağlı listeler (Linked Lists), yığıtlar(stack) ve kuyruklar(queues) doğrusal veri yapılarıdır.Ağaçlar(Trees) ise doğrusal olmayan iki boyutlu yapılardır.Ağaçlar en tepede olmak üzere bir adet kök(root) ve onun altında devam eden düğümlerden oluşur. Şekilde de görüldüğü üzere A düğümümüz kök(root) düğümdür.Onun sağ ve solundan itibaren ise diğer düğümler devam etmektedir.   Ağaçlardan bahsederken 3 özellik sayabiliriz. Ağaçların yapısındaki gruplandırılma sayesinde üstten aşağıya doğru ihtiyaçlarımıza göre verileri azaltabiliyoruz. Örneğin; iki adet düğümümüz var ve bunların alt düğümlerinde ise aynı veri var.Bu durumda bir tanesindeki veriyi... Devamını oku..

Lists – Listeler

  Dizilerde, verilerimizin bellekteki  sıralı hali tanımlanma esnasında belirlenir. Ardışık dizi elemanlarımız aynı zamanda bellekte de ardışık bir şekilde yer tutar.Bu nedenle silme ve ekleme gibi işlemlerin, dizi elemanlarının yerlerinin kaydırılmasına sebep olacağına diziler  isimli yazımda değinmiştim. Bu tür bir sorunla karşılaşmamak için “listeler” adında bir veri yapısına sahibiz.Listeler, farklı bellek bölgelerinde bulunan verilerin adres bağlantılarıyla birbirine bağlandığı veri yapılarıdır.Bu yapıda her bir eleman bir değer ve işaretçiye(pointer) sahiptir.   Resimde de gördüğünüz gibi her bir verimize ait işaretçi diğer verinin değerine bağlıdır. Bu resimdeki her veriyi bellekte dağınık yapıda hayal edelim.Oklar(işaretçi) ile de verilerin birbirine bağlandığını görebilirsiniz.Sonuçta veriler fiziksel olarak ayrı konumlardadır.Fakat sıralı bir şekilde algılanıp işlem... Devamını oku..

Arrays – Diziler

  Bu yazıda programlama dillerinde genelde ilk öğrendiğimiz yapı olan dizileri işleyeceğiz. Diziler Nedir? Diziler aynı türden verileri içeren yapılardır.Bir dizi oluşturduğumuzda, bellek kısmında ardışık olarak yer  tutarlar.Bu sayede art arda erişim kolaydır.Yani net bir tanım yapmak gerekirse; Diziler ardışık indis değerlerine sahip aynı tipte verilerin saklandığı veri yapısıdır. Diğer veri yapılarına nazaran dizileri kullanmamızda çeşitli avantajlar bulunmaktadır.Diziler basit bir şekilde ifade edilirler,  bellekte fazla yer kaplamazlar ve kolay anlaşılırlar. Ayrıca indis değeriyle verilere erişimimiz daha kolay olmaktadır.Bu da daha büyük boyutlu dizilerde bizlere büyük kolaylık sağlamaktadır. Diziler birden fazla boyutlu olarak tanımlanabilir.Buna en iyi örnek matrislerin iki boyutlu dizi olarak tanımlanabilmesidir. Fakat ardışıklığın avantajlı olmadığı durumlarda olabilmektedir.Örneğin; Elimizde... Devamını oku..

Veri Yapıları Nedir ve Neden Önemlidir?

big-data1

Veri yapıları kategorisi altında, programlama sürecinde sıklıkla kullandığımız veri yapılarına değineceğim. Programlama ile iç içe olan herkes elbette veri yapılarını kullanıyor.Peki veri yapısı dediğimiz şey nedir? Veri yapısı, gerçek hayattaki verilerimizin bilgisayar ortamında saklanış biçimini ifade etmektedir. Gerçek hayatı soyutlama, biz programcılar için çok büyük önem taşımaktadır. Fakat bu işlem için birden fazla veri yapısı bulunmaktadır. Bu da şu soruyu beraberinde getirmektedir. “Sadece dizi veri yapısını kullanarak çeşitli problemlere çözüm üretebiliyorsam neden farklı yapılara ihtiyaç duyayım? “ İşte burada devreye algoritma konusu giriyor. Biz programcılar her sorunu çözümlemek için bir algoritma tasarlarız ve bu algoritmaların çözüme gidebildiği kadar performansı da bir o kadar önemlidir.Algoritmaların performansını etkileyen en önemli etmenlerden biri  ise veri... Devamını oku..