<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[DIY Electronic projects - Desktop]]></title>
		<link>https://forum.yu3ma.net/</link>
		<description><![CDATA[DIY Electronic projects - https://forum.yu3ma.net]]></description>
		<pubDate>Wed, 29 Apr 2026 21:39:23 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Kako pokrenuti AI‑modele offline | LLAMA | LMstudio | Pinokio]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=3055</link>
			<pubDate>Sat, 04 Oct 2025 12:02:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=3055</guid>
			<description><![CDATA[Pozdrav svima!<br />
<br />
Danas ću da vam pokažem kako možete da iskoristite moć svog računara sa novijom GPU (npr. NVIDIA RTX 5060 Ti) i da radite sa različitim AI modelima bez interneta.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Ne morate da plaćate cloud servise, a uz to dobijate veću privatnost i brže reakcije.</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Zašto je offline pokretanje korisno</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Privatnost</span>  - Svi podaci ostaju na vašem hardveru – nema slanja podataka serverima treće strane.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Brzina Lokalna komunikacija</span> (GPU ↔ CPU) je mnogo brža od mrežnih zahteva.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Nema dodatne naknade</span> - Jednom kada ste instalirali modele, ne plaćate nikakve mesečne takse.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Kontrola nad modelom</span> - Možete da menjate konfiguracije, fine‑tune-ujete ili dodajete nove funkcionalnosti po vašoj želji.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Šta vam je potrebno</span><br />
<ul class="mycode_list"><li>RTX 5060 Ti (ili bilo koji GPU sa barem 8 GB VRAM).<br />
</li>
<li>Llama i Stable Diffusion XL mogu da rade na 16 GB‑u, ali će biti sporiji ili će se koristiti CPU.<br />
</li>
<li>Windows / Linux/macOS, 16+GB RAM, 50+GB HD<br />
</li>
<li>Python (verzija 3.10+), ostale novije verzije nisu kompatibilne ili imaju probleme<br />
</li>
</ul>
<ul class="mycode_list"><li>CUDA Toolkit (ako želite maksimalnu GPU brzinu).<br />
</li>
<li>Najnoviji driver i CUDA 11.x ili 12.x su dovoljni za RTX 5060 Ti.<br />
</li>
<li>Neophodni Python paketi – instalirajte ih kroz pip.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Alati</span><br />
<br />
<span style="font-style: italic;" class="mycode_i">Svaki od ovih alata je dizajniran da radi lokalno (bez klauza o “cloud” pristupu), ali zahteva odgovarajuću konfiguraciju hardvera, biblioteka i okruženja.  U nastavku su kratki opisi i osnovna svrha.</span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">LLaMA – Large Language Model Meta AI</span></span><br />
Open‑source LLM razvijen od strane Meta (Facebook). Dostupan u verzijama 7 B, 13 B, 30 B i 65 B parametara.<br />
Generisanje teksta, chat botovi, automatsko prevođenje, analitika podataka.<br />
Najmanje zahteva u odnosu na velike modele; 7‑13 B varijante mogu raditi na RTX 5060 Ti bez overclockinga (≈16 GB VRAM).<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">LMStudio – Language Model Studio</span></span><br />
GUI aplikacija koja omogućava jednostavno testiranje, fine‑tuning i vizualizaciju bilo kojeg LLM-a (LLaMA, GPT‑NeoX, etc.). <br />
Brzo prototipiranje, analiza performansi, integracija u sopstvene projekte.<br />
Potpuno lokalno, ne zahteva kod; podržava CUDA 12 i GPU akceleraciju<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Pinokio AI</span></span><br />
Lokalni LLM baziran na opt-6.7b arhitekturi, optimizovan za manje memorijske uređaje (12 GB VRAM).<br />
Chat botovi, generisanje koda, asistent u razvoju softvera.<br />
Brža inferencija od većih modela; odličan balans između performansi i resursa na RTX 5060 Ti.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Stable Diffusion XL – Generisanje slika</span></span><br />
Najnovija verzija diffusion modela, sa 1.0B parametara (SD‑XL). Generisanje visokokvalitetnih slika iz teksta, stil transfer, retuširanje.<br />
Omogućava kreiranje profesionalno izgleda slika na PC‑u bez potrebe za cloud‑servisima; GPU akceleracija je ključna.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Zaključak</span><br />
LLaMA, LMStudio, Pinokio AI i Stable Diffusion XL su izvanredni alati za lokalno rad sa AI modelima na RTX 5060 Ti.<br />
Svaki od njih ima specifične prednosti: LLaMA za tekst, LMStudio za GUI prototipove, Pinokio AI za brzinu i manji GPU footprint, SD‑XL za slike visokog kvaliteta.<br />
Sa pravilnom instalacijom i konfiguracijom, sve ove tehnologije mogu da funkcionišu isključivo offline bez dodatnih troškova.<br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46312" loading="lazy"  alt="[Image: attachment.php?aid=46312]" class="mycode_img" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46312" target="_blank" title="">lmstudio.png</a> (Size: 178,49 KB / Downloads: 166)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Pozdrav svima!<br />
<br />
Danas ću da vam pokažem kako možete da iskoristite moć svog računara sa novijom GPU (npr. NVIDIA RTX 5060 Ti) i da radite sa različitim AI modelima bez interneta.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Ne morate da plaćate cloud servise, a uz to dobijate veću privatnost i brže reakcije.</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Zašto je offline pokretanje korisno</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Privatnost</span>  - Svi podaci ostaju na vašem hardveru – nema slanja podataka serverima treće strane.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Brzina Lokalna komunikacija</span> (GPU ↔ CPU) je mnogo brža od mrežnih zahteva.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Nema dodatne naknade</span> - Jednom kada ste instalirali modele, ne plaćate nikakve mesečne takse.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Kontrola nad modelom</span> - Možete da menjate konfiguracije, fine‑tune-ujete ili dodajete nove funkcionalnosti po vašoj želji.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Šta vam je potrebno</span><br />
<ul class="mycode_list"><li>RTX 5060 Ti (ili bilo koji GPU sa barem 8 GB VRAM).<br />
</li>
<li>Llama i Stable Diffusion XL mogu da rade na 16 GB‑u, ali će biti sporiji ili će se koristiti CPU.<br />
</li>
<li>Windows / Linux/macOS, 16+GB RAM, 50+GB HD<br />
</li>
<li>Python (verzija 3.10+), ostale novije verzije nisu kompatibilne ili imaju probleme<br />
</li>
</ul>
<ul class="mycode_list"><li>CUDA Toolkit (ako želite maksimalnu GPU brzinu).<br />
</li>
<li>Najnoviji driver i CUDA 11.x ili 12.x su dovoljni za RTX 5060 Ti.<br />
</li>
<li>Neophodni Python paketi – instalirajte ih kroz pip.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Alati</span><br />
<br />
<span style="font-style: italic;" class="mycode_i">Svaki od ovih alata je dizajniran da radi lokalno (bez klauza o “cloud” pristupu), ali zahteva odgovarajuću konfiguraciju hardvera, biblioteka i okruženja.  U nastavku su kratki opisi i osnovna svrha.</span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">LLaMA – Large Language Model Meta AI</span></span><br />
Open‑source LLM razvijen od strane Meta (Facebook). Dostupan u verzijama 7 B, 13 B, 30 B i 65 B parametara.<br />
Generisanje teksta, chat botovi, automatsko prevođenje, analitika podataka.<br />
Najmanje zahteva u odnosu na velike modele; 7‑13 B varijante mogu raditi na RTX 5060 Ti bez overclockinga (≈16 GB VRAM).<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">LMStudio – Language Model Studio</span></span><br />
GUI aplikacija koja omogućava jednostavno testiranje, fine‑tuning i vizualizaciju bilo kojeg LLM-a (LLaMA, GPT‑NeoX, etc.). <br />
Brzo prototipiranje, analiza performansi, integracija u sopstvene projekte.<br />
Potpuno lokalno, ne zahteva kod; podržava CUDA 12 i GPU akceleraciju<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Pinokio AI</span></span><br />
Lokalni LLM baziran na opt-6.7b arhitekturi, optimizovan za manje memorijske uređaje (12 GB VRAM).<br />
Chat botovi, generisanje koda, asistent u razvoju softvera.<br />
Brža inferencija od većih modela; odličan balans između performansi i resursa na RTX 5060 Ti.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">Stable Diffusion XL – Generisanje slika</span></span><br />
Najnovija verzija diffusion modela, sa 1.0B parametara (SD‑XL). Generisanje visokokvalitetnih slika iz teksta, stil transfer, retuširanje.<br />
Omogućava kreiranje profesionalno izgleda slika na PC‑u bez potrebe za cloud‑servisima; GPU akceleracija je ključna.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Zaključak</span><br />
LLaMA, LMStudio, Pinokio AI i Stable Diffusion XL su izvanredni alati za lokalno rad sa AI modelima na RTX 5060 Ti.<br />
Svaki od njih ima specifične prednosti: LLaMA za tekst, LMStudio za GUI prototipove, Pinokio AI za brzinu i manji GPU footprint, SD‑XL za slike visokog kvaliteta.<br />
Sa pravilnom instalacijom i konfiguracijom, sve ove tehnologije mogu da funkcionišu isključivo offline bez dodatnih troškova.<br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46312" loading="lazy"  alt="[Image: attachment.php?aid=46312]" class="mycode_img" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46312" target="_blank" title="">lmstudio.png</a> (Size: 178,49 KB / Downloads: 166)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Stable Diffusion | SD1.5 | SDXL | Flux1.D | Galerija]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=3050</link>
			<pubDate>Thu, 25 Sep 2025 02:26:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=3050</guid>
			<description><![CDATA[Neki zanimljivi primeri grafike generisane preko Stable Diffusion AI modela, lokalno preko RTX 5060Ti 16GB graficke kartice.<br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46216" loading="lazy"  alt="[Image: attachment.php?aid=46216]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46214" loading="lazy"  alt="[Image: attachment.php?aid=46214]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46215" loading="lazy"  alt="[Image: attachment.php?aid=46215]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46217" loading="lazy"  alt="[Image: attachment.php?aid=46217]" class="mycode_img" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46214" target="_blank" title="">s1.jpg</a> (Size: 82,47 KB / Downloads: 223)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46215" target="_blank" title="">s2.jpg</a> (Size: 74,07 KB / Downloads: 218)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46216" target="_blank" title="">s3.jpg</a> (Size: 75,58 KB / Downloads: 214)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46217" target="_blank" title="">s4.jpg</a> (Size: 33,24 KB / Downloads: 209)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Neki zanimljivi primeri grafike generisane preko Stable Diffusion AI modela, lokalno preko RTX 5060Ti 16GB graficke kartice.<br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46216" loading="lazy"  alt="[Image: attachment.php?aid=46216]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46214" loading="lazy"  alt="[Image: attachment.php?aid=46214]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46215" loading="lazy"  alt="[Image: attachment.php?aid=46215]" class="mycode_img" /><br />
<br />
<img src="https://forum.yu3ma.net/attachment.php?aid=46217" loading="lazy"  alt="[Image: attachment.php?aid=46217]" class="mycode_img" /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46214" target="_blank" title="">s1.jpg</a> (Size: 82,47 KB / Downloads: 223)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46215" target="_blank" title="">s2.jpg</a> (Size: 74,07 KB / Downloads: 218)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46216" target="_blank" title="">s3.jpg</a> (Size: 75,58 KB / Downloads: 214)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.yu3ma.net/images/attachtypes/image.gif" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=46217" target="_blank" title="">s4.jpg</a> (Size: 33,24 KB / Downloads: 209)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Zasto glavi fwrite() pri 25 zapisa/fajlova u sekundi?]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=2463</link>
			<pubDate>Wed, 23 Sep 2020 13:57:49 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=2463</guid>
			<description><![CDATA[Pozdrav,<br />
<br />
imam neko parce code-a koji radi prostu stvar, hvata neke pakete podataka koju su veliki oko 5-6kB, ti paketi mi dolaze brzinom od 25 paketa u sekundi i program treba da hvata te podatke i snima u fajlove za neku dalju analizu.<br />
<br />
Medjutim, to ne radi dobro, kako pustim to da radi program uhvati/snimi nekih 120-150 paketa/fajlova i nakon toga zaglavi??<br />
<br />
Program treba da radi na RPi ali isti problem imam i kada to poteram na PC pod macOS, skoro se sve isto ponasa. <br />
Na PC definitivno nemam problema sa I/O brzinom, to je i7 masina sa Aorus NVMe diskom, brze ot toga nemam ...<br />
<br />
Probao sam da snimam i u RAMDISK (tmpfs) i isto se ponasa?<br />
<br />
U cemu je ovde problem, ko/sta ovde pravi taj problem?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>    ...<br />
    char buf[128000];<br />
    ...<br />
    // U buf su popunjeni podaci ...<br />
    // U len imam duzinu paketa, menja se izmedju 5 i 6 kB ...<br />
    ...<br />
<br />
    //----------------- save samples -------------<br />
    if (samlpe_count &lt; 1000 ) {<br />
        char fname[80];<br />
        sprintf(fname, "sample_%03d.dat", samlpe_count);<br />
        printf("Writing %s ... &#92;r&#92;n", fname);<br />
<br />
        FILE *my_write_fd = fopen(fname, "w+");<br />
        fwrite(buf, len, 1, my_write_fd);<br />
        fclose(my_write_fd);<br />
<br />
        samlpe_count++;<br />
    }</code></div></div>]]></description>
			<content:encoded><![CDATA[Pozdrav,<br />
<br />
imam neko parce code-a koji radi prostu stvar, hvata neke pakete podataka koju su veliki oko 5-6kB, ti paketi mi dolaze brzinom od 25 paketa u sekundi i program treba da hvata te podatke i snima u fajlove za neku dalju analizu.<br />
<br />
Medjutim, to ne radi dobro, kako pustim to da radi program uhvati/snimi nekih 120-150 paketa/fajlova i nakon toga zaglavi??<br />
<br />
Program treba da radi na RPi ali isti problem imam i kada to poteram na PC pod macOS, skoro se sve isto ponasa. <br />
Na PC definitivno nemam problema sa I/O brzinom, to je i7 masina sa Aorus NVMe diskom, brze ot toga nemam ...<br />
<br />
Probao sam da snimam i u RAMDISK (tmpfs) i isto se ponasa?<br />
<br />
U cemu je ovde problem, ko/sta ovde pravi taj problem?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>    ...<br />
    char buf[128000];<br />
    ...<br />
    // U buf su popunjeni podaci ...<br />
    // U len imam duzinu paketa, menja se izmedju 5 i 6 kB ...<br />
    ...<br />
<br />
    //----------------- save samples -------------<br />
    if (samlpe_count &lt; 1000 ) {<br />
        char fname[80];<br />
        sprintf(fname, "sample_%03d.dat", samlpe_count);<br />
        printf("Writing %s ... &#92;r&#92;n", fname);<br />
<br />
        FILE *my_write_fd = fopen(fname, "w+");<br />
        fwrite(buf, len, 1, my_write_fd);<br />
        fclose(my_write_fd);<br />
<br />
        samlpe_count++;<br />
    }</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Matematicki problem - nalazenje najduzeg kontinualnog niza]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=2441</link>
			<pubDate>Sat, 11 Jul 2020 11:44:00 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=2441</guid>
			<description><![CDATA[Za potrebe nekog programa koji pisem potrebno je da uradim "filtriranje" nekih izmerenih tacaka rastojanja dobijenih preko Lidara (rotacioni laserski daljinomer).<br />
<br />
Konretan problem se svodi na to da preko Lidara dobijam tacke izmerenog objekta koje mi u sustini trebaju ali se desi iz raznih razloga da mi u taj skup uleti i neke tacke koje nisu deo objekta koji se prati vec neke "fleke" tj slucajne tacke koje se dobiju refleksijom od pozadine i koje mi prave probleme - trebam da filtriram te tacke.<br />
<br />
Da uprostim pricu, recimo da imam ovakva dva niza koja su dobijena iz nekog predhodnog koraka procesiranja.<br />
Prvi niz su izmerene daljine, drugi niz je ugaoni index tacke. Ugaoni index se racuna u opsegu 0-180' sa korakom od 0.25' - tehnicki gledano nebitno je da li izrazeno kao index ili kao ugao, formula je Ugao=Index/4.<br />
<br />
Primer (C/C++)<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>int daljine[1000];<br />
int ugao[1000];<br />
int broj_tacaka = 4;<br />
<br />
daljine[0] = 1500; //mm<br />
daljine[1] = 1800; //mm<br />
daljine[2] = 1400; //mm<br />
daljine[3] = 900; //mm<br />
<br />
ugao[0] = 22;<br />
ugao[1] = 23;<br />
ugao[2] = 24;<br />
ugao[3] = 71;<br />
<br />
//ocekivani rezultat procesiranja treba da bude 1400mm na ugaonom indexu 24.</code></div></div><br />
U ovom primeru imamo 4 tacke, prve tri su jedna-za-drugom (spojene = deo jednog detektovanog objekta) dok je 4. tacka smetnja-fleka koju trebam da ignorisem.<br />
Algoritam MORA <span style="font-weight: bold;" class="mycode_b">da nadje najblizu tacku objekta koji ima najvecu "sirinu"</span> (najvise uzastopnih tacaka).<br />
Moj trenutni code radi tako sto nadje minimum iz ovog skupa ali u ovom konkretnom slucaju je ocigledno ta 4. tacka smetnja i nije dobro, ocekivani rezultat je 3. tacka (pod idexom [2]) tj 1400mm na 24. ugaonom indexu.<br />
<br />
---<br />
<br />
Da li moze neko da mi pomogne sa ovim, tj kako bi izgledao algoritam ili konkretno parce code-a koji bi radio ispravno trazenu funkciju?<br />
Code mora da bude veoma veoma optimizovan i brz jer mi je time-frame za procesiranje vrlo uzak i nemam mnogo procesorske snage na raspolaganju.]]></description>
			<content:encoded><![CDATA[Za potrebe nekog programa koji pisem potrebno je da uradim "filtriranje" nekih izmerenih tacaka rastojanja dobijenih preko Lidara (rotacioni laserski daljinomer).<br />
<br />
Konretan problem se svodi na to da preko Lidara dobijam tacke izmerenog objekta koje mi u sustini trebaju ali se desi iz raznih razloga da mi u taj skup uleti i neke tacke koje nisu deo objekta koji se prati vec neke "fleke" tj slucajne tacke koje se dobiju refleksijom od pozadine i koje mi prave probleme - trebam da filtriram te tacke.<br />
<br />
Da uprostim pricu, recimo da imam ovakva dva niza koja su dobijena iz nekog predhodnog koraka procesiranja.<br />
Prvi niz su izmerene daljine, drugi niz je ugaoni index tacke. Ugaoni index se racuna u opsegu 0-180' sa korakom od 0.25' - tehnicki gledano nebitno je da li izrazeno kao index ili kao ugao, formula je Ugao=Index/4.<br />
<br />
Primer (C/C++)<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>int daljine[1000];<br />
int ugao[1000];<br />
int broj_tacaka = 4;<br />
<br />
daljine[0] = 1500; //mm<br />
daljine[1] = 1800; //mm<br />
daljine[2] = 1400; //mm<br />
daljine[3] = 900; //mm<br />
<br />
ugao[0] = 22;<br />
ugao[1] = 23;<br />
ugao[2] = 24;<br />
ugao[3] = 71;<br />
<br />
//ocekivani rezultat procesiranja treba da bude 1400mm na ugaonom indexu 24.</code></div></div><br />
U ovom primeru imamo 4 tacke, prve tri su jedna-za-drugom (spojene = deo jednog detektovanog objekta) dok je 4. tacka smetnja-fleka koju trebam da ignorisem.<br />
Algoritam MORA <span style="font-weight: bold;" class="mycode_b">da nadje najblizu tacku objekta koji ima najvecu "sirinu"</span> (najvise uzastopnih tacaka).<br />
Moj trenutni code radi tako sto nadje minimum iz ovog skupa ali u ovom konkretnom slucaju je ocigledno ta 4. tacka smetnja i nije dobro, ocekivani rezultat je 3. tacka (pod idexom [2]) tj 1400mm na 24. ugaonom indexu.<br />
<br />
---<br />
<br />
Da li moze neko da mi pomogne sa ovim, tj kako bi izgledao algoritam ili konkretno parce code-a koji bi radio ispravno trazenu funkciju?<br />
Code mora da bude veoma veoma optimizovan i brz jer mi je time-frame za procesiranje vrlo uzak i nemam mnogo procesorske snage na raspolaganju.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Kako simulirati /dev/usbserial na Linux-u]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=2315</link>
			<pubDate>Thu, 26 Dec 2019 15:30:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=2315</guid>
			<description><![CDATA[Pozdrav,<br />
<br />
pravim neki desktop program za Linux u C++ koji treba da prica sa nekim USB periferijama (seriski terminali, USB-&gt;serial) i trenutno imam potrebu da simuliram to ponasanje periferija jer trenutno nemam te uredjaje, imam samo protokol kako radi i koji cu da isprogramiram u simulatoru.<br />
<br />
Interesuje me kako da simuliram /dev/NESTO da bude istog tipa/osobina kao i ovi USB-seriski konverteri?<br />
<br />
Trenutno koristim ovako nesto za pisanje na "pravi" device iz glavnog programa:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//open port<br />
&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "Opening MCU on " &lt;&lt; dev_mcu &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;fd_mcu = open(dev_mcu.c_str(), O_RDWR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (fd_mcu &lt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr &lt;&lt; "ERROR opening MCU on " &lt;&lt; dev_mcu &lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct termios options;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcgetattr(fd_mcu, &amp;options);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_cflag = B9600 | CS8 | CLOCAL | CREAD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&lt;Set baud rate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_iflag = IGNPAR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_oflag = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_lflag = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcflush(fd_mcu, TCIFLUSH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcsetattr(fd_mcu, TCSANOW, &amp;options);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Configured MCU on " &lt;&lt; dev_mcu &lt;&lt; " as B9600 CS8 IGNPAR"&nbsp;&nbsp;&lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//write to port<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (write(fd_mcu, cmd_buff_mcu, cmd_buff_mcu_len) != cmd_buff_mcu_len) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr &lt;&lt; "ERROR writing CMD to MCU device!" &lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></div></div><br />
Kako mogu tu u simulatoru da se "podmetnem" a da ne menjam osnovni code-e za komunikaciju (eventulano promenim samo ime uredjaja) ?]]></description>
			<content:encoded><![CDATA[Pozdrav,<br />
<br />
pravim neki desktop program za Linux u C++ koji treba da prica sa nekim USB periferijama (seriski terminali, USB-&gt;serial) i trenutno imam potrebu da simuliram to ponasanje periferija jer trenutno nemam te uredjaje, imam samo protokol kako radi i koji cu da isprogramiram u simulatoru.<br />
<br />
Interesuje me kako da simuliram /dev/NESTO da bude istog tipa/osobina kao i ovi USB-seriski konverteri?<br />
<br />
Trenutno koristim ovako nesto za pisanje na "pravi" device iz glavnog programa:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//open port<br />
&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "Opening MCU on " &lt;&lt; dev_mcu &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;fd_mcu = open(dev_mcu.c_str(), O_RDWR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (fd_mcu &lt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr &lt;&lt; "ERROR opening MCU on " &lt;&lt; dev_mcu &lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct termios options;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcgetattr(fd_mcu, &amp;options);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_cflag = B9600 | CS8 | CLOCAL | CREAD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&lt;Set baud rate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_iflag = IGNPAR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_oflag = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.c_lflag = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcflush(fd_mcu, TCIFLUSH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcsetattr(fd_mcu, TCSANOW, &amp;options);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Configured MCU on " &lt;&lt; dev_mcu &lt;&lt; " as B9600 CS8 IGNPAR"&nbsp;&nbsp;&lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//write to port<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (write(fd_mcu, cmd_buff_mcu, cmd_buff_mcu_len) != cmd_buff_mcu_len) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr &lt;&lt; "ERROR writing CMD to MCU device!" &lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></div></div><br />
Kako mogu tu u simulatoru da se "podmetnem" a da ne menjam osnovni code-e za komunikaciju (eventulano promenim samo ime uredjaja) ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C/C++ Razvojni alati CLI & GUI]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=1874</link>
			<pubDate>Tue, 17 Apr 2018 10:05:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=1874</guid>
			<description><![CDATA[Jedan od boljih IDE alata za C/C++ (bilo koji jezik, PHP, JS, sta-god), ma koliko to suludo izgledalo, Microsoft je napravio dobru aplikaciju i odlicno radi na OS X.<br />
Odlicno radi repozitorijum sa pluginovima, sve moze da se namesti sto korisniku treba, intelisense, Cmake, make, syntax highlighting, source-control, hiljade nekih pluginova i dodataka.<br />
<a href="https://code.visualstudio.com" target="_blank" rel="noopener" class='oembed'>https://code.visualstudio.com</a><br />
<br />
Drugi alat koji sam probao i koristio u trial periodu je CLion, i on dobro radi, ima real-time "linter" koji proverava i formatira napisan code, debuger mu je odlican ... samo mu cena bas nije slatka ... <br />
<a href="https://www.jetbrains.com/clion/" target="_blank" rel="noopener" class='oembed'>https://www.jetbrains.com/clion/</a><br />
<br />
Oba alata mogu da se koriste za razvoj cross-platfor aplikacija za Desktop, CLI, GUI ili MCU programa.]]></description>
			<content:encoded><![CDATA[Jedan od boljih IDE alata za C/C++ (bilo koji jezik, PHP, JS, sta-god), ma koliko to suludo izgledalo, Microsoft je napravio dobru aplikaciju i odlicno radi na OS X.<br />
Odlicno radi repozitorijum sa pluginovima, sve moze da se namesti sto korisniku treba, intelisense, Cmake, make, syntax highlighting, source-control, hiljade nekih pluginova i dodataka.<br />
<a href="https://code.visualstudio.com" target="_blank" rel="noopener" class='oembed'>https://code.visualstudio.com</a><br />
<br />
Drugi alat koji sam probao i koristio u trial periodu je CLion, i on dobro radi, ima real-time "linter" koji proverava i formatira napisan code, debuger mu je odlican ... samo mu cena bas nije slatka ... <br />
<a href="https://www.jetbrains.com/clion/" target="_blank" rel="noopener" class='oembed'>https://www.jetbrains.com/clion/</a><br />
<br />
Oba alata mogu da se koriste za razvoj cross-platfor aplikacija za Desktop, CLI, GUI ili MCU programa.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[JetBrains - Rider]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=1676</link>
			<pubDate>Tue, 15 Aug 2017 14:22:55 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=858">vsavic</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=1676</guid>
			<description><![CDATA[Iako ne spada samo u ovu kategoriju, nisam nasao bolje mesto <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
...u svakom slucaju, poigrah se juce sa <a href="https://www.jetbrains.com/rider" target="_blank" rel="noopener" class='oembed'>https://www.jetbrains.com/rider</a> na prvu loptu, deluje kao najkompletnije resenje (sem MS-ovog Visual Studia) za .NET razvoj. Probao sam ranije razna druga kako je koje izlazilo, ali ovo je jedino koje mi nije zadavalo problema u samom startu, sva ostala manje vise posle malo drndanja su pucala po savovima, ili zahtevala da menjam podesavanja projekta ili sl. Sa ovim, par projekta na kojima trenutno radim (cisto eksperimenta radi) propustih kroz njega, i rade bez problema <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
...vredi probati ga, ako nista drugo.]]></description>
			<content:encoded><![CDATA[Iako ne spada samo u ovu kategoriju, nisam nasao bolje mesto <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
...u svakom slucaju, poigrah se juce sa <a href="https://www.jetbrains.com/rider" target="_blank" rel="noopener" class='oembed'>https://www.jetbrains.com/rider</a> na prvu loptu, deluje kao najkompletnije resenje (sem MS-ovog Visual Studia) za .NET razvoj. Probao sam ranije razna druga kako je koje izlazilo, ali ovo je jedino koje mi nije zadavalo problema u samom startu, sva ostala manje vise posle malo drndanja su pucala po savovima, ili zahtevala da menjam podesavanja projekta ili sl. Sa ovim, par projekta na kojima trenutno radim (cisto eksperimenta radi) propustih kroz njega, i rade bez problema <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
...vredi probati ga, ako nista drugo.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Rigol DS1000Z - Custom App]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=1509</link>
			<pubDate>Wed, 18 Jan 2017 18:49:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=858">vsavic</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=1509</guid>
			<description><![CDATA[Bazirano na problemu koji je izgleda zajednicki za par nas ovde koliko vidim, a to je nedostatak trece ruke za kliktanje po osciloskopu ili kompjuteru, dosao sam na ideju da napravim jedan mali alat koji mozemo zajedno da usavrsavamo ako zelite i ako mislite da jos nekom moze da bude koristan.<br />
<br />
Program sluzi da pomocu VisaComLib-a izlista i pronadje osciloskop iz DS1000Z serije (trenutno radi samo sa prvim koji nadje, tako da ako neko ima dva ili vise, jbg. morace da se strpi za v1.0.0.1), nakon sto pronadjemo instrument s kojim komuniciramo, u zavisnosti od zeljene akcije saljemo adekvatnu SCPI komandu uredjaju.<br />
<br />
Slanje komandi je moguce na dva nacina:<br />
- Kliktanjem po formi (vise korisceno radi testiranja (gubi svrhu zbog inicijalnog problema))<br />
- Izgovaranjem adekvatne komande<br />
<br />
Dakle aplikacija je radjena u C#-u i u sebi ima ugradjen MS Speech Recognition mehanizam, nisam hteo da integrisem LUIS BOT-a da ne bi zahtevala i dodatnu konekciju na internet, ali za osnovne komande poput: RUN, STOP, SAVE, LEFT, RIGHT (zadnje dve nisam jos nasao SCPI komandu nisam ni siguran da li je ima, a hteo sam da je iskoristim za vremensko pozicioniranje).<br />
<br />
Testirao sam je sa svojim osciloskopom, i za moj slucaj radi sasvim ok.<br />
<br />
Ono sto bi ja uradio je posto je ovaj code napisan cisto da vidim kako ovo cudo radi, da se najpre ocisti, i napravi modularnim za veci broj komandi da moze lako da se odrzava. Tj. da se isto odvoji u zasebnu biblioteku i odvoji od UI dela.<br />
<br />
Zamenio bih win forms sa WPF-om ili Unity-om da se nasminka fino (nije neophodno ali neka moja licna preferenca je da i UI uvek bude moderniji).<br />
<br />
Tako da ako ima zainteresovanih, mogu da okacim source na github za vikend kad malo kolko tolko procistim code <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Kao dodatak evo par linkova koje sam koristio kao referencu:<br />
<br />
<a href="http://ena.support.keysight.com/e5072a/manuals/webhelp/eng/programming/vba_programming/controlling_peripherals/programming_with_visa-com.htm" target="_blank" rel="noopener" class='oembed'>Programming With Visa-COM</a><br />
<a href="https://msdn.microsoft.com/en-us/library/hh378426(v=office.14).aspx" target="_blank" rel="noopener" class='oembed'>Get Started with Speech Recognition</a><br />
<a href="http://www.batronix.com/pdf/Rigol/ProgrammingGuide/MSO1000Z_DS1000Z_ProgrammingGuide_EN.pdf" target="_blank" rel="noopener" class='oembed'>MSO1000Z_DS1000Z Programming Guide</a><br />
<br />
Ako radite u C#-u ovo moze da bude zanimljivo za IoT:<br />
<a href="https://www.microsoft.com/cognitive-services/en-us/language-understanding-intelligent-service-luis" target="_blank" rel="noopener" class='oembed'>Language Understanding Inteligent Service - LUIS</a>]]></description>
			<content:encoded><![CDATA[Bazirano na problemu koji je izgleda zajednicki za par nas ovde koliko vidim, a to je nedostatak trece ruke za kliktanje po osciloskopu ili kompjuteru, dosao sam na ideju da napravim jedan mali alat koji mozemo zajedno da usavrsavamo ako zelite i ako mislite da jos nekom moze da bude koristan.<br />
<br />
Program sluzi da pomocu VisaComLib-a izlista i pronadje osciloskop iz DS1000Z serije (trenutno radi samo sa prvim koji nadje, tako da ako neko ima dva ili vise, jbg. morace da se strpi za v1.0.0.1), nakon sto pronadjemo instrument s kojim komuniciramo, u zavisnosti od zeljene akcije saljemo adekvatnu SCPI komandu uredjaju.<br />
<br />
Slanje komandi je moguce na dva nacina:<br />
- Kliktanjem po formi (vise korisceno radi testiranja (gubi svrhu zbog inicijalnog problema))<br />
- Izgovaranjem adekvatne komande<br />
<br />
Dakle aplikacija je radjena u C#-u i u sebi ima ugradjen MS Speech Recognition mehanizam, nisam hteo da integrisem LUIS BOT-a da ne bi zahtevala i dodatnu konekciju na internet, ali za osnovne komande poput: RUN, STOP, SAVE, LEFT, RIGHT (zadnje dve nisam jos nasao SCPI komandu nisam ni siguran da li je ima, a hteo sam da je iskoristim za vremensko pozicioniranje).<br />
<br />
Testirao sam je sa svojim osciloskopom, i za moj slucaj radi sasvim ok.<br />
<br />
Ono sto bi ja uradio je posto je ovaj code napisan cisto da vidim kako ovo cudo radi, da se najpre ocisti, i napravi modularnim za veci broj komandi da moze lako da se odrzava. Tj. da se isto odvoji u zasebnu biblioteku i odvoji od UI dela.<br />
<br />
Zamenio bih win forms sa WPF-om ili Unity-om da se nasminka fino (nije neophodno ali neka moja licna preferenca je da i UI uvek bude moderniji).<br />
<br />
Tako da ako ima zainteresovanih, mogu da okacim source na github za vikend kad malo kolko tolko procistim code <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Kao dodatak evo par linkova koje sam koristio kao referencu:<br />
<br />
<a href="http://ena.support.keysight.com/e5072a/manuals/webhelp/eng/programming/vba_programming/controlling_peripherals/programming_with_visa-com.htm" target="_blank" rel="noopener" class='oembed'>Programming With Visa-COM</a><br />
<a href="https://msdn.microsoft.com/en-us/library/hh378426(v=office.14).aspx" target="_blank" rel="noopener" class='oembed'>Get Started with Speech Recognition</a><br />
<a href="http://www.batronix.com/pdf/Rigol/ProgrammingGuide/MSO1000Z_DS1000Z_ProgrammingGuide_EN.pdf" target="_blank" rel="noopener" class='oembed'>MSO1000Z_DS1000Z Programming Guide</a><br />
<br />
Ako radite u C#-u ovo moze da bude zanimljivo za IoT:<br />
<a href="https://www.microsoft.com/cognitive-services/en-us/language-understanding-intelligent-service-luis" target="_blank" rel="noopener" class='oembed'>Language Understanding Inteligent Service - LUIS</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Koriscenje AI-a za prepoznavanje tipografskih paterna i formata]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=1464</link>
			<pubDate>Wed, 14 Dec 2016 03:55:34 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=858">vsavic</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=1464</guid>
			<description><![CDATA[Cao drugari, jel koristio neko mozda neuronske mreze za prepoznavanje tipografskih paterna i formata, ili bilo koje drugo "pametno" resenje?<br />
<br />
Sta je konkretni problem, imam gomilu sajtova i sad oni su bukvalno details stranice nekih proizvoda gde izmedju ostalog se nalazi i cena. Ono sto meni treba je kako pametno prepoznati taj HTML element koji sadrzi informaiju o ceni. <br />
<br />
Ja sam implementirao neko svoje resenje kojim sam pokrio nekih 90% i mozda malo vise od svih sajtova sto sam ja testirao ali mi je problem sto sa trenutnim mojim algoritmom ja one koje ne nalazim necu nikad ni da pronadjem vremenom, jer moj algoritam nije zasnovan na Ai-u, i nece nista da "nauci" vremenom.<br />
<br />
Do sad nisam nikad radio sa neuronskim mrezama, tako da nisam siguran ni da li su adekvatno resenje, ali eto, cisto razmisljam na glas...<br />
<br />
Diffbot je nesto najslicnije onome sto sam napravio samo bez Ai-a, medjutim testirao sam i ovo njihovo i zanimljivo da moje dummy resenje radi bolje na skoro svim sajtovima koje sam testirao <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Svaki savet dobrodosao. <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" />]]></description>
			<content:encoded><![CDATA[Cao drugari, jel koristio neko mozda neuronske mreze za prepoznavanje tipografskih paterna i formata, ili bilo koje drugo "pametno" resenje?<br />
<br />
Sta je konkretni problem, imam gomilu sajtova i sad oni su bukvalno details stranice nekih proizvoda gde izmedju ostalog se nalazi i cena. Ono sto meni treba je kako pametno prepoznati taj HTML element koji sadrzi informaiju o ceni. <br />
<br />
Ja sam implementirao neko svoje resenje kojim sam pokrio nekih 90% i mozda malo vise od svih sajtova sto sam ja testirao ali mi je problem sto sa trenutnim mojim algoritmom ja one koje ne nalazim necu nikad ni da pronadjem vremenom, jer moj algoritam nije zasnovan na Ai-u, i nece nista da "nauci" vremenom.<br />
<br />
Do sad nisam nikad radio sa neuronskim mrezama, tako da nisam siguran ni da li su adekvatno resenje, ali eto, cisto razmisljam na glas...<br />
<br />
Diffbot je nesto najslicnije onome sto sam napravio samo bez Ai-a, medjutim testirao sam i ovo njihovo i zanimljivo da moje dummy resenje radi bolje na skoro svim sajtovima koje sam testirao <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Svaki savet dobrodosao. <img src="https://forum.yu3ma.net/images/smilies/smile.gif" alt="Smile" title="Smile" class="smilie smilie_1" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Parsiranje velikih log fajlova]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=748</link>
			<pubDate>Sun, 28 Dec 2014 10:24:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=719">1van</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=748</guid>
			<description><![CDATA[Zdravo svima,<br />
<br />
Skorije sam imao potrebu da analiziram prilicno veliki (500MB) <a href="https://www.modsecurity.org/" target="_blank" rel="noopener" class='oembed'>mod_security</a> log fajl i to u "realnom" vremenu, tj da svaki upis u fajl registrujem odmah i da promene vidim u nekom obliku koji je jednostavan za analizu napada na odredjeni web sajt.<br />
Takodje fajl se jako brzo menja i rotira.<br />
<br />
Resenje koje sam primenio je da sam napisao parser u pythonu koji radi slicno kao "tail -f logfile" i zanima me da li postoji bolji pristup za to:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>...<br />
with open('/var/log/apache2/modsec_audit.log') as f:<br />
&nbsp;&nbsp;&nbsp;&nbsp;while True: # This will wait for next line in file<br />
<br />
        if psutil.cpu_percent() &gt; 50:<br />
            time.sleep(0.2) # CPU usage protection<br />
        line = f.readline()<br />
        if line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Do something with line from file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Put it in DB, etc ...<br />
...</code></div></div><br />
Ovo odlicno radi jer cita liniju po liniju i ne zauzima puno memorije, zatim problem sa zakucavanjem cpu u while petlji sam resio sa sleep (jel ima bolji predlog?). Imao sam jos jedan problem a to je prekidanje skripta u pola ili bilo gde, i to sam resio sa pomeranjem file pointera u odnosu na zadnji upis u bazi. <br />
<br />
Deo za analizu je u HTML/PHP-u i on nije sporan jer cita podatke iz DB.<br />
<br />
@mikikg ti si cini mi se radio nesto sa nekim velikim logovima?<br />
<br />
<br />
Hvala,<br />
Ivan]]></description>
			<content:encoded><![CDATA[Zdravo svima,<br />
<br />
Skorije sam imao potrebu da analiziram prilicno veliki (500MB) <a href="https://www.modsecurity.org/" target="_blank" rel="noopener" class='oembed'>mod_security</a> log fajl i to u "realnom" vremenu, tj da svaki upis u fajl registrujem odmah i da promene vidim u nekom obliku koji je jednostavan za analizu napada na odredjeni web sajt.<br />
Takodje fajl se jako brzo menja i rotira.<br />
<br />
Resenje koje sam primenio je da sam napisao parser u pythonu koji radi slicno kao "tail -f logfile" i zanima me da li postoji bolji pristup za to:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>...<br />
with open('/var/log/apache2/modsec_audit.log') as f:<br />
&nbsp;&nbsp;&nbsp;&nbsp;while True: # This will wait for next line in file<br />
<br />
        if psutil.cpu_percent() &gt; 50:<br />
            time.sleep(0.2) # CPU usage protection<br />
        line = f.readline()<br />
        if line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Do something with line from file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Put it in DB, etc ...<br />
...</code></div></div><br />
Ovo odlicno radi jer cita liniju po liniju i ne zauzima puno memorije, zatim problem sa zakucavanjem cpu u while petlji sam resio sa sleep (jel ima bolji predlog?). Imao sam jos jedan problem a to je prekidanje skripta u pola ili bilo gde, i to sam resio sa pomeranjem file pointera u odnosu na zadnji upis u bazi. <br />
<br />
Deo za analizu je u HTML/PHP-u i on nije sporan jer cita podatke iz DB.<br />
<br />
@mikikg ti si cini mi se radio nesto sa nekim velikim logovima?<br />
<br />
<br />
Hvala,<br />
Ivan]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TideSDK - Razvoj desktop aplikacija sa HTML5/CSS3/JS/PHP/Rubby]]></title>
			<link>https://forum.yu3ma.net/showthread.php?tid=713</link>
			<pubDate>Sat, 22 Nov 2014 12:32:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.yu3ma.net/member.php?action=profile&uid=107">mikikg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.yu3ma.net/showthread.php?tid=713</guid>
			<description><![CDATA[Prilikom potrage nekog resenja za razvoj desktop aplikacija za razlicite platforme (Win / Linux / OS X), naleteo sam na jedan vrlo zanimljiv framework pod nazivom TideSDK.<br />
<br />
<a href="http://www.tidesdk.org" target="_blank" rel="noopener" class='oembed'>http://www.tidesdk.org</a><br />
<br />
Koncept kombinuje razlicite web tehnologije ali ovog puta na desktop racunarima i kao takav je vrlo zanimljiv i jednostavan za koriscenje i izradu razlicitih grafickih korisnickih interfejsa (GUI) koji su generalno problem (za developere) na PC platformama. Ovde je ceo taj koncep jednostavno prebacen na HTML/CSS jer je APP ustvari samo nezavisni browser engine ali koji ima mogucnost interakcije sa ostalim standardnim stvarima na racunaru (fajlovi, slike, seriski portovi itd).<br />
<br />
Koncept se dalje nadograduje kompletnom podrskom za SQLite (lokalna baza podataka u okviru aplikacije) i MySQL client podrskom, razne standardne PHP biblioteke sve do PHP funkcija koje imaju HTML DOM pristup za dalju nadogradnju preko JavaSript (deo TideSDK framework API-a).<br />
<br />
Evo jedan krajnje neobican primer, "hibridna" HTML PHP skripta koja radi SQL upit na neki spoljni MySQL server i stampa prostu poruku sa rezultatom upita u prozoru aplikacije.<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">&lt;</span><span style="color: #0000BB">html</span><span style="color: #007700">&gt;<br />&lt;</span><span style="color: #0000BB">body</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">script&nbsp;type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/php"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">fetch_data</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getElementById</span><span style="color: #007700">(</span><span style="color: #DD0000">"data"</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">innerHTML&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"&lt;span&nbsp;style=&#092;"color:green&#092;"&gt;Fetching...&lt;/span&gt;&nbsp;"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;fn&nbsp;</span><span style="color: #007700">=&nbsp;function()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"ensembldb.ensembl.org"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"anonymous"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">)&nbsp;or&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">alert</span><span style="color: #007700">(</span><span style="color: #0000BB">mysql_error</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #DD0000">"homo_sapiens_core_47_36i"</span><span style="color: #007700">)&nbsp;or&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">alert</span><span style="color: #007700">(</span><span style="color: #0000BB">mysql_error</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mysql_query</span><span style="color: #007700">(</span><span style="color: #DD0000">"select&nbsp;*&nbsp;from&nbsp;assembly&nbsp;LIMIT&nbsp;0,5"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;row&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mysql_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;result</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;asm_seq_region_id&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;row</span><span style="color: #007700">[</span><span style="color: #DD0000">"asm_seq_region_id"</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getElementById</span><span style="color: #007700">(</span><span style="color: #DD0000">"data"</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">innerHTML&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"asm_seq_region_id&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;asm_seq_region_id</span><span style="color: #DD0000">"</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setTimeout</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fn</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">500</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">script</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">button&nbsp;onclick</span><span style="color: #007700">=</span><span style="color: #DD0000">"fetch_data();"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Fetch&nbsp;Data</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">button</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">div&nbsp;id</span><span style="color: #007700">=</span><span style="color: #DD0000">"data"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">body</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">html</span><span style="color: #007700">&gt;&nbsp;<br /></span></code></div></div></div><br />
Rezultat prevodjenja ovog code-a je kompletna Aplikacija koja moze da se pokrene na razlicitim OS-ovima i ne zahteva nikakve dodatne biblioteke ili web servise.<br />
<br />
Dakle na ovaj nacin je moguce veoma lako napraviti multi-platform desktop aplikaciju koriscenjem "samo" HTML/CSS/JS/PHP tehnike.<br />
Takodje je krajnje prosto (isto kao za pravo WEB okruzenje) koristiti razne JavaScript biblioteke poput JQuery, AngularJS, Bootstrap, NodeJS i ostale fine pogodnosti koje se vec duze vreme uspesno koriste na WEB-u.<br />
<br />
Ovo je sjajno, upravo sam nasao dugoocekivano resenje za moj Si5351 PIC USB kontroler program (takodje i za moj AD9850 signal generator) i prve probe koje sam napravio su dale pozitivne rezultate tj uspeo sam bukvalno u 3 PHP linije (fopen, fwrite, fclose) da uspostavim serisku komunikaciju sa mojim modulom koristeci standardnu WEB programsku tehniku.<br />
<br />
Na slican nacin je moguce napraviti program za razne vizuelizacije, kontrolu ili upravljanje i to ukaciti sa bilo kojim kontrolerom (PIC, STM32, Arduino itd) preko raspolozivih komunikacionih kanala.]]></description>
			<content:encoded><![CDATA[Prilikom potrage nekog resenja za razvoj desktop aplikacija za razlicite platforme (Win / Linux / OS X), naleteo sam na jedan vrlo zanimljiv framework pod nazivom TideSDK.<br />
<br />
<a href="http://www.tidesdk.org" target="_blank" rel="noopener" class='oembed'>http://www.tidesdk.org</a><br />
<br />
Koncept kombinuje razlicite web tehnologije ali ovog puta na desktop racunarima i kao takav je vrlo zanimljiv i jednostavan za koriscenje i izradu razlicitih grafickih korisnickih interfejsa (GUI) koji su generalno problem (za developere) na PC platformama. Ovde je ceo taj koncep jednostavno prebacen na HTML/CSS jer je APP ustvari samo nezavisni browser engine ali koji ima mogucnost interakcije sa ostalim standardnim stvarima na racunaru (fajlovi, slike, seriski portovi itd).<br />
<br />
Koncept se dalje nadograduje kompletnom podrskom za SQLite (lokalna baza podataka u okviru aplikacije) i MySQL client podrskom, razne standardne PHP biblioteke sve do PHP funkcija koje imaju HTML DOM pristup za dalju nadogradnju preko JavaSript (deo TideSDK framework API-a).<br />
<br />
Evo jedan krajnje neobican primer, "hibridna" HTML PHP skripta koja radi SQL upit na neki spoljni MySQL server i stampa prostu poruku sa rezultatom upita u prozoru aplikacije.<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">&lt;</span><span style="color: #0000BB">html</span><span style="color: #007700">&gt;<br />&lt;</span><span style="color: #0000BB">body</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">script&nbsp;type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/php"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">fetch_data</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getElementById</span><span style="color: #007700">(</span><span style="color: #DD0000">"data"</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">innerHTML&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"&lt;span&nbsp;style=&#092;"color:green&#092;"&gt;Fetching...&lt;/span&gt;&nbsp;"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;fn&nbsp;</span><span style="color: #007700">=&nbsp;function()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"ensembldb.ensembl.org"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"anonymous"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">)&nbsp;or&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">alert</span><span style="color: #007700">(</span><span style="color: #0000BB">mysql_error</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #DD0000">"homo_sapiens_core_47_36i"</span><span style="color: #007700">)&nbsp;or&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">alert</span><span style="color: #007700">(</span><span style="color: #0000BB">mysql_error</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mysql_query</span><span style="color: #007700">(</span><span style="color: #DD0000">"select&nbsp;*&nbsp;from&nbsp;assembly&nbsp;LIMIT&nbsp;0,5"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;row&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mysql_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;result</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;asm_seq_region_id&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;row</span><span style="color: #007700">[</span><span style="color: #DD0000">"asm_seq_region_id"</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;document</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getElementById</span><span style="color: #007700">(</span><span style="color: #DD0000">"data"</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">innerHTML&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"asm_seq_region_id&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;asm_seq_region_id</span><span style="color: #DD0000">"</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;window</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setTimeout</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;fn</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">500</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">script</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">button&nbsp;onclick</span><span style="color: #007700">=</span><span style="color: #DD0000">"fetch_data();"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Fetch&nbsp;Data</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">button</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">div&nbsp;id</span><span style="color: #007700">=</span><span style="color: #DD0000">"data"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">body</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">html</span><span style="color: #007700">&gt;&nbsp;<br /></span></code></div></div></div><br />
Rezultat prevodjenja ovog code-a je kompletna Aplikacija koja moze da se pokrene na razlicitim OS-ovima i ne zahteva nikakve dodatne biblioteke ili web servise.<br />
<br />
Dakle na ovaj nacin je moguce veoma lako napraviti multi-platform desktop aplikaciju koriscenjem "samo" HTML/CSS/JS/PHP tehnike.<br />
Takodje je krajnje prosto (isto kao za pravo WEB okruzenje) koristiti razne JavaScript biblioteke poput JQuery, AngularJS, Bootstrap, NodeJS i ostale fine pogodnosti koje se vec duze vreme uspesno koriste na WEB-u.<br />
<br />
Ovo je sjajno, upravo sam nasao dugoocekivano resenje za moj Si5351 PIC USB kontroler program (takodje i za moj AD9850 signal generator) i prve probe koje sam napravio su dale pozitivne rezultate tj uspeo sam bukvalno u 3 PHP linije (fopen, fwrite, fclose) da uspostavim serisku komunikaciju sa mojim modulom koristeci standardnu WEB programsku tehniku.<br />
<br />
Na slican nacin je moguce napraviti program za razne vizuelizacije, kontrolu ili upravljanje i to ukaciti sa bilo kojim kontrolerom (PIC, STM32, Arduino itd) preko raspolozivih komunikacionih kanala.]]></content:encoded>
		</item>
	</channel>
</rss>