28 Ağustos 2009 Cuma

2

Bilgisayar Tamircisinin Kopya Kağıdı

Posted in
Eğer insanlar bilgisayar konusunda sizden sürekli yardım istiyorlarsa bu resmin bir çıktısını onlara hediye edebilirsiniz.

2 yorum:

8 Ağustos 2009 Cumartesi

0

Hiç Kendinizle Ortaklaşa Çalışarak Oyun Oynadınız Mı?

Posted in ,
Başlığı okuyunca ne yani oyunları zaten kendimiz oynamıyor muyuz diyebilirsiniz ama bu oyunda durum biraz farklı. Oyunda amacınız 16. kata çıkmak. Bu amaçla merdivenlere tıklayarak sırayla üst katlara tırmanıyorsunuz ama belli bir yerden sonra aynı anda iki iş yapmanız gerekiyor. İşte bu aşamada kendinizle ortaklaşa çalışmanız gerekli. Neyse ben lafı fazla uzatmadan ve işin süprizini kaçırmadan oyunun linkini vereyim de biraz siz çözmeye çalışın. :)

Kendinizle ortaklaşa çalışarak oyun oynamak için : Cursor*10

Aynı oyunun ikinci ve biraz daha zor versiyonu için : Cursor*10 2nd

0 yorum:

5 Ağustos 2009 Çarşamba

11

Ubuntu' dan Youtube Gibi Yasaklı Sitelere Giriş

Posted in ,
Ülkemizde uygulanan internet politikaları sebebiyle bir çok siteye erişimimiz engellenmiş durumda. Yine de çaresiz değiliz. Bilgisayarımızın DNS ayarlarıyla oynayarak bu sitelere erişmek mümkün. Öncelikle uçbirimi açıp şu komutları yazıyoruz.

sudo gedit /etc/resolv.conf

Bu komutu yazdıktan sonra bilgisayar bize şifremizi soracak. Şifremizi yazdıktan sonra açılan ekrandaki yazıları siliyoruz. Bunların yerine aşağıdakileri yapıştırıyoruz.

nameserver 208.67.222.222
nameserver 208.67.222.220

Değişiklikleri kaydedip uçbirime şunları yazıyoruz.

cd /etc
sudo chattr +a resolv.conf

Bu komutları yazdıktan sonra bilgisayarı yeniden başlatıyoruz. Artık engellenmiş sitelere bir problemle karşılaşmadan girebiliriz.

Her ne kadar çeşitli aracı siteler kullanılarak(tunnel türevleri gibi) bu sorun geçici olarak aşılsa bile bu sitelerdeki aşırı reklamlar kullanım kolaylığını azaltıyor. Ayrıca bu tarz siteleri kullanarak download yapmak, herhangi bir sitede oturum açmak gibi işlemler çoğu zaman yapılamıyor yapılsa bile bu işlemlerin güvenliği konusunda emin olunamıyor. İşte DNS ayarlarını değiştirmek bizi bu gibi problemlerden kurtarıyor.

11 yorum:

27 Temmuz 2009 Pazartesi

0

PHP ile Kodunuzu Renklendirin

Posted in , ,
PHP ile yazdığımız kodları renklendirmek isteyebiliriz. Bunun için hazır kütüphaneler vs. var ama biz çok daha kolay bir şekilde bu işlemi yapacağız.PHP' nin kendi kod renklendirme fonksiyonunu kullanacağız : highlight_string. Kullanımı da oldukça kolay.

<?php
highlight_string("<?php
echo("Merhaba");
?>"
);
?>

<?php
echo( "Merhaba" );
?>

Sonucu çıktı olarak almak yerine return value olarak döndürsün istiyorsanız fonsiyonumuza bir parametre ekliyoruz.

<?php
$deger = highlight_string("<?php
echo("Merhaba");
?>"
, true);
?>

Buradaki true parametresi fonksiyonun sonucunu belirttiğimiz değişkene atıyor.

Birde highlight_file fonksiyonumuz var. Bu fonksiyon da adresini verdiğimiz dosyayı renklendirip ekrana yazdırıyor. Kullanımı şu şekilde;

<?php highlight_file("file.php"); ?>

Aynı şekilde bu fonksiyonda da sonucu ekrana yazdırmak yerine bir değer olarak döndürmek istiyorsanız ikinci parametreye true yazmanız yeterli.

0 yorum:

25 Temmuz 2009 Cumartesi

0

RoboCup Üzerine

