Windows bilgisayarınıza MQTT yüklemek

IoT’de yaygın kullanılan Mosquito iletişim protokolünde ayarlar doğru yapıp yapmadığınızı test etmek için Windows bilgisayarınıza MQTT broker yüklemek isteyebilirsiniz. OpenSSL ve pThread kütüphanelerini de yüklemek gerekiyor. Şuradaki adımları takip ederek (ve bu versiyonları kullanarak) çalıştırmak mümkün: Step by step installing and configuring Mosquitto with Windows 7

Basit arayüzlü bir MQTT client’a ihtiyacınız olursa da şu Chrome eklentisini kullanabilirsiniz: MQTTLens

Tagged , , , ,

Git deposuna farklı bir porttan bağlanmak

Git deposuna (varsayılan port 22’de) farklı bir port üzerinden bağlanmanız gerekiyorsa şöyle yapabilirsiniz:

git clone ssh:[email protected]:1234/myproject/myproject.git

 

Bütün OpenWrt paketlerini tek komutta güncellemek

opkg list-upgradable | awk -F ' - ' '{print $1}' | xargs opkg upgrade

 

   _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M

Systemctl ile Systemd Servislerini Yönetmek

Bir ilklendirme sisteminin (init system) amacı Linux kerneli ayağa kalktıktan (boot ettikten) sonra başlatılması gereken bileşenleri ilklendirmektir. İlklendirme sistemi, sistem başladıktan sonra herhangi br zamanda servisleri ve arka planda çalışan programları (daemon) kontrol etmek için de kullanılır.

systemd Linux dağıtımları arasında hızla yaygınlaşan bir ilklendirme sistemi ve sistem yöneticisidir. Ubuntu da 16.04 versiyonunda eskiden kullandığı Upstart’ı systemd ile değiştirdi. systemctl komutu ise systemd’yi kontrol etmeye yarayan temel komuttur.

Continue reading

Linux Patch (Yama) Komutu Kullanımı

Linux’ta yüklediğiniz bir programın yeni versiyonu çıktığında apt-get veya yum gibi bir paket yöneticisi ile güncelleme yapabiliyoruz. Ama bir programı kaynak kodundan derleyerek yüklersek yama olarak yayınlanan güncellemeyi de kaynak koduna uygulamamız gerekir. Veya birisine gönderdiğimiz bir kaynak kodun üzerindeki değişiklikleri de yama dosyası olarak gönderebiliriz, alan kişinin bu yamayı uygulaması gerekir. Linux’ta bu işleri yapabileceğimiz komut: patch.

patch komutunun nasıl kullanıldığını örneklerle açıklayayım.

Continue reading

Gigabyte IoT Gateway BIOS Güncelleme

Gigabyte BXBT-3825 IoT Gateway cihazında Wind River 7 işletim sistemini çalıştıramıyordum. WR Linux yüklü USB diskten boot etmek istediğimde “reboot and select proper boot device or insert boot media in selected boot device and press a key” hatası alıyordum.

Denemelerden sonra bu cihaz üzerinde Windows 7 ve Debian çalıştırabildiğimi gördüm ve cihazda donanım sıkıntısı olmadığından emin oldum. Üstelik, Gigabyte’da boot etmeyen WR Linux imajı Advantech UTX-3115 cihazında çalışıyordu.

BIOS versiyonu F1 görünüyordu. Gigabyte’ın destek sitesinde F1’in 32bit; F3’ün 64bit işletim sistemlerini desteklediğini öğrendim. F3 BIOS yazılımını indirdim ve Windows içinden çalıştırmaya çalıştım. Bu sefer de “bu program DOS modunda çalıştırılabilir” hatası aldım.

Bunun üzerine Rufus‘u kullanarak boot edilebilir bir FreeDOS USB disk hazırladım. İçine Gigabyte’ın sitesinden indirdiğim BIOS yazılımını kopyaladım. Cihazı bu diskten çalıştırdım ve Flash.bat komutunu çalıştırdım.

 

Güncelleme:

