7 Haziran 2016 Salı

Algoritma Analizi

   Herkese merhaba, bu yazımda algoritma analizinin ne demek olduğunu, neden gerekli olduğunu ve nasıl yapıldığını okulda bir dönem boyunca almış olduğum dersin katkılarıyla aktarmaya çalışacağım.

    Öncelikle algoritma ve algoritma analizinin ne olduğundan bahsedelim. Algoritma, belirli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yoldur. Tabi bu çözüme ulaşmak için tasarladığımız yolda yapılacak işlerin adım adım adım ortaya konulması ve bu adımların sıralaması önemli. Bir problem için birden fazla algoritma verilmişse  bu algoritmalardan en iyisi seçilmelidir. Algoritma analizi burada devreye girer ve farklı çözüm yöntemlerinin verimliliğini analiz eder. İyi algoritmayı belirlemek için uygulanan testler ve yapılan işlemler Algoritma analizinin konusudur. Algoritma analizi algoritmayı gerçekte uygulamadan algoritmanın çalıştırılabilmesi için gerekli kaynakların  araştırılması demektir. Burada bahsettiğim gerekli kaynaklar temelde iki önemli kaynak olan bellek ve zamandır. Bellek, programın işletildiği sürece gerekli olan yer miktarıdır. Zaman ise programın işletim süresidir. Bir bilgisayar programı için benzer amaçlı algoritmaları kıyaslayacak olursak ne kadar fazla yer kaplıyor ve ne kadar yavaş çalışıyorsa o kadar kötüdür diyebiliriz. Algoritmayı tercih ederken  elimizdeki zaman ve yer kısıtlarına göre en verimli olanı tercih etmeliyiz.
Algoritmaların analizinin nasıl yapıldığından bahsedecek olursak, algoritmaların etkinliğini değerlendirmek için belirli bir çözümde anlamlı olan işlemlerin kaç adet olduğu sayılır. Daha sonra büyüme fonksiyonları kullanılarak algoritmaların verimliliği ifade edilir. 

   Yazının devamında algoritmanın karmaşıklığının nasıl bulunduğuna dair bol bol örnek olacak şimdilik karmaşıklığın gösterimi için gerekli olan notasyonlardan bahsedelim.(asymptotic notation)

O(f(x)) Big O : Üst sınır. Algoritmanın en kötü durum analizini yapmak için kullanılan notasyondur. 
Big O asimptotik notasyonlardan en çok kullanılanıdır.  

Ω(f(x)) Omega : Alt sınır. Programın çalışması için bir alt sınır belirler. Yani programın en iyi durumda nasıl çalışacağını gösterir. 
Θ(f(x)) Teta : Programın alt sınırı ile üst sınırının aynı olması durumunda kullanılır . Yani O(n)=Ω(n) ise Θ(n)'dir diyebiliriz.

o(f(x)) Küçük o : Genelde ağaç yapılarındaki gösterimler için kullanılır.

   Algoritmanın büyüme oranlarına bakılarak verimliliklerini karşılaşrıtabilir. n sayısı için yeterince değerleri için daha küçük büyüme oranları her zaman daha hızlıdır.

    Yukarıda tablodaki büyüme oranlarının big O notasyonu için zamana göre değişim grafiği aşağıdaki şekildeki gösterebiliriz.


    Başlangıç olarak basit bir örnek olması için N tane sayının küplerinin toplamnı bulan fonksiyonun karmaşıklığını bularak analizin nasıl yapıldığını görelim. 

Örnek : 
    
   Yukarıdaki kodda atama işlemi karşılaştırma işlemi şeklinde ilk iki kodda belirttim ancak bunları hesaplamaya katmıyoruz. Sadece kaç kere tekrar ettiklerine bakıyoruz desek yanlış olmaz sanırım. Zaten sonuç olarak 3n+6 bulmama rağmen karmaşıklığın O(n) olduğunu görebiliriz. Bir işlemi 1 kez yapmış yada 10 kez yapmış olması bizim için kritik nokta değil. Yukarıdaki algoritmanın çalışma zamanı n ile doğru orantılıdır.

    İçiçe döngülerde karmaşıklık hesabı içten dışa doğru olur. Grubun içindeki deyimin toplam çalışma zamanı, deyimlerin çalışma sürelerinin bütün döngülerin boyutların çarpımı kadardır. if else yapısında test zamanında hangi kısımdaki çalışma zamanı büyükse o kısım alınır. 

   Arama algoritmalarından doğrusal ve ikili arama algoritmalarının karmaşıklıklarını inceleyelim.