Posted in , ,
Bilindiği üzere(bilmiyorsanız da birazdan öğreneceksiniz.) projelerim arasınra RoboCup da yer alıyor. Özellikle 2011 RoboCup' a İstanbul' da Boğaziçi Üniversitesi' nin ev sahipliği yapıyor olması beni bu projeye çeken başlıca etmen. Şuan sadece kafamda belli başlı fikirler var yani ortada proje namına bir şey yok :) ama bu projenin gelip geçici bir heves olmadığını da belirtmem gerek. Ayrıca 2011 yılına kadar yani 2 yıl vaktim olduğu için bu süre içersinde iyi kötü bir şeyler üretebileceğimi düşünüyorum. Tabi ki böyle bir projenin altından tek başıma kalkamam o yüzden yavaş yavaş bir ekip kurmaya çalışıyorum ama ortadaki ekibin(ben de dahil) henüz RoboCup a hazır olduğunu düşünmüyorum.

Asıl anlatmak istediğim mesele ise dün yaptıklarım. Ben ve şimdilik ekibin geri kalanı olan arkadaşım Boğaziçi Üniversitesi' ne gittik. Sağ olsun Cerberus(Boğaziçi Üniversitesi RoboCup Takımı) takımından Çetin Bey davet etmişti. Hem robotları yerinde incelemiş olduk hemde Çetin Bey' in tecrübelerinden faydalandık. Bize ilk olarak simulasyon ligiyle başlamamızı önerdi ki önerisi gerçekten çok mantıklı. Gerçi içimde şuan büyük bir Humanoid aşkı var ama sanırım bu hevese bir süreliğine ara vermem gerekecek. :) Şimdi biraz simülasyon ligi hakkında araştırma yapacağım ve bu lig için ne kadar uygun olduğumuzu anlamaya çalışacağım.

Hadi bakalım bir projeye daha başladık ama sonunu görebilecek miyiz?

0 yorum:

20 Temmuz 2009 Pazartesi

0

19 Temmuz Ceviz.Net Buluşması

Posted in ,
Dün Ceviz.Net in Mecidiyeköy Starbucks' ta buluşması vardı. Haliyle biz de buluşmaya iştirak ettik. Gerçi Mecidiyeköy' de üç farklı Starbucks olması sebebiyle Starbucksları karıştırıp buluşmaya 45 dakika geç gitmiş olsam da güzel bir buluşmaydı. Mengü, KaravanaBatu ve Ümit ile tanışma imkanı buldum. Anov' u da zaten tanıdığım için Ceviz.Net ailesinden gerçek hayatta da tanıdığım kişilerin sayısı dörde yükseldi.

Toplantıda bol bol DJango konuşuldu. DJango o kadar övüldü ki bugün DJango yu incelemeye karar verdim ama pek ısınamadım. DJango dışında .Net ve PHP hakkında konuştuk. Bunların yanında Ceviz.Net' in nasıl daha kaliteli bir platform olacağı, nasıl özgün içerik geliştirilebilineceği ve kendini tekrar etmekten nasıl kurtulacağı konusunda fikir alışverişinde bulunduk. Sonuç olarak üretilen her sistemin çeşitli şekillerde dezavantajlarının olduğuna karar kıldık.

Her şeyiyle güzel bir buluşmaydı. Darısı diğer buluşmalara...

0 yorum:

6 Temmuz 2009 Pazartesi

0

Eat Me!!!

Posted in ,
Eskiden yaptığım bir flash oyunu buraya eklemeye karar verdim. Adı "Eat Me". Oyunda küçük bir kafacık olup sağda solda uçuşan nesneleri yakalamaya yada onlardan kaçmaya çalışıyorsunuz. Yakalayıp mideye götürmeniz gerekenler: Elma, Portakal, Çilek ve Muz(Çilek ve Muzun diğerlerine göre daha fazla puan getirdiğini belirtmekte yarar var.)Kaçmanız gerekenler: Bardak, Ayakkabı, Biber ve Bıçak(Aynı şekilde biber ve bıçak daha fazla can ve puan götürüyor.) Her 500 puanda bir sonraki bölüme geçiyorsunuz. Toplam 7 bölümlük bu oyunu oynamak içinse aşağıdaki linke tıklamanız yeterli.
Eat Me
Tamam tamam itiraf ediyorum. Flash oyun yapma konusunda yeterince yetenekli değilim. :) Yinede ilerde başka flash oyunlarla karşınızda olabilirim.

0 yorum:

20 Haziran 2009 Cumartesi

0

AJAX ile POST Metodunu Kullanarak Veri Göndermek/Almak

Posted in , , , ,
AJAX ile GET metodunu kullanmak oldukça kolay. Herhangi bir kütüphaneden bağımsız olarak AJAX kullananların tamamının GET metodunun bildiğini ve kullandığını tahmin ediyorum. Ancak AJAX' ta POST metodu için aynı şey geçerli değil. Çoğu kimse AJAX' ta POST metodunun nasıl kullanıldığını bilmiyor. Bu yüzden bu yazıda POST metoduyla AJAX kullanımını işleyeceğim.

