<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://utak3r.pl/index.php?/feeds/atom.xml" rel="self" title="Wirtualne Zacisze utak3ra" type="application/atom+xml" />
    <link href="http://utak3r.pl/"                        rel="alternate"    title="Wirtualne Zacisze utak3ra" type="text/html" />
    <link href="http://utak3r.pl/rss.php?version=2.0"     rel="alternate"    title="Wirtualne Zacisze utak3ra" type="application/rss+xml" />
    <title type="html">Wirtualne Zacisze utak3ra</title>
    <subtitle type="html">utak3r's virtual shelter</subtitle>
    <icon>http://utak3r.pl/templates/utak3r/img/s9y_banner_small.png</icon>
    <id>http://utak3r.pl/</id>
    <updated>2010-07-01T15:50:16Z</updated>
    <generator uri="http://www.s9y.org/" version="1.3.1">Serendipity 1.3.1 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://utak3r.pl/index.php?/archives/120-Stalker-SoC-Podczanie-nowego-poziomu-do-gry..html" rel="alternate" title="Stalker SoC: Podłączanie nowego poziomu do gry." />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-06-29T06:41:11Z</published>
        <updated>2010-07-01T15:50:16Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=120</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=120</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/120-guid.html</id>
        <title type="html">Stalker SoC: Podłączanie nowego poziomu do gry.</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p align="justify"><br />
Na <b><a href="http://forum.stalker.pl/viewtopic.php?f=68&t=9455">forum Stalker.pl</a></b> zamieściłem <i>tutorial</i> traktujący o tym, jak dołączyć nowo utworzony przez nas (lub i nie przez nas...) poziom (<i>level</i>) do grafu gry (<i>game graph</i>), wraz z utworzeniem odpowiednich przejść pomiędzy poziomami (<i>level changers</i>) dla gry <b>S.T.A.L.K.E.R. - Cień Czarnobyla</b>. Poradnik zakłada podstawową znajomość narzędzia <i>Level Editor</i> oraz pakietu <i>X-Ray SDK</i>.</p><br />
<br />
<p align="justify"><br />
Artykuł można znaleźć <b><a href="http://forum.stalker.pl/viewtopic.php?f=68&t=9455">tutaj</a></b>, natomiast poniżej można obejrzeć krótki filmik obrazujący efekt przejścia przez poradnik.</p><br />
<br />
<p align="justify"><br />
Miłego moddowania!</p><br />
<br />
<p align="center" /><center><br />
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/365T26FNa9Y&color1=0xb1b1b1&color2=0xd0d0d0&hl=pl_PL&feature=player_embedded&fs=1" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.youtube.com/v/365T26FNa9Y&color1=0xb1b1b1&color2=0xd0d0d0&hl=pl_PL&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="385" /></object><br />
</center><p /><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/119-Instalacja-niepodpisanych-sterownikow-pod-Windows-7-x64.html" rel="alternate" title="Instalacja niepodpisanych sterowników pod Windows 7 x64" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-06-20T15:13:42Z</published>
        <updated>2010-06-20T15:13:42Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=119</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=119</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/119-guid.html</id>
        <title type="html">Instalacja niepodpisanych sterowników pod Windows 7 x64</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p align="justify"><br />
Microsoft w jądrze Windows 7 wprowadził kilka bardzo fajnych nowości, &quot;zapomniał&quot; jednak o pozostawieniu jakiejś furtki końcowym użytkownikom, jeśli chodzi o zasady bezpieczeństwa. Mianowicie problemem stały się sterowniki do urządzeń, które nie są podpisane żadnym zaufanym certyfikatem. Można co prawda po jednej korekcie w opcjach systemu takowe sterowniki zainstalować, jednak urządzenie nadal działać nie będzie. </p><br />
<br />
<p align="justify"><br />
W związku z taką sytuacją, jedynym wyjściem do tej pory było wchodzenie w tryb awaryjny systemu. Nie jest to jednak ani wygodne, ani bezpieczne. Dlatego też, poniżej opiszę sposób, jak krok po kroku, pozbyć się tej uciążliwości.</p><br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/unsigned_drivers_01.png"><img src="http://utak3r.pl/varia/unsigned_drivers_01.png" width="594" height="376" /></a></p><br />
<br />
<p align="justify"><br />
Zaczniemy od włączenia możliwości instalacji niepodpisanych sterowników. Z poziomu <i>Panelu Sterowania</i> uruchamiamy <i>Edytor lokalnych zasad grupy</i> i w lewym panelu nawigujemy do pozycji <i>Konfiguracja użytkownika -&gt; Szablony administracyjne -&gt; System -&gt; Instalacja sterowników</i>. Otwieramy pozycję o nazwie <i>Podpisywanie kodu dla sterowników urządzeń</i>:</p><br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/unsigned_drivers_02.png"><img src="http://utak3r.pl/varia/unsigned_drivers_02.png" width="490" height="449" /></a></p><br />
<br />
<p align="justify"><br />
Zmieniamy ustawienie wg powyższego screena i zatwierdzamy. Następnie, pozbywamy się kolejnego ograniczenia. Uruchamiamy <i>Ustawienia kontroli konta użytkownika</i> i wyłączamy cały podsystem kontroli:</p><br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/unsigned_drivers_03.png"><img src="http://utak3r.pl/varia/unsigned_drivers_03.png" width="532" height="392" /></a></p><br />
<br />
<br />
<p align="justify"><br />
W tym momencie sterowniki można już instalować, ale... nie można ich nadal używać - co stawia pod znakiem zapytania inteligencję projektantów systemu... po co zezwalać na instalację, skoro to i tak nic nie daje? Restartujemy komputer i pobieramy program <b><a href="http://www.ngohq.com/home.php?page=dseo" target="_blank">Driver Signature Enforcement Overrider</a></b>, który pozwoli nam na uruchomienie naszych sterowników.</p><br />
<br />
<p align="center"><img src="http://utak3r.pl/varia/unsigned_drivers_04.png" /></p><br />
<br />
<p align="justify"><br />
Wybieramy opcję <i>Enable test mode</i>, następnie <i>Exit</i> i ponownie restartujemy system. Po ponownym uruchomieniu, nasz system jest gotowy na przyjęcie wielu nowych urządzeń <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" />   Jako dowód poniżej zrzut ekranowy z <i>Menadżera urządzeń</i> z zazanczonymi urządzeniami, które zostały zainstalowane wyżej opisaną metodą. Powodzenia!</p><br />
<br />
<p align="center"><img src="http://utak3r.pl/varia/unsigned_drivers_05.png" /></p><br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/118-ufp-utak3r-Flash-Player.html" rel="alternate" title="ufp - utak3r Flash Player" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-06-09T08:07:37Z</published>
        <updated>2010-06-09T08:42:51Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=118</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=118</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/118-guid.html</id>
        <title type="html">ufp - utak3r Flash Player</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<a href="http://www.brothersoft.com/utak3r-flash-player-299467.html"><img src="http://author.brothersoft.com/softimg/pick_100.gif" border="0" /></a><br />
