Teknik

Sıralama algoritmalarının ilk kısmını içeren yazımda basit sıralama algoritmaları olarak Seçmeli (Selection sort) ve Eklemeli (Insertion sort) sıralama algoritmalarından bahsetmiştim. Bu yazıda gelişmiş sıralama algoritmaları olarak Birleştirmeli (Mergesort) ve Hızlı (Quicksort) sıralama algoitmalarını inceleyeceğim. Bu algoritmaları gerçeklerken hem birleştirme (merge) ve bölümleme (partition) gibi işlemler, hem de özyineleme (recursion) yaklaşımını kullanmış olacağız.

Okumaya devam edin...

Merhaba bu yazımda sıralama algoritmalarını inceleyeceğim. Sıralama algoritmaları çoğumuza üniversite ders sıralarında kalmış görünse de aslında gündelik hayatımızda kullandığımız hemen hemen her teknik aracın işleyişinde rol alıyor. Bundan otuz kırk yıl önce bilgisayar teknolojisinin sunabileceği işlemci, bellek ve sabit disk gibi kaynaklar oldukça sınırlıydı, bu yüzden yapılacak işler için etkili yöntemler kullanmak gerekiyordu. Günümüzde bu kaynaklar kolay erişilebilir hale geldi ama yine de etkili yöntemler kullanmamız gerekiyor, çünkü hala çok daha etkili kullanmak zorunda olduğumuz bir kaynak olan zaman katı bir kısıt olarak karşımızda duruyor.

Çok basit şekilde yaklaşalım, verimliliğe ve karmaşıklığa dikkat etmediğimiz çok büyük sayıda girdiye sahip kötü bir program geliştirdiğimizi düşünelim (lütfen bu sadece kötü bir varsayım olarak kalsın) ve bu programı şu an dünya üzerinde bulunan en gelişmiş bilgisayarda çalıştırma fırsatını bulabiliriz ama bu programın sonuç vermesi için gereken birkaç yılı bulamayız. O yüzden tercihimizi daha az zaman karmaşıklığı içeren algoritmalardan yana kullanmak mantıklı bir yaklaşım olacaktır.

Okumaya devam edin...

Bir önceki yazımda Amazon’un bulut bilişim servislerinden bahsetmiştim. Bu yazıda ise bir diğer bulut bilişim hizmeti sağlayıcısı olan DigitalOcean[1]’dan bahsedeceğim. Oldukça basit ve anlaşılır bir web arayüzünden istediğiniz gibi işlemler yapabilirsiniz ancak daha otomatize şekilde çalışmak isterseniz DigitalOcean API’ye elinizi bulaştırmanız gerekmektedir. DO bir sure önce API V2’yi duyursa da hala API V1’e destek veriyor. Bu yazıda inceleyeceğimiz betik API V1 üzerinde çalışmaktadır. API’ye http istekleri yapmak için Python’da requests [2] kütüphanesini kullanmayı uygun buldum.

İlk olarak API’ye bize yeni bir makine yaratması için yapacağımız isteği oluşturan fonksiyonu inceleyelim.

Okumaya devam edin...

Amazon EC2 (Amazon Elastic Compute Cloud) boyutlandırılabilir işlem kapasitesi sağlayan, bulut üzerinde çalışan bir web servisidir. EC2’nin temel amacı geliştiricilerin daha kolay web ölçekli bulut bilişim yapabilmesi olarak ifade edilmiş.[1] Bu yazıda, EC2 üzerinde aynı anda birden çok makine ayağa kaldırmak için kullandığım koddan bir parça anlatacağım. AWS (Amazon Web Service) web arayüzünden dilediğiniz yapılandırma ayarlarına sahip makineler oluşturabiliyorsunuz, fakat ben daha otomatik bir şekilde bu işi yapan bir betiğe ihtiyaç duydum ve bunun için “boto” [2] isimli Amazon web servisleri için Python dilinde bir arabirim kullanmanın uygun olduğuna karar verdim. (Yazı ve örnek kod, kurulum ve yetkilendirme kısımlarının yapılmış olduğunu varsaymaktadır.)

Örneği üç parçada ele alırsak, ilk olarak çalıştırmak istediğimiz makinenin gerekli ayarlarını göreceğiz.

Okumaya devam edin...

Selamlar, sizlere front end developerların işlerini kolaylaştıran Grunt’tan biraz geç de olsa bahsedeceğim. Grunt ile işleri otomatize edip işlerimizi daha hızlı çözebiliriz.

Öncelikle çok kolay bir kurulumu var. Ancak bilgisayarınızda nodejs olması gerekiyor. Yoksa http://nodejs.org adresinden hemen kurulum yapabilirsiniz.

