19 Şubat 2015 Perşembe

Yazılım Sektörüne Yeni Başlayanların Dikkat Etmesi Gereken Noktalar!

     Arkadaşlar uzun zaman olmuştu bir şeyler karalamayı başlığımızın 5. maddesini karalamanın vakti gelmiş. Arkadaşımın isteği üzerine 5ten başlıyoruz. Bunlar benim kısa zamanda gördüğüm ve dikkate aldığım noktalar işinize yarayacağını umuyorum. Yazılım sektörüne yeni başlayanlar için bir şeyler karalayacağımızı söylemiştik bunların başında daha yeni sektöre giren öğrenci arkadaşlarımız için gelsin.
     Arkadaşlar şuanda daha yolun çok başındasınız biliyorum öğrencilik hayatı çok güzel bunu en güzel şekilde yaşayan öğrencilerden biri olmuşumdur.
     Fakat öğrencilikte bir yerekadar olmalı bilgisayar müh. veya yazılım okuyan arkadaşlarıma en azından son iki yıllarında proje bazlı olarak çalışmalarını öneriyorum. Son iki yılda yazılımın hangi tarafında yer alcağınızı kestirmeniz gerçekten de zor olabilir ama bir yerlerden başlamak yola girmek gerekir.Bu yolda yürüyecek seniz ve bu yoldan hayatınızı geçindirmeyi düşünüyorsanız sevdiğim birinin bana dediği gibi "Parmak klavyeye deyecek." evet doğru söz. Hocalarımız anlatmıyor diye üzülmeyin internette yeterince kaynak mevcut kendinize güvenin yeter.
     Son iki yılınızda yaptığınız projeleriniz sizin gelecek yıllarda neler yapabileceğinizi ve bu yolda daha hızlı adımlarla yürüyebilmenizi sağlayacaktır. Evet birde staj olayları var arkadaşlar stajlarınızı kendiniz isteyerek yapmanız her şeyden daha önemlidir. Kurumsal olmuş veya olmamış(tabi ki bazı şirketleri ayrı bir kenarda tutuyoruz) çok ta önemli değil önemli olan sizin neler yapacağınızdır. Staj sırasında soru sormaktan görev almaktan hiç mi hiç çekinmeyin.( soru konusunda ben tam olarak bunu yapamamıştım) Sorun araştırmalar yapıp kafanıza takılan her şeyi sorun kimse size sormadan bir şeyler anlatmaz hatta ki sorduğunuz zaman dahi karşınıza bildiklerini paylaşmayan insanlar çıkacaktır. Aldırmayın böyle insanlar her yerde var siz sadece işinize konsantre olun ve yapmanız gerekenleri yapın.Göreceksiniz bir yerden sonra işler yoluna girecektir bir kaç ay sabret ve çalış. Ama öyle bir iki ay ile pes etmek yok!
     Öğrencilik hayatımda iyi ki yapmışım dediğim olayların başında erasmus var yapabiliyorsanız bence yapın sizlere çok önemli deneyimler kazandıracaktır.(Teknik açıdan çok fazla bir şey beklemeyin)
    Eveet şimdi geldik erkek arkadaşlar için dananın kuyruğunun koptuğu noktaya. Arkadaşlar askerlik bildiğimiz üzere sıkıntılı bir mevzudur sizlere tavsiyem ya kararlı ve planlı bir şekilde erteletin yada mezun olduğunuz zaman hemen askerlik işini aradan çıkarın. Unutmayın eğer ki planlı bir şekilde ertelemezseniz bu her zaman önünüzde ki bir engel olacaktır.
     Simdi de son olarak sektörde işe yeni başlayan arkadaşlara bir kaç önerimiz olacak. Arkadaşlar açıkçası hangi üniversiteden hangi puanla mezun olduğunuzun sektörde pek bi önemi yok. Adamlar iş yapan eleman arıyorlar. Proje bazlı çalışan takıma uyum sağlayabilen verilen projeleri zamanında bitirebilen ve daha önemlisi kendini geliştirebilen kişileri tercih ediyorlar.Benim size önerim öncelikle yeni işe başlıyorsanız eğer PM(project manager/proje yöneticiniz) sizin çok fazla bir şey bilmediğinizin veya ne kadar bildiğinizin farkında olacaktır, fakat sizden yinede kendinizi geliştirmeniz için ve proje için güzel şeyler isteyebilir. Burada yapmanız gereken araştırmak ve sizin üstünüzde yer alan arkadaşlarınıza veya PM danışmak olacaktır. Dediğim gibi unutmayın  SORU SORMAKTA çekinmek yok! Eğer ki işe yeni başlayan arkadaşlarınızda varsa onlarla birlikte aktif bir çalışma yürütün.
     Kendinizi belli bir konuda uzmanlaştırır iken aynı zamanda başka konular da da hobiler edinin her zaman makaleler ve kitaplar okuyun aynı zamanda blogları ve güzel sayfalarıda takip ediniz. Özellikle internetteki WEBINERleri kaçırmadan izleyin. Bunlar sizleri daha profesyonel adımlarla ilerlemeniz de yardımcı olacaktır.
