|
Salı, 24 Ağustos 2010 |
!!!This content has not been translated yet!!!
-
localhostta public private key ikilisi oluşturulur.
ssh-keygen -t dsa
-
remote hostta .ssh dizini yaratılır.
mkdir .ssh
-
localhosttaki public key remote hosttaki authorized_keys dosyasına eklenir.
cat ~/.ssh/id_dsa.pub | ssh <user>@<remote-host> "cat >> ~/.ssh/authorized_keys"
-
eğer çalışmıyorsa dosya izinleri kontrol edilir. gerekiyor ise chmod ile gerekli izinler verilir. olması gereken izinler:
(remotehost)
.ssh 700
.ssh/authorized_keys 600
(localhost)
.ssh 700
.ssh/id_dsa 600
.ssh/id_dsa.pub 644
|
|
|
Cumartesi, 24 Ekim 2009 |
!!!This content has not been translated yet!!! bir yazımda gcc -D parametresi kullanarak debug satırlarının yalnızca debug modunda derlenmesini sağlayabileceğimizden bahsetmiştim. örnek olarak debug için kullanacağımız satırları aşağıdaki şekilde tanımlarsak:
#ifdef __debug__
printf("Uygulama modu: debug");
#endif
kodu gcc -D__debug__ parametresi ile derlediğimizde bu satır derlenecek ve çalışacak, aksi halde derlenmeyecektir. release modu için -D parametresini vermememiz yeterli olmakta. böylece release modunda bu satır hem boyut hem de performans açısından uygulamaya bir yük getirmiyor; çünkü bu modda bu satır derlenmiyor.
geçen zaman içerisinde debug loglarımı daha düzenli hale getirmek istedim. bu amaçla içinde bulunulan metod adını ve mesajı parametre olarak alan bir metod hazırladım. bu metod aldığı parametreleri uygun şekilde formatlayarak standart çıktıya yazıyor.
#ifdef __debug__
/*!
* External method for debugging. Use this method to print out debug messages.
*/
extern void Debug(const char *aMethod, const char *aMessage){
printf("\nCANAVAR.DEBUGGING.ENGINE: In Method '%s': %s", aMethod, aMessage);
}
#endif
|
|
Read more...
|
|
|
Salı, 21 Ekim 2008 |
!!!This content has not been translated yet!!! bulunulan klasörün altındaki boş klasörleri özyinelemeli olarak silmek için şu betik yeterli:
find -depth -type d -empty -exec rmdir {} \;
bazen boş klasörlerin içinde bazı gizli konfigurasyon dosyaları olabiliyor(.directory gibi). tüm alt klasörlerde bu dosyaları silmek için şu betik kullanılabilir:
find -depth -name ".directory" -exec rmdir {} \;
bu şekilde boş klasörler "gerçekten" boşaltıldıktan sonra ilk betik ile silinebilir.
|
|
|
Çarşamba, 11 Haziran 2008 |
!!!This content has not been translated yet!!! hepimizin bildiği gibi gcc pek çok parametre alabiliyor ve bu parametrelere göre oluşan sonuç çok farklılık gösterebiliyor.
bu parametrelerden belki de en önemlisi optimizasyon için kullanılan -O parametresi.
-O0
optimize etme. bu varsayılan ayardır. yani herhangi bir -O parametresi verilmezse -O0 kabul edilir.
-O ya da -O1
optimize et. bu durumda derleyici çok fazla zaman almayan optimizasyon işlemleri uygulayarak hem kod boyutunu, hem de çalışma zamanını optimize etmeye çalışır.
-O2
daha fazla optimize et. derleyici, boyut-hız trade-off'u olmayan bütün optimizasyonları gerçekleştirir. -O ile kıyaslandığında daha performanslı kod üretir. |
|
Read more...
|
|
|
Perşembe, 05 Haziran 2008 |
!!!This content has not been translated yet!!!
son zamanlarda makinemde aynı anda netbeans, eclipse, jboss/tomcat/glassfish çalıştırmam gerekti. özellikle eclipse kullanırken java.lang.OutOfMemoryError: PermGen space hatasını sıkça almaya başlamıştım. nedir bu hata diye biraz araştırma yapınca ortaya şöyle bir sonuç çıktı:
bu hata permanent generation heap dolduğunda oluşuyor. permanent generation heap, sınıflar ve metodlar gibi nesneleri tutan bir heap'tir. MaxPermSize parametresi bu heap'in en yüksek boyutunu belirtir. Bu parametre için Java Virtual Machine(JVM) varsayılan değeri çok düşük olduğundan, bu değer artırılmalıdır. Örnek olarak bu değeri 512MB'a yükseltmek için -XX:MaxPermSize=512m kullanılır. Bu değer en yüksek değeri belirttiğinden, değeri artırmak uygulamanın gerçekten bu kadar belleğe ihtiyacı olup olmadığının bilinmediği durumlarda bile güvenlidir.
|
|
|
Cuma, 06 Haziran 2008 |
!!!This content has not been translated yet!!! c derleyicisi structure atamasını desteklemez ve bir fonksiyon structure'ın kendisini döndüremez. örneğin c'de şunu yapamazsınız:
struct Canavar
{
int x,y;
} canavar1, canavar2;
canavar1 = canavar2; //structure ataması
structure'ı kopyalamak için bu kod şu şekle dönüştürülebilir:
memmove(&canavar1, &canavar2, sizeof(struct Canavar));
|
|
|
Salı, 03 Haziran 2008 |
!!!This content has not been translated yet!!!
özgür yazılım:
"özgür yazılım" bir özgürlük meselesidir, fiyat değil. "özgür yazılım" kavramı,
yazılım kullanıcıları için dört çeşit özgürlüğe dayanır:
* herhangi bir amaç için yazılımı çalıştırma özgürlüğü (özgürlük 0).
* yazılımın nasıl çalıştığını öğrenme ve ihtiyacınıza göre uyarlayabilme
özgürlüğü (özgürlük 1). yazılımın kaynak koduna ulaşmak bu iş için ön
koşuldur.
* kopyaları dağıtma özgürlüğü, böylece komşunuza yardım edebilirsiniz
(özgürlük 2).
* tüm toplumun yarar sağlayabileceği şekilde programı geliştirme ve
geliştirdiklerinizi yayınlama özgürlüğü, (özgürlük 3). kaynak koduna erişmek
bunun için bir önkoşuldur.
|
|
Read more...
|
|
|
Perşembe, 22 Mayıs 2008 |
!!!This content has not been translated yet!!! belki hala benim gibi cpu load nasıl hesaplanır bilmeyenler vardır diyerek bu
konuyla ilgili küçük bir araştırma yapıp kısa bir özet yazdım.
unix/linux sistemlerde konsolda uptime yazdığımızda karşımıza gelen 3 tane
load değeri var. bunlar benim düşündüğüm gibi min, avg, max değil son 1, 5 ve
15 dakikadaki cpu load ortalamalarıymış.
idle bir cpu'nun load sayısı sıfırdır. cpu'yu kullanan ya da bekleyen her bir
süreç bu sayıya 1 ekler. unix sistemlerin aksine linux sistemlerde i/o
bekleyen süreçler de buna dahil.
|
|
Read more...
|
|
|
Perşembe, 05 Haziran 2008 |
!!!This content has not been translated yet!!! int atexit ( void ( * function ) (void) );
Bu fonksiyon program normal şekilde sonlandığında çağrılacak olan fonksiyonu belirler. Eğer bu fonksiyon farklı yerlerde çağrılarak birden çok atexit fonksiyonu belirlenmişse, bu fonksiyonlar bir yığın yapısı şeklinde ters sırada çağrılır. Başka bir deyişle en son belirtilen fonksiyon en önce çağrılır. Aynı fonksiyon birden çok kez eklenebilir. Programın normal şekilde sonlandırılmasına exit() fonksiyonunun çağrılması da dahildir. |
|
|
Perşembe, 05 Haziran 2008 |
!!!This content has not been translated yet!!! exec() fonksiyonları herhangi bir çalıştırabilir dosyadan yeni bir süreç(process) yaratır. Başarılı bir exec() çağrısı asla geri dönmez çünkü çağıran süreç yaratılan yeni süreç ile değiştirilmiştir. Birden fazla thread içeren bir süreç içerisinden exec() fonksiyonu çağrıldığında bütün threadler sonlandırılır ve yeni dosya yüklenip çalıştırılır. Destructor fonksiyonları çağrılmaz. |
|
|
Perşembe, 06 Eylül 2007 |
!!!This content has not been translated yet!!!
Yazıyı indir:
Pardus+GP2X.pdf
Pardus+GP2X.odt
Bu yazının amacı GP2X için yazılım geliştirmek isteyen fakat nereden başlaması gerektiğini bilmeyen geliştiricilere yardımcı olmaktır. Ayrıntılı bilgilerden öte bu yazıda, gerekli bilgilere nereden ve nasıl ulaşabileceğiniz sorularına yanıt vermeye ve sizler için kapıyı aralamaya çalıştım. Sorularınızı
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
e-posta adresine gönderebilir ya da çok daha iyisi http://forum.gp2xtr.com/ adresindeki GP2X Türkiye Forumlarına yazabilirsiniz. Bunun yanında aradığınız cevap belki de http://wiki.gp2xtr.com adresinde çoktan yerini almıştır.
|
|
Read more...
|
|
|
|