-Doğrusal (Lineer) Arama

    Doğrusal arama bir dizinin içinde bir verinin olup olmadığını anlamak için kullanılan basit bir algoritma. Dizinin başından sonuna kadar bütün elemanları gezerek aradığımız değerle bütün elemanları tek tek karşılaştırır. Aradığımız değer dizide varsa bulunduğu yerin indisini, yoksa -1 verir. Bu algoritmada n sayılı bir dizi içinde arama yaptığımızı ve aradığımız değerin dizinin son elemanında olduğunu düşünürsek aradığımız değere eşit mi diye bi karşılaştırmayı n kez yapmış oluruz. Bu durumda karmaşıklık worst case için O(n) olur. aradığımız eleman dizinin ilk elemanıysa bu durumda sadece tek bir elemanla karşılaştırmış oluruz ve best case Ω(1) olur. 
   


 Doğrusal arama için C koduna buradan ulaşablirsiniz.

- İkili (Binary) Arama

İkili arama aranacak veri yapısını her adımda ikiye bölerek arama yapar. Bu algoritmanın dizi üzerinde başarılı çalışması için dizinin sıralı olması gerekir. Algoritmanın çalışma mantığı; aranan uzayın tam orta noktasına bak aradığımız değer ordaysa işlemi bitir değilse aradığımız değer baktığımız yerdeki değerden küçükse aramayı küçük elemanların olduğu  uzayda devam ettir. Daha büyükse büyük elemanların olduğu uzayda aramaya devam et. Baktığımız aralık 1 yada daha küçükse bulunamadığını bildir ve sonlandır şeklindedir. 


İkili arama algoritmasında aradığımız değer ortadaki değer ise tek karşılaştırmayla aradığımızı bulacağımız için bu en iyi durumdur. Yani best case Ω(1) olur. En kötü durumda ise aradığımız uzayı 2 ye bölerek ilerlediğimiz için k kez böldüğümüzü düşünürsek;
2n = k  buradan      k=log2n    yani worst case : O(logn) olur.
İkili arama algoritması için zaman karmaşıklığını bulan Python koduna buradan ulaşablirsiniz.
ikili arama algoritması için karşılaştırma sayısını bulan C koduna buradan ulaşabilirsiniz.

Algoritma analizi karmaşıklık hesaplamalarımıza fibonacci fonksiyonları ile devam edelim.

-Fibonacci Serisini Bulma

    Fibonacci dizisi her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisidir. Burada fibonacci dizisini bulmanın  3 farklı gerçekleştiriminin karmaşıklıklarını inceleyeceğiz. Öncelikle döngülerle bulunmasından bahsedecek olursak burada tek bir for içerisinde işlemler gerçekleştirilir. Bu fonksiyon için yazmış olduğum C koduna buradan ulaşablirsiniz. Karmaşıklık O(N)'dir.

-Recursive Fibonacci 

   Özyinelemeli fonksiyonun ne olduğuna kısaca değinelim. Özyinelemeli fonksiyon kendi kendisini doğrudan veya dolaylı olarak çağıran fonksiyondur. Bir problemin daha küçük benzer problemlere bölünerek çözülmesini sağlayan bi tekniktir. Örneğin 5 sayısı için yani 5. fibonacci sayısını bulmak için fib(5)= fib(4) +fib(3) şeklinde problemi böler. fib(3) ve fib(4)ün bulunmasıyla fib(5) bulunur.
Aşağıdaki şekil ile anlatmak istediğim durum daha anlaşılır hale gelebilir.

 
Bununla ilgili detay için C ile yazmış olduğum recursive fibonacci fonksiyonuna buradan ulaşablirsiniz. Recursive fibonacci için karmaşıklık O( 2n ) 

