Qtdict: Qt4 alapú online szótár program

Címkék

Közzététetett a Qtdict v0.3.1, a cross-platformos angol<->magyar és német<->magyar szótár frontend első nyilvános változata. A felület Qt4-ben íródott és egyelőre a www.cab.u-szeged.hu online szótár adatbázisát használja, de tervezem sztakira (talán pysztaki használatával) esetleg dicforra (ha megengedik) kiterjeszteni, így további nyelveket is támogatna. Tervben van egy natív Windows install program is, mely a jelenlegi batch alapú szkriptet váltaná a közeljövőben.

Az innen letölthető csomag tartalmazza a forráskódot, és a Windows-os telepítő szkriptet.

A jelenlegi szerény funkciók:

A programot gyakorlásként, szabadidőmben írom, a Qt-val most ismerkedek, így egy guru biztosan talál kivetnivalót a kód felépítésében, a signal/slot technológia esetlen használatában, így minden konstruktív kritikát, ötletet szívesen fogadok.

Hozzászólások

Egy screenshotot feldobhatnál valahova, azt midnenki szereti :)

(A pysztaki a jelenlegi állapotában kicsit "instabil", mióta a sztaki utf8-ra váltott. Pedig már a sztakisok is besegítettek, de sajnos még mindig fennáll a probléma.)

Igaz, a screenshot lemaradt:
qtdict screenshot (linux)

Ha a ZHim után lesz egy kis időm, nekiállok egy saját parsernek ami konfigurálható lesz a sztakira, a cab.u-szeged-re meg a dicforra (először persze megkeresve őket, főleg emiatt). Ha van rá igény, esetleg azt a szempontot is figyelembe vehetem, hogy beépíthető legyen a Sztakker-ba.
A szkriptet úgy használod, hogy paraméterezed és úgy kérdezteted le a szavakat, ugye? Ebben az esetben megegyező paraméterezést fogok használni, vagy ha lesz időm C++ STL-ben oldom meg és akkor lehetne rá építeni egy C# wrappert.

Persze az első dolgom az lesz, hogy amit a cab-os szótárból ugyanazon címszó alatt kiad több jelentést, azt egy sorba pontosvesszővel elválasztva írja ki:)

Üdv!
____________________________________________________________
Slackware 12/current - linux-2.6.24.2-olorin - KDE 3.5.8

Pofás lett a GUI-d! :)

Igenigen, a pysztaki úgy működik ahogy mondtad, simán át kell neki adni 2 paramétert (szótár és keresett szó, pl: pysztaki.py huen macska) ésakkor simán stdoutra kinyomja a találatokat soronként (egy sor pedig úgy néz ki, hogy szóvariáns: jelentés1;jelentés2;). Én ezt a visszakapott listát benyomom egy textview-be, majd ott még "átmegyek rajta", hogy minden sorban a kettőspont előtti rész bold legyen, illetve kiemelem háttérszínel a találatokat(kép).

Ha sikerülne a backendedet ilyen univerzálisra megcsinálni, az szuper lenne :)

A Sztakisok nagyon segítőkészek, de nem akarom túlfeszíteni a húrt. Egyszer szóltam nekik, hogy vannak a html-ben rossz karakterkódolású kommentek, ezt javították, de azért nem zaklatnám őket tovább, hogy "bocs de még mindig vannak itt ott rossz karakterek, keressétek meg, javítsátok ki, ja meg még jó lenne egy nyílt API is minél előbb, mert kéne a 3rd party scriptünkhöz, köszi" :) Én inkább azt mondom, hogy ha van itt pythonul értő ember, akkor az beáldozhatna 1-2 óra munkát és kijavíthatná a pysztaki scriptet, hogy kezelje le normálisan az olyan eseteket, amikor szar karakterek is vannak a visszakapott oldalban. Nem hiszem, hogy olyan nagyon nagy dolog lenne, dehát múltkor sem tolongott a tömeg, mikor segítséget kértem.

Pár hozzászólás a Qt-hez:

  • A kézi utf8 -> percent-encoding, illetve html -> utf8 elég tikkasztó, de basszus, én se találtam Qt-s megoldást... Ha van kedved írhatnál a qt levlistára, mert vagy mi vagyunk vakok, vagy ez tényleg nincs, és az gáz.
  • utf8 -> percent minek? QUrl megcsionálja helyetted.
    kézzel query összeállítás minek? van QUrl::addQueryItem
    csak épp a QHtml-lel nem használható... Ez a Qt Network module tényleg ilyen félkész?

Illetve hozzád:

  • Ha átnevezed a fv-eket pl aboutClicked()-ről on_aboutButton_clicked()-re, megspórolsz egy csomó connectet. Bővebben itt
  • Használhatnád azt a tr()-t ha már beállítod az encoding-et.
    Így felesleges lenne a setCodecForCStrings, illetve lehetne fordítani a felületet.
  • Konzol encodinget ne állítsd át. (Enélkül nem működik?)
  • Vedd külön absztrakt osztályba a lekérdezést, majd örökléssel hozd létre a cab specifikus részeket, később meg a sztakit. Ha jól csinálod még offline sztárral is bővíthető lesz a progi.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Kössz szépen a tanácsokat.

