Kayıtlar

programlama etiketine sahip yayınlar gösteriliyor

Kullanıcı Kılavuzu Nasıl Okunur

Resim
Kullanıcı kılavuzlarını okumayı seven azınlıktan biriyim. Sadece aldığım araçların değil, almayı düşündüğüm araçların da kullanıcı kılavuzlarına duruma göre ya göz atar ya da onları tamamen okurum. Bakış açınıza göre kendimi bolca övdükten ya da yerin dibine soktuktan sonra konumuza devam edebiliriz. Hem iş hayatımda hem de özel hayatımda insanlara teknik konularda yardım etmem gereken durumlar olabiliyor. Çoğunlukla kullanıcı kılavuzu okunsa ortada bir soru veya sorun da olmayacak aslında. Yine de kimseye RTFM demem, diyemem, mizacıma ters. Bununla birlikte RTFM'den bahsetmeden geçmeyelim. RTFM, read the fucking manual ifadesinin baş harflerinden oluşan, Türkçeye kahrolası kullanıcı kılavuzunu oku şeklinde çevrilebilecek bir internet argosudur. Genellikle cevabın belgelerde, kullanıcı kılavuzunda, kullanım kılavuzunda, man sayfasında, çevrimiçi yardımda, internet forumunda, yazılım belgelerinde veya SSS'de kolayca bulunabileceği temel bir soruyu yanıtlamak için kullanılır....

std::unordered_set'te std::pair Kullanımı

Resim
Bazı durumlarda, std::pair 'lerden oluşan std::unordered_set veya std::unordered_map kullanmak isteyebilirsiniz. Ancak, std::pair öntanımlı olarak hash'lenebilir değildir, bu nedenle aşağıdaki kod parçacığı çalışmayacaktır: İnternette bir pairhash sınıfı tanımlamak ve std::unordered_set veya std::unordered_map'e şablon parametresi olarak bu hash fonksiyonunu vermek önerilerine denk gelebilirsiniz. Bu kötü bir fikir değildir. Aslında başkalarınca da kullanılacak bir kütüphane yazıyorsanız muhtemelen bunu yapmalısınız. Ama bazı durumlar için daha iyisi yapılabilir... Yukarıdaki kod parçacığını değiştirmeye gerek kalmadan çalışmasını sağlamak için kodumuza aşağıdaki gibi bir ekleme yapmamız yeterlidir: Bu, epey sade bir kod ortaya çıkarmamızı sağlar: Ancak, bunu yeniden kullanılabilecek bir kütüphanede yapmaktan kaçınmak iyi olabilir, çünkü std::pair için bir hash işlevi tanımlamak için habersizce benzer bir hile yapan olursa kod çakışmasına neden olabilir. Ayrıca yeni bir ...

Advent of Code

Resim
Advent of Code , 2015'ten beri devam eden Noel temalı bir programlama yarışmasıdır. Advent of Code, yazılım mühendisi Eric Wastl tarafından yürütülmektedir. Wastl her yıl, dört-beş aylık bir çalışmayla yirmi beş bulmacayı önceden oluşturmakta ve test etmektedir. Çeşitli beceri setlerini ve seviyelerini kapsayan programlama bulmacaları, herhangi bir programlama dili kullanılarak çözülebilir. Bulmacalar sırayla çözülmesi gereken iki bölümden oluşur, ilk bölüm doğru çözülene kadar ikinci bölüm kullanıcıya gösterilmez. Katılımcılar bulmacanın tamamladıkları her bölümü için bir altın yıldızla ödüllendirilir. Her bulmaca, tüm katılımcılar için aynı olan kurgusal bir arka plan hikayesi içerir, ancak herkes farklı bir girdi verisi alır ve farklı bir doğru sonuç üretmelidir. Bulmacalar 1 Aralık'tan 25 Aralık'a kadar her gece yarısı yayınlanmaktadır. Bulmacaları tamamlamak için herhangi bir zaman sınırı yoktur ve geçmiş yıllardaki etkinliklerden bulmacalar çözülmeye devam etmektedir...