<br />
<img src="http://utak3r.pl/flaga_pl.png" /><br />
<p align="justify"><br />
Już grubo od ponad pół roku z serwisu <b><a href="http://www.brothersoft.com/">BrotherSoft</a></b> można pobrać moją aplikację zwaną <b><a href="http://www.brothersoft.com/utak3r-flash-player-299467.html">ufp</a></b>, która właśnie uzyskała status <i>Editor's Pick</i>. Cóż to jest? <br />
<br />
Jest to aplikacja stworzona głównie z myślą o wysterowaniu paneli LEDowych, używanych powszechnie w reklamie (tzw. <i>LED walls</i>). Można ją jednak wykorzystać również do odtwarzania prezentacji w ogólnym pojęciu (np. projektor podpięty do laptopa). Pozwala ona zdefiniować obszar na ekranie, który będzie przeznaczony do odtwarzania, a następnie umożliwia ułożenie playlisty, która cyklicznie będzie odtwarzana. Obsługiwane formaty plików to przede wszystkim animacje Flash w formacie SWF, a także obrazy JPEG i PNG. Ważną cechą, wyróżniającą ten program wśród innych, jest brak tzw. <i>sandboksa</i>, co umożliwia uruchamianie animacji flashowych korzystających z internetu (np. w celu pobrania przez sieć danych do wyświetlenia).<br />
<br />
Aplikację pisałem dla siebie i jej używałem z powodzeniem na wielkich imprezach - i się sprawdza <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
Zapraszam do pobierania i testowania aplikacji.<br />
</p><br />
<br />
<center><p align="center"><img src="http://img.brothersoft.com/screenshots/softimage/u/utak3r_flash_player-299467-1256737452.jpeg" /></p></center><br />
<br />
<br />
<br />
<img src="http://utak3r.pl/flaga_uk.png" /><br />
<p align="justify"><br />
Since last fall on the <b><a href="http://www.brothersoft.com/">BrotherSoft</a></b> you can find my apllication, called <b><a href="http://www.brothersoft.com/utak3r-flash-player-299467.html">ufp</a></b>, which just got the <i>Editor's Pick</i> status. What's that?<br />
<br />
It's the application designed for driving LED walls, commonly used in advertisement market - but you can also use it for general purposes, too - let's say with the projector attached to a notebook. First, you can define the area on the screen, which will be used for playing the files, and then you can plan your playlist. In the playlist you can use Flash animations (in SWF format) and PNG or JPEG images. What is the power of this little application is the Flash player isn't closed in the sandbox. What that means? It means you can play animations which are using the internet (ie. for downloading some data to be displayed).<br />
<br />
I wrote this application for myself and I was using it with the success on really big events <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
Just go, download and test it.<br />
</p><br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/117-Intel-Concurrent-Collections-for-C++-proste-i-przejrzyste-programowanie-rownolege..html" rel="alternate" title="Intel® Concurrent Collections for C++  - proste i przejrzyste programowanie równoległe." />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-06-08T09:44:12Z</published>
        <updated>2010-06-08T09:44:12Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=117</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=117</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/117-guid.html</id>
        <title type="html">Intel® Concurrent Collections for C++  - proste i przejrzyste programowanie równoległe.</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
Tworzysz właśnie aplikację w C++ pod linuksa lub Windows, której zadaniem są m.in. długie obliczenia? Myślałeś o zrównolegleniu tych obliczeń?<br />
Jeśli tak - Intel udostępnia swój zestaw <b><a href="http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc/">Intel® Concurrent Collections for C++</a></b>. Cóż to takiego?<br />
<br />
<b>Concurrent Collections for C++</b> to zestaw kolekcji (&quot;steps&quot; dla obliczeń, &quot;tags&quot; dla kontroli oraz &quot;items&quot; dla danych), które umożliwiają przejrzystą implementację algorytmów równoległych. Zadania przedstawia się w formie grafu w specjalnie przygotowanej do tego celu notacji. Co więcej - Intel udostępnił również specjalne narzędzie wizualne do tworzenia owych grafów - GraphBuilder. Biblioteka łatwo integruje się z Microsoft Visual Studio.<br />
Autorką technologii jest <b>Kath Knobe</b>, która wiele lat spędziła przy programowaniu superkomputerów, obecnie jest zatrudniona w Intelu.<br />
<br />
<b><a href="http://software.intel.com/en-us/forums/intel-concurrent-collections-for-cc/">Dostępne jest również forum</a></b> poświęcone tej technologii.<br />
<br />
<center><p align="center"><br />
<object width="640" height="360" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" name="v_1900_279" id="v_1900_279"><param value="file=http://software.intel.com/media/videos/d/3/9/5/7/7/1/Intel_SW-OverviewOfIntelConcurrentCollectionsForCCByKathKnobePA762.flv&image=http://software.intel.com/media/videos/d/3/9/5/7/7/1/d395771085aab05244a4fb8fd91bf4ee_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true&plugins=http://software.intel.com/common/swf/listen&title=Overview+of+Intel%C2%AE+Concurrent+Collections+for+C%2FC%2B%2B+by+Kath+Knobe+Part+1" name="flashvars" /><param value="http://software.intel.com/common/swf/mediaplayer.swf" name="movie" /><param value="true" name="allowfullscreen" /><embed width="640" height="360" allowfullscreen="true" flashvars="file=http://software.intel.com/media/videos/d/3/9/5/7/7/1/Intel_SW-OverviewOfIntelConcurrentCollectionsForCCByKathKnobePA762.flv&image=http://software.intel.com/media/videos/d/3/9/5/7/7/1/d395771085aab05244a4fb8fd91bf4ee_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" bgcolor="#FFFFFF" src="http://software.intel.com/common/swf/mediaplayer.swf" /></object><br />
<br />
<object width="640" height="360" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" name="v_3023_280" id="v_3023_280"><param value="file=http://software.intel.com/media/videos/9/2/c/8/c/9/6/Intel_SW-OverviewOfIntelConcurrentCollectionsForCCByKathKnobePa785.flv&image=http://software.intel.com/media/videos/9/2/c/8/c/9/6/92c8c96e4c37100777c7190b76d28233_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true&plugins=http://software.intel.com/common/swf/listen&title=Overview+of+Intel%C2%AE+Concurrent+Collections+for+C%2FC%2B%2B+by+Kath+Knobe+Part+2" name="flashvars" /><param value="http://software.intel.com/common/swf/mediaplayer.swf" name="movie" /><param value="true" name="allowfullscreen" /><embed width="640" height="360" allowfullscreen="true" flashvars="file=http://software.intel.com/media/videos/9/2/c/8/c/9/6/Intel_SW-OverviewOfIntelConcurrentCollectionsForCCByKathKnobePa785.flv&image=http://software.intel.com/media/videos/9/2/c/8/c/9/6/92c8c96e4c37100777c7190b76d28233_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" bgcolor="#FFFFFF" src="http://software.intel.com/common/swf/mediaplayer.swf" /></object><br />
<br />
</p></center><br />
<br />
Przy okazji tematu, polecam gorąco odwiedzenie portalu <b><a href="http://software.intel.com/en-us/parallel/">Parallel Commuinity</a></b>, również prowadzonego przez Intel. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/116-Timer-do-lampki.html" rel="alternate" title="Timer do lampki" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-05-27T20:29:29Z</published>
        <updated>2010-05-27T20:29:29Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=116</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=116</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/5-Zrob-to-sam" label="Zrób to sam" term="Zrób to sam" />
    
        <id>http://utak3r.pl/index.php?/archives/116-guid.html</id>
        <title type="html">Timer do lampki</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p align="center"><img width="500" src="http://utak3r.pl/varia/elektronika/Timer_02_small.jpg" /></p><br />
