Sayfalar

28 Aralık 2016 Çarşamba

Ayıkamıyoruz

Uyutulduğumuzu ayıkamıyoruz, dolandırıldığımızı ayıkamıyoruz, aptal yerine koyulduğumuzu ayıkamıyoruz.
Öğretmenler ezberletiyor, güçlüler sindiriyor, kendini zeki zanneden çakallar sömürüyor elinde güç bulunduran bir darbede o indiriyor kafandan aşağı.
Düşünmene fırsat bırakmıyorlar, hemen gündem belirliyorlar TT yapıyorlar 2-3 şey söylüyorsun vatan kurtarıyorsun. Elindeki telefonda anca bir aşağı bir yukarı yapıyorsun.
Çarka çomak sokmaya çalışsan bir o kadar yardımcı oluyorsun, ayıkmaya çalıştıkça seni dışlıyorlar özgün olan her şeyi itekliyorlar popülerliği bol olan yanlışları benimsiyorlar sonrada diyorlar ki yeni nesil çok fena.

Sal bakalım sen çocuğunu oynasın, bırak öğrencini bir hayal etsin, ver bakalım formülü öğrencinin ihtiyacı olduğu için, ön ayak ol, gerçekten öğreten ol sonra gezin ben öğretmenim diye.
Çıkar şu gözlükleri gözünden, çık şu kalıbın içinden, senden farklıları da olabilir bunu da kabullen, dünya küçük ettiğini bulursun bunu da bilsen insanlar daha kaliteli olur sanki.

Bunları ben yapsam nolcak herkes aynı mı diyorsun ? işte sıkıntı burada başlıyor, kendimize değil herkese bakıyoruz onlara göre hareket ediyoruz, onlara göre konuşup onlara göre susuyoruz.

Bunları yaparken teknolojiden kopalım demiyorum, bırakalım telefonu bilgisayarı organik tarıma geçelim demiyorum, istiyorsak tarımda yapalım ammaa bunların köleleri olmayalım.
Tabakhaneye b!k yetişmiyoruz, birazcık rutinden sapalım mesela yürüyen merdivenden değilde normal merdivenden çıkalım, masamızın yönünü çevirelim ama rutinden sapalım bazı şeylere alışmayalım.

6 Kasım 2016 Pazar

zxcvbn Realistic Password Strength Estimation / zxcvbn Parola Kırılma Tahmin Class

Hemen hepimiz uygulama yapıyoruz, bu uygulamalarımızın çoğunda şifreler kullanırız fakat çoğu bilgisayar korsanı en basit yöntem olarak şifrelerimizi sistemimizi hackleyip şifrelerimizi almaktan ziyade öncelik olarak kaba kuvvet yani brute force saldırısı yapar, bu saldırı sayesinde şifrelerimizi elde etmeye çalışır.

Peki nedir bu brute force ?
Google amcaya sorduğumuzda bize aşağıdaki sonucu veriyor.

Kısacası brute force saldırısı kullanıcıların giriş yapmak istediği yere bazı programlar kullanarak şifreleri tahmin etmeye çalışır, bizim el ile yapacağımız işi onlar kısa sürede otomatik şekilde yaparlar.

Peki bu saldırılardan korunmak için neler yapılabilir ?

En basit yöntemlerden bir tanesi bir kullanıcı doğrulama sistemi koymak, kısaca captcha ekleyebiliriz sisteme.

Fakat biz bugün bunu nasıl önleyeceğimizden ziyade kullanıcılarımızı yönlendirmek olacak.
Yani kullanıcılarımızdan en çok kullanılan yada kırılması, tahmin edilmesi kolay şifreleri almamalarını sağlayacağız.

Peki bunu nasıl yapıcaz ?
Bunun için zxcvbn Classını kullanıcaz.