Ardından terminalden;

npm install -g grunt-cli

Okumaya devam edin…

Bu yazımda size Asp projesinde google maps kullanarak harita göstermeye çalışacağım. Öncelikle File’dan new-project diyip ASP.NET Web Application’ı seçip projeye isim veriyoruz.

1

Okumaya devam edin…

Python ile kod yazmak büyük bir avantajdır. Aynı zamanda öğrenilmesi ve kullanılması basit bir dildir. Bu sebeple bu dilde az kod yazarak çok iş yapılabilir. Neredeyse bütün platformlarda çalışması da diğer bir artı yönüdür. Bu dilde oyun geliştirmekte oldukça rahattır.

Pygame Modülü

Python’da oyun geliştirmek için Pygame oyun modülü kullanılabilir. Pygame oyun modülü Python dilini kullanarak kolay ve hızlı bir şekilde oyun geliştirmenizi sağlar. Pygame modülü, video, ses, görüntü gibi birçok medya türünü destekleyen bir arayüz sağlar. Ayrıca klavye,fare, joystick gibi birçok birimlerle arayüzler arası etkileşimi sağlar.

Pygame gücünü SDL kütüphanesinden almaktadır. SDL kütüphanesi C ve Assembly dilinde yazılmış ve birçok optimizasyondan geçmiş oldukça hızlı bir kütüphanedir.  Pygame, C diline göre yaklaşık 20 kat yavaş çalışmasına rağmen çok güçlü bir modüldür. Aynı zamanda Pygame’de geliştirdiğiniz uygulamaları diğer işletim sistemlerinde çok rahat kullanabilirsiniz.

Okumaya devam edin...

Merhaba, bu yazımda deneyimlerimden yola çıkarak Python’da sıklıkla kullandığım veri yapıları ve tiplerinden bahsedeceğim. Bu yapı ve tiplerin içerisinde “liste” (list) ilk sırada gelir, ikinci sırada ise “katar” (string) yer alıyor.

Liste

Listeyi basitçe, köşeli parantez içerisinde virgüllerle ayrılmış elemanlar listesi olarak tanımlamak mümkündür.
liste1 = [1, 4, 9, 16, 25] ve liste2 = ['a', 'b', 'c', 'd'] birer liste örneğidir.
Liste elemanlarının indexlenebilme özelliği bulunur, zaten listeyi bir dizi olarak düşünebiliriz.

l = [1, 34, 274, -89, 0, 5] listesinden -89 elemanını almak için l[3] kullanmak yeterli olacaktır. Konunun daha anlaşılır olması için python terminalinde yaptığım örnekleri ekleyerek devam edeceğim. (Linux veya MacOS X kullanıyorsanız terminale python yazarak python terminaline geçiş yapabilirsiniz.)

Okumaya devam edin...

İkincisini yazacağımı söylediğim Netcat yazımı sonunda yazıyorum Temel sözdizimini, opsiyonlarını anlatan yazım şuradaydı: http://www.kadinyazilimci.com/netcat-i/

  • Dosya Transfer İşlemleri:

– Client’dan Listener’a dosya göndermek için:

~$ nc -l -p [Local Port] > [Gönderilen Dosya]

– [Port] üzerindeki [Hedef IP Adresi]ne [InFile] ı göndermek için:

~$ nc -w3 [Hedef IP Adresi] [Port] < [InFile]

– Listener haldeyken Client tarafından gelen dosyaları çekmek için:
( [InFile] ın gönderilmesine hazırlanılan [Local Port] dinleniyor.)

~$ nc -l -p [Local Port] < [InFile]

– [Port] üzerindeki [Hedef IP Adresi] ile bağlantı kurulup verinin [OutFile] ile çekilmesi:

Okumaya devam edin...

RSMangler belli anahtar kelimeleriniz üzerinden permütasyon ile wordlist oluşturmanızı sağlayacak bir araçtır. RSMangler’ı buradan indirebilirsiniz. RSMangler sayesinde oluşturduğunuz listeyi kaba kuvvet saldırılarında kullanmanız mümkün. Eğer kaba kuvvet saldırısı yapılacak olan şifre ile alakalı bilginiz varsa örneğin Star Wars izleyicisi ise anahtar kelimeleriniz bununla alakalı kelimlerden oluşabilir. RSMangler da bu kelimeleri kullanarak her türlü kombinasyonu oluşturabilmenize yardımcı olacaktır. Web sitesinden aracı indirdiğinizde içerisinde göreceğiniz .rb uzantılı dosyayı çalıştırarak wordlist’i oluşturmanız mümkün.

Okumaya devam edin...