Yazılım teknolojileriyle iligi yaptığım çalışmaları, öğrendiklerimi, aldığım dersleri ve okumaları zaman zaman burada paylaşıyorum. Kapsamın yazılım teknolojilerine yeni başlayan ya da başlayacak olanlar için faydalı olacağını düşünüyorum.
Çalışmaya yıllarca önce teknoloji öğrenmekle ilgili yaptığım denemeleri güncel geliştirme ortam ve araçlarına taşıyarak başlamaya karar verdim. Geliştirme ortamı olarak VSCode'u seçtim. Geçmişte yoğun olarak kulllandığım Vi, Emacs ve Eclipse'den sonra çalışma sürecini hızlandıran kolaylıklar sağlıyor. Ama temelde yapılan iş her zaman aynı.
- Kodu yaz,
- Konfigürasyon kontrole gir,
- Derle / inşa et,
- Çalıştır / test et / hata bul,
- Başa dön.
Geçmişte komut satırından elle yapılan bu işleri tek arayüzden yapmak kolaylık sağlıyor. Ama komutların detayını ve elle nasıl yapılacağını bilmeden bu zengin geliştirme ortamlarını (IDE) kullanmak, özellikle ortam problemlerinin tespit ve çözümünde zorluklara neden olabilir. Bu nedenle kullanılan ortamdaki araçlarla işleri elle / komut satırından yapacak bilgiye ya da bu bilgiye nasıl ulaşılacağını (man sayfaları gibi) bilmek gerekli. Kısaca IDE'den yapılan temel işlerin (derleme, kod çalıştırma, test, debug, konfigürasyon kontrol, ...) komut satırından da nasıl yapıldığının bilinmesinin önemli. Bu bilindiği taktirde hangi IDE'nin kullanıdlığının çok önemi yok ve herhangi bir IDE'yi öğrenmek hızlı ve daha kolay olur.
Yazılım geliştiren bir kişinin programlama dili yanında mutlaka onun derleyicisi (compiler) / yorumlayıcı (interpreter)'sının CLI komutlarının neler oldığunu, inşa (build) için kullanılan mekanizmayı (autoconf, makefile, cmake, ant, maven, ...) bilmesi gerekli. Diğer önemli konu da konfigürasyon kontrol. Konfigürasyon kontrolün önemi ilk kodun yazıldığı günlerden itibaren anlaşılmış ve araçlar geliştirilmiş. Kabaca sırasıyla SCCS, CVS, SVN ve şimdi de ağrılıklı olarak Git kullanılıyor. Ben de pek çok kişi gibi konfigürasyon kontrol aracı olarak Git ve uzak depo (remote repository) olarak da GitHub'ı seçtim.
"Vagrant Box"da "Docker Container"
Proje | Teknoloji | Not |
---|---|---|
Mosquito performans | C / MQTT | MQTT açık kaynak gelişitrmesi olan mosquito için gecikme, jitter ölçümü. |
Kasa | Python / AWS S3 | Amazon S3 ve yerel makineye dosyaların yerelde şifrelenerek etkin şekilde yedeklenmesi. |
PlatformData | Python / node / PubSub / MQTT / Web | Girilen rota, sürat ve mevki bilgisine göre platformu ilerleten ve MQTT pubsub mekanizması ile bunu Internet tarayıcı istemcilere dağıtan bir deneme. |
HostPing | Perl / JS / C / Apache / HTML | Ping için basit bir web arayüzü. Teknoloji entegrasyon gösterimi. |
Find Furthest Number | C++17 / Boost asio | İşe alımlarda uygulanan yetenek / algılama testlerinden biri. |
WordleHelper | Python | Worlde kelime bulma oyununu oynarken kelime bulmaya yardımcı olan bir uygulama. |