<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title><![CDATA[RazmjenaVjestina: RazmjenjivaciVjestina]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?action=weblog_display;category=RazmjenjivaciVjestina</link>
<description></description>
<pubDate>Tue, 08 Sep 2009 19:06:38 -0000</pubDate>
<webMaster>root@saturn.ffzg.hr</webMaster>
<generator>Socialtext Workspace v2.19.0.2</generator>

<item>
<title><![CDATA[RazmjenjivaciPitaju]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?razmjenjivacipitaju</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: CroPuppian, PuppyLinux, RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><img alt="http://puppylinux.com/gatespup_100.jpg" src="http://puppylinux.com/gatespup_100.jpg" border="0" /></td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.puppylinux.com/faq.htm">http://www.puppylinux.com/faq.htm</a></td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://puppylinux.ca/news/">http://puppylinux.ca/news/</a></td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?zdravko_maricevic_s_notepad" title="(201 months)  Information Portal Favorite Tags Web Bookmarks RV_search GNUplan http www.netvibes.com tag svakodne...">zdravko_maricevic_s_notepad</a></td>
</tr>
</table>
<br /><p>
1.) Jos jedna nova distra. Od kuda je nastala ?</p>
<p>
Puppy nije izveden ni iz jedne poznate distribucije. Razvijen je u Australiji kao &quot;Linux from scratch&quot; i objavljen polovicom 2003.<br />
<a target="_blank" title="(external link)" href="http://www.puppylinux.com/pfs/index.html">http://www.puppylinux.com/pfs/index.html</a><br />
Iza njega osobno stoji Barry Kauler rano umirovljeni profesor i developer.</p>
<p>
2.) Znam, znam ....Sve te live distr-e su samo demo verzije za pokazivanje, spore su pri radu i ne raspoznaju hardware...</p>
<p>
Puppy nije spora distra. Jednostavno projektirana je za brzo dizanje sa cd-a ili tvrdog diska, usb-a, .... , a izabrane aplikacije su lake i brze. Probajte za pocetak surfanje Seamonkey-em pa se uvjerite...Puppy inace ima respektabilnu kolekciju driver-a &quot;out of the box&quot;</p>
<p>
3.) Da, ali ova ti distra nije kompatibilna s ostalim poznatim distrama i ima svoj sustav upravljanja paketima. Ipak navikao sam na deb, rpm ili slack tgz pakete.</p>
<p>
Puppy ima alate za pretvaranje paketa. Jednostavno, vrlo jednostavno moze se deb, rpm, tgz pretvoriti u puppy &quot;pet format&quot;.</p>
<p>
Puppy 5 serija koja se intenzivno razvija bazira se na novom revolucionarnom Puppy Bilderu zvanom WOOF <a target="_blank" title="(external link)" href="http://www.puppylinux.com/woof/index.html">http://www.puppylinux.com/woof/index.html</a></p>
<p>
Vidim da zelis Puppy-a kompatibilnog s Ubuntu-om. Pa dobro zasto ga ne &quot;izbildas&quot; izravno koristeci Ubuntu repozitorije.</p>
<p>
Ako te interesira rezultat provjeri kako funkcionira UPUP (Jaunty PUPPY na 80Mb) <a target="_blank" title="(external link)" href="http://ftp.linux.hr/puppylinux/test/woof-alpha7/">http://ftp.linux.hr/puppylinux/test/woof-alpha7/</a></p>
<p>
4.) Kakav ti je to linux, kad ne mogu na njemu iskompajlirati kernel ?</p>
<p>
Svatko moze ako hoce iskompajlirati kernel/module u Puppy-u. Recimo da je to ostavljeno za naprednije korisnike..., ali kako si ti napredniji za tebe je pripremljen Puppy-kernel-source_XXX.sfs kojega mozes skinuti i sa linux server-a u Hrvatskoj, naravno zajedno s kompajler-om. <br />
<a target="_blank" title="(external link)" href="http://ftp.linux.hr/puppylinux/sfs_modules-3/">http://ftp.linux.hr/puppylinux/sfs_modules-3/</a><br />
Kad se odlucis za kompajliranje dignes ga u RAM s Menu | System | Boot Manager -om i nastavis prema uputama na <a target="_blank" title="(external link)" href="http://www.puppylinux.com/development/compilekernel.htm">http://www.puppylinux.com/development/compilekernel.htm</a></p>
<p>
4.1) Primjetio sam da ti je kernel nekako arhaican...ipak 2.6.30.X...</p>
<p>
Razvoj kernela i puppy-a postaje jako dinamican. Uostalom zasto ne preuzmes vec &quot;pechirani&quot; izvorni kod <a target="_blank" title="(external link)" href="http://puppylinux.com/sources/kernel-2.6.30.5/">http://puppylinux.com/sources/kernel-2.6.30.5/</a></p>
<p>
5) Covjece pa ti ulazis u root promt sto se nikako ne preporuca. Gdje su ti &quot;permissions denied ?&quot;</p>
<p>
Puppy stiti svoj &quot;pupsave&quot; file koji se moze enkriptati i backupirati i karakateristican je za svakog od korisnika. Ulaz u sustav je inace otvoren radi jednostavnosti pristupa. Ako bas zelis mozes dodati svakog od korisnika sa klasicnim login-om. Ali sjeti se samo kako si kao pocetnik buljio u ekran i pitao se sto je to root te bio sretan kad si otkrio gksu oliti kdesu.</p>
<p>
6) JWM (Joe Window Manager) ? Nikad cuo !!! Osim toga jako mi slici na Win98, ne ne... to je prestaromodno.</p>
<p>
Tocno, ali prelaznici s Windows-a trebaju za pocetak nesto poznato , tako da mogu odmah koristiti aplikacije na najlaksi nacin. To ne znaci da se Puppy neda iskonfigurirati za neki od poznatih window manager-a. Potrebno je samo instalirati dodatni paket. Minimalisticki wmii_3.1.5 i ratpoison rade kao da su radjeni za Puppy-a.</p>
<p>
7) Ipak neke mi se aplikacije uopce ne svidjaju, a one koje volim nemas na Puppy CD-u ? Kad bih bar mogao sloziti samo svoj CD..</p>
<p>
Kolekcija na CD-u samo je jedan od izbora. Naravno Puppy ima na svom repozitoriju mnogo vise aplikacija. Moguce je zapeci vlastiti CD sa izabranim programima. Derivati Puppy-a zovu se Pupplet-i i mogu se skinuti s <br />
<a target="_blank" title="(external link)" href="http://www.puppylinux.org/downloads/puplets_view">http://www.puppylinux.org/downloads/puplets_view</a><br />
<a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/index.php?f=35">http://www.murga-linux.com/puppy/index.php?f=35</a></p>
<p>
npr. Firefox, Opera, Mplayer, Lastfm, Streamripper....</p>
<p>
8) Nemas osnovni Open Office paket. Kako cu otvoriti odp i ppt file format ?</p>
<p>
Open Office je poveci paket programa koji ukljucuje i simpress. Puppy ga aktivira kao posebni modul boot manager-om za konfiguraciju sto se namjesta kod prvog bootanja ili po zelji.</p>
<p>
9) Ispis s lspci ti je nepotpun. Kako cu jednostavno ustanoviti pci sucelj-a i pripadajuce kernel module ?</p>
<p>
U Menu-u | System poziva se programcic Puppscan interface information. Ovdje pregledno mozes pregledati hardware informacije i pipadajuce kernel module.</p>
<p>
10) Hej pa ti koristis misa vise nego je to uobicajeno. Gdje su ti shortcut-ovi ?</p>
<p>
Jasno, jasno ipak izgleda da imam previse navika od Windoza. Ipak JWM (Joe Windows Manager) ima pod Menu | Desktop | JWM Configuration mogucnost konfiguracije shortcut-ova. Pokusat cu ih koristiti sto vise, ali to ne ide tako lako...</p>
<p>
11) Shortcut Alt+F2 kojim otvaras program gmrun za brzi unos aplikacija ti ne radi. Gle, pa nemas ni dokumentaciju za JWM.</p>
<p>
Potrebno je uci u Menu | Desktop | JWM Configuration | Keyboard_Shortcuts te pod action upisati exec:gmrun. Dokumentacija za JWM se nalazi na <br />
<a target="_blank" title="(external link)" href="http://www.joewing.net/programs/jwm/config.shtml#keys">http://www.joewing.net/programs/jwm/config.shtml#keys</a></p>
<p>
12) Gle, najbolji shell bash nije ti standardno namjesten vec moram stalno ukucavati bash.</p>
<p>
Tocno ovo je smetalo mnoge korisnike pa je od verzije 2.17 bash standardan.</p>
<p>
13) Kakva ti je to Distra bez Emacs-a i Lispa? Zanemarujes GEEKY STYLE !!!<br />
Iako ga nema u standardnoj kolekciji moguce ga je doinstalirati.</p>
<p>
Uostalom zasto ne preuzmes vec pripravljeni derivat/puplet <a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?p=256583">thnake<!-- wiki-renamed-hyperlink "thnake"<http://www.murga=-linux.com/puppy/viewtopic.php?p=256583> --></a>**s ugradjenim LISPom ?</p>
<p>
14) Ja sam ti staromodan. Volim kompajlirati source. Uostalom gdje ti je kompajler ?</p>
<p>
Kompajler se distribuira kao devx_4xx.sfs datoteka i moze se naci na <a target="_blank" title="(external link)" href="http://ftp.linux.hr/puppylinux/sfs_modules-4/">http://ftp.linux.hr/puppylinux/sfs_modules-4/</a>. Potrebno je samo omoguciti dizanje u ram konfiguracijom u Puppy BootManager-u.</p>
<p>
15) Kako da pisem po ntfs particiji ? Moram li instalirati ntfs-3g ?</p>
<p>
Covjece pa on ti je na osnovnom CD-u kao i vecina ostalih alata bez kojih se ne izlazi...</p>
<p>
16) Ipak sigurno ne mozes pokrenuti 3-d desktop. Distra ti je simpa ali samo za slaba racunala. Ne ipak ne mogu bez &quot;kocke koja se okrece&quot;....</p>
<p>
Razvoj Pupy-a ne spava. Nadam se da nemas nista protiv da zavrtis compiz fusion na Puppy 3.X <a target="_blank" title="(external link)" href="http://youtube.com/watch?v=u30ciyNkPAk">http://youtube.com/watch?v=u30ciyNkPAk</a><br />
Naravno potrebno je samo skinuti Puplet wNOP sa <a target="_blank" title="(external link)" href="http://www.tombh.co.uk/CF/about.php">http://www.tombh.co.uk/CF/about.php</a> i imati racunalo mladje od 5 godina.</p>
<p>
17) Ukljucio sam USB, ali ga Puppy ne raspoznaje.</p>
<p>
To samo znaci da koristis stariju verziju od 4.0. Za one koji ne vole rucno mauntanje Puppy je od verzije 4.0 uveo udev hotplug sustav specificno prilagodjen za Puppy. Inace Puppy koristi i tradicionalni pristup rucnog montiranja jednostavnim pritiskom na ikonicu &quot;drive&quot;. Vecina Puppy korisnika zeli nauciti sto radi i zasto radi. Korisno za proces ucenja, zar ne ?</p>
<p>
18) Ja sam ti digitalni umjetnik. Previse multimedijalnih aplikacija trebam naknadno doinstalirati. Potrebno mi je nešto kao sto je Dynebolic linux.</p>
<p>
Puppy ima odgovor i za umjetnike. Isprobaj zato <a target="_blank" title="(external link)" href="http://www.grafpup.org">http://www.grafpup.org</a>. <br />
Blender, Gimp, Inkscape, Scribus... sve je tu na dohvat ruke ukljucujuci i sve potrebne drive-re. Nakon podizanja u ram aplikacije se izvode i brze nego na defaultnim glomaznim distram-a.</p>
<p>
19) Usta su ti puna hvale, ali na internetu postoji pravo brdo malih distribucija. Zasto bi bas odabrao Puppy ?</p>
<p>
Linux je svijet izbora. Mozda ce ti ovaj preglednik pomoci...<br />
<a target="_blank" title="(external link)" href="http://www.puppylinux.org/wiki/archives/old-wikka-wikki/categorydocumentation/distros">http://www.puppylinux.org/wiki/archives/old-wikka-wikki/categorydocumentation/distros</a></p>
<p>
20) Radi li Puppy na ASUS EEE PC-u ?</p>
<p>
Derivat Puppy-a PUPEEE snimio sam na USB. Ne sumnjam da nece raditi na EEEPC-u. Pa Puppy se je medju prvima razvijao i kao OS na flash-u.</p>
<p>
<a target="_blank" title="(external link)" href="http://puppylinux.ca/members/Pupeee/">http://puppylinux.ca/members/Pupeee/</a></p>
<p>
21) Ocigledno, Puppy je zaista brz, vjerojatno zato sto se izvrsava izravno iz RAM-a ?<br />
Ali npr. i Gentoo SysRescueCD se moze potpuno podici u RAM pa postaje brz!</p>
<p>
Tocno, ali specificnost Puppy-a je da je postupak bootanja brz i ne traje cijelu vjecnost ;).<br />
Puppy ne prozdire RAM da bi zauzvrat brzo radio.<br />
Objasnjenje slojevite strukture Puppy-a mozes pronaci na stranici u nastavku. <br />
<a target="_blank" title="(external link)" href="http://www.puppylinux.com/development/howpuppyworks.html">http://www.puppylinux.com/development/howpuppyworks.html</a></p>
<p>
22) Ipak kad je toliko dobar zasto nema i KDE verziju ?</p>
<p>
KDE se dade dodatno instalirati kao kde.sfs paket. Isprobao sam najbrzi KDE za kojeg znam, a i ti ga mozes skinuti sa stranice <a target="_blank" title="(external link)" href="http://lhpup.org/">http://lhpup.org/</a>.</p>
<p>
23) Sve mi to lici nekako jednostavno, za igranje. A kad ce me zaboliti glava od problema ?<br />
Upravo tako. Puppy je i zamisljen kao Linux za zadovoljstvo mnostva korisnika. Glava neka i dalje boli developer-e.</p>
<p>
24) Zar je moguce da Puppy nema niti jedan fork projekt? Cuo sam naime da se Puppy vodi precvrsto rukom njegovog tvorca. <br />
Koliko znam svjetli primjer uspjesnog fork projekta je <a target="_blank" title="(external link)" href="http://minisys-linux.de/muppy0083/EN/index.htm">MuppyLinux.<!-- wiki-renamed-hyperlink "MuppyLinux."<http://minisys=-linux.de/muppy0083/EN/index.htm> --></a><br />
Njegov tvorac jedan je od najaktivnijih je clanova <a target="_blank" title="(external link)" href="http://murga-linux.com/puppy/viewtopic.php?p=173456#173456">PuppyForuma<!-- wiki-renamed-hyperlink "PuppyForuma"<http://murga=-linux.com/puppy/viewtopic.php?p=173456#173456> --></a> i sve sto napravi za Muppy ponudi i za Puppy. Jedina primjedba bi bila da ne zeli odustati od kompatibilnosti s KDE-o i GNOME-om. Kao evropski Puppy preporucio bi ga svakome jer ima englesku, njemacku i francusku lokalizaciju.</p>
<p>
25) Zasto u postupku instalacije moram izabrati &quot;si&quot;(slovensku) tipkovnicu da bi dobio hrvatske znakove č,ć,ž, š.đ. Ako izaberem &quot;croat&quot; tipkovnicu uporno dobivam znakove za &quot;cz&quot; tipkovnicu.</p>
<p>
Tocno radi se o bugu u skripti xorgwizard. <br />
;<br />
cr) #croat<br />
&nbsp;&nbsp;XKEYMAP=&quot;cz&quot;<br />
;<br />
Prijavio sam bug na PuppyForumu, ali jos uvijek nije ispravljen. <br />
<a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?p=188208#188208">http://www.murga-linux.com/puppy/viewtopic.php?p=188208#188208</a></p>
<p>
26) Jeli moguca lokalizacija PuppyLinux-a na hrvatski jezik uz koristenje lokalizacijskih datoteka *.mo ostalih distri/programa ? <br />
U izborniku Desktop - Chooselocale country localization moguce je instalirati hr_HR locale. Nova se lokalna datoteka pojavljuje u /usr/lib/locale/hr_HR.<br />
Pri tome se mijenja LANG globalna varijabla u /etc/profile na LANG=hr_HR.<br />
Na puppy forumu pronasao sam i dobar howto koji se moze primjeniti i za nase prilike.</p>
<p>
<a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?p=222449#222449">http://www.murga-linux.com/puppy/viewtopic.php?p=222449#222449</a></p>
<hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/RazmjenjivaciPitaju">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/RazmjenjivaciPitaju> --></a> <span class="nlw_phrase">Dec 2 3:52am<!-- wiki: {date: 2007-=12-=02 11:52:10 +0100} --></span></p>
</div>
]]></description>
<author>Zdravko Maricevic</author>
<category>CroPuppian, PuppyLinux, RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?razmjenjivacipitaju</guid>
<pubDate>Tue, 08 Sep 2009 19:06:38 -0000</pubDate>
</item>
<item>
<title><![CDATA[SvakodnevneDovitljivostiOneLineri]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?svakodnevnedovitljivostionelineri</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: AkA, RazmjenjivaciVjestina, SvakodnevneDovitljivosti, TamTam</div><hr/><div class="wiki">
<p>
Ponekad se dogodi da smo pronašli ili konstruirali nekakvu relativno složenu komandnu liniju i ne želimo kroz taj proces prolaziti ponovo. Ovo mjesto je zamišljeno kao mala baza takvih znanja -- navalite!<br />
<strong>Xnest</strong></p>
<p>
Startavanje Xnesta sa nekim window managerom (npr./usr/local/bin/rvwm):</p>
<pre>
xinit /usr/local/bin/rvwm -- /usr/X11R6/bin/Xnest :1 -geometry 800x600 -ac
</pre>
<br /><p>
ili</p>
<pre>
Xnest :1
DISPLAY=:1 /usr/local/bin/rvwm
</pre>
<br /><p>
(druga varjanta ponekad ne radi)</p>
<p>
<strong>Router</strong></p>
<p>
Imate wireles karticu /dev/wlan0, i izlazak na internet preko /dev/eth0 i želite postati router ostatku ekipe:</p>
<pre>
echo 1 &gt; /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE na &quot;serveru&quot;
a route add default gw &quot;server-ip&quot; na clientu
</pre>
<br /><p>
<strong>Prženje CD-a</strong></p>
<pre>
cdrecord -scanbus dev=ATA
</pre>
<br /><p>
skanira uređaje, a</p>
<pre>
cdrecord -v dev=ATA:a,b,c img.iso
</pre>
<br /><p>
prži cd. Parametre a b i c prepišemo iz izlaza scanbusa</p>
<p>
<strong>X background</strong></p>
<p>
Mjenja defaultnu pozadinu X-a</p>
<pre>
xsetroot -solid color
</pre>
<br /><p>
<strong>Automatsko startanje Screena</strong></p>
<pre>
if [ &quot;$STY&quot; = &quot;&quot; ]; then
exec screen -RR
fi
</pre>
<br /><p>
stavi u ~/.bashrc</p>
<hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/AkA/SvakodnevneDovitljivostiOneLineri">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/AkA/SvakodnevneDovitljivostiOneLineri> --></a> <span class="nlw_phrase">Dec 14 5:56am<!-- wiki: {date: 2007-=12-=14 13:56:42 +0100} --></span></p>
</div>
]]></description>
<author>Alan Pavi&#x10D;i&#x107;</author>
<category>AkA, RazmjenjivaciVjestina, SvakodnevneDovitljivosti, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?svakodnevnedovitljivostionelineri</guid>
<pubDate>Fri, 17 Apr 2009 09:29:09 -0000</pubDate>
</item>
<item>
<title><![CDATA[FrAnkO]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?franko</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<p>
Student talijanskog i južnoslavenskih jezika i književnosti u Zagrebu, aktivist <a target="_blank" title="(external link)" href="http://www.ups-umag.org">Umaškog pokreta za slobodu<!-- wiki-renamed-hyperlink "Umaškog pokreta za slobodu"<http://www.ups=-umag.org> --></a>. Živi dokaz da ne moraš biti ne znam kakav IT stručnjak da bi bio sposoban vrtit linux u svakodnevnom korištenju kompjutera (internet, pisanje/čitanje, glazba, video/filmovi, igrice...). Makar, istina je i to da sam se u samom početku strašno izdrkavao s njim... :-p Zato sam danas spreman da svoja skromna znanja i vještine koja sam do sada stekao podijelim s apsolutnim početnicima.</p>
<p>
Na svom kopjuteru vrtim Ubuntu.</p>
<p>
FrankoNudi:</p>
<ul>
<li>Osnovna znanja i vještine kod korištenja GNU/Linuxa, osobito Ubuntua, ali i ostalih Debianovih potomaka.</li>
<li>Audio streaming s Internet DJ Console-om.</li>
<li>Uređivanje teksta u OpenOffice.org Writeru</li>
<li>Filozofiranje o slobodnom softveru i slobodnoj kulturi</li>
<li>Znanje o književnosti</li>
<li>jezične vještine hrvatskog (i srpskog), slovenskog i talijanskog jezika i teorijsko znanje o njima</li>
</ul>
<p>
FrankoTrazi:</p>
<ul>
<li>Slobodu ;-)</li>
<li>Proizvodnja zvuka i glazbe u softveru za GNU/Linux sustave, pogotovo u trackerima</li>
<li>Dizajniranje Gnome i Xfce tema</li>
<li>Enkripcija (GPG) i anonimnost na mreži</li>
<li>Bilo što što mu u nekom trenutku zatreba ili padne na pamet</li>
<li>Pomoć kad eventualno degdje zapne</li>
</ul>
<hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/FrAnkO">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/FrAnkO> --></a> <span class="nlw_phrase">Dec 1 9:53am<!-- wiki: {date: 2007-=12-=01 17:53:29 +0100} --></span></p>
</div>
]]></description>
<author>franko</author>
<category>RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?franko</guid>
<pubDate>Sat, 07 Mar 2009 14:30:07 -0000</pubDate>
</item>
<item>
<title><![CDATA[CroPuppian]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppian</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: CroPuppian, PuppyLinux, RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<h1 id="cropuppiannudi"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppiannudi" title="(223 months)  [CroPuppian] nudi _ http www.murga-linux.com puppy images icons icon17.gif 1) Brzo pokretanje insta...">CroPuppianNudi</a></h1>
<h1 id="cropuppiantrazi"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppiantrazi" title="(213 months) 1.) Email &amp; GNUPG - rijeseno (primjenu gpg-a razjasnio [BuD]. Enigmail radi medjutim samo pod Th...">CroPuppianTrazi</a></h1>
<h1 id="cropuppianukratko"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppianukratko" title="(221 months)  [CroPuppian] ili pravim imenom Zdravko Maričević prosječni je linux hoby korisnik. Za Puppy Linux h...">CroPuppianUkratko</a></h1>
<h1 id="razmjenjivacipitaju"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?razmjenjivacipitaju" title="(202 months)  http puppylinux.com gatespup_100.jpg http www.puppylinux.com faq.htm http puppylinux.ca news [zdrav...">RazmjenjivaciPitaju</a></h1>
<h1 id="isprobalipuppy"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?isprobalipuppy" title="(210 months)  Datum Razmjenjivac PC Hardware CD Boot HD Boot USB Boot Primjedba 02-06-07 [ZdraVko] Toshiba TECRA ...">IsprobaliPuppy</a></h1>
<h1 id="puppymatricavjestina"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?puppymatricavjestina" title="(213 months) [CroPuppianNudi] (poveznica nema znaci samo da jos nisu napisane pisane smjernice) Br. Vjestina Pove...">PuppyMatricaVjestina</a></h1>
<h1 id="zdravko_maricevic_s_notepad"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?zdravko_maricevic_s_notepad" title="(201 months)  Information Portal Favorite Tags Web Bookmarks RV_search GNUplan http www.netvibes.com tag svakodne...">zdravko_maricevic_s_notepad</a></h1>
<hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian> --></a> <span class="nlw_phrase">Sep 30 1:32am<!-- wiki: {date: 2007-=09-=30 08:32:50 +0200} --></span></p>
</div>
]]></description>
<author>Zdravko Maricevic</author>
<category>CroPuppian, PuppyLinux, RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppian</guid>
<pubDate>Sun, 01 Feb 2009 14:37:12 -0000</pubDate>
</item>
<item>
<title><![CDATA[IsprobaliPuppy]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?isprobalipuppy</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: CroPuppian, RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Datum</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Razmjenjivac</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">PC Hardware</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">CD Boot</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">HD Boot</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">USB Boot</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Primjedba</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">02-06-07</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?zdravko" title="(245 months)  ZdraVkoNudi [ZdraVkoTrazi]  original http www.razmjenavjestina.org RazmjenjivaciVjestina ZdraVko da...">ZdraVko</a></td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Toshiba TECRA A8-103</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Da</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">ndiswrapper load windows driver-a</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">02-06-07</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?nitro" title="(244 months)  NitRoNudi NitRoTrazi [NitRoLinkovi]  original http www.razmjenavjestina.org RazmjenjivaciVjestina N...">NitRo</a></td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">??wireless</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Da</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">neuspio pokusaj instalacije na HD i aktivacija GRUB-a zbog potrgane particijske tablice</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">15-05-07</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?zeljkowriter" title="(258 months) [ZeljkoWriterNudi] ZeljkoWriterTrazi  original http www.razmjenavjestina.org RazmjenjivaciVjestina Z...">ZeljkoWriter</a></td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Duron 700</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Da</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">puppy215ce</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">10-06-07</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Libervisco</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Intel Core 2 Duo E6320, 1GB RAM, 80GB Seagate Barracuda HD, Optiarc AD-5170A DVD ,Gigabyte 965P mobo.</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Da</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">&quot;cannot find Puppy on 'idecd' boot media.&quot;</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">10-05-08</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><p>
gosponIvo<br />
(barba Ive)</p>
</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Dell Inspiron 1300</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Da</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><p>
<del>potrebno rucno podesavanje xorg.conf</del> ] <br />
radi besprijekorno i s instalacijom na tvrdi disk. Isprobano na Puppy301(<a target="_blank" title="(external link)" href="http://www.lhpup.org">http://www.lhpup.org</a> - KDE Puppy)</p>
</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">31-01-2009</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Alen</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Toshiba S 1800-750</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">Ne</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/[SajamZajebaneOpreme">http://www.razmjenavjestina.org/[SajamZajebaneOpreme</a>Boot-ao do komandne linije - Ima prastari (10years old) video chipset Trident Cyberblade/i1; Pokusati s izmjenjenim xorgwizardom &quot;<a target="_blank" title="(external link)" href="http://www.tinyurl.com/alenovtrident">http://www.tinyurl.com/alenovtrident</a>&quot;</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/IsprobaliPuppy">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/IsprobaliPuppy> --></a> <span class="nlw_phrase">Jul 8 1:20am<!-- wiki: {date: 2007-=07-=08 08:20:16 +0200} --></span></p>
</div>
]]></description>
<author>Zdravko Maricevic</author>
<category>CroPuppian, RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?isprobalipuppy</guid>
<pubDate>Sun, 01 Feb 2009 11:03:24 -0000</pubDate>
</item>
<item>
<title><![CDATA[KruNo]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?kruno</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<h5 id="umjesto_uvoda">Umjesto uvoda</h5>
<p>
Dobrodošli na moju stranicu na Razmjeni vještina!</p>
<p>
Zovem se Kruno.</p>
<p>
<a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?krunonudi" title="(259 months)  vi (vim, vile) awk scripting tetris regular expressions tcl tk foundations of c (education) gospel ...">KruNoNudi</a></p>
<p>
Imam potrebu za odgovorima o:</p>
<ul>
<li>podešavanje znakovnih stranica na Linux-u</li>
<li>make yourself liveCD Linux distribution</li>
<li>networking</li>
</ul>
<p>
Isus vas voli.</p>
<p>
KP.</p>
<h5 id="ubuntu">Ubuntu</h5>
<p>
Nedavno sam si na laptop instalirao Ubuntu distribuciju Linuxa. Mogu priznati da dobro radi. Na trenutak sam se razočarao činjenicom da s Ubuntuom ne mogu reproducirati MP3-datoteke, ali sam ubrzo obaviješten da je MP3 vlasnički<br />
zapis; umjesto MP3-zapisa se preporuča Vorbis OGG. Na sljedećim Razmjenama vještina ću predložiti malu raspravu o temi zapisa glazbenih datoteka (MP3 ili OGG?).</p>
<p>
31. 8. 2005., KP.</p>
<h5 id="tcl">Tcl</h5>
<p>
Već sam vam nekoliko puta spomenuo da koristim programski jezik Tcl; njegovo ime je kratica izraza &quot;Tool Command Language&quot;. Radi se o jednostavnom i moćnom programskom jeziku. Uz pomoć njegove biblioteke Tk (kratica za &quot;Toolkit&quot;) moguće je na jednostavan način graditi elemente slikovnog okruženja (prozori, gumbi, upisna polja i drugo).</p>
<p>
Nakon kratkog teoretskog uvoda možemo odmah uzeti stvari u ruke i napraviti mali opit. Pokrenite ljusku Wish instalacije Tcl-a na vašoj omiljenoj Linux-distribuciji i upišite ovaj kod (nakon upisa naredbe pritisnite tipku Enter):</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">label .l1 -text &quot;Hello!&quot;</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Zatim upišite naredbu:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">pack .l1</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Na prozoru uz konzolu za upis naredbi biste trebali vidjeti mali prozor s oznakom (labelom) &quot;Hello!&quot;.</p>
<p>
Za danas, toliko...</p>
<p>
25. 9. 2005., KP.</p>
<h5 id="awk">awk</h5>
<p>
Ako sam već napisao par rečenica o Tcl-u, onda bih vas podsjetio na <strong>awk</strong>, svoj omiljeni skriptni programski jezik. Njegovi tvorci, Aho, Weinberger i Kernighan, osmislili su ga kao sredstvo za pretraživanje i obradu tekst datoteka. Nastao je 1977. godine i još se aktivno primjenjuje u suvremenoj praksi.</p>
<p>
Ako želite uz pomoć programskog jezika awk pronaći neki uzorak u tekst datoteci, upišite ovu naredbu:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">awk '/uzorak/' datoteka</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Na ovaj način awk primjenjujete poput programskog pomagala <strong>grep</strong>.</p>
<p>
Broj redaka u tekst datoteci možete prebrojati primjenom ove awk skriptice:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">awk '{ i ++ } END { print i }' datoteka</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
awk je, kao što zapažate, poseban po mogućnosti da program napišete u retku za upis naredbi. Naravno, program možete smjestiti u tekstovnu datoteku, pa ga pozvati naredbom:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">awk -f program datoteka</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
8. 10. 2005., KP.</p>
<h5 id="grep_u_boji">grep u boji</h5>
<p>
<a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a> je već dao savjet za grepanje u boji, a ja sam odlučio o tome još jednom napisati, sebi za podsjetnik.</p>
<p>
Klasični alat za pretraživanje teksta, <strong>grep</strong>, od pojave izvedbe <strong>2.5</strong> ima mogućnost prikaza u boji traženog uzorka. Boja se u novoj izvedbi grep-a uključuje primjenom prekidača <strong>--color</strong>. Provjerite izvedbu grep-a na vašem računalu uz pomoć prekidača <strong>--ver</strong>.</p>
<p>
Slobodno isprobajte bojanje uzroka u grep-u izvršenjem naredbe</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">ps</td>
<td style="border: 1px solid black;padding: .2em;">grep --color bash</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Trebali biste vidjeti sve retke u kojima je riječ <em>bash</em>, a ta riječ bi trebala biti u boji (by default je to crvena boja).</p>
<p>
Da biste izbjegli eksplicitno navođenje prekidača --color, u datoteku .bashrc (ili u datoteku postavki ljuske koju koristite) umetnite alias:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">alias grep='grep --color=always'</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Sada uz pomoć grep-a možete vizalno provjeriti što se zaista tražili.</p>
<p>
28. 02. 2006., KP.</p>
<h5 id="intro_u_c">Intro u C</h5>
<p>
Na nekoliko prethodnih Razmjena vještina razgovarali smo o C-u. Ovdje je prezentacija o temeljima C-a: <span class="nlw_phrase"><span class="wafl_existence_error">C.sxi Prezentacija_o_Cu</span><!-- wiki: {file: C.sxi Prezentacija_o_Cu} --></span></p>
<p>
15. 04. 2006., KP.</p>
<h5 id="regularni_izraz_u_vi_u">Regularni izraz u vi-u</h5>
<p>
Ovaj regularni izraz sam nedavno skovao da bih, s vi editorom, postavio znakove &quot;&gt; &quot; na početak retka za Reply u poruci:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">%s/^/&gt; /gc</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
Postavljanje točke na kraj predikata (pretvorba predikata u Prolog<br />
program):</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
<td style="border: 1px solid black;padding: .2em;">%s/)$/)./gc</td>
<td style="border: 1px solid black;padding: .2em;"><span style="padding:.5em">&nbsp;</span></td>
</tr>
</table>
<br /><p>
04. 11. 2006., KP.</p>
<h5 id="rad_na_cuc_u_2007">Rad na CUC-u 2007</h5>
<p>
Moj rad o udaljenom pristupu s Windows- na Linux-računalo:</p>
<p>
<a target="_blank" title="(external link)" href="http://www.carnet.hr/CUC/program/radovi/e-1-bio.html">http://www.carnet.hr/CUC/program/radovi/e-1-bio.html</a></p>
<p>
19. 11. 2007., KP.</p>
<p>
<strong>Rad na CUC-u 2008</strong></p>
<p>
Rad o prijepisu datoteka s Linux- na Windows-računalo na <a target="_blank" title="(external link)" href="http://cuc.carnet.hr/">CUC-u 2008<!-- wiki-renamed-hyperlink "CUC=-u 2008"<http://cuc.carnet.hr/> --></a>.</p>
<p>
13. 12. 2008., KP.</p>
<ul>
<li>&nbsp;</li>
</ul>
<hr />
<p>
Proba:</p>
<span class="nlw_phrase"><img alt="logoLarge.gif" src="https://saturn.ffzg.hr/razmjenavjestina/index.cgi/logoLarge.gif?action=attachments_download;page_name=kruno;id=20071215153452-20-20324" /><!-- wiki: {image: logoLarge.gif} --></span><br /><br /><hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/KruNo">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/KruNo> --></a> <span class="nlw_phrase">Nov 19 6:16am<!-- wiki: {date: 2007-=11-=19 14:16:41 +0100} --></span></p>
</div>
<hr/><div>Attachments: C.sxi, logoLarge.gif, Prezentacija o C-u</div>]]></description>
<author>Kruno Peter</author>
<category>RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?kruno</guid>
<pubDate>Sat, 13 Dec 2008 15:45:27 -0000</pubDate>
</item>
<item>
<title><![CDATA[CroPuppianTrazi]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppiantrazi</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: CroPuppian, RazmjenjivaciVjestina, TamTam, Trazi</div><hr/><div class="wiki">
<p>
1.) Email &amp; GNUPG - rijeseno !</p>
<p>
(primjenu gpg-a razjasnio <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a>. Enigmail radi medjutim samo pod Thunderbird-om &gt;=2.0 ili Seamonkey mail-om &gt;= 1.1. Ostaje da se isto pokusa napraviti pod Pine-om i Mutt-om).<br />
Nakon repeticije gradiva koju je proveo <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?marcellmars" title="(227 months) [[GoogleSearch(Marcell Mars)]] image nogice.png [MarcellMarsNudi] [MarcellMarsTrazi] Pitanja i odgov...">MarcellMars</a> odlucio sam se za instalaciju najbrzeg E-mail client-a kojeg znam, a koji vec odavno podrzava GNUPG i IMAP. Claws Mail 2.9.0 radi bez greske zahvaljujuci Hiroyuki Yamamoto iz Japana &lt;<a href="mailto:hiro-y@kcn.ne.jp">hiro-y@kcn.ne.jp</a>&gt; te sam ga odmah postavio kao default-ni na svom Puppy 2.17.</p>
<p>
2) Tiddlywiki Blog Tool</p>
<p>
3) Prakticna iskustva s racunalima hladjenim vodom. Prihvacaju se i druga tehnicka rjesenja za tihi rad primjerana domacim uvjetima.</p>
<p>
Odlucio sam se za hladjene zrakom, ugradio Big Tower(CHIEFTEC GX-01B-OP), navodno dobro hladi, ali huci li ga huci...sve bih dao da ga usutkam..</p>
<p>
4) Linux boot s PCMCI CF kartice (Compact Flash). Gentoo je to navodno rijesio, ali ne znam kako ?</p>
<p>
5) PXE Network boot sa stroja pod XP-om i/ili Ubuntu-om. <del>Nasao sam principijelno rjesenje na</del>. <del>Sad ga je potrebno samo tehnicki i ostvariti. &quot;Glomazni kernel&quot; imam, a ostalo...snaci cemo se.</del>.. - Nakon uspostave vrela distribucija na bljak-u ( <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?vrelo_distribucija_demonstracija" title="(210 months) BuD i Horza (abecednim redom) sa Razmjene vještina upogonili su Vrelo distribucija . Utočiti neku od...">vrelo distribucija demonstracija</a> ) potrebno bi bilo puppy postaviti na bljak-ov pxe-boot. Pribavio sam glomazni initrd.gz kojeg bi sad trebalo editirati/pripasati zasto mi treba pomoc.</p>
<p>
6) Koristenje Gentoo binarnih paketa na Puppylinux-u. Dakako trebalo bi nekako izvuci binarni paket prije instalacije. (na ostalim je linux-ima to prije - make install - kad se stvara puppy pet format).</p>
<p>
Teoretski to je uredu, ali prakticki nema smisla. Mozda bi trebalo koristiti gotove Sabayon pakete ? Jedna od mogucnosti je i Gentoo radjen na Puppy jezgri. Ideja je vrlo interesantna i nalazi se na <a target="_blank" title="(external link)" href="http://www.simplux.org">http://www.simplux.org</a>.</p>
<p>
7)Pomoc pri konfiguraciji kucne heterogene mreze od 3 racunala.</p>
<blockquote>
1. PC Intel Core 2 Quad Q6600 2,4 GHz ; 4 GB RAM ; GeForce8800 GTS; HDD 320 GB;<br />
Osnovni je sustav XP game konzola. U postupku je instalacija 64 bitnog Ubuntu-a u dual boot-u</blockquote>
<br /><blockquote>
2. PC Intel Pentium 4 1,8 Ghz; 1Mb RAM-a; GeForce 6200; HDD 1x320 GB &amp; 2x80 GB<br />
dual boot Ubuntu Dapper Drake &amp; XP . Printer HP 970 Cxi prikljucen je lokalno na paralelnom port-u.</blockquote>
<br /><blockquote>
3. Laptop IBM R32 pod Puppy Linux-om 3.1</blockquote>
<br /><p>
Za sada mreza je konfigurirana kao peer to peer s prikljuckom na adsl preko wire router-a <br />
Siemens C-010-i sa statickim IP adresama. <br />
U prvom je koraku potrebno iskristalizirati osnovni koncept mreze serverskog tip-a.<br />
Preferirao bi instalaciju ako je to moguce i vise Virtual Private Linux Server-a na jakoj masini te dijeljenje resursa jake masine kao terminal server-a ......</p>
<p>
O svemu tome premalo znam .... pa zato i trebam pomoc...razmjenjivaca..</p>
<p>
8) Konfiguraciju za Dynebolic Afro Linux CD i to verziju koja radi na Laptop-u IBM R32</p>
<p>
Kao deklarirani korisnik javio se je <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?drgspot" title="(227 months) [DrGspotNudi] [DrGspotTrazi] [DrGspotLinkoviAlToTrebaSredit] [DrGspotKnjigeCasopisi] [DrGspotEventsC...">DrGspot</a> koji je ponudio demo CD. Izgleda obecavajuce s velikim razvojnim potencijalom...Potrebno odmah ubaciti driver za joystick tipkovnice te poboljsati koristenje RAM-a jer aplikacije trepere....</p>
<p>
9) Tragam za poklonicima malih distribucija radi opcenite razmjene iskustava. Osim <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?drgspot" title="(227 months) [DrGspotNudi] [DrGspotTrazi] [DrGspotLinkoviAlToTrebaSredit] [DrGspotKnjigeCasopisi] [DrGspotEventsC...">DrGspot</a>(Dynebolic) i <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?kruno" title="(211 months)  Umjesto uvoda Dobrodošli na moju stranicu na Razmjeni vještina Zovem se Kruno. [KruNoNudi] Imam pot...">KruNo</a> (DSL - <a target="_blank" title="(external link)" href="http://saturn.ffzg.hr/bljak/index.cgi?kp_s_notepad">Krunek<!-- wiki-renamed-hyperlink "Krunek"<http://saturn.ffzg.hr/bljak/index.cgi?kp_s_notepad> --></a>) nisam jos nazalost sreo nikoga drugog-a.<br />
----</p>
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/CroPuppianTrazi">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/CroPuppianTrazi> --></a> <span class="nlw_phrase">Oct 8 4:38am<!-- wiki: {date: 2007-=10-=08 11:38:57 +0200} --></span></p>
</div>
]]></description>
<author>Zdravko Maricevic</author>
<category>CroPuppian, RazmjenjivaciVjestina, TamTam, Trazi</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppiantrazi</guid>
<pubDate>Thu, 16 Oct 2008 15:47:34 -0000</pubDate>
</item>
<item>
<title><![CDATA[PuppyMatricaVjestina]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?puppymatricavjestina</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: CroPuppian, CroPuppianNudi, Nudi, PuppyLinux, RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<p>
<a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?cropuppiannudi" title="(223 months)  [CroPuppian] nudi _ http www.murga-linux.com puppy images icons icon17.gif 1) Brzo pokretanje insta...">CroPuppianNudi</a> (poveznica &quot;nema&quot; znaci samo da jos nisu napisane pisane smjernice)</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;">Br.</td>
<td style="border: 1px solid black;padding: .2em;">Vjestina</td>
<td style="border: 1px solid black;padding: .2em;">Poveznica</td>
<td style="border: 1px solid black;padding: .2em;">Primjedba</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">0</td>
<td style="border: 1px solid black;padding: .2em;">jos sam Windoza</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.goosee.com/best/index.html">http://www.goosee.com/best/index.html</a></td>
<td style="border: 1px solid black;padding: .2em;">ipak na svoj nacin</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">1</td>
<td style="border: 1px solid black;padding: .2em;">instalacija puppy-a</td>
<td style="border: 1px solid black;padding: .2em;">boot-aj puppy cd</td>
<td style="border: 1px solid black;padding: .2em;">za pocetak pritisni Enter</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">1.1</td>
<td style="border: 1px solid black;padding: .2em;">instalacija puppy na HD</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.puppylinux.com/hard-puppy.htm">http://www.puppylinux.com/hard-puppy.htm</a></td>
<td style="border: 1px solid black;padding: .2em;">provjeri na Grub promt-u &gt;find /vmlinuz</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">1.2</td>
<td style="border: 1px solid black;padding: .2em;">USB Boot bez podrske BIOS-a</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?t=16950">http://www.murga-linux.com/puppy/viewtopic.php?t=16950</a></td>
<td style="border: 1px solid black;padding: .2em;">instalacija GRUB-a na CD</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">pokretanje puppy-a</td>
<td style="border: 1px solid black;padding: .2em;">isto kao instalacija</td>
<td style="border: 1px solid black;padding: .2em;">blabla</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">3</td>
<td style="border: 1px solid black;padding: .2em;">instalacija Liberation fontova</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.linux.hr/modules/newbb/viewtopic.php?topic_id=750&amp;forum=3&amp;post_id=8542#forumpost8542">http://www.linux.hr/modules/newbb/viewtopic.php?topic_id=750&amp;forum=3&amp;post_id=8542#forumpost8542</a></td>
<td style="border: 1px solid black;padding: .2em;">kompatibilnost s windows core fontovima</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">3.1</td>
<td style="border: 1px solid black;padding: .2em;">shortcut-ovi za tipkovnicu</td>
<td style="border: 1px solid black;padding: .2em;">Menu - Desktop - JWM Configuration</td>
<td style="border: 1px solid black;padding: .2em;">narihtaj</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">4</td>
<td style="border: 1px solid black;padding: .2em;">ircanje</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://f0rked.com/articles/irssi">http://f0rked.com/articles/irssi</a></td>
<td style="border: 1px solid black;padding: .2em;">xchat kao klasika, ali ipak pobjedjuje irsii</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">p2p mreze, torrent download</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">nista lakse s pupctorrent</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5.1</td>
<td style="border: 1px solid black;padding: .2em;">standardni download wget</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.editcorp.com/personal/lars_appel/wget/wget_7.html#SEC31">http://www.editcorp.com/personal/lars_appel/wget/wget_7.html#SEC31</a></td>
<td style="border: 1px solid black;padding: .2em;">da, da wget moze sve i vise od ...</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">konfiguracija pisaca</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">lokalni i mrezni</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7</td>
<td style="border: 1px solid black;padding: .2em;">instalacija standardnih alternativnih window manager-a</td>
<td style="border: 1px solid black;padding: .2em;">Fluxbox, IceWM, XFCE ; <a target="_blank" title="(external link)" href="http://www.tuxfiles.org/linuxhelp/changeman.html">http://www.tuxfiles.org/linuxhelp/changeman.html</a></td>
<td style="border: 1px solid black;padding: .2em;">potrebno doinstaliranje dodatnih paketa</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7.1</td>
<td style="border: 1px solid black;padding: .2em;">instalacija egzoticnih WM</td>
<td style="border: 1px solid black;padding: .2em;">wmii, dwm, awesome</td>
<td style="border: 1px solid black;padding: .2em;">????; <a target="_blank" title="(external link)" href="http://www.xwinman.org/basics.php">http://www.xwinman.org/basics.php</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7.2</td>
<td style="border: 1px solid black;padding: .2em;">instalacija geeky WM</td>
<td style="border: 1px solid black;padding: .2em;">ion, stumpwm ...</td>
<td style="border: 1px solid black;padding: .2em;">???</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7.3</td>
<td style="border: 1px solid black;padding: .2em;">konfiguracija rvwm</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">???super light wm razmjene vjestina</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7.4</td>
<td style="border: 1px solid black;padding: .2em;">pokreni vise window manager-a na istom host-u</td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?svakodnevnedovitljivostionelineri" title="(207 months) Ponekad se dogodi da smo pronašli ili konstruirali nekakvu relativno složenu komandnu liniju i ne že...">svakodnevnedovitljivostionelineri</a></td>
<td style="border: 1px solid black;padding: .2em;">xnest u akciji</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7.4</td>
<td style="border: 1px solid black;padding: .2em;">cool desktop ala RV</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">prozirni usidreni terminal bez okvira, conky ali sve s JWM prema ideji dboto</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">8</td>
<td style="border: 1px solid black;padding: .2em;">konverzija audio formata</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">nista lakse s Soxgui audio conversion</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">9</td>
<td style="border: 1px solid black;padding: .2em;">konverzija video formata</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">????</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">przenje cd-a i dvd-a</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">lakse nego NERO</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">11</td>
<td style="border: 1px solid black;padding: .2em;">particioniranje i formatiranje</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">nista lakse s Pdisk partition manager-om</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">11.1</td>
<td style="border: 1px solid black;padding: .2em;">zabunom sam izbrisao datoteku sa svog diska/usb-a</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.cgsecurity.org/wiki/TestDisk_Download">http://www.cgsecurity.org/wiki/TestDisk_Download</a></td>
<td style="border: 1px solid black;padding: .2em;">zbilja radi uvjerio me filippo</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">12</td>
<td style="border: 1px solid black;padding: .2em;">probijanje &quot;zaboravljene&quot; root zaporke</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">ne provodi se jer puppy stiti svoj sadrzaj u enkriptiranoj datoteci</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">13</td>
<td style="border: 1px solid black;padding: .2em;">Gnupg</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">upareno s enigmail-om kuzi <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a>; s firefox extenzijom fireGPG moguca primjena i s GMAIL -<a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?marcellmars" title="(227 months) [[GoogleSearch(Marcell Mars)]] image nogice.png [MarcellMarsNudi] [MarcellMarsTrazi] Pitanja i odgov...">MarcellMars</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">14</td>
<td style="border: 1px solid black;padding: .2em;">razmjena podataka s drugim PC-om</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">MS Windows ili bilo koji drugi OS</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">15</td>
<td style="border: 1px solid black;padding: .2em;">Tiddly Wiki Blog</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.picigin.net/logcells/">http://www.picigin.net/logcells/</a>; <a target="_blank" title="(external link)" href="http://www.anshul.info/blogwiki.html">http://www.anshul.info/blogwiki.html</a></td>
<td style="border: 1px solid black;padding: .2em;">kako poceti zna samo <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?marcellmars" title="(227 months) [[GoogleSearch(Marcell Mars)]] image nogice.png [MarcellMarsNudi] [MarcellMarsTrazi] Pitanja i odgov...">MarcellMars</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">15a</td>
<td style="border: 1px solid black;padding: .2em;">GTD Tool ala Tiddly Wiki</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://monkeygtd.tiddlyspot.com/">http://monkeygtd.tiddlyspot.com/</a></td>
<td style="border: 1px solid black;padding: .2em;">Jesi li za osobnu produktivnost ??</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">15b</td>
<td style="border: 1px solid black;padding: .2em;">Wiki na USB stapicu</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://sourceforge.net/projects/stickwiki">http://sourceforge.net/projects/stickwiki</a></td>
<td style="border: 1px solid black;padding: .2em;">vise o svemu PhilipB</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">16</td>
<td style="border: 1px solid black;padding: .2em;">Wordpress Blog tool</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">instaliran lokalno na Puppy XAMPP serveru</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">Backup podataka</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">cijele particije, ali moze i MS Windows sistemske datoteke</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">18</td>
<td style="border: 1px solid black;padding: .2em;">Instalacija Freemind software-a</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">postoji dodatni paket za instalaciju koji zahtjeva Sun Java JRE.(<a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?drgspot" title="(227 months) [DrGspotNudi] [DrGspotTrazi] [DrGspotLinkoviAlToTrebaSredit] [DrGspotKnjigeCasopisi] [DrGspotEventsC...">DrGspot</a>) Primjenu pri razvoju Web-a nudi <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?horza" title="(223 months) nadimak horza fqdn Davor . Grubiša . Zagreb . Croatia . Europe . Earth status razmjenjivač-outsider ...">HorzA</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">19</td>
<td style="border: 1px solid black;padding: .2em;">integracija hr lokalizacije</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://lokalizacija.linux.hr">http://lokalizacija.linux.hr</a></td>
<td style="border: 1px solid black;padding: .2em;">po <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?drgspot" title="(227 months) [DrGspotNudi] [DrGspotTrazi] [DrGspotLinkoviAlToTrebaSredit] [DrGspotKnjigeCasopisi] [DrGspotEventsC...">DrGspot</a>-u potrebno se upoznati s prevođenjem na <a target="_blank" title="(external link)" href="http://www.rilinux.hr/index.php?pid=dist">http://www.rilinux.hr/index.php?pid=dist</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">20</td>
<td style="border: 1px solid black;padding: .2em;">citanje MS chm datoteka</td>
<td style="border: 1px solid black;padding: .2em;">ne treba</td>
<td style="border: 1px solid black;padding: .2em;">Otvori Menu-Document-ChmSee</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">21</td>
<td style="border: 1px solid black;padding: .2em;">editiranje grafike</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">instaliraj gimp pomocu pet installer-a</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">21.1</td>
<td style="border: 1px solid black;padding: .2em;">animirani gif</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://kiberkomunist.wordpress.com/2007/09/19/intervju-u-glasu-istre-povodom-yaxwe-a/">http://kiberkomunist.wordpress.com/2007/09/19/intervju-u-glasu-istre-povodom-yaxwe-a/</a></td>
<td style="border: 1px solid black;padding: .2em;">???</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">21.2</td>
<td style="border: 1px solid black;padding: .2em;">2D animacija</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">???</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">22</td>
<td style="border: 1px solid black;padding: .2em;">editiranje vektorske grafike</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">inkscapelite je na standardnom cd-u</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">23</td>
<td style="border: 1px solid black;padding: .2em;">irfan viewer pod linuxom</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?t=17359">http://www.murga-linux.com/puppy/viewtopic.php?t=17359</a></td>
<td style="border: 1px solid black;padding: .2em;">da treba nam wine i najbolji preglednik radi besprijekorno dokazuje <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?aco" title="(248 months)  Stvari koje znam Mreze (Router, Firewall) CISCO  original http www.razmjenavjestina.org Razmjenjiva...">AcO</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">24</td>
<td style="border: 1px solid black;padding: .2em;">laptop projekcija</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">isprobano sa sony projektorom, jednostavno radi &quot;out of the box&quot;</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">93</td>
<td style="border: 1px solid black;padding: .2em;">bluetooth</td>
<td style="border: 1px solid black;padding: .2em;">..npr mobitel i laptop..</td>
<td style="border: 1px solid black;padding: .2em;">na prvom uredjaju odredi zaporku, za ostalo pitaj <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?kruno" title="(211 months)  Umjesto uvoda Dobrodošli na moju stranicu na Razmjeni vještina Zovem se Kruno. [KruNoNudi] Imam pot...">KruNo</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">94</td>
<td style="border: 1px solid black;padding: .2em;">FLAC audio codec</td>
<td style="border: 1px solid black;padding: .2em;">-</td>
<td style="border: 1px solid black;padding: .2em;">instaliraj vlc player s flac codec-om</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">95</td>
<td style="border: 1px solid black;padding: .2em;">puppy na virtual masini-QEMU Puppy</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.erikveen.dds.nl/qemupuppy/index.html">http://www.erikveen.dds.nl/qemupuppy/index.html</a> <img alt="http://www.erikveen.dds.nl/qemupuppy/images/qemupuppytje.gif" src="http://www.erikveen.dds.nl/qemupuppy/images/qemupuppytje.gif" border="0" /></td>
<td style="border: 1px solid black;padding: .2em;">kopiraj na USB i aktiviraj pod MS Windows/*nix na bilo kojem PC-u</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">96</td>
<td style="border: 1px solid black;padding: .2em;">TVNC</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.tightvnc.com/">http://www.tightvnc.com/</a></td>
<td style="border: 1px solid black;padding: .2em;">nista lakse Menu-Network-TightVNC</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">97</td>
<td style="border: 1px solid black;padding: .2em;">Koriscenje resursa jakog racunala na LAN-u pristupom preko laptop-a</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">openssh server i <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">98</td>
<td style="border: 1px solid black;padding: .2em;">mutt geek email client</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://mutt.blackfish.org.uk/overview/">http://mutt.blackfish.org.uk/overview/</a></td>
<td style="border: 1px solid black;padding: .2em;">konfiguracija Budd</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">99</td>
<td style="border: 1px solid black;padding: .2em;">ssh tunneling</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.suso.org/docs/shell/ssh.sdf">http://www.suso.org/docs/shell/ssh.sdf</a>; <a target="_blank" title="(external link)" href="http://www.buzzsurf.com/surfatwork/">http://www.buzzsurf.com/surfatwork/</a>; <a target="_blank" title="(external link)" href="http://bud.bljak.org/?p=26">http://bud.bljak.org/?p=26</a></td>
<td style="border: 1px solid black;padding: .2em;">...ali <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?lesh" title="(236 months) hajde, http lesh.sysphere.org klikni. KLIK [[HTML( center img src http www.socknitters.com PATTERNS ...">LesH</a> zna, a <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a> razmjenljuje</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">99a</td>
<td style="border: 1px solid black;padding: .2em;">java ssh client</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.appgate.com/products/80_MindTerm/">http://www.appgate.com/products/80_MindTerm/</a></td>
<td style="border: 1px solid black;padding: .2em;">opla ..Java...i Vedran</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">100</td>
<td style="border: 1px solid black;padding: .2em;">tor</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;">?????</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">101</td>
<td style="border: 1px solid black;padding: .2em;">Aplikacije midi produkcije</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.murga-linux.com/puppy/viewtopic.php?p=127919&amp;search_id=1919590073#127919">http://www.murga-linux.com/puppy/viewtopic.php?p=127919&amp;search_id=1919590073#127919</a></td>
<td style="border: 1px solid black;padding: .2em;">low-latency kernel patch, Ingo Molnar</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">101a</td>
<td style="border: 1px solid black;padding: .2em;">Zamjeni tipkovnicu i misa gamepad-om</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://git.savannah.nongnu.org/gitweb/?p=topot.git">http://git.savannah.nongnu.org/gitweb/?p=topot.git</a></td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?marcellmars" title="(227 months) [[GoogleSearch(Marcell Mars)]] image nogice.png [MarcellMarsNudi] [MarcellMarsTrazi] Pitanja i odgov...">MarcellMars</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">101b</td>
<td style="border: 1px solid black;padding: .2em;">Snimi 4 kanalnu glazbu</td>
<td style="border: 1px solid black;padding: .2em;">nema</td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?marcellmars" title="(227 months) [[GoogleSearch(Marcell Mars)]] image nogice.png [MarcellMarsNudi] [MarcellMarsTrazi] Pitanja i odgov...">MarcellMars</a> i jack u akciji</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">102</td>
<td style="border: 1px solid black;padding: .2em;">kismet&amp;aircrack</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://dotpups.de/dotpups/Wifi/wireless-utilities/">http://dotpups.de/dotpups/Wifi/wireless-utilities/</a></td>
<td style="border: 1px solid black;padding: .2em;">...dosta za wirelless ???pitajte <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">103</td>
<td style="border: 1px solid black;padding: .2em;">ispis mape s web-a oliti tshark u akciji</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://blog.rot13.org/2007/10/stitching_maps_together.html">http://blog.rot13.org/2007/10/stitching_maps_together.html</a></td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/[DpavLin">http://www.razmjenavjestina.org/[DpavLin</a>]</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">104</td>
<td style="border: 1px solid black;padding: .2em;">koristi jedan mis za vise ekrana</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://synergy2.sourceforge.net/about.html">http://synergy2.sourceforge.net/about.html</a></td>
<td style="border: 1px solid black;padding: .2em;">instaliraj synergy i gui quicksynergy isprobao <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?bud" title="(227 months)  [BudNudi] [BudTrazi] -  Moja pitanja [[PageList(BuDPitanje(. ))]] [BuDPitanjEDebiaNBooTParticijiAKe...">BuD</a></td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">105</td>
<td style="border: 1px solid black;padding: .2em;">Kreiraj vlastitu pristupnu tocku na LapTop-u s Atheros Wirelless karticom</td>
<td style="border: 1px solid black;padding: .2em;"><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?ethernet_wifi_bridge" title="(221 months) Imate ethernet mrezu i Atheros wifi karticu i zelite podijeliti Internet sa ostalima pod ESSID-om fr...">ethernet wifi bridge</a></td>
<td style="border: 1px solid black;padding: .2em;">ipak ne zaboravi instalirati bridge-utils te pokrenuti dhcp server na lokalnoj mrezi - vjerujete smislio Dobrica, a potvrdio Bud :)</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">150</td>
<td style="border: 1px solid black;padding: .2em;">puppy s gentoo-om kao underdog linux-om</td>
<td style="border: 1px solid black;padding: .2em;"><a target="_blank" title="(external link)" href="http://www.puppyos.net/blog/index.php?entry=entry070325-044449">http://www.puppyos.net/blog/index.php?entry=entry070325-044449</a></td>
<td style="border: 1px solid black;padding: .2em;">potrebna instalacija Sabayon-a i pomoc <a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?aka" title="(224 months) Nudim - programiranje opcenito - lisp(ovi) - konfiguracija i koristenje emacsa - malo gentoo-a Trazi...">AkA</a> - kao laksa ipak se pokazala instalacija Gentoo 2007.0 Minimal CD-a uz 2 tjedna konfiguracije</td>
</tr>
</table>
<br /><hr />
<p>
<a target="_blank" title="(external link)" href="http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/CroPuppianNudi/PuppyMatricaVjestina">original<!-- wiki-renamed-hyperlink "original"<http://www.razmjenavjestina.org/RazmjenjivaciVjestina/CroPuppian/CroPuppianNudi/PuppyMatricaVjestina> --></a> <span class="nlw_phrase">Dec 15 5:40am<!-- wiki: {date: 2007-=12-=15 13:40:46 +0100} --></span></p>
</div>
]]></description>
<author>Zdravko Maricevic</author>
<category>CroPuppian, CroPuppianNudi, Nudi, PuppyLinux, RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?puppymatricavjestina</guid>
<pubDate>Sun, 05 Oct 2008 08:21:37 -0000</pubDate>
</item>
<item>
<title><![CDATA[DpavLin]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?dpavlin</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: RazmjenjivaciVjestina, TamTam</div><hr/><div class="wiki">
<h1 id="dobrica_pavlinu_C5_A1i_C4_87">Dobrica Pavlinušić</h1>
<p>
<img alt="http://www.gravatar.com/avatar/1a717634ca43c3c2af9a9124d0a89c28?.jpg" src="http://www.gravatar.com/avatar/1a717634ca43c3c2af9a9124d0a89c28?.jpg" border="0" /></p>
<p>
Linux hacker since 1995.</p>
<p>
Razmjenjivač od 2006.</p>
<p>
Stranice: <a target="_blank" title="(external link)" href="http://www.rot13.org/~dpavlin/">http://www.rot13.org/~dpavlin/</a></p>
<p>
Blog: <a target="_blank" title="(external link)" href="http://blog.rot13.org/">http://blog.rot13.org/</a></p>
<p>
Privatni wiki: <a target="_blank" title="(external link)" href="http://wiki.rot13.org/rot13/">http://wiki.rot13.org/rot13/</a></p>
<p>
e-mail adresa: (yeah right spam bots!)</p>
<h1 id="best_of_na_ovom_wikiju">Best of na ovom wikiju</h1>
<ul>
<li><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?novi_site_www_razmjenavjestina_org" title="(223 months) Prijedlog nakon razgovora u Moravicama, 9.12.2007 Web 2.0 compliant, RSS feed generating monster toc...">Novi site www.razmjenavjestina.org</a></li>
<li><a href="https://saturn.ffzg.hr/razmjenavjestina/index.cgi?irc_logger" title="(221 months) Na ovoj stranici otkriti ćete toc _Zašto_ se irc-logger zove Anna .html object width 425 height 355 ...">irc-logger</a></li>
</ul>
<h1 id="postovi_sa_mog_bloga">Postovi sa mog bloga</h1>
<div class="nlw_phrase"><div class="fetchrss_box">
  <div class="fetchrss_titlebox">
    
  
  
 <div class="fetchrss_title">
   <a href="https://blog.rot13.org/">Dobrica Pavlinušić's Weblog / Blog</a>
 </div>


  </div>
  
 <ul class="fetchrss_items">
  
  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2026/01/google-ai-studio-and-gemini-cli-html-viewer.html">Google AI studio and Gemini CLI html viewer</a>
    
      <p class="fetchrss_description">
        
        <p>
  When I started using AI for serious work, I had the same requirements as for any 
  other projects: local backup of my files. To achieve this, I decided to mirror 
  <a href="https://aistudio.google.com">Google AI Studio</a> session files from 
  Google Drive using <a href="https://rclone.org">Rclone</a>.
</p>
<p>
  To view them, I wrote a <a href="https://gist.github.com/dpavlin/019de991fc7186390b786269c2f241cd">Google AI Studio HTML viewer</a>.
  For <a href="https://geminicli.com/">Gemini CLI</a>, I wrote a similar
  <a href="https://gist.github.com/dpavlin/28eaa39a178bca8ee27ca17d560d9458">viewer for .gemini/tmp/*/chats/session*.json session files</a>.
</p>
<p>
  I find having these files locally very useful for searching (Ctrl+F); you might too. You can also copy any part as markdown or html.
</p>
        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2025/12/wordpress-devops-for-the-graybeard-admin.html">WordPress DevOps for the Graybeard Admin</a>
    
      <p class="fetchrss_description">
        
        <p>
  Let's assume that you inherited hundreds of WordPress sites installed over 4 hosts during last
  20 years and that from time to time these WordPress installations gets infected
  by malicious actors who somehow acquired the password of an administrator user on
  the installation and are using these newly acquired privileges to install additional
  plugins, create new users and insert spam in
  Google (using User-Agent to emit spam content to Google and normal content
  to usual pages).

</p>
<p>

  You are also not an administrator on those sites, so your tool of choice is
  <a href="https://wp-cli.org/">WP-CLI</a> and command-line together with some
  code snippets which extend it's functionality described here.

</p>
<p>


<h3>Logging user logins</h3>

<p>

The first logical question is: how can I know which user logged in into
WordPress and infected it? Unfortunately, WordPress doesn't emit any
log files.

</p>

<h4>wp-fail2ban</h4>

<p>
Several year ago, I found another plugin which sends logs to syslog 

<a href="https://wordpress.org/plugins/wp-fail2ban/">WP-Fail2Ban</a>.

<br>

However, this plugin tries to insert the site name into the syslog tag field which is limited
in length, so generated logs are less useful if the site name gets truncated.
<br>
Newer version are also overly complex, since they include full WordPress interface,
with additional tables in each word press installation which we don't want or need.
<br>
So I decided to keep using an older, simpler version of WP-Fail2Ban before it had any interface,
which is simple enough to audit and modified it to produce
more useful syslog messages and implement everything in a
<a href="https://github.com/ffzg/mu-plugins/blob/master/wp-fail2ban-ffzg.php">single PHP file wp-fail2ban-ffzg.php</a>.
<br>
Logs are then sent to central syslog server, which runs fail2ban and inserts firewall rules, but
here we are mostly concerned about log generation for user logins.
</p>

<h4>jeepers-peepers</h4>

<p>
Honorable mention is 
<a href="https://wordpress.org/plugins/jeepers-peepers/">
jeepers-peepers
</a>
very interesting plugin
with very strange php coding style, which does generate logs on disk,
but it uses current user to generate files, so logs from web server
will be by nobody user, so wp-cli commands from other users won't
be able to update logs.
<br>
Even worse, if you run wp-cli under any other user than nobody first,
you will create log files which are not updatable from web server.
<br>
I really wanted central syslog logging, so this was not suitable
solution. It also didn't support multi-site WordPress installations
which I also had.
</p>



<h3>mu-plugins</h3>

<p>
  
  This seems good so far, but installing a plugin to hundreds of sites is somewhat involved
and I want to minimize modifications which I have to do on each site.
<br>
WordPress 
<a href="https://developer.wordpress.org/advanced-administration/plugins/mu-plugins/">Must Use plugins</a>
  which are automatically loaded and activated is perfect for such task.
<br>
Even better, we can have one <tt>mu-plugins</tt>
  directory which is then symlinked to all sites making installation nice and simple.

</p>

<h3>Mitigation on infected sites</h3>

<p>

  When a site gets infected, WP-CLI can help us find modified files using

<pre>
wp core verify-checksums
wp plugin verify-checksums --all
</pre>

Plugin verification works for most plugins, but some paid ones (like WPML)
don't have checksums upstream which is a shame.

</p>

<h3>Disabling compromised user</h3>

<p>

  When a compromised user is identified, it's good to remove administrator
  privileges from it (which might be somewhat involved if this is a WordPress
  Multisite, so <tt>wp super-admin list</tt> might be useful).
</p>

<p>
<tt>
  wp eval-file
  <a href="https://github.com/ffzg/wp-helpers/blob/master/wp-cli-audit/disable-user.php">disable-user.php</a>
  login
</tt>

  will display current capabilities, reset password, remove all capabilities from the user,
list and destroy user sessions, regenerate WordPress salts,

  iterate over all sites if wordpress is multisite and remove administrator privileges.

<br>
Salts regeneration with
  <tt>wp config shuffle-salts</tt> is useful because all users are forced
  to login again, thus invalidating saved logins, but for that script has to be run under correct user,
owner of
  <tt>wp-config.php</tt>, so there is wrapper script
  <a href="https://github.com/ffzg/wp-helpers/blob/master/wp-disable-user.sh">wp-disable-user.sh</a>
  which ensures that.

</p>
<p>

<h3>Auditing Logins with Wordfence</h3>

If you have
<a href="https://www.wordfence.com/products/wordfence-free/">Wordfence</a>
installed, it tracks user logins in user metadata, which can be invaluable for forensics even if
you don't have <tt>wp-fail2ban</tt> logs.
<br>
You can use <tt>wp eval</tt> to extract this information across your sites (based on <a
  href="https://github.com/ffzg/wp-helpers/blob/master/wp-wordfence-login.sh">wp-wordfence-login.sh</a>):


This snippet lists users who have logged in, showing their username, last login timestamp, and IP address, sorted by
last_login descending.

</p>

<h3>Scanning WordPress using Wordfence CLI</h3>

</p>
<p>

  We have daily backups of all WordPress sites, so an alternative is to check at the backup
  server which files are changed. However, we can also use
  <a href="https://www.wordfence.com/products/wordfence-cli/">wordfence-cli</a>
  to check if there are exploits using
<pre>
wordfence malware-scan --match-engine=vectorscan -q -a --output-format csv --output-path malware.csv /path/to/wordpress
</pre>
This works well on the backup server (vectorscan engine which is much faster requires SSE capable CPU)
but, <tt>vuln-scan</tt> which checks known vulnerabilities in installed plugins works only on
WordPress installation and not on plain backup files.

</p>
<p>

  You should really examine all warnings from <tt>malware-scan</tt>, but gzip fonts will be reported as
  possible compromise:

  <tt>
    zamd/cluster/pauk.ffzg.hr/2/www/ffzg.hr/fonet2/eufonija/public_html/wp-content/plugins/easy-digital-downloads/includes/libraries/fpdf/font/c67085188799208adeb5b784b9483ad0_droidserif-italic.z,7741,IOC:ZIP/CompressedZlib.7741,Raw
    compressed zlib file - occasionally used
    to store fonts or exports but may be an IOC (Indicator of Compromise),
  </tt>
  which can be safely ignored.

</p>

<h3>Finding content created in some time range</h3>

<p>
If you want to examine content on site to see if there where any spam content added, you
can use:
<br>
<tt>
wp eval-file <a href="https://github.com/ffzg/wp-helpers/blob/master/wp-cli-audit/find-modified-content.php">find-modified-content.php</a> 2025-12-05 1025-12-08
</tt>


</p>

<h3>syslog geolocation of logins</h3>
<p>

Best way which I found to detect infected sites is to geolocate all logins to wordpress,
and send mails for logins which are outside Croatia. Common pattern is to see several
logins from different IPs and countries, which is then trigger for closer investigation.
<br>
For that there is simple script
<a href="https://github.com/ffzg/syslog-scripts/blob/master/tail-wordpress-accepted.sh">
tail-wordpress-accepted.sh
</a> which in turn uses
<a href="https://github.com/ffzg/syslog-scripts/blob/master/geolocate_ips.sh">
geolocate_ips.sh
</a>
to geolocate IPs using <tt>geoiplookup</tt> and web API which usually has more
precise country, town and ISP data.

</p>


        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2025/09/publishing-dataverse-datasets-with-tsv-files-inside-zip-archives.html">Publishing Dataverse datasets with TSV files inside ZIP archives</a>
    
      <p class="fetchrss_description">
        
        <p>Last week, a user attempted to upload a large 12GB dataset to our Dataverse 6.2 installation, which consisted of 84 zip files containing TSV files. The upload caused our installation to stop responding to web requests because the disk usage unexpectedly reached 100%, even though we had 15GB of free space available (our data is stored on the local file system).</p>

<h3>What went wrong?</h3>

<p>When uploading zip files, Dataverse leaves temporary files on the file system in <code>/usr/local/payara6/glassfish/domains/domain1/uploads</code>. If the disk usage limit is reached during this process, temporary files may also be left in <code>/usr/local/dvn/data/temp</code>.</p>

<p>During the ingestion of zipped TSV files, Dataverse creates two uncompressed copies of each TSV file. One copy has an <code>.orig</code> extension (the original file), and the other is an identical version but without the header in the first line. This behavior is highly <strong>sub-optimal</strong>. In our case, the uncompressed TSV files would have required 42GB of space, and creating two copies was not a feasible option for our storage.</p>

<p>The solution was to keep the TSV files compressed inside their zip archives.</p>

<p>A suggestion from a mailing list was to upload a single zip file that contains all the other zip files. This method preserves the compression of the inner zip files. However, it's important to note that the outer zip file will remain in the upload directory, meaning you will need at least twice the amount of disk space for the upload to complete successfully.</p>

<p>This approach will also generate a number of "out of memory" errors from Solr after publishing dataset, as it cannot decompress these nested zip files. In our case, this was an acceptable outcome.</p>

<p>To monitor disk usage I used this snippet:
<pre>
dpavlin@debian-crossda:~$ cat du-check.sh
df -h /
sudo du -hcs /usr/local/payara6/glassfish/domains/domain1/uploads
sudo du -hcs /usr/local/dvn/data/temp
</pre>
</p>

<p>Workflow was upload one file, monitor du and atop 2 for cpu usage, wait for upload to finish, cleanup temporary files, upload another part. Whole upload was split into 4 parts, which where logical based on dataset, 3 zip files and README.
</p>

<p>Issue <a href="https://github.com/IQSS/dataverse/issues/10667">about temporary files left on disk after upload</a> is reported and fixed in 6.4.
</p>

<p>Hopefully, this post will help someone else who encounters the same problem.</p>
        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2025/07/stable-ip-on-usb-interface-with-changing-mac.html">Stable ip on usb interface with changing mac</a>
    
      <p class="fetchrss_description">
        
        <h3>Taming the PinePhone's Fickle USB Ethernet</h3>

<p>I use my PinePhone with postmarketOS as a mini-modem and SSH target. The goal is simple: plug the phone into my Debian laptop via USB, get a predictable IP address on it, and SSH in. This should be trivial. It was not.</p>

<p>If I rebooted the phone while it was plugged in, the interface would die and not come back correctly.</p>

<p>The first step is kernel log.</p>
<pre><code class="language-bash"># dmesg -w
</code></pre>
<p>Plugging in the phone revealed the first layer of the problem. It doesn't just connect once. It connects, disconnects, and then connects again about 15-20 seconds later.</p>
<pre><code class="language-text">[Sun Jul 13 15:33:28 2025] usb 1-9: new high-speed USB device number 36 using xhci_hcd
[Sun Jul 13 15:33:28 2025] usb 1-9: New USB device found, idVendor=18d1, idProduct=d001
[Sun Jul 13 15:33:28 2025] cdc_ncm 1-9:1.0 enx2e50df0e14da: renamed from eth0
...
[Sun Jul 13 15:33:45 2025] usb 1-9: USB disconnect, device number 36
...
[Sun Jul 13 15:33:46 2025] usb 1-9: new high-speed USB device number 37 using xhci_hcd
[Sun Jul 13 15:33:47 2025] usb 1-9: New USB device found, idVendor=18d1, idProduct=d001
[Sun Jul 13 15:33:47 2025] cdc_ncm 1-9:1.0 enxde9ceb943c18: renamed from eth0
</code></pre>

<p>Notice two things:</p>
<ol>
<li>The device connects as <code>number 36</code>, then disconnects, then reconnects as <code>number 37</code>. This is the phone's OS re-initializing the USB stack after boot.</li>
<li>The kernel first registers a generic <code>eth0</code>, which is then immediately renamed to a "predictable" name like <code>enx2e50df0e14da</code>.</li>
</ol>
<p>And to make matters worse, the MAC address is different on each reconnection. Any static configuration in <code>/etc/network/interfaces</code> based on a MAC address is doomed to fail.</p>
<p>The clear solution is to use a <code>udev</code> rule to act when the device appears. The stable identifier we have is the USB vendor and product ID, which <code>lsusb</code> confirms:</p>
<pre><code class="language-bash">$ lsusb | grep Google
Bus 001 Device 037: ID 18d1:d001 Google Inc. Nexus 4 (fastboot)
</code></pre>
<p>(It identifies as a Nexus 4 in this mode, which is fine.)</p>

<p>My first attempt was a simple udev rule.</p>
<pre><code class="language-udev"># /etc/udev/rules.d/99-pmos-network.rules (ATTEMPT 1 - WRONG)
ACTION=="add", SUBSYSTEM=="net", ATTRS{idVendor}=="18d1", RUN+="/usr/local/bin/pm-net-configure.sh %k"
</code></pre>

<p>This failed because of a race condition. The <code>add</code> action fires the moment <code>eth0</code> is created, but before it's renamed to <code>enx...</code>. My script would be told to configure <code>eth0</code>, which ceased to exist a millisecond later.</p>
<p>The key to solving udev timing issues is to stop guessing and start observing.</p>

<pre><code class="language-bash"># udevadm monitor --environment --udev
</code></pre>
<p>Running this while plugging in the phone produces a firehose of information. After the final reconnection, deep in the output, was the golden ticket:</p>
<pre><code class="language-text">UDEV  [8215599.005027] move /devices/pci.../net/enxde9ceb943c18 (net)
ACTION=move
DEVPATH=/devices/pci.../net/enxde9ceb943c18
SUBSYSTEM=net
INTERFACE=enxde9ceb943c18
IFINDEX=39
ID_VENDOR_ID=18d1
ID_MODEL_ID=d001
...
</code></pre>
<p>The system generates a <code>move</code> event when the interface is renamed. This event is perfect. It only happens <em>after</em> the rename, and it contains both the final interface name (<code>%k</code> or <code>$env{INTERFACE}</code>) and the USB device IDs we need for matching.</p>

<p>This leads to the final, correct, and surprisingly simple udev rule.</p>

<h4>The Final Solution</h4>

<p><strong>1. The Udev Rule</strong></p>

<p>This single rule triggers at the exact moment the interface is renamed to its stable name.</p>
<p>Create <code>/etc/udev/rules.d/99-pmos-network.rules</code>:</p>
<pre><code class="language-udev"># Trigger on the network interface "move" (rename) event for the PinePhone.
# This avoids all race conditions with initial device naming.
ACTION=="move", SUBSYSTEM=="net", ENV{ID_VENDOR_ID}=="18d1", ENV{ID_MODEL_ID}=="d001", RUN+="/usr/local/bin/pm-net-configure.sh %k"
</code></pre>

<p><strong>2. The Configuration Script</strong></p>
<p>This is the script the udev rule calls. The <code>%k</code> in the rule passes the correct interface name (e.g., <code>enxde9ceb943c18</code>) as the first argument.</p>
<p>Create <code>/usr/local/bin/pm-net-configure.sh</code>:</p>

<pre><code class="language-bash">#!/bin/sh
set -e

DEV="$1"
IP_ADDR="172.16.42.2/24"
PEER_IP="172.16.42.1"
LOG_FILE="/tmp/pmos_net_config.log"

# Simple logging to know what's happening
echo "---" &gt;&gt; "$LOG_FILE"
echo "$(date): udev 'move' event on '$DEV'. Configuring." &gt;&gt; "$LOG_FILE"

# Give the interface a second to settle, then bring it up and set the IP.
sleep 1
ip link set dev "$DEV" up
ip addr add "$IP_ADDR" dev "$DEV"

echo "$(date): Successfully configured $DEV" &gt;&gt; "$LOG_FILE"
</code></pre>
<p>And make it executable:</p>
<pre><code class="language-bash"># chmod +x /usr/local/bin/pm-net-configure.sh
</code></pre>
<p><strong>3. Reload and Test</strong></p>
<p>Tell udev to pick up the new rule.</p>
<pre><code class="language-bash"># udevadm control --reload
</code></pre>
<p>Now, reboot the PinePhone. It will do its connect/disconnect dance. After the second connection, the <code>move</code> event will fire our rule.</p>
<pre><code class="language-bash"># ip a
...
39: enxde9ceb943c18: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc ...
    link/ether de:9c:eb:94:3c:18 brd ff:ff:ff:ff:ff:ff
    inet 172.16.42.2/24 scope global enxde9ceb943c18
       valid_lft forever preferred_lft forever
...

# ping -c 2 172.16.42.1
PING 172.16.42.1 (172.16.42.1) 56(84) bytes of data.
64 bytes from 172.16.42.1: icmp_seq=1 ttl=64 time=0.885 ms
64 bytes from 172.16.42.1: icmp_seq=2 ttl=64 time=0.672 ms
</code></pre>
<p>It just works. Every time.</p>

        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2025/04/protect-koha-from-web-crawlers.html">Protect Koha from web crawlers</a>
    
      <p class="fetchrss_description">
        
        <p>
We live in troubling times, as web crawlers have become so prevalent in internet traffic that they can cause denial-of-service attacks on Koha instances.
</p>
<p>
Simplest possible way to prevent this is following rule:
</p><p>
<pre>
    &lt;LocationMatch &quot;^/cgi-bin/koha/(opac-search\.pl|opac-shelves\.pl|opac-export\.pl|opac-reserve\.pl)$&quot;&gt;
        # Block requests without a referer header
        RewriteEngine On
        RewriteCond %{HTTP_REFERER} ^$
        RewriteRule .* - [F,L]

        # Optional: Return a 403 Forbidden status code
        ErrorDocument 403 &quot;Access Forbidden: Direct access to this resource is not allowed.&quot;
    &lt;/LocationMatch&gt;
</pre>
</p>
<p>
This helps to mitigate problems like this:
<img alt="apache_processes-week.png" src="https://blog.rot13.org/2025/04/29/apache_processes-week.png" width="497" height="311" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

</p>
        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2024/11/dspace-shibboleth-config-and-debug.html">dspace shibboleth config and debug</a>
    
      <p class="fetchrss_description">
        
        <p>

Configuring shibboleth is always somewhat confusing for me, so I decided to write
this blog post to document how configuration for dspace is done and debugged.

</p>
<p>


This information is scattered over documentation and
<a href="https://groups.google.com/g/dspace-tech/">dspace-tech</a> mailing list
so hopefully this will be useful to someone, at least me if I ever needed
to do this again.

</p>
<p>

First step is to install mod-shib for apache:

<code>
apt install libapache2-mod-shib
</code>

Now there are two files which have to be modified with your information,
<tt>/etc//shibboleth/shibboleth2.xml</tt> which defines configuration and
<tt>/etc/shibboleth/attribute-map.xml</tt> to define which information will be
passwd from shibboleth to application.

</p>

<h3>attribute-map.xml</h3>

<p>
Here we have to define headers which dspace expects, so it can get information from
upstream idenitity provider.

</p>
<p>

<code>
diff --git a/shibboleth/attribute-map.xml b/shibboleth/attribute-map.xml<br>
index 1a4a3b0..a8680da 100644<br>
--- a/shibboleth/attribute-map.xml<br>
+++ b/shibboleth/attribute-map.xml<br>
@@ -163,4 +163,34 @@<br>
     &lt;/Attribute&gt;<br>
     --&gt;<br>
 <br>
+    &lt;!-- In addition to the attribute mapping, DSpace expects the following Shibboleth Headers to be set:<br>
+               - SHIB-NETID<br>
+               - SHIB-MAIL<br>
+               - SHIB-GIVENNAME<br>
+               - SHIB-SURNAME<br>
+             These are set by mapping the respective IdP attribute (left hand side) to the header attribute (right hand side).<br>
+    --&gt;<br>
+	&lt;Attribute name=&quot;urn:oid:0.9.2342.19200300.100.1.1&quot; id=&quot;SHIB-NETID&quot;/&gt;<br>
+	&lt;Attribute name=&quot;urn:mace:dir:attribute-def:uid&quot; id=&quot;SHIB-NETID&quot;/&gt;<br>
+	&lt;Attribute name=&quot;hrEduPersonPersistentID&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:basic&quot; id=&quot;SHIB-NETID&quot;/&gt;<br>
+<br>
+	&lt;Attribute name=&quot;urn:oid:0.9.2342.19200300.100.1.3&quot; id=&quot;SHIB-MAIL&quot;/&gt;<br>
+	&lt;Attribute name=&quot;urn:mace:dir:attribute-def:mail&quot; id=&quot;SHIB-MAIL&quot;/&gt;<br>
+	&lt;Attribute name=&quot;mail&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:basic&quot; id=&quot;SHIB-MAIL&quot;/&gt;<br>
+<br>
+	&lt;Attribute name=&quot;urn:oid:2.5.4.42&quot; id=&quot;SHIB-GIVENNAME&quot;/&gt;<br>
+	&lt;Attribute name=&quot;urn:mace:dir:attribute-def:givenName&quot; id=&quot;SHIB-GIVENNAME&quot;/&gt;<br>
+	&lt;Attribute name=&quot;givenName&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:basic&quot; id=&quot;SHIB-GIVENNAME&quot;/&gt;<br>
+<br>
+	&lt;Attribute name=&quot;urn:oid:2.5.4.4&quot; id=&quot;SHIB-SURNAME&quot;/&gt;<br>
+	&lt;Attribute name=&quot;urn:mace:dir:attribute-def:sn&quot; id=&quot;SHIB-SURNAME&quot;/&gt;<br>
+	&lt;Attribute name=&quot;sn&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:basic&quot; id=&quot;SHIB-SURNAME&quot;/&gt;<br>
+<br>
 &lt;/Attributes&gt;<br>
</code>
</p>


<h3>shibboleth2.xml</h3>

<p>
This is main configuration file for <tt>shibd</tt>.
First we need to add
<tt>OutOfProcess</tt> and
<tt>InProcess</tt> to include useful information in <tt>shibd.log</tt>
which are very useful.

</p>
<p>

<code>
diff --git a/shibboleth/shibboleth2.xml b/shibboleth/shibboleth2.xml<br>
index ddfb98a..7b55987 100644<br>
--- a/shibboleth/shibboleth2.xml<br>
+++ b/shibboleth/shibboleth2.xml<br>
@@ -2,15 +2,46 @@<br>
     xmlns:conf=&quot;urn:mace:shibboleth:3.0:native:sp:config&quot;<br>
     clockSkew=&quot;180&quot;&gt;<br>
 <br>
-    &lt;OutOfProcess tranLogFormat=&quot;%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a&quot; /&gt;<br>
+    &lt;!-- The OutOfProcess section contains properties affecting the shibd daemon. --&gt;<br>
+    &lt;OutOfProcess logger=&quot;shibd.logger&quot; tranLogFormat=&quot;%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a&quot;&gt;<br>
+        &lt;!--<br>
+        &lt;Extensions&gt;<br>
+            &lt;Library path=&quot;odbc-store.so&quot; fatal=&quot;true&quot;/&gt;<br>
+        &lt;/Extensions&gt;<br>
+        --&gt;<br>
+    &lt;/OutOfProcess&gt;<br>
   <br>
+<br>
+    &lt;!--<br>
+    The InProcess section contains settings affecting web server modules.<br>
+    Required for IIS, but can be removed when using other web servers.<br>
+    --&gt;<br>
+    &lt;InProcess logger=&quot;native.logger&quot;&gt;<br>
+        &lt;ISAPI normalizeRequest=&quot;true&quot; safeHeaderNames=&quot;true&quot;&gt;<br>
+            &lt;!--<br>
+            Maps IIS Instance ID values to the host scheme/name/port. The name is<br>
+            required so that the proper &lt;Host&gt; in the request map above is found without<br>
+            having to cover every possible DNS/IP combination the user might enter.<br>
+            --&gt;<br>
+            &lt;Site id=&quot;1&quot; name=&quot;sp.example.org&quot;/&gt;<br>
+            &lt;!--<br>
+            When the port and scheme are omitted, the HTTP request&#39;s port and scheme are used.<br>
+            If these are wrong because of virtualization, they can be explicitly set here to<br>
+            ensure proper redirect generation.<br>
+            --&gt;<br>
+            &lt;!--<br>
+            &lt;Site id=&quot;42&quot; name=&quot;virtual.example.org&quot; scheme=&quot;https&quot; port=&quot;443&quot;/&gt;<br>
+            --&gt;<br>
+        &lt;/ISAPI&gt;<br>
+    &lt;/InProcess&gt;<br>
+    <br>
     &lt;!--<br>
     By default, in-memory StorageService, ReplayCache, ArtifactMap, and SessionCache<br>
     are used. See example-shibboleth2.xml for samples of explicitly configuring them.<br>
     --&gt;<br>
 <br>
     &lt;!-- The ApplicationDefaults element is where most of Shibboleth&#39;s SAML bits are defined. --&gt;<br>
-    &lt;ApplicationDefaults entityID=&quot;https://sp.example.org/shibboleth&quot;<br>
+    &lt;ApplicationDefaults entityID=&quot;https://repository.clarin.hr/Shibboleth.sso/Metadata&quot;<br>
         REMOTE_USER=&quot;eppn subject-id pairwise-id persistent-id&quot;<br>
         cipherSuites=&quot;DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1&quot;&gt;<br>
 <br>
@@ -31,8 +62,8 @@<br>
             entityID property and adjust discoveryURL to point to discovery service.<br>
             You can also override entityID on /Login query string, or in RequestMap/htaccess.<br>
             --&gt;<br>
-            &lt;SSO entityID=&quot;https://idp.example.org/idp/shibboleth&quot;<br>
-                 discoveryProtocol=&quot;SAMLDS&quot; discoveryURL=&quot;https://ds.example.org/DS/WAYF&quot;&gt;<br>
+            &lt;SSO <br>
+	         discoveryProtocol=&quot;SAMLDS&quot; discoveryURL=&quot;https://discovery.clarin.eu&quot;&gt;<br>
               SAML2<br>
             &lt;/SSO&gt;<br>
 <br>
@@ -68,6 +99,10 @@<br>
         &lt;!--<br>
         &lt;MetadataProvider type=&quot;XML&quot; validate=&quot;true&quot; path=&quot;partner-metadata.xml&quot;/&gt;<br>
         --&gt;<br>
+	&lt;MetadataProvider type=&quot;XML&quot; url=&quot;https://login.aaiedu.hr/shib/saml2/idp/metadata.php&quot; backingFilePath=&quot;aaieduhr-metadata.xml&quot; maxRefreshDelay=&quot;3600&quot; /&gt;<br>
 <br>
         &lt;!-- Example of remotely supplied batch of signed metadata. --&gt;<br>
         &lt;!--<br>
</code>
</p>

<h3>certificates</h3>

<p>
To make upstream identity provider connect to us, we need valid certificate
so we need 
<tt>/etc//shibboleth/sp-encrypt-cert.pem</tt>
and
<tt>/etc/shibboleth/sp-encrypt-key.pem</tt>.
<br>
Since we are using Let's encrypt for certificates, I'm using shell script
to move them over and change permissions so <tt>shibd</tt> will accept them.

</p>
<p>

<pre>
dpavlin@repository:/etc/shibboleth$ cat update-certs.sh
#!/bin/sh -xe

cp -v /etc/letsencrypt/live/repository.clarin.hr/privkey.pem sp-encrypt-key.pem
cp -v /etc/letsencrypt/live/repository.clarin.hr/cert.pem sp-encrypt-cert.pem
chown -v _shibd:_shibd sp-*.pem
/etc/init.d/shibd restart
</pre>

<h3>dspace configuration</h3>

<p>
We are using upstream dspace docker which includes <tt>local.cfg</tt> from
outside using docker bind, but also re-defines shibboleth headers so
we need to restore them to default names defined before in
<tt>/etc/shibboleth/attribute-map.xml</tt>.

</p>
<p>

<code>
diff --git a/docker/local.cfg b/docker/local.cfg<br>
index 168ab0dd42..6f71be32cf 100644<br>
--- a/docker/local.cfg<br>
+++ b/docker/local.cfg<br>
@@ -14,3 +14,22 @@<br>
 # test with: /dspace/bin/dspace dsprop -p rest.cors.allowed-origins<br>
 <br>
 handle.prefix = 20.500.14615<br>
+<br>
+shibboleth.discofeed.url = https://repository.clarin.hr/Shibboleth.sso/DiscoFeed<br>
+<br>
+plugin.sequence.org.dspace.authenticate.AuthenticationMethod = org.dspace.authenticate.PasswordAuthentication<br>
+plugin.sequence.org.dspace.authenticate.AuthenticationMethod = org.dspace.authenticate.ShibAuthentication<br>
+<br>
+# in sync with definitions from /etc/shibboleth/attribute-map.xml<br>
+authentication-shibboleth.netid-header = SHIB-NETID<br>
+authentication-shibboleth.email-header = SHIB-MAIL<br>
+authentication-shibboleth.firstname-header = SHIB-GIVENNAME<br>
+authentication-shibboleth.lastname-header = SHIB-SURNAME<br>
+# Should we allow new users to be registered automatically?<br>
+authentication-shibboleth.autoregister = true<br>
</code>
</p>


<h3>example of working login</h3>

<p>
<code>
==&gt; /var/log/shibboleth/shibd.log &lt;==<br>
2024-11-18 17:18:40 INFO XMLTooling.StorageService : purged 2 expired record(s) from storage<br>
<br>
==&gt; /var/log/shibboleth/transaction.log &lt;==<br>
2024-11-18 17:27:42|Shibboleth-TRANSACTION.AuthnRequest|||https://login.aaiedu.hr/shib/saml2/idp/metadata.php||||||urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST||||||<br>
<br>
==&gt; /var/log/shibboleth/shibd.log &lt;==<br>
2024-11-18 17:27:42 INFO Shibboleth.SessionCache [1] [default]: new session created: ID (_e37d7f0b8ea3ff4d718b3e2c68d81e45) IdP (https://login.aaiedu.hr/shib/saml2/idp/metadata.php) Protocol(urn:oasis:names:tc:SAML:2.0:protocol) Address (141.138.31.16)<br>
<br>
==&gt; /var/log/shibboleth/transaction.log &lt;==<br>
2024-11-18 17:27:42|Shibboleth-TRANSACTION.Login|https://login.aaiedu.hr/shib/saml2/idp/metadata.php!https://repository.clarin.hr/Shibboleth.sso/Metadata!303a3b0f72c5e29bcbdf35cab3826e62|_e37d7f0b8ea3ff4d718b3e2c68d81e45|https://login.aaiedu.hr/shib/saml2/idp/metadata.php|_3b8a8dc87db05b5e6abf8aaf9d5c67e6ebc62a2eed|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport|2024-11-18T17:01:57|SHIB-GIVENNAME(1),SHIB-MAIL(2),SHIB-NETID(1),SHIB-SURNAME(1),persistent-id(1)|303a3b0f72c5e29bcbdf35cab3826e62|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST||urn:oasis:names:tc:SAML:2.0:status:Success|||Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0|141.138.31.16<br>
</code>
</p>


<h3>boken urf-8 in shibboleth user first name or surname</h3>

<p>
You might think that now everything works, but dspace will try to
re-encode utf-8 characters received from upstream shibboleth using iso-8859-1
breaking accented characters in process. It has configuration for it, but
by default it's false.

</p>
<p>

<code>
root@4880a3097115:/usr/local/tomcat/bin# /dspace/bin/dspace dsprop -p authentication-shibboleth.reconvert.attributes<br>
false<br>
</code>

</p>
<p>

So we need to modify <tt>dspace-angular/docker/local.cfg</tt> and turn it on:

</p>
<p>

<code>
# incomming utf-8 from shibboleth AAI<br>
authentication-shibboleth.reconvert.attributes=true<br>
</code>

</p>


        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2023/04/wordpress-comment-spam---what-to-do-about-it-and-how.html">WordPress comment spam - what to do about it and how</a>
    
      <p class="fetchrss_description">
        
        <p>
Let's assume that you inherited WordPress installation (or three) with tens of instances
(or hundreds in this case) which are generating spam using comments. I will try to describe
problem here and suggest solution which doesn't require clicking in WordPress but instead
using <a href="https://wp-cli.org/">wp cli</a> which is faster and easier especially if you
don't have administrative account on all those WordPress instances. Interested? Read on.
</p>
<h2>WordPress comment spam</h2>
<p>
If you try googling around how to prevent WordPress comment spam, you will soon arrive
at two solutions:
<ul>
<li>changing <tt>default_comment_status</tt> to closed which will apply to all new posts</li>
<li>changing <tt>comment_status</tt> on all existing posts to close</li>
</ul>
However, this is not full solution, since media in WordPress can also have comments
enabled, and those two steps above won't solve spam from media. There are plugins
to disable media comments, but since we have many WordPress instances I wanted to find
solution which doesn't require modifying each of them. And there is simple solution
using <tt>close_comments_for_old_posts</tt> option which will basically do same thing
after <tt>close_comments_days_old</tt> days (which by default is 14).
</p>
<p>
So, in summary, all this can easily be done using following commands in wp cli:
<pre>
wp post list --post-status=publish --post_type=post --comment_status=open --format=ids \
        | xargs -d ' ' -I % wp post update % --comment_status=closed

wp option update default_comment_status closed

wp option update close_comments_for_old_posts 1
</pre>
<p>
If <tt>wp cli</tt> doesn't work for you (for example if your WordPress instance is so old that <tt>wp cli</tt>
is returning errors for some plugins instead of working) you can achieve same thing using
SQL (this assumes that <tt>wp db query</tt> is working, but if it doesn't you can always connect
using <tt>mysql</tt> and login and password from <tt>wp-config.php</tt>):
<pre>
cat &lt;&lt; __SQL__ | wp db query
update wp_posts set comment_status='closed' where comment_status != 'closed' ;
update wp_options set option_value = 'closed' where option_name = 'default_comment_status' and option_value != 'closed' ;
update wp_options set option_value = 1 where option_name = 'close_comments_for_old_posts' and option_value != 1
__SQL__
</pre>
This is also faster option, because all SQL SQL queries are invoked using single <tt>wp db query</tt> call (and this since
php instance startup which can time some time).
</p>

<h2>Cleaning up held or spam comments</h2>
<p>
After you disabled new spam in comments, you will be left with some amount of comments
which are marked as spam or left in held status if your WordPress admins didn't do anything
about them. To cleanup database, you can use following to delete spam or held comments:
</p>
<pre>
wp comment delete $(wp comment list --status=spam --format=ids) --force

wp comment delete $(wp comment list --status=hold --format=ids) --force
</pre>
<p>


<h2>Disabling contact form spam</h2>
<p>
All spam is not result of comments, some of it might come through contact form.
To disable those, you can disable comment plugin which will leave ugly markup on
page without it enabled, but spams will stop.
</p>
<pre>
# see which contact plugins are active
wp plugin list | grep contact
contact-form-7  active  none    5.7.5.1
contact-form-7-multilingual     active  none    1.2.1

# disable them
wp plugin deactivate contact-form-7
</pre>

        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2023/01/freeradius-testing-and-logging.html">freeradius testing and logging</a>
    
      <p class="fetchrss_description">
        
        <p>
If you are put in front of working radius server which you want
to upgrade, but this is your first encounter with radius,
following notes might be useful to get you started.
<p></p>
Goal is to to upgrade system and test to see if everything still
works after upgrade.
<p>

<h3>radtest</h3>

<p>
First way to test radius is <tt>radtest</tt> which comes with freeradius and enables you to verify
if login/password combination results in successful auth.
</p><p>
You have to ensure that you have 127.0.0.1 client in our case in
<tt>/etc/freeradius/3.0/clients-local.conf</tt> file:

<pre>
client 127.0.0.1 {
    ipv4addr    = 127.0.0.1
    secret      = testing123
    shortname   = test-localhost
}
</pre>

Restart freeradius and test

<pre>
# systemctl restart freeradius


# radtest username@example.com PASSword 127.0.0.1 0 testing123

Sent Access-Request Id 182 from 0.0.0.0:45618 to 127.0.0.1:1812 length 86
    User-Name = "username@example.com"
    User-Password = "PASSword"
    NAS-IP-Address = 193.198.212.8
    NAS-Port = 0
    Message-Authenticator = 0x00
    Cleartext-Password = "PASSword"
Received Access-Accept Id 182 from 127.0.0.1:1812 to 127.0.0.1:45618 length 115
    Connect-Info = "NONE"
    Configuration-Token = "djelatnik"
    Callback-Number = "username@example.com"
    Chargeable-User-Identity = 0x38343431636162353262323566356663643035613036373765343630333837383135653766376434
    User-Name = "username@example.com"

# tail /var/log/freeradius/radius.log
Tue Dec 27 19:41:15 2022 : Info: rlm_ldap (ldap-aai): Opening additional connection (11), 1 of 31 pending slots used
Tue Dec 27 19:41:15 2022 : Auth: (9) Login OK: [user@example.com] (from client test-localhost port 0)
</pre>

This will also test connection to LDAP in this case.
</p>

<h3>radsniff -x</h3>

<p>
To get dump of radius traffic on production server to stdout,
use <tt>radsniff -x</tt>.
</p><p>
This is useful, but won't get you encrypted parts of EAP.
</p>

<h3>freeradius logging</h3>

<p>
To see all protocol decode from freeradius, you can run it with <tt>-X</tt> flag
in terminal which will run it in foreground with debug output.

<pre>
# freeradius -X
</pre>

If you have ability to run isolated freeradius for testing, this is easiest
way to see all configuration parsed (and warnings!) and decoded EAP
traffic.
</p>

<h2>generating more verbose log file</h2>

<p>
Adding -x to <tt>/etc/default/freeradius</tt> or to radius command-line will
generate debug log in log file. Be mindful about disk space usage for
additional logging!

But to see enough debugging in logs to see which EAP type is unsupported like:

<pre>
dpavlin@deenes:~/radius-tools$ grep 'unsupported EAP type' /var/log/freeradius/radius.log
(27) eap-aai: Peer NAK'd asking for unsupported EAP type PEAP (25), skipping...
(41) eap-aai: Peer NAK'd asking for unsupported EAP type PEAP (25), skipping...
(82) eap-aai: Peer NAK'd asking for unsupported EAP type PEAP (25), skipping...
(129) eap-aai: Peer NAK'd asking for unsupported EAP type PEAP (25), skipping...
(142) eap-aai: Peer NAK'd asking for unsupported EAP type PEAP (25), skipping...
</pre>

you will need to use <tt>-xx</tt> (two times x) to get enough debugging log.
Again, monitor disk usage carefully.
</p>






<h2>EAP radius testing using eapol_test from wpa_supplicant</h2>

<p>
To test EAP we need to build <tt>eapol_test</tt> tool from wpa_supplicant.

<pre>
wget http://w1.fi/releases/wpa_supplicant-2.10.tar.gz

cd wpa_supplicant-<version>/wpa_supplicant
$ cp defconfig .config
$ vi .config

CONFIG_EAPOL_TEST=y

# install development libraries needed
apt install libssl-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev

make eapol_test
</pre>
</p>

<h3>EAP/TTLS</h3>

<p>
Now ne need configuration file for wpa_supplicant which tests EAP:

<pre>
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
    ssid="eduroam"
    proto=WPA2
    key_mgmt=WPA-EAP
    pairwise=CCMP
    group=CCMP
    eap=TTLS
    anonymous_identity="anonymous@example.com"
    phase2="auth=PAP"
    identity="username@example.com"
    password="PASSword"
}
</pre>

