<?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>IT blog &#187; programování</title>
	<atom:link href="http://szj.cz/tag/programovani/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Dva tipy jak při vývoji pohodlně testovat emaily</title>
		<link>http://szj.cz/dva-tipy-jak-pri-vyvoji-pohodlne-testovat-emaily/</link>
		<comments>http://szj.cz/dva-tipy-jak-pri-vyvoji-pohodlne-testovat-emaily/#comments</comments>
		<pubDate>Sun, 18 Aug 2013 12:05:13 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Mailinator]]></category>
		<category><![CDATA[programování]]></category>
		<category><![CDATA[vývoj]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=821</guid>
		<description><![CDATA[Možná to také znáte. Programujete webovou aplikaci a potřebujete otestovat širokou škálu emailových zpráv, které se odesílají po vykonání nejrůznějších akcí, a to z pohledu několika uživatelských rolí. Přináším proto dva užitečné tipy, jak uvedenou činnost co nejvíce zjednodušit. Díky nim se totiž vyhnete nutnosti vytvořit emailovou schránku ještě před odesláním dané zprávy. Mailinator První [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2013/08/email-.png"><img class="alignleft size-full wp-image-823" title="email" src="http://szj.cz/wp-content/uploads/2013/08/email-.png" alt="Email" width="128" height="128" /></a>Možná to také znáte. Programujete webovou aplikaci a potřebujete otestovat širokou škálu emailových zpráv, které se odesílají po vykonání nejrůznějších akcí, a to z pohledu několika uživatelských rolí. Přináším proto dva užitečné tipy, jak uvedenou činnost co nejvíce zjednodušit. Díky nim se totiž vyhnete nutnosti vytvořit emailovou schránku ještě před odesláním dané zprávy.</p>
<h2>Mailinator</h2>
<p>První službu jsem již na tomto webu zmiňoval. <a href="http://www.mailinator.com/">Mailinator</a> automaticky přivede k životu danou schránku a do ní zprávu doručí. S klidným svědomím jednoduše pošlete email na <strong>naprosto-cokoliv@mailinator.com</strong>, a poté ho zobrazíte na adrese <a href="http://naprosto-cokoliv.mailinator.com">naprosto-cokoliv.mailinator.com</a>. Donedávna mi vadil ne příliš spolehlivý způsob zobrazování emailů v HTML. Mailinator však nedávno prošel faceliftem, který kromě obměny vzhledu přinesl ajaxové načítání obsahu schránky a hlavně podporu HTML zpráv. Vše funguje bez nutnosti předchozí registrace.</p>
<h2>Gmail</h2>
<p>K testovacím účelům lze překvapivě použít i Gmail, konkrétně jeden účet s jedinou emailovou adresou. Webová aplikace však u uživatelských účtů vyžaduje rozdílné emaily. Jak na to? Stačí používat tečky. Pokud se do webového rozhraní služby Gmail přihlašujete pomocí účtu jmeno.prijmeni@gmail.com, můžete jako svůj email uvádět <strong>jmenoprijmeni@gmail.com</strong>, <strong>j.m.e.n.o.p.r.i.j.m.e.n.i@gmail.com</strong> nebo <strong>jme.no.prij.meni@gmail.com</strong>. Nevěříte? Skutečně tak tomu je, a <a href="https://support.google.com/mail/answer/10313?hl=cs">tvrdí to i Google</a>, klidně si to vyzkoušejte. Nápověda uvádí tyto konkrétní tři případy, které mluví za vše:</p>
<ul>
<ul>
<li>homerjsimpson@gmail.com = hom.er.j.sim.ps.on@gmail.com</li>
<li>homerjsimpson@gmail.com = HOMERJSIMPSON@gmail.com</li>
<li>homerjsimpson@gmail.com = Homer.J.Simpson@gmail.com</li>
</ul>
</ul>
<p>Nevýhodou tohoto řešení je však nutnost pamatovat si rozmístění teček pro jednotlivé uživatelské účty. Pokud vsadíte na Mailinator, vyhnete se uvedenému problému díky adresám typu <strong>administrator@mailinator.com</strong>, <strong>zakaznik@mailinator.com</strong>&nbsp;nebo&nbsp;<strong>dodavatel@mailinator.com</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/dva-tipy-jak-pri-vyvoji-pohodlne-testovat-emaily/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Úvodní poznatky z programování pro Android</title>
		<link>http://szj.cz/uvodni-poznatky-z-programovani-pro-android/</link>
		<comments>http://szj.cz/uvodni-poznatky-z-programovani-pro-android/#comments</comments>
		<pubDate>Fri, 07 Sep 2012 16:15:14 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programování]]></category>
		<category><![CDATA[Subclipse]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=412</guid>
		<description><![CDATA[Tvořit aplikace pro mobilní zařízení mě vždy lákalo, a proto když se tato příležitost objevila na obzoru, tak jsem ji samozřejmě využil. Na následujících řádcích popíši nejen skutečnosti, které mě během programování překvapily, ale také přinesu řadu tipů, jenž osobám se zájmem o vývoj pro Android patrně stejně jako v mém případě pomohou. Vývojové prostředí [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tvořit aplikace pro mobilní zařízení mě vždy lákalo, a proto když se tato příležitost objevila na obzoru, tak jsem ji samozřejmě využil. Na následujících řádcích popíši nejen skutečnosti, které mě během programování překvapily, ale také přinesu řadu tipů, jenž osobám se zájmem o vývoj pro Android patrně stejně jako v mém případě pomohou.</p>
<h2>Vývojové prostředí</h2>
<p>Prakticky standardizovanou volbu symbolizuje open source IDE Eclipse, jenž dokonce doporučuje i Google. Toto vývojové prostředí však samo o sobě pro tvorbu aplikací nepostačuje, potřebovat budete i <strong>SDK pro Android</strong> a speciální <strong>ADT Plugin</strong>. Potěšila mě bezproblémová instalace na operačním systému Linux. Problémy však začaly po rozšíření o <strong>Subclipse</strong> starající se o snadné použití SVN (systém pro verzování zdrojových kódů). Nalezení správného kompatibilního seskupení Javy a IDE se všemi pluginy mi nejednu hodinu zabralo. Jak jsem však později zjistil, tyto potíže trápilo již mnoho osob přede mnou. Narazil jsem dokonce i na stylový <a title="MEME komiks" href="http://szj.cz/vytvorte-si-vlastni-meme-komiks/">MEME komiks</a>, jenž celou záležitost parodoval.</p>
<h2>Zdroje informací v češtině</h2>
<p>Mnoho užitečných postupů odkrývá v přehledném tutoriálu portál <a href="http://developer.android.com">developer.android.com</a>. Studování článků v angličtině se nebráním, myslel jsem však, že by moji cestu k první aplikaci mohlo výrazně usnadnit seznámení v češtině. Během probíhající akce, kdy se nakladatelství Computer Press potýkalo s inventurou a pozdrželo odesílání zásilek, jsem objednal knihu <a href="http://knihy.cpress.cz/android-2.html">Android 2</a>. K ní mám dohromady jen dvě výhrady. Za zbytečné považuji úvodní seznámení autora s kompilací v prostředí příkazového řádku. Jak jsem již zmínil, Eclipse představuje nepsanou normu. Druhá výtka směřuje k překladu, jenž však patrně většině vyhovuje. Cílené překládání všech výrazů mě několikrát spíše zmátlo, než aby pomohlo. V případě záměny <em>activity</em> za <em>aktivita</em> nejde o nic zásadního, u termínu <em>záměr</em> (původne <em>intent</em>) ve specifickém kontextu jsem se však zpočátku musel skutečně zamyslet, abych význam odstavce pochopil. Ve všech jiných ohledech však publikace přebírá formu spolehlivého průvodce.</p>
<h4>Příchozí dotazy:</h4><ul><li>programujeme hry pro android 4 pdf</li></ul>]]></content:encoded>
			<wfw:commentRss>http://szj.cz/uvodni-poznatky-z-programovani-pro-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSON – multiplatformní zápis dat</title>
		<link>http://szj.cz/json-%e2%80%93-multiplatformni-zapis-dat/</link>
		<comments>http://szj.cz/json-%e2%80%93-multiplatformni-zapis-dat/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 10:00:31 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Ostatní]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programování]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=178</guid>
		<description><![CDATA[Během prozkoumávání funkcí API od SEOmoz jsem se seznámil s výborným způsobem přenosu informací mezi dvěma subjekty. V mém případě šlo o skript schopný zpracovat výsledky na základě odpovědi, kterou získal od serveru. Řešení se označuje jako JSON, což znamená JavaScript Object Notation. Neznamená to však, že by údaje bylo možno zpracovat pouze s pomocí [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2012/02/json.png"><img class="alignleft size-full wp-image-183" title="json" src="http://szj.cz/wp-content/uploads/2012/02/json.png" alt="JSON" width="128" height="128" /></a>Během prozkoumávání funkcí API od SEOmoz jsem se seznámil s výborným způsobem přenosu informací mezi dvěma subjekty. V mém případě šlo o skript schopný zpracovat výsledky na základě odpovědi, kterou získal od serveru. Řešení se označuje jako <strong>JSON</strong>, což znamená JavaScript Object Notation. Neznamená to však, že by údaje bylo možno zpracovat pouze s pomocí JavaScriptu, spíše je tomu naopak. Já jsem využil PHP, JSON však podporují i jiné jazyky. A čím vlastně popisovaný formát uchování dat vyniká? Jde o schopnost přenášet nejen řetězce, ale rovnou celé objekty či pole. Populární CSV se dle mého názoru na tento úkol příliš nehodí, jeho doménu symbolizují spíše údaje z databáze či tabulky. Výsledek po konverzi přitom získá formu běžného řetězce. Vypadat může například takto:</p>
<pre class="brush: php; title: ; notranslate">{&quot;fmrp&quot;:3.31508823980473,&quot;fmrr&quot;:8.71399339003802e-10,&quot;pda&quot;:29.96283221096798,&quot;ueid&quot;:42,&quot;ufq&quot;:&quot;szj.cz/&quot;,&quot;uid&quot;:120,&quot;umrp&quot;:3.851694829321838,&quot;umrr&quot;:3.447144837370461e-11,&quot;upa&quot;:37.82389310886856,&quot;upl&quot;:&quot;szj.cz/&quot;,&quot;us&quot;:200,&quot;ut&quot;:&quot;szj.cz | internet, novinky, linux, programování&quot;,&quot;uu&quot;:&quot;szj.cz/&quot;}</pre>
<p>Obrovskou výhodu přitom představuje možnost přečíst jednotlivé složky bez nutnosti jakékoliv předchozí programové úpravy. Stačí proto jediný pohled a ihned získáte ponětí o tom, s jakými informace máte tu čest.</p>
<h2>Další JSON vlastnosti</h2>
<p>Začal jsem se o celou problematiku blíže zajímat a záhy jsem zjistil, že při používání JSON se musí dbát pouze na jedinou věc. V samotném zápisu nenaleznete údaj nesoucí použité kódování. To znamená, že jej programátor musí jasně specifikovat. Pakliže tak učiněno není, s největší pravděpodobností půjde o UTF-8. Toto kódování se totiž považuje za výchozí.</p>
<h2>Zpracování v PHP</h2>
<p>Když jsem již otázku převodu dat zpět do použitelné podoby musel vyřešit, určitě nezaškodí, když předvedu mnou aplikovaný postup v případě PHP. Nejde přitom o nic složitého, stačí použít vhodnou funkci. Ta se jmenuje <strong>json_decode</strong> a jako první parametr očekává vstupní data. Ovlivnit rovněž lze, zda jako výstup dostaneme objekt nebo asociativní pole. Rozhodl jsem se pro druhou variantu, a proto na místě druhého parametru vidíte <strong>true</strong>.</p>
<pre class="brush: php; title: ; notranslate">echo var_dump(json_decode($json, true));</pre>
<pre class="brush: php; title: ; notranslate">array(13) {
  [&quot;fmrp&quot;]=&gt;
  float(3.3150882398047)
  [&quot;fmrr&quot;]=&gt;
  float(8.713993390038E-10)
  [&quot;pda&quot;]=&gt;
  float(29.962832210968)
  [&quot;ueid&quot;]=&gt;
  int(42)
  [&quot;ufq&quot;]=&gt;
  string(7) &quot;szj.cz/&quot;
  [&quot;uid&quot;]=&gt;
  int(120)
  [&quot;umrp&quot;]=&gt;
  float(3.8516948293218)
  [&quot;umrr&quot;]=&gt;
  float(3.4471448373705E-11)
  [&quot;upa&quot;]=&gt;
  float(37.823893108869)
  [&quot;upl&quot;]=&gt;
  string(7) &quot;szj.cz/&quot;
  [&quot;us&quot;]=&gt;
  int(200)
  [&quot;ut&quot;]=&gt;
  string(49) &quot;szj.cz | internet, novinky, linux, programování&quot;
  [&quot;uu&quot;]=&gt;
  string(7) &quot;szj.cz/&quot;
}</pre>
<p>K samotným údajům se poté pohodlně dostaneme přes patřičný index.</p>
<pre class="brush: php; title: ; notranslate">$pole = json_decode($json, true);
echo $pole[&quot;fmrp&quot;];</pre>
<pre class="brush: php; title: ; notranslate">//Výpis
3.31508823980473</pre>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/json-%e2%80%93-multiplatformni-zapis-dat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qt – menu</title>
		<link>http://szj.cz/qt-%e2%80%93-menu/</link>
		<comments>http://szj.cz/qt-%e2%80%93-menu/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 00:00:55 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[programování]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=106</guid>
		<description><![CDATA[Následující aplikace patří mezi ty jednodušší, dokáže totiž pouze sečíst dvě celá čísla. Mnohem zajímavější však je způsob ovládání. Naučíme se vytvořit klasické menu včetně toolbaru. Práce v designérském režimu Při zakládání nového projektu nezapomeňte, že tentokrát budeme vycházet z třídy QMainWindow. Po otevření vzhledu okna začneme s přidáním dvou prvků line edit a několika [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Následující aplikace patří mezi ty jednodušší, dokáže totiž pouze sečíst dvě celá čísla. Mnohem zajímavější však je způsob ovládání. Naučíme se vytvořit klasické menu včetně <strong>toolbaru</strong>.</p>
<h2>Práce v designérském režimu</h2>
<p>Při zakládání nového projektu nezapomeňte, že tentokrát budeme vycházet z třídy <strong>QMainWindow</strong>. Po otevření vzhledu okna začneme s přidáním dvou prvků <strong>line edit </strong>a několika popisků (<strong>label</strong>). Kompletně vynecháme jakákoliv tlačítka a vrhneme se na ovládací nabídku. Jednoduše vypíšeme názvy jednotlivých položek v menu, které se následně usídlí ve spodní záložce <strong>Action editor</strong>. Po kliknutí na některou z nich se nám otevře okno, ve kterém lze nastavit mnoho užitečných věcí. Konkrétně si ze souboru přidáme vhodnou ikonu. Pokud žádnou nedisponujete, vyzkoušejte tzv. <strong>projekt</strong> <strong>Nuvola</strong>. Jedná se o obsáhlou sadu ikonek v nejpoužívanějších rozměrech uvolněnou pod licencí <strong>LGPL</strong>.</p>
<p><a href="http://szj.cz/wp-content/uploads/2011/11/qt-menu.png"><img class="aligncenter size-full wp-image-107" title="qt-menu" src="http://szj.cz/wp-content/uploads/2011/11/qt-menu.png" alt="Qt - menu" width="367" height="262" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2011/11/qt-rozbalene-menu.png"><img class="aligncenter size-full wp-image-108" title="qt-rozbalene-menu" src="http://szj.cz/wp-content/uploads/2011/11/qt-rozbalene-menu.png" alt="Qt - rozbalené menu" width="367" height="262" /></a></p>
<h2>Horké klávesy</h2>
<p>Vždy se vyplácí aplikaci navrhovat takovým způsobem, aby ji bylo možno ovládat bez pomoci kurzoru myši. Stačí před název položky přidat znak <strong>ampersand</strong> (<strong>&amp;</strong>) a následně lze využít následující písmeno při kombinaci s klávesou <strong>ALT</strong> pro získání kontroly nad programem. Vaši práci ocení například majitelé notebooků, kteří nemají po ruce myš a s touchpadem si příliš nerozumí.</p>
<h2>Toolbar</h2>
<p>Jakmile máte veškeré objekty seskupené v <strong>Action Editoru</strong> nastavené dle vašeho přání, přejděte k vytvoření <strong>toolbaru</strong>. Stačí přetáhnout libovolnou položku na požadované místo v <strong>toolbaru</strong>, který se automaticky nachází pod menu. O správném postupu vás okamžitě ubezpečí přidělená ikonka.</p>
<h2>Zdrojový kód</h2>
<p>Další postup již není nijak náročný. Stačí jen získat údaje z obou <strong>line</strong> <strong>editů</strong>, provést součet a výsledek nastavit jako text patřičnému <strong>labelu</strong>. Nezapomeňte rovněž propojit oba <strong>signály</strong>. Povšimněte si obzvláště slotu <strong>close()</strong>, který se postará o hladké ukončení programu. Nezapomeňte rovněž zajistit zobrazení výsledku získaného během průběhu <strong>secti()</strong> po kliknutí na <strong>Sečíst</strong> v menu.</p>
<p>#include &#8222;hlavniokno.h&#8220;<br />
#include &#8222;ui_hlavniokno.h&#8220;<br />
#include <QIntValidator><br />
#include <QString></p>
<p>HlavniOkno::HlavniOkno(QWidget *parent) :<br />
    QMainWindow(parent),<br />
    ui(new Ui::HlavniOkno)<br />
{<br />
    ui->setupUi(this);<br />
    setWindowTitle(&#8222;Menu&#8220;);</p>
<p>    QIntValidator *val;<br />
    val = new QIntValidator(this);</p>
<p>    ui->le_prvni->setValidator(val);<br />
    ui->le_druhe->setValidator(val);</p>
<p>    connect(ui->action_Secist,SIGNAL(triggered()),this,SLOT(secti()));<br />
    connect(ui->action_Konec,SIGNAL(triggered()),this,SLOT(close()));<br />
}</p>
<p>HlavniOkno::~HlavniOkno()<br />
{<br />
    delete ui;<br />
}</p>
<p>void HlavniOkno::secti(){<br />
int prvni,druhe,vysledek;<br />
QString pom;<br />
prvni = ui->le_prvni->text().toInt();<br />
druhe = ui->le_druhe->text().toInt();</p>
<p>vysledek = prvni + druhe;</p>
<p>ui->l_vysledek->setText(pom.setNum(vysledek));</p>
<p>}</p>
<p>&nbsp;</p>
<p>#ifndef HLAVNIOKNO_H<br />
#define HLAVNIOKNO_H</p>
<p>#include <QMainWindow></p>
<p>namespace Ui {<br />
    class HlavniOkno;<br />
}</p>
<p>class HlavniOkno : public QMainWindow<br />
{<br />
    Q_OBJECT</p>
<p>public:<br />
    explicit HlavniOkno(QWidget *parent = 0);<br />
    ~HlavniOkno();</p>
<p>private:<br />
    Ui::HlavniOkno *ui;<br />
public slots:<br />
    void secti();<br />
};</p>
<p>#endif // HLAVNIOKNO_H</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
