Python Context Manager: İstisnalara Rağmen Kaynaklar Nasıl Güvenle Temizlenir?

Bir dosyayı açtınız, veritabanına bağlandınız veya bir kilidi ele geçirdiniz. Tam işinizi bitirecekken kod bir istisna fırlattı! Kaynağı serbest bırakmayı unuttuysanız dosya tanıtıcıları tükenebilir, bağlantılar açık kalabilir ya da uygulamanız kilitlenebilir. Python’ın with ifadesi, işler yolunda gitse de gitmese de temizlik adımının çalışmasını sağlayarak bu problemi zarifçe çözer.

Devamı...

Java Veri Tipleri, Değişkenler ve Diziler: Tip Güvenliğine Sağlam Bir Başlangıç

Java’da her verinin bir kimliği vardır: tipi! Bir değişkenin sayı mı, karakter mi yoksa mantıksal değer mi taşıyacağı önceden belirtilir. Bu yaklaşım başlangıçta biraz katı görünse de hataların daha kod çalışmadan yakalanmasını sağlar. Gelin Java’nın tip güvenliği dünyasına, değişkenlerine ve aynı türden verileri düzenleyen dizilerine yakından bakalım.

Devamı...

İki Teker Üstünde Dans: Ters Sarkaçla Kendi Kendini Dengeleyen Robot

iki-teker-ustunde-21

İki tekerlekli bir robotun devrilmeden ayakta kalması ilk bakışta sihir gibi görünür. Oysa robotun yaptığı şey, düşmeye başladığı yönü sürekli ölçmek ve tekerleklerini aynı yöne sürerek gövdesini yeniden ağırlık merkezinin altına taşımaktır. Bu hızlı geri besleme döngüsü; mekanik, sensör füzyonu ve kontrol teorisinin eğlenceli bir birleşimidir.

Devamı...

HRI Güvenliği: Robotlarla Teması Nasıl Daha Az Riskli Hâle Getiriyoruz?

İnsanlarla aynı çalışma alanını paylaşan robotlar artık yalnızca bilim kurgu filmlerinde değil; fabrikalarda, hastanelerde ve laboratuvarlarda karşımıza çıkıyor. Ancak bir robotun nazikçe kahve uzatmasıyla kontrolsüz biçimde kolumuza çarpması arasında ciddi bir güvenlik farkı var. İnsan-robot etkileşimi, yani HRI güvenlik standartları, bu farkı şansa bırakmak yerine temas olasılığını, çarpışma enerjisini ve uygulanabilecek kuvveti sistematik olarak sınırlandırır.

Devamı...

Hassas Montajda Robotun Dokunma Duyusu: Kuvvet Geri Beslemeli Manipülasyon

Bir robotun milimetrenin altında toleransa sahip bir parçayı yuvasına yerleştirdiğini düşünün. Yalnızca konum komutlarını takip eden robot, küçük bir hizalama hatasında parçayı sıkıştırabilir veya kırabilir. Kuvvet geri beslemeli manipülasyon ise robota adeta bir dokunma duyusu kazandırır: Robot sadece nerede olduğunu değil, çevreyle nasıl temas kurduğunu da anlayarak hareketini düzenler.

Devamı...

Fırtınada Bile Gören Robotlar: Otonom Araçlarda Sensör Füzyonu

Güneşli bir günde yolu algılamak otonom araçlar için görece kolaydır. Ancak sis çöktüğünde, yağmur kamera görüntüsünü bozduğunda veya kar taneleri LiDAR ölçümlerinde hayalet noktalar oluşturduğunda işler değişir. Sensör füzyonu, farklı sensörlerin güçlü yanlarını birleştirerek aracın tek bir ölçüme körü körüne güvenmesini önler. Kısacası ekip çalışması yapar: Kamera renkleri söyler, radar mesafeyi ölçer, LiDAR çevrenin üç boyutlu haritasını çıkarır.

firtinada-bile-goren-83

Devamı...

Diferansiyel Sürüşlü Robotlar Tekerlek Hızı Farkıyla Nasıl Döner?

Diferansiyel sürüşlü bir robotun direksiyonu yoktur; buna rağmen kıvrak biçimde dönebilir, hatta olduğu yerde kendi ekseni etrafında dans edebilir. Bu yeteneğin sırrı, sağ ve sol tekerleklerin farklı hızlarda döndürülmesidir. Alışveriş arabasını tek taraftan daha güçlü ittiğinizi düşünün: hız farkı, aracın yönünü değiştirir.

diferansiyel-suruslu-robotlar-65

Devamı...

C++’ta const Referanslar ve Geçici Nesne Ömrü: Sessiz Tuzaklar

cta-const-referanslar-21

C++’ta const T& gördüğümüzde genellikle “güvenli, değiştirilemez referans” diye düşünürüz. Ancak geçici nesneler devreye girdiğinde konu yalnızca değiştirilebilirlikten ibaret değildir. Referansın neye, nerede ve nasıl bağlandığı; geçici nesnenin hemen yok edilmesini de kapsam sonuna kadar yaşamasını da sağlayabilir. Kısacası const, bazen nesneye adeta fazladan can verir.