Önce bir XMLHTTPRequest nesnesi oluşturalım

var XHttp; //XMLHttpRequest nesnesi

if(navigator.appName == "Microsoft Internet Explorer")
{XHttp = new ActiveXObject("Microsoft.XMLHTTP");}
else{XHttp = new XMLHttpRequest();}


Bu aşamadan sonra göndereceğimiz verileri POST metoduna uygun hale getirmeliyiz. POST metodunda verilerimizi XHttp.send() komutunu kullanırken göndeririz. Bunun için normalde

XHttp.send(null);

olarak kullandığımız kodu

XHttp.send(gönderilecek veriler);

olarak değiştireceğiz. Burada gönderilecek veriler aynı GET metodundaki gibi alan1=deger1&alan2=deger2 formatında olmalıdır. Ayrıca verilerimizi gönderirken özel karakterlerde problem yaşamamak için encodeURIComponent fonksiyonunu da burada kullanmak gerekir. Örnek vermek gerekirse;

XHttp.send(encodeURIComponent("adi=ali&soyadi=kara&yasi=25"));

POST metodunu kullanmamız için her şey hazır sadece sunucuya yapacağımız istekte ufak bir değişiklik yapmamız gerekiyor.Bunun için şöyle bir komut kullanacağız.

XHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

Son kodları şöyle bir toplarlamak gerekirse;

XHttp.open('post', 'hedef.php');
XHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XHttp.send(encodeURIComponent("adi=ali&soyadi=kara&yasi=25"));

0 yorum:

22 Mayıs 2009 Cuma

0

Kütüphaneler, Frameworkler ve Diğerleri...

Posted in
İnternet dünyası hızla ilerledikçe internetin hızına ayak uydurmaya çalışan geliştiriciler de hızlarını arttıyor. Zamandan kazanmak için yapılabilinecek her şey yapılıyor. Zaman kazanma konusundaki en büyük yardımcılardan biri de kuşkusuz kütüphaneler. Forumlarda, bloglarda her gün yeni bir kütüphanenin çıktığını veya var olan bir kütüphanenin sürümünün yükseltildiğini okuyoruz. Bunların bazıları belli başlı işlemler için özel olarak geliştirilmiş bazıları da bir çok alana birden hitap eden, bir çok işi bir arada yapabilen ve hemen hemen tüm dünyada kullanılar kütüphaneler.JQuery, Prototype gibi...

Kütüphanelerin dediğimiz gibi en önemli işlevleri zaman kazandırmaları. Bunun dışında nasıl yapıldığı hakkında hiç bir fikrinizin olmadığı bir işlemi kütüphaneler sayesinde kolaylıkla yapabiliyorsunuz. Ayrıca sürekli olarak gelişmesi, kütüpheneler için çeşitli eklentiler üretilmesi de kütüphanelerin dinamikliğini ve güncelliğini korumasını sağlıyor. Bu ve bunun gibi faydaları sayesinde kütüphaneler şuan oldukça popüler durumdalar.

Tabi bu güzel özelliklerin bir de bedeli olmalı. En başta kütüphanelerden bir çok işi bir arada yapmaları beklendiği için "Ne kadar iş, o kadar kod" mantığıyla kütüphanelerin boyutları oldukça şişiyor. 5-10 KB lık boyutlardan başlayan kütüphaneler 150-200 kb ı geçebiliyor. Bununla birlikte kütüphanelerdeki fonksiyonlar tek bir durumdan ziyade olası tüm durumlar için hazırlandığından gereksiz kod kalabalığıyla dolu oluyor ve bu da hantallığa sebep oluyor. Aslında bu problemler internet bağlantısının hızlanmasıyla ve bilgisayarların performanslarının artmasıyla önemini kaybediyor. Yine de bence çok daha önemli problemler var.

Kütüphaneler Kodlar Üzerindeki Hakimiyetimizi Kısıtlıyor

Kütüphane kullanırken hareket imkanımız kütüphanenin yetenekleriyle sınırlı kalır. Örneğin forumlarda "X kütüphanesini kullanıyorum. Falan işi nasıl yaparım ?" tarzı soruların altında bu sebep yatar. Gelen cevaplar ise oldukça trajikomiktir:"X kütüphanesi falanca işi yapamıyor. Sen Y kütüphanesini de sitene ekle."

Daha kötüsü kütüphane kullanıyorsak bir hata karşısında elimiz kolumuz bağlı bekleriz yada kütüphanenin yaptığı işi biraz değiştirmek, istediğimiz hale getirmek istiyorsak kılı kırk yararız. Neden ? Çünkü bir kere kütüphanelerde debug yapmak imkansız gibidir. İnceleyenler görmüşlerdir; kütüphanelerin kodları bol miktarda include içerir, fonksiyonlar sürekli birbirlerini çağırır vs.(Genelde kütüphaneleri birçok kişi yazdığı için böyle bir hiyerarşinin olması da zorunludur.). Böyle bir yapıda kodu izlemek ve hatayı bulmak, değişiklik yapmak oldukça zordur. Hele bir de kütüphane oluşturulurken belli bir standart belirlenmemişse bu iş tam bir eziyete dönüşür. Üstelik siz bir fonksiyonu değiştirdiğinizde normalde çalışan ama işleri sırasında değişiklik yaptığınız fonksiyondan yararlanan tüm işlemlerinde hatayla sonuçlanması da cabası.

Kütüphaneler Öğrenme Becerimizi Azaltıyor

Nasıl oluyor bu olay? Kütüphaneler sayesinde bilmediğimiz şeyleri iki satırlık komutlarla yapabiliyoruz. Dolayısıyla bilmediğimiz şeyleri bilmemeye devam ediyoruz. Elimizde debug imkanı bile olsa gerekli düzeltmeleri yapacak bilgiyi kendimizde bulamıyoruz. Çünkü işi kütüphanelerle yapmaya alışmış olan biz, işin arka planından bihaber yaşıyoruz. Gerçekte aynı işlem ne tarz kodlarla yapılır bilmiyoruz. Eskiden kütüphaneler ve orjinal dil beraber kullanılırken şimdilerde dil yerine kütüphane öğreniliyor. Sonuç olarak ilgili dili bilmeden kütüphaneyle site yapanlar ilk problemde pes ediyor. Ayrıca Javascript' in adını duymayan, hiç bir şeyi bilmeyen webmasterlar(!) türüyor. Doğal olarak "Abi ben o siteyi 50 liraya yaparım." şeklinde diyaloglar gelişiyor.

Ne Yani Kütüphane Kullanmayalım Mı ?

Yok o kadar da demedik. :) Kütüphaneler hız kazandırma açısından oldukça faydalı. Sadece hız konusu bile bir çok olumsuzluğunun önüne geçmeye yetiyor. Bununla birlikte kütüphane kullanırken en azından arka planda ne döndüğünü bilelim. Yani işimizi o kütüphane olmadan da halledebilecek durumda olalım. Yapamadığımız bir şey olunca araştıralım, öğrenelim, hemen kütüphanelere koşmayalım.

Gerçi bence en iyisi kodlarınızın tamamının size ait olması. Aksi taktirde kodlarınız size üvey evlat gibi geliyor. En azından benim için öyle. Bu yüzden kütüphaneleri pek sevmiyorum. :)

0 yorum:

16 Mayıs 2009 Cumartesi

0

Stringler Kodmuş Gibi Çalıştırmak İçin: eval()

Posted in , , , ,
AJAX web dünyasına sunduğu avantajlar sayesinde haklı bir popülerliğe sahip. Haliyle gün geçtikçe AJAX kullanan sayfaların sayısı artıyor. Birçoğumuz sayfalarında gereken verileri AJAX ile çekip yayımlıyoruz. Açıkçası bu veriler sadece yayımlanacak şeylerse bir problem olmuyor. Ancak zaman oluyor ki AJAX ile sunucumuzdanjavascript kodları çekiyoruz ve bu kodları çalıştıramadığımızı görüyoruz. İşte bu nokta da yardımımıza javascript in sevimli fonksiyonu eval() yetişiyor.

eval() Nedir? Yenir Mi İçilir Mi?

eval(), string halindeki javascript komutlarını çalıştıran bir fonksiyondur. Bir örnek yapmak gerekirse;

var calistirilacak = "alert(\"Merhaba Dünya\")";

Bu stringi çalıştırmak için yapmamız gereken tek şey değişkenimizi eval() e göndermek;

eval(calistirilacak);

Şimdi bir de AJAX & eval() kombinasyonunu inceleyelim.
index.html
var XHttp; //XMLHttpRequest nesnesi
var veri; //AJAX ile çektiğimiz kodları saklayacağımız değişken

if(navigator.appName == "Microsoft Internet Explorer")
{XHttp = new ActiveXObject("Microsoft.XMLHTTP");}
else{XHttp = new XMLHttpRequest();}

function veri_gonder()
   {
   XHttp.open('get', 'processor.php');
   XHttp.onreadystatechange = function ()
      {
      if(XHttp.readyState == 4)
         {
         veri = XHttp.responseText;
         eval(veri);
         }
      }
      XHttp.send(null);
   }


processor.php
<?php echo("alert(\"Merhaba Dünya\")"); ?>

0 yorum: