OT: SunSPOT - programatorska soutez
Zdravím konferenci, Společnost SUN Microsystems se rozhodla věnovat českému sdružení CZJUG jeden vývojový kit pro technologii SunSPOT. Rozhodl jsem se o tento kit uspořádat soutěž. Podrobnosti najdou všichni zájemci na http://blogs.sun.com/japod/entry/sout%C4%9B%C5%BE_o_sunspot_development_kit Javě zdar! ~Jakub P.S. Všem účastníkům posledního předprázdninového setkání CZJUG se tímto omlouvám za zpožděné vyhlášení
Re: Co s dlouhotrvajicimi konstruktory Swing component?
Zdravim, jeden dialog mi nabublal do podobnych rozmeru - cca 10 tabu, 150-200 component + dalsich cca 30 tlacitek a polozek menu. vytvoreni komponent stejne jako vysazeni do layoutu se ve vysledku vola z konstruktoru a dialog se ukaze nez bys rekl swing. Neni to Netbeans platforma. Chci tim rict - prijde mi ze se v pozadi musi dit neco vic nez jen konstrukce GUI. VS 2009/7/21 Tomas Hubalek : > Data do tech komponent se samozrejme dotahuji postupne a na pozadi. Problem > je s tim ze NetBeansy nagenerovana metoda initComponents dlouho trva, > protoze je uvnitr hodne komponent. > > Pokud jde o ty taby, neda se svitit, tech informaci je tam opravdu hodne, > tezko to udelat jinak (nehlede na to, ze to tak je v zadani od zakaznika). > > Nakonec jsem usoudil ze na nektere veci (specialne veci spousteni uvnitr > akci) pouziju SwingUtilities.invokeLater(), ktere kdyz se pouzije s citem, > pocit tuhnuti aplikace se snad zlepsi... > > Tom > > -Původní zpráva- > Od: konference-boun...@java.cz za uživatele Vity Vity > Odesláno: út 7/21/2009 11:03 > Komu: konference@java.cz > Předmět: Re: Co s dlouhotrvajicimi konstruktory Swing component? > > > Zdravim, > rekl bych, ze odpoved se naskyta sama - dotahovat komponenty kazdeho tabu > postupne. > Obecne bych i dost pochyboval, ze bude uzivatel pouzivat vsech 15 naraz a > pokud jich tam skutecne mate 15, tak to take vypada na spatny GUI navrh. > > > -Vity > > > Dne 21. červenec 2009 10:41 Tomas Hubalek > napsal(a): >> Zdar, >> mame pomerne hodne slozity formular ve Swingu (asi patnact tabu, v kazdem >> dalsich milion komponent) a jenom konstruktor tohoto formulare trva pres >> deset vterin, cili i vytvoreni topkomponenty s timto formularem zpusobi >> zatuhnuti na vic nez deset vterin (podotykam ze vsude jsou nacitana data >> ve >> SwingWorkerech, takze to je opravdu jen cas, kdy se blokuje EDT). >> >> Premyslim, jestli je mozne nejak (alespon pocitove) zrychlit vytvoreni >> tohoto formulare. SwingWorker na to AFAIK pouzit nejde, protoze metoda >> doInBackground nesmi pristupovat ke Swingovym komponentam. >> >> Jak to resite vy? Nejaka lazy inicializace? Komponent pooling? >> >> Dik za kazdy tip >> >> Tom > > >
Re: Sparovani dvou mnozin
>> Jde o mnoziny velikosti radove stovek prvku. >> >> Tak nejak doufam, ze nekde existuje neco magickeho :-) co jen pouziju a >> voala (Google collections ?) > > zeby > java.util.set.containsAll() ??? > aha, tedy spise java.util.set.removeAll() nebo java.util.set.retainAll()
Re: Sparovani dvou mnozin
2009/7/21 Michal Nikodím : > Diky za rozbor. Mel jsem ale vice vypichnout tu podminku, ze mnozina A je > 100% prvku a B ma jen 0-100% protilehlych prvku. > Z toho mi vyplyva, ze nemohu pouzit sesortovani a protilehlost prvku, > protoze nektere A prvky nemaji prvek v mnozine B. lze to pouzit, pokud je prvcich definovano usporadani, tj. lze prvky porovnat mensi/vetsi > > Jde o mnoziny velikosti radove stovek prvku. > > Tak nejak doufam, ze nekde existuje neco magickeho :-) co jen pouziju a > voala (Google collections ?) zeby java.util.set.containsAll() ??? > > > -- Ondra Medek
Re: Sparovani dvou mnozin
jj O(n + n log n) = O(n log n), to plati pro n jdouci k nekonecnu. V praxi spis plati ze: O(n + n log n) = O(n + n log n) :-) Petr Vity Vity wrote: jen bych ke kolegovi dodal, ze to zavisi na skrytych konstantach, resp. poctu tech zaznamu ... :-). -Vity Dne 21. červenec 2009 14:08 Ondra Medek napsal(a): No pokud byste mel klasicky List nebo Set, tak nejlepsi je obe mnoziny seradit - slozitost O(n log n) a pak je projit jednim pruchodem O(n), tj. celkem O(n + n log n) = O(n log n). Pokud se A a B nemeni prilis, tak byste mohl vyuzit SortedSet nebo SortedMap, abyste to nemusel po kazde zmene znovu radit, pak by vas algorimus mel O(n) slozitost, ale zase insert/delete v seznamech by neco zabral. Ale vase reseni take neni spatne, za predpokladu, ze se prvky v Map dobre hashuji, tj. slozitost se pristupu se blizi O(1) a tedy cely prubeh vaseho algoritmu je pak blizko k O(n). Jak vidite, pokud si stim chcete hrat, tak si to musite vyzkouset a zmerit cas :-)) O. 2009/7/21 Michal Nikodím : Mam dve mnoziny A a B. Mnozina A je 100% prvku a v mnozine B je n prvku. Potrebuju projit mnozinu A a ke kazdemu prvku mnoziny A dohledat odpovidajici prvek mnoziny B. Mnoziny jsou plne v moji rezii. Muze to byt List, Map, dle libosti. Prvky mnozin jsou tez plne v moji rezii a tak jak to mam ted ma kazdy prvek unikatni atribut ID (Long) a equals a hashcode je napsan pro tento atribut. Mnozina B je celkem casto prenactena a ja potrebuju po prenacteni proparovat s mnozinou A. Vysledkem je mnozina C kde prvkem je objekt ktery obsahuje instanci z mnoziny A a spravnou instanci z mnoziny B (nebo null). Jak tohle delat co nejefektivneji ? Osobne to resim tak, ze mam mnozinu B jako Map pricemz iteruju mnozinu A a podle ID z mapy dohledam odpovidajici prvek B. Ale moc se i to nezda. -- Ondra Medek
Re: Sparovani dvou mnozin
Diky za rozbor. Mel jsem ale vice vypichnout tu podminku, ze mnozina A je 100% prvku a B ma jen 0-100% protilehlych prvku. Z toho mi vyplyva, ze nemohu pouzit sesortovani a protilehlost prvku, protoze nektere A prvky nemaji prvek v mnozine B. Jde o mnoziny velikosti radove stovek prvku. Tak nejak doufam, ze nekde existuje neco magickeho :-) co jen pouziju a voala (Google collections ?)
Re: Sparovani dvou mnozin
jen bych ke kolegovi dodal, ze to zavisi na skrytych konstantach, resp. poctu tech zaznamu ... :-). -Vity Dne 21. červenec 2009 14:08 Ondra Medek napsal(a): > No pokud byste mel klasicky List nebo Set, tak nejlepsi je obe mnoziny > seradit - slozitost O(n log n) a pak je projit jednim pruchodem O(n), > tj. celkem O(n + n log n) = O(n log n). Pokud se A a B nemeni prilis, > tak byste mohl vyuzit SortedSet nebo SortedMap, abyste to nemusel po > kazde zmene znovu radit, pak by vas algorimus mel O(n) slozitost, ale > zase insert/delete v seznamech by neco zabral. > > Ale vase reseni take neni spatne, za predpokladu, ze se prvky v Map > dobre hashuji, tj. slozitost se pristupu se blizi O(1) a tedy cely > prubeh vaseho algoritmu je pak blizko k O(n). > > Jak vidite, pokud si stim chcete hrat, tak si to musite vyzkouset a > zmerit cas :-)) > > O. > > 2009/7/21 Michal Nikodím : >> Mam dve mnoziny A a B. Mnozina A je 100% prvku a v mnozine B je n prvku. >> Potrebuju projit mnozinu A a ke kazdemu prvku mnoziny A dohledat >> odpovidajici prvek mnoziny B. >> >> Mnoziny jsou plne v moji rezii. Muze to byt List, Map, dle libosti. Prvky >> mnozin jsou tez plne v moji rezii a tak jak to mam ted ma kazdy prvek >> unikatni atribut ID (Long) a equals a hashcode je napsan pro tento atribut. >> Mnozina B je celkem casto prenactena a ja potrebuju po prenacteni proparovat >> s mnozinou A. >> >> Vysledkem je mnozina C kde prvkem je objekt ktery obsahuje instanci z >> mnoziny A a spravnou instanci z mnoziny B (nebo null). >> >> Jak tohle delat co nejefektivneji ? >> >> Osobne to resim tak, ze mam mnozinu B jako Map pricemz iteruju >> mnozinu A a podle ID z mapy dohledam odpovidajici prvek B. >> Ale moc se i to nezda. >> >> > > > > -- > Ondra Medek >
Re: Sparovani dvou mnozin
No pokud byste mel klasicky List nebo Set, tak nejlepsi je obe mnoziny seradit - slozitost O(n log n) a pak je projit jednim pruchodem O(n), tj. celkem O(n + n log n) = O(n log n). Pokud se A a B nemeni prilis, tak byste mohl vyuzit SortedSet nebo SortedMap, abyste to nemusel po kazde zmene znovu radit, pak by vas algorimus mel O(n) slozitost, ale zase insert/delete v seznamech by neco zabral. Ale vase reseni take neni spatne, za predpokladu, ze se prvky v Map dobre hashuji, tj. slozitost se pristupu se blizi O(1) a tedy cely prubeh vaseho algoritmu je pak blizko k O(n). Jak vidite, pokud si stim chcete hrat, tak si to musite vyzkouset a zmerit cas :-)) O. 2009/7/21 Michal Nikodím : > Mam dve mnoziny A a B. Mnozina A je 100% prvku a v mnozine B je n prvku. > Potrebuju projit mnozinu A a ke kazdemu prvku mnoziny A dohledat > odpovidajici prvek mnoziny B. > > Mnoziny jsou plne v moji rezii. Muze to byt List, Map, dle libosti. Prvky > mnozin jsou tez plne v moji rezii a tak jak to mam ted ma kazdy prvek > unikatni atribut ID (Long) a equals a hashcode je napsan pro tento atribut. > Mnozina B je celkem casto prenactena a ja potrebuju po prenacteni proparovat > s mnozinou A. > > Vysledkem je mnozina C kde prvkem je objekt ktery obsahuje instanci z > mnoziny A a spravnou instanci z mnoziny B (nebo null). > > Jak tohle delat co nejefektivneji ? > > Osobne to resim tak, ze mam mnozinu B jako Map pricemz iteruju > mnozinu A a podle ID z mapy dohledam odpovidajici prvek B. > Ale moc se i to nezda. > > -- Ondra Medek
RE: Co s dlouhotrvajicimi konstruktory Swing component?
Data do tech komponent se samozrejme dotahuji postupne a na pozadi. Problem je s tim ze NetBeansy nagenerovana metoda initComponents dlouho trva, protoze je uvnitr hodne komponent. Pokud jde o ty taby, neda se svitit, tech informaci je tam opravdu hodne, tezko to udelat jinak (nehlede na to, ze to tak je v zadani od zakaznika). Nakonec jsem usoudil ze na nektere veci (specialne veci spousteni uvnitr akci) pouziju SwingUtilities.invokeLater(), ktere kdyz se pouzije s citem, pocit tuhnuti aplikace se snad zlepsi... Tom -Původní zpráva- Od: konference-boun...@java.cz za uživatele Vity Vity Odesláno: út 7/21/2009 11:03 Komu: konference@java.cz Předmět: Re: Co s dlouhotrvajicimi konstruktory Swing component? Zdravim, rekl bych, ze odpoved se naskyta sama - dotahovat komponenty kazdeho tabu postupne. Obecne bych i dost pochyboval, ze bude uzivatel pouzivat vsech 15 naraz a pokud jich tam skutecne mate 15, tak to take vypada na spatny GUI navrh. -Vity Dne 21. červenec 2009 10:41 Tomas Hubalek napsal(a): > Zdar, > mame pomerne hodne slozity formular ve Swingu (asi patnact tabu, v kazdem > dalsich milion komponent) a jenom konstruktor tohoto formulare trva pres > deset vterin, cili i vytvoreni topkomponenty s timto formularem zpusobi > zatuhnuti na vic nez deset vterin (podotykam ze vsude jsou nacitana data ve > SwingWorkerech, takze to je opravdu jen cas, kdy se blokuje EDT). > > Premyslim, jestli je mozne nejak (alespon pocitove) zrychlit vytvoreni > tohoto formulare. SwingWorker na to AFAIK pouzit nejde, protoze metoda > doInBackground nesmi pristupovat ke Swingovym komponentam. > > Jak to resite vy? Nejaka lazy inicializace? Komponent pooling? > > Dik za kazdy tip > > Tom
Sparovani dvou mnozin
Mam dve mnoziny A a B. Mnozina A je 100% prvku a v mnozine B je n prvku. Potrebuju projit mnozinu A a ke kazdemu prvku mnoziny A dohledat odpovidajici prvek mnoziny B. Mnoziny jsou plne v moji rezii. Muze to byt List, Map, dle libosti. Prvky mnozin jsou tez plne v moji rezii a tak jak to mam ted ma kazdy prvek unikatni atribut ID (Long) a equals a hashcode je napsan pro tento atribut. Mnozina B je celkem casto prenactena a ja potrebuju po prenacteni proparovat s mnozinou A. Vysledkem je mnozina C kde prvkem je objekt ktery obsahuje instanci z mnoziny A a spravnou instanci z mnoziny B (nebo null). Jak tohle delat co nejefektivneji ? Osobne to resim tak, ze mam mnozinu B jako Map pricemz iteruju mnozinu A a podle ID z mapy dohledam odpovidajici prvek B. Ale moc se i to nezda.
Re: Co s dlouhotrvajicimi konstruktory Swing component?
Zdravim, rekl bych, ze odpoved se naskyta sama - dotahovat komponenty kazdeho tabu postupne. Obecne bych i dost pochyboval, ze bude uzivatel pouzivat vsech 15 naraz a pokud jich tam skutecne mate 15, tak to take vypada na spatny GUI navrh. -Vity Dne 21. červenec 2009 10:41 Tomas Hubalek napsal(a): > Zdar, > mame pomerne hodne slozity formular ve Swingu (asi patnact tabu, v kazdem > dalsich milion komponent) a jenom konstruktor tohoto formulare trva pres > deset vterin, cili i vytvoreni topkomponenty s timto formularem zpusobi > zatuhnuti na vic nez deset vterin (podotykam ze vsude jsou nacitana data ve > SwingWorkerech, takze to je opravdu jen cas, kdy se blokuje EDT). > > Premyslim, jestli je mozne nejak (alespon pocitove) zrychlit vytvoreni > tohoto formulare. SwingWorker na to AFAIK pouzit nejde, protoze metoda > doInBackground nesmi pristupovat ke Swingovym komponentam. > > Jak to resite vy? Nejaka lazy inicializace? Komponent pooling? > > Dik za kazdy tip > > Tom
Re: Co s dlouhotrvajicimi konstruktory Swing component?
Zdravim, nepomuze přidat přesýpací hodiny? :) (nebo jiny ukazatel načítání). To neni ani moc vtip, uživatel má potom pocit, že se něco děje a nemá před sebou zamrzlou aplikaci. Dan 2009/7/21 Tomas Hubalek > Zdar, > mame pomerne hodne slozity formular ve Swingu (asi patnact tabu, v kazdem > dalsich milion komponent) a jenom konstruktor tohoto formulare trva pres > deset vterin, cili i vytvoreni topkomponenty s timto formularem zpusobi > zatuhnuti na vic nez deset vterin (podotykam ze vsude jsou nacitana data ve > SwingWorkerech, takze to je opravdu jen cas, kdy se blokuje EDT). > > Premyslim, jestli je mozne nejak (alespon pocitove) zrychlit vytvoreni > tohoto formulare. SwingWorker na to AFAIK pouzit nejde, protoze metoda > doInBackground nesmi pristupovat ke Swingovym komponentam. > > Jak to resite vy? Nejaka lazy inicializace? Komponent pooling? > > Dik za kazdy tip > > Tom >
Co s dlouhotrvajicimi konstruktory Swing component?
Zdar, mame pomerne hodne slozity formular ve Swingu (asi patnact tabu, v kazdem dalsich milion komponent) a jenom konstruktor tohoto formulare trva pres deset vterin, cili i vytvoreni topkomponenty s timto formularem zpusobi zatuhnuti na vic nez deset vterin (podotykam ze vsude jsou nacitana data ve SwingWorkerech, takze to je opravdu jen cas, kdy se blokuje EDT). Premyslim, jestli je mozne nejak (alespon pocitove) zrychlit vytvoreni tohoto formulare. SwingWorker na to AFAIK pouzit nejde, protoze metoda doInBackground nesmi pristupovat ke Swingovym komponentam. Jak to resite vy? Nejaka lazy inicializace? Komponent pooling? Dik za kazdy tip Tom