Periyodik Parola Değişiklikleri NIST Tarafından Neden Önerilmiyor?

İşletmeler varlıklarını siber suçlulardan korumak için yıllardır parolalara güveniyor. Ancak parolalar artık kurumsal ağlar, sistemler, cihazlar ve tabii ki veriler için en büyük güvenlik tehditlerinden birini oluşturuyor. 2019'da şirketlerin %42'si parolaların ele geçirilmesi nedeniyle veri ihlali mağduru oldu. Bu durum 2021'de daha da kötüleşti ve kurumsal ihlallerin %61'i artık çalınan kimlik bilgileriyle ilişkili. Artık parolayla ilgili saldırılar yalnızca yaygın olmakla kalmıyor, aynı zamanda çok pahalıya da mal oluyor; olayların ortalama maliyeti yaklaşık 870.000 dolardır. Kurumsal varlıkları ve kullanıcıları korumak için, birçok en iyi güvenlik uygulaması periyodik parola değişiklikleri önermektedir. Ancak bu eski "geleneksel bilgelik" National Institute of Standards and Technology (NIST, Ulusal Standartlar ve Teknoloji Enstitüsü) tarafından önerilmemektedir. Nedeni de şöyle: Parola Tabanlı Güvenliğin Riskleri Genel olarak kurumsal güvenlik politikalar...

License Classifier

ASLA ve OSLC sanırım artık güncellenmiyor. Şimdilerde lisansları saptamak için ne kullanılıyor diye araştırdığımda Go ile geliştirilen  License Classifier ile karşılaştım. License Classifier, içerdiği lisans türünü belirlemek için metinleri analiz edebilen bir kütüphane ve araç kümesi. Bir dosyadaki lisans metinlerini arıyor ve bunları bilinen lisansların bir arşiviyle karşılaştırıyor. Üzerinde çalışılabilecek dosyalar, içinde tek veya birden çok lisans bulunan LICENSE, COPYING gibi dosyalar olabileceği gibi açıklama satırlarında lisans bilgileri olan kaynak kodu dosyaları da olabilir. Her sonuçla birlikte lisans eşleştirmesinin ne kadar doğru olduğunu gösteren bir güven seviyesi de veriliyor. 1.0 güven düzeyi tam eşleşmeyi belirtirken, 0.0 güven düzeyi araştırılan metnin herhangi bir lisansla eşleşmediğini gösteriyor. Yeni Lisanslar Ekleme Projenin kullandığı veritabanına yeni bir lisans eklemek basit. Projenin licenses dizini altında bir metin dosyası oluşturulur. Dosya...

GMP C++ Arayüzü

Bu yazıda kısaca GMP 'nin C++ sınıfı tabanlı arayüzünü açıklamaya çalışacağım. Tüm GMP C dili türleri ve fonksiyonları, gmp.h başlık dosyası extern "C" niteleyicilerine sahip olduğundan C++ programlarında kullanılabilir, ancak sınıf arayüzünün sunduğu aşırı yüklenmiş fonksiyon ve operatörlerin C++'ta kullanımı daha uygun olabilir. GMP'nin tüm C++ sınıfları ve fonksiyonları gmpxx.h başlık dosyasıyla sağlanır. Derlenecek programlar libgmpxx ve libgmp kütüphanelerine bağlanmalıdır. Örneğin: g++ mycxxprog.cc -lgmpxx -lgmp Tanımlanan sınıflar şu şekildedir: mpz_class mpq_class mpf_class Bu sınıflarla aritmetik işlemlerin yapılabilmesi için standart operatörler ve çeşitli standart fonksiyonlar aşırı yüklenmiştir. Örneğin: Gerçeklemenin önemli bir özelliği, a = b + c gibi bir ifadede b + c bölümünün geçici öğeler kullanılmadan, karşılık gelen mpz_add öğesine tek bir çağrıyla hesaplanabilmesidir. Doğası gereği a = b * c + d * e gibi ara değerler göstere...