Now we can test against our radius server (with optional certificate test):

<pre>
# ./wpa_supplicant-2.10/wpa_supplicant/eapol_test -c ffzg.conf -s testing123
</pre>

and specifying your custom CA cert:

<pre>
# ./wpa_supplicant-2.10/wpa_supplicant/eapol_test -c ffzg.conf -s testing123 -o /etc/freeradius/3.0/certs/fRcerts/server-cert.pem
</pre>


This will generate a lot of output, but in radius log you should see

<pre>
Tue Dec 27 20:00:33 2022 : Auth: (9)   Login OK: [username@example.com] (from client test-localhost port 0 cli 02-00-00-00-00-01 via TLS tunnel)
Tue Dec 27 20:00:33 2022 : Auth: (9) Login OK: [username@example.com] (from client test-localhost port 0 cli 02-00-00-00-00-01)
</pre>
</p>

<h3>GTC</h3>

<p>
This seems like a part of tibial knowledge (passed to me by another sysadmin), but to make GTC work,
change of <tt>default_eap_type</tt> to <tt>gtc</tt> under <tt>ttls</tt> and
add <tt>gtc</tt> section:

<pre>
        ttls {
                # ... rest of config...
                default_eap_type = gtc
                # ... rest of config...
        }

        gtc {
                challenge = "Password: "
                auth_type = LDAP
        }
