<?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>Martin Bouška &#187; &#187; php</title>
	<atom:link href="https://www.bouska.biz/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bouska.biz</link>
	<description>... něco málo z IT světa</description>
	<lastBuildDate>Mon, 09 Jun 2025 08:02:54 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.3</generator>
	<item>
		<title>Billing System</title>
		<link>https://www.bouska.biz/billing-system/</link>
		<comments>https://www.bouska.biz/billing-system/#comments</comments>
		<pubDate>Sat, 14 Dec 2013 20:34:07 +0000</pubDate>
		<dc:creator><![CDATA[bouskam]]></dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[MCV]]></category>
		<category><![CDATA[telco]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.bouska.biz/?p=251</guid>
		<description><![CDATA[Jedná se o MVC aplikaci napsanou v PHP 5.3 Použil jsem Zend Framework 1 a to zejména z důvodu dobré dostupnosti dokumentace a literatury. Další aplikace ale už budu raději vyvíjet v nette nebo jiném frameworku, neboť u Zend-u jsem narazil na dost nečekané a otravné limity zejména v oblasti spolupráce s Ajax, jquery, přizpůsobení &#8230; </p><p><a class="more-link block-button" href="https://www.bouska.biz/billing-system/">Pokračovat ve čtení &#187;</a>]]></description>
				<content:encoded><![CDATA[<p><span style="font-size: 12px; line-height: 18px;">Jedná se o MVC aplikaci napsanou v PHP 5.3</span></p>
<p><span style="font-size: 12px; line-height: 18px;">Použil jsem Zend Framework 1 a to zejména z důvodu dobré dostupnosti dokumentace a literatury. Další aplikace ale už budu raději vyvíjet v nette nebo jiném frameworku, neboť u Zend-u jsem narazil na dost nečekané a otravné limity zejména v oblasti spolupráce s Ajax, jquery, přizpůsobení vzhledu, atd.</span></p>
<p>Dále také používám MYSQL 5.5, Apache 2 a APC resp. memcached daemona.</p>
<p>Vstupem jsou textové (csv) tabulky jednotlivých uskutečněných volání (volající, volaný čas zahájení, čas ukončení). <span style="font-size: 12px; line-height: 18px;">Výstupem jsou faktury v pdf a xml pro jednotlivé koncové zákazníky, dále seznamy jednotlivých uskutečněných volání konkrétního uživatele, jež lze v html prohlížet, filtrovat, sumarizovat a řadit podle různých sloupců.</span></p>
<p>&nbsp;</p>
<p><span id="more-251"></span></p>
<p>Tento projekt je stále ještě ve stádiu vývoje, nebyl zatím předán zadavateli, takže ještě nemohu zveřejňovat veškeré podrobnosti, na které bych chtěl upozornit. Jakmile to bude možné, tento text rozšířím o konkrétní ukázky a zajímavosti, na které jsem v průběhu vývoje této aplikace narazil.</p>
<div></div>
<div>Srdcem vlastní aplikace je výpočet a kontrola cen, jež se z důvodu úspory potřebného výpočetního výkonu provádí najednou a využívám tak efektivně cachování ve všech rovinách výpočtu.</div>
<div><span style="font-size: 12px; line-height: 18px;">postup výpočtu:</span></div>
<ul>
<li><span style="font-size: 12px; line-height: 18px;">Podle volajícího ID (číslo A)  se načtou data uživatele a patřičný ceník uživateli přiřazený.</span></li>
<li><span style="font-size: 12px; line-height: 18px;">v ceníku se vyhledá tarif odpovídající předčíslí s největším stupněm shody s volaným ID (číslo B)</span></li>
<li><span style="font-size: 12px; line-height: 18px;">každý ceník má cca 6000 řádků, tedy z důvodu urychlení využíváme cachování pomocí jedné z více možných metod memcached, APC, RAM, RAMDISK</span></li>
<li><span style="font-size: 12px; line-height: 18px;">podle Timestampu volání se určí, zda se jedná o silný či slabý provoz (svátky, Vánoce, Velikonoce, víkendy atd)</span></li>
<li><span style="font-size: 12px; line-height: 18px;">na základě údajů z ceníku se určí také tarifikace, která je rozdílná pro různé kategorie uživatelů a také pro různé destinace volání (60+60, 60+1, 30+1, 15+15, 1+1)</span></li>
<li><span style="font-size: 12px; line-height: 18px;">spočítá se výsledná cena</span></li>
<li><span style="font-size: 12px; line-height: 18px;">musí se ošetřit přechody mezi vysokým a nízkým tarifem v rámci jednoho hovoru</span></li>
<li><span style="font-size: 12px; line-height: 18px;">musí se ošetřit různé chytáky ve speciálních tarifech (linky 810, 900,906, 976, 1188, 1301 apod)</span></li>
<li><span style="font-size: 12px; line-height: 18px;">kontroluje se minimální marže (koncová cena pro zákazníka vs. spojovací poplatky operátorům a poskytovatelům)</span></li>
<li>v případě chyby (nenalezen uživatel nenalezen tarif atd) nejsou faktury vygenerovány a vše se vrátí ze zálohy do původního stavu</li>
</ul>
<p>&nbsp;</p>
<p>další je myslím nejlépe patrné ze screenshotů:</p>

<div class="ngg-imagebrowser" id="ngg-imagebrowser-1-251">

	<h3>Uživatel + JS</h3>

	<div class="pic">
<a href="https://www.bouska.biz/wp-content/gallery/boubill/jscipt.png" title="Editace uživatele. Verifikace polí formuláře pomocí javascriptu." class="ngg-fancybox" rel="boubill">
	<img alt="Uživatel + JS" src="https://www.bouska.biz/wp-content/gallery/boubill/jscipt.png"/>
</a>
</div>
	<div class="ngg-imagebrowser-nav"> 
		<div class="back">
			<a class="ngg-browser-prev" id="ngg-prev-28" href="https://www.bouska.biz/billing-system/?pid=28">&#9668; Back</a>
		</div>
		<div class="next">
			<a class="ngg-browser-next" id="ngg-next-4" href="https://www.bouska.biz/billing-system/?pid=4">Next &#9658;</a>
		</div>
		<div class="counter">Picture 1 of 19</div>
		<div class="ngg-imagebrowser-desc"><p>Editace uživatele. Verifikace polí formuláře pomocí javascriptu.</p></div>
	</div>	

</div>	


<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.bouska.biz/billing-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>systém na správu dokumentů a DWG výkresů</title>
		<link>https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/</link>
		<comments>https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 19:26:52 +0000</pubDate>
		<dc:creator><![CDATA[bouskam]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sharepoint-like]]></category>
		<category><![CDATA[dwg]]></category>
		<category><![CDATA[LISP]]></category>

		<guid isPermaLink="false">http://www.bouska.biz/?p=284</guid>
		<description><![CDATA[SYSTÉM NA SPRÁVU DWG DOKUMENTŮ byl plánován jako odlehčená náhrada za Ms. Sharepoint a podobné systémy, bez administrativní části, bez správy a hierarchie uživatelů, pouze jako takové lepší uložiště, které bude umět vyhledávat, řadit, upravovat zejména soubory DWG, neboť s těmi si klasický Sharepoint, neřku-li windows search indexer bez drahých komerčních doplňků prostě neporadí. Jedná &#8230; </p><p><a class="more-link block-button" href="https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/">Pokračovat ve čtení &#187;</a>]]></description>
				<content:encoded><![CDATA[<p><strong>SYSTÉM NA SPRÁVU DWG DOKUMENTŮ</strong></p>
<p>byl plánován jako odlehčená náhrada za Ms. Sharepoint a podobné systémy, bez administrativní části, bez správy a hierarchie uživatelů, pouze jako takové lepší uložiště, které bude umět vyhledávat, řadit, upravovat zejména soubory DWG, neboť s těmi si klasický Sharepoint, neřku-li windows search indexer bez drahých komerčních doplňků prostě neporadí.</p>
<p><span style="font-size: 12px; line-height: 18px;">Jedná se o aplikaci složenou z několika komponent vytvořených v několika různých jazycích.<span id="more-284"></span></span></p>
<p><strong>frontend</strong> je PHP, jedná se o jednoduchou aplikaci s jedním kontrolerem a dvěma pohledy. J<span style="font-size: 12px; line-height: 18px;">ejí hlavní funkcí je zobrazovat obsah, řadit řádky a případně vyhledat data podle zadání klíčového slova ve formuláři.</span></p>
<p><span style="font-size: 12px; line-height: 18px;">S uživateli komunikuje pouze jednosměrně, data se nevkládají přes tuto frontendovou aplikaci, ale přes</span></p>
<p><strong>backend , </strong>jež tvoří BASH / AWK skript, spouštěný pravidelně po 10ti minutách (cronem) a jehož úkolem je sebrat metadata o nových či upravených souborech v uložišti a aktualizovat databázi těchto metadat (mysql)</p>
<p>o generování metadat a jejich &#8220;dolování&#8221; se stará <strong>&#8220;plugin&#8221;</strong> vytvořený z důvodu kompatibility ve speciální odrůdě LISPu, tzv. AutoLispu. T<span style="font-size: 12px; line-height: 18px;">en se spouští přímo v CAD aplikaci (Intellicad, Autocad či jiném 2D kompatibilním CADu s podporou AutoLISPu). Pro originál AutoCAD od Autodesku by bylo možné tento plugin napsat také jako makro <strong>VBA. </strong> Ovšem podpora VBA není, pokud je mi známo, implementována u žádné verze IntelliCadu (ProgeCAD, BricsCAD, ZWCAD atd) , tedy je nutné při nasazení  těchto programů zvolit LISP.</span></p>
<p>Metadata by bylo možné generovat i mimo vlastní CAD aplikaci, ale nastává pak problém se čtením naprosto uzavřeného DWG formátu, jež je bitovým formátem s tokem dat několikrát rekurzivně komprimovaným, s CRC ochranou a redundancí. A navíc každý druhý rok vychází nová DWG specifikace, takže by se musela vytvořit i nová verze tohoto DWG extraktoru.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><span style="font-size: 12px; line-height: 18px;"> několik screenshotů, ze kterých bude vše myslím jasné:</span></p>

<div class="ngg-imagebrowser" id="ngg-imagebrowser-2-284">

	<h3>1</h3>

	<div class="pic">
<a href="https://www.bouska.biz/wp-content/gallery/spravadwg/1.png" title="" class="ngg-fancybox" rel="spravadwg">
	<img alt="1" src="https://www.bouska.biz/wp-content/gallery/spravadwg/1.png"/>
</a>
</div>
	<div class="ngg-imagebrowser-nav"> 
		<div class="back">
			<a class="ngg-browser-prev" id="ngg-prev-35" href="https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/?pid=35">&#9668; Back</a>
		</div>
		<div class="next">
			<a class="ngg-browser-next" id="ngg-next-31" href="https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/?pid=31">Next &#9658;</a>
		</div>
		<div class="counter">Picture 1 of 6</div>
		<div class="ngg-imagebrowser-desc"><p> </p></div>
	</div>	

</div>	


<p>tento systém jsem vyvinul pro mého zaměstavatele v rámci mojí pracovní činnosti</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.bouska.biz/system-na-spravu-dokumentu-a-dwg-vykresu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toaster MP3</title>
		<link>https://www.bouska.biz/toaster-mp3/</link>
		<comments>https://www.bouska.biz/toaster-mp3/#comments</comments>
		<pubDate>Fri, 24 Aug 2012 09:53:20 +0000</pubDate>
		<dc:creator><![CDATA[bouskam]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[mp3]]></category>

		<guid isPermaLink="false">http://www.bouska.biz/?p=33</guid>
		<description><![CDATA[Po nejake dobe nastaly v nasi kancelari ukrutne hadky o to, kdo bude mit pripojene bednicky a kdo bude mit sluchatka. Uz jsem se na to nemohl koukat, a tak jsem hledal reseni. Nalezl jsem php frontend k prehravaci mpg123 jmenemToasterMP3. Bohuzel mel vsak tu chybu, ze byl vytvoren v roce 2001 a urcen pro &#8230; </p><p><a class="more-link block-button" href="https://www.bouska.biz/toaster-mp3/">Pokračovat ve čtení &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Po nejake dobe nastaly v nasi kancelari ukrutne hadky o to, kdo bude mit pripojene bednicky a kdo bude mit sluchatka. Uz jsem se na to nemohl koukat, a tak jsem hledal reseni. Nalezl jsem php frontend k prehravaci mpg123 jmenem<strong>ToasterMP3</strong>. Bohuzel mel vsak tu chybu, ze byl vytvoren v roce 2001 a urcen pro php3. Nastesti nebylo prilis slozite prizpusobit jej pro pouziti v dnesni dobe.<br />
K behu je potreba nainstalovat mpg123, apache, php5, perl, amixer, a eventuelne jeste ogg123. Vsechny zminene utility a demoni jsou beznou socasti oblibenych distribuci (v mem pripade Mandriva)</p>
<p><span id="more-33"></span><br />
Co se tyce nastaveni systemu, je potreba vypnout v php.ini safemode = off, a nastavit pristupova prava k zvukove karte . Vseobecne se to doporucuje zajistit prirazenim uzivatelu do skupiny &#8220;sound&#8221; a nebo lze nastavit opravneni pro pristup k /dev/dsp (alsa) <em>[pripadne /dev/audio (oss)]</em> a ovladani mixeru  na 666.</p>
<p><img class="alignnone" src="http://www.bouska.biz/linux/toastermp3/toastermp3.jpg" alt="" width="831" height="571" /></p>
<p>&nbsp;</p>
<p>Vlastni toaster tak, jak jsem jej upravil, najdete zde: <a href="http://bouska.biz/linux/toastermp3/toastermp3.zip">http://bouska.biz/linux/toastermp3/toastermp3.zip</a><br />
staci vse rozbalit a nastavit spravnou cestu v konfiguracnich souborech a v souboru player.pl<br />
ma funkce razeni souboru do fronty, primy poslech konkretniho souboru, shuffle playlistu, rizeni hlasitosti, start / stop a zobrazeni aktualne prehravane mp3ky.</p>
<p>&nbsp;</p>
<p>navod k nastaveni atd najdete zde:  <a title="readme" href="http://bouska.biz/linux/toastermp3/README.txt">http://bouska.biz/linux/toastermp3/readme.txt</a></p>
<p>&nbsp;</p>
<blockquote><p><strong>pozn. :  je to už pár let, jedná se ještě o procedurální, neobjektový kód převzatý z původní php3 verze. Dnes už překonaná záležitost</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>https://www.bouska.biz/toaster-mp3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.291 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2026-10-12 19:33:15 -->

<!-- Compression = gzip -->