January 18, 2010

Alıntı (canalpay):

>

Neden direk 'writeln(çıktı);' diyemiyoruz ?

'std.stdio' becerikli bir modül değil. C kütüphanelerine çok yakın olduğu için onlardan fazla becerikli olmamış. Ben 'std.cstream''i çok daha kullanışlı buluyorum:

import std.cstream;

void main()
{
   dchar[][] çıktı;
   dout.writefln(çıktı);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 18, 2010

Alıntı (canalpay):

>

Ama hala tarih işini yapmaya çalışacağım

Şundan yola çıkabilirsin:

import std.cstream;
import std.date;

void main()
{
   d_time şuAn = std.date.getUTCtime();

   Date zaman;
   zaman.parse(std.date.toString(şuAn));

   dout.writefln("%04s_%02s_%02s_%02s_%02s_%02s_%02s",
                 zaman.year, zaman.month, zaman.day,
                 zaman.hour, zaman.minute, zaman.second, zaman.ms);
}

İstersen milisaniye (ms) üyesini boşver; bende hep sıfır çıkıyor.

Eğer Türkiye saatini kullanmak istersen ve zaten öyle değilse, main'den önce bir yerde (veya dkv.d dosyasında) saat ayarını milisaniye mertebesinde belirle:

static this()
{
   std.date.localTZA = 2 * 1000 * 60 * 60;
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010
  1. düzeltmeyi yayınladım. Bunlarda :
    1.'v_yedekle' iki parametre alıyordu. Artık 2.parametreyi öntanımlı yaptım. Artık 2.parametre girilmez ise öntanımlı olarak veritabanının ismi 2.parametrenin değeri olacak. =>16.Düzeltme
    2. Yine 'v_yedekle' ile ilgili. 'v_yedekle''nin açıklama satırlarını düzelttim. =>17.Düzeltme

Proje yavaş yavaş biçimleniyor. Şuan istersek bir çok işi bu proje ile yapabiliriz.

Alıntı:

>

Acaba verilere isimler verilse daha kullanışlı olur mu? Yani bir eşleme tablosu gibi çalışsa; ama perde arkasında bir dosyayı kullansa:

string adet = taban.veri_oku("öğrenci_adedi");
string not = taban.veri_oku("öğrenci/ali/not");

O zaman program her çalıştığında her bilgiyi dosya ne kadar büyük olsa da bulur.

Bunu yine düşündüm. Bazen(Çoğunlukla) sizin dediğiniz gibi oluyor. Ama yine bazen benim yaptığım gibi olmalı(Bence). Bende bunu şu biçimde halledeceğimizi düşündüm; İlk olarak eski işlevler hiç ellenmeyecek. Bu iş için yeni işlevler tanımlanacak. Bu işlevlere 1 parametre daha eklenecek. Bu parametre de anahtar sözcüğü belirtebilmek için kullanılacak. Bu işlevlerin adı eski işlev ile aynı olup(akılda tutması kolay olup gerektiğinde iki işlevin yaptığı işi bilebilmek için) sonuna '-_eş' eki gelecek(Örn : 'veri_oku_eş()').

İşlevde şu biçimde çalışacak:
Dosyada anahtar sözcüğün belirtilmesi: --Anahtar Sözcük--
Daha sonraki satırlarda yeni bir "--" belirtimi bulana kadar yazılan veriler "Anahtar Sözcük" belirtiminin değeri olarak sınıflandırılacak.
Örn(a/a/a.dkveş dosyamız):
'-
-anahtar sözcük--'
'Merhaba
Dünya'
'-
-212-*-'
'Merhaba dünyalı biz dostuz .'

Burada oku işlevini çağırıyoruz.
'veri_oku_eş(oku,"a"d.dup,"a/a"d.dup,"anahtar sözcük"d.dup)'
Ve 'oku[][] 'değişkeninin değeri:
'Merhaba
Dünya'

Son olarak belirteyim, eş işlevleri '.dkveş 'uzantısı normal işlevler ise '.dkv 'uzantısını kullanacak.

Sizin aklınızda şöyle bir soru takılmış olabilir. Eğer yazılan veride -*- belirtilimi var ise ne yapacağız. Diğer programlama dillerinde olduğu gibi başına '"" 'belirteci koyacağız.

Sizce bu fikirde yanlış, eksik, fazla bir tarafı var mı ? Görüşlerinizi bekliyorum.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı:

>

Olası pürüzlerini temizlemek için kullanlması gerek.

dokul hala aklımda. dkv için dokul çok iyi bir proje.
Alıntı:

>

(Yeni koda bakmadan:) Bence herşey güzel. Amacını gerçekleştiriyor! :)

Ali

Yeni kodda dediklerim yok. Daha kodları yazmadım(Muhtelemen benim yazdığım en zor kodlar olacaktır. Çünkü bu iş resmen derleyici yazmaya benzeyecek. ). Sadece kendime yol haritası çizdim ve sizden fikir olarak onay bekliyorum. Sizcede fikirlerim doğru ve uygulanabilirliği yüksek ise yazmaya başlayacağım.

Şimdi dkv kodlarına baktımda tahmin ettiğimden daha zor olacak. Çünkü bir çok işlev yeniden yazılacak ve belki anlamları değişecek. Yeni anlamlarının ne olacağını düşünmemiz gerekecek. Değişecek olan işlevler :

1.veri_ekle
2.veri_sil(Hangi anahtardaki veri silenecek. Ve nasıl silenecek :-) yada tamamen dosya mı silinecek :-) Düşünmek gerekiyor.)
3.veri_oku
4.denetle(Birde veride belirtilecek anahtarda bilgi var mı diye denetlemesi gerekecek tahminim :-) )
5.veri_güncelle(Bu tam bir kaos)
6.veri_değiştir(Buda aynen tam bir kaos)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı:

