System.out.println("Programování");

Aneb místo k posezení a příjemnému rozhovoru nad jedem dle chuti.

Moderátoři: Sadako, sevencreature

Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

drake127: jéé, tohle ale není hádka - a i kdyby byla, tak to je zrovna takový nijaký konec ;-) Každopádně pointa - integrace dvou jazyků do sebe - probrána byla, takže si můžeme dát pauzu ;-)
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

Poměrně zajímavý článek úvodu do ajaxových technologií z "uživatelského" pohledu: Introduction to Ajax for Page Authors
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

Že by konečně pořádné nakročení pro XForms? Aneb zase dále na cestě k pořádným nástrojům pro web ;-)

XForms in Firefox

Why XForms?
Introduction to XForms
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

Poměrně zajímavá věc pro rychlou tvorbu webových ajaxových aplikací - Google Web Toolkit. Jde o věcičku, které umožňuje kompaktně v rámci IDE napsat celou webovou aplikaci pouze v Javě a ta je posléze přeložena na html a javascript. Což je rozdíl od jiných webových frameworků (JSF, Tapestry,...), kde už člověk kromě kódu v javě skáče i bokem do jsp a řeší "stránkovou" stránku věci, celkem odlišný přístup.
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
drake127
Sigil Team
Příspěvky: 2358
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic
Kontaktovat uživatele:

Příspěvek od drake127 »

Tákže po vyslechnutí první přednášky o Javě bych rád poprosil "někoho" o vysvětlení PROČ garbage collector nemaže objekty, když na ně neodkazuje žádný ukazatel a má pro takové uvolnění všechny potřebné informace?¨Bylo mi řečeno, že to dělá pouze v případě, kdy jí dochází pamět, ale copak si ti vývojáři nevšimli, že JVM většinou neběží na PC samo? Potom se člověk nemůže divit, proč ukončená aplikace stále spotřebovává 150 MB RAM.
Žralok, který štěká, nekouše.
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

drake127: to není tak jednoduché, jak to vypadá - jednak je ta správa alokovaných objektů rozdělená na několik generací. Generace mladých, kde je nějaký Eden, survivor spaces (to-space a from-space) a pak generace dospělých, která se taky myslím ještě dělí. Každá se kolektuje separátně (ačkoliv tam jsou nějaké "heuristiky", kdy když se kolektuje jedna, může se něco dít i s druhou), každá používá jiný druh garbage collectoru, optimalizovaný pro to, co se má dělat (rychlá a častá, pomalá, ale pořádná, etc.).

GC maže objekty, které nejsou referencované. A ano, dělá to pouze v případě, kdy se překročí nějaký limit (té které generace !). Jsou tam další věci, např. to, že dle toho, jak je paměť využívaná, se ty limity adaptivně mění. A GC běží na "popud" samozřejmě z výkonnostních důvodů - kdyby běžel pořád, asi to nebude moc efektivní. Oním rozškálováním na mladé a starší, flexibilními limity atd. je dosaženo kompromisu a dobré efektivity mezi výkonem a žraním paměti. Pokud člověk dělá nějaké spec. aplikaci, která se vyznačuje nějakými extrémy (spousta velkých a dlouhodobých objektů, spousta pidi a krátkodobých objektů atp.), lze si vitrual machine samozřejmě natweakovat dle libosti. Nové verze VM poskytují dost hezké možnosti profilování, takže každému co jeho jest...

Ukončená aplikace spotřebovává 150 MB RAM? Pokud ukončíš aplikaci, končí i JVM proces a s ním i jeho paměť... teďka nechápu.

Takže ono nelze říct, že je "jedna halda a nad ní maže jeden GC jen tehdy, když dochází paměť celé haldy" - je to trochu složitější a je v tom více vědy.

Memory Management in the Java HotSpot™ Virtual Machine
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
drake127
Sigil Team
Příspěvky: 2358
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic
Kontaktovat uživatele:

Příspěvek od drake127 »

Tak jasně, já nepředpokládám, že to bude nějak primitivní - jen nechápu proč, když si JVM udržuje veškeré info o nereferencovaných objektech, proč je nezničí hned, když už nejsou potřeba? Nechápu význam toho nemazání.

