Etiketler

19 Ekim 2019 Cumartesi

Gartner Raporları (Hype Cycles & Magic Quadrants)

Gartner Raporları (Hype Cycles & Magic Quadrants)
Gartner 1979 yılında Gideon Gartner tarafından Amerikada kurulmuş, 100 ülkede 15.000'den fazla çalışanı ile faaliyette bulunan bir araştırma kuruluşudur.  Bilgi teknoloji ürünleri üzerinde araştırma ve tavsiyelerde bulunmaktadır.
Büyük çaplı şirketlerin bilgi teknoloji yöneticileri, kamu kuruluşları, teknoloji şirketleri tarafından takip edilen bir değerlendirme kuruluşudur. Teknoloji ürünü geliştirilmesi, alımı ve kullanımı sürecinde karar verme aşamasında başvurulabilecek önemli bir otoritedir.

Market analiz sonuçlarını göstermek için iki tür grafik kullanmaktadır.

  • İlerleme Döngüleri (EN:hype cycles) 
  • Sihirli Çeyrekler (EN:magic quadrants) 



Hype Cycle





Her Hype Döngüsü, bir teknolojinin yaşam döngüsünün beş ana aşamasından oluşur.
  • İnovasyon Tetikleyici: Potansiyel bir teknoloji atılımı, işleri yoluna sokar. İlk kavram kanıtı öyküleri ve medyanın ilgisi kayda değer bir reklamı tetikler. Genellikle, kullanılabilir hiçbir ürün mevcut değildir ve ticari uygulanabilirliği kanıtlanmamıştır. Teknolojik ürünün çeşitli ihtiyaçlar karşısında tetiklenerek böyle birşeye ihtiyaç verilerek ürünün ortaya çıkmasına karar verildiği aşamadır.
  • Şişirilmiş Beklentilerin Zirvesi: Erken tanıtım, genellikle başarısızlık puanları eşliğinde bir dizi başarı öyküsü hazırlar. Bazı şirketler harekete geçer; çoğu yok olur. Yapılmasına karar verilen ürüne eklenmesi gereken özelliklerin sürekli eklendiği, beklentilerin en üst seviyeye çıktığı noktadır.
  • Hayal kırıklığı oğuyu: Deneyler ve uygulamalar yerine getirilemediğinden ilgi azalır. Teknolojinin üreticileri sarsılır ya da başarısız olur. Yatırımlar, yalnızca hayatta kalan sağlayıcılar ürünlerini erken benimseyenlerin memnuniyetine göre geliştirdiğinde devam eder. Üründe eklenecek yeni beklenti kalmadığında artık ürün üzerindeki özelliklerde çeşitli hayal kırıklıkları yaşanmaya başlanır. Bu özellikleri ekledik ama beklentilerimizi karşılamadı gibi sorunlar görülebilir. Bu ürün tamamen beklentileri karşılamadı o zaman sonlandıralım ya da değişikliklere gidelim diye kararlar alınabilir.
  • Aydınlanma Eğimi: Teknolojinin işletmenin nasıl faydalanabileceğinin daha fazla örneği kristalleşmeye başlar ve daha yaygın olarak anlaşılır. İkinci ve üçüncü nesil ürünler teknoloji sağlayıcılardan geliyor. Hayal kırıklığı oyuğunu geçebilen ürünlerin artık aydınlanma yaşadığı dilimdir. Yaşanan tecrübelerden ve elde edilen bilgilerden ortaya çıkarılan ürünün en iyi haline geldiği olgunlaşmaya başladığı evredir.  
  • Verimlilik Platosu: Ana akım kabul edilmeye başlanır. Sağlayıcının uygulanabilirliğini değerlendirme kriterleri daha açık bir şekilde tanımlanmıştır. Teknolojinin geniş pazar uygulanabilirliği ve alaka düzeyi açıkça karşılığını verir. Bir ürünün paketlenerek kullanılabileceği artık geliştirmeye ihtiyaçların azaldığı ve ürünün olgun olarak kullanıldığı aşamadır.

Hype Cycle Raporları Neden İncelenir ?


  • Bir teknolojinin ticari vaadiyle ilgili gerçek itici güçlerden ayırmak için
  • Teknoloji yatırım kararlarındaki riski azaltmak için
  • Bir teknolojinin işletme değerini anlayarak, deneyimli bilgi teknolojileri analistlerinin görüşlerini almak için




Magic Quadrant



Magic Quadrant 
Piyasadaki teknoloji sağlayıcılarını anlamak için kullanılır. 
Liderlerin kadrosuna odaklanmanın her zaman en iyi eylem yolu olmadığını unutmayın. Piyasadaki zorlukları göz önünde bulundurmak için iyi sebepler var. Bir niş oyuncu ihtiyaçlarınızı pazar liderinden daha iyi destekleyebilir. Her şey sağlayıcının işletme hedeflerinizle nasıl aynı hizada olduğuna bağlıdır.