-Hafızaya alma tekniği ile recursive fibonacci

   Yukarıdaki şekilde F(6) yı hesaplamak için f(4)'ü, f(3)'ü, f(2)'yi tekrar tekrar hesaplar. Hafızaya alma tekniği ile bir dizi oluşturup içindeki değerleri başlangıçta -1 yaparak bir kez hesaplandığında hesaplanan değeri dizide güncelleyerek o değer için fonksiyonun tekrar çağrılmasını engellemiş olur. 0'dan N'e kadar olan tüm sayılar için fib fonksiyonu 1 kez çağırıp değerini hesaplayıp dizide tutarak karmaşıklığı O(N)'e indirgemiş oluruz.
Hafızaya alma tekniği ile recursive fibonacci için C++ koduna buradan ulaşabilirsiniz.

   Karmaşıklık hesaplamalırna sıralama algoritmaları ile devam edelim.

-Bubble Sort Algoritması (Kabarcık Sıralama Algoritması) 
    Bubble sort, sıralama algoritmalarının içinde en kolay olan ama büyük dizilerde çok yavaş kalan bir sıralama yöntemidir. Bu algoritmanın çalışma mantığı verilen dizinin öğelerinin veriliş sırasıyla yatay bir şekilde dizildiğini varsayalım.İlk eleman ikinci elemanla karşılaştırılır büyükse sağa geçer üçüncüelemanla karşılaştırlır büyükse sağa geçer bu şekilde en büyük eleman en sağa geçmiş olur. Ve bu eleman dışındakilerin oluşturduğu alt dizi içinde aynı şey tekrarlanır. Bu çalışma mantığından tahmin edebileceğimiz üzere içiçe 2 fora ihtiyacımız var bu da karmaşıklığın O(N2) olduğunu gösterir.

Bubble sort için yazmış olduğum C koduna buradan ulaşabilirsiniz.
-Selection Sıralama Algoritması

   Selection algoritmasının çalışma mantığı her adımda dizideki en küçük elemanın nerede olduğu bulunur.  Bu sayı ile dizinin başındaki sayı yer değiştirilerek en küçük sayılar seçilerek başa geçirilmiş olur. Her adımda n sayı işlenmekte ve bu n kez tekrar ettiği için algoritmanın karmaşıklığı O(N2) olur.

  

    Selection Sort için yazmış olduğum C koduna buradan ulaşabilirsiniz.

- Insertion Sort Algoritması

    Insertion sort algoritması,düzensiz dizi elemanlarını tek tek ele alarak her birini dizinin sıralanmış kısmındaki uygun yerine yerleştirme esasına dayanır. Çalışma mantığı algoritmanın küçükten büyüğe sıralama yaptığını düşünürsek; ilk olarak sayı dizisinin ikinci elemanını anahtar olarak seçer ve kendinden önceki tüm sayılarla kıyaslar. Kendinden önceki büyük olan her sayıyla yer değiştirir. Eğer küçükse yer değiştirme biter. Daha sonra dizinin son elemanına kadar anahtar seçimi ve yer değiştirme işlemleri devam eder. Burada dizideki eleman sayısı kadar geçiş gerekir ve en kötü ihtimalle eleman sayısı kadar kaydırma yapılır. Bu nedenle karmaşıklığı O(N2) olur.



   Insertion Sort için yazmış olduğum C koduna buradan ulaşabilirsiniz.

-Quick Sort Algoritması

   Quick Sort algoritması sıralanacak olan dizideki orta noktada bulunan bir  sayıyı seçerek bu orta noktadaki sayıya pivot dersek diğer bütün sayıları pivottan büyük veya küçük diye sınıflayarak sıralama yapmayı hedefler. Bu algoritmanın karmaşıklığını incelersek; üzerinde çalıştığımız dizi her adımda en fazla 2'ye bölünmüştür. Sonuç dizisi olan 2'şer elemanlı dizilere logn adımda ulaşılır. Daha sonra her n eleman için sıralama yapıldığı ve her n eleman üzerinden geçildiği için bu sayı çarpan olarak gelir ve karmaşıklık O(nlogn) olur.


    Quick sort için Python koduna buradan ulaşabilirsiniz. 


    Sıralama algoritmalarından sonra derste yapmış olduğumuz dinamik bir diziye eleman eklemenin maliyetinden biraz bahsedeyim.

     -Dinamik bir dizi için insert işleminin maliyeti 
    
     Öncelikle n elemanlı bir dizimiz olduğunu varsayalım. Bu dizinin (n-1). indisine kadar eleman eklemenin maliyeti O(1). İndis değeri n ve n den büyük olduğunda ise maliyet değişir. Çünkü n ve n den sonra dizi için ayrılan yeri geçtiği için taşıma yapması gerekir. Dizi dolduğunda başka bir yere taşıma yani yer değişiminin maliyeti O(n) olur. 
     Dinamik dizi için bu yer değişimiyle ilgili yazmış olduğum C++ koduna buradan ulaşabilirsiniz.

