[Çözüldü]Telefon defteri yapmak istiyorum, veritabanını nasıl oluşturabilirim ?

Başlatan noktakom, 08 Ocak 2011 - 16:30:44

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sem

En kısa zamanda deneyip, geri dönüş yapacağım... Elinize sağlık şimdiden.... =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

ulusoyab

Ben bu veritabanları ile ilgili bir şey sormak istiyorum.
Eskiden geliştirdiğim yazılımlarda mysql / sqlite  kullandım. hem kod yazımı zor geldi , hem çok yavaştı, hemde kullanıcılar açısından ayarlar sorun oldu. Bunun üzerine dosyaya kaydetmeye başladım ve bu sorunlar tamamen ortadan kalktı.
Benim anlamadığım neden sql kullanılıyor? Sql in yetenekleri bir dosya ile çok daha kolay sağlanabiliyor ( kayıt arama yedekleme vb.) Bu soruyu Sql in bilmediğim bir üstünlüğü olabilir diye soruyorum.

noktakom

sem, aslında benden çok senin eline sağlık :) sonuçta çoğunu senin sayende yaptım...

Birkaç sorum daha olacak :

1- program sonsuz döngü içerisinde olduğu için ve her adımda devam mı diye sormasını istemediğim için programdan çıkış ctrl+c ile yapılabiliyor. hiçbir şey sormadan esc'ye basıldığı anda programın sonlanması nasıl sağlanır ?
2- bu program sanırım birden fazla çekirdek kullanamıyor. Bu tarz yazılımlar nasıl yapılır ?
3- programa bir adet te yedekleme seçeneği eklemek istesem... Örneğin; kayıtlı verileri Evolution Posta'da kayıtlı olan hesabı kullanarak istenilen bir adrese e-posta ile göndermesini nasıl sağlarım ? ( Evolution görsel olarak açılmayacak sadece arka planda çalışacak...)
4- programın çift tıkla açılması nasıl sağlanır ? bunu daha önce de sormuştum ama herhangi bir kaynak bulamadım.

Şimdilik bu kadarı yeter :)

sem

Programın bitişini sizin azminize bağlıyorum tamamen =)

1.)  Bu sorunun cevabını bilmiyorum. Aslında ne kadar bilindik bir şey bize, ne kadar fazla kullanıyoruz fakat hiç kendim oluşturmadum. İki ihtimal olacağını düşünüyorum;

* Windows tarafındaki getch() işlevinin bu taraftaki karşılığı ile basılan tuşun ANSI numarasına ESC tuşu olup olmadığını anlamak ve akışı buna göre yapmak.
* ESC tuşuna basınca programa sinyal de gönderiliyor olabilir. Örneğin CTRL + C kombinasyonu ile aslında programa bir sinyal göndermiş oluyoruz. SIGINT sinyali... Bu sinyailn özelliği, bir sinyal fonksiyonu yazılmamışsa programı sonlandırır. Yani sinyal fonksiyonu yazmak ile kastım şu; eğer SIGINT sinyalini gördüğünde program ne yapacağını bilmiyorsa kapanıyor, fakat eğer programa SIGINT sinyalini görürsen "Ekrana SINGINT geldi" yaz derken sonlanmaz... Ekrana istdiğimizi yazar, ya da başka bir işlem yaptırabiliriz.

ESC tuşunun da sinyal üretebilme ihtimali geliyor aklıma...

2.) Bu programın birden fazla çekirden kullanmasına gerek olduğunu düşünmüyorum. Çünkü işlemleri yeteri kadar az Quanta süresi harcıyor... Çok hafif işlemler var içerisinde...

Çok fazla işlem yapıldığı zaman çift ya da dört çekirdekli işlemcilerin davranışları hakkında yine emin değilim... Fakat programın aynı anda çalıştırılabilen süreçler üretmesi için paralel programlama yapmak gerekiyor. Yani bu durumu oluşturabilmek için iki alternatifiniz var. fork() fonkyionu ya da threadler...

3.) mail gönderme işini Evolution üzerinden yapmak istiyorsanız, öncelikle Evolution programının bu işlemler için sunduğu bir arayüz var mı ona bakmanız gerek. Evolution gerekli API'leri sunuyorsa, bunları öğrenerek yapabilirsiniz.

4.) Programın çift tıkla çalışması için bir uygulama başlatıcı oluşturmanız gerekiyor.  Sistemim ingilizce ve adımlar şu şeekilde... Masasütü sağ tık -> Create a Launcher... bu menüye geldikten sonra;