Magic Quadrant Nasıl Çalışır ?


  • Liderler mevcut vizyonlarına karşı gayet iyi çalışırlar ve yarın için iyi bir konumdadırlar.
  • Vizyonerler piyasanın nereye gittiğini veya pazar kurallarını değiştirmek için bir vizyona sahip olduklarını anlarlar, ancak henüz iyi bir şekilde uygulama yapmadılar.
  • Niş Oyuncular küçük bir segmente başarıyla odaklanırlar veya odaklanmamışlardır ve diğerlerinden daha fazla yenilik yapmaz veya daha iyi performans gösteremezler.
  • Meydan okuyanlar bugün çok iyi performans gösteriyor ya da büyük bir kesime hâkim olabilir, ancak pazar yönü hakkında bir anlayış göstermiyorlar.

Magic Quadrant Neden Kullanılır ?

  • Bir piyasanın rekabet eden teknoloji sağlayıcıları ve son kullanıcıların bugün ve gelecekte neye ihtiyaç duyduklarını sağlama yetenekleri hakkında hızlı bir şekilde eğitmek için
  • Bir pazarın teknoloji sağlayıcılarının rekabet açısından nasıl konumlandırıldığını ve son kullanıcılar için rekabet etmek için kullandıkları stratejileri anlamak için
  • Bir teknoloji sağlayıcısının güçlü yönlerini ve zorluklarını özel ihtiyaçlarınızla karşılaştırmak için kullanılabilir.


Kaynaklar


18 Haziran 2017 Pazar

Beyin-Bilgisayar Arayüzü

Beyin-Bilgisayar Arayüzü

Merhaba


Bu yazımda sizlere daha önce bir araştırma kapsamında yaptığım beyin-bilgisayar arayüzü (brain-computer interfaces) incelemesinden bahsetmek istiyorum.






İnsan Beyni

  • İnsan beyninde yaklaşık 100 milyar nöron bulunmaktadır. 
  • Beyindeki bir nöronun sinyal iletim hızı saniyede 50 metre ila 120 metre arasından değişmektedir.
  • Beyindeki tüm nöronlar birbiriyle iletişim halindedir. Mesela insan vücudunun ortalama 170cm olduğu düşünülürse, ayak parmaklarınızdan beyninize ulaşacak bir sinyal birkaç milisaniyede iletilebilir.





BEYİN-BİLGİSAYAR ARAYÜZLERİ

  • İnsanların bilgisayar gibi elektronik cihazlarla iletişim kurmasına imkan veren bir teknolojidir.
  • İnsanların dış dünyaya gönderdikleri iletilerin ve komutların oluşturdukları elektirk akımının ölçülmesi ve bilgisayar tarafından yorumlanması temeline dayanmaktadır.
  • Genellikle insanların bilişsel yada duyusal motor fonksiyonlarına yardımcı olmak veya hasarlı kısımların düzeltilmesinde kullanılmaktadır.

BEYİN-BİLGİSAYAR ARAYÜZÜ ÇALIŞMA PRENSİBİ

Bu sistemler belirli bir temele dayanmaz, kullanıcının eğilimlerine dayanmaktadır. 
Bir beyin-insan arayüzü sisteminin temel bileşenleri olarak :
  • Sinyal toplama
  • Sinyal işleme : Özellik çıkarma
  • Sinyal işleme : Dönüştürme Algoritması
  • Çıktı cihazı
  • İşletme Protokolü sıralanabilir.



KULLANICI ile ETKİLEŞİM TÜRLERİ



NeuroSurgery beyinde belirlenen bölgeye direk olarak nöro çipin ve bağlantı sağlanacak aparatörün ameliyatla beyne yerleştirilmesidir.













ECoG beyinde oluşan sinyalleri kaydeder ve kablosuz ağ aracılıyla bilgisayara gönderir.








En kolay yöntemlerden birisi, EEG(Elektroensefalografi) kullanımıdır. Bir cihaz aracılığla bağlanan elektrotlar, beyin sinyallerini bilgisayar ekranına aktarmaktadır.







MEG (Magnetoencephalography); aktiviteler sırasında beyinde meydana gelen değişiklikleri, hangi nöronların ve beyne ait hangi bölgenin çalıştığını görüntüleyen teknolojidir. Manyetik rezonans teknikleri ile çalışır.



fMRI (functional mrı) cihazı ile, hangi nöronun ne tür bir tepki verdiği anlaşılamaz. Ve yine fMRI ile çalışma anında, nöronların aktivasyonu öyle bir zamana denk gelir ki, fMRI ile görüntü alındığı anda nöron bir aktivasyon göstermezken, fMRI cihazının görüntü almadığı zamanda nöron aktive olmuş olabilir. Bir başka deyişle, fMRI cihazının arka arkaya çektiği görüntülerden bazılarına, o nöron grubunun aktive oldukları zaman (an) denk gelmemiş ve dolayısıyla görüntülere yansımamış olabilir. Bu nedenlerden dolayı, belli zaman aralığında çekilen görüntüler tek tek ele alınarak işlenmek yerine bu görüntülere ait değerlerin ortalamaları alınarak tek bir görüntü elde edilir. Şu halde fMRI ile çekildiğini düşündüğümüz tek bir görüntü, aslında yüzlerce görüntünün ortalamasıdır. (Resimdeki dokuz görüntünün her biri, yüzlerce görüntünün ortalamasından elde edilmiştir.)