-Bağlı Liste
   
    Bağlı liste içindeki elemanların doğrusal olarak düzenlendiği veri yapısıdır. Bu yönüyle dizilere benzer ancak elemanlara ulaşma yoluyla dizilerden ayrılır. Dizilerde dizinin içindeki elemana dizinin indeksiyle ulaşırken bağlı listede bağlı listenin içindeki elemanlara o elemanlara işaret eden işaretçiler ile ulaşırız. Bir diziden bir eleman sildiğimizde ortaya çıkan boşluğu doldurmak için sildiğimiz elemandan sonraki her eleman kaydırılır. Bağlı listeden bir eleman silinmesi gerektiğinde yapılacak tek şey ise bir işaretçinin gösterdiği yerin değiştirilmesidir. Eleman ekleme işlemi içinde yapılacak işlemler aynı. Fakat bir elemanı arama işlemi dizide ikili arama yöntemiyle O(logn) zaman da gerçekleşirken bağlı listede tüm listeyi gezmek gerekeceğinden O(n) zamanda gerçekleşir. Bağlı liste ve dizi için ekleme, silme, arama işlemleri için karmaşıklığı aşağıdaki tablodan inceleyerek karşılaştırma yapabiliriz.


- İkili Arama Ağacı

   Öncelikle ağaç veri yapısını kısacık özet geçmek gerekirse; ağaç  dooğrusal olmayan bir veri yapısıdır. Ağaç veri yapısında yukarıda bir kökü vardır ve kolları aşağıya doğru genişler. Ağaçta bir düğümün hiç çocuğu yoksa o düğüme yaprak denir ve kökten yaprağa ulaşmak için geçtiğimiz elemanların sayısının en fazlası bize ağacın derinliğini verir. Bir ağacın ikili ağaç olması için en önemli şart kökün sağında kökten büyük değerler solunda kökten küçük değerler olmalıdır. Ayrıca ikili ağaçlarda her düğümün en fazla iki çocuğu bulunabilir.
    İkili arama ağacında ekleme işlemi yaparken eğer ağaç full tree ise maliyet O(logn) olur. Ağaç yapısı full tree değilse yani her derinlikte bir düğüm olduğunu ve ağacın liste şekline dönüştüğünü düşünürsek bu durumda maliyet O(n) olur. 


- Hash Table

   Hash tablosu sadece bir dizi elemandan oluşan basit bir veri yapısıdır. Her bir eleman sayı veya string olabileceği gibi herhangi bir veri yapısıda olabilir. Tablo N elemandan oluşuyorsa hash table ın büyüklüğü N'dir ve elemanlar 0 ile N-1 arasında normal bir dizideki gibi adreslenirler. Hash Table ın özelliği elemanlar ile adreslerini birbirine bağlayan birebir fonksiyon kullanmasıdır. Bu fonksiyon hash fonksiyonudur ve bu hash fonksiyonu hem elemanları iyi serpiştirmeli hemde mümkünse iki farklı elemanı aynı pozisyona adreslememelidir. Birden fazla eleman aynı pozisyona adreslenirse çakışma olacaktır. Çakışma problemi de aynı pozisyona adreslenen elemanlrı bir bağlı listede tutarak çözülebilir. İkili arama ağacın O(logn) zamanda yapılan ekleme, silme, arama işlemleri hash table ortalama O(1) zamanda yapar. Fakat ikili arama ağacında desteklenen en büyük en küçük elemanı bulma ile verileri sıralı biçimde doğrusal zamanda ekrana yazma işlemleri hash table yaısında desteklenmez.
    Aşağıdaki basit örnek hash table ın çalışma mantığını anlamaya yardımcı olabilir.



     Okulda bir dönem boyunca görmüş olduğum Algoritma Analizi dersinin içeriğini özetlemeye çalıştım umarım faydalı olur. 




8 Aralık 2015 Salı

Google Drive

  




    Dosyaları bilgisayar veya mobil cihazlara kaydedip disk alanını işgal etmek yerine online bir depolama sistemine kaydetmek, dosyalara internet bağlantısıyla erişim sağlayıp bulut üzerinden dosya paylaşımı yapmak oldukça kolaydır.

     Google Drive, Web üzerinde kendimize ait bir alanda kişisel verilerimizin barındırılması amacıyla Google tarafından sunulan dosya depolama ve senkronizasyon hizmetidir. Google Drive kullanıcıları olarak bulutta dökümanlarımızı depolayabilir, dosya paylaşabilir ve kullanıcıların birbiriyle paylaştığı ortak belgelere ulaşıp bunlar üzerinde ortak çalışma yürütebiliriz. 

    Google Drive hizmetini kullanabilmeniz için bir google hesabımızın bulunması gerekir. Google Drive kullanıcılarına internet üzerinde dosyalarını barındırabilecekleri 15 GB'lık bir dosya barındırma hizmeti sunar. Kullanıcıya ücretsiz sunulan 15 Gb depolama alanı Google Drive, Gmail ve Google+ Photos hizmetlerini kapsar, bu kotayı bu 3 servis paylaşır. 15 GB üzeri depolama alanına sahip olmak isteyenler ise aylık ek ücret ödeyerek depolama alanı kapasitesini yükseltebilirler.

    Google Drive'ın ücretsiz alan dışında kullanıcılara belgelerini, dokümanlarını, sunum, araştırma ve çizimlerini yaratma, kaydetme ve senkronize etme imkanı veren entegre uygulamalarıda bulunur. Google Drive'da alenen paylaşılan dosyalar web arama motorları ile aranıp bulunabilir. Aynı zamanda izinleri düzenlemek için düzenleyebilir, yorum yapablir, görüntüleyebilir şeklinde erişim seviyesi de belirlenebilir. 

    Google Drive üzerinde depolanan veriler, OneDrive ve Dropbox gibi 256 bit değil, 128 bit AES (Advanced Encryption Standart) ile korunur. Google, yasal merciler tarafından mecbur tutulmadığı sürece verilerin içeriğine bakmayacağını özellikle belirtir. Fakat İstersek hesabımıza ekstra güvenlik eklemek için iki adımlı doğrulama kullanabiliriz.

   Google Drive'ın genel olarak arayüzü için basit ve sade diyebiliriz. Benimle paylaşılanlar başlığı altında bizimle ve arkadaşlarımızla paylaşılan ortak belgelere erişebiliriz. Drive'm bölümünde drive'ımızda bulunan, oluşturduğumuz, senkronize ettiğimiz ve yüklediğimiz her şeye ulaşabiliriz.























Google drive özellikleri

  •  Ücretsizdir.
  •  Sahibi Google Inc.'dir.
  •  Bir dosya barındırma servisidir.
  •  Google Drive 24 Nisan 2012 tarihinde hizmete başlamıştır.
  •  Dosyaların dilediğimiz kişilerle paylaşılmasına imkan sağlar.
  •  Dosyalar üzerinde yetki verdiğimiz kişilerle ortak çalışılmasına imkan sağlar.
  •  Dünya'nın her yerinden dosyalarımıza ulaşmamıza imkan sağlar.
  •  15 gb üzeri depolama alanı hizmeti ücrete tabiidir.
  •  Google drive ile çalışmak için tarayıcı eklentileri ve masaüstü yazılımları bulunur.
  •  Google Docs ile ofis programlarına yapabileceğimiz tüm işlemleri gerçekleştirebilir yeni excel ve word dosyaları oluşturabilir bunları Google drive alanımıza kaydedebiliriz.
  • Senkronizayson Sistemi : Windows / Linux / Mac
  • Mobil Uygulaması : Android, IOS, Windows Phone






2 Aralık 2015 Çarşamba

Daily Meeting4

