Google

20 Aralık 2009

Programlama Esprileri (İngilizce)

// 
// Dear maintainer:
//
// Once you are done trying to 'optimize' this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:
//
// total_hours_wasted_here = 16
//
 // sometimes I believe compiler ignores all my comments
 // I dedicate all this code, all my work, to my wife, Darlene, who will 
// have to support me and our three children and the dog once it gets
// released into the public.
//When I wrote this, only God and I understood what I was doing
//Now, God only knows
Exception up = new Exception("Something is really wrong.");
throw up; //ha ha
return 1; // returns 1
 // I don't know why I need this, but it stops the people being upside-down
x = -x;
#define TRUE FALSE
//Happy debugging suckers
//Dear future me. Please forgive me. 
//I can't even begin to express how sorry I am.
//Don't touch it or ninja will punish you
 Wife: I want a baby
Husband: Ok, I'll install it tonight


16 Mayıs 2009

Programlama ile ilgili veciz sözler (ingilizce)

Writing the first 90 percent of a computer program takes 90 percent of the time. The remaining ten percent also takes 90 percent of the time and the final touches also take 90 percent of the time.
-N.J. Rubenking

Walking on water and developing software from a specification are easy if both are frozen
- Edward V Berard

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems
- Jamie Zawinski

Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- Bill Gates

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
- Rick Osborne

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
- Rich Cook

I don’t care if it works on your machine! We are not shipping your machine!
- Ovidiu Platon

I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.
- Bjarne Stroustrup

A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila.
- Mitch Ratcliffe

If debugging is the process of removing software bugs, then programming must be the process of putting them in.
- E. W. Dijkstra

Two things are infinite: the universe and human stupidity; and I’m not sure about the universe.
- Albert Einstein

I love deadlines. I like the whooshing sound they make as they fly by.
- Douglas Adams

Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders
- Unknown

I want to improve the world, but God wouldn’t give me the source code.
- Unknown

A programmer is a device that converts caffeine into error messages.
- Unknown

Features, quality, time: pick two.
- Unknown

You should name a variable using the same care with which you name a first-born child.
- James O. Coplien

I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself “Dijkstra would not have liked this”, well, that would be enough immortality for me.
– E. Dijkstra

In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg.
- Bjarne Stoustrup.

Programming is a lot like sex. One mistake and you could have to support it the rest of your life.
- Unknown

Deliver yesterday, code today, think tomorrow.
- Unknown

You never finish a program, you just stop working on it.
- Unknown

Any sufficiently advanced bug is indistinguishable from a feature.
- Unknown

There are 10 types of people in this world.
Those who understand binary, and those who don't.
- Unknown


Etiketler: ,

23 Eylül 2007

Linux'te GCC Yüklü Olmasına Rağmen Derleme Sorunu

Linux dağıtımı olarak kullandığım Ubuntu'ma uzun bir aradan sonra ufak bir C programı yazmak için geri dönmüştüm. Deneme amaçlı bir C kodu yazdım ve uçbirimde komut satırına "gcc a.c" yazdım ama meğer sistemde gcc yüklü değilmiş. Harala gürele "sudo apt-get install gcc-4.0" ile gcc'mi yükledim. Tamamdır herhalde deyip kodu tekrar derlemeye çalıştım. Bu seferde derleme hataları (a.c:2:19: hata: stdio.h: No such file or directory gibi) aldım. Ufak bir araştırma sonucu libc6-dev paketini yüklemem gerektiğini bunu da en kısa yoldan apt-get install build-essential komutuyla yapabileceğimi öğrendikten sonra komutun başına sudo'yu ekleyip enter tuşuna bastım. Aşağıdaki mesajı "y"ye basarak onayladım:

Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
cpp dpkg-dev g++ g++-4.0 gcc libc6 libc6-dev libc6-i686 libstdc++6-4.0-dev
linux-kernel-headers make
Suggested packages:
cpp-doc debian-keyring gcc-4.0-doc lib64stdc++6 manpages-dev autoconf
automake1.9 libtool flex bison gcc-doc glibc-doc libstdc++6-4.0-doc
stl-manual
The following NEW packages will be installed
build-essential cpp dpkg-dev g++ g++-4.0 gcc libc6-dev libstdc++6-4.0-dev
linux-kernel-headers make
The following packages will be upgraded:
libc6 libc6-i686
2 upgraded, 10 newly installed, 0 to remove and 162 not upgraded.
Need to get 13,8MB of archives.
After unpacking 34,2MB of additional disk space will be used.
Do you want to continue [Y/n]?

Yükleme işlemi sona erince tekrar kodumu derlemeyi denedim ve voila! İşlem bu kadar. Şu apt-get ne büyük nimet değil mi?

Etiketler: , , , , , ,

09 Ağustos 2006

ÇEKIRDEK DERLEME