</pre>

and changing wpa-supplicant configuration to:

<pre>
CLONE dupli deenes:/home/dpavlin# cat eduroam-ttls-gtc.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
        ssid="eduroam"
        proto=WPA2
        key_mgmt=WPA-EAP
        pairwise=CCMP
        group=CCMP
        eap=TTLS
        anonymous_identity="anonymous@example.com"
        phase2="autheap=GTC"
        identity="username@example.com"
        password="PASSword"
}
</pre>
<p>

<h3>PEAP</h3>

<p>
To make PEAP GTC work, I needed to add:

<pre>
diff --git a/freeradius/3.0/mods-available/eap-aai b/freeradius/3.0/mods-available/eap-aai
index 245b7eb..6b7cefb 100644
--- a/freeradius/3.0/mods-available/eap-aai
+++ b/freeradius/3.0/mods-available/eap-aai
@@ -73,5 +73,11 @@ eap eap-aai {
                auth_type = LDAP
        }

+       # XXX 2023-01-06 dpavlin - peap
+       peap {
+               tls = tls-common
+               default_eap_type = gtc
+               virtual_server = "default"
+       }

 }
</pre>

which then can be tested with:

<pre>
network={
        ssid="wired"
        key_mgmt=IEEE8021X
        eap=PEAP
        anonymous_identity="anonymous@example.com"
        identity="username@example.com"
        password="PASSword"
}
</pre>
</p>


        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2022/12/local-domains-and-caching-bind-server-without-internet-connection.html">Local domains and caching bind server without Internet connection</a>
    
      <p class="fetchrss_description">
        
        <p>
