t.c. kadİr has Ünİversİtesİ mÜhendİslİk fakÜltesİ ... · staj defterİ Öğrencinin...

51
T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ STAJ DEFTERİ Öğrencinin Fakülte Numarası : Öğrencinin Adı ve Soyadı : Emine Begüm Tansal

Upload: others

Post on 30-Aug-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

T.C.

KADİR HAS ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

STAJ DEFTERİ

Öğrencinin Fakülte Numarası :

Öğrencinin Adı ve Soyadı : Emine Begüm Tansal

Page 2: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Öğrencinin,

Adı :Emine Begüm

Soyadı : Tansal

Numarası :

Bölümü :Bilgisayar Mühendisliği

E-posta :

Staj Dönemi :yaz

Staj Başlama Tarihi :12/08/2013

Staj Bitiş Tarihi :06/08/2013

Toplam Çalışılan Gün :25

Stajın Yapıldığı Bölüm :server side programing

İşyeri Stajyer Sorumlusu Firma Onayı Veren Kişi

Adı / Soyadı

Ünvanı

Tel.

E - Posta

Staj Yapılan Firmanın Adı :Simegra LTD.

(İmza, Mühür)

T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

FOTOGRAF

Page 3: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

HAFTALIK ÇALIŞMA ÖZETİ

HAFTA TARİH GÜN YAPILAN İŞİN KISA TANIMI

1. 12.08.2013 P.tesi

restoran rezervasyonu amaçlı proje için uygun

framework araştırması yaptım. Spring framework

kullanmaya karar verdim.

1. 13.08.2013 Salı

Spring framework projeleri için gerekli olabilecek

tool’ları araştırdım. Ubuntu OS üzerinde, Maven

project tool kullanımı üzerine çalıştım.

1. 14.08.2013 Çarş.

Netbeans ide ile hazır gelen spring framework

kullanarak tomcat bağlantısı kurup java web

application yarattım ve Bir üye form sayfası

oluşturdum.

1. 15.08.2013 Perş.

Uzak masa üstü bağlantısı kullanarak sunucuya

bağlandım ve windows server 2012 üzerinde

gerekli kurulumları tamamladım.

1. 16.08.2013 Cuma HTML ve javascript kullanarak form sayfasında

düzenlemeler yaptım.

1. 17.08.2013 Ctesi Hibernate hakkında bilgi topladım.Gerekli

methodların kullanımı üzerine çalıştım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 4: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

HAFTA TARİH GÜN YAPILAN İŞİN KISA TANIMI

2. 19.08.2013 P.tesi

Hibernate kullanarak model ve controller

paketlerinin ve class ne interface’lerin oluşturdum.

Database oluşturdum.

2. 20.08.2013 Salı

Model sınıfı ile database bağlantısı için gerekli

hibernate dosyalarını oluşturdum.

2. 21.08.2013 Çarş.

Bağlantı için gerekli ayarlamaları

tamamladım.spring servlet sınıfını düzenleyerek

gerekli bean’leri ekledim.

2. 22.08.2013 Perş.

Eksik kalan bazı importları ve beanleri bulamadığı

kurulamayan form-veri tabanı bağlantısını

düzeltmek için projeyde hata aradım.

2. 23.08.2013 Cuma

Eksik kalan jar dosyalarındaki hatayı gidermek

için maven ile oluşturulmuş olarak projeyi yeniden

düzenledim.

2. 24.08.2013 Ctesi

Sql hatası vermesi nedeniyle postgreye

bağlanamayan projeyi mysql server ile denedim ve

çalışır hale getirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 5: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

HAFTALIK ÇALIŞMA ÖZETİ

HAFTA TARİH GÜN YAPILAN İŞİN KISA TANIMI

3. 26.08.2013 P.tesi Projeyi postgresql ile düzgün çalışır hale getirdim

ve select insert sorgusu yapabilir hale geldi.

3. 27.08.2013 Salı Web servisi yazmam istendi. JSON kullanarak

web servisi yazma üzerine çalıştım.

3. 28.08.2013 Çarş.

Gerekli maven dependency’leri buldum ve onların

tanımlanabilmesi için gereken repository’i

ekledim.

3. 29.08.2013 Perş. Controller’da eklemem gereken annotation’ları

ekledim

3. 31.08.2013 Ctesi

Hataların nedenini bulmaya çalıştım. Request

body için user nesnesi dönen bir method

oluşturdum.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 6: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

HAFTA TARİH GÜN YAPILAN İŞİN KISA TANIMI

4. 02.09.2013 P.tesi

Web servisini tamamladım. Controller sınıfı

içerisinde yazdığım metodlarla json objesi halinde

nesne yada nesne dizini elde ettim.

4. 03.09.2013 Salı

Android ile activity-main.xml üzerinde layout’u

oluşturdum ve formun mobil tarafını basit bir

şekilde tamamladım.

4. 04.09.2013 Çarş. Android client tarafında çalıştım ve RestClient

sınıfı yazdım.

4. 05.09.2013 Perş. Android projesinde giriş ve login sayfalarını

düzenledim ve aralarındaki geçişleri sağladım.

4. 06.09.2013 Cuma Android client tarafında yapılacak işlemleri

gerçekleştirdim.

4. 07.09.2013 Ctesi

Server tarafının android client tarafından

gönderilen kısmını nasıl değerlendirmesi

gerektiğini tanımladım. Web sayfası üzerinde

validation ile ilgili ayrıntıları düzenledim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 7: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

HAFTALIK ÇALIŞMA ÖZETİ

HAFTA TARİH GÜN YAPILAN İŞİN KISA TANIMI

5. 09.09.2013 P.tesi

Bağlantıyı başarılı bir şekilde

gerçekleştiremediğim için farklı yöntemler

deneyerek server ile bağlantı kurmaya çalıştım.

Projenin signup formunu çalışır hale getirdim.

5. 10.09.2013 Salı Signup formu ile yaptığım işlemin benzerini sign in

kısmı için gerçekleştirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 8: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

YAPILAN ÇALIŞMANIN AÇIKLANMASI

Hafta

1.

Tarih

12/08/2013

Gün

1

Yapılan İş

restoran rezervasyonu amaçlı proje için uygun

framework araştırması yaptım. Spring framework

kullanmaya karar verdim.

İlk gün yapılan toplantı sonucunda, daha önce çalışmadığım ve öğrenmemin bana faydası

olacağı düşünülerek server tarafı programlama ile ilgili bir görev verildi. Yeni bir proje olacak olan

restoran rezervasyonu amaçlı bir site kurulumu bunun web servisinin yazımı kısmı benim tarafıma

ve sonrasında bu web servisi kullanılarak yapılacak olan mobil programlama ekip çalışmasına

bırakıldı.

Bu proje süresince benim kullanmam istenilen gereçler konuşuldu ve ilk olarak framework

kullanımı ve hangi framework ile çalışmanın daha verimli olacağı konusunda araştırma yapmam,

tavsiye olarak Play Framework ile Spring Framework üzerine yoğunlaşmam ve eğer istersem başka

bir farmework de seçebileceğim söylendi.

Framework amacı ve faydaları:

Çok az ya da sıfır kodla database değiştirerek, database çıkarımı yapar.

Obje ilişkili haritalama, böylece ham datalar yerine objeler kullanılır.

Hazır kalıplar içerir.

Database sorgularını gerçekleştirir.

Daha düzgün URLler bulur ve bunları daha kolay değiştirir.

Çevreyi düzenler.

Debug, zamanlayıcı ve anlamlı hata hata mesajları sağlar.

SQL, XSS ya da CSRF sızmalarına karşı güvenlik sağlar,

Test fonksiyonları bulunur.

Developerlar için dağıtma ve paylaşma imkanı verir.

Bir çok amaç için geniş kütüphaneler içerir.

Bu amaçlar doğrultusunda yapılan araştırma sonucu daha yaygın olarak kullanılan ve daha çok

doküman içeren bir framework olan Spring Framework kullanmaya karar verdim. Sonrasında bu

projede kullanmam gerekebilecek araçları belirledim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 9: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Bu proje için gerekli olcak araçlar:

Java IDE(Netbeans or Eclipse)

Apache Tomcat Server

Spring Framework(Spring Web MVC)

Hibernate

Maven Development Tool

Adt-bundle(eclipse android ide)

Kullanılacak programlama dilleri:

Java

Html

Css

Javascript

Android

PostgreSQL

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 10: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

1

Tarih

13/08/2013

Gün

2

Yapılan İş

Spring framework projeleri için gerekli olabilecek

tool’ları araştırdım. Ubuntu OS üzerinde, Maven

project tool kullanımı üzerine çalıştım.

Proje yönetiminde kullanışlı olabilecek olan Maven Development tool hakkında araştırma

yaptım. Bu gereç temel olarak projenizin düzenlenmesinde programcılar için geliştirilmiş bir

yardımcı olarak görüleblir. Maven projede kullanmanız gerekecek jar dosyalarını indirip elle import

etmeye gerek kalmadan pom.xml sayfasına yazacağınız jar dosyalarını intenetten bularak otomatik

olarak projeye yükler.

Linux işletim sistemi üzerinde kurulumu daha kolay olması sebebiyle bu platformda maven

kullanmayı denemeye karar verdim. Openjdk kullanan ubuntu için oracle sun jdk 7 indirdim ve

gerekli kurulumları yaptım.

Maven indirerek kurulumu tamamladım. Spring kullanımı için kolaylık sağlayacağını

düşündüğüm maven kullanımı ile ilgili basit bir örnek indirerek nasıl kullanıldığını anlamaya

çalıştım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 11: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Maven ile basit bir hello word uygulaması yazdım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 12: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

1.

Tarih

14/08/2013

Gün

3

Yapılan İş

Netbeans ide ile hazır gelen spring framework

kullanarak tomcat bağlantısı kurup java web

application yarattım ve Bir üye form sayfası

oluşturdum.

Ekip olarak window işletim sistemi kullanılması ve Windows server kullanılıyo olması

sebebiyle çalışmaya Windows üzerinde devam etmeye karar verdim. Önce eclipse enterprise

kullanarak dynamic web uyguması geliştirmeye çalıştım. Ancak maven kullanmakta biraz sorun

yaşadım ve eclipse maven desteklediği için, maven kullanmadan sprimg framework’ünü

kullanamadım.

Netbeansde spring framework’ünün maven’a ihtiyaç duymada otomotik olarak geldiğini ve