Önce buraya tıklayarak ulaşacağınız sayfadan sıkıştırılmış kaynak dosyasını indirmelisiniz. Bu dosyayı indirdikten sonra /usr/src altına açacaksınız. Örn; linux-2.6.17.6
Şimdi ilk olarak çekirdek derleme işleminde kullanılan ve sistemimizde kurulu olan çekirdek tarafından kullanılmak üzere yüklenmiş bazı kaynakları kaldırıp, yeni çekirdeğimizin kaynaklarını yükleyeceğiz. Bunun için aşağıdaki komutları uygulamalısınız.

#cp /usr/src/linux-2.6.17.6/include/asm-i386/* /usr/include/asm/ -R
#cp /usr/src/linux-2.6.17.6/include/asm-generic/* /usr/include/asm-generic/ -R

Bu işlemin ardından /usr/include/ altındaki linux dizinini alt dizinleri ile beraber silmelisiniz. Bu dizinin yerine yeni çekirdeğimizin dizinini yerleştireceğiz.
#ln -s /usr/src/linux-2.6.17.6/include/linux/ /usr/include/linux

Yukarıdaki işlem yeni çekirdeğimizin linux dizini için sembolik bir bağ oluşturacaktır. Bağ oluşturmak yerine söz konusu dizini /usr/include/ altına kopyalamak hataya neden olabilir. Bu nedenle dizini kopyalamayınız. Son olarak /boot/ altındaki mevcut çekirdeğimizin konfigurasyon dosyasını (config- ile başlayan dosya) .config adı ile /usr/src/linux-2.6.17.6/ dizinine kopyalayınız.

Ardından /usr/src/linux-2.6.17.6/ dizini altına giderek aşağıdaki komutu çalıştırınız.

#make menuconfig

Bu komut size konfigurasyon dosyasını düzenleyebileceğiniz bir arayüz açacaktır. Bu arayüzde işiniz bittiğinde Exit ile çıkabilirsiniz. Ardından aşağıdaki komutları uygulayarak işlemi tamamlayabilirsiniz.

#make deb-pkg
#mkinitrd -o initrd.img-2.6.17.6 2.6.17.6
Bu komut /usr/src altına bir paket dosyası oluşturacaktır. Bu paketi aşağıdaki komut ile kurduktan sonra işletim sisteminizin açılışta yeni çekirdeği görmesi için GRUB' u yapılandırmalısınız. Bunun için /boot/grub/menu.lst dosyasındaki eski çekirdeğinize ait tanımlama satırlarını kopyalayıp dosya yollarını değiştirmeniz yeterlidir.
#dpkg -i [ yeni_çekirdek_için_oluşturduğumuz_paket ]

Kaynak: http://blog.phpist.net/?p=17

28 Nisan 2006

Tomcat-5'teki UTF-8 decoding sorunu

DisplayTag ile sütun sıralama yaptırdığımda sunucuya gönderilen request'in içindeki verilerin UTF-8 ile kodlanmasında ve bu kodlamamnın çözülmesinde sorun yaşadım. Türkçe karakterler yerine her seferinde anlamsız karakterler yazıyordu ve bu karakterler her request'te nedenini anlayamadığım bir şekilde artıyordu.
Üst üste yaptığım sıralama işlemlerinde belli bir süre sonra listenin bulunduğu sayfa açılmadı. Bu sorunu çözmek için Tomcat'in yapılandırma dosyası olan
%TOMCAT_HOME%\conf\server.xml içine aşağıda koyu renkle gösterilen parametreyi ekledim.


<Connector port="8080" URIEncoding="UTF-8" .../>

06 Şubat 2006

JAVASCRIPT KOD ÖRNEKLERİ(sürekli güncellenecek)

1) Özelliklerini sizin belirleyeceğiniz bir popup pencere açmak için:

window.open ('popup.html', 'popup', 'height=500, width=700, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no')
(çalışması için tarayıcınızın popup engelleyicisini kapatmalısınız)

2) Ekranın çözünürlüğünü öğrenmek için

javascript:alert(screen.width+" "+screen.height)

3)Yeri değiştirilebilir dinamik pencere oluşturmak

<head></head> imleri arasına

<script>

//DHTML Window script- Copyright Dynamic Drive (http://www.dynamicdrive.com)
//For full source code, documentation, and terms of usage,
//Visit http://www.dynamicdrive.com/dynamicindex9/dhtmlwindow.htm

var dragapproved=false
var minrestore=0
var initialwidth,initialheight
var ie5=document.all&&document.getElementById
var ns6=document.getElementById&&!document.all

function iecompattest(){
return (!window.opera &&amp;amp;amp;amp; document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function drag_drop(e){
if (ie5&&dragapproved&&event.button==1){
document.getElementById("dwindow").style.left=tempx+event.clientX-offsetx+"px"
document.getElementById("dwindow").style.top=tempy+event.clientY-offsety+"px"
}
else if (ns6&&dragapproved){
document.getElementById("dwindow").style.left=tempx+e.clientX-offsetx+"px"
document.getElementById("dwindow").style.top=tempy+e.clientY-offsety+"px"
}
}

function initializedrag(e){
offsetx=ie5? event.clientX : e.clientX
offsety=ie5? event.clientY : e.clientY
document.getElementById("dwindowcontent").style.display="none" //extra
tempx=parseInt(document.getElementById("dwindow").style.left)
tempy=parseInt(document.getElementById("dwindow").style.top)

dragapproved=true
document.getElementById("dwindow").onmousemove=drag_drop
}

function loadwindow(url,width,height){
if (!ie5&&!ns6)
window.open(url,"","width=width,height=height,scrollbars=1")
else{
document.getElementById("dwindow").style.display=''
document.getElementById("dwindow").style.width=initialwidth=width+"px"
document.getElementById("dwindow").style.height=initialheight=height+"px"
document.getElementById("dwindow").style.left="30px"
document.getElementById("dwindow").style.top=ns6? window.pageYOffset*1+30+"px" : iecompattest().scrollTop*1+30+"px"
document.getElementById("cframe").src=url
}
}

function maximize(){
if (minrestore==0){
minrestore=1 //maximize window
document.getElementById("maxname").setAttribute("src","restore.gif")
document.getElementById("dwindow").style.width=ns6? window.innerWidth-20+"px" : iecompattest().clientWidth+"px"
document.getElementById("dwindow").style.height=ns6? window.innerHeight-20+"px" : iecompattest().clientHeight+"px"
}
else{
minrestore=0 //restore window
document.getElementById("maxname").setAttribute("src","max.gif")
document.getElementById("dwindow").style.width=initialwidth
document.getElementById("dwindow").style.height=initialheight
}
document.getElementById("dwindow").style.left=ns6? window.pageXOffset+"px" : iecompattest().scrollLeft+"px"
document.getElementById("dwindow").style.top=ns6? window.pageYOffset+"px" : iecompattest().scrollTop+"px"
}

function closeit(){
document.getElementById("dwindow").style.display="none"
}

function stopdrag(){
dragapproved=false;
document.getElementById("dwindow").onmousemove=null;
document.getElementById("dwindowcontent").style.display="" //extra
}

</script>

<body></body> imleri arasına

<div id="dwindow" style="position:absolute;background-color:#EBEBEB;cursor:hand;left:0px;top:0px;display:none" onMousedown="initializedrag(event)" onMouseup="stopdrag()" onSelectStart="return false">
<div align="right" style="background-color:navy"><img src="max.gif" id="maxname" onClick="maximize()"><img src="close.gif" onClick="closeit()"></div>
<div id="dwindowcontent" style="height:100%">
<iframe id="cframe" src="" width=100% height=100%></iframe>
</div>
</div>

<script>
//Use below code to load DHTML Window as page loads
if (ns6) window.onload=new Function('loadwindow("http://www.google.com",600,400)')
else
loadwindow("http://www.google.com",600,400)
</script>

<!--Use below code to load DHTML window via link-->
<a href="javascript:loadwindow('http://www.google.com',600,400)">Geocities</a>

4) Bugünden 2 hafta öncesini hesaplayan script

<head></head> imleri arasına

<script type="text/javascript">
var now = new Date();
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var newdate=new Date(now.getFullYear(),now.getMonth(),now.getDate()-14);
var y=newdate.getFullYear(); var m=newdate.getMonth(); var d = newdate.getDate();
d<10?d='0'+d:null;
onload = function(){
document.getElementById('dat').firstChild.data=d+' '+months[m]+' '+y+' '+days[newdate.getDay()]
}
</script>

<body></body> imleri arasına

<div id="dat"> </div>

5) Olası javascript hata mesajlarını ekrana yazdıran script

window.onerror = handleErrors; // or null to suppress error message
function handleErrors(msg, url, line){
var errorString = "JavaScript Error Report\n";
errorString += "Message: "+msg+"\n";
errorString += "Url: "+url+"\n";
errorString += "Line: "+line;
alert(errorString);
return true;
}

Bazı faydalı linux komutları (sürekli güncellenecek)

" rm -rf dir " => ( dir ile belirtilen kılavuzu içi dolu olsa bile tamamıyla siler )
" cp -R dir1 dir2 " => ( dir1 ile belirtilen kılavuzu dir2 dizini altına kopyalar )

05 Şubat 2006

Linux'te Firefox'u Çalıştırıken Çıkan Sorun

Firefox 1.5'i kurduktan sonra konsolda çalıştırmak istediğimde ekranda "SCIM: im_module_init" diye bir mesaj çıktı ve firefox açılmadı.

[serdar@localhost local]# ./firefox
SCIM: im_module_init

Bunu aşmak için şu komutu girmek zorunda kaldım.

[serdar@localhost local]#export GTK_IM_MODULE=xim

Bunu yazdıktan sonra firefox düzgün olarak açıldı.