Etiketler

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... 

OpenStack Nedir ?



Merhabalar

Bu yazımda sizlere OpenStack'den bahsedeceğim. Ancak OpenStack den önce sanallaştırma ve bulut bilişim kavramlarına hakim olmak gerekmektedir. Bu konularla ilgili bilgilere daha önceki yazılarımdan ulaşabilirsiniz.



Openstack, veri merkezlerinde yüksek hesaplama, depoma ve ağ kaynaklarının yönetimini ve kontrolünü sağlamak amacıyla tasarlanan; IaaS modelinde bulut bilişim hizmeti vermek üzere oluşturulmuş ücretsiz ve açık kaynak kodlu bir hizmettir.

Tarihçe


Temmuz 2010 - Rackspace başlangıçta tam dağıtık nesne depolama yazılımı olarak açık kaynak kodlu bir platform oluşturmuştur.
Ekim 2010 - Openstack projesi başlatıldı.
Ocak 2011 - NASA tarafından Nebula adı verilen bir hesaplama platformu oluşturulmuştur.
Eylül 2012 - Openstack Foundation kuruldu. 

Temel Özellikler

  • Açık kaynak kod ile geliştirilmiştir. Apache lisansı ile lisanslıdır.
  • Python ve Django programlama dilleri ile yazılmıştır.
  • Geliştirme süreçlerinde şeffaf ve açık bir yönetim biçimi bulunmaktadır ve geri bildirimlere önem verilmektedir.
  • Diğer bulut teknolojilerinde olduğu gibi otomatik ölçeklendirilme yapılabilir ve büyüme senaryoları rahatlıkla uygulanabilmektedir. 
  • Sistem yöneticileri bulut sistemi üzerinde tam yetki ile istenilen şekilde yönetim yapabilmektedirler. 
  • Açık, özel ve karma bulut modellerinde çalışabilmektedir.
  • Openstack bütün bulut türlerini desteklemektedir ve ölçeklenebilir, yönetim kapasitesi yüksek platformlar oluşturulmasına olanak sağlamaktadır.
  • Openstack birbirleriyle ilişkili servisler kullanarak alt yapı hizmeti için çözüm sunmaktadır.
  • Her servis birbiriyle entegrasyonu kolaylaştıran (API) uygulama arayüzüne sahiptir.
  • İhtiyaçlara göre servislerin bir kısmı yada tamamı yüklenebilir.
  • Her 6 ayda bir sürüm çıkmakta ve bu sürümdeki gelişmeler ile ilgili Openstack Summit düzenlenmektedir.

Kimler Kullanıyor ? 

  • Openstack'i Rackspace, Canonical, Nasa, Dell, Cisco gibi bir çok kurum ve kuruluş kullanmaktadır.
  • Eylül 2015 deki Forrester Araştırmasında OpenStack için Özel bulut için baskın platform tanımlaması kullanılmıştır.
  • Fortune 100 listesindeki BMW, Disney ve WallMart gibi firmalar OpenStack kullanmaktadır.




Neden OpenStack ? 

  • Esneklik, düşük maliyet ve açıklık sağlar. 
    • Bulut sistemindeki yapılar ihtiyaçlar doğrultusunda istenildiği gibi esnek bir şekilde düzenlenebilir, düşük maliyetle ihtiyaçlar karşılanabilir.
  • Openstack ortamında canlı bir topluluk mevcuttur. IRC kanalları üzerinden ve e-posta grupları üzerinden destek alınabilmekte, iletişim içerisinde olunabilmektedir.
  • Online kullanım ve kurulum dökümanları mevcuttur.
  • Standart veya commodity donanımla çalışılabilir, özel bir donanıma yada bunun özel bir satıcısına gerek yoktur.
  • Yatay ölçeklendirme ile birçok erişilebilirlik bölgesi tanımlanabilir, rol tabanlı yönetim sağlanabilir.

Bu yazımda OpenStack'in ne olduğunu genel bir çerçeve çizerek anlatmaya çalıştım. Bundan sonraki yazım olan  OpenStack temel bileşenlerinde görüşmek üzere.

Herkese iyi pazarlar...

20 Mayıs 2017 Cumartesi

Bulut Bilişim

Merhaba Arkadaşlar

Bundan bir önceki yazımda sanallaştırmadan bahsetmiştim.  Bu yazımda da sanallaştırma teknoloji ile beraber ortaya çıkan 'Bulut Bilişim' den bahsedeceğim.


Bulut bilişim internet üzerinden bir hizmet platformu ile kullandığın kadar öde ücretlendirme modeli ile hesaplama (compute) gücü, veri depolama, uygulama ve diğer bilişim teknolojileri kaynaklarının talep üzerine bir hizmet olarak sunulmasıdır.