utf8 -> percent minek? QUrl megcsionálja helyetted.
Egy kezdeti változatban rábíztam a QUrl-re a kódolást, de sajnos az ő és ű betűket rosszul kódolja ezért csináltam meg a percentencodingot is kézzel. Bár abban igazad van, hogy elég lett volna az ő és ű-re megoldani.
A QUrl::addQueryItem is ekkor került ki, mert behalt az UTF-8 ő és ű betűs szavaktól és a többi item hiányzott az url-ből, így a query hiányosan ment tovább. Ez lett a workaround, de majd megpróbálom megoldani.
Kezdetben 4.3.1-gyel fordítottam, most már 4.3.4-et is megoldottam mingw-s crosscompilerre Slackwaren, lehet, hogy ez is számít.
Egyébként az miért van, hogy ha QUrl url("http://www.cab.u-szeged.hu/cgi-bin/szotarE")-ként hozok létre egy url-t, és nem explicite setHost-al, akkor az url.getHost() üres sztringet ad vissza?

Ha átnevezed a fv-eket pl aboutClicked()-ről on_aboutButton_clicked()-re, megspórolsz egy csomó connectet.
Kösz a linket, praktikus ez az auto-connect funkció, erről nem tudtam.
A c-stringek tr()-re cserélése folyamatban van, azért is van már a main.cpp-ben beállítva.
A setCodecForLocale viszont benne felejtődött kezdeti kísérletezésekből, azt kiszedem.
Vedd külön absztrakt osztályba a lekérdezést, majd örökléssel hozd létre a cab specifikus részeket, később meg a sztakit. Ha jól csinálod még offline sztárral is bővíthető lesz a progi.
Igen, work in progress, így megoldható lesz a fentebb említett univerzalitás is.

Még egyszer nagyon köszi a tanácsokat. Mihelyt lesz időm, folytatom a munkát, csak most XML és kapcsolódó Java technológiákkal kell foglalkoznom, mert holnap zh.
____________________________________________________________
Slackware 12/current - linux-2.6.24.2-olorin - KDE 3.5.8

Belenéztem a QUrl::toPercentEncoding forrásába, utf-8-ról konvertál hexába, és a wiki szerint ez a szabványos. (2005. január óta)
Tehát sajnos a cab.u-szeged.hu használja rosszul...
Marad a kézi megoldás.

Az, hogy html entity-re nincs beépített codec nem fér a fejembe...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Történt némi változás a csomagban!
Kiszedtem egy junk fájlt a win mappából, az xxmklink txt fájlja valamikor megsérülhetett, és olvashatatlan szemét lett belőle.
Ezen kívül újrafordítottam az exe-t mert console ablakot nyitott indításkor, ugyanis a linkelésnél nem volt beállítva a -Wl,-subsystem,windows ezért console-ra fordította, illetve raktam még fel egy sha1sum-ot is:

qtdict-0.3.1.sha1

vagy:

0a835eb5d27ae37171712dab5504605fcdb91e1e  qtdict-0.3.1.tar.bz2

____________________________________________________________
Slackware 12/current - linux-2.6.24.2-olorin - KDE 3.5.8

"Ezen kívül újrafordítottam az exe-t mert console ablakot nyitott indításkor, ugyanis a linkelésnél nem volt beállítva a -Wl,-subsystem,windows ezért console-ra fordította."

Ez úgy hangzik, mintha kézzel fordítanál/turkálnál a make-fileban, pedig csak hiányzik a "CONFIG += windows" a .pro fájlból.
Bővebben itt.

Illetve ha már ott vagy, a szépség kedvéért hozzávehetnéd a QT-hez a network mellé a core-t és a gui-t is (de legalább a gui-t).

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

"... a Qt-val most ismerkedek, így egy guru biztosan talál kivetnivalót a kód felépítésében ..."

Esetleg egy gmail akkot, ahova titkos adatokat küld?:D

________________________________________
2B or not 2B, that is FF. *̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*

Jómagam is írtam egy szótárt 1 éve, ami a sztaki szótáradatbázisát is használta. Az éretelmezőt is magam írtam, és annyi tapasztalatot szívesen megosztok veled, hogy megéri megnézni a sztaki Wap-os felületén adott eredményt, ugyanis nemcsak kevesebb az adatkommunikáció, de jóval egyszerűbb felépítése miatt sokkal könnyebben értelmezhető is a válasz.
Persze ez csak egy ötlet. Ha esetleg bármi segítség kell, írj nyugodtan. Amiben tudok, segítek.

Nagy Péter
www.konquer.org

Itt rengeteg ingyenes szótár van, köztük angol-magyar, német-magyar, olasz-,francia-,svéd-,dán-magyar:
http://stardict.sourceforge.net/Dictionaries.php

És ha a program is ilyen jó lesz mint a stardict, hogy valódi emberi beszéddel vagy beszédszintetizátorral ki is ejti a szót angolul, akkor átállok.