Devnot Summit 2017 İstanbul'dan Akılda Kalanlar

Devnot.com'un organize ettiği Developer Summit İstanbul 8 Nisan 2017 cumartesi günü Kadir Has Üniversitesi'nde gerçekleştirildi.

Açılış konuşmasını yapan Hakan Erdoğan, yazılımcılar olarak kendimizi sadece teknolojik olarak geliştirmemizin yetmeyeceğini, dikeyde uzmanlaşırken yatayda da gelişme göstermemiz gerektiğini, interdisipliner çalışmamız gerektiğini, ülke olarak teknoloji devrimini kaçırma lüksümüzün olmadığını, başta yazılımcılar ve mühendisler olmak üzere herkese büyük sorumluluk düştüğünü belirtti.

Konuşmanın tamamını buradan izleyebilirsiniz.



İlk oturumda Engin Polat "Yük Altında Çalışan Web Uygulamaları Geliştirme" başlıklı sunumuyla, Network (Load Balancer) - Middleware (Framework) - Client-Data Layer aşamalarında yük altında sorunsuz çalışabilmesi için neler yapılması gerektiğinden bahsetti. Middleware olarak ASP.NET Core framewoku ile demo gerçekleştirdi. 

Konuşmanın tamamını buradan izleyebilirsiniz.



Lemi Orhan Ergin
, "Temiz Kod Tasarımı" inceliklerinden bahsederken, "kodun sadece çalışmasından daha değerli olan değişimlere karşı ayak uydurabilmesi" olduğunun altını çizdi.
Yazılım modelimizin Low Coupling ve High Cohesion olması gerektiğine vurgu yaparken, kodun kokmaması için sürekli refactoring refactoring refactoring yapılması gerektiğini belirtti.
Sunumdan bir kesiti buradan izleyebilirsiniz.

Burak Selim Şenyurt, kendi şirketinde çok eski projeleri nasıl revize ettiğini, revize işlemlerinde kullandığı betik dilleri ile "Script Tabanlı Dillerin Önemi ve Geleceği"nden bahsetti. Powershell ile Star Wars müziği çaldı. Ruby ile oğlu S(h)arp'ı etkilediği kadar salondan aynı tepkiyi alamadı :)

Muhammed Can Tahiroğlu, Linux kernelinin yazan CPU aşığı Linus Torvalds'ın hikayesinden bahsetti.
Linus, kendisine verilen Benevolent dictator for life ünvanı ile Linux'un geleceği konusunda alınan kararlarda son söz hakkına sahip olduğunu belirtti. Kendine meydan okuyan adamın hikayesinin tamamını buradan okuyabilirsiniz.
Günümüzde Linux ve Windows'un birbirine yakınlaşması sonucunda Linux'un kazandığı söylenirken aslında kazananın bizler, geliştiriciler olduğunu belirtti.

Gökhan Şengün"Kendi Kendini Ölçekleyen ve Yöneten Sistemler Geliştirmek" başlıklı sunumuyla baştan sona tüm süreci otomatize edebileceğimizi ve bunun için yapılması gereken twelve factor app prensiplerinden bahsetti.
Redis kullanmayan geliştiriciyi dövüyorlarmış :)

Etkinliğin organizatörü olan Uğur Umutluoğlu, "Ölçeklenebilir Kod Yazmak" için neler yapılması gerektiği, nasıl bir yapı kurmak gerektiği ve projelerde hepimizin yaptığı yanlış tanımlamaların veya kullanımların doğrusunun nasıl olması gerektiğinden bahsetti.

Son olarak Recep Duman, son zamanlarda trend olan ve zaman içerisinde mobil uygulamaların yerini alacağı düşünülen chatbotlar ve akıllı asistanlar ile bizi tanıştırdı.

Chatbot örnekleri arasında benim geliştirmiş olduğum Nöbetçi Eczane Botu'da yer aldı. Nöbetçi eczane botunun kullanım videosunu buradan izleyebilir, https://m.me/nobetcieczanebotu adresine tıklayarak veya aşağıdaki kodu facebook messenger üzerinden okutarak hemen kullanmaya başlayabilirsiniz.

Eş zamanlı oturumlar olması sebebi ile katılamadığım Bora Kaşmer'in "TypeScript ile Angular 2 Uygulamaları Geliştirmek" başlıklı sunumu ve İbrahim Kıvanç'ın "Mobile DevOps: Çalıştır, Test Et, Yayınla ve İzle" başlıklı sunumları gibi toplam 15 oturum ile dolu dolu, keyifli, kaliteli içerikleri ile kapalı gişe olan bu etkinlik için emeği geçen herkese çok teşekkürler. 

Günün diğer karelerini ve paylaşımlarını twitterdan #DevnotSummit hastagı altından ulaşabilirsiniz.

 

