Slijede razlike između dviju inačica stranice
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
studenti:zad_deljkic:zd-zr-start [2015/06/03 23:02] zdeljkic |
studenti:zad_deljkic:zd-zr-start [2023/06/19 16:21] (trenutno) |
||
---|---|---|---|
Redak 2: | Redak 2: | ||
==== Programski alati za automatsko mapiranje tematskih područja ==== | ==== Programski alati za automatsko mapiranje tematskih područja ==== | ||
+ | |||
+ | {{:studenti:zad_deljkic:zavrsni.pdf|Tekst rada}} i {{:studenti:zad_deljkic:prezentacija_zr.odp|prezentacija}}. | ||
+ | |||
//Software tools for automatic mapping of subject areas// | //Software tools for automatic mapping of subject areas// | ||
Redak 19: | Redak 22: | ||
- Napraviti i dokumentirati što veći broj različitih transformacija | - Napraviti i dokumentirati što veći broj različitih transformacija | ||
- Napisati detaljne upute za izradu transformacija - od izrade Python skripte do integriranja u NetGlub sistem | - Napisati detaljne upute za izradu transformacija - od izrade Python skripte do integriranja u NetGlub sistem | ||
- | - Uspješno prevesti i pokrenuti klijent-a na Windows OS-u, napisati upute za to | + | - puno o izradi transformacija za netglub se može naučiti iz resursa za Maltego ([[https://www.paterva.com/web6/documentation/developer-local.php|primjer]]) - jer na kraju krajeva Netglub je baš kopija Maltega |
- | - Isprobati cijeli sistem preko mreže - master i slave(ovi) na Ubuntu OS-u, klijenti na Ubuntu i Windows OS-u | + | - <del>Uspješno prevesti i pokrenuti klijent-a na Windows OS-u, napisati upute za to</del> |
- | - Napisati popis budućih projekata u kontekstu ovog rada | + | - <del>Isprobati cijeli sistem preko mreže - master i slave(ovi) na Ubuntu OS-u, klijenti na Ubuntu i Windows OS-u</del> |
+ | - <del>Napisati popis budućih projekata u kontekstu ovog rada</del> | ||
+ | - Ubaciti dobivanje ISBN-a u tranformacije s knjigama | ||
+ | - trebao bi biti posebni parametar da/ne koji nas pita jel želimo ISBN - zato što dobivanje ISBN-a može biti sporo (otvaranje nove stranice za svaki rezultat) | ||
+ | - Slično za fraze, treba napraviti mehanizam (Python modul) koji se bavi validacijom fraza - on će nam reći jel fraza koju smo generirali ima smisla (primjerice da proba naći tu frazu u naslovu/sažetku knjiga i radova) | ||
+ | - Onda kada imamo taj mehanizam, treba postojati parametar koji nas pita je li želimo velidaciju fraza prilikom neke od transformacija koja generira fraze - jer je opet validacija relativno spora (otvaranje nove stranice) | ||
- Ostalo: | - Ostalo: | ||
- <del>Provjeri je li NetGlub smatra da su dva entiteta sa istim primarnim (npr. naslov knjige), ali različitim sekundarnim atributima (npr. autori, izdavač) jednaki (je li ih "merge-a")</del> saznato - zapisano u poglavlje "Entiteti" niže | - <del>Provjeri je li NetGlub smatra da su dva entiteta sa istim primarnim (npr. naslov knjige), ali različitim sekundarnim atributima (npr. autori, izdavač) jednaki (je li ih "merge-a")</del> saznato - zapisano u poglavlje "Entiteti" niže | ||
Redak 68: | Redak 76: | ||
==== Transformacije ==== | ==== Transformacije ==== | ||
+ | U sve transformacije bi trebalo implementirati mehanizam da ne "zaspammaju" stranice koje pretražuju - primjerice ako tražimo članke s nekom temom iz samo 2015 godine, mogli bi pretražiti 1000 stranica Google Scholara i naći samo par rezultata. Ukoliko je korisnik zadao da npr. pronađemo 20 takvih rezultata, transformacija ih ne smije beskonačno tražiti već pretražiti razumnu/"pristojnu" količinu. | ||
**Gotove transformacije:** | **Gotove transformacije:** | ||
Redak 106: | Redak 115: | ||
==== Bugovi/greške kod Netglub-a ==== | ==== Bugovi/greške kod Netglub-a ==== | ||
+ | |||
+ | Netglub za komunikaciju koristi XML-RPC - specifikacija ([[http://xmlrpc.scripting.com/spec.html|link]]) može pomoći kod debuggiranja. | ||
=== Općenito === | === Općenito === | ||
+ | |||
* Master nezna reagirati na timeout od mysql baze | * Master nezna reagirati na timeout od mysql baze | ||
* ako se nista ne desava neko vrijeme (8 sati po defaultu kod mysql-a) master ce izgubit konekciju i kod sljedeceg pokusaja konekcije od klijenta ce se pojaviti serial not valid | * ako se nista ne desava neko vrijeme (8 sati po defaultu kod mysql-a) master ce izgubit konekciju i kod sljedeceg pokusaja konekcije od klijenta ce se pojaviti serial not valid | ||
Redak 113: | Redak 125: | ||
* bolje rješenje - promjena source koda, dvijee opcije: | * bolje rješenje - promjena source koda, dvijee opcije: | ||
* a) main.cpp: setconnectoptions(mysql_opt_reconnect) ne cini se da radi | * a) main.cpp: setconnectoptions(mysql_opt_reconnect) ne cini se da radi | ||
- | * b) ntgsessionmanager.cpp: db.isopen() i isactive() navodno ne funkcionira https://bugreports.qt.io/browse/qtbug-223 | + | * b) ntgsessionmanager.cpp: db.isopen() i isactive() navodno ne funkcionira [[https://bugreports.qt.io/browse/qtbug-223|https://bugreports.qt.io/browse/qtbug-223]] |
* implementirati provjeru jel db ziv na neki drugi nacin? | * implementirati provjeru jel db ziv na neki drugi nacin? | ||
* Kod netglub klijenta, ako se unese URL i konkretno port koji drop-a konekcije (obično firewall), klijent će se "zamrznuti" i vječno čekati odgovor | * Kod netglub klijenta, ako se unese URL i konkretno port koji drop-a konekcije (obično firewall), klijent će se "zamrznuti" i vječno čekati odgovor | ||
Redak 121: | Redak 133: | ||
* Gledajući kroz source, čini se da klasa QHttp ([[https://github.com/qtproject/qt/blob/716fbaef34386c8b05d7d63894a5bc116ddd1b6c/src/network/access/qhttp.cpp|relevantni source]], funckija QHttpPrivate::_q_slotError) interno koristi QTcpSocket i taj socket se ne uspjeva spojiti i baca neku grešku ([[http://doc.qt.io/qt-4.8/qabstractsocket.html#SocketError-enum|popis mogućih greška]]) | * Gledajući kroz source, čini se da klasa QHttp ([[https://github.com/qtproject/qt/blob/716fbaef34386c8b05d7d63894a5bc116ddd1b6c/src/network/access/qhttp.cpp|relevantni source]], funckija QHttpPrivate::_q_slotError) interno koristi QTcpSocket i taj socket se ne uspjeva spojiti i baca neku grešku ([[http://doc.qt.io/qt-4.8/qabstractsocket.html#SocketError-enum|popis mogućih greška]]) | ||
* Ne znam još koju točno grešku baca, znam samo po source-u koje ne baca (0, 1, 2 sa popisa) | * Ne znam još koju točno grešku baca, znam samo po source-u koje ne baca (0, 1, 2 sa popisa) | ||
+ | * Transformacija PersonToEmailSE ima par greška: | ||
+ | * vraća dobre rezultate za "john smith" ali ne i za "John Smith" → ubaciti pretvaranje u lowercase prije | ||
+ | * values = [v.lower() for v in values] nakon values | ||
+ | * regex za email u dijeli koji matcha domenu bez top dijela treba biti greedy (pretvorit *? u samo *) | ||
+ | * inače će e-mail primjer@pod.domena.com prepoznati kao primjer@pod.domena | ||
+ | * kad se dogodi exception ne napravi ništa (pass) i nastavi dalje, expection mogu biti razne greške, u najmanju ruku treba ispisati poruku - ali ne sa write_error jer takvo ispisivanje implicira prekid transformacije | ||
=== Sigurnost === | === Sigurnost === | ||
+ | |||
* Master na istom interfaceu/ip adresi očekuje i slaveove i klijente - to bi trebalo biti moguće odvojiti | * Master na istom interfaceu/ip adresi očekuje i slaveove i klijente - to bi trebalo biti moguće odvojiti | ||
- | * npr. slave-ovi samo na 127.0.0.1, a klijenti na 0.0.0.0 | + | * npr. slave-ovi samo na 127.0.0.1, a klijenti na 0.0.0.0 |
* Master nikako ne autorizira slaveove - postoji "kostur" te funkcionalnosti ali nije implementirana | * Master nikako ne autorizira slaveove - postoji "kostur" te funkcionalnosti ali nije implementirana | ||
* Datoteke u /etc/netglub/ obično svi korisnici mogu čitati - a između ostalog sadrže username i password za bazu podataka, privatne ključeve certifikata… | * Datoteke u /etc/netglub/ obično svi korisnici mogu čitati - a između ostalog sadrže username i password za bazu podataka, privatne ključeve certifikata… | ||
Redak 131: | Redak 150: | ||
=== Općenito === | === Općenito === | ||
+ | |||
* Alat koji prebacuje datoteku u NetGlub (.ntg) formatu u mind mapu u Freemind formatu (.mm) | * Alat koji prebacuje datoteku u NetGlub (.ntg) formatu u mind mapu u Freemind formatu (.mm) | ||
* .ntg je zippani XML, .mm je čisti XML - jednostavna python skripta bi bila dovoljna | * .ntg je zippani XML, .mm je čisti XML - jednostavna python skripta bi bila dovoljna | ||
Redak 142: | Redak 162: | ||
=== Nadogradnja Netglub-a === | === Nadogradnja Netglub-a === | ||
+ | |||
* Izrada dodatnih transformacija (vidi "Buduće transformacije" gore) | * Izrada dodatnih transformacija (vidi "Buduće transformacije" gore) | ||
* Izrada funkcionalnosti lokalnih transformacija u klijentu (već je započeta, postoji kostur) | * Izrada funkcionalnosti lokalnih transformacija u klijentu (već je započeta, postoji kostur) | ||
Redak 148: | Redak 169: | ||
\\ | \\ | ||
+ |