Şurada da farklı bir BIOS güncelleme tekniği buldum:

https://software.intel.com/en-us/node/629035

https://software.intel.com/en-us/node/674961

The LightBlue Bean

Bugün bir Kickstarter projesi olarak başlayan “The LightBlue Bean” cihazını test etme fırsatı buldum. 2 bozuk para büyüklüğündeki cihazın üzerinde hem Atmega328 hem de bir sürü sensör var. Arduino uyumlu olduğu için programlaması da çok kolay. Fiyatı biraz yüksek (30$) olsa da bu özelliklerdeki bir cihaz için makul. Saat piliyle çalışıyor. Ve en ilginç özelliği hiçbir kabloya ihtiyaç duymuyor. Tamamen Bluetooth bağlantısı üzerinden programlanıyor! Hatta Android ve iPhone uygulamaları kullanılarak mobil cihazlardan da programlamak mümkün.

Özellikleri şöyle:

  • Atmega 328p (328 MHz)
  • Bluetooth Low Energy (BLE)
  • 3-eksenli ivme-ölçer
  • Sıcaklık sensörü
  • RGB LED
  • 6 dijital I/O, 2 analog output
  • Mac, Windows, iOS, Android uyumlu

LightBlue Bean

LightBlue Bean

 

 

MAC’te dosya ve klasörlerin gelişmiş yetkileri (ACL)

MAC OS X işletim sistemi de Linux gibi Unix temellidir ve Linux’la pek çok benzerliği bulunur. Dosya izinleri de bunlardan birisidir. Mac ve Linux’ta dosyaların sahipleri, aynı gruptaki kullanıcılar ve diğer kullanıcılar için izinleri ayrı ayrı belirlenebilir.

Dosyanın özelliklerini ve izinlerini görmek için `ls -l` komutu kullanılabilir. Örneğin:

ls -l
total 59
drwxrwxr-x+ 97 root  admin  3298  8 Ara 15:43 Applications
drwxr-xr-x+ 63 root  wheel  2142  9 Kas 12:57 Library
drwxr-xr-x@  3 root  wheel   102  8 Ara 12:19 Network
drwxr-xr-x@  4 root  wheel   136  9 Kas 12:59 System
lrwxr-xr-x   1 root  wheel    49  8 Eyl  2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x   7 root  admin   238  8 Ara 10:58 Users
drwxrwxrwt@  3 root  admin   102  8 Ara 12:19 Volumes
drwxr-xr-x@ 39 root  wheel  1326  9 Kas 12:59 bin
drwxrwxr-t@  2 root  admin    68  2 Eki 12:35 cores
dr-xr-xr-x   3 root  wheel  7634  8 Ara 12:19 dev
lrwxr-xr-x@  1 root  wheel    11  2 Eki 12:34 etc -> private/etc
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 home
-rw-r--r--@  1 root  wheel   313 23 Ağu 05:35 installer.failurerequests
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 net
drwxr-xr-x@  6 root  wheel   204  2 Eki 12:35 private
drwxr-xr-x@ 59 root  wheel  2006  9 Kas 12:59 sbin
lrwxr-xr-x@  1 root  wheel    11  2 Eki 12:34 tmp -> private/tmp
drwxr-xr-x@ 12 root  wheel   408  2 Eki 12:39 usr
lrwxr-xr-x@  1 root  wheel    11  2 Eki 12:34 var -> private/var

İlk sütun dosya veya klasörün (kullanıcı, aynı gruptaki kullanıcılar ve diğer kullanıcılar için) izinlerini belirtir.

d/l => directory (klasör) / file (dosya)
r => read (okuma)
w => write (yazma)
x => execute (çalıştırma)

Bazı dosyalarda ilk sütunun sonunda + veya @ işareti olduğunu görüyoruz. Bu dosyalar için klasik POSIX izinlerine ek olarak ACL (access control list) yetkileri tanımlanmıştır. `ls -le` veya `ls -l@` komutlarıyla ayrıntılarını görebilirsiniz:

ls -l@
drwxr-xrwx   28 mustafa  staff   952  8 Ara 17:45 Desktop
drwxr-xrwx   18 mustafa  staff   612  7 Ara 09:35 Documents
drwxr-xrwx  103 mustafa  staff  3502  7 Ara 21:33 Downloads
drwxr-xrwx@  37 mustafa  staff  1258  8 Ara 22:39 Dropbox
	com.apple.FinderInfo	  32 
drwxr-xrwx@  19 mustafa  staff   646 30 Kas 14:25 Google Drive
	com.apple.FinderInfo	  32 

 

Şimdi gelelim, durup dururken bu ACL’den neden bahsettiğime. Sisteminizdeki pek çok hatanın kaynağı dosyalarınızın izinlerini bozmanız olabilir. Benim örneğimde, bilgisayarımı şirket ağına bağlaması için götürdüğüm IT görevlisi bana bir şey sormadan kullanıcı klasörümdeki tüm dosyaların yetkilerini değiştirmişti. Bunun üzerine bana ait olan dosyaları silmek veya değiştirmek istediğimde her seferinde şifre sormaya başladı. Word, Excel her açılışta “kaydedilmemiş dökümanlarını kurtarmaya çalışıyoruz” şeklinde uyarı vermeye başladı. Evernote her açılışta “notunu kaydedemiyorum” hatası vermeye başladı. Hatta, Android Studio projemi derlememeye başladı.

Benim bulduğum çözüme gelirsek, ACL tanımlarını kaldırmak için `chmod -RN DOSYA_ADI` komutunu kullandım. Sonra da tüm dosyalarımın izinlerini 644, tüm klasörlerimin izinlerini 755 yaptım.

chmod -RN DOSYA_ADI
find ./ -type d -exec chmod 755 {} \;
find ./ -type f -exec chmod 644 {} \;

Not: bu komutlar benim sorunumu çözdü, ama sizin sisteminizde başka yazılımların çalışmasında hataya neden olabilir.

Not 2: (çok hızlı gelen edit) benim sistemimde de kullanıcı dizinimin altında çalıştırmam gereken dosyalar varmış. pek doğru bir iş olmasa da Android SDK’sını kullanıcı klasörümün altına koymuşum. bu dosyalar için kendime `chmod u+x DOSYA_ADI` komutuyla çalıştırma izni vermem gerekti.

Videoları FFMPEG ile Youtube’a yüklemek için kodlamak

ffmpeg -i <input file> -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart <output_name>.mp4

kaynak: https://www.virag.si/2012/01/web-video-encoding-tutorial-with-ffmpeg-0-9/

CMake ile basit bir OpenCV örneği derlemek

Öncelikle OpenCV’yi yüklemeniz gerekiyor. Eğer Mac kullanıyorsanız Homebrew kullanarak nasıl yükleyeceğinizi görmek için şu yazıma göz atabilirsiniz: http://mustafa.aldemir.net/mac-os-x-el-capitan-uzerinde-opencv3-yuklemek/

 

CMakeLists:

cmake_minimum_required(VERSION 2.8)
project(Project1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_PREFIX_PATH "/usr/local/opt/opencv3/share/OpenCV")

set(SOURCE_FILES main.cpp)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(cv_project1 main.cpp)

target_link_libraries(cv_project1 ${OpenCV_LIBS})

 

 

main.cpp:

#include <opencv2/core/utility.hpp>
#include <iostream>

using namespace std;


const char* keys =
        {
                        "{ b build | | print complete build info }"
                        "{ h help  | | print this help           }"
        };

int main(int argc, const char* argv[])
{
    cv::CommandLineParser parser(argc, argv, keys);

    if (parser.has("help"))
    {
        parser.printMessage();
    }
    else if (!parser.check())
    {
        parser.printErrors();
    }
    else if (parser.has("build"))
    {
        std::cout << cv::getBuildInformation() << std::endl;
    }
    else
    {
        std::cout << "Welcome to OpenCV " << CV_VERSION << std::endl;
    }

    return 0;
}