Type: Application in terminal
Name: İstediğiniz bir isim
Command: çalıştıralacak dosyanın yolu...


KOlay gelsin...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

noktakom

     1-getch() gibi klavyeden karakter bekleyen bir fonksyon kullanarak yapmak istediğimizde, programdan çıkılmak istenmemesi durumunda da karakter girmemiz gerekeceği için programın çalışma sürecindeki adım sayısını arttıracak ve kullanılabilirliği bozacak. yani her adımda çıkmak için filanca tuşa bas diye uyarı vermesi gerekecek, değil mi ? ben böyle olmasını istemiyorum.. ya da ben mi yalnış anladım ?

    2-http://forum.ubuntu-tr.net/index.php/topic,25844.0.html linkinde bi Kronometre programı yazdım. belirttiğiniz fork fonksyonu veya thread'lerin kullanımına örnek olsun diye onu telefon defterini entegre edebilir misiniz ? yani  telefon defteri açık kaldıkça çalışma süresini an ve an ekranda görebileceğimiz şekilde...

    3-API derken neyi kastettiğini tam olarak anlayamadım, evolution zaten mail programı. tek fark programı biz elle başlatmayacağız. Yazdığımız program  evolution'ı arka planda çallıştıracak, yeni mail oluştur diyecek, eklenti kısmına bizim kayıtların tutulduğu dosyayı ekleyip kendi adresime postalayacak. Böyle birşey olabilir mi? veya  çok mu zor olur ?

    4-Bu tamam :)


    Son olarak şu programa bir de görsel arayüz yapmak lazım. Glade varmış galiba, onunla direk yapabiliyor muyuz ? ya da nasıl bir yol izlemek gerekecek ?

Erdem

Eğer kendin veri yapılarını öğrenmek için yapmıyorsan veritabanı için MySQL C API'sini kullanabilirsin:

http://www.kitebird.com/mysql-book/ch06-1ed.pdf
http://dev.mysql.com/doc/refman/5.0/en/c.html

Eğer basit öğrenmek için yazıyorsan C++ ve D gibi dillerde kullanılan veri yapısı ilişkili dizi (hashtable).  Ben C bilmiyorum ama ceviznet'in C++ ve C forumları iyidir:

http://forum.ceviz.net/c-c/
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

noktakom

Veritabanı işinden vazgeçmiştim ama yine de sağol faydası olur.

sem

1- Maalesef adım sayısı artacak. Fakat kullanılabilirlik olarak çok fazladan yük olacağını sanmıyorum.

2- "Yapabilir miyim" denemem lazım... Bu programda anbean anı izlemek çok işlevsel değil, örnek olarak güzel olabilir tabi. Dediğim gibi boş bir anımda deneyeceğim.

3- API derken aslında tam olarak bu dediklerinizi kasıt ediyorum. Arka planda çalıştırmak ile kastınız nedir. Uçbirimden komut ile çalıştırmak mıdır? Ya da hali hazırda çalışan bir program için dışarıdan "yeni mail oluştur" diyebilme şansımız var mı? Burada dışarıdan yani C içerisinden bir fonksiyon ile "yeni mail oluştur" diyebilmemiz için programın bunu desteklemesi ve bunun için ayrıca bir arayüz sunması gerekir. İşte API ile bir arayüzü kasıt ediyorum. Mesela bir C ile bir metin dosyası oluşturabiliyoruz fakat Ofis programlarından veri okumayı denediniz mi? Örneğin Excel'in bu taraftaki bir karşılığı ya da Win ortamında Excel'den C ile veri okumayı denediniz mi? Bu iş nasıl olur? Bunlara biraz bakarsanız API ile çok karşılaşırsınız....

Örneğin MySQL... normalde sorguyu uçbirimden sunucu MySQL'e başlanarak gönderiyoruz (ayrıca arayüz kullanmıyorsak uçbirimden)... Fakat sorguları C programı ile gönderebiliriz. Fakat standart C fonksiyonları ile değil. MySQL'in C için yazılmış API'ları sayesinde... Anlatabildim mi emin değilim... Analatamadı isem söylerseniz tekrar denerim...

4- Tamamdır =)




Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 13 Mart 2011 - 04:44:52

EK: Konu başlıktan biraz saptı gibi =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

noktakom

Evet anladım.

Sonraki sorular için başka bir konu açarım o zaman.