Bu class ne işe yarıyor, nasıl tahmin ediyor ?
İçerisinde yaklaşık 30k veri var, bu verileri Amerika son nüfus sayımında elde ettiği en çok kullanılan isim ve soy isimler, Wikipedia, diziler yada filmlerdeki en popüler kelimeleri, belli tarih ve zamanları aynı zamanda belli bir düzen içinde devam eden basit şifreleri mesela (abcd), (qwertyuiop) gibi şifreleri içinde barındırıyor. Aynı zamanda bizim yazmış olduğumuz kendi şifrelerimizi içerisindeki bir mantık algoritması ile bize kırılması zorluğu hakkında tahminlerde bulunuyor bu sayede bizde kullanıcılarımıza bu tahminleri gösterip diyoruz ki şifreniz çok basit, yada şifrenizde bazı harf ve rakamlar olsun gibi önerilerde bulunup kaba kuvvet saldırılarından bir nebze korunmuş oluyoruz.

Peki bu classı nasıl kullanıcaz ?

Bower ile kullanabiliriz.

cd /path/to/project/root
bower install zxcvbn
Daha sonra sayfamıza aşağıdaki kodları ekledik mi tamamdır.
<script src="bower_components/zxcvbn/dist/zxcvbn.js">
</script>

NodeJs ile yükleyebiliriz.

$ npm install zxcvbn
$ node
> var zxcvbn = require('zxcvbn');
> zxcvbn('Tr0ub4dour&3');

Composer kullanarak sisteme dahil edebiliriz.

{
    "require": {
        "bjeavons/zxcvbn-php": "^0.2"
    }
}

use ZxcvbnPhp\Zxcvbn;

$userData = array(
  'Adnan',
  'test@example.com'
);

$zxcvbn = new Zxcvbn();
$strength = $zxcvbn->passwordStrength('password', $userData);
echo $strength['score'];
// Sonuç: 0

$strength = $zxcvbn->passwordStrength('Test ediyorum burada!!');
echo $strength['score'];
// Sonuç: 4


Yada direkt olarak js olarak indirip sisteme dahil edebiliriz.

Download zxcvbn.js.

<script type="text/javascript" src="path/to/zxcvbn.js"></script>
Bir sonraki yazımızda bu classı php bir proje üstünde asenkron bir şekilde nasıl kullanırız ona değinicez.

Classın github linki:
https://github.com/dropbox/zxcvbn

10 Eylül 2016 Cumartesi

Laravel dışında Eloquent Kullanımı

Merhaba gençler, bugün Laravel'de veritabanı işlerimizi yapmamıza olanak sağlayan Eloquent'i kendi şahsi projelerimizde nasıl kullanırız, Eloquent'i nasıl dahil ederiz onu öğrenicez.

Kullanımı, sistemimize eklemesi composer ile gayet basit. Zaten bu yazıyı okuyorsanız composer kullanacağımızı tahmin etmişsinizdir.

Hemen çalıştığımız dizine gidiyoruz, konsolumuzu açıyoruz ve başlangıç kodumuzu yapıştırıyoruz.

composer require illuminate/database
Bizim için gerekli dosyaların indirilmesini sağlıcak aynı zamanda composer dosyamızı oluşturacak.

























Daha sonrasında, Class'larımızın eklenmesi ve config ayarlarımızı yapabilmemiz için init.php adında bir sayfa oluşturuyoruz.
Bu sayfa içerisine autoload.php ve veritabanı bilgilerini giriyoruz.

init.php içeriği aşağıdaki gibi olmalı.






















use Illuminate\Database\Capsule\Manager as Capsule: Veritabanı bağlantısı için gerekli dosyaları use ediyoruz.

5. Satırda autoload.php sayfamızı çağırıyoruz.

9. satırdan başlayan ve 18. satırda biten kodlar ise sırasıyla
driver: kullanacağımız veritabanı türü,
host: veritabanımızın bulunduğu host,
database: veritabanı ismi,
username: bağlanmak için kullanacağımız kullanıcı ismi,
password: veritabanı şifremiz

Yukarda belirttiklerim en çok kullandıklarımız.

21 ve 23. satırlarda ise Eloquent'imizi artık kullanmak için gerekli fonksiyonlarımızı çağırıyoruz.

Sırada ise model dosyalarımızı barındırmak için models adında bir klasör oluşturuyoruz.
Daha sonra composer dosyasımızı açarak aşağıdaki gibi düzenliyoruz.
















Yukarıda models klasörü içinde oluşturduğumuz model dosyalarını otomatik olarak dahil etmek için composer içerisine autoload komutunu girdik.

