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
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 »

Asi ze stejného důvodu, jako je ve většině jazyků konstrukce asm { }. Do programátorské teorie goto nepatří, programování se ovšem řídí teoriemi jen když je na to čas.
Žralok, který štěká, nekouše.
Uživatelský avatar
Ithralsiel
Sigilan
Příspěvky: 423
Registrován: 7.4.2006 16:42
Bydliště: www.hattrick.org
Kontaktovat uživatele:

Příspěvek od Ithralsiel »

TAk v tomhle jsem dost rozpolcenej....v informatice programujeme v delphi a tam je goto opravdu jen zlo, ale když programujeme kity mikroprocesorů, tak je tam goto docela důležitý...
Souřadnice 1476 na 4972. Podívejte se, pánové. Je tam meteor větší než King Kongova ranní stolice.
Tak to seš vážně ty? Nevkusnej trouba se zubama, co vypadaj jako druidská svatyně ?

A.J. Rimmer, D.Lister, Kryton, Kocour
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 »

Pár novinek nejen ze světa páry na šálkem ;-)

Před měsícem se konala hlavní událost každého roku - konference JavaOne. Kromě mnoha pozlátek v podobě všelijakých scének robotů poháněných real-time implementací Javy, všelijakých interaktivních map a javovského trenažeru psů to přineslo i pár štemplů na "novinky", o nichž se stejně dopředu mluvilo.

Jedním z toho je JavaFX, další z rodiny technologií nad Java platformou. Lze to uchopit hned z několika stran a je to koneckonců samo o sobě rozmanité - dneska jsou oficiálně vydané dvě partie mozaiky: JavaFX script a JavaFX mobile. První jmenovaný je takový společný jmenovatel jednotlivých "řad" JavaFX - jde o deklarativní skriptovací jazyk. Druhé jmenované je prostředí pro mobilní zařízení, v podstatě operační systém, založený na javě a unixu. K tomu časem přibude paklík řešící webové a rich internet aplikace. Což už v zásadě funguje, ale není to unifikované do nějaké řady.

Když se to teda všechno spojí dohromady, má jít o věc, která usnadní a urychlí vývoj (ať už desktopové, mobilní nebo webové aplikace), zachová, ba ještě více otevře myšlenku "write once, run anywhere". Často je to přirovnáváno k flashi, který ovšem půjde rozběhat beze změny na všem. Takže konkurence pro nově nastupující MS Silverlight a adobácké Apollo.

Sada dem propagující JavaFX, tehdy ještě pod názvem F3:
http://blogs.sun.com/chrisoliver/resource/demo2.jnlp

Jde o přepsané flashovské či swingové existující věci právě do JavaFX. Pokud autor nekecá (;-)), tak je na tom zajímavé hlavně to, že jde o věci napsané se skutečně malými časovými nároky.


Do sedmičkové javy se připravuje trochu změna v koncepci její distribuce - má nastoupit modularita a zmizet ten pomalu rostoucí monolit a kromě toho přijít i možnosti, jak modularizovat vlastní aplikace - kromě jarů budou i jamy. V souvislosti s javou samotnou se uvádělo spojení "java kernel". A toto má řešit tzv. "Consumer JRE". Tj. rozsekání JRE na části a jejich stahování a instalování na požadavek aplikace. V ideálním případě tedy člověk stáhne pouze malé základní tintítko a o zbytek se postará pc. Uvidíme ;-)
Každopádně to má vyřešit místo, kde hodně lidí tlačí bota - rychlost spouštění javovských aplikací. Kromě toho taky deployment aplikací.


Toto je vlastně vynucené tím, že se na scénu mají zase trochu více vrátit applety, a tak je třeba vypořádat se s tím, co bylo jejich bolístkou - a to právě pomalé načítání a neřády s tím, jaké vlastně JRE či co prohlížeč potřebuje. A proč applety? Protože to má být právě stack pro JavaFX v prohlížeči.