https://www.khanacademy.org/contribute
https://www.udemy.com/
https://www.acikakademi.com/portal/default.aspx
https://muratbaseren.wordpress.com/tag/murat-baseren/
http://www.buraksenyurt.com/
    Unutmayın ki bir işe inanmak yarısı başlamakta diğer yarısıdır. Evet bize de bir şey kalmıyor bundan sonra :) Umarım keyif almışsınızdır hoşçakalın :)
                                                                                                                             Şahin YARAL
 

18 Şubat 2015 Çarşamba

Tecrübe Nedir?

Lawrence Ellison Yale Üniversitesi mezunlarına düşündüren nasihatı:

Amerikan üniversitelerinin kendi alanında sivrilmiş önemli bir ismi mezuniyet konuşması yapmak için davet ettiği güzel bir geleneği vardır. Bu yıl, ünlü Yale ünivesitesi, konuşma yapmak üzere Oracle bilgisayar şirketinin kurucusu ve genel müdürü Larry Ellison’ı davet eder. Ancak Ellison öyle bir konuşma yapar ki herkes şok olur:
“Yale ünivesitesi mezunları, daha önce böyle bir giriş görmediğinizi tahmin ediyorum ama benim için bişey yapmanızı istiyorum. Lütfen, etrafınıza iyice bakın. Solunuzdaki, sağınızdaki sınıf arkadaşlarınıza bakın. Ve şimdi şunu aklınıza koyun: Bundan 5 yıl, 10 yıl hatta 30 yıl sonra solunuzdaki kişi hiçbir şeyi başaramamış olacak. Sağınızdaki de öyle. Ve siz, ortadaki? Ne bekliyorsun? Siz de başaramayacaksınız.
Başaramayacaksınız!
Aslında bugün şöyle etrafıma baktığımda parlak bir gendüstride liderliği ele geçirecek bir gelecek göremiyorum. Görebildiğim tek şey, başarısızlık. O kadar. Sinirlendiniz. Bu anlaşılıyor.
Ben, Lawrence Ellison, üniversite terk, kim oluyorum da ülkenin en prestijli okulunun bu yılki mezunlarına böyle şeyler söyleyebiliyorum?
Bu yetkiyi nerden aldığımı söyleyeyim:
Çünkü ben, Lawrence Ellison, üniversite terk ve dünyanın en zengin ikinci adamıyım, Siz değilsiniz.
Çünkü, Bill Gates, o da üniversite terk ve dünyanın şimdilik en zengin adamı, Siz değilsiniz.
Çünkü, Paul Allan, o da üniversite terk ve dünyanın en zengin üçüncü adamı, Siz değilsiniz.
Başka örnekler de var. Mesele Michael Dell, o listede 9 numara ve yukarı doğru hızla tırmanıyor, o da üniversite terk. Ve siz o listede hala yoksunuz. Hımm.. Şimdi çok kızdınız.. Bu da anlaşılabilir. O halde biraz gururunuzu okşamama izin verin.
Pek çoğunuz burada 4 – 5 yıl eğitim gördünüz geleceğe yönelik bilmeniz gereken çok şeyi öğrendiniz. İyi çalışma alışkanlıkları edindiniz. Burada hayatınızın geri kalan kısmında size yardımcı olacak bir sürü insan tanıdınız, onlarla ağlantı kurdunuz. Ve Hayatınız boyunca yanınızdan ayrılmayacak bir kavramla güçlü bir ilişkiniz oldu: TERAPİ.
Bunların hepsi güzel şeyler. Gerçekten kurduğunuz arkadaşlıklara, çalışma alışkanlıklarına, en çokta Terapi’ye ihtiyacınız olacak hayat boyu. Çünkü üniversiteyi terk etmediniz. Dolayısıyla, asla dünyanın en zengin insanları arasına katılamayacaksınız.
Elbette listeye 10 ve ya 11. sıradan, Microsoft yöneticisi Steve Ballmer gibi girebilirsiniz. Ama herhalde onun, kimin için çalıştığını söylememe gerek yok, değil mi? Sadece kayda geçsin diye söylüyorum, o da zaten mastırdan terk. Biraz geç kalmış anlayacağınız.
Son olarak herhalde bazılarınız ya da umarım çoğunuz kendi kendinize yapabileceğim bir şey var mı? Diye soruyorsunuz.
Maalesef hayır. Geç kaldınız. Beyninize çok şey dolduruldu, siz onlara bakıp bir şeyler bildiğinizi sanıyorsunuz. Artık 19 yaşında değilsiniz. Eveeet şimdi gerçekten çok kızdınız. Belki de şu an, size bir umut ışığı vermenin tam zamanıdır.
Hayır, 2000 mezunları değil, Siz kaybettiniz. Sizi yılda 200 bin dolarlık komik maaş çeklerinizle baş başa bırakıyorum. Üstelik çekinin üstünde sizden birkaç yıl önce okulu terk etmiş birinin imzası olacağını söyleyerek.
Öğütlerim size değil daha alt sınıflara..
Size söylüyorum: Hemen ayrılın. Bir kez daha vurgulamak istiyorum: AYRILIN. Hemen toplayın eşya ve fikirlerinizi ve bir daha da geri dönmeyin. Her şeye yeniden başlayın.
Size söyleyebileceğim tek şey, o başınızdaki kepler ve üstünüzdeki kıyafetin sizi aynen şu güvenlik görevlilerinin beni kürsüden aşağı çektiği gibi aşağı çektiği..”
Ve kürsüden indirilir. 


