blogs

Yeni XML dosya formatı ve Kural sınıfları

Kullandığımız XML kütüphanesinin MS bağımlılığı dolayısıyla değiştirilmesi gerekiyordu. Buna bağlı olarak XML için hazırladığımız config.pas'ın da değişmesi gerekiyordu. Zaten şu an kullanılan XML parse kodu 0.1'den yadigar tek kod bloğu.

WANT'ın xml parse işlemlerini inceledim. JAL diye bir kütühane kullandığını gördüm.

JAL içinde aradığımız Logger ve XML MiniDom sınıfları mevcut. Şu an XML sınıflarını ve buna bağlı kod bloklarını değiştiriyorum. XML config dosyasıyda haliye değişiyor.

Önceden her kural için columnrule diye bir eleman kullanıyorduk ve üreteç stratejisini de attribute olarak belitiyorduk:

<columnrule column="ID" strategy="1" >
  <param name="start">0</param>
  <param name="step">1</param>
</columnrule>

Yeni XML dosya yapısında her elemanın adı stratejisi olacak

<autoinc column="ID" start="0" step="1" />

Yeni sınıflar RTTI'den faydalanarak published alanlardaki değerleri XML elemanlarıyla eşliyorlar. Dolayısıyla bir sürü atama işlemine gerek kalmıyor. Recursive olarak her şey halloluyor. Kod daha sade ve anlaşılır.

DG_Builders içinde bulunan BuildGenerator metodlarının tümünü bu Rule sınıflarına taşıyorum. Projeden config.pas, DG_Builders.pas çıkacak. DG_Configuration.pas içinde bulunan devasa kod parçacıklarına da gerek kalmayacak. Bunların dışında en güzel şey ise projenin free pascal ile derlenebilmesi için büyük bir adım atılmış olacak.

İşlemlerin 2-3 hafta içinde tamamlanacağını umuyorum.

Üreteçler artıyor.

lazio'nun float sayılar için yazdığı rastgele sayı üretecini Data Generator'e adapte ettim. Gayet güzel çalışıyor. Eline sağlık lazio. :)

GUI üzerinde birkaç düzeltme ve iyileştirme yapmaya çalıştım. Varchar ve char uzunlukları hatalı gösteriliyordu.

Bigint için 64 bit rastgele sayı üretebilen bir fonksiyon gerekli. Hala integer boyutunda çalışıyor.

Pattern Generator'ü yakında adapte edeceğim. Yine lazio tarafından hazırlanan bu fonksiyon ile, üretilmesini istediğiniz string'lerin ne şekilde üretileceğini belirtebiliyorsunuz. ABC 12 şeklinde hazırladığınız bir pattern 12 karakter boyunda içinde A, B, C karakterlerinin rastgele dağılıma sahip olduğu bir katar oluşturacaktır.

Data generator ile yeniden ilgilenebildiğim için sevinçliyim.

Elcazımla Logo yaptım

Sitemizde drupalın logosu vardı. Geçici olarak kararlaştırdığımız doğrultuda bir logo yaptım. Aslında bir tane de theme yapmıştım ama IE'de felaket görünüyordu, o yüzden ondan vazgeçtim.

Logoyu beğenmeyen varsa değiştirebiliriz ama hatırlatırım el emeği göz nuru :)

GUI ve açık kaynak kodlu projelerde nasıl vakit yaratılır?

Geçen hafta neredeyse hiçbir katkıda bulunamadım. Şirketteki iş yüküm bir anda artmıştı. Maalesef, gönderilen commit'leri izlemekle yetindim. Çalışan ve evli bir insan olarak açık kaynak kodlu bir projede görev almak kolay değil. Şükür ki projede henüz görev dağılımı yapılmadı :P Yapılabilecek tek şey akşam evde veya hafta sonlarında katkıda bulunmaya çalışmak.

Bu arada Datagenerator GUI'sini daha iyi bir hale getirmeliyiz. Şu anki durumda, çalışma şeklini anlamak için bir yarım saat kurcalamak gerekiyor. Başka insanların bu kadar vakit harcayacağını zannetmiyorum.

Data Generator Interface - Interface ve ben

Eveeet
Bir kaç gündür dg_xxx unitlerini incelemeye koyuldum. Data generatorun mantığını, sınıfların birbiri ile olan ilişkilerini anlamak kolay olmadı(hala tam olarak anladığımı idda edemem). Ama ufukta bir ışık göründü. Daha önce alışık olmadığım bir yapı; Interface.....
Anladığım kadarı ile her şeyin başı dg_intfs Bu unit incelenince TDataGenerator'un kaynağı görülüyor. Daha sonra dg_utils geliyor ama onu fazla kurcalamaya gerek yok. İşini yapan(!?) bir sınıf. Sıra DG_Generators a geliyor. Olay burda netleşmeye başlıyor. Generator sınıfları.

64 bit rastgele sayı aranıyor

Ranged Generator'un 64 bit rastgele sayı üretebilmesi için 64 bit destekli bir random fonksiyonuna ihtiyaç var. Delphi 7'de hala 32 bitlik bir sürümü bulunan bu fonksiyonu, 64 bit destekli hale nasıl getiririm araştırıyorum.

Araştırmalarım sonucu Delphi'nin random fonksiyonunun Lehmer algoritması ile yazılmış olduğu sonucuna ulaştım. Internette maalesef hazır bir 64 bitlik random fonksiyon kodu yok veya ben bulamadım.

Borland'ın QA listesine de benzer istekler ve birkaç resmi olmayan çözüm gönderilmiş.

Güzel proje ve blogları 3'e katlamak.

Herkese merhaba.

Proje güzel, geliştiricileri güzel; birşeyler öğrenebileceğimiz ve katkıda bulunabileceğimiz bir fırsat doğdu. Sağolasın t-hex. Ellerine ve güzel tasarımına sağlık.

Bu arada, bununla 3 blogum oldu. Zaten 1 tanesine zor yazıyordum. Yetişmeye çalışacağız.

Not: Neredesin Sadettin? Sesin soluğun çıkmıyor.

Datagenerator ilk izlenimler

Bismillahirrahmanirrahim.

Büyük bir hevesle ilk açık kaynaklı proje geliştirme çalışmasına başladık.
Önce kaynak kodları almak lazım. Sağolsun arkadaşlar svn yi seçmişler. Çalıştığım şirkettede kullandığımız için hemen kaynak kodları indirdim.
Programı derlemek için yüklemem gereken bileşenler vardı. Onları da bir kaç günlük süren bir uğraştan sonra yükledim.
Programı derlemeye çalıştığımda arkadaşların delphi7 kullandıklarını gördüm.
Bu konuyuda aşıp yolumuza devam edeceğiz inşallah.

Syndicate content