Wemos D1 Mini ve Micropython - Giriş

Merhaba, öncelikle Aliexpress'de bulunan Wemos Store'dan Wemos D1 Mini'yi satın alabilirsiniz.

Not: Bu yazıdaki aşağıdaki talimatlar Ubuntu üzerinde uygulanmaktadır.

https://micropython.org/download/ adresine giderek en son micropython sürümünü indirelim.

Bugün itibariyle geçerli sürüm: esp8266-20170612-v1.9.1.bin

ESP8266 micropython firmware'ünü wemos d1'e yüklememiz için esptool'u kullanacağız.

pip install esptool

 Wemos D1 güç girişi ile bilgisayarınızın USB girişine bağlayalım.

Tüm serial aygıtları ls /dev/tty* komutu ile görebiliriz. Benim bilgisayarımda wemos d1 usb bağlantısı /dev/ttyUSB0 şeklinde gözükmektedir.

Micropython'u cihaza yazmadan önce flashı temizleyelim.

sudo esptool.py -p /dev/ttyUSB0 erase_flash

Şimdi indirdiğimiz micropython frameworku cihaza flashlayalım.

sudo esptool.py -p /dev/ttyUSB0 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170612-v1.9.1.bin 

Cihazı terminal ekranı üzerinden başlatmak için sudo apt-get install screen komutu ile gerekli paketi yükleyelim.

Aşağıdaki komut ile cihazı terminal üzerinde başlatalım.

screen /dev/ttyUSB0 115200

İlk anda byük ihtimal boş bir ekran ile karşılaşabilirsiniz. Enter tuşuna basarak komut girmeye hazır duruma gelmiş olacaktır. Aşağıdaki gibi python komutlarınızı deneyerek çalıştığını görebilirsiniz.

 Aşağıdaki şekilde cihaz üzerindeki ledi yakıp söndürme örneğini de yapalım.

>>> from machine import Pin
>>> led = Pin(2, Pin.OUT)
>>> led(0)
>>> led(1)

 

Caffe'de draw_net.py AttributeError: object has no attribute '_values' hatası çözümü

Caffe'de ağınızı görsel olarak aşağıdaki komut ile çizdirmek istediğinizde,

~/caffe$ python python/draw_net.py examples/net_surgery/conv.prototxt my_net.png

AttributeError: 'google.protobuf.pyext._message.RepeatedScalarConta' object has no attribute '_values' hatası ile karşılaşanlar için çözüm olarak;

caffe-master içerisinde python/caffe/draw.py python dosyasında 94,96,98,107,109,111 satırlarını aşağıdaki şekilde düzenleyiniz.

layer.convolution_param.kernel_size[0],
layer.convolution_param.stride[0] if len(layer.convolution_param.stride) > 0 else 1,
layer.convolution_param.pad[0] if len(layer.convolution_param.pad) else 0)

layer.pooling_param.kernel_size,
layer.pooling_param.stride,
layer.pooling_param.pad)

 

Değişiklik sonrası hatasız çalışacaktır.

Kaynak:
https://github.com/BVLC/caffe/issues/5375
https://github.com/BVLC/caffe/issues/3698#issuecomment-258759498

 

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.