(http://ikarhan.com)

Buda geçer Ya Hû

"Buda geçer Ya Hû"

Dervişin biri, uzun ve yorucu bir yolculuktan sonra bir köye ulaşır. Karşısına çıkanlara kendisine yardım edecek, yemek ve yatak verecek biri olup olmadığını sorar. Köylüler kendilerinin de fakir olduklarını, evlerinin küçük olduğunu söyler ve Şakir diye birinin çiftliğini tarif edip oraya gitmesini tavsiye ederler.
Derviş yola koyulur,birkaç köylüye daha rastlar.Onların anlattıklarından Şakirin bölgenin en zengin kişilerinden biri olduğunu anlar. Bölgedeki ikinci zengin ise Haddad adında başka bir çiftlik sahibidir.
Derviş Şakir’in çiftliğine varır. Çok iyi karşılanır, iyi misafir edilir, yer içer, dinlenir. Şakir de aileside hem misafirperver hem de gönlü geniş insanlardır…
Yola koyulma zamanı gelip Derviş, Şakir’e teşekkür ederken, “Böyle zengin olduğun için hep şükr et.”der. Şakir ise şöyle cevap verir: “Hiçbir şey olduğu gibi kalmaz. Bazen görünen gerçeğin ta kendisi değildir. Bu da geçer…”
Derviş Şakir’in çiftliğinden ayrıldıktan sonra bu söz üzerine uzun uzun düşünür. Bir kaç yıl sonra dervişin yolu yine aynı bölgeye düşer. Şakir’i hatırlar, bir uğramaya karar verir. Yolda rastladığı köylüler ile sohbet ederken Şakir den söz eder. “Haa o Şakir’mi” der köylüler, “O iyice fakirledi, şimdi Haddad’ın yanında çalışıyor.”
Derviş hemen Haddad’ın çiftliğine gider, Şakir’i bulur. Eski dostu yaşlanmıştır, üzerinde eski püskü giysiler vardır. Üç yıl önceki bir sel felaketinde bütün sığırları telef olmuş, evi yıkılmıştır. Toprakları da işlenemez hale geldiği için tek çare olarak selden hiç zarar görmemiş ve biraz daha zenginleşmiş olan Haddad’ın yanında çalışmak kalmıştır. Şakir ve ailesi üç yıldır Haddad’ın hizmetkarıdır.
Şakir bu kez Derviş’i son derece mutevazi olan evinde misafir eder. Kıt kanaat yemeğini onunla paylaşır… Derviş vedalaşırken Şakir’e olup bitenlerden ötürü ne kadar üzgün olduğunu söyler ve Şakir’den şu cevabı alır: Üzülme… Unutma,bu da geçer…”
Derviş gezmeye devam eder ve yedi yıl sonra yolu yine o bölgeye düşer. Şaşkınlık içinde olup biteni öğrenir. Haddad birkaç yıl önce ölmüş, ailesi olmadığı içinde bütün varını yoğunu en sadık hizmetkarı ve eski dostu Şakir’e bırakmıştır. Şakir Haddad’ın konağında oturmaktadır, kocaman arazileri ve binlerce sığırı ile yine yörenin en zengin insanıdır.
Derviş eski dostunu iyi gördüğü için ne kadar sevindiğini söyler ve yine aynı cevabı alır: “Bu da geçer…”
Bir zaman sonra Derviş yine Şakir’i arar. Ona bir tepeyi işaret ederler. Tepede Şakir’in mezarı vardır ve taşında şu yazılıdır: “Bu da geçer…”
Derviş, “ölümün nesi geçecek?” diye düşünür ve gider. Ertesi yıl Şakir’in mezarını ziyaret etmek için geri döner; ama ortada ne tepe vardır nede mezar. Büyük bir sel gelmiş,tepeyi önüne katmış, Şakir’den geriye bir iz dahi kalmamıştır…
O aralar ülkenin sultanı, kendisi için çok değişik bir yüzük yapılmasını ister. Öyle bir yüzük ki, mutsuz olduğunda umudunu tazelesin, mutlu olduğunda ise kendisini mutluluğun tembelliğine kaptırmaması gerektiğini hatırlatsın… Hiç kimse Sultanı tatmin edecek böyle bir yüzük yapamaz. Sultanın adamları da bilge Derviş’i bulup yardım isterler.
Derviş, Sultanın kuyumcusuna hitaben bir mektup yazıp verir. Kısa bir süre sonra yüzük Sultan’a sunulur. Sultan önce bir şey anlamaz; çünkü son derece sade bir yüzüktür bu. Sonra üzerindeki yazıya gözü takılır, biraz düşünür ve yüzüne büyük bir mutluluk ışığı yayılır: “Bu da geçer” yazmaktadır.
‘Buda geçer Ya Hû’ sözünün aslı bundan bin küsür sene önceye , Bizans dönemine uzanır. Bizanslılar fena bir işe uğradıkları zaman ‘Buda geçer’ manasına gelen ‘k’afto ta perasi’ demektedirler. İbare Selçuklular zamanında İran taraflarına geçer; ama Farsçalaşıp ‘in niz beguzered’ olur. Osmanlılar devrinde Türkçe söylenip ‘bu da geçer’ yapılır. Derken tekkelerde ve dergâhlardada benimsenir ve sonuna ‘Ya Allah’ manasına gelen bir ‘Ya Hû’ ilave edilip ‘BU DA GEÇER YA HÛ’ haline gelir…
Hayat inişli çıkışlıdır.Her zaman bulunduğumuz durumun gelip geçici olabileceği aklımızdan çıkmamalıdır.
http://ikarhan.com/2012/12/bu-da-gecer-ya-hu/

SQL Nedir? T-SQL Nedir?

     SQL, Ingilizcesi Structured Query Language olan, Türkçe olarak Yapılandırılmış Sorgu Dili anlamına gelen veritabanları üzerinde sorgulama yapmamızı sağlayan standartlaşmış bir sorgu dilidir. IBM tarafından 1975 yılında geliştirilmiştir. Veritabanı ile kullanıcı arasındaki bağlantıyı sağlar. Sql kullanarak bizler hazırladığımız sorgular ile veri tabınında ki verilerimiz üzerinde istediğimiz işlemleri yapabiliriz. Standartlaşmış bir sorgu dili olduğu için bütün gelişmiş veritabanı uygulamalarında kullanılmaktadır.
     T-SQLTransact SQL adi verilen Sqlin microsoft tarafından geliştirilen Microsoft SQL Server üzerinde kullanılan bir sql sürümüdür diyebiliriz. Sql server üzerine eklentiler ve bazı fonksiyonlar eklenerek daha performanslı hale getirilmesi sağlanmıştır.
     Üç farklı ifade tipi bulunmaktadır.

  • Veri Tanımlama Dili (Data Definition Language)
  • Veri Kontrol Dili (Data Control Language)

  • Veri İşleme Dili (Data Manipulation Language)    

  •      Veri Tanımlama Dili (Data Definition Language)(DDL)
         Veri tabanında nesneler üzerinde işlemlerimizi yapmamızı sağlayan ifadelerdir. Veritabanı,tablo gibi nesneler oluşturma güncelleme silme işlemlerini yapmamızı sağlar.Üç adet veri tanımlama ifadesi bulunmaktadır.

    1. CREATE-Nesne oluşturma
    2. ALTER-Nesne üzerinde düzenleme
    3. DROP-Var olan bir nesneyi silme
    Örneklerimizi bir sonraki adımda ayrıntılı olarak paylaşacağım konumuza devam edelim :)

         Veri Kontrol Dili (Data Control Language)(DCL)
         Bir veritabanı kullanıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar. Üç adet veri ifadesi  bulunmaktadır.   
    1. GRANT :     Kullanıcımıza veritabanına erişimi veya t-sql komutlarını çalıştırabilme yetkisini verir.
    2. DENY :        Kullanıcı veya rolü herhangi bir eylemi yapmasını engellemek için kullanılır.
    3. REVOKE :  Daha önceden Grant veya Deny ile verilen yetki veya engellerimizi kaldırmamızı sağlar. 


         Veri İşleme Dili (Data Manipulation Language) (DML)
         Veritabanı içerisindeki veriler ile işlem yapmamızı sağlayan komutlar. Verilerin gösterilmesi eklenmesini düzenlenmesini ve silinmesini sağlar. Dört adet veri işleme ifadesi bulunmaktadır.

    1. SELECT  :Veri seçme 
    2. INSERT   :Veri ekleme
    3. UPDATE :Veri düzenleme
    4. DELETE :Veri silme

    Bir sonraki yazımızda anlattığımız ifadelerin ve sıkça kullanılan komutların örneklerini(sıralama gruplama join...) inceleyeceğiz. İyi çalışmalar diliyorum :)

    SQL T-SQL Sorguları1

       Veri Tanımlama Dili (Data Definition Language)(DDL)


  • CREATE-Nesne oluşturma
  • ALTER-Nesne üzerinde düzenleme
  • DROP-Var olan bir nesneyi silme

  •    Bir otomasyon sisteminin (hekimlik) veritabanının sadece kod yazarak örnek veri ile oluşturabileceğimiz şeklinde ilişkileri ile kodlayacağız. F5 'e basıldığında tablolar, ilişkiler ve örnek veriler oluşacak en son işlem olarak select ile bunlar gösterilecek !!

    USE MASTER
    GO
    DECLARE @dbname nvarchar(128)
    SET @dbname = N'Hekimlik'

    IF (EXISTS (SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE ('[' + name + ']' = @dbname 
    OR name = @dbname)))
    Begin
    PRINT 'Veri tabani mevcut' 
            ALTER DATABASE Hekimlik SET SINGLE_USER WITH ROLLBACK
    IMMEDIATE
     
    DROP DATABASE Hekimlik
    PRINT 'Mevcut veri tabanı kaldırıldı'
      
    end
    CREATE DATABASE Hekimlik
    PRINT 'Yeni veri tabani olusturuldu'
     
    USE Hekimlik
    go

    create table Yetkili
    (
    Id int identity(1,1) not null primary key,
    YetkiIslemAd nvarchar(20) not null
    )
    insert into Yetkili values('Admin')
    insert into Yetkili values('User')
    PRINT 'Yetkili tablosu olusturuldu deger girildi'
    create table Yetki
    (
    Id int identity(1,1) not null primary key,
    YetkiAd nvarchar(20) not null
    )
    insert into Yetki values ('Randevu Al')
    insert into Yetki values ('Randevu Iptal')
    insert into Yetki values ('Kasa')
    insert into Yetki values ('Dis takip')
    PRINT 'Yetki tablosu olusturuldu deger girildi'

    create table YetkiliYetki
    (
    Id int identity(1,1) not null primary key,
    YetkiliId int  foreign key references Yetkili(Id) not null,
    YetkiId int  foreign key references Yetki(Id) not null
    )
    PRINT 'YetkiliYetki tablosu olusturuldu '
    insert into YetkiliYetki values(1,1)
    insert into YetkiliYetki values(1,2)
    insert into YetkiliYetki values(1,3)
    insert into YetkiliYetki values(1,4)
    insert into YetkiliYetki values(2,1)
    insert into YetkiliYetki values(2,2)
    insert into YetkiliYetki values(2,4)
    PRINT 'YetkiliYetki tablosu degerleri girildi '
    create table Kullanici
    (
    Id int identity (1,1) not null primary key,
    YetkiliId int foreign key references Yetkili(Id) not null,
    Ad nvarchar(20) not null, 
    Soyad nvarchar(20) not null,
    Sifre nvarchar(8) not null,
    Durum bit not null
    )
    PRINT 'Kullanici tablosu olusturuldu '
    insert into Kullanici values(1,'sah','yaral','123',1)
    insert into Kullanici values(1,'saf','yaral','123',2)
    PRINT 'Kullanici tablosu degerleri girildi '

    create table Musteriler
    (
    Id int identity (1,1) not null primary key,
    Ad nvarchar(20) not null,
    Soyad nvarchar(20) not null,
    Tel nvarchar(11) not null,
    Email nvarchar(20),
    Adres nvarchar(250) 
    )
    insert into Musteriler values('Msahin','Myaral','01232121244','emailadresi','izmir bergama')
    insert into Musteriler values('Msafak','Myaral','01232121255','emailadresi','izmir bergama')
    PRINT 'Musteri tablosu olusturuldu degerler girildi '
    create table Hekim
    (
    Id int identity(1,1) not null primary key,
    Ad nvarchar(20) not null,
    Soyad nvarchar(20) not null,
    Tel nvarchar(11) not null,
    Email nvarchar(15) ,
    Adres nvarchar(250)
    )
    insert into Hekim values('Hsahin','Hyaral','01232121233','emailadresi','izmir bergama')
    insert into Hekim values('Hsafak','Hyaral','01232121266','emailadresi','izmir bergama')
    PRINT 'Hekim tablosu olusturuldu degerler girildi '

    create table Randevu
    (
    Id int identity(1,1) not null primary key,
    KullaniciId int foreign key references Kullanici(Id) not null,
    MusteriId int foreign key references Musteriler(Id) not null,
    HekimId int foreign key references Hekim(Id) not null,
    Tarih datetime not null,
    Aciklama nvarchar(250) not null

    )
    PRINT 'randevular tablosu olusturuldu '
    insert into Randevu values(1,1,1,GETDATE(),'birinci must birinci hekim ilk randevumuz')
    insert into Randevu values(2,2,2,'2015-04-12T00:00:00.000','ikinci musteri ikinici hekim ikinci randevumuz')
    insert into Randevu values(1,1,1,'2015-05-12T00:00:00.000','birinci musteri birinci hekim ucuncu randevumuz')
    PRINT 'randevular tablosu degerleri girildi '

    create table Muayene
    (
    Id int identity (1,1) not null primary key,
    HekimId int foreign key references Hekim(Id) not null,
    RandevuId int foreign key references Randevu(Id) not null,
    Tarih datetime not null, --randevu tarihi gelcek default deger olarak
    Ucret money not null,
    Kdv money not null,
    Iskonto int,
    Aciklama nvarchar(250)
    )
    insert into Muayene values(1,1,'02.04.2010',250,18,5,'birinci must ilk muayenemiz')
    insert into Muayene values(2,2,'02.04.2010',100,18,0,'ikinci musteri ikinci muayenemiz')

    --select * from Yetkili
    --select * from Yetki
    --select * from Hekim
    --select * from Randevu
    --select * from Muayene
     

    SOLID Prensipleri (SOLID Principles)

    OOP(Object Oriented Programming) Gerçek anlamda Nesne yönelimli programlama yapabilmek için SOLİD prensiplerine uygun olarak projemizi geliştirmemiz gerekmektedir.  Eğer bu prensiplere uygun olarak projemizi geliştiriyorsak gerçek manada nesne yönelimli programlama yapıyoruz diyebiliriz. Esnemezlik Kırılganlık ve Sabitlik sorunlarının çözümü için ortaya çıkmıştır.
    Esnemezlik: Kullanilan tasarımın geliştirilememesi ve eklemelerin yapılamıyor olmasi
    Kırılganlık: Projemizin bir modülünde yaptığımız değişiklik diğer modüllerde hatalara yol acması
    Sabitlik: Yazılan modülün farklı yerlerde tekrardan kullanılamamasıdır.

    1.S   - Single Responsibility Principle
    2.O  -Open/Closed Principle
    3.L   -Liskov’s Subsitution Principle
    4.I    -Interface Segregation Principle
    5.D   -Dependency Inversion Principle

    Şimdi her bir prensibin ne anlama geldiğini açıklayalım.
    1.       Single Responsibility Principle
    Her modülün(method,nesne..) tek bir görevi ve tek bir sorumluluğu olma zorunluluğudur. Yani her bir nesne proje içerisinde bir görev almalıdır. Sadece o görev değişikliği sırasında nesnemizi değiştirmeliyiz eğer başka bir nedenden dolayıda bir değişiklik yapıyorsak bizim birinci kuralımıza uymayan bir kullanım söz konusudur diyebiliriz.

    2.       Open/Closed Principle
    Projemizde kullandiğimiz modüllerimizin değişime kapalı fakat gelişime açık olmalıdır. Örneğin projemizin ikinci bir sürümünü yapıyoruz ve bizden bir modülde ek bir kaç özellik daha eklememizi istediler. İşte bu durumda biz modülümüzün sadece belli bir kısmına dokunur ve onu geliştirebildiysek O/C prensibine uygun davranmiş oluruz. Fakat biz bu eklemeyi modülde çoğu yerde değişiklik yaparak yapıyorsak projemiz O/C prensibine uygun değildir diyebiliriz.

    3.       Liskov’s Subsitution Principle
    Solid prensiplerinin içerisinde daha karmaşık olarak gorunen iki prensipten biridir. Amacımız turettiğimiz nesnelerimizin tum alt sınıf örnekleri aynı davranisi göstermesidir.Diğer bir deyişle türüyen sınıfın nesneleri temel sınıfın nesneleri ile yer değiştirebiliyor olmasıdır.

    4.       Interface Segregation Principle
    Solid prensipleri içerisinde karmaşık olarak görülen diğer prensiptir.
    Gokhan hocamizin dediği gibi: “ ilgili bağımlı nesnelerin örneklenmesi görevi ayrık bir bileşene(Component) veya Framework’e verilir. Bu sayede bağımlı nesnelerin üretilip controller’a  enjekte edilmesi sağlanır.” Yani benzer özellikleri olan sınıfları bir interface altında topladıktan sonra bu sınıflardan bazılarını kesin olarak kullanmıyorsak bu yanlış kullanım şeklidir. Kesin olarak kullanmıyorsak biz bunlarıda kesin olan en küçük parcacıklara ayrıştırmalıyız.

    5.        Dependency Inversion Principle
    Somut sınıflarımıza olan bağımlılıklarımızı soyut sınıflar kullanarak aradaki bağı kırmamızdır. Diğer bir deyişle yüksek seviyeli sınıflar düşük seviyeli sınıflara direkt olarak bağımlı olmamalıdır. Bağımlılığı kırmak için arada soyut sınıflara bağlamamız gerekir.

    Kaynaklar:  
                                                                                                                  
                                                                                          Şahin YARAL





    9 Şubat 2015 Pazartesi

    TFS(Team Foundation Server) Nedir?



    Team Foundation Server, daha çok kurumsal projeler için tasarlanmış, projede çalışan takım arkadaşlarının iletişimi ve işin işleyişini izleme açısından aynı zamanda her bir personelin yönetimi, çalışmasını performansını görebilmemizi sağlayan Microsoft ürünüdür.
    Asıl amacı işbirliğini saplamak ve ürün gelişimini kolaylaştırmaktır. Tfs ile birlikte ortak serverda tutulan projeye tüm proje çalışanları erişebilir ve projenin kendisine ait olan kısmını geliştirip tekrardan server a yükleyip diğer personellerinde bu gelişmeden yararlanmasını sağlayabilir. Bu sayede projemizi her zaman düzenli ve güncel olarak tutabiliriz. Herhangi bir patlama sonucunda istediğimiz versiyonumuza geri dönüş yapabiliriz.
     ‘Get Latest Version’ dediğimiz de server üzerindeki projenin o anki versiyonunu kendi bilgisayarımıza almış oluyoruz.
    Kendi dosyamızda çalıştığımız zaman ‘Check Out’ olarak istediğimiz değişiklikleri yapabiliriz. Daha sonradan yaptığımız bu değişiklikleri de ‘Check In’ diyerek server a yükleme yaparız böylece diğer takım arkadaşlarımızda bizim değişikliklerimizi almış olacaktır.
    ‘Check Out’ olan dosyaya sadece o an kullanan arkadaş erişim sağlayabilir yani diğer bir deyişle dosyamız onda kilitli kalmış olur.
    ‘Merge’ işlemi tfs de en dikkat edilmesi gereken unsurlardan biridir. Genel olarak tfs bunu kendisi yapmaktadır fakat bazı durumlarda bize ihtiyacı vardır. Projenin bir dosyasını ‘Check Out’ yaptığımız zaman eğer yeni bir şey eklemek istersek bu sağlıklı bir ‘Merge’ açısından sıkıntılı durumdur. Bu durumda biz dosyamıza ekleme yapmadan ‘Check In’ dememiz gerekmektedir. Yani bu durumu diğer takım arkadaşlarımıza kendimiz söylemeliyiz.
    Özellikleri:
    ·         Versiyon Kontrolü
    ·         Proje yönetimi
    ·         İş zekası ve raporlama
    .    Web erişimi

              Ayrıca tfs proje üzerinde yaptığımız tüm değişiklikleri kayıt altına alınmaktadır. Hangi personel hangi dosyada çalışmış, ne zaman çalışmış, ne kadar değişik yapmış, ne kadar süre harcamış gibi bilgiler de vermektedir.

    Team Foundation Server Üç Katmandan Oluşur
    ·         İstemci katmanı
    ·         Uygulama katmanı
    ·         Veri katmanı


    • İstemci katmanı: 
             Web servislerini kullanarak kullanıcıdan gelen isteklere cevap veren katmandır. Team Explorer, Microsoft Office uzantıları,3. Parti araçlar bu katmanda yer alır. 
    • Uygulama katmanı: 
             Veri katmanı ile istemci katmanı arasındaki bağlantıyı sağlayan katmandır. İstemci katmanının erişimi için ASP.NET Web Servislerini sunar. 
             Team Foundation Data Services
            Team Foundation Integration Services 

    • Veri katmanı:    
           Veri katmanı istemcilerin direk erişime sahip olmadıkları katmandır bu katmana erişim için web servisler kullanılır. Veri katmanı SQL Server üzerine inşa edilmiştir.
            Work Item Tracikng,Version Conrol,Team Foundation Build,Reporting Warehouse ile ilgili tüm özellikler bu katmanda tutulmaktadır .
                                                                                                  Şahin Yaral