<br />
W pokoju córeczki, gdy idzie spać, zostawiamy małą lampeczkę włączoną. Potem, gdy nam się o niej przypomni, należy ją wyłączyć. Owo &quot;gdy nam się o niej przypomni&quot; trwa od godziny do 6 godzin <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" />  Problem nie jest w poborze prądu, którego ta lampeczka pożera naprawdę niewiele, ale w tym, że jeśli się przebudzi w czasie, gdy lampka wciąż będzie się świecić, to albo się rozbudza, albo zabrania jej gasić - na kolejny okres czasu. Gdy się przebudzi przy zgaszonej już lampce - nie ma problemu. Dlatego też postanowiłem zbudować małego pomocnika w słusznej sprawie: <b>timer dla urządzeń zasilanych z sieci 230V</b>.<br />
<br />
<p align="center"><img src="http://utak3r.pl/varia/elektronika/Timer_04_small.jpg" /></p><br />
<br />
Schemat elektryczny tego urządzenia jest zwyczajnie banalny - ot, standardowe połączenie multipleksowanych dwóch cyfr 7-segmentowego wyświetlacza LED do mikrokontrolera PIC16F628A. Jako interfejs ustawiania zadanego czasu, można było zastosować dwa przyciski, ale ja u siebie wstawiłem enkoder obrotowy, który w obsłudze końcowej jest nieporównywalnie przyjemniejszy od przycisków - zwłaszcza, gdy przyjdzie nam ustawić czas rzędu np. 90 minut <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" />  Zastosowanie enkodera pociąga za sobą zmiany w programie, gdyż działa on tak, że za pomocą dwu-bitowego kodu Graya odczytujemy stan urządzenia - a stany mogą być trzy: w lewo, w prawo i nieokreślony. Dlatego też oprogramowanie wewnętrzne mikrokontrolera nie będzie niestety pasować do zwykłych przycisków.<br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/elektronika/Timer_schemat.png"><img width="500" src="http://utak3r.pl/varia/elektronika/Timer_schemat.png" /></a></p><br />
<br />
Modułem wykonawczym może być dowolna realizacja... może to być przekaźnik z cewką 5V, może być z własnym zasilaniem (np. 12V), może też to być zestaw optotriak-triak. Tę ostatnią opcję wybrałem dla swojej realizacji, jako, że z powodu swojego charakteru pasuje tutaj najbardziej do projektu. Poniżej możecie zobaczyć schematy pokazujące, jak zrealizować takie moduły wykonawcze.<br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/elektronika/Timer_modul_wykonawczy_przekaznik.png"><img width="500" src="http://utak3r.pl/varia/elektronika/Timer_modul_wykonawczy_przekaznik.png" /></a></p><br />
<br />
<p align="center"><a href="http://utak3r.pl/varia/elektronika/Timer_modul_wykonawczy_optotriak.png"><img width="500" src="http://utak3r.pl/varia/elektronika/Timer_modul_wykonawczy_optotriak.png" /></a></p><br />
<br />
<p align="center"><img src="http://utak3r.pl/varia/elektronika/Timer_optotriak_02_small.jpg" /></p><br />
<br />
Wsad do mikrokontrolera można pobrać <b><a href="http://utak3r.pl/varia/elektronika/Timer.hex">tutaj</a></b>. W razie jakichkolwiek problemów, czy to ze schematem, czy z oprogramowaniem - pytać <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" />  Jeżeli macie jakieś pomysły na usprawnienie urządzonka - pisać.<br />
<br />
Miłego odliczania czasu! 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/115-PIC16F-Realizacja-softwareowego-buforu-odbioru-USART.html" rel="alternate" title="PIC16F - Realizacja software'owego buforu odbioru USART" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-05-21T18:58:07Z</published>
        <updated>2010-05-21T18:58:07Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=115</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/5-Zrob-to-sam" label="Zrób to sam" term="Zrób to sam" />
    
        <id>http://utak3r.pl/index.php?/archives/115-guid.html</id>
        <title type="html">PIC16F - Realizacja software'owego buforu odbioru USART</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
