Tüm liste:

  • fatihaygun.com
  • Plaka tanıma
  • GPS haritası
  • Movie database
  • ...

Detaylar makalenin devamında... 

fatihaygun.com

Şu anda görüntülemekte olduğunuz web sitesi. Teknik özellikleri şu şekilde:

  • Joomla 5 + Gantry 5 Hydrogen tema
  • Raspberry Pi 4 üzerinde çalışıyor (düşük enerji tüketimi, ortalama 5 watt/h)
  • Docker container (nginx + PHP + MariaDB + Let's Encrypt*)
  • Dynu dinamik DNS (ddclient crontab)
  • Turksat kablonet 100/20 özel devre (CGNAT havuzundan çıktık çok şükür)
  • FSP Champ 3K Online UPS ile maksimum uptime (mahallede elektrik kesilirse, binadaki Turksat'ın dağıtım kutusu ve dolayısıyla internet gider)
  • Sadece yıllık domain ücreti ödenir. Evde hosting bedava. 😉
  • https daha önce vardı hatırlarsanız. Docker ile uyumlu bir config bulabilirsem Let's Encrypt'i tekrar ekleyeceğim. ;)

2012'de domain adresi boşa düşünce hemen almıştım. Prensip olarak kredi kartı kullanmıyordum, fakat domaini alabilmek için bir kredi kartı gerekiyordu. PAÜ'deki bir sınıf arkadaşıma rica etmiştim ve ücretini elden vermiştim. O zamanlar 10$=20₺ idi, KDV falan da yoktu. Daha sonra son sınıfta o arkadaşla biraz bozuştuk. Canı sağolsun lakin çok ayıp etmişti. (O konuyu da belki bir gün farklı bir makalede paylaşırım ve linkini buraya bırakırım.)

İlk başlarda bazı ücretsiz web hosting hesapları ile birkaç sayfa hazırlamıştım. İş güç derken pek fazla bir içerik oluşturamamıştım. 2017'den beri aktif olarak Raspberry Pi kullanıyorum ve bir noktadan sonra web sitemi buradan yayınlamaya başladım. İlk hostumuz RPi 3B modeliydi. Uzun yıllar hizmet verdi ama hala çalışır durumda. Özellikleri biraz düşük kaldığı için bir süredir istirahat ediyor kendileri. Belki farklı bir projede yeniden sahalara döner, kim bilir... :D

Plaka tanıma

(A)LPR: (Automatic) License Plate Recognition

Gerekli malzemeler:

  • OpenALPR (docker imajı)
  • Raspberry Pi (4 veya 5)
  • USB ile bağlı harici disk(ler)
  • Aksiyon kamera ile çekilmiş kamera görüntüleri
  • Veritabanı (tercihen docker üzerinde)

Yapılışı:

Aslında mevzu şundan ibaret. Hususi aracımla ya da bisikletimle trafikte seyir halindeyken kayıt etmiş olduğum videoları görüntü işleme teknikleriyle analiz ederek taşıtların plakalarını tespit etmek ve veritabanında istiflemek. Tabi ki çok çeşitli plaka tanıma sistemleri mevcut. Şu aşamada görüntü işleme algoritmalarının derinlerine dalmak yerine, bu iş için geliştirilmiş OpenALPR isimli küçük bir uygulamayı kullandım. Bu uygulama bir noktadan sonra ücretli hale geldiği için, biraz eski olsa da, ücretsiz olan en güncel sürümü için bir docker imajı oluşturdum. Ardından videoların yer aldığı klasörün içine küçük bir shell script yazdım. Bu script, bulunduğu klasördeki mp4 uzantılı dosyaların isimlerine göre bir for döngüsü ile videoları sırayla işliyor. for döngüsü her dosya için yeni bir container oluşturuyor ve çıktısını da aynı isimde bir txt dosyası oluşturup içine yazıyor. Sonraki adımda ise bu txt dosyaları işlenerek veritabanına aktarılıyor. Dosyadaki her satır videodaki bir kareye karşılık geliyor. Videonun başlangıç zamanı ve 30/60 fps değeri ile hangi plakanın ne zaman görüldüğü bilgisi de hesaplanabilir. Size de fikir vermesi açısından scripti altta paylaşıyorum.

#!/bin/bash
for file in *.mp4; do
    sudo docker run -it --rm -v $(pwd):/data:ro openalpr -d -j -n 20 -c eu -p tr "$file" > "${file%.mp4}.txt"
done

OpenALPR, isminden de anlaşıldığı üzere, canlı video akışındaki plakaları da otomatik tespit etme yeteneğine sahip. Tabi bunun için biraz daha fazla işlem gücü gerekiyor. Belki ileride farklı bir projede Rpi benzeri bir sbc ve kamera ile daemon uygulamasını da deneyebilirim.

Afiyet olsun... 😉

GPS haritası

GPS: Global Positioning System
GPX: GPS Exchange Format

Hususi aracımla ya da bisikletimle trafikte seyir halindeyken ya da yürüyüş yaparken kullandığım Relive, Strava vb. uygulamalardaki aktivitelerde oluşan GPS verilerini, bir Java uygulamasıyla işleyip veritabanında istiflemek.

XML biçimindeki GPX verilerini işlemek için jSoup isimli Java kütüphanesini kullandım. GPX dosyaları, aktivite sırasında belirli aralıklarla (her sn gibi) toplanan verileri içeriyor. Bu veriler, aktivitenin metadata bilgileri ve her nokta (trkpt) için enlem/boylam/zaman/rakım (lat/lon/time/ele) bilgilerinden oluşuyor. Ayıklanan bu verilerle farklı analiz ve hesaplamalar yapılabilir. Örneğin, ortalama hız, ivme, mesafe, harcanan/kaybedilen güç, mola süreleri vs.

Diğer projelerdeki ortak verilerle eşleştirilerek farklı analizler de yapılabilir tabi. Yazılım geliştirmenin sınırı yok, tamamen hayal gücünüze kalmış. 😉

Movie database

Hepimiz boş zamanlarımızda birşeyleri takip ediyoruz. Tabi herkesin tarzı ve yöntemi farklı. Kimisi sinemaya gitmekten hoşlanır, kimisi evinde TV ya da bilgisayar karşısında vakit geçirmeyi sever. Dolayısıyla film endüstrisi de eğlence kategorisindeki en büyük sektörlerden birisi. Hayal edemeyeceğimiz kadar çok miktarda içerik üretiliyor ve bunları takip etmek de bir o kadar zor. Tüm bu içeriği tüketebilmek mümkün olmadığı için, neyi tüketeceğimiz hakkında bir ön araştırma yapmak ve seçici olmak gerekiyor. Bu konuda detaylı bilgiler içeren bir çok platform mevcut ve birçok kişi tarafından takip ediliyor. Bazılarında kendi listelerinizi de oluşturabiliyorsunuz ve başkalarıyla paylaşabiliyorsunuz. Tabi bu platformlar bugün var yarın yok. Zaman harcayıp biriktirdiğiniz bilgiler de bir anda buhar olabiliyor. Tek nedeni bu olmasa da, her zamanki gibi biz yazılım geliştiriciler yine kendi göbeğimizi kendimiz kesmeyi tercih ediyoruz.

Tabi bizim işimiz daha ziyade veri ile olduğu için yine bu tarz bir yöntem seçtim. Şu meşhur film veritabanı sitesi, verilerini sıkıştırılmış biçimde yayınlıyor. "non-commercial datasets" diye ararsanız bulabilirsiniz. Orada yedi tane tar.gz dosyası var. Bunları indirip arşivden çıkardığınızda bazı tsv dosyaları göreceksiniz. Tab-seperated-values biçimindeki bu verileri geliştirdiğim uygulama ile işleyip veritabanına atıyorum ve hangi filmleri dizileri izlediğimi ve hangilerini izleyeceğimi, planlamamı buradan yapıyorum.

...devamı gelecek...