Daha sonra models klasörünün içerisine User.php adında bir php dosyası açıyoruz ardından User adında bir Class oluşturuyoruz, hemen sonrasında sayfamızın en üstüne aşağıdaki kodu yazıp Class'ımıza extends ediyoruz.

use Illuminate\Database\Eloquent\Model as Eloquent;

Composer'da o kadar işlem yaptık, fakat konsolda composer ile oynamadık, composer'imizi konsolda dump ediyoruz bunu da composer dump-autoload komutu ile yapıyoruz.

User.php için son birkaç düzenleme kaldı ve aşağıdaki gibi yapıp User.php mizi tamamlıyoruz.















Ve artık son. index.php oluşturuyoruz, içerisine init.php dosyamızı require ediyoruz ve Eloquent kodlarımızı yazmaya başlayabiliriz.


İndex dosyamızın son hali soldaki gibidir.










Elimden geldiğince anlatmaya çalıştım, yanlışım hatam olduysa uygun dille belirtirseniz sevinirim.

31 Temmuz 2016 Pazar

Bir hafiflik var..

Bir hafiflik var üstümde sanki, böyle biraz ferahlamış gibi üzerimden yük kalkmış gibi.
Sanki zaman genişlemiş, elimi uzatsam bir sonraki güne ulaşacak kadar geniş, arkama dönsem geçmişteki hatalarımı düzeltecek asil(imsi) bir rahatlık.

Bilim kurgu filmlerinden fırlamış canavarlar gibi, Doctor Who dizisindeki doktorun zaman makinesi gibi.
Aklımda bir soru ? nereye kadar böyle yada neden şimdiye kadar böyle bir şey yoktu ?
70 milyon tek yürek bunların cevabını beklemiyor aslında ben bilsem yeterli.
Soruyorum kendime neden diyorum yok diyo bilmiyom diyo, saçmalıyorum aslında bazen çoğunlukla yazarken aslında her zaman.
Karambole mi yaşıyorum, tesadüfen mi yoksa ? Uçsuz bucaksız karanlık gibi bir delik,yine zamanın genişliğinde kayboluyorum. Kafamdaki sorular ile dalıyorum derine, karanlığa bir bilinmeze.

Sorgulamaya kalksam kime sorayım. Sussam içimde mi patlasın. Yazayım bende, belki bir faydası olur.

6 Temmuz 2016 Çarşamba

Sony Xperia Z3 Telefon Donması - Ekran Kilitlenmesi

Arkadaşlar merhaba, bugün başıma gelen birazda soğuk terler attıran bir olayı sizinle paylaşmak istiyorum belki sizlerin işine yarayabilir.

Sony Xperia Z3 telefonumu şarjda kullanırken birden kasmaya başladı ve gayri ihtiyari ekranı kilitledim.
Daha sonra ekranı bir daha açamadım. Şarjdan çıkardığım halde bildirim ışığı yanmaya devam ediyordu neyse telefonu açma kapama düğmesine bastığım sıralarda ufak ufak titreşmeler oluyor fakat herhangi bir geri bildirim alamıyordum.
Başka telefondan kendimi aradım, telefonuma ulaşılıyor fakat benim telefonum çalmıyordu.

Neyse.. Çözüme gelirsek, internette ufak bir araştırma yaptım benim işime yaradı fakat daha zor problemler olabiliyormuş herkesde işe yaramayabilir.

Telefonun Ses Açma + Açma Kapatma tuşuna belli bir süre basıyoruz ardından telefon kendisini resetliyor.
Ben bu sayede sorunumu çözdüm umarım sizinde işinize yarar.
Herhangi bişey sormak isterseniz yorum atmanız yeterli.

İyi günler dilerim.

11 Haziran 2016 Cumartesi

Basit Olarak Php Class Kullanımı

Öncelikle arkadaşlar class yapısını anlamanız için fonksiyon kullanmasını yada yazmasını bilmeniz lazım çünkü class yapısı aslında fonksiyon topluluklarıdır.
Çeşit çeşit kullanım alanları ve amaçları vardır, class’ları genişletedebiliriz başka class’lar ile beraber etkileşimli bir biçimde de kullanabiliriz.