Pracowałem ostatnimi dniami nad małym kontrolerkiem, sterowanym przez RS232. Obsługa niektórych poleceń, wydawanych do niego, trwała nawet po kilka milisekund i... okazało się, że użyty przeze mnie 16F628A ma bufor wejściowy USARTa rozmiaru... 2 bajtów. Tak, to nie pomyłka <img src="http://utak3r.pl/templates/default/img/emoticons/normal.gif" alt=":-|" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
<br />
Dlatego postanowiłem napisać obsługę cyklicznego bufora wejściowego - o rozmiarze wg uznania <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Poniżej przedstawiam wam, jak coś takiego zrealizować.<br />
<br />
<br />
Na początku, zmienne globalne:<br />
<br />
<pre>#define RX_BUFOR_MAX        32<br />unsigned char buforRX[RX_BUFOR_MAX];<br />unsigned char *buforRX_head, *buforRX_end, *RXreadstart, RXbajt;</pre><br />
<br />
<br />
i podczas inicjalizacji programu:<br />
<br />
<pre>    // ustawiamy bufor odbioru danych z UARTa<br />    buforRX_head = buforRX;<br />    buforRX_end = buforRX + RX_BUFOR_MAX;<br />    RXreadstart = buforRX;<br /><br />
</pre><br />
<br />
Tyle przygotowań.<br />
<br />
Proces odbioru danych i składowanie ich w cyklicznym buforze zrealizujemy w przerwaniu. Najpierw odpalamy przerwanie:<br />
<br />
<pre>   STATUS.RP0 = 1;<br />   PIE1.RCIE = 1; // przerwanie odbioru danych z UARTa<br />   STATUS.RP0 = 0;<br />   PIR1 = 0;<br /><br />
   INTCON.GIE = 1;<br />   INTCON.PEIE = 1;<br /><br />
</pre><br />
<br />
I definiujemy obsługę:<br />
<br />
<pre>void    interrupt(void)<br />{<br />  // przyszedł znak z UARTa<br />  if (PIR1.RCIF)<br />  {<br />      // cykliczny bufor z użyciem &quot;indirect addressing&quot;<br />      asm {<br />          movf RCREG,W<br />          movwf _RXbajt<br />          movf _buforRX_head, W<br />          movwf FSR<br />          movf _RXbajt, W<br />          movwf INDF<br />          incf _buforRX_head, f<br />      }<br /><br />
      if (buforRX_head == buforRX_end) // koniec buforu,<br />          buforRX_head = buforRX;         // zawijamy ogon.<br />         <br />
      PIR1.RCIF = 0; // koniec przerwania<br />  }<br />}<br />
</pre><br />
<br />
Pozostało nam napisanie funkcji korzystających z owego bufora. Wpierw funkcja badająca, czy w buforze czeka na nas jakiś nieprzetworzony znak:<br />
<br />
<pre>// czy w cyklicznym buforze czekają dane do odczytania?<br />unsigned char BUFRS_Data_Ready()<br />{<br />    if (RXreadstart == buforRX_head)<br />        return 0;<br />    else<br />        return 1;<br />}<br />
</pre><br />
<br />
No i funkcja odczytująca kolejny znak:<br />
<br />
<pre>// odczyt znaku z cyklicznego buforu<br />unsigned char BUFRS_Read()<br />{<br />    unsigned char bajt;<br />    asm {<br />        movf _RXreadstart, W<br />        movwf FSR<br />        movf INDF, W<br />        movwf BUFRS_Read_bajt_L0<br />        incf _RXreadstart, f<br />    }<br /><br />
    if (RXreadstart == buforRX_end)<br />        RXreadstart = buforRX;<br /><br />
    return bajt;<br />}<br />
</pre><br />
<br />
Na koniec przedstawię jeszcze moją małą funkcję odczytującą znak z określonym timeoutem operacji:<br />
<br />
<pre>void BUFRS_Read_Timeout(unsigned char *bajt, unsigned char timeout)<br />{<br />    unsigned char tout, read;<br />    tout = 0;<br />    read = 1;<br />    *bajt = 0;<br />    while ((read == 1) &amp;&amp; (tout &lt; timeout))<br />    {<br />        if (BUFRS_Data_Ready() &gt; 0)<br />        {<br />            *bajt = BUFRS_Read();<br />            read = 0;<br />        }<br />        else<br />            tout++;<br />    }<br />}<br />
</pre><br />
<br />
To tyle. U mnie - jak już pisałem, obsługa niektórych znaków zajmuje kilka milisekund, niektórych kilka mikrosekund - całość działa poprawnie przy 19200 (kwarc 20MHz). Oczywiście, powyższe działa tylko na mikrokontrolerach wyposażonych w sprzętowy moduł USART.<br />
<br />
Powodzenia. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/114-PIC16F-obsuga-LCD-z-Nokia-3310.html" rel="alternate" title="PIC16F - obsługa LCD z Nokia 3310" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-04-28T23:02:34Z</published>
        <updated>2010-04-28T23:02:34Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=114</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/5-Zrob-to-sam" label="Zrób to sam" term="Zrób to sam" />
    
        <id>http://utak3r.pl/index.php?/archives/114-guid.html</id>
        <title type="html">PIC16F - obsługa LCD z Nokia 3310</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