Ubuntu Üzerinde OpenCV Kurulumu

Merhaba,

İlk önce gerekli paketleri yükleyelim.

$ sudo apt-get install build-essential

Zorunlu paketler

$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

Opsiyonel paketler

$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

OpenCV Kaynak Kodlarının İndirilmesi

Kaynakları "/down/" klasörü altına indirdiğinizi varsayalım.

OpenCV github deposuna gidin ve en güncel stabil versiyonu git ile klonlayalım.

$ cd down
/down$ git clone https://github.com/opencv/opencv.git

Eğer OpenCV ekstra paketlerine ihityacınız varsa aynı şekilde git ile klonlayalım.

/down$ git clone https://github.com/opencv/opencv_contrib

OpenCV yi derlemeden önce indirdiğiniz opencv klasörü altına geçici "release" adında bir klasör oluşturalım.

/down/opencv$ mkdir release
/down/opencv$ cd release
/down/opencv/release$

Şimdi derlemek için OpenCV!yi nasıl yapılandırmak istediğimizi belirtmeliyiz.

/down/opencv/release$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/down/opencv_contrib/modules /down/opencv/

Not: "/down/" benim oluşturduğum klasör adı. Siz çalıştığınız klasör adı ile değiştirebilirsiniz.
Derlemek ve yüklemek için aşağıdaki komutları çalıştıralım.

Not2: Eğer opencv dosya yolu bulanamıyor şeklinde bir hata ile karşılaşıyorsanız, OPENCV_EXTRA_MODULES_PATH parametresinde belirttiğimiz dosya yolunu /home/<kullanıcı adı>/down/opencv_contrib/modules/ /home/<kullanıcı adı>/down/opencv/ şeklinde opencv'nin ve opencv ekstra modüllerinin tam dosya yolunu belirtirseniz bulunduğunuz klasörden bağımsız olarak sorunsuz şekilde derleyebilirsiniz.

/down/opencv/release$ make -j8
/down/opencv/release$ sudo make -j8 install

Not3: -j8 parametresi opsiyoneldir. Sadece make komutu çok uzun sürecektir. Paralel olarak bir çok çekirdek ile çalıştırmak isterseniz çekirdek sayınıza göre ekleyebilirsiniz.

Şuana kadar herhangi bir sorun yaşanmadı ise kurulum başarıyla tamamlanmıştır.

Kurulumu ve OpenCV versiyonunu kontrol etmek için aşağıdaki komutu çalıştırabiliriz.

$ pkg-config --modversion opencv

Ben 3.2 yi kurduğum için ekranda 3.2.0 yazacaktır.

Kaynak: OpenCV docs - Installation in Linux

Theano - Keras Kurulumu ve Keras Backend'in Theano ile değiştirilmesi

Merhaba,

Ubuntu 16.04 üzerinde CUDA ile Theano kurulum için aşağıdaki komutları çalıştırabilirsiniz

sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git
sudo pip install Theano

# cuda 7.5 don't support the default g++ version. Install an supported version and make it the default.
sudo apt-get install g++-4.9

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc

sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

# Work around a glibc bug
echo -e "\n[nvcc]\nflags=-D_FORCE_INLINES\n" >> ~/.theanorc

Theano kurulumundan sonra pip ile Keras kurulumunu yapabiliriz.

sudo pip install keras

Keras versiyonunu aşağıdaki python3 komutu ile öğrenebilirsiniz.

python3
>>> import keras
>>> print(keras.__version__)

Çıktı olarak keras versiyonunu görüyor olmalısınız. (Örn: 1.2.2)

NOT: Keras backend olarak Tensorflow ve Theano kullanmaktadır. Backend olarak default olarak Tensorflow tanımlı olduğundan eğer Tensorflow yüklü değil ise hata alabilirsiniz.
Tensorflow yüklü olmadığına dair hata mesajı ile karşılaşıyorsanız, Tensorflow kurulumu ile ilgili yazıma buradan ulaşabilirsiniz.

Keras Backend'ini Tensorflow yerine Theano ile değiştirme

Keras'ı en az bir kere çalıştırdıysanız Keras backend ayar dosyasını aşağıdaki konumda bulabilirsiniz.

~/.keras/keras.json

keras.json dosyasını metin düzenleyiciniz ile açtığınızda aşağıdaki default tanımlamaları göreceksiniz.