What do do when you have bind as caching resolver which forwards to your
DNS servers which do recursive resolving and host primary and secondary
of your local domains and upstream link goes down?
</p><p>
To my surprise, caching server can't resolve your local domains although
both primary and secondary of those domains are still available on
your network and can resolve your domains without problem (when queried
directly).
</p><p>
That's because caching server tries to do recursive resolving using
root servers which aren't available if your upstream link is down,
so even your local domains aren't available to clients using
caching server.
</p><p>
Solution is simple if you know what it is. Simply add your local
zones on caching server with type forward:

<pre>
zone "ffzg.hr" {
    type forward;
    forwarders {
        193.198.212.8;
        193.198.213.8;
    };
};

zone "ffzg.unizg.hr" {
    type forward;
    forwarders {
        193.198.212.8;
        193.198.213.8;
    };
};
</pre>

This will work, since queries for those zones are no longer
recursive queries, so they don't need root servers which aren't
available without upstream link.
</p>
        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2022/02/dovecot-maildir-on-compressed-zfs-pool.html">dovecot maildir on compressed zfs pool</a>
    
      <p class="fetchrss_description">
        
        <p>
This is a story about our mail server which is coming close to
it's disk space capacity:

<pre>
root@mudrac:/home/prof/dpavlin# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  7.7G   11G  42% /
/dev/vdb        4.0T  3.9T   74G  99% /home
/dev/vdc        591G  502G   89G  85% /home/stud
</pre>