Ohledně těch 150 MB. Spustím nějakou javovskou věc v browseru - načte se JVM (za 5 vteřin během kterých se s browserem nedá pracovat, ale stejně se chová i PDF, takže mlčím). Potom spustím nějakou normální java aplikaci (třeba jEdit nebo NI). Pamět mi vyroste na těch 150 MB. Ukončím tyto aplikace, ale protože mi stále běží ještě jedna (v tom browseru), JVM se neukončí a stále požírá moji RAMku.
Žralok, který štěká, nekouše.
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

drake127: tak ono by to ničení ve finále nemuselo třeba být až tak efektivní, halda by se fragmentovala a sofistikovaná alokace, které by fragmentaci zefektivnila by byla zas víc časově náročná. Pak by to řešilo setřásání haldy, což už je zase časově náročnější činnost. Ale pointu by to stejně příliš neřešilo - paměť se stejně adaptuje tomu, co je potřeba. Druhak, v okamžiku, kdy objekt ztrácí jakoukoliv referenci (či ji nemá od začátku ;-)), nijak explicitně indikováno to není - VM řeší "živé" objekty, ty mrtvé jsou tím doplňkem. Proto ona kontrola zřejmě nenastává kontinuálně.

Javovskou věc v browseru? Myslíš applet ve stránce? Anebo něco puštěné přes java web start?
Tak či tak je to dost zvláštní - každá aplikace si spouští svou vlastní instanci VM. Sdílená VM se používá leda u mobilních aplikací, v prototypech VM, nebo konceptech sdílených class. Toto je třeba jedna z věcí (často však přeháněná), proč údajně nefunguje tolik hostingů pro Javu jako třeba pro php :mrgreen: Samozřejmě to je takový částečný důvod, je jich víc - už jen třeba samo "ideové" pozadí, zda vlastně webové java aplikace potřebují vůbec nějaký hosting a nejsou to věci spíš na zakázku na dedikovanej server.
Každopádně něco se na tom dělá, pro Sun to ale až tak prioritní není - specifikace jede v rámci JSR 121.

Suma, sumárum - to, že se ti javovské věci shlukují do jednoho procesu, je samo o sobě dost zvláštní 8-)
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
durana
Sigilan
Příspěvky: 281
Registrován: 28.4.2006 20:08
Bydliště: Earth:/Europe/ Slovakia/Martin
Kontaktovat uživatele:

Příspěvek od durana »

mozem jednu otazku? neviete niekdo, ako sa definuju "skoky v programe"(neviem ako to inak nazvat) v TP a C++ ?

pamatam si len ze v TP to je goto a oznacenie miesta,
aj to netusim ci to je napriklad "goto nejakybod;" alebo nieco podobne(to sa da rychlo zistit metodou pokus-omyl)

Ale neviem ako sa definuje v TP to miesto, kam sa ma program vratit, a uz vobec netusim, aka je na to dvojica prikazov v C++

odpoved nejako nehori, ale kym si nespomeniem, alebo mi to nikto neobjasni (dufam ze jasne a polopaticky) tak ma to strasne obmedzuje pri pisani. Lebo ak niekto nezada take cislo/slovo/inu hodnotu ako vyzadujem, tak to preskoci velku cast programu, alebo sa ukazu priserne bugy, lebo nic nepracuje tak ako ma a casto to musim riesit napriklad zacyklovanim napriklad cez
do while, aby program nepokracoval kym uzivatel nezada to co chcem a je to neprakticke a casto nepouzitelne. Preto ten prikaz fakt nutne potrebujem(najma teraz ked sa koli maturam skoro nic neucime a mam doma cas aj na taketo veci).
And if that Mocking Bird don’t sing and that ring don’t shine
I’ma break that birdie’s neck, I’ll go back to the Jeweler
Who sold it to ya
And make him eat every carat
Don’t fuck with dad.
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

durana:

TP i C++:

Kód: Vybrat vše

/* kód */
LABEL:
/* kód */
GOTO LABEL;
/* kód */