{
    "image_dim_ordering": "tf",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

Backend'de Theano yu kullanmak için aşağıdaki şekilde düzenleyebilirsiniz.

{
    "image_dim_ordering": "th",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "theano"
}

Ayar dosyasındaki düzenlemeyi yaptıktan sonra yeniden Keras kullanımını test edelim.

python3
>>> import keras

Keras ı import ettiğinizde "Using Theano backend." mesajını görüyor olmalısınız.

GPU Destekli Tensorflow Kurulumu

Merhaba,
GPU destekli Tensorflow kurulumu için ön gereksinimler şunlardır;

Ubuntu 16.04 üzerinde CUDA kurulumu yazısı paylaşmıştım. Diğer gereksinimler ile ilgili resmi kaynakları aşağıdaki maddelerden ulaşabilirsiniz.

  • CUDA Toolkit 8.0 (Detaylar ve kurum için tıklayınız.)
  • cuDNN v5.1. (Detaylar ve kurulum için tıklayınız.)
  • CUDA Hesaplama kapasitesi 3.0 ve üzeri GPU kartı. (Destekli kart listesini görmek için tıklayınız.)

Aşağıdaki komut ile NVIDIA CUDA Profil Araçları Arabirimi, CUDA uygulamalarını için profil oluşturma ve izleme araçlarının oluşturulmasını sağlayan libcupti-dev kütüphanesini yükleyebilirsiniz.

sudo apt-get install libcupti-dev

Pip yardımı ile kolay şekilde Tensorflow kurulumunu gerçekleştirebilirsiniz.

Pip yükle değil ise aşağıdaki komut ile yükleyebilirsiniz.

sudo apt-get install python-pip python-dev

Aşağıdaki komutlar ile uygun python versiyonunuza göre yükleyebilirsiniz.

sudo pip uninstall tensorflow (Python 2.7 için)
sudo pip3 uninstall tensorflow (Python 3.x için)
pip install tensorflow-gpu  (Python 2.7 için, GPU destekli)
pip3 install tensorflow-gpu (Python 3.x için, GPU destekli)


Yüklenme işlemleri sorunsuz tamamlandı ise aşağıdaki şekilde python ile Tensorflow testimizi yapabiliriz.

python3
>>> import tensorflow as tf
>>> txtHello = tf.constant('Merhaba derin ogrenme')
>>> sess = tf.Session()
>>> print(sess.run(txtHello))

Çıktı olarak 'Merhaba derin ogrenme' görüyorsanız Tensorflow başarıyla çalışıyor demektir.

Kaynak: https://www.tensorflow.org/install/install_linux

Ubuntu 16.04 de Nvidia CUDA Kurulumu

Merhaba,
Nvidia CUDA kurulumunda eğer Ubuntu açılışında siyah ekran ve kullanıcı girişinde döngüye düşme sorunu ile karşılaştırsanız aşağıdaki adımları sırasıyla uygularsanız sizin için de çözüm olabilir.

  1. https://developer.nvidia.com/cuda-downloads adresinden işletim sisteminiz ile uyumlu versiyonun runfile(local) yükleme tipini seçerek indiriyoruz.
  2. "sudo sh cuda_8.0.61_375.26_linux.run" komutu ile kurulumu yapıyoruz.

    NOT: CUDA kurulumu adımlarında Nvidia driver'ını kurulmasını kabul ettiğinizde siyah ekran ile ubuntu kullanıcı girişi döngüsüne düşme sorunu yaşayabilirsiniz.
    • grub boot ekranında "e" tuşuna basıyoruz.
    • "quiet splash" yazan satırı bulunuz ve "nomodeset quiet splash" olarak değiştiriyoruz.
    • F10 ile başlatıyoruz.
    • "ctrl + alt + f1" ile terminal ekranına geçiyoruz.
    • "sudo apt-get purge nvidia*" ile nvidia driverını kaldırıyoruz.
    Nvidia kaldırıldığında ubuntu normal şekilde açılacaktır.

    Sorun yaşmadan kurulum için Nvidia driver kurulumunu sorununa 'no' diyerek atlıyoruz. Diğer kurulumları tamamlıyoruz.

  3. Nvidia driver'sız CUDA kurulumundan sonra Nvidia driver kurulumu için aşağıdaki komutları çalıştırıyoruz.
    sudo add-apt-repository ppa:graphics-drivers/ppa

    sudo apt-get update
    sudo apt-get install nvidia-375
  4. "nvcc -V" (nvcc'den sonra boşluk var) komutu ile yüklediğimiz CUDA versiyonunu kontrol ediyoruz.
  5. "nvidia-smi" komutu ile driver versiyonunu kontrol ediyoruz.

 

Kurulum sonunda PATH variables tanımlamaları için aşağıdaki komutları çalıştırıyoruz.

  • export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
  • 32 bit için;
    • export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  • 64 bit için;
    • export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

 

NOT: Nisan 2018 itibariyle CUDA 9.0, CUDNN 7.0.5, nvidia-384 versiyonunu kurabilirsiniz.