Author

Hasan Eren Keskin

Browsing

Her sene bitiminde bitirmiş olduğumuz yıl hakkında, sene başında ise önümüzdeki yıl içerisindeki beklentilerim ve planlarım hakkında bir yazı yazmaya çalışıyorum. Bu senenin başında da var olan gidişatla ilgili bir yazı yazmıştım. Biraz sallantılı başlayan bir yıl olması aslında gidişatını gösteriyormuş diyebiliriz. Yazımda da belirttiğim gibi senenin başında bana maddi getiriden başka bir şey kazandırmadığını düşündüğüm eski işimden ayrılıp yeni fırsatlar aramaya başlamıştım. Tam bu sırada hepimizi dize getiren korona virüs salgını patladı ve yaklaşık 4 ay işsiz kaldım. Bu süreçte yaptıklarımı da yine bir önceki yazımdan bulabilirsiniz. Mayıs ayından sonra duygusal olarak kötü birkaç ay geçirdim. Bu döneme paralel olarak temmuz ayında yeni bir işe başlamamın ardından artık hayatımı Ankara’ya taşıdım. Bir süre daha Ankara’da kalacağım gibi duruyor. 4…

DPDK ile ilgili hazırlamış olduğum bir sunum sırasında Türkçe içerik eksikliğini görerek, aldığım notları derlediğim bir içerik oluşturmak istedim. Benim de içerisine yeni dahil olduğum bir yapı olduğu için vereceğim bilgiler tecrübelerden daha çok araştırdığım yabancı kaynakların derlenmesi sonucu ortaya çıkmış oldu. Bazı terimlerin Türkçe karşılığı anlamsız kaldığı için ve bu alanla ilgilenen insanların halihazırda bu terimleri bildiğini varsaydığım için İngilizce olarak kullandım. Kısaca DPDK’nın tarihinden bahsederek başlamak istiyorum. Data Plane Development Kit yani DPDK, 17 Eylül 2010’da BSD (Berkeley Software Distribution) lisansı ile yayınlandı. 2013 Nisan’dan itibaren dpdk.org üzerinde tamamen bağımsız ve kendi topluluğu olan bir hal aldı. Mikroişlemci üreticileri ve mimari geliştiriciler tarafından da desteklenerek projenin büyümesi hızlandırıldı. Günümüzde ise Linux Foundation tarafından destekleniyor. DPDK’nın amaçladığı ana iş…

Birbirini hiç yalnız bırakmaması gereken iki kavram üzerine biraz konuşmak istiyorum. Öncelikle günümüzde bazı kelimelerin her yerde kullanılarak içinin boşaltılmış olmasından oldukça rahatsızım. Bunun siyasal, politik boyutundan bahsetmiyorum, en basitinden karşıdakine edilen hitap kelimeleri bile anlamsız hale gelmeye başladı. Ben bir insana, içimde beslemediğim bir duyguyu belli edecek kelimeler kullanmaktan oldukça kaçınan birisiyim. Yolda gördüğüm bir insana “Kardeşim bir bakar mısın?” gibi bir cümleyi çok dalgın bir anıma gelmemişse, kurmam. Çünkü orada yatan kardeş kelimesinin bambaşka bir anlamı vardır bende. Bir insana kolayca edilen “canım, aşkım, hayatım” kelimeleri bunların altını boşaltmaktan başka bir şey ifade etmemekte benim için. Kimisi için basit görünen bu duygu içeren kelimelere çok mu edebi yaklaşıyorum bilmiyorum ama böyle hitap edilmemesi gerektiğini düşünmekteyim. Özellikle kız arkadaşların…

Birim (Unit) testleri yazarken sadece kendi içerisinde statik olarak uygulanan algoritmalarla çalışmayız, hatta çoğu zaman bu şekilde çalışmayız. Onun yerine diğer objelerle sürekli etkileşimde olan, gerçek zamanlı (real time) olarak işlemler gerçekleştiren şekilde tasarımlar yaparız. Benzer sistem tasarımlarının testlerini yazarken de her zaman gerçek objeler üzerinde çalışamayız. İşte tam olarak burada karşımıza kurtarıcı niteliğinde bir kavram çıkıyor, Mocking. Mock kavramı anlamı itibarı ile taklit objeler oluşturmamıza izin vermektedir. Gerçek zamanlı testlerde karşılaşacağımız objelerin taklit edilen hallerini oluşturarak testimize dahil etmemize yarar. Bu yazıda üzerinde işlem gerçekleştireceğimiz Mock framework’ü ise GoogleMock (gMock) olacak. Yazı içerisindeki anlatımların bir çoğunu YouTube kanalımda anlattığım GoogleTest video serisi içerisinden de ulaşabilirsiniz (Henüz yayınlanmadı). Mock objeleri ile diğer diller üzerinde çalışırken sizin için işin bir kısmını…