</p><p>

You might say that it's easy to resize disk and provide more
storage, but unfortunately it's not so easy. We are using ganeti
for our virtualization platform, and current version of ganeti
has limit of <a href="https://github.com/ganeti/ganeti/issues/312">4T for single drbd disk</a>.

</p><p>

This can be solved by increasing third (vdc) disk and moving some
users to it, but this is not ideal. Another possibility is to
use dovecot's zlib plugin to compress mails. However, since
our Maildir doesn't have required <tt>S=12345</tt> as part of filename
to describe size of mail, this solution also wasn't applicable to us.

</p><p>

Installing lvm would allow us to use more than one
disk to provide additional storage, but since ganeti already uses
lvm to provide virtual disks to instance this also isn't ideal.

</p>
<h2>OpenZFS comes to rescue</h2>
<p>

Another solution is to use OpenZFS to provide multiple disks
as single filesystem storage, and at the same time provide disk
compression. Let's create a pool:

<pre>
zpool create -o ashift=9 mudrac /dev/vdb
zfs create mudrac/mudrac
zfs set compression=zstd-6 mudrac
zfs set atime=off mudrac
</pre>

We are using ashift of 9 instead of 12 since it uses 512 bytes
blocks on storage (which is supported by our SSD storage) that
saves quite a bit of space:

<pre>
root@t1:~# df | grep mudrac
Filesystem      1K-blocks       Used Available Use% Mounted on
mudrac/mudrac  3104245632 3062591616  41654016  99% /mudrac/mudrac # ashift=12
m2/mudrac      3104303872 2917941376 186362496  94% /m2/mudrac     # ashift=9
</pre>

This is saving of 137Gb just by choosing smaller ashift.

</p><p>

Most of our e-mail are messages kept on server, but rarely accessed. Because
of that I opted to use zstd-6 (instead of default zstd-3) to compress it
as much as possible. But, to be sure it's right choice, I also tested
zstd-12 and zstd-19 and results are available below:

<table>
<tr><th>LEVEL</th><th>USED</th><th>COMP</th><th>H:S</th></tr>
<tr><td>zstd-6</td><td>2987971933184</td><td>60%</td><td>11:2400</td></tr>
<tr><td>zstd-12</td><td>2980591115776</td><td>59%</td><td>15:600</td></tr>
<tr><td>zstd-19</td><td>2972514841600</td><td>59%</td><td>52:600</td></tr>
</table>

Compression levels higher than 6 seem to need at least 6 cores to compress
data, so zstd-6 seemed like best performance/space tradeoff, especially
if we take into account additional time needed for compression to finish.