Zabawiałem się w ostatnich dniach wyświetlaczem LCD z poczciwej Nokii 3310. LCD nie jest rewelacyjny, ale ma te swoje 84x48 pikseli monochromatycznego obrazu. W trybie tekstowym, z małą czcionką, wystarcza to na 6 rzędów po 14 znaków.<br />
<br />
<center><img src="http://img64.imageshack.us/img64/489/termometrfoto01small.jpg" /></center><br />
<br />
Szukając w sieci biblioteki do jego obsługi, przejrzałem zyliony projektów typu &quot;LCD-on-LPT&quot; i nieco mniej, bo już tylko miliony <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> projektów na wszelkie AVRki. PICe jakoś słabo były reprezentowane, a już mikroC najsłabiej. Dlatego skompilowałem z wszystkich dostępnych mi materiałów działającą bibliotekę. Z powodzeniem uruchomiłem ją na 2kB procesorze 16F628A (<b>uwaga: LCD pracuje pod napięciem 3.3V!!</b>) <br />
<br />
Na chwilę obecną, biblioteka pozwala na wyświetlanie napisów w dwóch różnych rozmiarach - przy użyciu tylko jednego zdefiniowanego kroju pisma - skalowanie następuje w locie, podczas wyświetlania. W planach dodanie grafiki. <br />
<br />
Biblioteka dostępna jest jako <b>LGPL</b>, podczas jej opracowywania, jak już wspominałem, wykorzystywałem różne źródła (no i własną pracę). Największymi dawcami idei i pomysłów byli <b>Louis Frigon</b> oraz <b>Lieven Hollevoet</b>. <br />
<br />
Załączam również przykładowy projekt, wykorzystujący ów LCD i bibliotekę - taki mały zegarko-termometr  Dzięki niemu można dowiedzieć się, jak podłączyć wyświetlacz i jak skorzystać z biblioteki. Zwracam tylko uwagę na konieczność ustawienia swoich pinów LCD w pliku <b>N3310LCD.h</b>. <br />
<br />
<center><br />
<img src="http://img227.imageshack.us/img227/5346/termometrfoto03small.jpg" />    <img src="http://img63.imageshack.us/img63/6797/termometrfoto02small.jpg" /><br />
</center><br />
<br />
Bibliotekę oraz przykładowy projekt znaleźć można na <b><a href="http://www.elektroda.pl/rtvforum/topic1653101.html" target="_blank">forum elektrody</a></b>. A następny LCD w kolejce do rozpracowania jest przyjemny LCD kolorowy, o wymiarach 128x128 pikseli - dostępny na allegro za ok. 20zł <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/113-Najprostszy-programator-PIC16F-i-pokrewnych.html" rel="alternate" title="Najprostszy programator PIC16F i pokrewnych" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-04-18T18:36:31Z</published>
        <updated>2010-04-18T18:36:31Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=113</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=113</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/5-Zrob-to-sam" label="Zrób to sam" term="Zrób to sam" />
    
        <id>http://utak3r.pl/index.php?/archives/113-guid.html</id>
        <title type="html">Najprostszy programator PIC16F i pokrewnych</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify"><br />
Podczas poszukiwania kilku elementów w mojej przepastnej szafie, odnalazłem dwa zagubione egzemplarze mikrokontrolera PIC 16F628A firmy Microchip... Dodając do tego, że od dawna myślałem o powrocie do mikrokontrolerów, a także że od kilku lat dzień w dzień widuję się z kolegą, który wciąż mnie namawia do tego (a sam jest specem) - no cóż, te dwie odnalezione kostki dopełniły dzieła i... wróciłem do zajmowania się nimi <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
<br />
W dzisiejszych czasach królują dwie rodziny małych mikrokontrolerów - AVRy od Atmela i PICe od Microchipa. Zwłaszcza wśród nowo zaczynających (m.in. dzięki &quot;Oślej Łączce&quot; z czasopism AVT) popularne są AVR. Ja jednak PICe już znam - to po pierwsze, a po drugie, mimo wszystko, PICe uważam za lepszy wybór (ale wojen żadnych nie mam zamiaru toczyć z nikim w tym temacie).</div><br />
<br />
<div align="center"><img width="541" height="406" src="http://utak3r.pl/varia/elektronika/Programator_RS232_01.jpg" /></div><br />
<br />
<div align="justify"><br />
Zabawa rozpoczęła się oczywiście od budowy programatora. Z czasem i tak zakupię duży programator na USB, z możliwością debugowania, ale na razie... wychodząc z założenia, że to tylko chwilowe rozwiązanie, należało znaleźć coś, co jest najprostsze i najtańsze w produkcji. Wybór padł na JDM, ale jak się szybko okazało, większość dostępnych schematów odnosi się do starszych przedstawicieli 16F. Dlatego Dostosowałem schemat do warunków programowania 16F628A, przy okazji upraszczając schemat JDM (i tak już prosty). Po trzech dniach walk i prób na breadboardzie (płytce stykowej) osiągnąłem działający egzemplarz. Kilka dni intensywnego działania - programuje 100 na 100 <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Dlatego też już poszedł na płytkę drukowaną. Przy okazji, wyposażyłem go w złącze ICSP, które sppisuje się świetnie (o programowaniu ICSP powiem potem kilka słów jeszcze).<br />
<br />
Schemat? Schemat jest prosty jak... drut <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" />  Wygląda bardziej skomplikowanie, niż to jest w rzeczywistości - a to za sprawą wyprowadzenia dodatkowego złącza ICSP.</div><br />
<br />
<div align="center"><a href="http://utak3r.pl/varia/elektronika/Programator_RS232_schemat.png"><img width="546" height="283" src="http://utak3r.pl/varia/elektronika/Programator_RS232_schemat.png" /></a></div><br />
<br />
<div align="justify"><br />
Płytki PCB nawet nie projektowałem, w pół godziny polutujecie wszystko sobie na dowolnej płytce uniwersalnej. Jedyny problem to gniazdo RS232, w którym trzeba będzie nieco ponaginać piny... osobiście piny 6 oraz 9 usunąłem, natomiast piny 7 i 8 lekko nagiąłem - w ten sposób całe gniazdo ładnie osiadło w rastrze 2,54 mm. Jako gniazdo pod procesor dałem podstawkę DIL18, ale jeżeli znajdziecie gniazdo ZIF - polecam. Do programowania ICSP postawiłem sobie gniazdo 2x5 pinów, takie, jakie widać na płytach komputerowych (taśma 10 żył). Dlaczego takie? Po pierwsze, taśmę 10 pin łatwo dostać <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" />  a po drugie, po podłączeniu całego jednego rzędu w tym gnieździe do masy, na taśmie co druga żyła to masa właśnie. Ma to niebagatelne znaczenie, gdyż okazuje się, iż największym problemem w taśmach do ICSP jest linia CLOCK. Dlatego więc: taśmę robimy tylko tak długą, jak jest to potrzebne, linię CLOCK odseparować, o ile to możliwe, dodatkowo linie przedzielone masą: świetna sprawa. Warto zrobić sobie dwie taśmy: jedną zakończoną wtyczką z obu stron, drugą z wtyczką i po drugiej stronie rozdzielonymi i odizolowanymi kabelkami, dodatkowo pobielonymi cyną. Po co? Do włożenia w breadboard, żeby podczas prototypowania układu nie przekładać czipa w te i we wte co dwie minuty.</div><br />
<br />
<div align="center"><img width="541" height="227" src="http://utak3r.pl/varia/elektronika/Programator_RS232_02.jpg" /></div><br />
<br />
<div align="justify"><br />
Na koniec kilka słów o dostosowywaniu układu docelowego do przyszłego programowania poprzez ICSP. Dwie najważniejsze sprawy, to bezwzględne odłączenie oryginalnego zasilania układu podczas programowania (a to z kolei pociąga za sobą, aby linię Vdd z gniazda podłączyć bezpośrednio do procesora, a nie do wspólnego punktu zasilania) oraz separacja linii Vpp - na przykład diodą. Takie rozwiązania wyklucza co prawda ten port z bycia ewentualnym wyjściem, ale... pamiętaj, że podczas programowania Vpp wynosi do 13V! Jedynym innym wyjściem jest zastosowanie wyłącznika mechanicznego. Z pozostałych problemów, warto jest nie używać, o ile to nie jest koniecznie, linii CLOCK i DATA, gdyż podczas programowania podpięte układy mogą wprowadzić zakłócenia uniemożliwiające poprawne zaprogramowanie układu.</div><br />
<br />
<div align="center"><img width="541" height="406" src="http://utak3r.pl/varia/elektronika/Programator_RS232_03.jpg" /></div><br />
<br />
<div align="justify"><br />
To tyle, życzę miłego programowania <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
</div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/112-BeeWinDiff-uaktualnienie.html" rel="alternate" title="BeeWinDiff - uaktualnienie" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-03-23T13:52:36Z</published>
        <updated>2010-03-30T12:23:36Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=112</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/112-guid.html</id>
        <title type="html">BeeWinDiff - uaktualnienie</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify">Zaktualizowałem i przebudowałem program <b><a target="_blank" href="http://utak3r.pl/index.php?/archives/79-BeeWinDiff_1.9.html">BeeWinDiff</a></b>. W tej chwili oparty jest o świeżą wersję <i>Qt 4.6.2</i>. Dołączyłem również natywny windowsowy plik <i>diff.exe</i>, ze znalezieniem którego niektórzy mieli problemy.</div><br />