kullanılabildiğini öğrendim. Bunun üzerine daha önce de kullanmış olduğum ve alışık olduğum için

netbeans kullanmaya karar verdim. Yapacağım uygulamaların web tarafında olması sebebiyle bir

server’a ihtiyacım vardı. Bu sebeple Windows üzerinde Apache Tomcat server kurdum.

Tomcat indirerek arşivi c diskine yerleştirdim. Sonra sistem değişkenlerine JAVA_HOME

ve CATALINA_HOME değişkenlerini koyarak bu değişkenleri path’e ekledim ve tomcat serverı

çalışır hale getirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 13: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Netbeans ile birlikte bir spring projesi oluşturarak bu proşeyi tomcat servera bağladım ve ilk

hello world web uygulamasını oluşturdum.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 14: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Benden istenilen restoran rezervasyonu projesi ile ilgili ilk adım olarak projeyi oluşturarak

karar verilen ve üye formu olarak değerlendirilecek olan sayfanın basit bir şeklini yaptım.

.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 15: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

1.

Tarih

15/08/2013

Gün

4

Yapılan İş

Uzak masa üstü bağlantısı kullanarak sunucuya

bağlandım ve windows server 2012 üzerinde gerekli

kurulumları tamamladım.

Uzak masa üstü bağlantısını kullanarak benim için sunucu üzerinde açılan hesaptan Windows

server 2012’ye bağlandım.

Server üzerinde de gerekli kurulumları yapmam gerekti. Öncelikle jdk 7 yükledim. Daha sonra

netbeans IDE ve tomcat indirdim. CATALINA_HOME ve diğer değişkenleri path’a yerleştirdim ve

kendi bilgisayarımdakilerle aynı kurulumları gerçekleştirdim.

,

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 16: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Resroran rezervasyonu için RestaurantRes ismi ile bir proje oluşturarak bu projeyi tomcat server ve

postgreSQL database ile proje için açılmış olan database hesabına bağladım ve projeyi olurtururken

spring web mvc ve hibernate kullanımını işaretledim. Daha önce yapmış olduğum basit üyelik

formu jsp sayfasını bu projenin içine kopyaladım ve üzerinde biraz düzenlemeler yaptım.

HTML kodları kullanarak form düzenlemelerini gerçekleştirdim ve ilk giriş sayfası ile form

linkini bağladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 17: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

1.

Tarih

16/08/2013

Gün

5

Yapılan İş

HTML ve javascript kullanarak form sayfasında

düzenlemeler yaptım.

Üyelik formu üzerinde çalışarak newUser.jsp sayfası üzerinde bazı düzenlemeler yaptım.

Öncelikle css sınıf yapısını kullanatak düzensiz duran formu hizaladım. Daha sonra submit

button’unu aktif hale geçirmek için action kullanarak success isimli bir başka jsp sayfasına

açılmasını sağladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 18: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Ancak forma herhangibir veri girilmemesi durumunda da form submit edilebildiği için

javascript kodları kullanarak formun geçerliliğini kontrol etmem gerekti. Boş olması haricinde

girilen verinin geçerliliğini de kontrol etmem gerekiyordu. Örneğin tarih kutucuğuna geçersiz bir

veri girişi yapıldı ise bu kabul edilmemeli. Form yapısında onsubmit ile java script kodları ile

yazdığım isValidate() fonksiyonunu çağırılıyor ve bu çağırma submit butonu içine yerleştirdiğim

onclick ile submit butonuna basıldığı her defasında fonksiyonu tekrar çağırıyor.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 19: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Bunun yanında bazı hata mesajları eklemem ve bu hataların düzelmesi durumunda hata

mesajlarının silinmesi için javascript içerisine birtakım kontrol komutları yerleştirdim ve text

bölmesinin boş bırakılması durumunda ekranda uyarı mesajı verdi.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 20: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

1.

Tarih

17/08/2013

Gün

6

Yapılan İş

Hibernate hakkında bilgi topladım.Gerekli

methodların kullanımı üzerine çalıştım.

Daha önce database ile ilişkilendirmem gereken proje için hibernate kullanmaya karar

vermiştim. Hibernate’in ne olduğu ile daha derin bir araştırma yaptım. Yapısını ve nasıl

kullanıldığını öğrenmeye çalıştım ve örnek projeleri araştırdım.

Öğrendiklerim sonucunda hibernate’i kısaca şöyle açıklayabilirim:

Hibernate, java platformunda yazılmış bir ORM (Object/Relational Mapping) aracı. Nesne odaklı

dillerde nesnelerin ilişkisel veri tabanındaki kayıtlara nasıl karşılık geldiğini ifade eden bir araç ve

hibernate ile bir nesneyi veri tabanına kaydetmek, yeni halini güncellemek ve sorgulama yapmak

bildiğimiz SQL komutlarına göre çok daha kolay.

Örneğin;

stmt.executeUpdate( "INSERT INTO KAHVE VALUES ('Colombian', 101, 7.99, 0, 0)");

Burada, "KAHVE" tablosuna bir kayıt eklenmekte. Böyle bir işlemi Hibernate ile yapmak için:

session.saveOrUpdate(kahve);

Sonuç olarak hibernate kullanarak bir veri tabanını kontrol etmek çok daha kolay ve verimli