Kombinaci appletů, javascriptu a ajaxu lze vidět v malé ukázce, kterou je webový klient pro Flickr. Flickr je internetové fotoalbum (taky celkem pěkně udělané). Klient se jmenuje Iris a k vyzkoušení je tady:
http://swinglabs.java.sun.com/iris/index.jsp.

Kombinací výše zmíněných technik lze v prohlížeči používat 3d efekty, přímou úpravu obrázků, upload pomocí drag and drop odkudkoliv z desktopu, upload jede ve vlastním vlákně, takže aplikace není blokovaná síťovým provozem, vše rychle reaguje... Vypadá to celkem slibně. Je celkem zajímavé si s tím pohrát (ne že by tam teda toho bylo tolik co ke hraní, ale jako ukázka toho, kam až se svět hnul od statického html je to celkem fajn ;-)). Kdo nemá Flickr account, může zkusit vlasakcz. Po vyplnění do vyhledávacího okna by to mělo otevřít galerii, po zalogování by mělo jít i uploadovat.

Screen

Iris byl představen v rámci keynote dema na JavaOne. Něco podobného bylo na loňských Sun tech days také v rámci keynote dema. Tím byl pro změnu desktopový fotoalbový klient pro Flickr zvaný Aerith. To taky stojí za vyzkoušení.
Ke spuštění v rámci Java Web Start http://aerith.keybe.com/jnlp/index.jnlp a nějaké mé komentáře k tomu.


Že z Javy lze volat nativní kód, se ví. Že z nativního kódu lze volat Javu, se ví též. K tomu všemu je klíčem technologie zvaná JNI - Java Native Interface. Problémem zde je, že se tímto velmi snadno může porušit přenositelnost kódu. A pro mnoho lidí to představuje též "estetický" problém v tom být nucen zabývat se psaním nativního kódu. Na světě je ale JNA - Java Native Access. To poskytuje takový můstek, jak volat nativní kód (kupříkladu .dll) přímo z javy bez napsání čehokoliv nativního. Napíše se v javě interface, ten se prohookuje s nativním kódem pomocí JNA a je hotovo. Navíc tento přístup o něco zlepšuje přenositelnost kódu i při použití nativních funkcí.

Takže už jde v Javě udělat třeba něco jako tohle https://jna.dev.java.net/demo/ShapedWindowDemo.jnlp bez toho, že by člověk musel hackovat komponenty Swingu.


Z dílny Google Labs, kde se kutí přenesení snad celého desktopu na web (viz. Google Office a další), před nedávnem vylétla další technologická vlaštovka zvaná Google Gears. Jde o framework umožňující, aby webová aplikace mohla pracovat v on-line i off-line módu. Pomocí lokální databáze a synchronizačních technik přitom uživatel není vědom rozdílu (samozřejmě záleží na typu aplikace ;-)).


A na závěr jedna netradiční věcička - jak se naučit Ruby pomocí komiksu. Namísto tlustých knížek jednu vynalézavou hlavu napadlo netradiční řešení - napsat toto formou příběhovou a komiksovou - Why's poignant guide to Ruby. Prostřednictvím stripů a příběhů je tam čtenář uváděn do jednotlivých aspektů programování v Ruby. Zatím jsem to nečetl pořádně, jen tak zběžně některé partie, ale vypadá to celkem srandovně ;-)
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Mecker
Sigilan
Příspěvky: 732
Registrován: 2.5.2006 16:16
Bydliště: Forgotten Realms
Kontaktovat uživatele:

Příspěvek od Mecker »

Lidi, kde se na mě hrabete s Javou, C++ a podobnou havětí. Já jsem za mladých let dělal v Borland Pascal, což je podobné Delfhi. A bylo to "jednoduché" a přehledné.
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 »

Tohle je možná pro skalnější, ale dneska mě to absolutně položilo ;-)

Obrázek
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 »

Hle, co se nám to z Prahy zase vyklubalo :-P Beta verze NetBeans 6.0 plně k dispozici - od Javy desktopové, mobilní i webové, přes Ruby až třeba k C/C++. Mnoho dodaných vylepšováků, funguje to hezky.

http://www.netbeans.org/community/relea ... index.html
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 »