<br />
<div align="center"><img src="http://utak3r.pl/varia/BeeWinDiff.png" /></div><br />
<br />
<div align="justify">Przypominam, że program można pobrać <b><a href="http://utak3r.pl/varia/BeeWinDiff-1.9.zip">tutaj</a></b>, natomiast wymagane do uruchomienia programu biblioteki - <b><a href="http://utak3r.pl/varia/Qt462rt.zip">tutaj</a></b>.</div><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/111-Premiera-gry-Metro-2033.html" rel="alternate" title="Premiera gry Metro 2033" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-03-19T11:25:02Z</published>
        <updated>2010-03-19T12:01:31Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=111</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=111</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/1-Ronoci" label="Różności" term="Różności" />
    
        <id>http://utak3r.pl/index.php?/archives/111-guid.html</id>
        <title type="html">Premiera gry Metro 2033</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>Metro 2033.</p><br />
<p align="justify"><img vspace="10" hspace="10" border="0" align="right" src="http://img510.imageshack.us/img510/8014/metro940991824maly.jpg" />Co to jest? To po pierwsze książka autorstwa Dmitrija Glukhovsky'ego. Książka napisana rewelacyjnie, pochłaniająca czytelnika bez granic. Powiem o niej tylko tyle, że jej 600 stron(!) połknąłem w niecałą dobę, co powinno stanowić wystarczającą rekomendację do sięgnięcia po nią. A po drugie, to gra typu FPS (czyli strzelanka), oparta o tę książkę. Pieczę nad stroną fabularną gry trzymał autor książki, natomiast wykonaniem zajęło się studio 4A Games (wydawca to THQ). Co to za nieznane studio? Okazuje się, że w skład drużyny wchodzą ludzie, którzy pracowali nad pierwszą wersją kultowej gry S.T.A.L.K.E.R., co nie powinno jednak prowadzić do zbyt daleko wysuniętych wniosków. Owszem, klimat ten sam, ba, nawet w technikaliach gry znajdziemy wiele podobieństw (nawet zmienne w pliku konfiguracyjnym gry nazywane są bardzo podobnie), jednak Metro 2033 to typowy liniowy shooter, bardziej podobny do gier typu Half Life, niż Stalker.</p><br />
<p align="justify">Miałem to szczęście, że jako aktywny modder gry Stalker, oraz współtwórca rodzącego się serwisu <a href="http://metro-2033.pl/" target="_blank">metro-2033.pl</a>, mogłem uczestniczyć w przedpremierowych beta-testach gry. Wrażenia z pobytu w siedzibie polskiego wydawcy i lokalizatora, <b>CD Projekt</b>, <a href="http://metro-2033.pl/2010/03/06/cd-projekt-wizyta-marzec2010/" target="_blank">opisałem na łamach owego serwisu</a>.</p><br />
<p align="justify">Czym się gra wyróżnia spośród innych? Jest tego kilka: postapokaliptyczny klimat, który wycieka z ekranu i głośników, piękna grafika, która wygląda tak jak wygląda nie tylko pod DirectX 11, które obsługuje, ale i również pod, uwaga, DirectX 9! Sama rozgrywka to, jak już wspomniałem, liniowy shooter. Na szczęście fabuła jest bardzo sprawnie poprowadzona i gra jest naprawdę ciekawa.</p><p align="justify">Wokół gry narobiło się bardzo dużo szumu z powodu dość niefortunnie przedstawionych przez THQ wymagań sprzętowych, które okazały się na szczęście dość mocno zawyżone (lepiej w sumie tak, niż na odwrót). Mój komputer to Pentium D @3,2GHz, 4GB RAM i karta GeForce 9600GT z 1GB RAMu. Gra w rozdzielczości 1280x1024 (bo w takich rozdzielczościach grywam) działa w okolicach 30 kl./s., momentami zwalniając do nieco powyżej 20 kl./s.</p><br />
<p align="justify">Ogółem... jeżeli ktoś lubi klimatyczne gry, które pozostawiają po sobie ślad - naprawdę szczerze polecam tę pozycję. Jeżeli jednak należysz do tych, którzy muszą mieć 120 kl./s. przy rozdzielczości Full-HD, a do tego wybór 150 rodzajów broni (nieważne, że każda do siebie podobna) - odradzam, to nie jest gra dla miłośników Call of Duty, czy Battle Field, serio.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/110-Bash-Backup-bazy-Firebird-i-upload-przez-FTP.html" rel="alternate" title="Bash: Backup bazy Firebird i upload przez FTP" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-03-03T09:20:40Z</published>
        <updated>2010-03-03T09:20:40Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=110</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=110</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/110-guid.html</id>
        <title type="html">Bash: Backup bazy Firebird i upload przez FTP</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify">W trakcie pisania prostego skryptu, odpalanego z <i>crona</i>, który na serwerze ma za zadanie wykonać backup bazy firebird i wysłać plik na wyznaczony serwer FTP, napotkałem się na jeden mały niuans, który może komuś sprawić pewien problem.</div><br />