GMP: Sınırsız Aritmetik

Resim
GMP , işaretli tamsayılar, rasyonel sayılar ve kayan nokta sayıları üzerinde işlemler için keyfi hassasiyetli bir aritmetik kütüphanesidir . Hassasiyet konusunda GMP'nin üzerinde çalıştığı makinedeki kullanılabilir bellek miktarı dışında pratik bir sınır yoktur. GMP zengin bir fonksiyon setine sahiptir ve tüm fonksiyonları düzenli bir arayüze sahiptir. GMP, kriptografi uygulamaları ve araştırmalarında, internet güvenliği uygulamalarında, cebir sistemlerinde, hesaplamalı cebir araştırmalarında yaygın olarak kullanılmaktadır. GMP, hem küçük işlenenler hem de büyük işlenenler için olabildiğince hızlı çalışacak şekilde tasarlanmıştır. Hız, temel aritmetik türü olarak tam sözcüklerin kullanılmasıyla, hızlı algoritmaların tercih edilmesiyle, çok sayıda MİB için en yaygın iç döngüleri sağlayan yüksek düzeyde optimize edilmiş assembly kodlarının yazılmasıyla ve hız üzerine özellikle eğilinmesiyle elde edilmiş. İlk sürümü 1991'de çıkan GMP'nin yılda yaklaşık bir kez yeni...

Pi'de Kendi Yerine Yerleşen Dizeler

Resim
Pi'ye karşı özel bir ilgim olmasa da Numberphile 'da izlediğim bir videodan sonra izlediklerimi pekiştirmek için kısa bir araştırma yaptım. Pek kimsenin ilgisini çekmeyeceğini biliyorum ama en azından aradan belli bir zaman geçtikten sonra hatırlamamı kolaylaştırsın diye bu araştırmadaki notlarımı buraya koyuyorum. İlk önce matematikle pek sıkı fıkı olmayanlar için Wikipedia'daki Pi sayısı maddesinden Pi'nin tanımını hatırlayalım: Pi sayısı (π), bir dairenin çevresinin çapına bölümüyle elde edilen irrasyonel bir matematik sabitidir. İsmini, Yunanca çevre anlamına gelen περίμετρον sözcüğünün ilk harfi olan π'den alır. Pi sayısı, Arşimet sabiti ve Ludolph sayısı olarak da bilinir. Şimdi yazının ortaya çıkmasını sağlayan ve yazının devamını okumanız konusunda sizi teşvik edecek videoyu izleyelim, eğer daha önce izlemediysek: Videoda Pi'den 3 ve virgülü çıkardıktan sonra kalan parçasında acaba hangi dizelerin (karakter katarlarının) kendi değerine karşı...

OpenNMT

Resim
OpenNMT , nöral makine çevirisi ve nöral dizi öğrenmesi için açık kaynaklı bir ekosistemdir. Aralık 2016'da Harvard NLP grubu ve SYSTRAN tarafından başlatılan OpenNMT, o zamandan beri çeşitli araştırma ve endüstri uygulamalarında kullanılmıştır. Halen SYSTRAN ve Ubiqus tarafından geliştirilmesi sürdürülmektedir. OpenNMT iki popüler derin öğrenme çatısında gerçekleme sunmaktadır: OpenNMT-py : PyTorch 'un kullanım kolaylığından yararlanan kullanıcı dostu ve çok kipli bir gerçeklemedir. OpenNMT-tf : TensorFlow ekosistemine dayanan modüler ve kararlı bir gerçeklemedir. Her gerçeklemenin kendine özgü özellikleri vardır ancak benzer hedefleri paylaşır: Son derece yapılandırılabilir model mimarileri ve eğitim prosedürleri Gerçek dünya uygulamalarında kullanım için verimli model sunma yetenekleri Metin oluşturma, etiketleme, özetleme, görüntüden metne dönüştürme ve konuşmadan metne dönüştürme gibi diğer görevler için eklentiler OpenNMT ekosistemi ayrıca tam bir nö...