UYGULAMALAR

  • Felçli insanlar çevreleri ile iletişim kurmasını, bazı çevresel varlıkları hareket ettirmeleri 
  • Engelli insanların tekerlekli sandalye, robotik kol gibi kullandıkları cihazları kontrol edebilmeleri Bilgisayar oyunlarının kontrol edilebilmesi 
  • Hayatı kolaylaştırmak için geliştirilen akıllı cihazlarda


UYGULAMALAR-TARİHSEL GELİŞİM

  • 1924, Hans Berger, Alman nörolog ilk defa insan beynin aktivitelerini EEG ile kayıt edebileceğini keşfetmiştir. 
  • 1970, İlk beyin-bilgisayar arayüzü çalışmaları NSA ve DARPA desteği ile Kaliforniya Üniversitesinde başlamıştır. 
  • 1978’de ilk prototip denemesi görme engelli bir insanda yapılmıştır. 
  • 1990'lu yıllara kadar insan ve hayvan deneylerine devam edilmiştir.
  • 2005 yılında ilk beyin-bilgisayar etkileşimi sistemi ile boyundan itibaren felçi olan Mattew Nagle’da denendi.
 I can't put it into words. It's just—I use my brain. I just thought it. I said, "Cursor go up to the top right." And it did, and now I can control it all over the screen. It will give me a sense of independence. — Matthew Nagle, "Brain Gain"




Beyin kontrolü ile çalışan robotik kol çalışması. Beyne ameliyat ile yerleştirilen mikroçip sayesinde düşünce ile oluşturulan sinyaller bilgisayar tarafından yorumlanıp, kol için hareket sağlıyor.








Kayıtlardaki ilk biyonik bilim adamı





Kablosuz ağ ile veri ile veri iletimi sağlayan kullanıcı sistemleri







Sonuç olarak; 

  • Yıllardır süregelen insan beynini analiz etme, beyin okuma kavramları, gelişen teknoloji ile mümkün hale gelmektedir. Geliştirilen cihazlar ile beyinde meydana gelen elektrik sinyalleri tespit edilip okunabilmekte, ve analiz edilerek yorumlanabilmektedir. 
  • Öncelikle hareket yeteneğini kaybeden insanlar için umut kaynağı olan sistemler, robotik kismi protezler ve insanların hayatını kolaylaştıran robotların düşünce gücüyle çalışması, sistemler ile etkileşime giren kullanıcıları memnun etmektedir. 
  • Kanser tedavilerinde ve kanser hastalarında da kullanılması planlanmaktadır. 
  • Çalışmalar hem medikal hem de teknolojik alanlarda devam etmektedir.
Bu yazımda beyin-bilgisayar arayüzü sistemlerinden özetle bahsetmeye çalıştım. 
Daha sonraki yazımlarımda görüşmek üzere... 




13 Haziran 2017 Salı

Arduino ile Toprak Nem Sensörü Kullanımı



 Merhabalar


Bu yazımda sizlere Arduino toprak nem sensörü ile ölçüm yapmaktan bahsedeceğim.

Ben bu projelerimde keyestudio'nun UNO R3 kartını (Arduino UNO R3 ile aynıdır) ve  keyestudio sensörlerlerini kullanacağım.

Gerekli Malzemeler : 

  • Arduino Uno
  • Toprak Nem Sensörü
  • Jumper kablo (3 adet dişi-erkek)



Kullandığınız sensörün markasına göre sensörün bağlanma şekillerinde değişiklik gözlenebilmektedir. Keyestudio Moisture Sensor'ün de 'S', '+' ve '-' olmak üzere 3 adet pin bulunmaktadır. 'S' pini sinyali aldığımız pin olup Analog pin olan 'A0' a bağlanmakta, '+' pin güç olacağımız '5V' pinine ve '-' pin ise topraklama pini olan GND'ye bağlanmaktadır.





Eğer sensörününüz üst taraftaki gibi bir modele sahipse sensörde bulunan 2li pini 2 adet dişi-dişi jumper kablo kullanarak karta bağlamanız gerekmektedir. Ardından karta bulunan 4 çıkış pininden A0 pini sensöre gelen veriyi analog olarak okumak için, D0 pini ise potansiyometre ile ayarlananan değere göre digital çıkış almak için kullanılabilmektedir. Buradaki devrede 1.pini A0 pinine, 3.pini GND pinine ve VCC yi ise 5V pinine bağlamanız yeterlidir. [*] 


**Arduino kartımızı bilgisayara bağladıktan ve port ayarlarını yaptıktan sonra,
Arduino kartta kullancağımız kod :

void setup() {
  // put your setup code here, to run once:
  Serial.begin(57600); //serial monitorda kullancağımız hız

}

void loop() {
  // put your main code here, to run repeatedly:

Serial.print ("Moisture Sensor Value:");
Serial .println(analogRead(0)); //sensörden okuduğumuz değer
delay(1000); //sensörden gelen verileri aralıklarla okumak için delay kullanıyoruz
}

Kodumuzu karta upload ettikten sonra serial monitor'u açıyor ve 56K hızında veri alışverişe başlıyoruz.


Serial monitor'de gözlemlenen 0 değerleri, sensörünüz herhangi bir değer almadığında kuru ortamda okuduğu değerlerdir. Sensörünüzü bir miktar su bulunan bardağın içine koyarsanız şekildeki gibi değerleri okuyabilirsiniz.