Devamı...

C# ve .NET Mimarisinin Temelleri: Kaynak Koddan CLR’a Yolculuk

Bir C# programında Console.WriteLine yazıp çalıştır düğmesine bastığımızda perde arkasında küçük bir teknoloji festivali başlar. Kaynak kod derlenir, ara dile çevrilir, çalışma zamanı tarafından incelenir ve makine koduna dönüştürülür. C# ile .NET arasındaki ilişkiyi anlamak; performans, hata ayıklama ve taşınabilirlik gibi konuları ezberden değil, sağlam bir mimari üzerinden değerlendirmeyi sağlar.

Devamı...

C++ Şablonlar: Türlerden Bağımsız Jenerik Kod Yazmak

Aynı toplama, karşılaştırma veya sıralama işlemini int, double ve başka veri türleri için tekrar tekrar yazmak pek eğlenceli değildir. C++ şablonları, algoritmayı bir kez tanımlayıp onu farklı türlerle kullanmamızı sağlar. Böylece derleyici, ihtiyaç duyulan türe uygun kodu bizim için üretir; biz de kopyala-yapıştır bataklığından kurtuluruz.

Devamı...

C Önişlemci Komutları: Makrolar ve Koşullu Derleme Rehberi

C dilinde kaynak kod, doğrudan makine koduna çevrilmez; önce birkaç aşamadan geçen küçük bir yolculuğa çıkar. Önişlemci, bu yolculuğun derlemeden hemen önceki durağıdır. #include, #define ve #if gibi direktifleri işler; başlık dosyalarını ekler, makroları genişletir ve hangi kod parçalarının derleyiciye ulaşacağını belirler. Kısacası önişlemci, sahne açılmadan önce dekoru hazırlayan görünmez bir ekip gibidir.

Devamı...

C Göstericiler: Belleğin Adres Defterini Okumak

C dilinde göstericiler, ilk karşılaşmada belleğin karanlık sokaklarında dolaşmak gibi görünebilir. Oysa bir gösterici yalnızca başka bir nesnenin bellekteki adresini saklayan değişkendir. Bu mekanizmayı kavradığınızda dizilerin, dinamik belleğin, fonksiyon parametrelerinin ve veri yapılarının neden bu kadar verimli çalıştığını da anlamaya başlarsınız.

Devamı...

Tek Bir Beyin Yok: Sürü Robotları Nasıl Birlikte Düşünüyor?

tek-bir-beyin-30

Bir robotun odadaki nesneleri toplaması etkileyicidir; yüzlerce küçük robotun lider olmadan alan taraması, yük taşıması veya kayıp bir kişiyi araması ise bilim kurgu gibi görünür. Sürü robotiği, tam olarak bu kolektif davranışı inceler. Karıncaların yiyecek bulması ve kuşların çarpışmadan uçması gibi doğadaki örneklerden esinlenen yaklaşımda karmaşık görevler, basit yerel kurallara uyan çok sayıda robot tarafından çözülür.

Devamı...

Shell Here-Document Girintisi: EOF Neden Bozulur ve Nasıl Düzeltilir?

Shell betiklerinde <<EOF ile oluşturulan here-document yapısı, çok satırlı metinleri bir komuta aktarmanın en rahat yollarından biridir. Ancak kodu daha okunaklı yapmak için sınırlayıcıya girinti eklediğinizde Shell aniden metnin hiç bitmediğini düşünebilir. Sorun görsel hizalama değil, kapanış sınırlayıcısının karakter karakter eşleşmek zorunda olmasıdır.

Devamı...

Sert Gripper’ların Şekil Krizi: Her Nesne Neden Aynı Şekilde Kavranamaz?

Endüstriyel robotların ucundaki esnek olmayan, yani rijit gripper’lar; düzenli kutuları taşırken son derece başarılıdır. Ancak karşılarına yumurta, tornavida, muz veya eğimli bir makine parçası çıktığında işler değişir. Sabit geometrili parmaklar nesnenin yüzeyine uyum sağlayamaz ve robotun güçlü kolu, bir anda nesneyi düşüren ya da ezen pahalı bir sakara dönüşebilir.

Devamı...

Robotlar Görmeyi Nasıl Öğrenir? Etiketli Veri Darboğazı

Bir robotun masadaki bardağı tanıması bize son derece doğal görünebilir. Ancak robot için görüntü, anlamlı nesnelerden değil, sayısal piksel dizilerinden oluşur. Denetimli öğrenme bu sayılara anlam kazandırabilir; fakat bunun için binlerce, hatta milyonlarca doğru etiketlenmiş örnek gerekir. Robotik dünyasında bu gereksinim, algılama modellerinin önündeki en pahalı ve en inatçı engellerden biridir.

Devamı...