pkg-config

pkg-config , uygulamaları ve kütüphaneleri derlerken kullanılabilecek yardımcı bir araçtır. Sistemde kurulu olan kütüphaneleri sorgulamak için birleşik bir arayüz tanımlar. Programcıların ve kurulum betiklerinin, kütüphane dosyalarının isimleri ve konumları gibi ayrıntılı bilgilere sahip olmadan da çalışmasını sağlar. Özellikle ilk defa karşılaşılan kütüphaneleri kullanan uygulamaları derlerken işleri kolaylaştırır. pkg-config aslen Linux için tasarlanmış olsa da artık çeşitli BSD dağıtımları, Microsoft Windows, macOS ve Solaris gibi işletim sistemleri için de mevcuttur. İlk gerçeklemesi James Henstridge tarafından kabuk betiği olarak yazılan, daha sonraysa Havoc Pennington tarafından GLib kütüphanesi kullanılarak C'de yeniden yazılan pkg-config, kütüphaneler hakkında aşağıda bazı örnekleri görülebilecek çeşitli bilgiler verir: C veya C++ derleyicisi için parametreler Bağlayıcı için parametreler Söz konusu paketin sürümü Bir RPM, deb veya başka bir ikili paketleme sis...

Kirogi

Resim
Kirogi , dronlar için yeni bir yer kontrol uygulaması. KDE topluluğundan Eike Hein , gökyüzünü özgür yazılım tarzıyla fethetmek isteyenler için geliştirmeye başlamış kısa bir süre önce. Uygulamanın akıllı telefonlar, tabletler ve masaüstü bilgisayarlarda çalışması hedefleniyor. Kirogi'nin köken hikayesi aslında pek çok özgür yazılım projesiyle ortak sayılır. Bir özgür yazılım geliştiricisi yeni bir donanım alır. Donanımla birlikte sunulan yazılım ya istendiği kadar iyi ya da hiç çalışmaz. Özgür yazılım geliştirici de hem kendisi hem de tüm insanlık için aldığı donanıma yönelik özgür bir yazılım geliştirmeye karar verir. Donanım yerine herhangi bir ihtiyacı koyduğunuz zaman bahsettiğim ortaklık daha iyi anlaşılabilir sanırım. Kirogi'nin başlıca özellikleriyse aşağıdaki gibi sıralanabilir: Doğrudan uçuş kontrolleri Navigasyon haritası üzerinde dokunarak uçurma Takla atma, kalibrasyon gibi araç hareketlerini tetikleyebilme Oyun kumandası ve oyun çubuğu desteği Canlı v...

Bir Uygulama Nasıl İnşa Edilir: Bilmeniz Gereken Her Şey

Resim
Tom Scott, yaklaşık bir yıldır takip ettiğim bir YouTube içerik üreticisi. Dün Google destekli How to build an App: Everything you didn't know you needed to know isimli yeni video serisini duyurdu. Aklında bir-iki uygulama fikri olan ve çoktan ilk sürümlerini yayımlamış olması gereken biri olarak ilgiyle izledim videoları. Geliştiriciyseniz ve yakın zamanda ilk mobil uygulamalarınızı yayımlamayı düşünüyorsanız göz atabileceğiniz bir seri kesinlikle. Making An App Is A Terrible Idea, But Here's How You Can Do It Tom, bir arkadaşıyla yaptığı ve sadece emojilerin kullanıldığı sohbet uygulamasının nasıl başarısızlıkla sonuçlandığını anlatarak bölüme başlıyor. Zombies, Run! oyunu hakkında sohbet ediliyor. Oyun koşu ve benzeri aktiviteleri daha eğlenceli hale getirmek için tasarlanmış sadece sese dayalı bir oyun. Ben ilk kez duyuyorum ama son derece ilginç sporu oyunlaştırmak. Yürü be İstanbul 'da da zombilerle değil de, yerine koyulabilecek başka bir unsurla benzer b...