>

İş çıkarttığıma üzüldüm. :)

Yok böylesi daha iyi oldu. Yoksa yapacak iş bulamayacaktım. Hem hatırlıyor musunuz bu iş derleyici yazmak gibi olacak demiştim. Ben gerçekten bir derleyici yazmak istiyordum. Çünkü ilerde kendime Dil yazmak istiyorum :-D
Alıntı:

>

Acaba verilerin hep bellekte durmaları nasıl olur? Bütün işlemler bellekte yapılır. En sonunda kaydedilirler. (?)

Bunun nasıl olacağını tam anlayamadım. Ama dediğim yöntem iyi ama tek zor olacağı için istemiyorsanız boş verin böyle daha iyi oldu. Ama bu daha iyi bir seçenek olduğu için diyorsanız bunu bir düşünelim.

Bu arada şimdi veri_ekle_eş işlevini yazdım. (Bir öncekinin kopyası :D) Açıklama satırlarını değişebilme ihtimali olduğu için yazmadım.
veri_ekle_eş işlevini incelerseniz sevinirim.(Svn ile gönderdim.)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı:

>

Her işlem için dosyanın açılması, verinin aranması, ve kapatılması yavaş olabilir diye düşündüm. Eğer bütün işlemler bellekteki bir eşleme tablosunda yapılırsa, en sonunda hepsi birden kaydedilir.

Bunu tam olarak nasıl yapacağımızı anlayamadım(Sanırım saat geç olunca kafam çalışmıyor. Soğuması gerekecek :-D ).
Nasıl yapılacağını açıklayabilir misiniz ?

Alıntı:

>

Her işlem için dosyanın açılması, verinin aranması, ve kapatılması yavaş olabilir diye düşündüm. Eğer bütün işlemler bellekteki bir eşleme tablosunda yapılırsa, en sonunda hepsi birden kaydedilir.