Atadığım görevlere devam ettim. Görev olarak atamış olduğum yeni yardım etkinliği oluşturma işlemini gerçekleştirdim. Yardım etkinliği oluşturabilme işlemi için login olma durumunu zorunlu kılmak için authorize attribute'unu ekledim.Fakat  Session rollerini ayırmada sorun yaşadım. Bu konudaki eksikliğimden dolayı üye ve admin girişine göre kontrol edip admin ise etkinlik oluşturabilsin şeklindeki ayırımı gerçekleştiremedim.




1 Aralık 2015 Salı

Daily Meeting3

  Atamış olduğum görevleri gerçekleştirmeye devam ettim. Daha önce gerçekleştirdiğim aktif olan etkinliğin ana sayfada gösterilmesinden sonra bu etkinliğe katılma işlemini gerçekleştirdim. Ayrıca sadece üyelerin etkinliklere katılabilmesi için authorize özelliğini kullandım. Böylece etkinliğe katıl linkine tıklayınca eğer üye girişi yapılmadıysa giriş sayfasına yönlendirme yapılıyor. Etkinliğe katılan üyeler bağışta bulunmak istedikler kıyafetleri açılan sayfadaki formu doldurarak bildirmiş oluyor. Fakat burda yapılan etkinliğin id sini göndermede sıkıntı yaşadığım için bağış yaparken hangi etkinlik olduğunu kullanıcıdan soruyor otomatik olarak etkinliğin adını ekleyemiyor. Bu sorunu düzeltemediğim için üye aktif olmayan bir etkinliğede bağış yapmış olabilir.










Bulut Storage Servisleri
























  Bulut depolama, verilerimizi bulut servisi hizmeti veren firmaların kendi sunucularında saklayıp istediğimiz zaman istediğimiz yerden ulaşmamızı sağlayan bir hizmettir.Bulut depolama servisleri, internette kendimize ait bir depolama alanına sahip olmamızı sağlar. Bu alanı dosya paylaşımı veya yedekleme yapmak için kullanabiliriz. Bulut depolamayı, internet üzerinden erişebileceğimiz bir sabit diskimiz varmış gibi düşünebiliriz. Bu diske resim, müzik, film, önemli belgelerimiz gibi her türlü dijital dökümanlarımızı koyabiliriz. Bulut depolamayı kullanabilmemiz için online olmamız gerekir. İnternet erişimi olan her yerden kullanıcı adı ve parolamızla buluttaki verilerimize erişebiliriz. 
    Bulut depolama servislerini sabit disk veya flash disk gibi kullanabiliriz. Örneğin biriyle bir dosya paylaşmak istediğimizde dosyayı kullandığımız bulut servise yükleyip linkini istediğimiz kişiye göndererek böylece dosyayı istediğimiz kişiye ulaştırabiliriz. Ayrıca akıllı telefonlara bulut servisi hizmeti veren uygulamaları yükleyerek akıllı telefonlarda da bu servislerden yararlanabiliriz. Telefonumuzdaki fotoğrafları ve seçtiğimiz dosyaları da bu şekilde yedekleyebiliriz.
Bulut depolama servislerinden bazıları : Dropbox, Google Drive, OneDrive, SkyDrive, Yandex.Disk

Bulut depolamanın avantajları :

   En büyük avantajı internete bağlı olduğumuzda dosyalara anında erişebilmemizdir. Böylece usb bellek veya harici bellek taşımaktan kurtulmuş oluruz. Bulut depolama sistemlerine yüklenen dosyalar anında güncellenir. Böylece birden fazla kişi aynı farklı yerlerde de olsa aynı dosya üzerinde çalışabilir. Bulut depolama servisleri ile enerji ve zaman tasarrufu sağlanır.

Bulut depolamanın dezavantajları:

  Bulut depolamanın en önemli dezavantajı olabilecek güvenlik açıkları, dosyaların gizliliği sorunu ve dosyalara erişim için internete bağlı olma zorunluluğudur. Bulut servislerinde veri depolama hızı internet bant genişliliği ile sınırlıdır. Bu nedenle dosyaların aktarımı duruma göre uzun sürebilir.

  

















Storage hizmetleri ; Blob Storage, Table Storage, Queue Storage, File Storage.