potrebujem pomoc. Ide konkretne o program v pascali. Mam animaciu, ktora bezi pokial keypressed a ide jednoducho o gulckku odrazajucu sa od sien obrazovky. chcem vsak, aby napriklad, na stlacenie klavesy B zmenila farbu na blue, ale neviem ako to spravit, aby tam bol spravny syntax a aby to fungovalo

repeat
....
if **** then Ball^.recolor(blue) {recolor mam uz zadefinovanu ako proceduru pre objekt ball}

until keypressed;



...co vsak mam dat za to if, aby mi to fungovalo. a aby reagovalo iba ak sa nieco stlaci...lebo pri jednej uprave mi to fungovalo(cez readkey), ale cyklus vzdy zastal a cakal ci stlacim b, alebo nieco ine(ako vzdy)...v programovani som lama a nechcem to robit nejakou velkou oklukou ze ak sa staci keypressed, tak nasledne zisti aka bola stlacena klavesa, alebo nieco podobne...bolo by to zdlhave a neviem ci by bol moj pokus uspesny...proste aky je najjenoduhsi sposob ako to urobit..teda ak je nejaka procedure na toto presne urcena, nie aby som si na to musel pisat vlastnu proceduru...pripadne ak to ide cez keypressed, v akom to ma byt syntaxe, lebo som skusal vela variant a nic mi nebralo
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: uff... ;-) ReadKey, pokud vím, vrací ASCII hodnotu přiřazenou stisknuté klávese.

Takže by mělo fungovat něco jako

Kód: Vybrat vše

var ch : char;
...

ch := ReadKey;
if ch = 'B' then begin
... něco, co chceš, aby se při B stalo
Ale tohle je synchronní, ReadKey čeká na vstup...

Asynchronní zpracování by měla dokázat unit Keyboard, našel jsem jeden celkem kompletní příklad:

Kód: Vybrat vše

uses keyboard;

Var
  K : TKeyEvent;

begin
  InitKeyBoard;
  Writeln('Press keys, press "q" to end.');
  Repeat
    K:=PollKeyEvent;
    If k<>0 then
      begin
      K:=GetKeyEvent;
      K:=TranslateKeyEvent(K);
      writeln;
      Writeln('Got key : ',KeyEventToString(K));
      end
    else
      write('.');
  Until (GetKeyEventChar(K)='q');
  DoneKeyBoard;
end.
PollKeyEvent prohlíží frontu došlých požadavků z klávesnice. Pokud tam nic není, vrací nulu. TranslateKeyEvent ti z požadavku vrací ASCII hodnotu. GetKeyEventChar odebere z fronty došlý požadavek a rovnou ho převede na ASCII.
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:

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

Příspěvek od Vlasák »

Na světlo se pomalu blíží nový update Javy SE - Java SE 6 update N. Zatím je k dispozici jako early access - https://jdk6.dev.java.net/6uNea.html

Co přináší? Z estetického hlediska nový cross-platformový look and feel Nimbus. Update N slibuje na Windows ještě rychlejší reakce grafického rozhraní. A to hlavní - rychlejší spouštění javovských aplikací (konkrétně nejde o aplikace jako o spuštění virtuálního stroje, což bude právě rychlejší) a "kernel" - možnost z JRE stahovat, používat a v případě nutnosti doplňovat pouze to, co je potřeba.
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:

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

Příspěvek od drake127 »

Z dnešního dne mám tak trochu rozporuplné pocity.

Tak trochu nechápu, jak to, že Java nemá rozmyšlený způsob, jakým obsluhuje konce řádků. Tedy, Java možná ano, ale NetBeans nikoliv. Jediné, čeho se mi podařilo dosáhnout byly nefunkční konfiguráky a nutnost opravy většiny souborů v projektu pomocí tr -d '\r'.

Ovšem zase musím uznat, že OpenSource má přecijen něco do sebe, neboť jsem našel na Internetu způsob, jak překompilovat zdrojáky NetBeans launcheru, aby prostě natvrdo používal ty unixové. A kupodivu to zdá se i funguje. Kompilátor dokonce ohlásil jen 4 chyby a 43 varování. ;-)
Ž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:

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