<div align="justify">W zasadzie, wydawało by się, skrypt powinien wyglądać tak:</div><br />
<br />
<pre>#!/bin/bash<br /><br />data=`date +%Y%m%d`<br />plik_baza=/home/utak3r/bazy/baza.gdb<br />plik_backup=/home/utak3r/backup/backup_$data.gbk<br /><br /># backup bazy<br />if [ -e &quot;$plik_backup&quot; ]<br />then<br />	rm -f $plik_backup<br />fi<br />/opt/firebird/bin/gbak -b -g -l $plik_baza $plik_backup<br />if [ ! -e &quot;$plik_backup&quot; ]<br />then<br />	echo &quot;Przerywam operacje.&quot;<br />	exit<br />fi<br />echo &quot;Backup poprawny.&quot;<br /><br /># pakowanie backupu<br />if [ -e &quot;$plik_backup.bz2&quot; ]<br />then<br />
	rm -f &quot;$plik_backup.bz2&quot;<br />fi<br />/bin/bzip2 $plik_backup<br />if [ ! -e &quot;$plik_backup.bz2&quot; ]<br />then<br />	echo &quot;Przerywam operacje.&quot;<br />	exit<br />fi<br />echo &quot;Backup spakowany poprawnie.&quot;<br /><br /># ftpujemy plik na serwer<br />plik_backup_bz2=$plik_backup.bz2<br /><br />ftp -n utak3r.pl &lt;&lt;EOC<br />user login haslo<br />passive<br />binary<br />cd backupy_bazy<br />put ${plik_backup_bz2}<br />bye<br />EOC<br /><br />echo &quot;Plik skopiowany na FTP.&quot;<br />
</pre><br />
<br />
<div align="justify">Jednak, okazuje się, że wszystko działa - poza wysyłaniem pliku na serwer. Dlaczego? Problem w tym, że wspaniały klient ftp potrafi wysyłać pliki <b>tylko i wyłącznie z bieżącego katalogu</b>. Dlatego też, fragment skryptu odpowiedzialny za tę operację, powinien wyglądać następująco:</div><br />
<br />
<pre># ftpujemy plik na serwer<br />plik_backup_bz2=$plik_backup.bz2<br />akt_sciezka=`pwd`<br />backup_sciezka=${plik_backup_bz2%/*}<br />backup_basename=${plik_backup_bz2##*/}<br /><br /># ftp może uploadowac pliki TYLKO z AKTUALNEGO katalogu !!!<br />cd $backup_sciezka<br /><br />ftp -n utak3r.pl &lt;&lt;EOC<br />user login haslo<br />passive<br />binary<br />cd backupy_bazy<br />put ${backup_basename}<br />bye<br />EOC<br /><br />cd $akt_sciezka<br />echo &quot;Plik skopiowany na FTP.&quot;<br />
</pre><br />
<br />
<div align="justify">Miłego zbierania backupów <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></div><div align="justify"><br />
</div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/109-Reversi.html" rel="alternate" title="Reversi" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2010-01-21T12:44:40Z</published>
        <updated>2010-01-21T12:44:40Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=109</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=109</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/1-Ronoci" label="Różności" term="Różności" />
    
        <id>http://utak3r.pl/index.php?/archives/109-guid.html</id>
        <title type="html">Reversi</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify">Po rozmowach ze znajomymi, postanowiłem odszukać na dysku swoje stare dziełko... Znalazłem też i parę innych rzeczy, nad którymi kiedyś pracowałem, ale jest tego mnóstwo i wymaga przesiania ;)  W każdym razie, dla was dzisiaj, w pełni funkcjonalna i całkiem niezła pod względem AI, gra logiczna Reversi. Wygląda wg mnie całkiem nieźle, patrząc na inne klony tej popularnej gry. Dodatkowo, zmiana kamieni jest animowana - animacje renderowane w 3D jakieś 7 lat temu ;)  Do wyboru jest kilka poziomów trudności.</div><br />
<br />
<div align="center"><img src="http://img69.imageshack.us/img69/830/reversi094.png" /></div><br />
<br />
<div align="center">Pobierz <a href="http://www.4shared.com/file/203050753/e22aae01/Reversi-094.html"><b>Reversi 0.94</b></a>.</div><br />
<br />
<div align="justify">Znalazłem też mój wielki projekt, nad którym siedziałem w latach 2000-2003 bodajże... pisałem engine gry 3D. Engine powstał i... straciłem zainteresowanie ;)  Oto, co pozostało: działający engine z dwoma pokojami... dodam, że silnik jest całkowicie software'owy, żadnego sprzętowego dopalania.</div><br />
<br />
<div align="center"><object width="480" height="385"><param value="http://www.youtube.com/v/S1PsZ4kqeWA&hl=pl_PL&fs=1&" name="movie" /><param value="true" name="allowFullScreen" /><param value="always" name="allowscriptaccess" /><embed width="480" height="385" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://www.youtube.com/v/S1PsZ4kqeWA&hl=pl_PL&fs=1&" /></object></div><br />
<br />
<div align="justify">Jak coś jeszcze godnego uwagi znajdę, dam znać <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/108-Otwieranie-tunelu-SSH.html" rel="alternate" title="Otwieranie tunelu SSH" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2009-11-04T13:41:23Z</published>
        <updated>2009-11-04T13:41:23Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=108</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=108</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/108-guid.html</id>
        <title type="html">Otwieranie tunelu SSH</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p align="justify">Jak szybko i prosto otworzyć tunel po SSH? Okazuje się, że do prostych zadań wystarczy... znany wszystkim (chyba) programik PuTTY. Proces otwierania tunelu pokażę na przykładzie przekierowania portu 2401, czyli podpięciu się do serwera cvs. Po co tak? Załóżmy, że mamy w firmie serwer cvs, który nie jest wystawiony publicznie i jest dostępny jedynie w ramach sieci LAN firmy. Jeden warunek: musimy mieć konto shellowe na serwerze, z którym się będziemy tunelować.</p><br />