Ama şöyle bir şey de var. Biz ne olursa olsun derlenen yüksek seviyeli olmayan(alçak orta bilemiyorum :-) ) bir dil kullanıyoruz. Bunu göz önünde bulundurmalıyız. Ayrıca bu proje tam bir veritabanı değil. Önceliği hız değil bu projenin. Önceliği sadece çok kolay dosya oluşturup bilgi kaydedebilmek bazı işlemler yapabilmek. Dosyalar veritabanı olarak kullanılabildiği için ve şuan D2 için bir veritabanı kullanamadığımız için(Yoksa kullanabiliyor muyuz ?) biraz veritabanına benzemesini istiyorum.

Ve ama bunca şey yazdıktan sonra projenin daha hızlı çalışmasını istiyor musunuz, daha hızlı çalışabilmesi için ağır bir yükün içine girer misiniz diye sorarsanız yanıtım kesin evet! olacaktır.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı:

>

Diğer işlevlerde de olan bir durum var: bir çok değişkene gerek yok aslında. Hatta sınıfın üyesi olan veri'nin bu işlem sırasından neden değiştiği belli değil.

İnanır mısınız kodu yazarken kendime bunun açıklamasını yapıyordum. (Kendime de tam cevap veremedim.)

  1. Sınıfın üyesi olan string veriyi program sırasında hiç kullanılmamış olarak erişebilmek için.(Büyüklerimizden öyle öğrendik :-D )
  2. veri_s'yide kullanma nedenim: sınıfta bir kereden daha fazla veri_ değişkenini string'e çevirirken tekrar tekrar kod tekrarı yapmamak için.
  3. Ayrıca her bir şeyi bir sabite aktarıyorum çünkü o değerleri tekrar kullanmayacağıma dair kendime garanti veremiyorum.

Ama zaten immutable olarak tanımladığım bir veri değişmeyeceği için veri'nin türü string iken veri_s tanımlanması gereksiz. Ben sadece şimdiye kadar gördüğüm bütün sınıflarda sınıf üyesindeki sabit yada değişkenin kodda kullanılmadığını gördüğüm için ayrıca veri_s tanımlıyordum. Tek o değişken gereksiz. O da sınıf üyesi sınıfın işlevinde kullanmak yasal ise.

Alıntı:

>

Ayrıca, ne kadar az kod yazarsak o kadar az hata yaparız. :)

Bir projede ne kadar az kod varsa kod bakımı o kadar çok olur.(Yoksa hiç merhaba dünya yazmamış hayatın az kod yazmış biri az hata yapmaz :-) Örnek ben :-) ) Ama doğru söylüyorsunuz. Bir kod değiştirdiğimde bazen kod takibi yapamıyorum.(Kodları yazan ben olduğum halde :-) )

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı (canalpay):

>

Proje yavaş yavaş biçimleniyor.

Süper! :)

Alıntı:

>

Şuan istersek bir çok işi bu proje ile yapabiliriz.

Olası pürüzlerini temizlemek için kullanılması gerek.

Alıntı:

>

Görüşlerinizi bekliyorum

(Yeni koda bakmadan:) Bence herşey güzel. Amacını gerçekleştiriyor! :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı (canalpay):

>

Çünkü bir çok işlev yeniden yazılacak ve belki anlamları değişecek.

İş çıkarttığıma üzüldüm. :)

Acaba verilerin hep bellekte durmaları nasıl olur? Bütün işlemler bellekte yapılır. En sonunda kaydedilirler. (?)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 19, 2010

Alıntı (canalpay):

>

Acaba verilerin hep bellekte durmaları nasıl olur? Bütün işlemler bellekte yapılır. En sonunda kaydedilirler. (?)

Her işlem için dosyanın açılması, verinin aranması, ve kapatılması yavaş olabilir diye düşündüm. Eğer bütün işlemler bellekteki bir eşleme tablosunda yapılırsa, en sonunda hepsi birden kaydedilir.

Tabii o zaman bir eşleme tablosunun üstüne fazla bir şey katmadığını söyleyebilirsin.

Sonlandırıcı işlevinde otomatik olarak kaydetmesi güzel bir olanak olarak kabul edilebilir. vs.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]