hale gelir. Hibernate kullandığım takdirde tek yapmam gereken veri tabanında yapılması gereken

değişikliklerde nesneler ve tabloların nasıl eşleştirildiğini(mapping) tanımlamak.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 21: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

19/08/2013

Gün

7

Yapılan İş

Hibernate kullanarak model ve controller paketlerinin

ve sınıf ne arayüzlerini oluşturdum. Database

oluşturdum.

Html web sayfalarını arayüz olarak oluşturduktan sonra projenin ana bileşeni olan spring

web mvc’ye yönelik olarak oluşturulması gerekli model ve controller bileşenlerini oluşturdum.

Öncelikle iş için gerekli olan tabloyu databasede oluşturdum. Sonra projeyi database ile birleştirip

projedeki objelerin veri tabanındaki nesnelere nasıl karşılık geldiğini ifade etmek için sınıfları ve

arayüzleri geliştirdim. Öncelikle model paketini ve objemin özelliklerini tanımlayan bir “User”

sınıfı yarattım her özelliği bir table kolonu oldoğunu ifade etmek amacıyla Spring framework ile

gelen “@Column” annotation’ının kullandım.

Sonra bu user nesnelerinin veri tabanındaki karşılıkları olarak “dao(data access object)”

paketi oluşturarak Spring framework’ün org.springframework.stereotype.Repository”

kütüphanesinde tanımlı ve “@Component” annotation’ının özel bir bileşeni olan “@Repository”

annotation’ının kullanarak oluşturduğum “UserDao” arayüzü ve ”UserDaoImpl” sınıfı ile bu

nesneye nasıl erişilebilindiğini tanımladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 22: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Daha sonrada hibernate özelliklerini kullanarak ekle,düzenle,sil gibi veri tabanı işlemlerini

nesne haritalama yöntemi kullanarak “service” ve “controller” paketlerinde oluşturduğum sınıf ve

ara yüzlerle tanımladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 23: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

20/08/2013

Gün

8

Yapılan İş

Model sınıfı ile database bağlantısı için gerekli

hibernate dosyalarını oluşturdum.

Hibernate bağlantı için bazı xml ve kurulum dosyalarına ihtiyaç duymakta. Öncelikle

database için gerekli kurulumları gerçekleştirdim ve veri tabanı ismi, veri tabanının bulunduğu url,

postgre için gerekli hibernate dialect ve driver class ile kullanıcı adı ve şifresi gibi.

Sonrasında hibernate dosyaları içinde bulunan hibernate mapping files and POJOs from

Database dosyasını veri tabanı üzerindeki user tablosunu işaretleyerek, table modeline uygun bir

model sınıfı oluşturdum ve bu modelin hbm.xml uzantılı dosyasını oluşturdum.Bu xml model

sınıfının veri tabanındaki tabloya nasıl karşılık geldiğini gösteren bir dosya.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 24: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Mapping ve pojoları rest isimli bir package içerisine yerleştirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 25: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

21/08/2013

Gün

9

Yapılan İş

Bağlantı için gerekli ayarlamaları tamamladım.

Spring servlet sınıfını düzenleyerek gerekli bean’leri

ekledim.

Database bağlantısı için lazım olan konfigürasyon dosyalarını düzenledim.Hibernate.cfg.xml

dosyası üzerinde daha önce gerçekleştirdiğim veri tabanı ile ilgili özellikleri değiştirdim ve bağlantı

driver sınıfı ile ilgili olabileceğini düşündüğüm için bazı değişiklikler yaptım.

Haritalamadaki bir eksiklik sebebiyle olduğunu düşündüğüm hatayı bulmaya çalıştım. Bazı beanleri

tekrar gözden geçirdim ve ekledim. DAO sınıfında gerçekleştirdiğim sessionFactory ile açılan ve

kapanan sessionları farklı yollardan ve sınıflardan çağırmayı denedim.

Burada gerçekleştirdiğim bazı işlemler için gerekli beanleri servlet sınıfına yerleştirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 26: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 27: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

22/08/2013

Gün

10

Yapılan İş

Eksik kalan bazı importları ve beanleri bulamadığı

kurulamayan form-veri tabanı bağlantısını düzeltmek

için projeyde hata aradım.

Projede bazı eksik sınıf tanımlamaları ile karşılaştım. Bazı kullanmam gereken metotlara ait

eksiklikler gözlemledim ve bunun birçok dosyada bulunması beni oldukça sıkıntıya soktu. Çünkü

proje düzgün çalışmamakla birlikte koyduğum log aslında bana veri tabanına veri kaydetmesi

gereken metotun içine hiç girmediğini gösterdi.

Bu metot gereğince projenin yapması gereken html sayfasında signup butonuna

tıklandığında metotu çağırması ve veri tabanına kayıt girmesi bekleniyor ancak koyduğum log bana

butona basıldığında metotun içine hiç girmediğini gösterdi ve ekranda beklediğim “burdayim”

yazısını göremedim.

Tahminimce haritalamadan kaynaklanan bir eksiklik sebebiyle karşılaştığım bu sorunu bulmak için

hata aradım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 28: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

23/08/2013

Gün

11

Yapılan İş

Eksik kalan jar dosyalarındaki hatayı gidermek için

maven ile oluşturulmuş olarak projeyi yeniden

düzenledim.