Příspěvek od Vlasák »

drake127: Konce řádků Java řeší systémovou proprtou:

Kód: Vybrat vše

System.getProperty("line.separator");
Počítám, že NetBeans tohle používají taky, takže pokud edituješ konfigurák v unixu, tak unixové konce řádků jsou rozlišitelné, pokud NetBeans spouštíš v unixu. Pokud konfigurák edituješ v unixu neunixově, tak to pak ty hruška a jablka asi nerozezná 8-)

Jaké konfiguráky NB projektu jsi editoval?

Tak, co jsem koukal, tak NB načítají přes BufferedReader a ten...

Kód: Vybrat vše

     * Reads a line of text.  A line is considered to be terminated by any one
     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return
     * followed immediately by a linefeed.
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:

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

Příspěvek od drake127 »

Jo, přesně tohle jsem přidával do toho launcheru, konkrétně

Kód: Vybrat vše

addOption("-Dline.separator=\n");
. On sice NetBeans umožňuje podstrčení těhle opšnů, ale velmi legračně bere \n jako dva znaky a pěkně mi ty konfiguráky rozdělí pomocí \n, čímž ty XMLka můžu samozřejmě vyhodit. S vlastními soubory projektu vyrobí něco "nedefinovaného", protože co jsem se do nich koukal, tak někde vložil \n, někde 0x0A, někde 0x0A0D(BE - tj. opačně!).

P.S. Edituju ve Windows a chci unixové konce řádků. Tak nějak je považuji za standard, stejně jako dopředná lomítka.
Ž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:

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

Příspěvek od Vlasák »

K zápisu xml konfiguráku NB6 používají objekty z javax.xml - což při návrhu ala "providerImpl" skrze interfacy a abstraktní třídy znamená, že xml zápisy, transformace, čtení atp. může mít na svědomí různý xml provider podle implementace konkrétního JRE.
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:

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

Příspěvek od sevencreature »

http://www.charlespetzold.com/etc/DoesV ... eMind.html

Docela příjemné počtení (ač už je to dost starý článek) - v podstatě o životě (a trochu i o programování) :-)
Eat all your school, stay in milk, drink your teeth, don't do sleep and get eight hours of drug.
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

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

Příspěvek od Vlasák »

7c: Zajímavé 8-) Nicméně ta partie, kde se píše o generovaném kódu formů, tak tam je to dost ošidné - vesměs se dá říct, že když člověk sáhne po vizuálním návrháři, pak to dělá buď pro usnadnění práce, anebo z důvodu, že GUI je komplexní. Ručně psané složité GUI je ve výsledku stejně těžko čitelné, i když se člověk snaží o to, aby bylo. Hrátky s layouty, noření panelů do sebe, nastavování výplní... popisné názvy proměnných jsou tam dobré, ale když je v tom programu těch sebepopisnějších názvů víc než dost, pak ani ta sebepopisnost už moc nepomůže. Je nutné kód striktně oddělovat na jednotlivé metody ala getXYZPanel a i tak se ten čistě a čitelně psaný kód GUI postupně hltí... takže kolikrát než investovat čas do ruční tvorby GUI, je často lepší to fakt naklikat. Dřív jsem byl zastánce striktně ručně psaného GUI, dnes už to je půl na půl.

Jinak je podle mě generování kódu docela fajn věc (pakliže to opravdu generuje a ne generuje a zároveň skrývá :mrgreen: ). Visual Studio mi k srdci ale zrovna nikdy moc nepřirostlo (ani jsem toho v něm nemusel dělat tolik), takže žádnou vyloženou averzi, nebo naopak preferenci jsem si k němu vybudovat nedokázal.

Každopádně, když se o tom už tady mluví, už pár týdnů je k dispozici NetBeans 6.1 - "the only IDE you need" :mrgreen: S podporou různých jazyků v rámci VM a možností snadného plugování gramatik jazyků do NetBeans to už skoro zavání relevantností hesla "only you need" :-D
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Odpovědět

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