<p align="baseline">Otwieramy PuTTY i wprowadzamy adres serwera i port SSH, po którym zazwyczaj się z nim łączymy, aby dojść do konsoli:</p><br />
<br />
<div align="center"><img src="http://utak3r.pl/varia/putty_tunel_01.png" /></div><br />
<br />
<p align="baseline">Przechodzimy teraz do zakładki <b><font face="courier new,courier,monospace">Connection -&gt; SSH -&gt; Tunnels</font></b> i definiujemy elementy tunelu.</p><br />
<br />
<div align="center"><img src="http://utak3r.pl/varia/putty_tunel_02.png" /></div><br />
<br />
<p align="baseline">Wybieramy opcję &quot;local&quot; i podajemy w &quot;source port&quot; port, który otworzymy na naszym komputerze, po czym w &quot;destination&quot; adres IP i port docelowy.</p><br />
<br />
<div align="center"><img src="http://utak3r.pl/varia/putty_tunel_03.png" /></div><br />
<br />
<p align="justify">Klikamy przycisk &quot;Add&quot; i jesteśmy gotowi. Zapisujemy sesję na przyszły użytek (z poziomu zakładki &quot;Sessions&quot;) i łączymy się i logujemy. Od tej pory mamy otwarty tunel na podany port. W podanym tutaj przykładzie, klientowi cvs podajemy, że serwer cvs znajduje się pod adresem 127.0.0.1:2401. Działa! <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><img width="24" height="24" id="myFxSearchImg" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" hidden="true" /> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/107-Apophysis-2.09.html" rel="alternate" title="Apophysis 2.09" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2009-09-10T20:41:04Z</published>
        <updated>2009-09-10T20:51:09Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=107</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/3-Apophysis" label="Apophysis" term="Apophysis" />
    
        <id>http://utak3r.pl/index.php?/archives/107-guid.html</id>
        <title type="html">Apophysis 2.09</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify">As the time of expiration of Apophysis 2.08 beta 2 has come, here's a brand new release of <b>Apophysis 2.09</b>. <br />
<br />What's new?</div><br />
<br />
<div align="justify"></div><div align="justify"><i>+ Added favourite variations<br />+ In variables list there're displayed only used ones<br />+ Not used variations are greyed out<br />+ Thumbnails in flames list<br />+ &quot;Symmetry&quot; parameter renamed to &quot;Color speed&quot;<br />+ Added checking XML for unrecognized variation/variable values<br />- 64-bit renderer removed<br />+ Many various fixes</i></div><div align="justify"></div><br />
<div align="justify">One thing to keep in mind though: it's still in a beta state, so expect some crashes from time to time... <img src="http://utak3r.pl/templates/default/img/emoticons/wink.gif" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></div><div align="justify">You can get this new release at <b><a target="_blank" href="https://sourceforge.net/projects/apophysis/">SourceForge.net</a></b>, as always.</div><div align="justify"></div><div align="justify">Have fun!</div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://utak3r.pl/index.php?/archives/106-MSSQL-podpicie-istniejcego-pliku-.mdf.html" rel="alternate" title="MSSQL - podpięcie istniejącego pliku *.mdf" />
        <author>
            <name>Piotr Borys</name>
                    </author>
    
        <published>2009-09-07T09:07:54Z</published>
        <updated>2009-09-07T09:07:54Z</updated>
        <wfw:comment>http://utak3r.pl/wfwcomment.php?cid=106</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://utak3r.pl/rss.php?version=atom1.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    
            <category scheme="http://utak3r.pl/index.php?/categories/2-Komputerologia-stosowana" label="Komputerologia stosowana" term="Komputerologia stosowana" />
    
        <id>http://utak3r.pl/index.php?/archives/106-guid.html</id>
        <title type="html">MSSQL - podpięcie istniejącego pliku *.mdf</title>
        <content type="xhtml" xml:base="http://utak3r.pl/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<div align="justify">Jeżeli zdarzy wam się, że ktoś w swojej bezkresnej mądrości i błyskotliwości, na prośbę przysłania wam bazy danych z serwera MS SQL Server, przyśle sam goły plik <i>baza.mdf</i>, nie popadajmy w panikę ;)  Postaramy się podpiąć taki plik jako nową bazę - choć nie zawsze, niestety, się to uda. W grę wchodzi tutaj kompatybilność plików bazy i zainstalowanego serwera.</div><div align="justify">Najpierw odnajdujemy katalog, w którym trzymane są pliki baz docelowej instancji serwera MSSQL (pamiętaj! Może być ich kilka na jednym komputerze!) - zazwyczaj <i>C:\Program Files\Microsoft SQL Server\MSSQL$NAZWA_INSTANCJI\Data</i>. Następnie dowolnym narzędziem logujemy się na ten serwer i wchodzimy do bazy master (<i>USE master</i>). Następnie wydajemy polecenie:</div><div align="justify"></div><div align="justify"><pre>EXEC sp_attach_single_file_db <br />@dbname = 'nowa_baza', <br />@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL$NAZWA_INSTANCJI\Data\przyslany_plik_bazy.mdf'<br />GO</pre></div><div align="justify">System poinformuje nas o utworzeniu nowego pliku historii <i>*.LDF</i>, ewentualnie dokona aktualizacji struktury fizycznej pliku do obowiązującej wersji serwera MSSQL i już możemy cieszyć się z nowo podpiętej bazy danych <img src="http://utak3r.pl/templates/default/img/emoticons/smile.gif" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></div> 
            </div>
        </content>
        
    </entry>

</feed>