Projede eksik kalan bazı jar dosyaları sebebiyle hata vermesini engelleyemediğim için

maven tool kullanarak projeyi tekrar oluşturdum.ve gerekli dependencyleri ekledim.

Gerekli modele uygun olacak bir veri tabanı oluşturdum ve kolonları ve türlerini

tanımladım. Tablonun adı ve kolonların modeldeki ile birebir uyması gerekiyor ve veri tipinin de

benzer olması önemli. Bu yüzden tablo ismini modeldeki ile aynı olacak şekilde “user” ve kolon

isimlerini de obje değişkenleri ve değişken tipi ile aynı olacak şekilde tanımladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 29: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Ancak gene bazı sql hataları ile karşılaştım. Forum sayfasında yer alan select sorgusunu

çalıştıramadığı için hibernatin sql hatası verdiğini keşfettim. Ve “UserDAOImpl” sınıfında

bulunan şu kod parçacığını yeniden düzenledim. @Override

@Transactional

public List getAllUser() {

return session.getCurrentSession().createQuery("from user").list();

}

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 30: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Burada bulunan hibernate hsql kodu model sınıfının ismini baz alarak select sorgusu

çalıştırdığı için küçük harf olan “user” kısmını “User” olarak değiştirdim. @Override

@Transactional