Avantajları :

  • Düşük maliyet olanağı sağlar. Her firma kendisi veri merkezi kurmak zorunda değildir. Bunu hizmet olarak başka bir servis sağlayıcısından alarak sunucu, elektrik gibi masraflarla uğraşmasına gerek kalmaz.
  • Esneklik ve Verimlilik sağlar. İhtiyaçlar doğrultusunda kullanılan kaynak çok büyük rahatlıkla arttırılabilir yada azaltılabilir. Bu da kaynakların verimli kullanılmasına olanak sağlar.
  • Paylaşım ve İş Birliği imkanı sağlar. Bulut kullanıcılarının işbirliğini artıracak ve bilgi paylaşımını sağlayacak yönde yazılım ve servisler geliştirmelerine olanak sağlar.
  • Erişim Kolaylığı sağlar. İnternet üzerinden güçlü işlem ve depolama kaynaklarına hızlıca ulaşılabilir.
  • Çevre Dostudur, fiziksel sunucuların kullanımına göre enerji tasarrufu sağlar.

Dezavantajları : 

  • Erişim problemleri yaşanabilir. Bağlantı internet ile sağlandığı için internette yaşanacak sorunlar sistemleri kullanma konusunda problem oluşturur.
  • Güvenlik açıklıkları her sistemde olduğu gibi bulut sistemlerinde de mevcuttur. 
  • Veri denetlenebilirliği, uygunluğu ve yasal düzenlenmeler bulut servisi alınan servis sağlayıcısının bulunduğu konuma göre çeşitlilik gösterebilir. Bu konuda detaylı araştırma yapılmalıdır.

Bulut Türleri


Bulut türleri; açık bulut, özel bulut, topluluk bulutu ve karma bulut olarak 4'e ayrılmaktadır.












Açık Bulut :


Bir hizmet hizmet sağlayıcısı tarafından sağlanan çok kiracılı, bulut sunucuları ile bulut sisteminin anı konumda olmadığı sistemlerdir. Herkese açık bulutlardır. 

Özel Bulut:

Özel bulutlar, bulut sunucularının bulut sistemini kullananlar ile aynı konumda olduğu, sistemi kullanlara özel bir kurulum yapıldığı durumdur. Örnek olarak bir bankanın yada belediyenin kendi bulut sistemini kullanması gösterilebilir.

Topluluk Bulutu:

Topluluk bulutu ise özel bulutun birden fazla topluluk yada kurum-kuruluş tarafından kullanılmasıdır. Örneğin bir bulut sistemini 3 bankanın bir arada kullanması yada belediyelerin kamu bulutu olarak ortak bir bulut sistemi kullanmasıdır.

Karma Bulut:

Karma bulut sistemleri ise açık ve özel bulut sistemlerinin hatta topluluk bulut sistemlerinin bir arada kullanıldığı bulut sistemleridir. 
Örneğin bir banka büyük veri olarak adlandırılan verilerini bir bulut hizmeti alarak açık bulutta saklamakta ancak e-posta sunucusunu kendi sunucu odasındaki bulut sisteminde kurmak isteyebilir. Bu durum karma bulut kullanımına örnek olarak verilebilir. 


Bulut Hizmet Modelleri







Bulut bilişimde verilen hizmetler 3 ana başlık altında incelenebilir.

IaaS - Infrasture as a Service : Alt yapı hizmeti.
PaaS - Platform as a Service : Platform Hizmeti
SaaS - Software as a Service : Yazılım Hizmeti


IaaS : Donanım kaynakları harici bir servis sağlayıcı tarafından sağlanır ve hizmet alan müşteriler için yönetilir. Örneğin, AWS (Amazon Web Service), Rackspace Cloud, Google Compute Engine, OpenStack.

PaaS : Donanım kaynaklarına ek olarak işletim sistemi katmanı da servis sağlayıcı tarafından yönetilir. Uygulama geliştiricilerin uygulamalarına odaklanmalarına olanak sağlar, onların alt yapı ile ilgilenmelerine veya alt yapı ihtiyaçlarını güncellemek için efor harcamalarına gerek kalmaz. Örneğin, Google App Engine, Redhat Openshift, Heroku, Cloud Foundry, Pivotal.

SaaS : Diğer iki modele ek olarak uygulama katmanı da servis sağlayıcısı tarafından yönetilir. Arka tarafta yapılan işlemler kullanıcıları ilgilendirmez, uygulamayı rahatla kullanabilirler. Örneğin, Dropbox, Office 365, Salesforce, Gmail.





Bu yazımda sizlere bulut bilişimin ne olduğundan, bulut türlerinden ve bulut hizmet modellerinden bahsetmeye çalıştım. 

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

Kolay gelsin herkese :)