Mercek [UGT]

Başlatan sem, 25 Mayıs 2011 - 18:12:43

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sem

Biraz şahsi bir çalışma olsa da UGT'ye ithafen yazılmıştır =)


http://forum.ubuntu-tr.net/index.php/topic,22594.msg284861.html#msg284861

Başlığındaki istek programıdır.

64 bit hazır değildir.
32 Bit (beta)


Proje sayfası
https://launchpad.net/mercek


Proje QT, C++ kullanılarak yapılmıştır.  Ana veritabanı olarak MySQL, programın kendi bilgilerini sakladığı veri tabanı olarak SQLITE kullanılmıştır. Programın beta sürümüdür


* İlk kurulum için önce veri tabanı ayarlarını yapıp (port bilgisini kullanmamak için 0 girmeniz yeterli) daha sonra da veri tabanını oluştur demeniz gerekiyor. (Ayarlar -> Yetkili kullanıcı -> Veri tabanı ayarları).

* Program çok kullanıcı olarak düşünülmüştür. Kullanıcı ekleyip çıkartabilirsiniz. Kullanıcılara okuma, yazma ve silme izinleri verebilir ya da bunları daha sonradan değiştirebilirsiniz. Ya da kullanıcı silebilirsiniz. (Ayarlar -> yetkili kullanıcı-> Kullanıcı ayarları)

Yetkili kullanıcı adı: root
şifre: ubuntu-tr