Jenže - tohle je fakt velký nešvar. Co jde pomocí goto, jde v drtivé většině případů i jinak. Takže, možná ho nutně potřebuješ, ale spíš by bylo nutnější trochu jinak navrhnout kód - použít metody, funkce, podmínky, cykly a jiné možnosti; goto je fakt nešvar. Třeba to načítání vstupu jde právě klidně přes cykl a ne žádné zpětné skoky.
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
durana
Sigilan
Příspěvky: 281
Registrován: 28.4.2006 20:08
Bydliště: Earth:/Europe/ Slovakia/Martin
Kontaktovat uživatele:

Příspěvek od durana »

Vlasak: vacsinou to ide inak, ale ked nad tym clovek sedi uz niekolko hodin a v ten isty den v skole bol nuteny robit nejake primitivne priklady na TP, tak mu to pri C++ uz fakt nemysli. A TP je vo vacsine pripadov taky jednoduchy(resp. vsetko zjednodusuje) ze spravit nieco inak ako je obvykle a inak ako on chce je obcas dost neprijemne.
A ked robim nejaky konkretny program a chcem ho mat rychlo zkrku, tak vacsinou goto je to najjednoduchsie a najrychlejsie riesenie(aj ked netvrdim ze najlepsie)
Pri goto obcas vznikaju skarede bugy, ktore je obcas neprijemne odstranit, ale vzdy lepsie ako to, ze uzivatel zada nieco neocakavane neosetrit nijak, a potom len sledovat ako cely program vypisuje uuplne kraviny. Obcas je pri nom aj kod prehladnejsi, ako pri cykloch, resp. lahsie sa hladaju chyby ak clovek zacykluje aj nieco co nema/nechcel a potom hladat chyby co som zas prehliadol je naozaj otrava.

Jednoducho lenivost a praktickost obcas vyhrava nad kvalitou :mrgreen:
And if that Mocking Bird don’t sing and that ring don’t shine
I’ma break that birdie’s neck, I’ll go back to the Jeweler
Who sold it to ya
And make him eat every carat
Don’t fuck with dad.
Uživatelský avatar
sevencreature
Sigil Team
Příspěvky: 7394
Registrován: 26.9.2005 1:24
Bydliště: Země
Kontaktovat uživatele:

Příspěvek od sevencreature »

durana: GOTO - občas uvažuju, přoč to vůbec vzniklo, když téměř každý označuje jeho používání za čiré zlo.

Hmm, ale třeba links používá GOTO docela dost :mrgreen:
Eat all your school, stay in milk, drink your teeth, don't do sleep and get eight hours of drug.
Uživatelský avatar
drake127
Sigil Team
Příspěvky: 2358
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic
Kontaktovat uživatele:

Příspěvek od drake127 »

Já o jedné situaci, kde je vhodné použít goto vím. Představme si situaci, kdy je potřeba vyskočit ze vnořeného cyklu:

Kód: Vybrat vše

for (int i =0; i < m; ++i)
    for (int j = 0; j < n; ++j)
        if (i == 4 && j == 4)
            ; // co tady mám napsat, abych vyskočil z cyklů?
Jedno řešení je si na začátku druhého cyklu nastavit bool proměnnou na false a pak na konci testovat její platnost. Druhá možnost je právě ten jump. Pokud máte nějakou ještě snazší a "správnou", sem s ní.

Vím, že v některých jazycích se smí psát třeba break 2;, což pak vyskočí o určený počet smyček, ale už si ani nevzpomenu, kde to tak jde (snad VB?).
Žralok, který štěká, nekouše.
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od Vlasák »

durana: no, právě při goto je dost těžké obecně hledat chyby a kód je dost nepřehledný - ale to je spíš v případě větších věcí. Když jde o jednoduchost, pak budiž... nicméně - z jednoduchostí se skládá celek a pak... ;-)

7c: goto vzniklo v dřevních dobách, kdy vyjadřovací schopnosti tehdejších programovacích jazyků,. jakož i technik programování, nebyly tak pokročilé jako poté...
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
sevencreature
Sigil Team
Příspěvky: 7394
Registrován: 26.9.2005 1:24
Bydliště: Země
Kontaktovat uživatele:

Příspěvek od sevencreature »

Vlasák: Já měl na mysli spíš proč se používá (je přítomné) dodnes skoro ve všech jazycích...
Eat all your school, stay in milk, drink your teeth, don't do sleep and get eight hours of drug.
Odpovědět

Zpět na „Měděná čelenka“