Smrznuo mi se samo program,nisam ga mogao ni minimizat ni nista radit na njemu jer mi je pisalo 'Not Responding'.
Imam:
Windows 7 Ultimate 32-bit SP1
1 GB Rama
Smrznuo mi se samo program,nisam ga mogao ni minimizat ni nista radit na njemu jer mi je pisalo 'Not Responding'.
Imam:
Windows 7 Ultimate 32-bit SP1
1 GB Rama
Našao sam bug u aplikaciji i to sasvim slučajno. Ali neću ga popravljati, jer teško da će ga itko drugi spaziti. Enivej, ono što sam usput saznao, jest da "trajno uklonjeni" profili baniranih korisnika uopće nisu uklonjeni, a kamoli trajno. Neću specificirati nadimak korisnika, ali taj više "ne postoji na forumu", a ipak sam uspio doći do njegovih podataka, točnije do PC konfiguracije koju je upisao prilikom registracije. To me dovodi do zaključka da niti drugi podaci nisu izbrisani, nego da je samo status korisnika postavljen u "banned". Naravno, korisnik ne može niti svoj profil izbrisati, a i da može, vjerojatno bi podaci opet ostali u bazi podataka. Ta priča mi zvuči nekako poznato otprije? ... aha, da, fejsbuk :)
To je 100% istina. Profil ne ne briše. Možda nakon nekog određenog vremena. Da ti kažem svoj priču.
Svako jutro oko 4 sata dože neki spambot i na forumu napravi neki glupi thread na engleskom. Ja sam bio odgovorio na tu poruku onako "trollovski" a valjda su modovi prije toga izbrisali temu ili nešto pa je ispalo kao da sam ja napravio temu. Ugl. dobio sam crni. I pisalo mi je da je profil korisnika trajno uklonjen. Poslo sam pismo redakciji i maknuli su mi ban (nakon pola dana) i sve je bilo normalno. Imao sam sve svoje teme koje partim, autore itd.
Evo to samo potvrđuje donekle kako oni ne brišu profil korisnika nego samo ga stave "nedostupnim".
Smrznuo mi se samo program,nisam ga mogao ni minimizat ni nista radit na njemu jer mi je pisalo 'Not Responding'.
Da to je to. Dešava se neovisno o operativnom sistemu, jer je problem u aplikaciji. Meni se to desilo svega jednom, jer se baza na kojem kompu učita za samo 3s. Na konfiguracijama koje su sporije, postoji veći rizik za taj bug. Kada pokrećeš aplikaciju ostavi sve na miru dok se svi korisnici ne učitaju i onda će biti ok. Ako će ići novi update aplikacije, budem se poigrao i s tim problemom. Jedno rješenje već znam, ali ućitavanje korisnika bi se tada dosta usporilo. Otom-potom...
Tebi se očito kontrola ne repaint-a nakon spajanja s bazom, a dok se to ne dogodi zablokira ti cijeli glavni thread pa je zato sve smrznuto. Uglavnom, pokušaj procesirati sve poruke nakon spajanja s bazom. Nešto poput
Application.DoEvents();
Tebi se očito kontrola ne repaint-a nakon spajanja s bazom, a dok se to ne dogodi zablokira ti cijeli glavni thread pa je zato sve smrznuto. Uglavnom, pokušaj procesirati sve poruke nakon spajanja s bazom. Nešto poput
Application.DoEvents();
Nema slimisla forsirat izvršavanje message loopa nakon spajanja s bazom, jer je aplikacija "Not responsive" za vrijeme loadanja baze, što znači da bi DoEvents() trebao zvati unutar loopa gdje se loada baza, a to previše košta (loadanje se usporava za 250-300%). Naravno, mogao bih sve zavrtit u posebnom threadu, ali - neda mi se :) Znam da nije best practice, al nemam sad vremena s tim se zezat... Enivej, tnx na sugestiji!
Tebi se očito kontrola ne repaint-a nakon spajanja s bazom, a dok se to ne dogodi zablokira ti cijeli glavni thread pa je zato sve smrznuto. Uglavnom, pokušaj procesirati sve poruke nakon spajanja s bazom. Nešto poput
Application.DoEvents();
Nema slimisla forsirat izvršavanje message loopa nakon spajanja s bazom, jer je aplikacija "Not responsive" za vrijeme loadanja baze, što znači da bi DoEvents() trebao zvati unutar loopa gdje se loada baza, a to previše košta (loadanje se usporava za 250-300%). Naravno, mogao bih sve zavrtit u posebnom threadu, ali - neda mi se :) Znam da nije best practice, al nemam sad vremena s tim se zezat... Enivej, tnx na sugestiji!
Pa ako možeš napravi tu neku sporiju verziju za one koji imaju slaba računala,nema veze da je sporo glavno da ucitava...
Nema slimisla forsirat izvršavanje message loopa nakon spajanja s bazom, jer je aplikacija "Not responsive" za vrijeme loadanja baze, što znači da bi DoEvents() trebao zvati unutar loopa gdje se loada baza, a to previše košta (loadanje se usporava za 250-300%).
Pa ako možeš napravi tu neku sporiju verziju za one koji imaju slaba računala,nema veze da je sporo glavno da ucitava...
Evo ga: http://www.datafilehost.com/download-fab04eeb.html
Treba samo novu BUGuserDB.exe datoteku prekopirati preko stare verzije.
Ali kao što sam i rekao (zapravo čak još i gore), loading time meni skače sa 3.0->9.6s!
Za sve druge koji nemaju problema, ne preporučam ovu verziju, jer je sad krajnje neoptimizirana!
Ako mi na pamet padne još neki korisni feature, budem sve zajedno složio kako Bog zapovijeda.
Osobno sam isprobao ovaj program na Asus EEE Pc s Atom procesorom (prva generacija) i sve je radilo bez ikakvih problema, kad se jednom učita sve dalje je jako fluidno. Neš ti problema pričekati 2-3 sekunde više.
Ja bih imao samo jednu primjedbu.Dakle u tom programu dosta toga fali.Naprimjer zašto nema:Potraži autora,protjerani autori,najbolji autori itd...
Mislim da bi to trebao imati takav program
EDIT:Skinuo novu verziju.Svaka čast na trudu.
Probaj učitavanje baze pokrenuti sa BackgroundWorker-om. Nećeš imati takvih problema.
Probaj učitavanje baze pokrenuti sa BackgroundWorker-om. Nećeš imati takvih problema.
Na to sam i mislio kad sam spomenuo drugi thread...
But it's not a biggy, slijedeća verzija izlazi sa proper fixom :)
A odakle ti baza korisnika?
A odakle ti baza korisnika?
Pa pogledaj source! Jednostavno craw-lanje... Dobro, da budem posve iskren - uz puno truda uloženog u parsiranje!
Evo sada kad sam pokrenuo aplikaciju nije pisalo not responding vec ima drugih bugova,pogledaj slike dole.
:) Morat cu EEE-PC izbaciti sa liste podržanog hardvera (npr. Triple-E not supported :)
Fakat smiješno. Ajd probaj napraviti update grafičkih drivera i stavi si najnoviji .NET Framework (v4.0).
Tablica očito ima nekih problema pri osvježavanju liste kad skrolaš gore-dolje.
Ta funkcionalnost aplikacije dolazi "out-of-the-box", tako da na to ne mogu utjecati (čitaj: M$ bug).
A odakle ti baza korisnika?
Hakirao bug.hr :) Šala. Baza je "hand-made", tj. automatizirao sam proces parsanja profila svih korisnika.
Izvukao sam samo relevantne podatke, upucao ih u hashtable i serijalizirao u user.db datoteku.
Dio tog procesa može se analizirati iz izvornog koda (MainForm.cs, foreach na liniji 809, ParseUserProfile() metoda).
Baš fino da se netko interesira i za tehničku stranu aplikacije :)
Lijepo :) Sad tek vidim. Ja bih možda te podatke odmah stavio u novu MS Access bazu umjesto hashtable-a i (de)serijalizacije, i preko JET-a ih loadao u sekundi. Popunjavanje baze (parsiranje) se može raditi inicijalno (prvi put kad se pokreće aplikacija) ili tek na zahtjev korisnika. Tako mi se čini brže. A tko hoće vidjeti kako se promjenila statistika u zadnjih par sati neka čeka :) To je klasični briefcase model i u praksi je funkcionalan.
Svaka čast na parser metodi ;)
Vec smo mi to proanalizirali. Tracer je samo lijen :)))))
Vec smo mi to proanalizirali. Tracer je samo lijen :)))))
Nakon 4 tjedna godišnjeg teško mi se samo tako odmah vratiti u formu
Vec smo mi to proanalizirali. Tracer je samo lijen :)))))
Nakon 4 tjedna godišnjeg teško mi se samo tako odmah vratiti u formu
Ja za par tjedana idem na godisnji. Mozak mi vec radi sa 10% kapaciteta. Nikako da se pokrenem :((((
Ja bih možda te podatke odmah stavio u novu MS Access bazu umjesto hashtable-a i (de)serijalizacije, i preko JET-a ih loadao u sekundi. Popunjavanje baze (parsiranje) se može raditi inicijalno (prvi put kad se pokreće aplikacija) ili tek na zahtjev korisnika. Tako mi se čini brže.
Ma ima puno načina na koji se moglo izvesti. Jedino mi je žao što nisam prvo DataTable napunio sadržajem hashtablea pa onda bindao na grid kontrolu. Data binding bi bio gotov istog trena. A i filter bi bilo puno lakše srediti sa jednostavnijim querijem (bacite oko na GetFilteredUserIDs() metodu -> EPIC IF-ČINA LOL!). Enivej, hashtable je JAKO brz, pa se kompletno čitanje i pisanje mjeri u par desetaka milisekundi, ali M$ grid kontrola je ta koja je spora da nije za vjerovati (recimo skrivanje jednog retka traje skoro 2 sekunde (Rows[x].Visibile = false). Upucavanje podataka u grid kontrolu je problem i zato loadanje traje tako dugo (dodatna optimizacija je da se prvo dodaju prazni retci, pa se naknadno u njih učitavaju podaci; dobitak na performansama je ~300%!). Tako da ni JET (iako brz sam po sebi) ne bi imao nikakvog efekta. Ovo drugo što kažeš... tako i radi aplikacija. Inicijalno parsanje sam napravio ja, tako da svi prilikom prvom pokretanja aplikacije ne napadamo online bazu podataka, a svaki korisnik preko opcije "Dodaj nove korisnike" može napraviti update baze kada god poželi. btw, baza je jako redundatna, jer sadrži većinom tekst. Probao sam ju ZIPati sa DeflateStream, ali je jako neučinkovit, pa sam bazu ostavio "otvorenom". 7zip recimo ima compression ratio na 20-ak% (LZMA), dok ovaj iz .NET-a većinom oko 95%, pa čak i preko 100% lol :) Nije zip ko što je nekad bio...
MS Grid kontrola je nuzno zlo. Ja je izbjegavam gdje god mogu. No dobro, ako zele brzinu nek ti doniraju za telerik ili DX :)
Baš zbog grida sam kupio TMS paket komponenti. DX meni kao pojedincu je preskup, ali nije niti ovaj uopće loš. Sve do sada što sam tražio u supportu su ugradili u komponetu. Počevši od inplace editora, custom formata itd.. Inače, sjetih se da sam ovakve aplikacije radio pomoću ListView-a (report/list view). U prvu kolonu staviš ikonu tj. avatar korisnika (16x16) a dalje redaš kolone s podacima. Lako je i napraviti grupe korisnika u toj komponenti (to npr. jako lijepo radi TMS grid) i sl..
Inače, bilo bi jako lijepo vidjeti nekakav tutorijal o parsiranju. Nije mi to još nikada trebalo no mora se priznati da može biti korisno.
Slazem se za tutorial o parsanju... da znas na koje sam ja nacine do sada parsao... lipo mi je neugodno :)
Ajd burs, kad se odmoris malo od ovoga projkta nakucaj stogoda...
Imam i ja nekih primjera ali nekako mi je to sve previše coda za analizu. Da bar logiku skužim pa bi se nekako i dalo. No ovako.. nemam volje.
Inače, stavi program i ovdje. Pokušavamo sve ovakve umotvorine skupiti na jedno mjesto .
Inače, sjetih se da sam ovakve aplikacije radio pomoću ListView-a (report/list view). U prvu kolonu staviš ikonu tj. avatar korisnika (16x16) a dalje redaš kolone s podacima.
Inače, bilo bi jako lijepo vidjeti nekakav tutorijal o parsiranju. Nije mi to još nikada trebalo no mora se priznati da može biti korisno.
Sa ListView-om sam bio napravio pola aplikacije i onda prebacio sve na DataGridView. Neke stvari (sort? ne sjećam se sad koje sve) nisam uspio prilagoditi kako sam htio, a čitao po netu da to grid ima built-in i da ne treba ništa kemijati. ListView je po meni kao mlađi brat od grida, al ovaj drugi je spor za popyzdit. Tako da drugi put ili ListView ili ništa :) Na poslu koristimo ComponentOne grid, al deru sa licencama ko blesavi. Support je ok i redovito izdaju nadogradnje.
Slazem se za tutorial o parsanju... da znas na koje sam ja nacine do sada parsao... lipo mi je neugodno :)
Ajd burs, kad se odmoris malo od ovoga projkta nakucaj stogoda...
Moram i ja priznat da sam prvi put parsao cijeli html dokument kao jedan string, pa onda koristio Contains, SubString, Left, Right, Remove, Replace lol :) Bila je to kupus salata hardkodiranog koda :) WebBrowser kontrola sa WebClient i/ili HttpWebRequest/Response klasama je ubojita kombinacija kad je u pitanju rad sa internet resursima. Samo treba super znati html i nema ti granica. Baš neki dan sam napravio app koja se automatski ulogira na ruter, vadi podatake o internet vezi (upload/download i ostale điđe-miđe) i ispisuje fino sve kategorizirano na jednom mjestu. Inače imam dosta problema sa netom, pa mi ovo služi kao neki real-time logger da vidim kako se veza ponaša kroz cijeli dan.
Nisam ni skužio da si otvorio novu temu, super ideja. Takvu sličnu sam tražio kad sam pisao prvi post, ali nije bilo nijedne slične. Budem postavio linkove kad dođem doma, negdje navečer...
Burs, a parsanje preko regularnih? Parsanje pomocu String podmetoda je pain in the ass.
Burs, a parsanje preko regularnih? Parsanje pomocu String podmetoda je pain in the ass.
Regularnih? Misliš RegEx? To mi nikad nije sjelo kak spada. Rađe napišem više koda, pa da se odmah vidi što je pjesnik htio reći :)
Još kad bi imao volje staviti ove ključne metode za dohvaćanje podataka u DLL...
Burs, a parsanje preko regularnih? Parsanje pomocu String podmetoda je pain in the ass.
Regularnih? Misliš RegEx? To mi nikad nije sjelo kak spada. Rađe napišem više koda, pa da se odmah vidi što je pjesnik htio reći :)
Da ali umjesto 20 linija koda imas jednu, em sto su i performanse nesto bolje. Ja bez regexa nebi mogao zivit
Osvježenu verziju kompletne BUGuserDB baze podataka (21.09.2011) možete skinuti sa donjeg linka.
Potrebno je samo staru users.db datoteku prebrisati novom.
http://www.datafilehost.com/download-e929d10f.html
BTW, što je to sa korisnicima Bug Online Foruma u zadnje vrijeme? Profili se brišu na dnevnoj bazi...
Samo prošli mjesec ima 78 uklonjenih profila, a od početka godine 556. To je 2-3 korisnika dnevno!
HALL OF SHAME: (broj uklonjenih profila istog korisnika)
(14) damir1994
(12) sixtysioux
(7) kiki_d
(7) pako
(5) Mato
(5) NiđoVobra
(5) sheX
(4) 6410HNIXAD
(4) Bug bot v1
(4) DAXlNHO
(4) igorsb
(4) Windows