* ToolBarın (bunun Türkçe'si ne ola ki?)  ilk bölümü ya da Yeni menüsü yardımı ile Üye, Kitap, Kitabevi, Ödün kayıtları yapabilirsiniz.

*ToolBarın ikinci bölümü ya da Düzenle menüsünden ise istediğiniz kaydın (kayıt  yukarıda saydığım eklenebilecek bilgilerden herhangi birisi olabilir.) bilgilerine ulaşabilirsiniz. Bu menülerden istediğiniz bilgiye ulaşabilmeniz için gerekli ID numarasını bilmeniz gerekiyor. ID numarasını girerek açtığınız birim için, açılacak olan diyalog sizin izinlerinize göre açılır. Yazma, okuma ve silme izinleriniz varsa açılan diyalog bütün işlemler için tuşlar barındırır. Eğer sadece okuma izniniz varsa diyalog üzerinde sadece "çıkış" düğmesini/tuşunu görebilirsiniz. Ya da yazma izniniz varsa silme düğmesini göremezsiniz.

Bu işlemde eğer ID numarasını bilmiyorsanız boş bir ekran açılır. Sadece okuma izni için bu boş ekran bir işe yaramaz tabii. Ya da boş bir kayıt silinemeyeceği için yazma ve silme hakkınız olsa da bu düğmeler pasif hale gelir. Fakat yeni kayıt ekleme yapabilirsiniz.

* Detaylı arama menüsü de ToolBarın son bölümüne tekabul ediyor. Buralardan istediğiniz bilgileri doldurarak arama düğmesine basın. Eğer sonuç bulunursa ana pencerede gözükecektir. Ya da sonuç bulunamazsa buna dair bir uyarı verilecektir.

Ödünçlerde arama menüsü diğerlerine biraz daha komplike düşünülmüştür. Üye ve kitap açılan kutuları (combobox)  girdi kabul edecek şekilde düzenlenmiştir. Yani bir kişinin tüm ismini girmek zorunda değilsiniz ya da kitabın. Ayrıca buralar otomatik tamamlama özelliğine sahiptir. Eğer sem yazarsanız ve kişiler arasında Semetey varsa bu kişi otomatik doldurulacaktır.

Ödünç detaylı aramasında kullanıcı ve kitap değil de diğer birimleri arayacaksanız bu iki girdi kabul eden kutuyu boş bırakmanız gerekiyor.

Başlangıç, bitiş ve adet kutucuklarının yanında ise birer tane daha açılan kutu göreceksiniz. Bu kutucukların içerisinde çarpı, büyüktür, eşittir, küçüktür işaretleri bulunuyor.  Bunların anlamları ise örneğin adet için; çarpı işareti seçili olursa "adet"  birimi aramaya dahil edilmez. Diğerleri içinse hangi birim seçilirse (büyüktür, küçüktür, eşittir) arama buna yönelik olur. Bu durum tarihler için de aynıdır. İsterseniz hesaba katmayabilirsiniz, isterseniz bir tarihe eşit olanı, bir tarihten önceki ya da sonraki kayıtları arayabilirsiniz.

* Ana pencerede ise yine aynı şekilde arama yapabilirsiniz. Ana pencere aramasında iki çeşit arama yapabiliriz. Şöyle nitelendereyim; sayı araması; karakter dizisi araması.

Ana pencerede arama seçilen birime göre yapılır (üyelerde, kitaplarda, ödünçlerde, kitabevlerinde). 

*** Eğer anahtar olarak sayı girilirse tam sayıya göre arama yapılır; tam sayılar nelerdir;
* Üyeler tablosu için; id, telefon1, telefon2
* kitaplar tablosu için; id, kitap türü id, yıl, adet, kitabevi id
* kitabevi tablosu için;; id, telefon1, telefon2, fax
* ödünç tablosu için; id, üye id, kitap id, adet

***Eğer yazı girilirse buna göre arama yapılır. Bunlar nelerdir
* üyeler tablosu için; isim, soyisim, email, adres, note
* kitaplar tablosu için; kitap ismi, tür ismi, yazar, çeviren, kitabevi ismi, konum
* kitabevi tablosu için; isim, adres not.
* ödünç tablosu için; üye ismi, kitap ismi.


İstediğiniz bir kişiyi varsayılan olarak kayıt ederek girişte sizi tanımasını sağlayabilirsiniz. İsterseniz sizi sadece isminiz ile tanıyarak sadece şifreyi sorar ya da her ikisini sormasını da engelleyebilirsiniz (ayarlar -> varsayılan olarak kaydet)

Programdan görüntüler;





ÖNEMLİ

Beta Sürümüne ilişkin notlar;
* Varsayılan kişi olarak bir kişi seçildiğinde bu işlem program üzerinden değiştirilemiyor.
* Girilen MySQL kullanıcı adı ve şifresi SQLITE veri tabanında tutuluyor. Fakat herhangi bir şifreleme uygulanmıyor. Örneğin MD5 uygulanırsa geri dönüşü olmadığı için işime yaramadı ve kişi her defasında program için kullanıcı adı ve şifresinin yanında MySQL için de girmek zorunda kalacak.

Bu ikisi için çözümü şimdilik şöyle görüyorum; Varsayılan kişi olarak kaydetme sorununu halledeceğim. Yani istenildiği zaman kişi çıkartılabilecek varsayılandan. Bu menü kullanılabilir hale geldiği zaman kişi kendini varsayılan olarak kayıt eder. girişte sadece sunucu bilgilerini girmek zorunda kaldır. Aksi halde MYSQL bilgilerinin şifrelenmeden bir yerde kayıt edilmesi büyük güvenlik sorunu oluşturuyor.



Program neden betadır?
Yukarıdaki ÖNEMLİ ibaresi ile bahsettiğim iki neden ile şu anda betadır. Bunlara ek olarak program çok denenmediği için betadır.


Program ile ilgili ya da MySQL kullanıcı adı ve şifresi ile ilgili önerisi olan olursa üzerinde konuşabiliriz.


Benim gibi sıkıntı yaşayan arkadaş olursa uğraşmasın diye yazıyorum; program veri tabanı bağlantısında sıkıntı oluşturuyordu. QT yi çok kurcaladım fakat çözülmedi. hrgn kullanıcı isimli arkadaşın önerisi üzerine eri tabanını latin5 olarak değiştirince sorun kalmadı.  Bu vesile ile kendisine de tekrar teşekkür etmiş olayım.

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?

rutku

Uygulama güzel olmuş tebrikler ! Yanlız kendine işkence etmişsin :D
Alıntı yapılan: sem0900* Girilen MySQL kullanıcı adı ve şifresi SQLITE veri tabanında tutuluyor. Fakat herhangi bir şifreleme uygulanmıyor. Örneğin MD5 uygulanırsa geri dönüşü olmadığı için işime yaramadı ve kişi her defasında program için kullanıcı adı ve şifresinin yanında MySQL için de girmek zorunda kalacak.

Bu programda Mysql kullanılmasına gerek yok. Sqlite kullanılsa yeterli ve ağ üzerinden sqlite kullanılabiliyor. Gerekilirse ona göre sqlite yapılandırılır. Şifreyi Md5 ile saklayabilirsiniz. Sonuçta girilen şifrenin md5 hep aynıdır. Veritabanına md5 ini kayıt eder. Girilen şifrenin md5i, veritabanındaki md5 ile uyuşup uyuşmadığına bakılır. Doğruysa program açılır. Programdaki diğer bilgileride şifrelemek istiyorum  derseniz aes ile veri şifreleyip çözebilirsiniz.

Qt Desinger ile tasarım halledilebilirdi. Ayrıca veritabanı sorguları daha az method içinde parametreler ile daha rahat yapılabilirdi. Hatta QSqlTableModel gibi mükemmel bir kütüphane kullanılarak daha sade sorgular yapılabilirdi.

Eğer istersen bu bahsettiklerimin somut örneği olarak şuan zaman buldukça çalıştığım projemi özelden yollayabilirim.

Bu projeye katkıda bulunmak isterim.
Aklıma gelmişken launchpad çok karışık. Gitorious ve github gibi olması gereken şekilde değil. Nasıl kullanabildiğine şaşırıyorum.

İyi günler ...
Hayallerini kodla ...

uKiriş
Mezgeldek

eribol

Sqlite ile saklanan şifre eğer MD5 ile şifrelenmiyorsa ele geçirmek için bir sqlite yorumlayıcısı gerekli diye biliyorum. Yani o saf haldeki şifreyi ele geçirmek birkaç kodla hatta program ile mümkün olmuyor mu? Öte yandan eğer md5 ile şifrelenecekse de bir dosyada tutulması daha uygun olmaz mı?

rutku

Md5 kullanılmadan saklanan şifre sakıncalıdır. Sqlite araçlarıyla şifreye ulaşılabilir. Md5 ile saklanırsa bir sorun olmaz. Şifrenin nerde tutulacağı önemli değil. Programın dosyalarını kurcalayan kullanıcıların zor ulaşabileceği yerde tutulursa daha iyi olur.
Hayallerini kodla ...

uKiriş
Mezgeldek

eribol

Md5'in geri dönüşümü yok bu nedenle sadece karşılaştırma yeterli olur. O halde sadece okunabilir bir dosya ile pekala saklanabilir. Bir program için iki veritabanı gereksinimi yerine tek veritabanı gereksinimi daha sade olur.

travego0403

Şimdi siz konuyu açınca şifreye ulaşmaya çalıştım ve çok rahat bir şekilde ulaştım. :)

Benimde ilk kullandığımda bulduğum bir bug mu desem hata mı desem onu yazayım.Bir sonraki versiyonlar için yararlı olur. Diyelimki A isimli bir (adet olarak) kitap kaydettik. Daha sonra birisi bu kitaptan 2 tane ödünç almak istedi. Program gayet güzel ödünç veriyor, fakat bizim elimizde o kitaptan 1 tane var.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman