Welcome, Guest. Please login or register.
Did you miss your activation email?
08 February, 2012, 11:29:59 am
Home Help Search Login Register

Lazarus and FreePascal

Erişim

Stats

Members
  • Total Members: 1207
  • Latest: yuksek
Stats
  • Total Posts: 326
  • Total Topics: 83
  • Online Today: 17
  • Online Ever: 53
  • (22 October, 2011, 06:01:43 pm)
Users Online
Users: 0
Guests: 16
Total: 16
    Dökümanlar    
Dökümanlar
M.Ali VARDAR 2006 Tomcat ile SSL Kullanımı
Tomcat ile SSL Kullanımı
Yazdığınız bir uygulama veya Tomcat üzerinde bulunan başka birinin yazdığı web
uygulamasını, SSL kullanarak nasıl güvenli hale getireceğimizi anlatmaya
çalışacağım. Döküman içinde yapılanlar Tomcat sürüm 4.1.34 üzerinde yapılmıştır.
Java, sürüm olarak 1.4.2 kullanılmıştır. Java sürüm 1.2 ve 1.3 için
http://java.sun.com/products/jsse/ adresinden eski sürümler indirilebilir. İleri
Java sürümlerinde buna ihtiyacınız yoktur. İlgili aranan dosya
$JAVA_HOME/jre/lib/jsse.jar adresinde olması gerekir. Öncelikle Tomcat içinde
kullanmak amacıyla key üretmemiz gerekli bunun için aşağıdaki satırı kullanıyoruz.
keytool genkey
alias
...Read More
Dökümanlar
M.Ali VARDAR 2006 – Qt'ye Giriş
QT 'YE GIRIŞ
Linux dünyasında geliştirilen uygulamaların büyük bir çoğunluğu iki farklı
grafik kütüphanesi kullanılarak yazılmaktadır. Bunlardan biri GTK diğeri ise Qt
kitaplıklarıdır. Qt kütüphanesi X altında uygulama geliştirmek isteyen
geliştiriciler için Trolltech firması tarafından geliştirilen bir görsel
kütüphanedir. Çoğunlukla görsel uygulama yazacak C++ geliştiricileri
tarafından rağbet görmektedir. Qt kütüphanesi ilk olarak tamamen paralı bir
ürün olarak piyasa sürülmüştür. Daha sonra GPL sürümü de yerini almıştır. KDE
masa üstü ortamı tamamen qt ile yazılmış olması qt kütüphanesinin gücünü
anlamamızı sağlamaktadır. Qt kütüphanesiyle yazılmış bir çok uygulama
piyasada karşımıza çıkabilmektedir. Qt sadece bir görsel uygulama
kütüphanesinden başka birçok eklentileri de bulunmaktadır. Bunları örnek
vermek gerekirse Qt kitaplığı içinde Sql ve network uygulamaları geliştirmek
için gerekli bir çok fonksiyon bulunmaktadır. Özellikle veritabanı uygulamaları
geliştirenler için büyük kolaylık sağlamaktadır. Qt ile ilgili örnekleri derlemek ve
...Read More
Dökümanlar
M.Ali VARDAR 2006 Make Kullanımı nasıldır?
Make Kullanımı
GCC ile uygulama derlerken, kullanılan kitaplıkların sayısı artabilmektedir. Bu sayı
ile orantılı ilgili kitaplıklara ait dizinler değişebilir. Aynı zamanda uygulamaya dahil
olan dosya sayısı artabilir. Bu değerleri parametre olarak vererek her seferinde GCC
ile uygulama derlemek uygulama geliştirme süreci çekilmez bir hale getirecektir.
Make ile ilgi örnekler c diline göre verilmiştir. Make konsolda çalışan tüm dilleri
desteklemektedir.
Make genel olarak projenin derlenmesi, kurulması, sistemden kaldırılması,
derlenmiş olan dosyaları silmesi gibi sıklıkla yapılan işlemleri baitleştirmeye yarar.
Konsolda Make komutuna basit bir parametre vererek bu işlemler veya özel
komutlar gerçekleştirilebilir. En basit kullanımı konsolda make yazılması ile
gerçekleşir. Make komutunu verilebilecek parametreler aşağıdaki şekildedir. En sık
kullanılan yöntemler ise
make
make clean
...Read More
Dökümanlar
M.Ali VARDAR 2006 Ltrace Nasıl?
Ltrace Kullanımı
Ltrace, uygulamaların kullandığı dinamik kitaplık çağrılarını izlememize
yarayan aracın adıdır. Kullanımı genel olarak strace 'e benzer. ltrace ve
strace isimli uygulamalar büyük ve sık kullanılan uygulamalar değildir.
Hata ayıklama işlemleri için, öğrenilmesi gerekli uygulamalar
arasındadır. Şimdi çıktısını görmek için basit bir uygulama yazalım ve
ne tür mesajlar verdiğini gözleyelim. Çıktılarını izleyeceğimiz uygulama
en basit hali ile aşağıdaki şekildedir.
#include
int main()
{
int i;
printf("ornek uygulama\n");
for (i=0;i<3;i++) printf("%i\n",i);
}
Uygulamayı aşağıdaki şekilde derleyelim.
gcc o
ilk ilk.c
ltrace ile uygulamanın çağrılarını doğrudan ekranda gösteren en basit
kullanımı aşağıdaki şekildedir.
ltrace ./ilk
Konsolda uygulamanın ürettiği çıktı aşağıdaki şekildedir.
__libc_start_main(0x8048394, 1, 0xbfaf5ac4, 0x80483f0, 0x80483e0
puts("ornek uygulama"ornek uygulama
)
= 15
printf("%i\n", 00
)
= 2
printf("%i\n", 11
)
= 2
printf("%i\n", 22
)
= 2
+++ exited (status 2) +++
M.Ali VARDAR 2006 Ltrace Nasıl?
libc içinden yapılan çağrıların listesini son derece net anlaşılır bir
şekilde ekranda çıktı olarak vermektedir. strace isimli uygulama da
olduğu gibi büyük ve hemen sonlanmayan uygulamalar için tüm çıktıyı
o
parametresi ile birlikte bir dosya içine aktarılabilir.
ltrace o
cikti.txt ./ilk
S
parametresi, sistem çağrılarını da normal kitaplık çağrıları ile
birlikte gösterir. L
parametresi ile birlikte kullanılırsa, sadece sistem
çağrıları izlenebilir. L
kitaplık çağrılarını göstermez. Bu parametre tek
başına uygulamayı işlevsiz hale getirir. S
parametresi kullanılması
mantıklıdır.
Sistem ve kitaplık çağrılarını birlikte gözlemek için;
ltrace S
o
cikti.txt ./ilk
Sadece sistem çağrıları için;
ltrace S
L
o
cikti.txt ./ilk
Eğer çalışan bir uygulama mevcut ise bu uygulamanın kitaplık
çağrılarını izlemek için p
parametresi kullanılır. p
parametresi ile
çalışan bir sürecin pid numarası ile onun çağrıları gözlem altına
alınabilir. Örnek olarak çalışan bir uygulamanın pid numarası 8763
olsun. Gözlemek için;
ltrace p
8763
Sonuç olarak ltrace her zaman lazım olmayan bir uygulama olsa da
neler yaptığını bilmek bizler için önemlidir. Özellikle yazılmış olan
uygulamaların bazı şeyleri nasıl yaptığını anlamak için hangi çağrıların
yaptığını anlamak için kullanılabilir.
M.Ali VARDAR
ali@linuxprogramlama.com
Bu yazının son şeklini www.linuxprogramlama.com adresinden temin
edebilirsiniz.
Yasal Açıklama:
Bu belgenin, [GCC Kullanımı] 1.0 sürümünün telif hakkı © 2006 M. Ali Vardar'a aittir. Bu
belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür
Belgeleme Lisansının 1.1 ya da daha sonraki sürümünün koşullarına bağlı kalarak
kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Bu Lisansın bir kopyasını
http://www.gnu.org/copyleft/fdl.html adresinde bulabilirsiniz.
M.Ali VARDAR 2006 Ltrace Nasıl?
BU BELGE "ÜCRETSİZ" OLARAK RUHSATLANDIĞI İÇİN, İÇERDİĞİ BİLGİLER İÇİN
İLGİLİ KANUNLARIN İZİN VERDİĞİ ÖLÇÜDE HERHANGİ BİR GARANTİ
VERİLMEMEKTEDİR. AKSİ YAZILI OLARAK BELİRTİLMEDİĞİ MÜDDETÇE TELİF
HAKKI SAHİPLERİ VE/VEYA BAŞKA ŞAHISLAR BELGEYİ "OLDUĞU GİBİ", AŞİKAR
VEYA ZIMNEN, SATILABİLİRLİĞİ VEYA HERHANGİ BİR AMACA UYGUNLUĞU DA
DAHİL OLMAK ÜZERE HİÇBİR GARANTİ VERMEKSİZİN DAĞITMAKTADIRLAR.
BİLGİNİN KALİTESİ İLE İLGİLİ TÜM SORUNLAR SİZE AİTTİR. HERHANGİ BİR
HATALI BİLGİDEN DOLAYI DOĞABİLECEK OLAN BÜTÜN SERVİS, TAMİR VEYA
DÜZELTME MASRAFLARI SİZE AİTTİR. İLGİLİ KANUNUN İCBAR ETTİĞİ
DURUMLAR VEYA YAZILI ANLAŞMA HARİCİNDE HERHANGİ BİR ŞEKİLDE TELİF
HAKKI SAHİBİ VEYA YUKARIDA İZİN VERİLDİĞİ ŞEKİLDE BELGEYİ DEĞİŞTİREN
VEYA YENİDEN DAĞITAN HERHANGİ BİR KİŞİ, BİLGİNİN KULLANIMI VEYA
KULLANILAMAMASI (VEYA VERİ KAYBI OLUŞMASI, VERİNİN YANLIŞ HALE
GELMESİ, SİZİN VEYA ÜÇÜNCÜ ŞAHISLARIN ZARARA UĞRAMASI VEYA
BİLGİLERİN BAŞKA BİLGİLERLE UYUMSUZ OLMASI) YÜZÜNDEN OLUŞAN
GENEL, ÖZEL, DOĞRUDAN YA DA DOLAYLI HERHANGİ BİR ZARARDAN, BÖYLE
BİR TAZMİNAT TALEBİ TELİF HAKKI SAHİBİ VEYA İLGİLİ KİŞİYE BİLDİRİLMİŞ
OLSA DAHİ, SORUMLU DEĞİLDİR.
Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen
herhangi bir terim, bir ticari isim ya da kuruma itibar kazandırma olarak
algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği
anlamında görülmemelidir.
Dökümanlar
M.Ali VARDAR 2006 Strace Nasıl?
Strace Kullanımı
BSD tarzı bir lisans ile dağıtılmaktadır. İlk olarak SunOS içinde bulunan
trace adlı uygulamadan esinlenerek yazılmıştır. Derlenmiş olan
uygulamalar içinde çalışma zamanında oluşan hataları anlamak
amacıyla yazılmış bir kaynak kod takip uygulamasıdır. Uygulama
kodlarının hangi zamanda hangi kodun işlediğinin bilgisini bizlere
verir. Bunu yaparken aynı zamanda sistem içine erişilen dosyaların ve
kullanılan kütüphaneler hakkında da bilgiler verir. Strace bir çok
dağıtımda hazır olarak gelmeyebilir. Ancak hemen hemen her dağıtımın
geliştirme kitaplıkları içinde bulunmaktadır.
Strace ile beraber kullanmak için en basit hali ile bir uygulama yazalım.
#include
int main()
{
printf("ornek uygulama");
}
Uygulamayı derleyelim. Uygulama adı olarak ilk kullanılacaktır.
gcc o
ilk ilk.c
Kullanım parametresi kullanması olmadan en basit ile strace
uygulamamız ile birlikte çalıştıralım.
strace ./ilk
Karşımıza aşağıdaki şekilde bir yazı üretecektir. Bu yazının ne olduğunu
anlamaya çalışalım.
execve("./ilk", ["./ilk"], [/* 29 vars */]) = 0
uname({sys="Linux", node="avardar", ...}) = 0
brk(0) = 0x804a000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1,
0) =
0xb7efb000
access("/etc/ld.so.nohwcap", F_OK) = 1
ENOENT (No such file or directory)
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1,
0) =
0xb7efa000
access("/etc/ld.so.preload", R_OK) = 1
ENOENT (No such file or directory)
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1,
0) =
0xb7ef9000
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=75499, ...}) = 0
M.Ali VARDAR 2006 Strace Nasıl?
old_mmap(NULL, 75499, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ee6000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = 1
ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1232784, ...}) = 0
old_mmap(NULL, 1238972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7db7000
old_mmap(0xb7edc000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x125000) = 0xb7edc000
old_mmap(0xb7ee3000, 10172, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, 1,
0) = 0xb7ee3000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1,
0) =
0xb7db6000
set_thread_area({entry_number:1
>
6, base_addr:0xb7db66c0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, l
imit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7ee6000, 75499) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1,
0) =
0xb7ef8000
write(1, "ornek uygulama", 14ornek uygulama) = 14
munmap(0xb7ef8000, 4096) = 0
exit_group(14) = ?
Strace çıktısı içinde execve() çağrısı çalıştırılan dosyanın adını
vermektedir. uname() sistem adı ve tipi bilgisini almaktadır. Uygulama
bu bilgiler sonrasında sistem belleği durumu ile ilgili çağrıları
kullanmaktadır. write() çağrısı ile birlikte ekrana istediğimiz yazıyı
yazmaktadır. Daha sonra hafıza alanı boşaltılıp uygulamadan
çıkılmaktadır. Bu oldukça karmaşık gözüken bir yapı zaman içinde size
son derece basit ve kullanışlı gelecektir. Özellikle başka birisi
tarafından yazılmış olan bir uygulamanın eriştiği sistem çağrılarını ve
kullandığı dosyaları son derece kolay bir şekilde gözlemleyebilirsiniz.
Zaman için bilmediğiniz çağrıları araştırarak sistem hakkında daha
fazla bilgi sahibi olmanızı artıracaktır. Uygulamalar nasıl çalışır
oyununa bir başka açıdan bakalım ve yazılmış diğer bir uygulamanın
sonlanmadan, bir kullanıcıdan yanıt beklediğini düşünelim. Buna göre
basit bir örnek yazalım.
#include
int main()
{
char c;
c=getchar();
printf("%c\n",c);
}
Uygulamayı ikinci adı ile derleyelim.
gcc o
ikici ikinci.c
M.Ali VARDAR 2006 Strace Nasıl?
Bu uygulama kullanıcıdan bir karakter veriyi alır ve ekrana basar.
Uygulamayı getchar() fonksiyonu sırasında bekletmektedir.
strace ./ikinci yazarak çalıştırınca, çıktı olarak karşımıza şu şekilde
bir duraklama mesajı ile gelecektir. Bu anda uygulama içinde bulunan
bilgi girişi sizden beklenmektedir.
........
read(0,
Bu gibi durumlarda özellikle ncurses tabanlı uygulamalar yazıldığı
zamanlarda kullanım ile ilgili sıkıntılar yaşanmasına neden olabilir.
Ekran son derece karışık olabilir çünkü uygulama çıktısı ile birlikte
strace çıktısı konsol ekranında aynı gösterileceği için karışıklık
yaratacaktır. Bu amaçla uygulamanın çıktısını bir text dosya içine kayıt
etme şansımız vardır.
strace o
cikti.txt ./ikinci
Komutunun bize faydası çalışan uygulamanın normal bir şekilde
çalışmasını engellemeyecektir. Aynı zamanda ilerde çıktıları okumak
veya atladığımız alanları görmek için tekrar tekrar çalıştırmak zorunda
bırakmayacaktır. Sadece istediğimiz çağrıları görebilmek amacıyla -e
parametresi kullanılır. Aşağıdaki örneğe göre sadece open çağrıları
listelenecektir.
strace eopen
./ilk
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
Ayrıca parametre olarak e
trace=open,close,read biçiminde
kullanarak birden fazla çağrıyı gözlemleyebiliriz. Örnek kullanım olarak
aşağıya bakılabilir.
strace e
trace=open,close ./ilk
open("/etc/ld.so.cache", O_RDONLY) = 3
close(3) = 0
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
close(3) = 0
Strace aynı zamanda çalışan süreçleri de yakalayabilir. Bu amaçla
kendimize bir çalışan uygulama seçelim.
M.Ali VARDAR 2006 Strace Nasıl?
root@avardar:~# ps aux | grep gaim
root 9697 0.3 3.0 42272 15920 ? S 09:20 0:35 gaim
Kobay uygulama olarak ben nasıl çalıştığını görmek istediğim gaim
isimli haberleşme uygulamasını seçtim.
#strace p
9697
yazarak çalışan uygulamanın sürekli olarak neler yaptığı
gözlemlenebilir.
Sonuç olarak strace hata ayıklama ve sorunların anlaşılmasında bizler
için son derece değerli bir uygulamadır. Bu uygulama aynı zamanda
kendini geliştirmek isteyenler için son derece yararlıdır. Bu aracı bir
oyun makinesi haline getirmek sistemin nasıl işlediği hakkında bilgi
sahibi olmak sizlerin elindedir. Mesela strace ile ls ve date
komutlarının nasıl işlediğini görmek bir çok geliştirici için heyecan
verici olabilir.
M.Ali VARDAR
ali@linuxprogramlama.com
Bu yazının son şeklini www.linuxprogramlama.com adresinden temin
edebilirsiniz.
Yasal Açıklama:
Bu belgenin, [GCC Kullanımı] 1.0 sürümünün telif hakkı © 2005 M. Ali Vardar'a aittir. Bu
belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür
Belgeleme Lisansının 1.1 ya da daha sonraki sürümünün koşullarına bağlı kalarak
kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Bu Lisansın bir kopyasını
http://www.gnu.org/copyleft/fdl.html adresinde bulabilirsiniz.
BU BELGE "ÜCRETSİZ" OLARAK RUHSATLANDIĞI İÇİN, İÇERDİĞİ BİLGİLER İÇİN
İLGİLİ KANUNLARIN İZİN VERDİĞİ ÖLÇÜDE HERHANGİ BİR GARANTİ
VERİLMEMEKTEDİR. AKSİ YAZILI OLARAK BELİRTİLMEDİĞİ MÜDDETÇE TELİF
HAKKI SAHİPLERİ VE/VEYA BAŞKA ŞAHISLAR BELGEYİ "OLDUĞU GİBİ", AŞİKAR
VEYA ZIMNEN, SATILABİLİRLİĞİ VEYA HERHANGİ BİR AMACA UYGUNLUĞU DA
DAHİL OLMAK ÜZERE HİÇBİR GARANTİ VERMEKSİZİN DAĞITMAKTADIRLAR.
BİLGİNİN KALİTESİ İLE İLGİLİ TÜM SORUNLAR SİZE AİTTİR. HERHANGİ BİR
HATALI BİLGİDEN DOLAYI DOĞABİLECEK OLAN BÜTÜN SERVİS, TAMİR VEYA
DÜZELTME MASRAFLARI SİZE AİTTİR. İLGİLİ KANUNUN İCBAR ETTİĞİ
DURUMLAR VEYA YAZILI ANLAŞMA HARİCİNDE HERHANGİ BİR ŞEKİLDE TELİF
HAKKI SAHİBİ VEYA YUKARIDA İZİN VERİLDİĞİ ŞEKİLDE BELGEYİ DEĞİŞTİREN
VEYA YENİDEN DAĞITAN HERHANGİ BİR KİŞİ, BİLGİNİN KULLANIMI VEYA
KULLANILAMAMASI (VEYA VERİ KAYBI OLUŞMASI, VERİNİN YANLIŞ HALE
GELMESİ, SİZİN VEYA ÜÇÜNCÜ ŞAHISLARIN ZARARA UĞRAMASI VEYA
BİLGİLERİN BAŞKA BİLGİLERLE UYUMSUZ OLMASI) YÜZÜNDEN OLUŞAN
GENEL, ÖZEL, DOĞRUDAN YA DA DOLAYLI HERHANGİ BİR ZARARDAN, BÖYLE
M.Ali VARDAR 2006 Strace Nasıl?
BİR TAZMİNAT TALEBİ TELİF HAKKI SAHİBİ VEYA İLGİLİ KİŞİYE BİLDİRİLMİŞ
OLSA DAHİ, SORUMLU DEĞİLDİR.
Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen
herhangi bir terim, bir ticari isim ya da kuruma itibar kazandırma olarak
algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği
anlamında görülmemelidir.
Dökümanlar
M.Ali VARDAR – 2005 GNU Debugger Kullanımı
GDB Kullanımı
Uygulamalarımızı geliştirme sırasında gerek sistemden olsun gerek programcı tarafından
olsun gelen bir takım sinyaller veya kesmeler veya hatalar yüzünden uygulamamızın
çalışmasında kesilmeler olabilir. Bu gibi zamanlarda çoğu zaman tahmin edebiliyor
olmak yeterli olmayabilir. Bu gibi durumlarda en büyük yardımcımız gdb olacaktır. Linux
sistemlerde yaygın olarak gnu debugger isimli uygulama kullanılır. Bu uygulama ile
uygulamanızın kodu veya core dosyası incelenebilir. Öncelikle derleme işlemine bir
bakalım.
gcc -g deneme.c -o deneme
...Read More
Pages: 1 [2]
TinyPortal v1.0 beta 4 © Bloc


Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!