Yazılımda test kavramı sadece kelimelerle aşina olduğum bir durumdu ancak daha öncesinde hiç üzerine araştırma yapmamış, hiç bir yerde kullanma ihtiyacı hissetmemiştim – ne salakmışım. Bir sistemi kafanda kurguluyorsun, kağıt üzerinde adım adım her şey çalıştırıyorsun, oturup kodunu yazıyorsun ama sonra canlıya çıkınca bir bakıyorsun patır patır dökülüyor. Bunun hepimizin öncesinde karşılaştığı bir problem olduğunu düşünüyorum. Kimse yoktur ki “Benim yazdığım kod tek seferde babalar gibi çalışır, kafamda oluşturduğum yapı Nikola Tesla’nın yansılarında oluşturduğu gibi kusursuz çalışır halde olur” diyebilsin. İşte bu problemleri, kodu yazdıktan sonra debug etme süresini, oluşabilecek ekstra senaryoları ve projenin ilerleyen süreçlerinde yapılacak ekleme çıkartmaların yazdığınız koda etkisini görebilmek için test yazmak çok büyük önem arz ediyor. Hele bir de gömülü sistemler gibi yazdığınız kodun çıktılarını…

Çok uzun zamandır bloguma ne kişisel ne de uğraştığım şeylerle ilgili içerik girmiyordum. Ancak artık bloguma biraz daha önem verip içerikler oluşturmaya karar verdim. Yeni içerikler için de başlangıç olarak hepimizin muzdarip olduğu konuyu kendi özelimde ele almak istedim. 2020 hepimiz için ‘mutluluk’ getirecek bir sene olarak başlamış gibi görünüyordu ama çok geçmeden foyası ortaya çıktı. Depremler, savaşlar, salgın hastalıklar derken herkes için hayat farklı bir hal almaya başladı. Bunun sosyolojik ve ekonomik etkileri içinde bulunduğumuz virüs salgınından kurtulduktan sonra hızlı bir şekilde ortaya çıkacaktır. Sosyologlar konu üzerine onlarca tez yazacaklardır, sosyal medya ekonomistleri ise kimsenin ciddiye alıp dinlemeyeceği yüzlerce methiyeler düzeceklerdir – millet haksız da sayılmaz bu dinlememe konusunda. Ben geçtiğimiz sene Haziran ayında mezun olduktan sonra Eskişehir’de bir…

Bir önceki yazımda bir dizin içerisindeki dosyaların isimlerinin nasıl değiştirileceğini anlatan bir Python script’i paylaşmıştım. Bu yazımda ise bir dizin içerisindeki görsel boyutlarının nasıl küçültüleceğini hakkındaki script’imi (python image resize) paylaşacağım. Görsel küçültme işlemi için yararlandığım kaynak: https://www.techtrekking.com/how-to-compress-images-using-python/ Şimdi ise bu işlemi bir dizin içerisindeki tüm dosyalar üzerinde nasıl gerçekleştireceğimize bakalım. İlk olarak Python Image Library olarak da bilinen PIL (Pillow) paketini pip ile sisteminize dahil etmeniz gerekiyor. pip install Pillow Eğer Python 2.x ve 3.x versiyonlarını aynı sistemde kullanıyorsanız bu işlemi yaparken pip3 kullanmanız gerekebilir. Yukarıdaki script içerisinde ‘path’ değişkeni ile script’i çalıştıracağımız dizinin adresini alıyoruz ve bu ana dizin yolumuz oluyor. ‘extensions’ değişkeni ise bir liste halinde bu script’ten etkilenmesini istediğiniz dosya türlerini içerisinde tutuyor. ‘files’ değişkeni sayesinde…

Python dili ve kullanım alanları hakkında bilgi sahibi değilseniz araştırarak ne kadar kuvvetli bir dil olduğunu öğrenebilirsiniz. Şu an çalıştığım yerde Raspberry Pi üzerinden GPIO işlemleri yapmak için, hem masaüstü hem de Raspberry Pi ekranı için görsel arayüzler tasarlamak için ve de bazı hayatınızı kolaylaştırabilecek kod blokları yazarak iş yükünüzü çok kolay bir şekilde azaltabilmenize fayda sağlıyor. Üzerinde çalıştığımız bir projede içerisinde neredeyse 2.000 JPG, PNG ve PDF dosyası olan bir klasör vardı ve bizden ilk aşama için istenilen şey bu görsellerin hepsinin ismindeki boşlukların “-” ile değiştirilmesi, tüm Türkçe karakterlerin Unicode karakterlere dönüştürülmesi ve tüm görsel adının küçük harf olmasıydı. Belki 20-30 dosya için bu işlemi el ile yapmak daha kolay bir yol olabilir ancak söz konusu 2.000 dosya…

Seri haberleşme ve Paralel haberleşme arasındaki farktan daha önceki yazılarımda bahsetmiştim. Seri haberleşmelerin en çok kullanılanlarından birisi olan SPI yani Serial Peripheral Interface haberleşme protokolünden bahsedeceğiz. SPI haberleşme protokolü master/slave yapısını baz alarak çalışır ve full-duplex işleme izin verir. SPI haberleşmesi gerçekleştirebilmek için 4 pin gereklidir. Bunlar; MOSI (SDO) (Master Out Slave In)MISO (SDI) (Master In Slave Out) CS (SS) (Chip Select)Clock (SCL, CLK) Burada bulunan MOSI ve MISO veri aktarımını gerçekleştirdiğimiz pinlerdir. CS pini ile hatta bulunan herhangi bir slave aygıtı seçmemiz sağlanıyor. Clock pini ise seri haberleşme gereği olarak verilerin iletilmesini sağlıyor. Veri iletimi 8-bit olarak gerçekleşir. CS pinini kullanarak slave seçimini yaptıktan sonra master cihazından göndermek istediğiniz veriyi MOSI pinini Lojik 0 ve Lojik 1 şeklinde binary…