<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jasperův zápisník &#187; Programování</title>
	<atom:link href="http://blog.petrkaspar.cz/kategorie/programovani/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.petrkaspar.cz</link>
	<description>Blog o všem možném...</description>
	<lastBuildDate>Mon, 21 Jun 2010 15:12:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP vs. ASP.NET</title>
		<link>http://blog.petrkaspar.cz/clanek/php-vs-aspnet/</link>
		<comments>http://blog.petrkaspar.cz/clanek/php-vs-aspnet/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 11:44:00 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Škola]]></category>

		<guid isPermaLink="false">http://blog.petrkaspar.cz/?p=1034</guid>
		<description><![CDATA[
<p>S ASP.NET jsem doposud neměl žádné zkušenosti a ani jsem neměl
žádnou potřebu se jím zabývat, jelikož pro tvorbu internetových aplikací
používám hlavně PHP</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>S <em>ASP.NET</em> jsem doposud neměl žádné zkušenosti a ani jsem
neměl žádnou potřebu se jím zabývat, jelikož pro tvorbu internetových
aplikací používám hlavně PHP. Tento semestr jsem však ve škole absolvoval
předmět <a
href="http://arg.vsb.cz/msita/Courses/VWA%202009/P/default.aspx">Vývoj
webových aplikací v .NET</a>, kde jsme se s touto problematikou docela dobře
seznámili a zároveň jsme si v našem teamu zvolili ASP.NET jako platformu,
ve které se implementoval projekt v dalším předmětu. Jaké jsou tedy moje
osobní zkušenosti s touto technologií?</p>

<div class="centrovani"><img
src="http://blog.petrkaspar.cz/wp-content/phpvsasp.gif" alt="PHP vs. ASP.NET"
title="PHP vs. ASP.NET" width="650" height="130" class="imgCisty" /></div>

<p>V úvodu musím zmínit to, že nebudu psát nějaké komplexní srovnání
(těch je na netu dost), ale spíše jen krátce zmíním, co se mi líbilo.
Taky se to asi ani nedá moc srovnávat, protože PHP je scriptovací jazyk a
ASP.NET je celý framework s možností programovat v C#, VB.NET a
dalších…</p>

<p>Nejvíce se mi líbila rychlost, jakou lze vytvořit či naprogramovat
různé úlohy. Spousta věcí se dá „naklikat“ přímo ve Visual Studiu a
pak jen případné drobnosti dopsat např. v C#. Typickým příkladem je
třeba stránka, na které bude kompletní správa databázové tabulky, tzn.
výpis, přidávání, editace a mazání záznamů. Tento úkol se dá
zvládnout do 5 minut. Stačí na stránku vložit <em>GridView</em>,
<em>DetailsView</em>, vše propojit s <em>SqlDataSourcem</em>, přidat
validátory, upravit vzhled a případně navolit další parametry a je
hotovo.</p>

<p>Další věcí, která se mi líbila, jsou <em>Master Pages</em> a obecně
tvorba vizuálních stylů aplikace. <em>Master Page</em> je stránka, na které
navolíme ovládací a jiné prvky (menu, hlavičky, patičky), které se budou
vyskytovat na všech stránkách. Pomocí <em>Content Place Holder</em>
komponenty nadefinujeme, kde se má nacházet obsah stránky a následně tuto
Master Page přiřadíme všem ostatním stránkám. Tím máme layout
definován v Master Page a v jednotlivých stránkách už se neřeší.</p>

<p>Celkem prakticky je vyřešena i tvorba <acronym
title="Asynchronous JavaScript and XML">AJAX</acronym> aplikací. Taky je to
hodně „klikačka“, na stránku vložíme třeba <em>UpdatePanel</em> a
v rámci něho přidáme určité ovládací prvky (tlačítka, text boxy,
labely) a kompilátor se sám postará o to, aby to běželo jako AJAX.</p>

<p>Z dalších věcí už jen krátce vyjmenuju, co mě zaujalo. Byly to třeba
validátory, pomocí kterých můžeme jednoduše kontrolovat data zadaná
uživatelem do textových polí (nutnost vyplnit, kontrola podle regulárního
výrazu, atd…). Pomocí <em>SiteMapy</em> lze zase efektivně udělat navigace
na stránkách. Zajímavé je také generování výstupu podle cílového
prohlížeče / zařízení. Aplikace pozná například prohlížeč a
přizpůsobí mu výstup (prohlížeči bez podpory CSS vyrenderuje variantu bez
použití CSS atd…) Kapitolou samo o sobě je <acronym
title="Integrated development environment">IDE</acronym> pro vývoj ASP.NET
stránek – Microsoft Visual Studio 2008, ve kterém se velice pěkně
pracuje.</p>

<p class="centrovani"><a href="http://blog.petrkaspar.cz/wp-content/vs08.jpg"
onclick="return hs.expand(this)"><img
src="http://blog.petrkaspar.cz/wp-content/vs08t.jpg"
alt="Implementace projektu v Microsoft Visual Studio 2008"
title="Implementace projektu v Microsoft Visual Studio 2008" width="650"
height="406" /></a><br />
<em>Implementace projektu v Microsoft Visual Studio 2008</em></p>

<p>Asi bych měl uvést i nějaké zápory, ale žádných jsem si nevšiml,
nebo mě teď nenapadají. Snad jen kód, který ASP.NET stránky mají, je
trochu šílený (hodně dlouhé identifikátory, všude samý JavaScript
atd…) ale na druhou stranu je validní a funkční…</p>

<h3>Závěr</h3>

<p>Jak už jsem ale říkal, PHP je scriptovací jazyk a ASP.NET je celý
framework. Spousta uvedených features by asi šla doplnit i do PHP
prostřednictvím různých frameworků a knihoven.</p>

<p>ASP.NET na mě zapůsobilo hodně dobrým dojmem, i navzdory tomu, že jsem
dlouholetý „pé-há-pé-čkář“. Zatím asi nebudu odcházet od PHP, ale
rád bych se alespoň trochu věnoval i ASP.NET, protože myslím, že tato
technologie je hodně perspektivní…</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.petrkaspar.cz/clanek/php-vs-aspnet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Efekt zrcadlení obrázku v PHP</title>
		<link>http://blog.petrkaspar.cz/clanek/efekt-zrcadleni-obrazku-v-php/</link>
		<comments>http://blog.petrkaspar.cz/clanek/efekt-zrcadleni-obrazku-v-php/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 17:06:41 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[Programování]]></category>

		<guid isPermaLink="false">http://blog.petrkaspar.cz/?p=850</guid>
		<description><![CDATA[
<p>Jak lze ve scriptovacím jazyce PHP s využitím funkcí knihovny GD2
jednoduše k obrázku vytvořit efekt zrcadlového odrazu</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Už jsem zde dlouho nenapsal nějaký script, tak to dnes napravím. Nedávno
jsem v PHP potřeboval k obrázku přidat zrcadlový efekt, jak jde vidět na
ukázkových obrázcích níže. Tento efekt může najít uplatnění
v různých galeriích, portfoliích a podobných projektech. Možná se to
někomu bude hodit a využije to…</p>

<p class="centrovani"><img src="http://blog.petrkaspar.cz/wp-content/mila.jpg"
alt="Vstupní obrázek" title="Vstupní obrázek" width="300" height="199" />
<img src="http://blog.petrkaspar.cz/wp-content/mila-vystup.jpg"
alt="Výstupní obrázek" title="Výstupní obrázek" width="300" height="248"
/><br />
<em>Praktická ukázka – vlevo vstupní obrázek, napravo výstupní
obrázek</em></p>

<p>Na vyřešení problému jsem napsal následující funkci, která má jeden
povinný parametr, kterým je cesta ke vstupnímu obrázku. Dále jsou
k dispozici dva nepovinné parametry – velikost zrcadlení v procentech
(defaultní hodnota je 25) a RGB barva pozadí (defaultní je černá).</p>

<p>Samotná funkce je jednoduchá, využívá funkce grafické knihovny GD2 a
skládá se ze 3 částí. V první z nich se načte vstupní obrázek,
zjistí se rozměry a vypočítají se rozměry výstupního obrázku. Ve druhé
části se provádí zrcadlení požadované oblasti a v poslední třetí
částí se doplní barevný přechod.</p>

<pre class="php"><code><span
class="php-comment">/** Vygenerování zrcadlového odrazu ke vstupnímu obrázku
* @param string $soubor řetězec obsahující cestu ke vstupnímu jpg obrázku
* @param int $velikost velikost zrcadlení v procentech od 1 do 100, defaultně 25
* @param mixed $barva barva pozadí v RGB, zadává se jako pole, defaultně array(0,0,0)
* @return mixed výsledný obrázek jako identifikátor
* @copyright Petr Kašpar, http://blog.petrkaspar.cz/
*/</span>
<span
class="php-keyword1">function</span> zrcadliObrazek(<span
class="php-var">$soubor</span>, <span class="php-var">$velikost</span>=<span
class="php-keyword1">NULL</span>, <span class="php-var">$barva</span>=<span
class="php-keyword1">NULL</span>) {

  <span
class="php-comment">//Doplnění defaultních parametrů
</span>  <span
class="php-keyword1">if</span>(<span class="php-var">$velikost</span> == <span
class="php-keyword1">NULL</span>) <span class="php-var">$velikost</span> = <span
class="php-num">25</span>;
  <span class="php-keyword1">if</span>(<span
class="php-var">$barva</span> == <span class="php-keyword1">NULL</span>) <span
class="php-var">$barva</span> = <span class="php-keyword2">array</span>(<span
class="php-num">0</span>,<span class="php-num">0</span>,<span
class="php-num">0</span>);

  <span
class="php-comment">//Načtení obrázku, zjištění rozměrů
</span>  <span
class="php-var">$obrazekVstup</span> = <span
class="php-keyword2">imagecreatefromjpeg</span>(<span
class="php-var">$soubor</span>);
  <span
class="php-var">$obrazekSirka</span> = <span
class="php-keyword2">imagesx</span>(<span
class="php-var">$obrazekVstup</span>);
  <span
class="php-var">$obrazekVyska</span> = <span
class="php-keyword2">imagesy</span>(<span
class="php-var">$obrazekVstup</span>);
  <span
class="php-var">$velikostZrcadleni</span> = <span
class="php-var">$obrazekVyska</span> / (<span class="php-num">100</span> / <span
class="php-var">$velikost</span>);
  <span
class="php-var">$obrazekVyskaNova</span> = <span
class="php-var">$obrazekVyska</span> + <span
class="php-var">$velikostZrcadleni</span>;
  <span
class="php-var">$obrazekVystup</span> = <span
class="php-keyword2">imagecreatetruecolor</span>(<span
class="php-var">$obrazekSirka</span>, <span
class="php-var">$obrazekVyskaNova</span>);

  <span
class="php-comment">//Zrcadlení části obrázku podle zadané velikosti
</span>  <span
class="php-var">$x</span> = <span class="php-num">1</span>;
  <span
class="php-keyword1">for</span>(<span class="php-var">$y</span> = <span
class="php-var">$obrazekVyska</span> - <span
class="php-var">$velikostZrcadleni</span>; <span
class="php-var">$y</span> &lt; <span class="php-var">$obrazekVyska</span>; <span
class="php-var">$y</span>++){
    <span
class="php-keyword2">imagecopy</span>(<span
class="php-var">$obrazekVystup</span>, <span
class="php-var">$obrazekVstup</span>, <span class="php-num">0</span>, (<span
class="php-var">$obrazekVyskaNova</span> - <span
class="php-var">$x</span>),
    <span class="php-num">0</span>, <span
class="php-var">$y</span>, <span class="php-var">$obrazekSirka</span>, <span
class="php-num">1</span>);
    <span class="php-var">$x</span>++;
  }
  <span
class="php-comment">//Přidání grandientu
</span>  <span
class="php-var">$alfa</span> = <span class="php-num">100</span>;
  <span
class="php-var">$alfaKrok</span> = <span class="php-var">$alfa</span> / (<span
class="php-var">$obrazekVyskaNova</span> - <span
class="php-var">$obrazekVyska</span>);
  <span
class="php-keyword1">for</span>(<span class="php-var">$y</span> = <span
class="php-var">$obrazekVyska</span>; <span class="php-var">$y</span> &lt; <span
class="php-var">$obrazekVyskaNova</span>; <span
class="php-var">$y</span>++){
    <span class="php-keyword1">for</span>(<span
class="php-var">$x</span> = <span class="php-num">0</span>; <span
class="php-var">$x</span> &lt; <span class="php-var">$obrazekSirka</span>; <span
class="php-var">$x</span>++){
      <span
class="php-var">$novaBarva</span> = <span
class="php-keyword2">imagecolorallocatealpha</span> (<span
class="php-var">$obrazekVystup</span>,
      <span
class="php-var">$barva</span>[<span class="php-num">0</span>], <span
class="php-var">$barva</span>[<span class="php-num">1</span>], <span
class="php-var">$barva</span>[<span class="php-num">2</span>], <span
class="php-var">$alfa</span>);
      <span
class="php-keyword2">imagesetpixel</span> (<span
class="php-var">$obrazekVystup</span>, <span class="php-var">$x</span>, <span
class="php-var">$y</span>, <span
class="php-var">$novaBarva</span>);
    }
    <span
class="php-var">$alfa</span> -= <span
class="php-var">$alfaKrok</span>;
  }
  <span
class="php-comment">//Vložení původního obrázku
</span>  <span
class="php-keyword2">imagecopy</span>(<span
class="php-var">$obrazekVystup</span>, <span
class="php-var">$obrazekVstup</span>, <span class="php-num">0</span>, <span
class="php-num">0</span>, <span class="php-num">0</span>, <span
class="php-num">0</span>, <span class="php-var">$obrazekSirka</span>, <span
class="php-var">$obrazekVyska</span>);
  <span
class="php-keyword2">imagedestroy</span>(<span
class="php-var">$obrazekVstup</span>);

  <span
class="php-keyword1">return</span> <span
class="php-var">$obrazekVystup</span>;
}</code></pre>

<p>Zde je k vidění příklad použití mé funkce. Kromě cesty ke vstupnímu
obrázku jsem ještě nadefinoval barvu pozadí na světle šedou, velikost
zrcadlení jsem nevyplňoval a nechal defaultní. Výsledný obrázek se
následně zobrazí v prohlížeči ve formátu PNG. Toto nastavení vygeneruje
obrázek, který je vidět v úvodu tohoto článku.</p>

<pre class="php"><code><span
class="php-var">$obrazek</span> = zrcadliObrazek(<span
class="php-quote">'img/mila.jpg'</span>, <span
class="php-keyword1">NULL</span>, <span class="php-keyword2">array</span>(<span
class="php-num">234</span>, <span class="php-num">234</span>, <span
class="php-num">234</span>));
<span class="php-keyword2">header</span>(<span
class="php-quote">'Content-type: image/png'</span>);
<span
class="php-keyword2">imagepng</span>(<span
class="php-var">$obrazek</span>);
<span
class="php-keyword2">exit</span>();</code></pre>

<p>Funkce určitě není dokonalá, určitě by se dala vylepšit o spoustu
maličkostí jako např. vykreslování rámečků, více druhů odlesků,
samotné převrácení obrázku by se nemuselo dělat ručně, ale pomocí
příslušné funkce knihovny ImageMagick, pokud by tato knihovna byla
přítomná. Nicméně já potřeboval jen tuto funkčnost, takže jsem další
možnosti už neimplementoval…</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.petrkaspar.cz/clanek/efekt-zrcadleni-obrazku-v-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interpretační překladač implementovaný v Javě s využitím JavaCC</title>
		<link>http://blog.petrkaspar.cz/clanek/interpretacni-prekladac-implementovany-v-jave-s-vyuzitim-javacc/</link>
		<comments>http://blog.petrkaspar.cz/clanek/interpretacni-prekladac-implementovany-v-jave-s-vyuzitim-javacc/#comments</comments>
		<pubDate>Mon, 26 May 2008 12:55:38 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Škola]]></category>

		<guid isPermaLink="false">http://blog.petrkaspar.cz/?p=117</guid>
		<description><![CDATA[
<p>Zdrojový kód programu, který řeší implementaci vlastního překladače
pomocí zadané specifikace jazyka s využitím generátoru JavaCC.</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Už je to relativně delší doba, co jsem odevzdal hlavní semestrální
projekt do předmětu <acronym
title="Programovací jazyky a překladače">PJP</acronym>. Cílem bylo vytvořit
interpretační překladač podle zadané specifikace jazyka. Vstupem do
programu je soubor se zdrojovým kódem (definuje se jako parametr při
spouštění) a veškeré výstupy se vypisují na standardní výstup. Projekt
je implementován v Javě s využitím generátoru kompilátorů <a
href="https://javacc.dev.java.net/">JavaCC</a>.</p>

<h3>Specifikace jazyka</h3>

<p>Specifikace jazyka interpretačního překladače by se dala stručně popsat
těmito body: <a href="http://blog.petrkaspar.cz/wp-content/cmd11.jpg"
onclick="return hs.expand(this)"><img
src="http://blog.petrkaspar.cz/wp-content/cmd1.jpg" alt="Screenshot CMD"
title="Screenshot CMD" width="229" height="415"
class="alignright size-full wp-image-129" /></a></p>

<ul>
	<li>Deklarace
		<ul>
			<li>typ proměnná, proměnná, …;</li>

			<li>Typem mohou být int, float, boolean nebo String.</li>
		</ul>
	</li>

	<li>Přiřazení hodnoty
		<ul>
			<li>proměnná = výraz;</li>

			<li>Proměnná musí existovat, ohled na datové typy (do intu nepůjde uložit
			String).</li>
		</ul>
	</li>

	<li>Čtení ze standardního vstupu
		<ul>
			<li>read proměnná, proměnná, …;</li>

			<li>Načtení hodnoty ze standardního vstupu do proměnných, ohled na
			datové typy.</li>
		</ul>
	</li>

	<li>Výpis proměnných
		<ul>
			<li>print výraz, výraz, …;</li>

			<li>Výpis hodnoty výrazů na standardní výstup.</li>
		</ul>
	</li>

	<li>Výrazy
		<ul>
			<li>Výrazy mohu obsahovat operátory + (plus), – (mínus), * (krát), /
			(děleno), % (zbytek po celočíselném dělení), . (konkatence), !
			(negace).</li>
		</ul>
	</li>
</ul>

<p>Zde si můžete prohlédnout <a
href="http://blog.petrkaspar.cz/wp-content/www_cs_vsb_cz_behalek_vyuka_pjp_projekt2_popis.pdf">podrobnou
specifikaci jazyka</a> ve formátu PDF ze stránek vyučujícího.</p>

<p>K dispozici dávám <a href="/download.php?soubor=3">celý projekt ke
stažení</a> (zip, 100kB). Obsahem jsou kompletní zdrojové kódy,
konfigurační soubor build.xml pro sestavení pomocí programu Ant, dokumentace
s návodem na kompilaci a také ukázkové zdrojové kódy k otestování.</p>
<span id="more-117"></span>
<h3>Ukázkový zdrojový program</h3>

<p>Zde je k vidění ukázkový zdrojový program, který je použit jako vstup
pro interpretační překladač:</p>

<pre class="java"><code>print <span
class="java-quote">&quot;&lt;Konstanty&gt;&quot;</span>;
print <span
class="java-quote">&quot;10: &quot;</span>,<span
class="java-num">10</span>;
print <span
class="java-quote">&quot;1.25: &quot;</span>, <span
class="java-num">1.25</span>;
print <span
class="java-quote">&quot;&quot;</span>;;

print <span
class="java-quote">&quot;&lt;Promenne&gt;&quot;</span>;
String s;
s=<span
class="java-quote">&quot;Abcd&quot;</span>;
print <span
class="java-quote">&quot;s(Abcd): &quot;</span>, s;

<span
class="java-keywords1">float</span> d;
d=<span
class="java-num">3.14159</span>e2;
print <span
class="java-quote">&quot;d(3.14159e2): &quot;</span>, d;

<span
class="java-keywords1">int</span> n;
n=-<span
class="java-num">500</span>;
print <span
class="java-quote">&quot;n(-500): &quot;</span>, n;
print <span
class="java-quote">&quot;&quot;</span>;

<span
class="java-keywords1">boolean</span> k;
k=true;
print <span
class="java-quote">&quot;k(true): &quot;</span>,k;
print <span
class="java-quote">&quot;&quot;</span>;

print <span
class="java-quote">&quot;&lt;Vyrazy&gt;&quot;</span>;
print <span
class="java-quote">&quot;2+3*5(17): &quot;</span>,<span
class="java-num">2</span>+<span class="java-num">3</span>*<span
class="java-num">5</span>;
print <span
class="java-quote">&quot;17 / 3(5): &quot;</span>, <span
class="java-num">17</span> / <span class="java-num">3</span>;
print <span
class="java-quote">&quot;17 % 3(2): &quot;</span>, <span
class="java-num">17</span> % <span class="java-num">3</span>;
print <span
class="java-quote">&quot;2.5*2.5/6.25(1.0): &quot;</span>, <span
class="java-num">2.5</span>*<span class="java-num">2.5</span>/<span
class="java-num">6.25</span>;
print <span
class="java-quote">&quot;1.5*3(4.5): &quot;</span>, <span
class="java-num">1.5</span>*<span class="java-num">3</span>;
print <span
class="java-quote">&quot;abc+def (abcdef): &quot;</span>, <span
class="java-quote">&quot;abc&quot;</span>.<span
class="java-quote">&quot;def&quot;</span>;
print <span
class="java-quote">&quot;&quot;</span>;

print  <span
class="java-quote">&quot;&lt;Poznamky&gt;&quot;</span>; <span
class="java-comment">// Poznamka
// print  &quot;Taky poznamka&quot;;
</span>
print <span
class="java-quote">&quot;&lt;Kompatibilita&gt;&quot;</span>;
<span
class="java-keywords1">float</span> y;
y= <span
class="java-num">10</span>;
print <span
class="java-quote">&quot;y (10.0): &quot;</span>, y;

print <span
class="java-quote">&quot;&lt;Vstup dat - a,b#,c$&gt;&quot;</span>;
<span
class="java-keywords1">int</span> a;
<span
class="java-keywords1">float</span> b;
String c;
<span
class="java-keywords1">boolean</span> e;
a = <span
class="java-num">0</span>;
b = <span class="java-num">0.0</span>;
c = <span
class="java-quote">&quot;&quot;</span>;
e = true;
read a,b,c,e;
print <span
class="java-quote">&quot;a,b,c,e: &quot;</span>, a, <span
class="java-quote">&quot;, &quot;</span>, b, <span
class="java-quote">&quot;, &quot;</span>, c, <span
class="java-quote">&quot;, &quot;</span>,e;</code></pre>

<h3>Výstup překladače</h3>

<p>Zde je text, který vygeneruje překladač s předchozím zdrojovým kódem
na vstupu. Na řádcích 24 až 27 je ukázka čtení ze standardního vstupu.
Podle datového typu proměnné, do které chceme načíst data od uživatele,
se vypíše příslušná hláška a uživatel musí příslušnou hodnotu
zapsat do konzole (při špatné hodnotě se vypíše chybové hlášení a
překlad bude ukončen).</p>

<pre
class="normal"><code>&lt;Konstanty&gt;
10: 10
1.25: 1.25

&lt;Promenne&gt;
s(Abcd): Abcd
d(3.14159e2): 3.14159e2
n(-500): -500

k(true): true

&lt;Vyrazy&gt;
2+3*5(17): 17
17 / 3(5): 5
17 % 3(2): 2
2.5*2.5/6.25(1.0): 1.0
1.5*3(4.5): 4.5
abc+def (abcdef): abcdef

&lt;Poznamky&gt;
&lt;Kompatibilita&gt;
y (10.0): 10.0
&lt;Vstup dat - a,b#,c$&gt;
Zapis do promenne "a" (typ "int"): 10
Zapis do promenne "b" (typ "float"): 15.55
Zapis do promenne "c" (typ "String"): hello word
Zapis do promenne "e" (typ "boolean"): false
a,b,c,e: 10, 15.55, hello word, false</code></pre>

<p>Překladač určitě není bezchybný, ale funguje podle zadané specifikace.
Pokud vás toto téma zaujalo, tak si určitě z výše uvedeného odkazu
stáhněte zdrojový kód, ze kterého můžete pochopit základní principy
práce s generátorem překladačů JavaCC.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.petrkaspar.cz/clanek/interpretacni-prekladac-implementovany-v-jave-s-vyuzitim-javacc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Demonstrace stínování v Javě 3D</title>
		<link>http://blog.petrkaspar.cz/clanek/demonstrace-stinovani-v-jave-3d/</link>
		<comments>http://blog.petrkaspar.cz/clanek/demonstrace-stinovani-v-jave-3d/#comments</comments>
		<pubDate>Mon, 07 Jan 2008 19:52:04 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Škola]]></category>

		<guid isPermaLink="false">http://blog.petrkaspar.cz/clanek/demonstrace-stinovani-v-java-3d/</guid>
		<description><![CDATA[
<p>Po prvním projektu do ZPG dávám k dispozici také zdrojové kódy
druhého projektu.</p>
]]></description>
			<content:encoded><![CDATA[
<p>Po <a href="/clanek/rasterizace-kruznice-v-jave/">prvním projektu</a> do
<acronym title="Základy počítačové grafiky">ZPG</acronym> dávám
k dispozici také zdrojové kódy druhého projektu. Stejně jako u prvního
projektu bylo zadání vytvořit Java Applet, který bude demonstrovat nějaký
algoritmus z oblasti počítačové grafiky. Konkrétní téma jsme si opět
měli vymyslet sami.</p>

<div class="centrovani"><img src="http://blog.petrkaspar.cz/wp-content/zpg2.jpg"
alt="Demonstrace stínování v Java 3D" /></div>

<p>Tento program slouží k demonstraci stínování. K dispozici jsou
2 metody – Gouraudovo a konstantní stínování. Z dalších možností
uvedu například možnost zapínat a vypínat antialiasing, možnost ovládat
scénu myší, možnost měnit jednotlivé barvy objektů, světel atd…
Původním plánem bylo veškeré stínování počítat ručně, ale z důvodu
nedostatku času jsem použil metody implementované v Javě 3D. Popravdě jsem
od tohoto projektu velké hodnocení neočekával, protože to je vlastně jen
použití API Java 3D, skoro nic tam ručně nevypočítávám, navíc je to
programované strašně narychlo (deadline byl v neděli o půlnoci, začal
jsem v soboru večer). Výsledné hodnocení však předčilo mé
očekávání, dostal jsem dokonce nějaký bodík navíc, a pokud bych
implementoval ještě osvětlení Phongovou metodou, bylo by
ještě větší.</p>

<p>Stejně jako minule si tento applet můžete <a
href="/data/demonstrace-stinovani/spustitelna-verze/">spustit</a> (musíte mít
nainstalovanou Javu 3D) přímo na těchto stránkách nebo stáhnout <a
href="http://blog.petrkaspar.cz/download.php?soubor=2"
title="Rasterizace kružnice applet">celý projekt</a> včetně zdrojových
kódů, uživatelské a programátorské dokumentace a vlastního spustitelného
appletu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.petrkaspar.cz/clanek/demonstrace-stinovani-v-jave-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rasterizace kružnice v Javě</title>
		<link>http://blog.petrkaspar.cz/clanek/rasterizace-kruznice-v-jave/</link>
		<comments>http://blog.petrkaspar.cz/clanek/rasterizace-kruznice-v-jave/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 11:07:21 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Škola]]></category>

		<guid isPermaLink="false">http://blog.petrkaspar.cz/clanek/rasterizace-kruznice-v-jave/</guid>
		<description><![CDATA[
<p>Minulý týden jsem úspěšně odevzdal projekt do ZPG. Zadání bylo
naprogramovat Java Applet, který bude demonstrovat nějaký algoritmus
z počítačové grafiky. Applet měl být zpracován tak, aby se dal využít
jako ukázkový příklad v tomto předmětu v dalších letech. Vymyslel jsem
si téma na demonstraci různých metod rasterizace kružnice (výpočet polohy
jednotlivých bodů v rastru). Tím jsem se částečně […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Minulý týden jsem úspěšně odevzdal projekt do <acronym
title="Základy počítačové grafiky">ZPG</acronym>. Zadání bylo
naprogramovat Java Applet, který bude demonstrovat nějaký algoritmus
z počítačové grafiky. Applet měl být zpracován tak, aby se dal využít
jako ukázkový příklad v tomto předmětu v dalších letech.</p>

<div class="centrovani"><img
src="http://blog.petrkaspar.cz/wp-content/schranka04.gif"
alt="Screenshot appletu" /></div>

<p>Vymyslel jsem si téma na demonstraci různých metod rasterizace kružnice
(výpočet polohy jednotlivých bodů v rastru). Tím jsem se částečně
zabýval už v bakalářce, ale o tom až jindy… Celkem jsou v mém appletu
k dispozici 4 metody rasterizace. První tři vycházejí z obecné rovnice
kružnice a liší se pouze způsobem vykreslováním (2, 4 a 8souměrné).
Poslední pracuje na principu Bresenhamova algoritmu a je nejpřesnější,
jelikož pracuje pouze s celočíselnou aritmetikou a nedochází proto
z nepřesnostem vlivem zaokrouhlování. Applet má i další funkce, např.
možnost měnit velikost a odstín mřížky, nastavení barev kružnic,
zobrazení pomocných os a další.</p>

<p>Pokud by měl někdo zájem, tak na této stránce si může <a
href="/data/rasterizace-kruznice/spustitelna-verze/">spustit applet</a>.
Stáhnout si můžete také <a
href="http://blog.petrkaspar.cz/download.php?soubor=1"
title="Rasterizace kružnice applet">celý projekt</a> včetně zdrojových
kódů, uživatelské a programátorské dokumentace a vlastního spustitelného
appletu (lze spouštět i jako Java aplikaci).</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.petrkaspar.cz/clanek/rasterizace-kruznice-v-jave/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