Bugün basit olarak Class nasıl oluşturulur, nasıl kullanılır gibi giriş konularından bahsedicem.
Sonra talep ve duruma göre implement, extends, dependency injection gibi konularada değinirim.

Yukarda bahsettik Php Class’lar kısaca fonksiyon topluluklarıdır, nasıl oluyor derseniz elimizde bir kullanıcı işlemleri yapan dosyamız olsun.
Kısaca kullanıcı işlemleri aşağıdaki gibi olsun.
  • Kullanıcı Ekleme
  • Silme
  • Parola ve Mail Güncelleme
  • Giriş Yapma
  • Kullanıcı Bilgileri
5 tane fonksiyon içersin, bunları kullanabilmek için bir Class yazalım ve class içine fonksiyonlarımızı yazalım daha sonrada basit olarak kullanalım.

Class aşağıda yazdığım gibi oluşturulur.


Yukarda belirtmiş olduğum __construct() fonksiyonu Class dosyamıza cağırıldığı an ilk olarak çalışan fonksiyondur.
Ne işe yarar ?
Class içinde kullanılacak değişkenlere başlangıçta değer atamak için kullanılabilir.
__destruct() fonksiyonu ise Class ile işlemlerimiz bittiği an otomatik olarak en son çalıştırılan fonksiyondur.

Örnek olarak kullanıcı silme fonksiyonunu yazalım.

Yukarda resimde userDel fonksiyonu oluşturduk ve içerisinde 1 adet userId parametresi gönderdik.
Gönderdiğimiz parametre ile bir sql sorgusu çalıştırdık ve sql sorgusunun yanıtına yani çalışıp çalışmama durumuna göre kullanıcıya true yada false return ettik.

Şimdi kullanımına gelirsek.
Öncelikle sayfamıza include ediyoruz.
Daha sonra classı bir değişkene atıyoruz.
Sonra değişkenden istediğimiz fonksiyona -> işaretini koyarak (varsa) gerekli parametreleri girip işlem yapıyoruz.

Aslında olay bu kadar basit, ama büyük çaplı projeler ve düzenli kod yazımı için etkili bir yöntem. Birazcık düzgün planlama ile kendi framework yapımızı bile kurabiliriz classlar sayesinde.

19 Mayıs 2016 Perşembe

Rutin rutinsizlik

Olay bu kadar basit, her şey her zaman olmaması gerektiği gibi olması olayıdır.
Yani hayatın sana daima kazık atma olayıdır kısaca. Bunu bilmene rağmen inadına yaşarsın, inadına zevk alırsın.
Arkandakilere döner ve orta parmağını gösterirsin, bu seni daha da gazlar.
Birden fazla sebebi vardır aslında bunun en basiti arkandakilerin senin o parmağını sana monte etmemeleri için onlardan daha hızlı olman gerekmesi, ama asıl zevkli kısmı da bu aslında.

Bazen o kadar hızlı koşarsın ki, çevrende seni sen yapan değerleri atlarsın.
Onlar var mı aslında ? herkes kendi başına bir bireyse çevremizdekiler bize ne yapabilir ?
onlar bize göre sadece basamak mı yoksa bize manevi değer katan birileri mi ?
İnsanları neden kıramayız ? neden çoğu zaman hayır diyemeyiz ?
Sorguluyorum, ucuna varamıyorum. Tam varıcam benden tekrardan kaçıyor.

Aslında biraz motivasyon eksikliğim var, onu ayarlasam rutine girebilir miyim ki ?
Söylesenize bana rutine girersem nolucak ? yani elime ne geçicek, monoton bir yaşam bana göre mi ki ? bilen birisi yardımcı olursa sevinirim aslında. Akşama kadar rutinim masa başında oturmak olsa (ki öyle) neler yapardım ?
Cevap veriyorum, ufacık alanı kendime playland yapardım. Yaptım mı ? kısmen.
Saçmalamaya başladık yine, ama durum böyle, filler tepişiyo gafamda.

Saygısızlıklar olmuş diz boyu, diller olmuş pabuç misali, olaylar çıkmış rutinden.
İçimi kemiren bir kurt.. Deniz misali vazgeçilmeyen ama suyu da içilmeyen bişey..