Zircon

Zircon , Fuchsia OS 'un dayandığı yeni bir mikro çekirdektir. Zircon, gömülü sistemler için tasarlanan ve küçük bir işletim sistemi olan Little Kernel 'den türetilmiştir. Little Kernel ise  Haiku tarafından kullanılan NewOS çekirdeğinin yaratıcısı Travis Geiselbrecht tarafından geliştirilmiştir. Zircon'un evrimi şöyle tarif edilmektedir: Zircon daha önceleri Magenta olarak biliniyordu ve herhangi bir uygulamayı, gömülü RTOS'lardan (Gerçek Zamanlı İşletim Sistemlerinden) her tür mobil ve masaüstü cihaza ölçeklendirmek üzere tasarlanmıştı. Sonuç olarak, Fuchsia OS'un Android ve Chrome OS'un doğal halefi olacağına, her ikisinin de yeteneklerini içereceğine ve her iki sistemin uygulamalarını da çalıştıracak geriye dönük uyumluluğuna sahip olacağına dair spekülasyonlar oldu. Kısacası bu çekirdek, 32 bit veya 64 bit ARM çekirdeklerinden 64 bit X86 işlemcilerine kadar herhangi bir işlemci üzerinde çalışacak şekilde tasarlanmıştır ve epey yıkıcı olma potansiyeline...

Bilimsel Makalelerden Algoritma Gerçekleme

Çevirmenin Notları Bu, Emmanuel Goossaert 'in Code Capsule ismindeki günlüğünde How to implement an algorithm from a scientific paper başlığıyla yayınladığı yazının izin alınarak yapılmış bir çevirisidir. Yazardan yaklaşık üç sene önce izin almış ve hemen çeviriye başlamıştım ama çeviriye ara verince geri dönmem bu zamanı buldu. Yazı hala güncelliğini koruduğu için şimdi yayımlamanın da mantıksız olmadığını düşünerek çeviriyi tamamladım. Sanırım orijinal yazıda "faducial points" olarak geçen ifade "fiducial points" olmalı. Çeviriyi fiducial points'e göre yaptım. "The use of statistical analysis shows a minimum of driving from the author" ile ne denmek istendiğini anlayamadığım için bu kısmı çevirmedim. Wash-off, durulama ve yıkama anlamına geliyor. Ayrıca WaSH, water, sanitation and hygiene (su, sanitasyon ve hijyen) için bir akronimmiş. Wash-off implementation ile ne denmek istendiğini tam çıkaramadığım için kullanıldığı yerdeki anlam ...

C++'ta Koşullu Derleme

Koşullu derleme (şartlı derleme, conditional compilation), derleyicinin derleme sırasında sağlanan parametrelerle üretilen çalıştırılabilir programda farklılıklar oluşturmasını sağlayan derleme gerçekleme yöntemidir.* Bu teknik, yazılımı farklı platformlarda ya da gerekli kütüphanelerin veya donanımların farklı sürümleriyle çalıştırmak için farklılıklar gerektiğinde yaygın olarak kullanılır. Pek çok programlama dili koşullu derlemeyi destekler. Sıklıkla derleyici yönergeleri belirli değişkenleri tanımlar veya değişkenlerin tanımlamalarını kaldırır, diğer yönergeler de bu değişkenleri test eder ve derlemeyi buna göre değiştirir. Örneğin, SDL ve SFML gibi kütüphaneler asıl dili (C veya C++) kullanmadan pencere oluşturumunu, klavye ve fare yönetimini Linux, macOS veya Windows için özel olarak tanımlayabilmektedir. Bunun basitleştirilmiş bir örneği şöyle gösterilebilir: $ g++ kosullu-derleme1.cpp $ ./a.out Linux'tan merhaba Derleyicilerin çoğu işletim sistemleri için kull...