Bu arada editor olarak bilgisayarınıza Arduino indirebileceğiniz gibi online web editörü de kullanabilirsiniz. Arduino'nun Amazon üzerinden PaaS hizmeti vererek hazır kodlama ortamı sunmasını ben beğendim, tavsiye ederim.

Bu yazımda Arduino ile toprak nem sensörü ile basit bir proje yapılmasını anlattım. Daha sonraki yazılarımda görüşmek üzere...

Kaynaklar :

[*]Bu tip sensörle yapılan proje için @ZaferAyan' ı takip edebilirsiniz.
http://www.keyestudio.cc/h-nd-79.html
https://www.youtube.com/watch?v=PSWdu3rJL5M&index=18&list=PL2K0ws7Tl3rFnvxQYDugxgnl5M3E4GTlZ

11 Haziran 2017 Pazar

Raspberry Pi DHT11 Sıcaklık ve Nem Sensörü ile Termometre

Merhabalar

Bu yazımda Raspberry Pi kullanarak DHT11 sensörü ile sıcaklık ve nem  ölçümünden bahsetmek istiyorum.








Bende eski modellerden birisi olan Raspberry Pi Model B bulunmakta, işletim sistemini çok uzun zaman önce yüklemiştim. İşletim sistemindeki güncellemelerin çok fazla olmasına bağlı olarak raspberry çöktü. :(




Bu yüzden yeniden kurulum yaptım. İşletim sistemi kurulumu için ben pi için ubuntu sürümü olan raspbianı tercih ediyorum. https://www.raspberrypi.org/downloads/raspbian/ sayfasında bulunan raspbian işletim sistemi indirilmelidir. Daha sonrasında bilgisayarınızda bu işletim sistemini raspberry pi de kullanacağınız hafıza kartına boot'lamanız gerekmektedir. Bunun için macOSX'de  Etcher 'i kullanabilirsiniz. 

Raspberry Pi'nize SSH ile bağlanmak için IP adresini bilmeniz gerekmektedir. Bunun için direk olarak ekran bağlantısı yapmadıysanız nmap kullanarak IP adresine erişmeniz mümkündür. macOSX'e nmap kurulumu ile ilgili blog yazıma ulaşmak tıklayınız.
Raspbian işletim sistemine ait giriş bilgileri default olarak aşağıdaki gibidir.

user : pi
password : raspberry

SSH bağlantısı sırasında 'port 22: connection refused' gibi hata ile karşılaşıyorsanız, raspberry pi'nize klavye ve ekran bağlantılarını yaparak direk olarak içine girmeli ve /etc/ssh/sshd.config dosyasında düzenlemeler yapmalı ve SSH servisini yeniden başlatmanız gerekmektedir. 




Sistemimiz sağlıklı bir şekilde çalışmaya başladıktan sonra çalışmaya başlayabiliriz.







Raspberry Pi üzerinde analog giriş bulunmamaktadır. Bu yüzden analog çıkış veren sensörler kullanılamamaktadır. Onun yerine digital çıkış veren sensörler kullanılmalıdır.


Sensörün yapısını inceleyecek olursak 3 bacaklı ve 4 bacaklı DHT11 bulunmaktadır. Ben bu macerada  4 bacaklı  DHT11 sensörü kullandım.

Gerekli malzemeler:

  • Raspberry Pi
  • Breadboard
  • DHT11 Sıcaklık ve Nem Sensörü
  • 10kΩ direnç (1 adet)
  • Jumper kablo (3 adet dişi-erkek)
Proje için devreyi aşağıdaki şekildeki gibi kuruyoruz.
Sensörün 1. bacağını güç olacağımız 1.pine, 2. bacağını topraklama için kullacağımız 3.pine, 2. bacağı sensörden alacağımız sinyal için 4.pine bağlıyoruz ve 1. ve 2. pine 10ohm luk direnç bağlıyoruz. 3. bacağı kullanmıyoruz.


Ardından Python ile programlama yapmak için

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
kütüphanesini indiriyoruz. Bunun için git'in  yüklü olması gerekmektedir. Eğer yüklü değilse;

sudo apt-get install git-core
sudo apt-get update
şeklinde yüklenebilir.
Daha sonrasında;
cd Adafruit_Python_DHT
komutu ile AdaFruit_Pyhton_DHT klasörüne girilir. Gerekli olan python kurulumu ve python kütüphanelerinin kurulumu için;

sudo apt-get install build-essential python-dev

sudo python setup.py install
komutları çalıştırılır.

/home/pi/Adafruit_Python_DHT/examples klasörü altında bulunan 'AdafruitDHT.py' nı kullanarak SSH ile bağlantı yaptığınız terminal ekranına sıcaklık ve nem ölçüm sonucunu alabilirsiniz.
Bu python dosyasının çalıştırılması için kullanacağınız parametreler bağlantınıza ve sensörünüze göre değişiklik gösterebilir.

python AdafruitDHT.py 11 14

AdafruitDHT.py DHT sensörünün 11, 22 ve 2302 modellerini destekleyecek şekilde tasarlanmıştır bu yüzden hangi model sensör kullanıldığı parametre olarak verilmektedir. 14 ise sensörününüz sinyali aldığı pinin numarasıdır.

İsterseniz mevcut kodu düzenlerek sürekli bir şekilde ölçüm görüntülemesi yapabilirsiniz. Burdan sonra yapacağınız geliştirmeler size kalmıştır. İstediğiniz gibi programala ve düzenleme yapabilirsiniz.


Bu yazımda sizlere Raspberry Pi ve DHT11 kullanarak ortamdaki sıcaklık ve nemi ölçerek terminal ekranında görüntülemekten bahsettim. Arduino ile LM35 sensörü ile benzer sonucu elde edebileceğiniz blog yazıma ulaşmak için tıklayınız.

Daha sonraki yazılarımda görüşmek üzere...

Kaynaklar :

http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-the-raspberry-pi/
http://maker.robotistan.com/raspberry-pi-ile-dht11-sicaklik-nem-sensoru-kullanimi/?utm_source=newsletter3&utm_medium=blog-resim&utm_campaign=devamini-oku

MacOSX'e NMAP Kurulumu


MacOSX'inizde Brew kurulu olmasını kesinlikle tavsiye ederim.

Eğer hala HomeBrew yüklemediyseniz;
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
komutu ile yükleyebilirsiniz.

Nmap'in kurulumu;
brew install nmap
komutu ile gerçekleştirilir.
Aynı zamanda brew de olan nmap i araştırmak isterseniz;
brew search nmap
komutunu kullanabilirsiniz.

Kurulum sırasında;
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.
Error: Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.

gibi bir hatalar ile karşılaşabilirsiniz. Buradaki sorun mevcut kullanıcınızın /usr/local altındaki dosyalara yazma hakkı bulunmamaktadır.  Bu yüzden kurulumu yapılmak istenilen nmap indirilmekte ancak kullanım için link kurulamamaktadır. Bunun düzenlenmesi için ise,
sudo chown -R $USER /usr/local
komutunu kullanabilirsiniz.
Daha sonrasında ise nmap kurulumu ile link kurulması için

brew link nmap
komutu çalıştırılmalıdır.

Nmap kurulumu başarılı bir şekilde gerçekleştirilmiştir.



Kaynaklar : 

https://superuser.com/questions/863954/what-is-the-recommended-way-to-get-nmap-on-osx
https://github.com/Homebrew/legacy-homebrew/issues/44938

8 Haziran 2017 Perşembe

MacOSX Python3 Kurulumu


Üzerinde çalıştığınız projelerin aynı kütüphanelerin farklı sürümlerini kullanabilmektedir.
Örneğin bir projeniz Python 2.6+ kullanırken bir başka projeniz Python 3.5+ kullanabilir.
Burada karmaşıklığı önlemek için projeleriniz için sanal çevre kullanmak en etkili çözüm olacaktır.

MacOSX nize Python 3.0+ yüklemek istiyorsanız öncelikler Brew'in kurulu olması gerekmektedir. Eğer geliştirici MacOSX kullanıyorsa Brew'in de aslında kesin yüklü olması gereklidir diyebiliriz.

HomeBrew'i yüklemek için aşağıdaki komut kullanılabilir.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ardından ~/.bash_profile  dosyasına 

export PATH=/usr/local/bin:$PATH

satırı eklenir. Terminal ekranından

brew search python

komutu çalıştırılır. Brew'de  mevcut python kütüphaneleri listelenir. Burada python3 listelenmesi beklenmektedir.

Aşağıdaki komut kullanılarak python3 kütüphanesi yüklenebilir.

brew install python3

Buradan sonra, sanal bir çevre üzerinde python3 kütüphanesi kurularak projede kullanılılabilir.




Kaynak :

http://www.marinamele.com/2014/07/install-python3-on-mac-os-x-and-use-virtualenv-and-virtualenvwrapper.html

7 Haziran 2017 Çarşamba

macOSX python - pip install error -> 40:498 execution error



Eğer MacOS-X işletim sahip bir bilgisayar kullanıyorsanız programlama yaparken bazı kütüphane yükleme işlemlerinde farklılıklar bulunmaktadır. Python programlama yaparken kullanılacak kütüphanelerin yüklenmesi sırasında problemler yaşanabilmektedir.


Yukarıdaki resimdeki görüldüğü gibi bir, 'pip' ile yüklenmek istenilen kütüphanenin yüklenememesi hatalı bir durumla karşılaşabilirsiniz. Bunun temel sebebi aslında mac tarafından python kütüphanelerinin sadece root yetkisi ile yazılabilir ve değiştirilebilir olmasıdır.  Bu hatanın çözümü için terminal ekranın python kütüphaneleri üzerinde değişiklik yapılabilir ancak her proje için root yetkisi ile kütüphane yüklemeleri çok sağlıklı bir çözüm olmaz. Bu yüzden her projede kullanılacak Interpreter'in sanal çevre üzerinde olması tavsiye edilmektedir.

Alınan hataya karşı etkili ve kolay çözüm olarak projeniz için sanal bir çevre oluşturmak olacaktır.


26 Mayıs 2017 Cuma

Sanal Makina ile Konteyner Arasındaki Fark


Merhabalar

Bu yazımda sizlere sanallaştırma teknolojilerinde sıkça kullanılan hipervizör tabanlı sanallaştırma ile konteyner tabalı sanallaştırma arasındaki farktan bahsetmek istiyorum.


Yukarıdaki şekide görüldüğü gibi;

Sanal makinalarda fiziksel olarak mevcut sunucu üzerinde bir işletim sistemi bulunur, bu işletim sisteminin üzerinde bir hipervizör katmanı ve bu katmanın üzerinde ise oluşturulan sanal makinalar bulunur. (Sanallaştırma ile ilgili ayrıntılı bilgi için tıklayınız.)  Her bir sanal makinanın kendisine ait bir işletim sistemi vardır, her işletim sisteminde kendine ait kütüphaneleri bulunmaktadır. Fiziksel makina üzerinde tamamen birbirinden bağımsız sanal makinalar kurulabilmekte, işletim sistemleri birbirinden farklı şekilde düzenlenebilmektedir. Ancak fiziksel makina ile sanal makina arasında bir hipervizör katmanı bulunduğu için fiziksel makina performansından kayıp yaşanmaktadır ve her sanal makinanın ayrı bir işletim sistemine sahip olması, CPU, RAM ve Disk de ayrıca sürekli kullanılan alan oluşturma, çalıştırılan servis veya iş için performans düşüklüğüne sebep olmakta, ağda gecikmeler meydana gelmektedir.

Konteyner tabanlı sanallaştırma da fiziksel sunucu üzerinde bulunan işletim sistemi üzerinde bir konteyner engine katmanı yer almakta ve bu katman üzerinde konteynerler yer almaktadır. Her konteyner üzerinde bulunduğu fiziksel makinanın kernelini kullanılır. İhtiyaçlara hangi katmana kadar fiziksel sunucunun özellikleri kullanılacağına karar verilebilir yani sanallaştırma katmanı düzenlenebilirdir. İhtiyaca göre direk işletim sistemi üzerine konteyner kurulabileceği gibi, kütüphanelerin ortak kullanılabileceği şekilde de kurulum sağlanabilir. Konteynerların içinde ayrıca bir işletim sistemi yüklü olmadığı için, mevcut CPU, RAM ve Disk çalıştırılan servis yada işe tahsis edilebilir. Fiziksel makinaya yakın performanslı sonuçlar elde edilir, ağda hipervizör tabanlı sanallaştırmaya göre daha az gecikme görülür. Ancak konteynerlar üzerinde bulunduğu fiziksel makinanın işletim sistemini kullandığı için, bütün konteynerlar aynı kernele sahip olmak zorundadır. Yani Linux kurulu bir fiziksel makina üzerine KVM hipervizörü ile Windows sanal makina kurulumu yaparken, windows yada farklı kernel sürümüne sahip linux kurulumu yapamazsınız. Aynı zamanda konteyner tabanlı sanallaştırma da konteynerlar arası ortak kullanım alanlarının fazla olmasından dolayı güvenlik açıklıkları bir miktar daha fazladır. 

I/O işlemlerinin fazla olduğu, latency-sensitive olarak tanımlanan video konferansı gibi uygulamalarda daha performanslı sonuçlar elde edilmesi için konteyner teknolojilerinin kullanılması önerilmektedir.  Microservis mimarisine sahip tasarımlarda servislerin konteynerlar üzerinde çalışması da performans yaklaşımı açısından literatürde tavsiye edilmektedir. 

Kullanılacak senaryoda bir host makinanın üzerine farklı çekirdek sürümüne sahip sanal makina kurulumu ve tamamen izole bir yapı planlanıyorsa hipervizör tabanlı sanallaştırma kullanılması önerilmektedir.

Bu yazımda sanal makinaların ve konteynerların özelliklerinden bahsederek aralarındaki farklara değindim.

Daha sonraki yazımlarımda görüşmek dileğiyle... 



Apache Cordova

Merhabalar


Bu yazımda sizlere, Apache Cordova'dan bahsetmek istiyorum. Apache Cordova; HTML, CSS, JS gibi teknolojileri kullanarak mobil platformlarda yani Android yada iOS da uygulama geliştirmeye olanak veren bir framework'tür.


Apache Cordova'nın mimarisi ile ilgili daha fazla bilgi almak için
yazılarından yararlanabilirsiniz.

Cordova ile Android mobil uygulama denemesine http://devnot.com/2017/cordova-ile-ilk-mobil-uygulamamizi-olusturalim/ adresinden ulaşabilirsiniz.

macOS Sierra üzerinde iOS Mobil Uygulaması

Öncelikle bilgisayarda Node.js ' in yüklü olması gerekmektedir. Bunun için https://nodejs.org/en/ adresinden çoğu kullancını için tavsiye edilen kararlı sürüm yüklenir.

Ardından terminal ekranı açılır ve aşağıdaki komut satırı ile cordova yüklenir.

npm install -g cordova



Yüklenen Cordova ile bir proje oluşturmak için yine komut satırından;

cordova create hello com.example.hello HelloWorld




 komutu ile HelloWorld projesi oluşturulur.

Dahaa sonrasında oluşturulan projeye mobil platformların eklenmesi gerekmektedir.
IOS platformu için;
cordova platform add ios



Android içinde benzer şekilde;
cordova platform add android
komutu kullanılır.

Yüklenen platformların listelenmesi için;
cordova platform ls
komutu kullanılabilir.

Daha sonrasında ise bu platformun ihtiyacı olan bileşenler yüklenir. Bunun için ise;

cordova requirements



macOS de cordova gereklilikleri XCode ve ios-deploy. Bunun için öncelikle AppStore'dan XCode u yüklemelisiniz.
Sonrasında ios-deploy için;

sudo npm install --unsafe-perm=true -g ios-deploy
komutu kullanılır. --unsafe-perm=true komutu ile appStore dışındaki yüklemelere terminal ekranından izin vermek için kullanılmakta, aynı zamanda root yetkisi ile kurulum sağlanmaktadır.




Build işlemi tamamlandıktan sonra; ** BUILD SUCCEEDED ** yazısı görülür.

Buraya kadar yapılan işlemler sırasıyla;

  1. Node.js kurulumu
  2. Cordova kurulumu
  3. Cordova'da proje oluşturma
  4. Cordova projesine mobil platform yükleme
  5. Bu mobil mobil platformun gerekliliklerini yükleme
    1. XCode yükleme
    2. ios-deploy yükleme
olarak sıralanabilir.

Artık geliştirme yapacağımız ortam hazır durumdadır. XCode'da projeyi açmak için terminal ekranından;

open ./platforms/ios/HelloWorld.xcworkspace/
komutu kullanılır.


Buradan mobil uygulamız için emülatörü çalıştırmak için ise, sol üst tarafta bulunan play butonuna tıklanır ve uygulamanın build edilerek emulatör üzerinde çalıştırılması sağlanır. 1 dakikadan az bir sürede emülatör başlamaktadır.



Bu yazımda sizlere Apache Cordova kullanarak macOS makine üzerinde bir iOS uygulaması denemesinden bahsettim. Konu ile ilgili ayrıntılara Zafer Ayan'ın devnot'da bulunan yazı serisinden erişebilirsiniz.
Daha sonraki yazımlarımda görüşmek dileğiyle...

Kaynaklar : 

https://cordova.apache.org/docs/en/latest/guide/platforms/ios/index.html#requirements-and-support
https://cordova.apache.org/docs/en/latest/guide/platforms/ios/
https://github.com/driftyco/ionic-cli/issues/1910
http://devnot.com/2017/cordova-ile-ilk-mobil-uygulamamizi-olusturalim/
http://devnot.com/2017/cordova-ile-hibrit-mobil-uygulamalara-giris/
https://melahatmindivanli.wordpress.com/2016/08/01/apache-cordova-cordova-nedir/

21 Mayıs 2017 Pazar

OpenStack Temel Bileşenleri


Merhabalar

Bundan önceki yazımda sizlere Openstack'ın ne olduğundan bahsetmiştim. Bu yazımda ise Openstack'ın  temel bileşenlerinden bahsedeceğim.



Openstack'de temel olarak 7 tane temel bileşen olduğunu söylemek mümkündür. Bunlar

  • Nova
  • Glance
  • Swift
  • Neutron
  • Cinder
  • Horizon ve 
  • Keystone olarak sıralamak mümkündür. 

Heat, Ceilometer, Trove ve Sahara gibi yardımcı bileşenlerde bulunmaktadır.

Nova (Compute Service)


  • Nova, OpenStack'ın hesaplama servisidir.
  • En temel işlevi yapan bileşendir.
  • OpenStack servislerinde yapılan işlemlerin yaşam döngülerinin hesaplanması, planlanması ve sonlandırılması işlemlerini düzenler.
  • Sanal makinelerin oluşturulmasını ve yönetilmesini sağlar.
  • KVM, XenServer, VMware ESXi ve Microsoft Hyper-V gibi birden fazla hipervizörü destekler.
  • Hipervizör ile doğrudan konuşur, kullanıcıdan gelen sanal makina isteklerini hipervizöre iletir.
  • Sanal makina için gerekli CPU, Memory, Disk ve Ağ tanımlamalarını gerçekleştirir.
  • Aynı zamanda LXC gibi konteynerları da destekler.


Glance (Image Service)


  • Glance, disk ve sunucu imajlarının kaydedilmesi ve yönetilmesinden sorumlu servistir.
  • Glance, imajları OpenStack Swift de dahil olmak üzere çeşitli backend'lere depolayabilir.
  • Depo ve sanal makinaların disk görüntülerini alır ve Nova servisinin bu bilgiyi yapılandırma sırasıdan kullanmasına olanak verir.
  • Sanal makina üzerinde disk (raw, vmdk, qcow2, vdi, vhd) ve sunucu imaj (iso, tar) yönetimini gerçekleştirir.
  • Canlı olarak sanal makina kopyası (snapshot) alınabilir, geriye yüklenebilir, klonlanabilir.
  • Arka planda OpenStack Cinder servisi kullanılarak ilgili disk ve imajlar yetkilendirilebilir.
  • Yönetici ve kullanıcılara yönelik disk şablonu oluşturulabilir, yeniden kullanılabilir.
  • İstenilen sayıda (sistemin yeterli olması koşulu ile) yedek alınabilir, programlanabilir.


Swift (Object Storage)


  • Swift dağıtık yapılandırılmamış verileri işlemektedir.
  • Görüntü, video, sanal makina imajları ve arşivleri saklamak için mükemmel bir platform sunar.
  • Yüksek erişimli, merkezi bir beyin ve kontrol yapısı olmayan, ölçeklebebilir dağıtık ve kısmnen kararlı bir nesne deposudur. Sanal makina içerisindedir ve sanal makina silindiği zaman bu depolama alanı da silinir.
  • Büyük ölçeklidir, yedeklenebilir ve ölçeklenebilirdir.
  • Geleneksel dosya sistemi yapılarına sahip değildir.
  • Obje ve dosyalar buluta dahil olan sunucuların farklı disk veya disk gruplarına yazılabilir.
  • Replikasyon ve bütünlüğü sağlar. Varsayılan da 3 replika özelliği bulunur. İstenilen ölçülerde yeniden yapılandırılabilir.
  • Depolama kümeleri kolaylıkla yatayda büyüyebilir. Erişilemeyen küme elemanlarının yerine farklı elemanlara trafik gönderilir.
  • Swift, yedekleme, arşivleme ve veri saklama için ideal olan, ekonomik, API erişimli, dağıtılmış, yedekli, ölçeklenebilir bir depolama alanı sunar.


Neutron (Networking)


  • Ağ bağlantıları ile diğer OpenStack servislerin bağlantı kurmasına olanak sağlar.
  • Kullanıcı ağlarını ve eklerini tanımlamak için gerekli API'leri sağlar.
  • Birçok popüler ağ sunucularını ve servislerini destekleyen eklenebilir mimariye sahiptir.
  • Sanal makinaya kendisinin yönettiği DCHP servisinden IP ataması yapar.
  • Open vSwitch veya LinuxBridge yönetimini yapar.
  • Public IP (Floating IP) ataması yapar.
  • Farklı VLAN'lar arası trafik geçişini routing işlemlerini yapar. Layer-2 ve Layer-3 de subnet tanımlamalarını gerçekleştirir.
  • Kullanıcıdan gelen IP ve filtreleme isteklerini gerçekleştirir.
  • Yazılımlı tanımlı ağlar ile entegrasyonu destekler.


Cinder (Block Storage)


  • Sistemde varolan veya açılmak üzere olan sanal makinalara sanal depolama alanı (disk) sağlar.
  • Openstack'ın Nova hesaplama servisi ile tamamen entegredir.
  • Bu depolama alanı sanal makina içerisinde yer almayan, ayrı bir alanda oluşturulup sanal makinaya bağlanan bir depolama alanıdır ve aynı zamanda çalışır durumdaki sanal makinalar için blok depolama alanı sağlar. Harici hard disk gibi düşünülebilir. Bu sayede sanal makina silindiği zaman bu depolama alanları silinmez ve veriler korunmuş olur.
  • Sistemde varolan veya yeni açılmak üzere olan sanal makinalara ekstra disk sağlar.
  • Kullanıcıların arayüz üzerinden disk oluşturma, kaldırma gibi işlemlerini gerçekleştirir.
  • Bilinen birçok depolama marka ve modeli destekler.
  • Blok depolama performansına ihtiyaç duyan servisler (veritabanı vb) için ideal disk alanı sağlar.
  • Kullanıcı sanal makina üzerinden istediği dosya formatında diski kullanabilir.
  • Veritabanı gibi anlık verileri tutan blok depolama birimlerini güvenli bir şekilde yedekleyebilir, canlı olarak geri yükleme yapabilir.


Heat (Orchestration)


  • Uygulama geliştiricilerin veya sistem uzmanlarının kullanabileceği şablon odaklı çalışan bir servistir.
  • API'leri kullanarak Openstack için birden fazla ve birbirinden farklı bulut uygulamalarını yönetir.
  • Otomatik büyüme, ölçeklendirme için çalışır.


Ceilometer (Telemetry)


  • Openstack bulut hesabının kullanım ve performans verilerini görüntülemek ve ölçmek için kıyaslama, ölçekleme ve  istatistiksel hesaplama işlemlerini sağlar.


KeyStone (Identity)


  • Diğer Openstack hizmetleri için kimlik doğrulama ve yetkilendirme hizmeti sunar.
  • Tüm Openstack hizmetleri için uç noktaların (endpoint) bir katalogunu sunar. 
  • Yetkilendirme çerçevesinin çizilmesini sağlar ve kullanıcı haklarını ve projelerdeki kimlik kontrolünü sağlar.


Horizon (Dashboard)


  • Web arayüzünü aktif ederek yönetici ve kullanıcılar için Openstack kaynak ve hizmetlerini yönetmeyi sağlar.
  • Kullanıcıdan gelen istekleri ilgili bileşen servisine çağrı yaparak, asekron bir şekilde gerçekleştirir.
  • Çoklu projelerin bulunduğu mimari yapılarda farklı arayüz seçenekleri ve kullanıcı yetkilendirmesi (hakların düzenlenmesi, kısıtlanması) işlemleri gerçekleştirilebilir.




Bu yazımda Openstack temel bileşenlerinden ve bileşenlerin temel özelliklerinden bahsettim.

Herkese kolay gelsin...