Category: yazılım

Hacking

Ergenlikte herkesin hayaliydi. Arkadaşlarının E-Mail adreslerini hacklemek isteyenlerden tut 6 haneli ICQ numarası için “brute force” tekniği ile günlerce sonuca ulasmaya çalışan arkadaşlarım vardı. Analoji yapmayı seven bir insan olarak bu konuyu da sihirbazlık üzerinden anlatmaya çalışacağım. Bilmediğimiz şeyler bizi korkutur ve heyecanlandırır. O yüzden Hollywood hem sihirbazlık hem bilgisayar korsanlığı üzerine sayısız film çekmiştir. Ama gerçek hayatta eğer bir… Read more →

Döngüler ve Kontrol Yapıları

Hayat döngülerden oluşuyor demiş bir filozof. Sanırsam Mevlana’nın lafıydı. Bizde hayatımızdaki gereksiz ya da çok zaman alan döngüleri bilgisayarlara delege ettik. O yüzden ben, o ufacık tefecik mikroçipleri insanlığın bir yansıması olarak görüyorum. Her ne kadar aptal olsalar bile…(Aslında insanlarda çok aptal ama artık konuya giriş yapmak istiyorum) Her döngü bir koşul ile başlar. Birden ona kadar saymak için bile bir… Read more →

Python fonksiyon tanımı ve balon sıralaması

Bir arkadaşımın python ödevini çözerken buldum kendimi bugün. Son 10 yılımı yazılım alanında geçirdiğim için baya basit bir problemdi. Fakat bilmeyen insan tabi zorlanıyor. Ödev teknik olarak balon sıralaması (bubble sort) uygulaması fakat olaya biraz renk katmışlar. Problem aşağıdaki gibi; Pay ve paydası iki elemanlı bir liste olarak verilen kesirli sayıların bulunduğu listeyi küçükten büyüğe doğru sıralayan Python kodu yazınız.… Read more →

Ortadaki adam saldırısı

Bildiğiniz üzere internete bağlanmak için arada bir sürü adımlar, bir sürü zıplamalar var. Bu adımların/taleplerin arasına kötü niyetli insanlar girebilir. Hatta siz bile girebilirsiniz. Manyak mısın lan? Ben ne istediğimi dünyadan ne talep ettiğimi biliyorum diyor olabilirsiniz. Fakat diyelim Tinder uygulaması seviyorsunuz. Ama tuvalette insanları tek tek beğenmek yerine, ya bi uygulama olsa da tüm kızları bi hamlede beğensek diyorsunuz.… Read more →

Bir HTTP talebinin hayatı

Hiç düşündünüz mü? Bu yazıyı okumak için en sevdiğiniz internet tarayıcısına cihan.rocks yazdığınızda arkaplanda neler dönüyor? İnternet de aslında yazılım gibi sihirli bir şey değil. Ben bu blogu Kanada’daki bir yer sağlayıcıdan kiraladım. Ama benim, küçük bir servetle eşdeğer olan, MacBook’um nereden biliyor bunu? Mesela google yazınca niye bing.com ya da facebook.com’a bağlanmıyor. Cevap çok basit DNS (Domain Name System).… Read more →

Lego analojisi

Ne zaman programlamayı birine anlatmaya çalışsam aklıma hep legolar gelir. Küçük parçaları birleştirerek yapılan büyük tasarımlar. Soyutlamalar (abstractions), kaygıların ayrıştırılması (separation of concerns), tekrar kullanılabilirlik (reusability) vs. Programlamada da aynı legolar gibi atomik, daha fazla bölünemeyen, parçalar vardır. Programlamada bunlara ilkel tipler diyoruz (primitive types). Dikkat ederseniz hep 2’nin katlar olarak artıyor. Bunun nedeni ise primitiflerin primitifinin, en ilkelimizin, bool… Read more →

Birler sıfırlar

Klişe bir laf vardır ya, yazılımcılar çok keskindir, gri alanları yoktur. Her şey ya bir ya da sıfırdır diye. Külliyen yanlış bir bilgi. Aslında griyi 50 ton yerine 8 bit olarak tanımladık biz (256 tonu var yani. Ahaha koyduk mu Hollywood!). Neyse bakalım bakalım neymiş bu birler ve sıfırlar. En temelde herkes bilgisayarın elektrikle çalıştığını biliyordur sanırsam. Elektrik varsa bir… Read more →

Bir programın anatomisi

Sanıldığının aksine, yeşil periler sihirli değneklerini sallayıp ortaya program çıkarmıyorlar. Genelde kel, gözlüklü ve kahve bağımlısı insanlar sabahtan akşama kadar bilgisayarın başında oturup, düşünüp ve diğer kel ve gözlüklü insanlarla tartışıp bu programları ortaya çıkarıyorlar. Tarihte yazılmış tüm “Programlamaya giriş” yazılarında olduğu gibi hadi “Hello World!” ile bu anatomiyi incelemeye başlayalım. #include <stdio.h> int main() { printf(“Hello World\n”); return 0;… Read more →