</p>
<h2>bullseye kernel for zfs and systemd-nspawn</h2>
<p>
To have zfs, we need recent kernel. Instead of upgrading whole
server to bullseye at this moment, I decided to boot bullseye
with zfs and start unmodified installation using <tt>systemd-nspawn</tt>.
This is easy using following command line:

<pre>
systemd-nspawn --directory /mudrac/mudrac/ --boot --machine mudrac --network-interface=eth1010 --hostname mudrac
</pre>

but it's not ideal for automatic start of machine, so better solution
is to use <tt>machinectl</tt> and systemd service for this. Converting
this command-line into nspawn is non-trivial, but after reading
<tt>man systemd.nspawn</tt> configuration needed is:

<pre>
root@t1:~# cat /etc/systemd/nspawn/mudrac.nspawn
[Exec]
Boot=on
#WorkingDirectory=/mudrac/mudrac
# ln -s /mudrac/mudrac /var/lib/machines/
# don't chown files
PrivateUsers=false

[Network]
Interface=eth1010
</pre>

Please note that we are not using WorkingDirectory (which would copy
files from /var/lib/machines/name) but instead just created symlink
to zfs filesystem in /var/lib/machines/.

</p><p>

To enable and start container on boot, we can use:

<pre>
systemctl enable systemd-nspawn@mudrac
systemctl start systemd-nspawn@mudrac
</pre>

</p>
<h2>
Keep network device linked to mac address
</h2>
<p>

<a href="https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/">
Predictable network device names</a> which bullseye uses should provide stable network
device names.
This seems like clean solution, but in testing I figured out that
adding additional disks will change name of network devices. Previously
Debian used udev to provide mapping between network interface name and
device mac using <tt>/etc/udev/rules.d/70-persistent-net.rules</tt>.
Since this is no longer the case, solution is to define similar mapping
using systemd network like this:

<pre>
root@t1:~# cat /etc/systemd/network/11-eth1010.link
[Match]
MACAddress=aa:00:00:39:90:0f

[Link]
Name=eth1010
</pre>

</p>
<h2>Increasing disk space</h2>
<p>
When we do run out of disk space again, we could add new disk and
add it to zfs pool using:

<pre>
root@t2:~# zpool set autoexpand=on mudrac
root@t2:~# zpool add mudrac /dev/vdc
</pre>

Thanks to <tt>autoexpand=on</tt> above, this will automatically
make new space available. However, if we increase existing disk up to 4T
new space isn't visible immediately since zfs has partition table on disk,
so we need to extend device to use all space available using:

<pre>
root@t2:~# zpool online -e mudrac vdb
</pre>

</p>
<h2>zfs snapshots for backup</h2>
<p>

Now that we have zfs under our mail server, it's logical to
also use zfs snapshots to provide nice, low overhead incremental
backup. It's as easy as:

<pre>
zfs snap mudrac/mudrac@$( date +%Y-%m-%d )
</pre>

in cron.daliy and than shipping snapshots to backup machine.
I did look into existing zfs snapshot solutions, but they all
seemed a little bit too complicated for my use-case, so I wrote
<a href="https://github.com/ffzg/zfs-tools/blob/master/zfs-snap-to-dr.pl">
zfs-snap-to-dr.pl</a> which copies snapshots to backup site.

</p><p>

To keep just and two last snapshots on mail server simple shell snippet is enough:

<pre>
zfs list -r -t snapshot -o name -H mudrac/mudrac &gt; /dev/shm/zfs.all
tail -2 /dev/shm/zfs.all &gt; /dev/shm/zfs.tail-2
grep -v -f /dev/shm/zfs.tail-2 /dev/shm/zfs.all | xargs -i zfs destroy {}
</pre>

Using shell to create and expire snapshots and simpler script to just
transfer snapshots seems to me like better and more flexible solution
than implementing it all in single perl script. In a sense, it's the
unix way of small tools which do one thing well. Only feature which
<tt>zfs-snap-to-dr.pl</tt> has aside from snapshot transfer is ability
to keep just configurable number of snapshots on destination which
enables it to keep disk usage under check (and re-users already
collected data about snapshots).

</p>
</p>
This was interesting journey. In future, we will migrate
mail server to bullseye and remove systemd-nspawn (it feels like we
are twisting it's hand using it like this). But it does work,
and is simple solution which will come handy in future.
</p>

        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2021/10/track-your-configuration-using-git.html">Track your configuration using git</a>
    
      <p class="fetchrss_description">
        
        <p>
I have a confession to make: <a href="https://etckeeper.branchable.com/">etckeeper</a> got me spoiled. I really like ability to track changes in git and have it documented in git log. However, this time I was working on already installed machine which didn't have much files in /etc for etckeeper, but I wanted to have peace of mind with configuration in git.
</p>
<p>
This got me thinking: I could create git in root (/) of file-system and than track any file using it. Since this is three servers I could also use other two nodes to make a backup of configuration by pushing to them.
</p>
<p>
To make this working first I need to do init git repository and create branch with same name as short version of hostname (this will allow us to push and pull with unique branch name on each machine):
<pre>
# cd /
# git init
# git checkout -b $( hostname -s )
</pre>
With this done, all I have to do now is add and commit a file that I want to change (to preserve original version), make changes and commit it after change. To make first step easier, I created script which allows me to do
<tt>git ac /path/to/file</tt> that will add file to git and commit original version in just one command (ac = add+commit).
<pre>
# cat /usr/local/bin/git-ac
#!/bin/sh

git add $*
git commit -m $1 $*
</pre>
With this in place, I now have nice log of one server. Now it's time to repeat it on each machine and use <tt>git remote add host1 host1:/.git</tt> to add other hosts.
</p>
<p>
Since I have some commits in branch with short hostname, it's also right moment to issue <tt>git branch -d master</tt> to remove master branch which we don't use (and will clutter out output later).
</p>
<p>We can fetch branches from other servers manually, but since we already have that information in git remote I wrote another quick script:
<pre>
# cat /usr/local/bin/git-f
git remote | xargs -i git fetch {}
</pre>
With this I can issue just <tt>git f</tt> to fetch all branches on all hosts. If I want to push changes to other nodes, I can do <tt>git p</tt> which is similar script:
<pre>
# cat /usr/local/bin/git-p
# disable push with git remote set-url --push pg-edu no_push

git remote | xargs -i git push {} $( hostname -s )
</pre>
There is also a note how to disable push to some remote (if you don't want to have full history there, but want to pull from it).
</p>
<p>
With this in place, you will get nice log of changes in git, and since every host hast branch of all other hosts, you can even use <tt>git cherry-pick</tt> to get same change on multiple hosts. Last useful hint is to use <tt>git branch -va</tt> which will show all branches together with sha of last commit which can be used to cherry pick last commit. If you need older commits, you can always issue git log on remote branch and pick up commit that you need.
</p>
<p>Last step is to add cron job in cron.daily to commit changes daily which you forgot to commit:
<pre>
# cat /etc/cron.daily/cron-commit
#!/bin/sh

cd /
git commit -m $( date +%Y-%m-%dT%H%M%S ) -a
</pre>
With everything documented here, you have easy to use git in which you can track changes of any file on your file-system. There is one additional note: if file that you want to track is on nfs mount, you will need to add and commit it from outside of nfs mount (specifying full path to file on nfs) because if you are inside nfs mount git will complain that there is no git repository there.
</p>

        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2021/04/mysql-database-with-latin1-charset-and-utf8-data.html">mysql database with latin1 charset and utf8 data</a>
    
      <p class="fetchrss_description">
        
        <p>
I know that it's 2021, but we are still having problems with encoding in mysql (MariaDB in this cane, but problem is smilar). This time, it's application which I inherited which saves utf-8 data into database which is declared as latin1.
</p>
<p>
How can you check if this is problem with your database too?
<pre>
MariaDB [ompdb]> show create database ompdb ;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| ompdb    | CREATE DATABASE `ompdb` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+------------------------------------------------------------------+
</pre>
Alternative way is to invoke <tt>mysqldump ompdb</tt> and example file generated. Why is this a problem? If we try SQL query on one of tables:
<pre>
MariaDB [ompdb]> select * from submission_search_keyword_list where keyword_text like 'al%ir' ;
+------------+--------------+
| keyword_id | keyword_text |
+------------+--------------+
|       3657 | alzir        |
|       1427 | al&#xC5;&#xBE;ir       |
+------------+--------------+
</pre>
You can clearly see double-encoded utf8 which should be <b>al&#x17E;ir</b>. This is because our client is connecting using
utf8 charset, getting utf8 data in binary form so we see double-encoding. So we can try to conntect using latin1 with:
<pre>
root@omp-clone:/home/dpavlin# mysql --default-character-set=latin1 ompdb
MariaDB [ompdb]> select * from submission_search_keyword_list where keyword_text like 'al%ir' ;
+------------+--------------+
| keyword_id | keyword_text |
+------------+--------------+
|       3657 | alzir        |
|       1427 | al&#x17E;ir       |
+------------+--------------+
</pre>
Note that everything is still not well, because grid after our utf8 data is not aligned well.
</p>
<p>
Googling around, you might find that possible solution is to add
<tt>--default-character-set=latin1</tt> to mysqldump, edit all occurrences of latin1 to utf8 (utf8mb4 is better choice) and reload database, and problem is solved, right?
</p>
<p>
If we try to do that, we will get following error:
<pre>
ERROR 1062 (23000) at line 1055 in file: '1.sql': Duplicate entry 'al&#x17E;ir' for key 'submission_search_keyword_text'
</pre>
Why is this? MySQL uses collation setting to remove accents from data, so it treats alzir and al&#x17E;ir as same string. Since we have both of them in our data, this is not good enough.
Also, editing database manually always makes me nervous, so we will using following to get database dump without declaration of encoding (due to <tt>--skip-opt</tt> option), but using latin1 for dumping data:
<pre>
mysqldump ompdb --skip-set-charset --default-character-set=latin1 --skip-opt > /tmp/1.sql
</pre>
Next, we need to create database with collation which preserves everything (<tt>utf8mb4_bin</tt>) using:
<pre>
CREATE DATABASE omp2 CHARACTER SET = 'utf8mb4' COLLATE 'utf8mb4_bin' ;
</pre>
Finally we should be able to reload created dump without errors:
<pre>
mysql omp2 < /tmp/1.sql
</pre>
</p>
<p>
One additional benefit of using <tt>--skip-opt</tt> for <tt>mysqldump</tt> is that every insert is split into individual line. So if you want to have correct collation and skip data which is invalid (which might be possible depending on where data is) you can use same mysqldump file and add <tt>-f</tt> flag when reloading dump like <tt>mysql -f omp2 < /tmp/1.sql</tt> which will report data that have errors, but insert everything else into database.
</p>


        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2021/04/request-tracker-where-ldap-users-have-multiple-mail-addresses.html">request tracker where ldap users have multiple mail addresses</a>
    
      <p class="fetchrss_description">
        
        <p>
We have been using <a href="https://bestpractical.com/request-tracker">request tracker</a> for years but recently changed how many e-mail addresses we keep in LDAP mail attribute. Up until now, we stored just our local e-mail addresses there, but lately we also added external addresses that our users have.
</p>
<p>
This created a problem when users try to send e-mail from external address to our rt. To test this, I have account <tt>usertest</tt> which has <tt>dpavlin@example.com</tt> as first mail in LDAP and <tt>dpavlin@m.example.com</tt> as second one and I'm sending e-mail from <tt>dpavlin@m.example.com</tt> like this:
<pre>
swaks --to sysadmin@rt.example.com --from dpavlin@m.example.com
</pre>

Result is following log which seems very verbose, but is also useful in understanding what is going wrong:
</p>

<p>
<tt>
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: Going to create user with address 'dpavlin@m.example.com' (/usr/local/share/request-tracker4/lib/RT/Interface/Email/Auth/MailFrom.pm:100)
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: RT::Authen::ExternalAuth::CanonicalizeUserInfo called by RT::Authen::ExternalAuth /usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm 886 with: Comments: Autocreated on ticket submission, Disabled: , EmailAddress: dpavlin@m.example.com, Name: dpavlin@m.example.com, Password: , Privileged: , RealName:  (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:793)
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: Attempting to get user info using this external service: FFZG_LDAP (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:801)
[14188] [Fri Apr 16 07:57:26 2021] [debug]: Attempting to use this canonicalization key: Name (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:810)
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: LDAP Search ===  Base: dc=ffzg,dc=hr == Filter: (&(objectClass=*)(uid=dpavlin@m.example.com)) == Attrs: co,uid,postalCode,physicalDeliveryOfficeName,uid,streetAddress,telephoneNumber,hrEduPersonUniqueID,cn,l,st,mail (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:358)
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: Attempting to use this canonicalization key: EmailAddress (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:810)
<br>[14188] [Fri Apr 16 07:57:26 2021] [debug]: LDAP Search ===  Base: dc=ffzg,dc=hr == Filter: (&(objectClass=*)(mail=dpavlin@m.example.com)) == Attrs: co,uid,postalCode,physicalDeliveryOfficeName,uid,streetAddress,telephoneNumber,hrEduPersonUniqueID,cn,l,st,mail (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:358)
<br>[14188] [Fri Apr 16 07:57:26 2021] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , City: Zagreb, Comments: Autocreated on ticket submission, Country: , Disabled: , EmailAddress: dpavlin@example.com, ExternalAuthId: usertest@example.com, Gecos: usertest, Name: usertest, Organization: , Password: , Privileged: , RealName: TestiÄiÄ ProbiÅ¡iÄ ÄÅ¾, State: , WorkPhone: 014092209, Zip:  (/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:869)
<br>[14188] [Fri Apr 16 07:57:26 2021] [crit]: User could not be created: User creation failed in mailgateway: Name in use (/usr/local/share/request-tracker4/lib/RT/Interface/Email.pm:243)
<br>[14188] [Fri Apr 16 07:57:26 2021] [warning]: Couldn't load user 'dpavlin@m.example.com'.giving up (/usr/local/share/request-tracker4/lib/RT/Interface/Email.pm:876)
<br>[14188] [Fri Apr 16 07:57:26 2021] [crit]: User could not be loaded: User  'dpavlin@m.example.com' could not be loaded in the mail gateway (/usr/local/share/request-tracker4/lib/RT/Interface/Email.pm:243)
<br>[14188] [Fri Apr 16 07:57:26 2021] [error]: Could not load a valid user: RT could not load a valid user, and RT's configuration does not allow
for the creation of a new user for this email (dpavlin@m.example.com).
You might need to grant 'Everyone' the right 'CreateTicket' for the
queue SysAdmin. (/usr/local/share/request-tracker4/lib/RT/Interface/Email.pm:243)
</tt>
</p>
<p>
I'm aware that lines are long, and full of data but they describe problem quite well:
<ol>
<li>RT tries to find user with e-mail address <tt>dpavlin@m.example.com</tt> (which doesn't exist since RT uses just first e-mail from LDAP which is <tt>dpavlin@example.com</tt>)
<li>then it tries to create new user with <tt>dpavlin@m.example.com</tt>, but runs another search over ldap to make sure it won't create duplicate user
<li>this will find user in ldap due to second email adress and gives wrong error message.
</ol>
As log file is very detailed and include path to files used and line numbers solution was simple additional check for this exact case:
<pre>
--- /usr/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm.orig  2017-04-05 14:57:22.932000146 +0200
+++ /usr/share/request-tracker4/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm       2021-04-16 15:49:34.800001819 +0200
@@ -429,6 +429,12 @@
                                 $ldap_msg->code);
     }

+    # FIXME -- dpavlin 2021-04-16 -- check if e-mail from ldap is same as incomming one
+    if ( $key eq 'mail' && $value ne $params{EmailAddress}) {
+       $RT::Logger->debug( "LDAP mail check return not found key = $key value = $value $params{EmailAddress}");
+       $found = 0;
+    }
+
     undef $ldap;
     undef $ldap_msg;

</pre>
If e-mail address we found in LDAP is not the same one we did lookup on in <tt>CanonicalizeUserInfo</tt> we just ignore it.
</p>
<p>
I think that nicely shows power of good logs and open source software written in scripting language which you can modify in the place for your (slightly broken) configuration.
</p>

        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2021/04/openocd-raspberry-pi-and-unknown-stm32.html">openocd, raspberry pi and unknown stm32</a>
    
      <p class="fetchrss_description">
        
        <p>
If you ever needed to connect to JTAG or SWD on stm32 and tried to search for solutions on Internet, you quickly realized that amount of information is overwhelming. However, fear not. If you have Raspberry Pi and few wires, you are already half-way there.
</p>
<a href="https://blog.rot13.org/assets_c/2021/04/stm32-swd-blob-301.html" onclick="window.open('https://blog.rot13.org/assets_c/2021/04/stm32-swd-blob-301.html','popup','width=828,height=949,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="https://blog.rot13.org/assets_c/2021/04/stm32-swd-blob-thumb-autox366-301.jpg" width="320" height="366" alt="stm32-swd-blob.jpg" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a>
<p>
For me, this whole adventure started when I got non-working sensor which had swd header and blob over chip. This was not my first swd experiment. Thanks to great Hackaday Remoticon 2020 <a href="https://youtu.be/hWYzgw0WhYU">The Hackers Guide to Hardware Debugging by Matthew Alt</a>  I had already tried to connect using swd from Raspberry Pi to bluepill (which is stm32f103) so I had some experience with that. Now I also had unknown device so I can try what I can do with it.
</p>
<p>
For a start, you can notice that device have UART TX and RX pins already soldered, so first step was to connect normal 3.3V serial to those pins and see if we have some output. And I did. I could see that it's contacting sensor chip and trying to initiate NBIoT connection, but fails. So next step was to solder SWD pins, and connect them to Raspberry Pi. For that, I created openocd configuration <a href="https://github.com/dpavlin/openocd-rpi2-stm32/blob/master/rpi4-zc-swd.cfg">rpi4-zc-swd.cfg</a> and uncommeted bottom of configuration to get first idea what chip is on the board (since it's covered with blob):
<pre>
swd newdap chip cpu -enable
dap create chip.dap -chain-position chip.cpu
target create chip.cpu cortex_m -dap chip.dap
init
dap info
</pre>
I did made some assumptions where, for example that chip is cortex_m, but since it has swd header, there was a good chance it was.
</p>
<p>
However, since this sensor tries to get measurements in some configurable interval, just connecting using openocd didn't work since sensor after power up and sensor check went into sleep. While I could re-plug sensor repeatably, this is not needed since there is also rst pin (connected to pin 22 on Raspberry pi) which we can toggle from shell using:
<pre>
raspi-gpio set 22 op
raspi-gpio get 22
raspi-gpio set 22 dl
raspi-gpio get 22
raspi-gpio set 22 dh
raspi-gpio get 22
</pre>
This woke up sensor again, and I was able to connect to it using openocd and was greeted with following output:
<pre>
root@rpi4:/home/pi/openocd-rpi2-stm32# openocd -f rpi4-zc-swd.cfg
Open On-Chip Debugger 0.11.0+dev-00062-g6405d35f3-dirty (2021-03-27-16:05)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : clock speed 100 kHz
Info : SWD DPIDR 0x0bc11477
Info : chip.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : starting gdb server for chip.cpu on 3333
Info : Listening on port 3333 for gdb connections
AP ID register 0x04770031
        Type is MEM-AP AHB3
MEM-AP BASE 0xf0000003
        Valid ROM table present
                Component base address 0xf0000000
                Peripheral ID 0x00000a0447
                Designer is 0x0a0, STMicroelectronics
                Part is 0x447, Unrecognized
                Component class is 0x1, ROM table
                MEMTYPE system memory present on bus
</pre>
So, indeed this was STMicroelectronics chip, but unknown model. However, using <tt>Info : SWD DPIDR 0x0bc11477</tt> and googling that I figured out that it's probably STM32L0xx which again made sense.
</p>
<p>
So I started <tt>openocd -f rpi4-zc-swd.cfg -f target/stm32l0_dual_bank.cfg</tt> and <tt>telnet 4444</tt> to connect to it and I was able to dump flash. However, I had to be quick since sensor will power off itself after 30 seconds or so. Solution was easy, I toggled again rst pin and connected using gdb which stopped cpu and left sensor powered on.
</p>
<p>
However, all was not good since quick view into 64K dump showed that at end of it there was partial AT command, so dump was not whole. So I opened <a href="https://www.st.com/en/microcontrollers-microprocessors/stm32l0x1.html">STM32L0x1</a> page and since mcu was LQFP 48 with 128k my mcu was <a href="https://www.st.com/en/microcontrollers-microprocessors/stm32l081cb.html">STM32L081CB</a>.
So I restarted <tt>openocd -f rpi4-zc-swd.cfg -f target/stm32l0_dual_bank.cfg</tt> and got two flash banks:
<pre>
> flash banks
#0 : stm32l0.flash (stm32lx) at 0x08000000, size 0x00010000, buswidth 0, chipwidth 0
#1 : stm32l0.flash1 (stm32lx) at 0x08010000, size 0x00010000, buswidth 0, chipwidth 0
</pre>
So I was able to dump them both and got full firmware. It was also very useful, because at one point I did write flash in gdb instead in telnet 4444 connection and erased one of sensors which I was able to recover using dump which I obtained.
</p>
<p>
This however, produced another question for me: since flash is same on all sensors, where are setting which can be configured in sensor (and wasn't changed by re-flashing firmware). Since chip also has 6k of eeprom this was logical place to put it. However, openocd doesn't have bult-in support to dump eeprom from those chips. However, I did found post <a href="https://www.purplealienplanet.com/node/56">Flashing STM32L15X EEPROM with STLink under Linux</a> which modified openocd to support reading and writing of eeprom back in 2015 but is not part of upstream openocd.
</p>
<p>
I didn't want to return to openocd from 2015 or port changes to current version, but I didn't have to. Since I was only interested in dumping eeprom I was able to dump it using normal mdw command:
<pre>
> mdw 0x08080000 1536
</pre>
1536 is number of 32-bit words in 6k eeprom (1536 * 4 = 6144). And indeed setting which are configurable where stored in eeprom.
</p>
<p>
This was fun journey into openocd and stm32, so I hope this will help someone to get started. All configuration files are available at <a href="https://github.com/dpavlin/openocd-rpi2-stm32">https://github.com/dpavlin/openocd-rpi2-stm32</a>.
</p>



        
    
      </p>
    
  </li>

  
    
  <li class="fetchrss_item">
    <a href="https://blog.rot13.org/2020/12/grove-beginner-kit-sensors-show-graphs-using-influxdb-and-grafana.html">Grove Beginner Kit sensors show graphs using InfluxDB and Grafana</a>
    
      <p class="fetchrss_description">
        
        <p>
<a href="https://blog.rot13.org/assets_c/2020/12/grove-beginer-kit-for-arduino-295.html" onclick="window.open('https://blog.rot13.org/assets_c/2020/12/grove-beginer-kit-for-arduino-295.html','popup','width=1400,height=1051,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="https://blog.rot13.org/assets_c/2020/12/grove-beginer-kit-for-arduino-thumb-320xauto-295.png" width="320" height="240" alt="grove-beginer-kit-for-arduino.png" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a>
Several months ago, I got <a href="https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-4549.html">
Grove Beginner Kit For Arduino</a> for review. I wanted to see if this board would
be good fit for my friends which aren't into electronics to get them started with it.
</p><p>
So, I started with general idea: collect values from sensors, send them to InfluxDB
and create graphs using Grafana. In my opinion, showing graphs of values from real
world is good way to get started with something which is not possible without
little bit of additional hardware, and might be good first project for people
who didn't get to try Arduino platform until now.
</p><p>
Kit is somewhat special: out of the box, it comes as single board with all sensors
already attached, so to start using it, you just need to connect it to any usb
port (it even comes with usb cable for that purpose). It also has plastic stand-offs
which will provide isolation of bottom side from surface on which it's placed.

</p><p>
It provides following sensors on board:

<table>
<tr><td>Modules</td><td>Interface</td><td>Pins/Address</td></tr>
<tr><td>LED </td><td>Digital </td><td>D4</td></tr>
<tr><td>Buzzer </td><td>Digital </td><td>D5</td></tr>
<tr><td>OLEDDisplay 0.96" </td><td>I2C </td><td>I2C, 0x78(default)</td></tr>
<tr><td>Button</td><td>Digital </td><td>D6</td></tr>
<tr><td>Rotary Potentiometer </td><td>Analog </td><td>A0</td></tr>
<tr><td>Light</td><td>Analog </td><td>A6</td></tr>
<tr><td>Sound</td><td>Analog </td><td>A2</td></tr>
<tr><td>Temperature & Humidity Sensor</td><td>Digital </td><td>D3</td></tr>
<tr><td>Air Pressure Sensor </td><td>I2C </td><td>I2C, 0x77(default) / 0x76(optional)</td></tr>
<tr><td>3-Axis Accelerator </td><td>I2C </td><td>I2C, 0x19(default)</td></tr>
</table>

</p><p>
So I decided to show temperature, humidity, pressure, light and sound. I also added
ability to show measurements on built-in oled display if you press button. Why the button
press? In my experience, oled displays are prone to burn-in, and since main usage of this
sensor board will be sending data to the cloud, it would be wasteful to destroy oled display
which won't be used most of the time.
</p><p>
Programming Arduino sketch was easy using
<a href="https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/">Groove Kit wiki pages</a>
which nicely document everything you will need to get you started. However, I noticed that
wiki suggest to use Arduino libraries which have Grove in it's name, so I was wondering why
is that so. Turns out that DHT11 temperature and humidity sensor and BMP280 temperature and 
pressure sensor use older version of Adafruit libraries which aren't compatible with latest
versions on github. So, I tested latest versions from Adafruit and they work without any problems,
just like Grove version. If you are already have them installed, there is no need to install
additional Grove versions.
</p><p>
If you deploy sensor like this (probably connected to small Linux single board computer) it would
be useful if it would be possible to update software on it witout need to run full Arduino IDE
(and keyboard and mouse), so I decided to write a Makefile which uses and installs
<a href="https://arduino.github.io/arduino-cli/latest/">arduino-cli</a>
which is go re-implementation of support which is available in
Arduino IDE, but written in go that enables usage from command-line (over ssh for example).
</p><p>
<a href="https://blog.rot13.org/assets_c/2020/12/grove-grafana-298.html" onclick="window.open('https://blog.rot13.org/assets_c/2020/12/grove-grafana-298.html','popup','width=1912,height=1019,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="https://blog.rot13.org/assets_c/2020/12/grove-grafana-thumb-800xauto-298.png" width="800" height="426" alt="grove-grafana.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>
</p><p>

So if you are interested in trying this out, and want to get graphs similar to one above,
go to <a href="https://github.com/dpavlin/GroveSensor">GroveSensor github repository</a>
clone it to your Raspberry Pi, issue <tt>make</tt> to build it and <tt>make upload</tt> to
send it to your board. You will also need to edit <tt>influx.sh</tt> to point it to your
InfluxDB instance, and you can start creating graphs in Grafana. All this will also work
on other platforms (like x86, amd64 or aarm64) thanks to arduino-cli install script.
</p>






        
    
      </p>
    
  </li>

  
 </ul>

</div>
















<!-- wiki: {fetchrss: http://blog.rot13.org/index.xml full}
--></div><br /><br /><h1 id="postovi_sa_blogova_koji_su_meni_interesantni">Postovi sa blogova koji su meni interesantni</h1>
<div class="nlw_phrase"><div class="fetchrss_box">
  <div class="fetchrss_titlebox">
    
 <div class="fetchrss_title">
     fetchrss: http://reblog.rot13.org/out/rss.php?user=1
 </div>

  </div>
  
<ul class="fetchrss_item">
  <li class="fetchrss_item">
    There was an error: 404 Not Found

  </li>
</ul>

</div>
















<!-- wiki: {fetchrss: http://reblog.rot13.org/out/rss.php?user==1}
--></div><br /></div>
]]></description>
<author>Dobrica Pavlinu&#x161;i&#x107;</author>
<category>RazmjenjivaciVjestina, TamTam</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?dpavlin</guid>
<pubDate>Wed, 01 Oct 2008 17:24:29 -0000</pubDate>
</item>
<item>
<title><![CDATA[HorZaTrazi]]></title>
<link>https://saturn.ffzg.hr/razmjenavjestina/index.cgi?horzatrazi</link>
<description><![CDATA[<div>Creator: TamTam Migration</div><hr/><div>Tags: HorZa, RazmjenjivaciVjestina, TamTam, Trazi</div><hr/><div class="wiki">
<ul>
<li>pomoć u izradi razmjenavjestina terminal-client enviromenta (pxe/nfs?/packaging/deb repo)</li>
<li>savjete i prakse za debian web/database/filesystem clustering/replikaciju</li>
<li>savjete i prakse za kvalitetnu SAMBA/LDAP/AD integraciju</li>
<li>savjete za clustering Tomcata</li>
<li>inofrmacije o svijetu oko nas (posebno zanimljivosti iz IT-a koje se ne mogu naći u novinama i na onom... kako se zove... guuuuglu)</li>
</ul>
</div>
]]></description>
<author>Davor Grubi&#x161;a</author>
<category>HorZa, RazmjenjivaciVjestina, TamTam, Trazi</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/razmjenavjestina/index.cgi?horzatrazi</guid>
<pubDate>Fri, 08 Aug 2008 07:54:45 -0000</pubDate>
</item>
</channel>
</rss>