public List getAllUser() {

return session.getCurrentSession().createQuery("from User").list();

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 31: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

2.

Tarih

24/08/2013

Gün

12

Yapılan İş

Sql hatası vermesi nedeniyle postgreye

bağlanamayan projeyi mysql server ile denedim ve

çalışır hale getirdim.

Proje nedenini anlayamadığım bir hibernate sql hatası verdi ve ben de problemin postgre

sqlden kaynaklanıyor olabileceğini düşünerek projeyi mysql ile bağlamaya karar verdim.

“StudentDB” adıyla mysql server ile bilgisayar localinde oluşturduğum, postgre sql üzerinde

yaptığımın aynısı olacak şekilde projedeki model yapıya uygun bir tablo oluşturdum.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 32: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Gördüm ki proje mysql üzerinde yapıldığı zaman hiç sorunsuz çalışıyor ve bunun sonucunda

sorunun hibernate ile postgre arasında olabilecek bir syntex bozukluğundan kaynaklanıyor

olabileceği sonucuna vardım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 33: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

3.

Tarih

26/08/2013

Gün

13

Yapılan İş

Projeyi postgresql ile düzgün çalışır hale getirdim ve

select insert sorgusu yapabilir hale geldi.

Projeyi mysql ile çalışır hale getirdikten sonra sorunun hinernate ile postgre arasındaki bir

format uyumsuzluğundan meydana geldiğini düşündüm. Bu sorunu çözmek için biraz araştırma

yapıktan sonra annotation kısmında girilen tablo ve kolon isinlerinin postgre tarafından

tanınabilmesi için escape karakter kullanılması gerektiğini öğrendim.

Daha önce @Coumn(name=”firstname”) şeklinde olan uyarı ifadesini escape karakteri

koyarak hinernate ve postgre arasındaki format uyuşmazlığını ortadan kaldırdım. Postgre sql tablo

ve kolon isinlerinin tırnak içerisinde olmasını istiyor ve java’da “ işaretini tanımlamak için escape

karakter kullanmak gerekiyor.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 34: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

3.

Tarih

27/08/2013

Gün

14

Yapılan İş

Web servisi yazmam istendi. JSON kullanarak web

servisi yazma üzerine çalıştım.

JSON bağımsız ancak C dili ailesinden olan C, C++, C#, Java, JavaScript, Perl, Python ve daha

başka bir sürü dillerle benzerdir.Bu özelliği JSON’ı ideal bir dil haline getirir.

JSON iki tip data yapısı üzerine kuruludur:

İsim/değer koleksiyonlarıdır. Değişik dillerde, bir obje, kayıt, yapı, sözlük, hash table ,

keyed list yada bir array olarak düşünülebilir.

Bir sıralı değerler listesidir. Bir çok dilde, dizin, vektör, liste yada dizi olarak değerlendirilir.

Bunlar evrensel data yapılarıdır. Öyle yada böyle modern programlama dillerine kadar her bir dil bu

yapıyı destekler.Programlama dilleriyle değişebilen yapılar, anlaşılabileceği gibi bu yapılarda da

bazı değişiklikler gösterebilir.

Aşağıdaki yapı bir JSON objesini ifade etmektedir:

{

"tip": "kitap",

"tur": "roman",

"urunler": [

{"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},

{"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},

{"ad": "Kavgam", "yazar": "Adolf Hitler"}

]

}

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 35: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

3.

Tarih

28/08/2013

Gün

15

Yapılan İş

Gerekli maven dependency’leri buldum ve onların

tanımlanabilmesi için gereken repository’i ekledim.

JSON kütüphanesini projede kullanabilmem için gerekli olan dependencyleri eklemem

gerekti ancak kullanmış olduğum spring framework ile versiyonu yüzünden uyumsuzluk içerisinde

olduğunu fark ettim. Öncelikle Spring Frameworkün versiyonunu üst seviyedeki bir başka sürüm ile

değiştirmem gerekti. Böylece Spring Framework’ü 3.2.2 sürümüne yükselterek spring ve json

arasında gerçekleşen uyumsuzluğu ortadan kaldırmış oldum.

Daha sonra JSON kullanabilir duruma geldim.

JOSN

kütüphanesinin

nasıl kullanıldığı

ile ilgili araştırma

yaptım ve

eklemem gereken bazı benler buldum böylece yazacağım kodlar bir JSON objesine dönüşebilecekti.

Ancak bulduğum kodlar benim istediğim işlevde çalışmadığı için kullanımını öğrenmek üzere

araştırma yapmaya devam ettim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 36: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

3.

Tarih

29/08/2013

Gün

16

Yapılan İş

Controller’da eklemem gereken annotation’ları

ekledim.

Methodların kullanımı ve JSON objesi oluşturma ile ilgili araştırmalarıma devam ettim ve

bana oldukça yardımcı olacak bazı bilgiler edindim. Bir metodun JSON objesine dönüşmesi için

gerekli olan bazı annotationlar ve bunların görevlerini buldum.

İşte Restful bir veb servisinin Sprimg mvc ile kullanımında gerekebilecek ve http message

converterların tanımlamalarından bazıları şöyle anlatılmış:

@Controller @Controller annotation’ı to MVC yapısında HTTP istekleri ile ilgilenmesi gereken sınıf

olduğunu tanımlamak için kullanılır.

@RequestMapping @RequestMapping annotation’ı http mesajı ile ilgilenecek olan metodun URI’sıdır yada

http başlığıdır.Bu annotation SpringRest yapısının anahtar işlemidir. Diğer http metodlarını

değerlendirenilmek için metodun parametreleri değiştirlenilir.

Örneğin:

@RequestMapping(method=RequestMethod.GET, value="/emps",

headers="Accept = application/json")

@PathVariable URI ‘da kullanılan path değişkeni in @PathVariable annotation kullanılarak bir parametre

değişkenine dönüştürülebilir.

Örneğin:

@RequestMapping(method=RequestMethod.GET, value="/emp/{id}")

public ModelAndView getEmployee(@PathVariable String id) { … }

Diğer kullanılabilecek annotationlar şu şekilde: @RequestParam bir URL parametresini metod değişkeni olarak dönüştürmek için

kullanılır.

@RequestHeader HTTP header ‘ını metod içerisie geçirebilmek için kullanışır.

@RequestBody HTTP talep yapısını metod içerine geçirebilmek için kullanılır.

@ResponseBody HTTP yanıtında dönecek olan yapının türünü belirtmek için kullanılır.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 37: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Örneğin:

public @ResponseBody Employee getEmployeeBy(@RequestParam("name")

String name, @RequestHeader("Accept") String accept, @RequestBody String body) {…}

public ResponseEntity<String> method(HttpEntity<String> entity) {…}

Ben de kendi kullandığım metod üzerinde annotationları şu şekilde kullandım:

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 38: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

3.

Tarih

31/08/2013

Gün

17

Yapılan İş

Hataların nedenini bulmaya çalıştım. Request body

için user nesnesi dönen bir method oluşturdum.

JSON objesi elde edebilmek için gerekli header ve annotationları kullanarak öncekinden

farklı olarak String değil bir User nesnesi dönen Controller sınıfı içerisinde bir metod oluşturdum.

Bu metod ile öğrendiğim bazı JSON annotationları kullanarak yazdım.

Bu method öncekinden farklı olarak bir string değil bir User objesi dönmeliydi.

Ancak metodun dönüş tipini User’a dönüştürmekte başarılı olamadım ve bazı hatalar ile karşılaştım.

JSON converterla ilgili olan bu hatayı gidermek için araştırmaya devam ettim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 39: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4.

Tarih

02/09/2013

Gün

18

Yapılan İş

Web servisini tamamladım. Controller sınıfı

içerisinde yazdığım metodlarla json objesi halinde

nesne yada nesne dizini elde ettim.

Springin MVC annotationını işler hale getirmek için eklemem gerekiyordu.

Bu annotationın birde bazı tanımlamalarını yapmam gerekti.

ve,

Daha sonra controller içerisinde şu metodu oluşturdum. Bu metod ile kullanıcının user idsini

kullanarak bu kişinin bilgilerini json formatında dönmesi gerekiyordu.

Buradaki @ResponseBody hangi tür yanıt döneceğini ifade etmekte ve burada bu bir User

objesi.

@RequestMapping ile URL içerisindeki {userId} değişkenini olarak kullandığımı ve

@PathVariable ile bu URL içerisindeki userId değişkenini metod içerisinde bir parametre olarak

kullandığımı ifade ediyor.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 40: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Ancak url içerisinde metodu çağırmak için .json uzantısı kullanmam gerektiğini keşfettim.

Ancak benim URL mapping’im web.xml dosyası içerisinde şu şekilde tanımı idi.

Ancak .json uzantısını da tanımlamam gerekiyordu.

Bu patetrni fark edip bunu dönüştürebilecek olan bir converter olmadığını ve headerların tek başına

yeterli olmadığını anladım. Böylece servlet içerisine genel bir JSON, XML ve diğer url tiplerini

fark edebilecek bir http url converter ekledim.

Ve sonunda JSON objesini elde etmeyi başardım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 41: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4.

Tarih

03/09/2013

Gün

19

Yapılan İş

Android ile activity-main.xml üzerinde layout’u

oluşturdum ve formun mobil tarafını basit bir şekilde

tamamladım.

Web servisi yazmayı tamamladıktan sonra projenin mobil tarafına yöneldim ve işin en

büyük kısmı olan mobilden web servise veri aktarımını gerçekleştirmek üzere android mobil

programlama dili kullanarak bir üyelik form sayfası oluşturmam ve buradan girilen verilerin web

servisi tarafından alınıp işlenerek veri tabanına aktarılması bekleniyordu.

İşe form sayfasını tasarlamakla başladım.Önce “RestaurantRes” adı ile bir android projesi

oluşturdum ve daha sonra main_activity.xml dosyası üzerinde üyelik formunu tasarladım. Linear

Layout, text View , Edit Text ve Button bileşenlerini kullanarak basit bir form tasarladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 42: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4.

Tarih

04/09/2013

Gün

20

Yapılan İş

Android client tarafında çalıştım ve RestClient sınıfı

yazdım.

Android mobil uygulama tarafında tasarlanan form üzerinden veri transferi

gerçekleştirmenin yollarını araştırdım. Öncelikle formda bulunan editText bileşenleri üzerinden

elde ettiğim textleri birer string haline getirdim. Ancak bu parametreleri ne şekilde web servisi

tarafına transfer edeceğimi tam olarak bilmiyordum. Bu sebeple transfer şeklinden önce benim için

gerekli olan url ile bağlantı açmam gerekti.

İlk olarak server tarafında yazdığım metodun url’sını kullanarak web servisine

bağlanabileceğim bir sınıf yazdım. Bu sınıf Apache http client kullanarak bağlantı işlemlerini

gerçekleştirebilmemi sağlayacak olan yapıydı. Daha sonra GET ve POST metodlarından hangisini

kullanırsam ona göre ayrı bir işlem yapan execute metodunu yazdım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 43: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4

Tarih

05.09.2013

Gün

21

Yapılan İş

Android projesinde giriş ve login sayfalarını

düzenledim ve aralarındaki geçişleri sağladım.

Layout xml dosyalarını ve Apache http client ile gerçekleştirilecek bağlantı işlerini sağlayan

sınıfı tanımladıktan sonra bu layout dosyalarının içeriğini ve client bağlantısını kullanan activity

sınıflarını oluşturdum. En başta tasarlamış olduğum form sayfası bu mobil uygulamanın bir parçası

olduğu için ilk açılan sayfanın form olmaması gerektiği için önce bir giriş sayfası tasarladım ve

internetten bulduğum bazı görsellerle daha etkileyici hale getirmeye çalıştım.

Bu açılış sayfasını ekranda kısa bir süre tuttuktan sonra asıl uygulama kısmına geçmesini

sağladım. Bu görsel giriş sayfasını 3 saniye ekranda kaldıktan sonra bir sonraki sayfaya geçecek ve

geri dönüşü engellemek için manifest dosyası içerisinde activity kısmına “no-

history=true” komutunu yerleştirerek oluşturdum ve süreyi ayarlamak için de thread kullandım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 44: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Giriş sayfasından sonra karşımıza gelen sayfayı login sayfası olarak tasarladım. Bu sayfanın

sadece form kısmına geçecek olan butonunu aktif hale getirdim ve “onClick” metodunu kullanarak

daha önce tasarladığım signup form sayfasını açacak şekilde işlev kazandırdım.

Projenin mobil tarafdaki asıl hedefim mobil ile yazmış olduğum web servisi arasındaki bağlantıyı

kurabilmek olduğu için daha çok bu form sayfası üzerinde yoğunlaştım.

Manifest dosyasını kullanarak bu activity sınıflarının hangisinin luncher olarak ve

hangilerinin default activity olarak gelmesi gerektiğinini tanımladım. Bu safyafal arasındaki

geçişleri saglamak için oluşturduğum activity sınıfları içerisinde intentler ile manifestteki activity

isimlerini kullanrak sağladım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 45: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4

Tarih

06.09.2013

Gün

22

Yapılan İş

Android client tarafında yapılacak işlemleri

gerçekleştirdim.

İlk önce yazmış olduğum apache http client kullanan RestClient sınıfı ile value pair

arraylerini kullanarak parametreleri web servisine aktarmayı düşünmüştüm ancak bikaç denemeden

sonra bunun o kadar basit olmadığını ve web servisinden gelecek cevabın iletimi ile ilgili sıkıntıları

nasıl gidereceğim hakkında bilgi sahibi değildim. Bu nedenle, bende parametreleri url üzerinden

server tarafında pathVariable annotation’ını kullanarak url path’inden çekebileceğime ve bu işlemin

diğer seçeneklere nazaran daha basit olacağına karar verdim.

Önce form sayfasından aldığım değişkenleri path olarak urlye ekledim. Yazmış

olduğum RestClient sınıfını kullanarak bir obje oluşturdum ve server tarafında map edilmiş olan

url’yi kullanarak web servisi ile bağlantı oluşturdum.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 46: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

4

Tarih

07.09.2013

Gün

23

Yapılan İş

Server tarafının android client tarafından gönderilen

kısmını nasıl değerlendirmesi gerektiğini tanımladım.

Web sayfası üzerinde validation ile ilgili ayrıntıları

düzenledim.

Client tarafında verileri url üzerinden göndermeye karar vermiştim. Bunun üzerine android

clientta yapmış olduğum http request için server tarafında bir metodun önceden basit bir şekliyle

oluşturmuş ancak tam olarak tanımlamamıştım.

Verileri url ile göndermeye karar verdikten sonra bunu server tarafında nasıl

değerlendirilmesi gerektiğini tanımladım. Yazdığım metoda pathdeki verileri birer parametre olarak

@PathVariable annotation’ı kullanarak kullandım ve metod içerisinde oluşturduğum yeni bir user

nernesine parametreleri atayarak bu user objesini veri tabanına kaydettim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 47: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Daha sonra, önceden de yapmış olduğum jsp sayfası üzerindeki formda gerçekleştirdiğim

validationları javascript kullanarak tekrarladım. Böylece kullanıcı form üzerinde boş alan

bırakamayacak, istenen veriye uygun veri girecek duruma geldi. Ayrıca birthdate bölmesinede bir

datepicker nesnesi korayak daha kullanışlı duruma getirdim.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 48: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

5

Tarih

09.09.2013

Gün

24

Yapılan İş

Bağlantıyı başarılı bir şekilde gerçekleştiremediğim

için farklı yöntemler deneyerek server ile bağlantı

kurmaya çalıştım. Projenin signup formunu çalışır

hale getirdim.

Server tarafında da, mobil uygulama tarafında da yapmam gereken bağlantıları tamamlamış

olduğu düşünerek projeyi çalıştırmayı denedim fakat her seferinde bana aynı hatayı verdi ve verdiği

hata main thread içerisinde fazla işlem yapıldığı ve thread’in durdurulduğuyla ilgiliydi, ki bunun ne

anlama geldiğini bulmak için aynı işlemi farklı kod parçalı ile değişik şekillerle gerçekleştirdikten

sonra karşıma çıkan sonuçlara ve araştırmalarıma dayanarak bana gerekli olan şeyin aslında android

mobil uygulamalarda sıkça kullanılan asyntask yöntemi olduğunu öğrendim ve formun activity

sınıfı içerisinde ayrıca şöyle bir sınıf tanımladım:

Daha sonra bu sınıfı kullanmak için man activity de daha önce RestClient sınıfını çağırdığım

yerde bu işlemleri myAsynTask sınıfını yaptırarak sadece bu sınıfı çağırarak thread problemini

çözmüş oldum.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 49: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Hafta

5

Tarih

10.09.2013

Gün

25

Yapılan İş

Signup formu ile yaptığım işlemin benzerini sign in

kısmı için gerçekleştirdim.

Sign up formu çalışır hale getirdim ancak tek bir sorun vardı. O da formun boş

gönderilmemesi gerekliliği çünkü formun boş gönderilmesi halinde benim url yoluyla göndermeye

çelıştığım parametreler null oldukları için boş gitmekte ve parametreler arasındaki “/ ” path

ayırmakta kullandığım slash karakteri arka arkaya gelerek sorun çıkartıyordu ve girilen url

bulunamıyordu.

Bu problemi daha sonra gerçekleştirmek için bir kenara bırakarak sign up formu için

gerçekleştirdiğim işlemin benzerini Sign in sayfasındaki üye girişi kısmı için de gerçekleştirdim.

Burada da bir asynTask sınıfı yaratarak bir başka http client çağrısı ile server bağlantısı

gerçekleştirmeye çalıştım. Android mobil uygulama tarafında gerçekleştirdiğim bu işlemin doğru

olduğunu düşünerek server tarafında çalıştım. Ancak mail adresini kullanarak kullanıcı girişi

yapmaya çalıştığım işlemde kullanıcının id üzerinden bulunması gibi bir sorun olduğu için email

kullanarak bu kullanıcının id’sini bulmaya yarayan bir metod yazdım ancak veri tabanında veriyi

çekmekte bazı sorunlar yaşadım.

Öğrencinin Adı, Soyadı, İmzası : ……………………………………….

İşyeri Stajyer Sorumlusunun Onayı (İmza, Mühür) : ……………………………………….

Page 50: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

Öğrencinin,

Adı :Emine Begüm

Soyadı :Tansal

Numarası :

Bölümü :Bilgisayar Mühendisliği

(Bu Kısım Staj Komisyonu Tarafından Doldurulacaktır)

Öğrencinin Stajı Hakkında Düşünceler:…………………………………………...................

………………………………………………………………………………………………..

………………………………………………………………………………………………..

………………………………………………………………………………………………..

Yukarıda kimliği belirtilmiş öğrencinin …………………dönemi stajı, RED

KABUL edilmiştir.

Tarih :

Staj Komisyonu:

Üye Üye Başkan

T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Page 51: T.C. KADİR HAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ... · STAJ DEFTERİ Öğrencinin Fakülte Numaras ... kullanıldığını öğrenmeye çalıtım ve örnek projeleri aratırdım

T . C . K AD İ R HAS

Ü N İ V E RSİ T ESİ

Adres:

Kadir Has Üniversitesi, Mühendislik Fakültesi

Cibali Kampüsü Fatih Haraçcı Karamehmet Mah. Hisaralti Cad. 34230 Fatih/İSTANBUL

Tel: (0212) 533 65 32, dahili:1402 Fax: (0212) 533 57 53