BLOB STORAGE

  BLOB (Binary Large OBject) servisi büyük miktarda yapısal olmayan verileri tutmak için tasarlanmış bir hizmettir. Resim, müzik, video, text, binary, veritabanı yedekleri vs. gibi birçok dosya türü birçok amaç için ‘Blob Storage’de depolanabilir. Türkçe’deki karşılığı damla olan blob terimi de bulut üzerindeki herhangi bir tipteki ve boyuttaki bir dosyayı temsil etmektedir.
Storage Account: Tüm veri saklama servisleri için bir account bilgisine ihtiyaç duyulur. 
Container: Blob dosyalarının saklandığı ve kategorilendiği katmandır. Her bir Blob dosyasının bir Container’ı olmak zorundadır. Bir Storage Account altında sınırsız sayıda Container, bir Container altında da sınırsız sayıda Blob yer alabilir.
Blob:  Bulut üzerinde saklanan her bir dosya blob objesidir.




















TABLE STORAGE

  Table Storage büyük miktarda yapısal olan ve ilişkisel olmayan veriyi yani NoSQL verilerini depolamak için tasarlanmış bir hizmettir. Bir Storage Account oluşturulduğunda Table Storage de aktif olur. Table Storage içerisinde veritabanlarındaki satırlara benzer şekilde Entity adı verilen kayıtlar oluşturabiliriz. Entity’lerin her biri en fazla 1MB olabilir. NoSQL’in doğası gereği bu entitylerin yapısı aynı olmak zorunda değildir. Bu konsept, erişimin hızlı olmasını sağlayan denormalized dizaynın oluşmasını kolaylaştırır.





 


QUEUE STORAGE

   Azure Queue Storage büyük miktarda mesajlaşma verisini depolamak için tasarlanmış bir hizmettir. Uygulamalar arasında asenkron mesajlaşma imkânı tanır. Bir ‘Queue’de her biri en fazla 64 KB büyüklükte olan sınırsız sayıda mesaj depolanabilir. Bir Storage Account oluşturulduğunda Queue Storage de aktif olur.


















FILE STORAGE

  Azure File Storage, lokalde veya bulut üzerinde çalışan uygulamalar arasında paylaşılan bir depolama ortamı sunulabilmesi için tasarlanmıştır. Lokalde dosya paylaşımı gerektiren bir uygulama varsa kodlarda çok fazla değişiklik yapmadan bu uygulamayı buluta taşıyabiliriz. Bir Storage Account oluşturulduğunda File Storage aktif olur. File Storage içerisinde konumlayabileceğimiz dosyaların boyutu maksimum boyutu 1 TB olabilir. 
















30 Kasım 2015 Pazartesi

Daily Meeting 2

Görev olarak atadığım kayıtsız kullanıcıların yani ziyaretçilerin kulanacağı ana sayfayı oluşturdum. Ziyaretçilerin o an aktif olan yardım etkinliğini görebilmesi için gereken linq sorgusunu yazdım ve etkinlik geçmişini listeyen sayfayı oluşturdum. Aktif olan etkinliğin gösterilmesi için yazdığım linq sorgusunu eksik yazdığım için hata aldım ve baya uğraştıktan sonra hatamı görüp düzelttim. Ayrıca etkinlik ekleme, silme, güncelleme işleri yapan sayfaları oluşturdum. Daha önce yapılmış yardımların görüntüsünü temsil eden bir kaç resim ekledim.




Daily Meeting 1

   İlk olarak yapılacak projeye karar verip gereksinimleri analiz ettim. Projemi geliştirmek için scrum ve takım çalışmasının takibi için TFS kullandım. Visual Studio online da projeyi oluşturup backlogları girdim. Daha sonra backlogları splitlere bölerek bu splitleri de görev olarak atadım. Visual Studio dan TFSye bağlanark kendime atadığım önceliği yüksek olan ilk görevi seçtim. Proje için Asp.Net ile Mvc template i kullanmayı tercih ettim. Bu nedenle belirlediğim ilk görevim projenin veritabanı için tabloları oluşturup Asp'den veritabanına bağlanarak modeli oluşturmaktı. Bunu gerçekleştirirken bir sıkıntı yaşamadım. Böylece projenin Modelini oluşturmuş oldum.