<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>laacz &#187; Techy</title>
	<atom:link href="http://laacz.lv/category/techy/feed/" rel="self" type="application/rss+xml" />
	<link>http://laacz.lv</link>
	<description>laacz te un tur.</description>
	<lastBuildDate>Tue, 31 Jan 2012 13:58:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Laiks versiju kontrolei: pirmās asinis</title>
		<link>http://laacz.lv/2011/08/12/laiks-versiju-kontrolei-pirmas-asinis/</link>
		<comments>http://laacz.lv/2011/08/12/laiks-versiju-kontrolei-pirmas-asinis/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 16:57:43 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Laiks versiju kontrolei]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=8036</guid>
		<description><![CDATA[Jebkuram izstrādātājam ir skaidrs, ka versiju kontroles sistēma ir jālieto. Gan tad, kad strādā viens, gan tad, kad strādā mazā kolektīviņā, gan tad, kad strādā pie maziem projektiņiem. Ja Tev tā nešķiet, tālāk vari nelasīt un komentāru formu vari lieki nesmērēt. Arī to, ka klasiskās VCS (SVN, CVS [rly?]) ir gana jaukas, lūdzu, neminam, jo [...]]]></description>
			<content:encoded><![CDATA[<p>Jebkuram izstrādātājam ir skaidrs, ka versiju kontroles sistēma ir jālieto. Gan tad, kad strādā viens, gan tad, kad strādā mazā kolektīviņā, gan tad, kad strādā pie maziem projektiņiem. Ja Tev tā nešķiet, tālāk vari nelasīt un komentāru formu vari lieki nesmērēt. Arī to, ka klasiskās <abbr title="Version Control System">VCS</abbr> (SVN, CVS [rly?]) ir gana jaukas, lūdzu, neminam, jo visiem skaidri zināms, ka patiesība ir DVCS pusē.</p>

<p>Vienīgais sakarīgais iemesls, kuru es varētu pieņemt kā ieganstu (D)VCS nelietošanai, ir slinkums. Tas ir cilvēcīgi saprotami :)</p>

<p>Es par savām vajadzībām izcilu esmu atzinis <a href="http://git-scm.com/" title="Git - Fast Version Control System">Git</a>. Neba nu citas ir sliktākas. Piemēram, <a href="http://mercurial.selenic.com/" title="Mercurial SCM">Mercurial</a> vairākos aspektos ar lietām tiek galā labāk nekā Git. Esmu dzirdējis arī par Darcs un Bazaar, tomēr esmu lepns Git lietotājs. Jāpiebilst, ka par labu šai izvēlei savu lomu ir nospēlējis arī <a href="https://github.com/" title="Your Dashboard - GitHub">GitHub</a> projekts.</p>

<p>Vēlētos piespiest sevi uzrakstīt rakstu sēriju, kurā saviem vārdiem mazliet apskaidrot &#8211; kas un kā. Pasmelties idejas un pieredzi no jums. Tāpēc arī rakstu. Un sākšu ar pamatu. Tiem, kas labprāt lasa angliski un steidzās, nāksies meklēt citur. Piemēram, lasot grāmatas internetos. Viena no visieteicamākajām grāmatām ir <q><a href="http://progit.org/" title="Pro Git - Pro Git Book">Pro Git</a></q>. Protams, ka nebūt ne slikta ir tautas rakstītā grāmatiņa: <q><a href="http://book.git-scm.com/" title="Git Community Book">Git Community Book</a></q>. Pieminēšanas vērts ir arī projekts <q><a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html" title="Git Magic - Preface">Git Magic</a></q>, kas ir ieturēts mazliet &#8230; savādākā stilā. Protams, ka atceramies <q><a href="http://gitref.org/" title="Git Reference">Git Reference</a></q>. Jo sevišķi dēļ viegli atminamās adreses (<a href="http://gitref.org/" title="Git Reference">gitref.org</a>) un saprātīga vizuālā noformējuma.</p>

<span id="more-8036"></span>

<p>Git ir sadalīta (<cite>distributed</cite>) versiju kontroles sistēma. Tai nav nepieciešams serveris. Tas nozīmē, ka jebkurš var uzinstalēt atbilstošu programmu, un sākt veidot un kontrolēt savas versijas. Momentā. Papildus tam, vēlētos piebilst, ka parasti <cit>Git</cite> mācās divos piegājienos. Pirmais &#8211; pamatfunkcionalitāte, kura piemīt jekburai ierastajai versiju kontroles sistēmai. Tas ir vienkārši saprotams un apgūstams. Nākamais jau ir tas, kur ir <cite>Git</cite> (jā, arī citu (D)VCS, trolli!) lielais spēks. Pats fundamentu fundaments: zarošana (<cite>branches</cite>), pati <cite>distributed</cite> komponente, indekss jeb <cite>staging area</cite>, utt.</p>

<p>Bet, pirms sākt, vajadzētu iepazīties ar galvenajiem konceptiem. Jā, zinu, ka tas ir pilnīgs bōrings, un dajoš mums reāli noderīgu un praksē pielietojamu infu, taču, taču pacietību, lūdzu. Viss būs.</p>

<p><cite>Repository</cite>. Latviskojot sanāk kaut kas līdzīgs <q>glabātavai</q> vai <q>krātuvei</q>. Vai <q>kapličai</q>. Krātuve (izvēlējos šo) ir vieta, kurā satiekas visi tavi komiti (no <cite>commit</cite>, kas, diemžēl, tulkojas kā nodevums:). <cite>Git</cite> neglabā neiedomājamu skaitu modificēto failu versijas, bet gan tikai izmaiņas. Un, atšķirībā no CVS, tas visu glabā vienā vietā, nevis katrā apakšdirektorijā veidojot kaut ko savu. Krātuve satur, protams, arī metadatus, kas ietver sevī zarus (<cite>branches</cite>) un birkas (<cite>tags</cite>), kā arī vēl visvisādu informāciju, kas pašlaik varbūt pat nav tik dikti būtiska.</p>

<p><cite>Commit</cite> (sauksim to par komitu; ejiet ieskrieties, pūristi). Versiju kontroles sistēmas pamatu pamats. Bez komita nebūtu versiju un nebūtu kontroles. Komits <cite>Git</cite> izpratnē ir versiju kontrolē iekļauto failu stāvoklis konkrētajā brīdī. Tas ir kā daudziem tik ļoti ierastās mapes <tt>manalapa.2011.07.01</tt> un <tt>manalapa.2010.01.01</tt>. Taču, kā jau minēju, neaizņem tik daudz vietas, jo <cite>Git</cite> saglabā tikai izmaiņas kopš iepriekšējā reģistrētā stāvokļa (komita). Lai arī gribētos domāt, ka jebkurš iepriekšējais komits norāda uz nākamo, patiesībā ir otrādāk. Jebkurš nākamais komits norāda uz vienu vai vairākiem iepriekšējiem. Tā ir būtiska nianse, kas jāzin.</p>

<p><cite>Working tree</cite> (darba versija?) ir tā augstākā līmeņa direktorija, ar kuru ir saistīta krātuve. Piemēram, ja mēs kontrolējam versijas iekš <tt>/var/www/manalapa</tt>, tad tā arī ir darba versija. <cite>Darba</cite> nozīmē, ka ar šo direktoriju mēs fiziski strādājam.</p>

<p><cite>Staging area</cite> jeb indekss ir vieta, kur nonāk izmaiņas pēc to rašanās, bet pirms komitēšanas. Šis ir koncepts, kurš nepastāv ierastajās VCS. Ideja ir tāda, ka jebkurš komits ņem izmaiņas no <cite>staging area</cite>. Tas nozīmē, ka ir iespējama daudz detalizētāka kontrole pār to, kas tiek komitots. To var salīdzināt ar izmaiņu apstiprināšanu, pirms komitošanas &#8211; lai izmaiņas apstiprinātu, ir jāizmanto koamnda <tt>git add</tt>. No šī var izvairīties ar <tt>git commit -a</tt>, taču tas nāks vēlāk. Starp citu, <cite>ToirtoiseGit</cite> sekmīgi slēpj <cite>staging area</cite> koncepciju aiz savas vienkāršības.</p>

<p><cite>Branch</cite> jeb atzars. Lai arī citās versiju kontroles sistēmās šī padarīšana ir pastāvējusi, tieši <cite>Git</cite> to ir izvedis, ja tā var izteikties, tautās, jo pārslēgšanša starp atzariem pat lieliem projektiem notiek ātri (jā, es vakar paprovēju <cite>nosvičot branču</cite> 2GB+ SVN projektam&#8230;). Atzari ir DVCS izstrādes cikla pašā pamatā. Ar šo <cite>Git</cite> principā vienpersoniski nogalināja visas tradicionālās VCS. Tīri tehniski atzars ir primitīva norāde uz kādu no komitiem. Teorijā, savukārt, viss ir daudz smalkāk. Atzari palīdz paralēli uzturēt neierobežotu skaitu versiju &#8211; izstrādes versija, produkcijas versija, ūber-fīča-X. Tie visi ir atzari, kas savā starpā var tikt apvienoti pilnīgi vai daļēji. </p>

<p><cite>Tag</cite> jeb birka. Komitam piekabināms nosaukums. Piemēram, <tt>v1.0</tt> :)</p>

<p><cite>HEAD</cite>. Tā ir norāde uz faktisko izčekoto komitu vai atzaru. Izčekot komitu vai atzaru mēs varam mūsdienīgi aprakstīt kā <q>Klau, zini, kā man vakar izskatījās kods? Izčekosim un iečekosim, ne?</q>. HEAD vienmēr norādīs uz to, ar ko tiek strādāts no vēstures viedokļa. Par izčekošanu vēlāk, protams.</p>

<p>Šķiet, ka ar šo vajadzētu pietikt. Daudzi (ja ne visi) lielie palagi par <cite>Git</cite> sāk ar failu uzbūves, iekšējo struktūru un cita krepa aprakstīšanu, kas visus pamatā arī atbaida. Es centīšos no tā izvairīties, bet augstāk uzskaitītie koncepti tik tiešām ir fundamentāli nepieciešami.</p>

<p>Tā kā es nepretendēju uz 100% pareizību, jo neesmu nekāds guru, tad labojumi gaidāmi komentāros. Neprecizitātes ierakstā apsolos labot ar atsaucēm uz komentāriem. Tas pats attiecas uz izmantotajiem latviskojumiem &#8211; ja tev ir svaiga ideja, kas ģeldēs, dod ziņu. Pēc gada tiksimies otrajā sērijas ierakstā :)</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2011/08/12/laiks-versiju-kontrolei-pirmas-asinis/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Vai MySQL spēj dot analīzes?</title>
		<link>http://laacz.lv/2010/02/10/vai-mysql-spej-dot-analizes/</link>
		<comments>http://laacz.lv/2010/02/10/vai-mysql-spej-dot-analizes/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 13:10:57 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6159</guid>
		<description><![CDATA[Kamēr Tavs mazais blodziņš vai e-veikaliņš lēnām vago interenta āres ar saviem tris simtiem apmeklētāju dienā, nav par ko uztraukties. Bet, ja Tavam MySQL serverim ir savi daži simti pieprasījumi sekundē, no kuriem daudzi nav optimizēti dažādu apstākļu sakritības rezultātā, ir vērts sākt domāt. Provēt izrakt visu dažādas kvalifikācijas un dažādu cilvēku desmit gadus rakstīto [...]]]></description>
			<content:encoded><![CDATA[<p>Kamēr Tavs mazais blodziņš vai e-veikaliņš lēnām vago interenta āres ar saviem tris simtiem apmeklētāju dienā, nav par ko uztraukties. Bet, ja Tavam MySQL serverim ir savi daži simti pieprasījumi sekundē, no kuriem daudzi nav optimizēti dažādu apstākļu sakritības rezultātā, ir vērts sākt domāt. Provēt izrakt visu dažādas kvalifikācijas un dažādu cilvēku desmit gadus rakstīto kodu? Vai varbūt tomēr pieķerties lietai no otra gala?</p>

<p><cite>MySQL</cite> ir milzums konfigurācijas parametru, ar kuru palīdzību atkarībā no servera izmantošanas veida var panākt milzīgu ātrdarbības pieaugumu. It sevišķi tas attiecas uz <cite>InnoDB</cite>. Ja esi nolēmis nopietni pie tā piestrādāt, tad nāksies vien ieguldīt darbu izpētē. Metodoloģija, protams, ir ļoti garš un plašs stāsts, savukārt, analīzei un paša servera uzturēšanai ir pieejami diezgan daudz labi rīki.</p>

<span id="more-6159"></span>

<p>Manuprāt viens no labākajiem rīkiem ir vienmēr būs laba grāmata. Un <cite>MySQL</cite> pasaulē labākā grāmata ir <q><a href="http://oreilly.com/catalog/9780596101718" title="High Performance MySQL, Second Edition - O'Reilly Media">High Performance MySQL</a></q> (patreiz otrais izdevums). Ja Tev līdz šim ir šķitis, ka <cite>MySQL</cite> ir maza figņa, kura tur kaut kur griežas un nav jāpieskata, tad šī grāmata ikurāt ir domāta tādiem kā Tu. Pašam man tā ir izrotāta ar milzumu grāmatzīmītēm un tiek pāršķirstīta regulāri.</p>

<p><cite><a href="http://www.mysql.com/products/enterprise/" title="MySQL ::  MySQL Enterprise">MySQL Enterprise</a></cite>. Ļoti dārgs pakalpojums no <cite>MySQL AB</cite>, kurš bez maksas tehniskā (un ne tikai) atbalsta sevī ietver arīdzan <cite>MySQL Enterprise Monitor</cite>, kura izcilās daļas ir <cite>MySQL Query Analyzer</cite> un <cite>MySQL Enterpsise Advisors</cite>. Pirmais rīks ir ļoti labs, lai veiktu vispārēju datubāzes noslodzes analīzi, pētot individuālus pieprasījumus vai to grupas. Otrais, savukārt, sniedz padomus par iespējamām nepilnībām <cite>MySQL</cite> vai paša servera konfigurācijā ar padomiem &#8211; kas un kā ir jāmaina, lai viss būtu labi. Tas viss tiek ietverts <cite>MySQL Enterprise</cite> pakalpojumā, kura cena ir sākot no 2 tūkstošiem dolāru gadā. Tas ir fakts &#8211; šis ir viskvalitatīvākais no pieejamajiem rīkiem.</p>

<p>Starp citu, viens no manuprāt būtiskākajiem plusiem ir tas, ka atšķirībā no <cite><a href="http://forge.mysql.com/wiki/MySQL_Proxy" title="MySQL Proxy - MySQL Forge Wiki">MySQL Proxy</a></cite> (lai arī risinājums ir faktiski tas pats), šī produkta aģents ir pilnībā caurspīdīgs. T.i. &#8211; visas uz IP bāzētās pieejas paliek spēkā un tās nav jāmaina uz @localhost.</p>

<p><cite>Kontrollbase</cite> &#8211; bezmaksas alternatīva iepriekšminētajam. Projekts ir salīdzinoši zaļš, diezgan bugains, taču ātri gūst popularitāti un arī briedums nāk tam visam līdzi. Biedru ambīcijas ir diezgan nopietnas, jo izskatās, ka viņi vairāk vai mazāk tēmē uz iepriekšējā produkta &#8220;fīčām&#8221;. Pamēģināju un domāju, ka tuvākā pusgada laikā darīšu to vēlreiz.</p>

<p>Nedrīkst piemirst vēl vienu nopietnu šī tirgus spēlētāju &#8211; <q><a href="http://www.webyog.com/en/monyog_feature_list.php" title="MONyog MySQL Monitor and Advisor Features">MONyog</a></q>. To, tiesa, neesmu mēģinājis, lai arī tas tiek stādīts līdztekus <cite>MySQL Enterprsie Monitor</cite>.</p>

<p>Savukārt, ja mēs runājam par vienkāršiem rīkiem, kas pamatā dod vienkāršu skaitlisku informāciju, tad to klāsts arī ir neaprobežojas ar vienu vienīgu.</p>

<p>Gana svaigs, bet oriģināls servera skaitliskās informācijas atainošanas rīks ir <q><a href="http://code.openark.org/forge/mycheckpoint" title="mycheckpoint | openark forge">mycheckpoint</a></q>. Tas principā ir viens pats nabaga paitona skripts, kurš paver iespēju ģenerēt daudz un dažādas statistikas. Savā ziņā varētu vilkt paralēles ar mazliet modernāku MRTG (neviens, tiesa, neliedz izmantot arī MRTG :P). Izstrāde notiek diezgan aktīvi, kā rezultātā projekts gūst nopietnas aprises un, šķiet, varētu apsavesties arīdzan ar monitorēšanas rīka iespējām.</p>

<p>Ļoti sens, bet aizvien bez maz vai <cite>must have</cite> rīks ir perlā rakstītais <q><a href="http://hackmysql.com/mysqlreport" title="mysqlreport :: Make easy-to-read MySQL status reports">mysqlreport</a></q>. Tas dara vienkāršu, bet ļoti noderīgu darbu &#8211; transformē <cite>MySQL</cite> statusa vērtības cilvēkam viegli uztveramā formātā.</p>

<p>Tīri no rīku viedokļa ikkatram būtu jāzin <q><a href="http://www.maatkit.org/" title="Maatkit: Power Tools for Power Users of MySQL">maatkit</a></q>. Tas ir <cite>perl</cite> skriptu kopums, kuri ir orientēti neba nu uz vienkāršu lietotāju. Ar tiem var paveikt pašu vellu. Par to jaudu var pārliecināties, uzmetot acis vienam pašam rīkam &#8211; <cite>mk-query-digest</cite>, kas ļauj analizēt ne tikai <cite>MySQL</cite> logus, bet <a href="http://ronaldbradford.com/blog/take-a-look-at-mk-query-digest-2009-10-08/" title="Take a look at mk-query-digest | MySQL Expert | MySQL Performance | MySQL Scalability">pat <cite>tcpdump</cite> savāktos datus</a>.</p>

<p>Tas ir tīri par rīkiem, kurus es vairāk vai mazāk ikdienas darbā izmantoju. Kā tos pielietot, kādus secinājumus to darbības rezultātā veikt &#8211; tas paliek paša izmantotāja ziņā.</p>

<p>Ja monitoringa vajadzībām tiek izmantots <q><a href="http://www.cacti.net/" title="Cacti: The Complete RRDTool-based Graphing Solution ">Cacti</a></q>, noteikti ekipējumā pienākas iegūt <q><a href="http://code.google.com/p/mysql-cacti-templates/" title="mysql-cacti-templates - Project Hosting on Google Code">MySQL Cacti templates</a></q>.</p>

<p><cite>MySQL</cite> servera dziļākai uzlabošanai pavisam noteikti noderēs <q><a href="http://www.percona.com/percona-lab.html" title="Percona Lab">Percona Lab</a></q> izstrādātie <cite>patchi</cite> (ielāpi), kas, starp citu, <a href="http://www.mysqlperformanceblog.com/2010/02/09/introducing-percona-patches-for-5-1/" title="Introducing percona-patches for 5.1 | MySQL Performance Blog">vakar tika oficiāli laisti klajā arī <cite>MySQL</cite> 5.1 sērijai</a>. Nu, un, protams, arī Gūglei <a href="http://code.google.com/p/google-mysql-tools/wiki/Mysql5Patches" title="google-mysql-tools - Project Hosting on Google Code">ir savi rīki un <cite>patchi</cite></a> <cite>MySQL</cite> serverim (pagaidām tikai 4.x un 5.0.37 versijai).</p>

<p>Visā visumā, pasaule ir pilna ar rīkiem, kas atvieglo vai bagātina ar piedzīvojumiem (atkarībā no roku liekuma rādiusa:) <cite>MySQL</cite> DBA dzīvi.</p>

<p>Nezinu, kā lai pietiekami uzsveru to, ka, pirms ķerties klāt savam serverim, nepietiek virspusēji iziet cauri tīklos atrodamajai informācijai. Viens konfigurācijas parametrs ietekmē desmit citus &#8211; sevišķi tas attiecas uz <cite>InnoDB</cite>. Lai sekmīgi operētu ar analīzes rezultātiem un ķertos pie uzlabojumiem, ir nepieciešams saprast arīdzan to, kas notiek aiz acīmredzamā. Tā teikt &#8211; problēmas cēloni.</p>

<p>Ne vienmēr pietiek iemest serverim ar atmiņu, ātrākiem diskiem un vairāk procesoriem (kas <cite>MySQL</cite> gadījumā ir atsevišķs stāsts). Piemēram, pie autoritatīviem avotiem ir lasīts par gadījumiem, kad operatīvās atmiņas dubultošana pat ir radījusi pretējo efektu &#8211; serveris ir kļuvis lēnāks.</p>

]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2010/02/10/vai-mysql-spej-dot-analizes/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Pārlieku daudz teleportētu kazu</title>
		<link>http://laacz.lv/2010/01/13/parlieku-daudz-teleportetu-kazu/</link>
		<comments>http://laacz.lv/2010/01/13/parlieku-daudz-teleportetu-kazu/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:36:03 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[LOLismi]]></category>
		<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6358</guid>
		<description><![CDATA[Es, kā saka, paliku bez desām. Visām. Kā pakritu, nekontrolēti rēkdams un asaras liedams, zem galda, tā tur arī paliku [pārspīlējums]. Šķiet, ka nav daudz bug reports klases joku, par kuriem es būtu šitik nenormāli smējies. Pameklēt var iekš mūžam izcilā StackOverflow. Konkrēti šī neciešamā problēma ir parādījusies dažās Google Chrome pārlūka versijās &#8211; tās [...]]]></description>
			<content:encoded><![CDATA[<p>Es, kā saka, paliku bez desām. Visām. Kā pakritu, nekontrolēti rēkdams un asaras liedams, zem galda, tā tur arī paliku [pārspīlējums]. Šķiet, ka nav daudz <cite>bug reports</cite> klases joku, par kuriem es būtu šitik nenormāli smējies. <a href="http://stackoverflow.com/search?q=funniest+bug+report" title="Questions containing 'funniest bug report' - Stack Overflow">Pameklēt var iekš mūžam izcilā <cite>StackOverflow</cite></a>.</p>

<p>Konkrēti šī neciešamā problēma ir parādījusies dažās <cite>Google Chrome</cite> pārlūka versijās &#8211; tās pa kluso teleportē kazas. Un daudz. Vairāk var palasīties <a href="http://code.google.com/p/chromium/issues/detail?id=31482" title="Issue 31482 - chromium - Huge amount of goats teleported - Project Hosting on Google Code">oficiālajā kļūdas #31482 atskaitē</a>.</p>

<p>Ai, aizmirsu iebilst, ka joks pamatā būs saprotams tikai tehniskas dabas cilvēkiem. Un daļai pārējo. Bet nebūt ne visiem.</p>

<p><ins datetime="2010-01-14T07:52:26+00:00">Papildināts 14. janvārī no rīta</ins>. <a href="http://code.google.com/p/chromium/issues/detail?id=31482#c91">Problēma novērsta</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2010/01/13/parlieku-daudz-teleportetu-kazu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ipiķi un citi</title>
		<link>http://laacz.lv/2009/11/11/ipiki-un-citi/</link>
		<comments>http://laacz.lv/2009/11/11/ipiki-un-citi/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 14:54:39 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6234</guid>
		<description><![CDATA[Vakardienas izpēte un jūsu komentāri rezultējās ar nežēlīgiem panākumiem. Tātad, pētot un domājot kļuva skaidrs tas, ka problēma ir ar izejas datiem. Procesa laikā noskaidroju, kas tad galu galā ir shapre faili, un kāda tajos ir informācija. Ātri uzmeklējot devīgajos internetos failus pagasti.shp un novadi.shp, tie nokļuva manā rīcībā. Šajos failos, kā izrādās, ir visa [...]]]></description>
			<content:encoded><![CDATA[<p>Vakardienas izpēte un jūsu komentāri rezultējās ar nežēlīgiem panākumiem.</p>

<p>Tātad, pētot un domājot kļuva skaidrs tas, ka problēma ir ar izejas datiem. Procesa laikā noskaidroju, kas tad galu galā ir <cite>shapre</cite> faili, un kāda tajos ir informācija. Ātri uzmeklējot devīgajos internetos failus <q>pagasti.shp</q> un <q>novadi.shp</q>, tie nokļuva manā rīcībā. Šajos failos, kā izrādās, ir visa nepieciešamā informācija (poligoni, kuri apraksta pilsētu, pagastu, novadu robežas) UTM koodrināšu sistēmā.</p>

<p>Tālākais jau bija tehnikas jautājums. UTM koordinātas ir iespējams pārkonvertēt uz platuma un garuma grādiem, ja zin to projekciju, kura izrādījās esam WGS84. Izmantojot mazu utilītu <a href="http://www.gdal.org/ogr2ogr.html" title="OGR2OGR">ogr2ogr</a> tika iegūts XML fails ar nepieciešamajām koordinātām man vajadzīgajā formātā. Fiksi uzmetot Ipiķus uz Gūgles kartes, viss izskatījās dievīgi (ar daždesmit metru nobīdi dažviet, bet tā nav problēma).</p>

<p>Tālākā iterācija problēmai ir sekojoša. Izmantojam <cite>MySQL</cite> <cite>Spatial</cite> paplašinājumus, lai iestumtu datubāzē kā novadu robežas, tā pagastu un pilsētu robežas. Teorijā pēc tam var jebkuram punktam pateikt, kur tas atrodas. Diemžēl praksē MySQL GIS funkcionalitātes iespējas ir gauži ierobežotas un problemātiskas. Piemēram, </p>

<pre class="sql">laacz@skapis<span style="color: #66cc66;">&#91;</span>gis<span style="color: #66cc66;">&#93;</span>&gt;  <span style="color: #808080; font-style: italic;">-- Kur ir Ipiķi?</span>
<span style="color: #993333; font-weight: bold;">SET</span> @ipiki = GeomFromText<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'POINT(58.0093006 25.1778021)'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">SELECT</span> 
    Within<span style="color: #66cc66;">&#40;</span>@point, g<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">`within`</span>, 
    name, 
    type
<span style="color: #993333; font-weight: bold;">FROM</span>
    gis 
<span style="color: #993333; font-weight: bold;">WHERE</span> 
    Within<span style="color: #66cc66;">&#40;</span>@ipiki, g<span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>;
+<span style="color: #808080; font-style: italic;">--------+------------+---------+</span>
| within | name       | type    |
+<span style="color: #808080; font-style: italic;">--------+------------+---------+</span>
|      <span style="color: #cc66cc;">1</span> | Ipiķu      | pagasts |
|      <span style="color: #cc66cc;">1</span> | Mazsalacas | novads  |
|      <span style="color: #cc66cc;">1</span> | Rūjienas   | novads  |
+<span style="color: #808080; font-style: italic;">--------+------------+---------+</span>
<span style="color: #cc66cc;">3</span> rows <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></pre>

<p>Lieki piebilst, ka Mazsalacas novads nepārklāj Ipiķu atrašanās vietas punktu nevienā acī, bet MySQL tā nedomā. Tas gan nenozīmē, ka es vaļasbrīžos neturpināšu cīņu :)</p>

<p><ins datetime="2009-11-11T19:58:17+00:00">Papildināts 21:58</ins>. Izrādās, ka <cite>MySQL</cite> (vēl aizvien arī tekošajā 5.1 GA versijā) operē nevis ar poligoniem, bet gan ar taisnstūriem, kuri šos poligonus pilnībā ietver (<cite>bounding rectangles</cite>), kā rezultātā neder. <cite>PostgreSQL</cite> izmantot tikai šiem nolūkiem neredzu jēgu. Tiesa, <a href="http://forge.mysql.com/wiki/GIS_Functions" title="GIS Functions - MySQL Forge Wiki">cilvēki strādā pie tā</a>, lai <cite>MySQL</cite> ieviestu pilnvērtīgu <cite>OpenGIS</cite> atbalstu, bet, kā jau <cite>MySQL</cite> pierasts, tādas lietas nāk ļoti, ļoti lēnām (konkrēti &#8211; anonss par testēšanu ir 2 gadus vecs)&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/11/11/ipiki-un-citi/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Pagasti, novadi, un to esamība Gūgles kartēs</title>
		<link>http://laacz.lv/2009/11/10/pagasti-novadi-un-to-esamiba-gugles-kartes/</link>
		<comments>http://laacz.lv/2009/11/10/pagasti-novadi-un-to-esamiba-gugles-kartes/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 12:36:45 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6221</guid>
		<description><![CDATA[Papildināts 11. novembra 0:15. Pavei tik &#8211; Ipiķi Gūgles kārtē kā dzīvi, sasodīts! Sīkāk par to vsu kādu citu dienu. :) Sveiki, dārgie lasītāji. It sevišķi tie, kuri vēlas paurbt ģeometriju, mazliet paprogrammēt, un pēcāk rezultātus uzdāvināt pasaulei, lai tā kļūtu labāka. Principā, esi sveiks, programmētāj! :) Uzdevuma nosacījumi ir vienkārši. Gūgles kartē nepieciešams iezīmēt [...]]]></description>
			<content:encoded><![CDATA[<p><ins datetime="2009-11-10T22:15:02+00:00">Papildināts 11. novembra 0:15. Pavei tik &#8211; <a href="http://laacz.lv/tmp/ipiki.htm">Ipiķi Gūgles kārtē kā dzīvi</a>, sasodīts! Sīkāk par to vsu kādu citu dienu. :)</ins></p>

<p>Sveiki, dārgie lasītāji. It sevišķi tie, kuri vēlas paurbt ģeometriju, mazliet paprogrammēt, un pēcāk rezultātus uzdāvināt pasaulei, lai tā kļūtu labāka. Principā, esi sveiks, programmētāj! :)</p>

<p>Uzdevuma nosacījumi ir vienkārši.</p>

<p>Gūgles kartē nepieciešams iezīmēt precīzi jebkura Latvijas pagasta, Republikas nozīmes pilsētas vai novada kontūru. Tas ir izdarāms caur <a href="http://code.google.com/apis/maps/" title="Google Maps API - Google Code"><cite>Google Maps API</cite></a>, izmantojot <tt><a href="http://code.google.com/apis/maps/documentation/reference.html#GPolygon" title="Google Maps API Reference - Google Maps API - Google Code">GPolygon</a></tt> klasi.</p>

<p>Lai uzzīmētu kontūru, ir nepieciešami izejas dati. Tos (<a href="http://twitter.com/laacz/status/5554557062" title="Twitter / Mārtiņš Bruņenieks">paldies Mārtiņam</a>) var atrast vikipēdijā (<a href="http://lv.wikipedia.org/wiki/Att%C4%93ls:Latvijas_novadi_un_pagasti.svg" title="Attēls:Latvijas novadi un pagasti.svg - Vikipēdija ">pagasti un novadi</a>, <a href="http://lv.wikipedia.org/wiki/Att%C4%93ls:Latvijas_novadi_(kr%C4%81s%C4%81s).svg" title="Attēls:Latvijas novadi (krāsās).svg - Vikipēdija ">krāsoti novadi</a>). Pirmajā failā (diemžēl, bez komentāriem), ir atrodamas robežas un, kas man ir svarīgi, kārtīgi sagrupēti poligoni visiem Latvijas pagastiem un pilsētām.</p>

<span id="more-6221"></span>

<p>Savā piegājienā es paņēmu pirmo &#8211; Ipiķu pagastu, kurš tagad ir neatņemama manas dzīves sastāvdaļa, jo ir pirmais pagasts, kurš ienāk prātā, iedomājoties par Latvijas administratīvo dalījumu. Es arīdzan esmu par to informēts vairāk, nekā vajadzētu. Zinu, ka tā platība ir 67 km<sup>2</sup> un 2000. gadā viņi tur bija 395 (iedzīvotāji). Nu un vēl šo to. Noteikti kādreiz turp aizbraukšu.</p>

<p>Tālākais teorijā ir vienkārši. Mums ir nepieciešams pārrēķināt SVG koordinātas par platuma un garuma koordinātām. Tad, nu, uzinstalēju <cite>Inkscape</cite>, vāzu vaļā lielo SVG, un provēju izmērīt atrašanās vietu <a href="http://lv.wikipedia.org/wiki/Latvija#Gal.C4.93jie_Latvijas_punkti" title="Latvija - tās galējie punkti - Vikipēdija">Latvijas galējiem punktiem</a>. Kad tas izdarīts, es uzmeklēju Internetā galējo punktu koordinātas uz Zemes virsmas. Dīvani, bet tajā interneta daļā, kura pasniedz savu informāciju latviešu valodā, šīs koordinātas bija norādītas ar precizitāti līdz minūtei. Attiecīgi, <a href="http://en.wikipedia.org/wiki/Geography_of_Latvia#Area_and_boundaries" title="Latvia: Boundaries - Wikipedia">precīzākie dati atradās</a> angļu vikipēdijas Latvijas ģeogrāfijas aprakstā.</p>

<p>Tālāk jau ir diezgan vienkārša aritmētika. Vismaz teorijā tā vajadzēja būt. Izrēķinām to, cik grādus plats mums ir viens horizontālais SVG pikselis, kā arī cik grādus augsts ir vertikālais. Vēl mazas korekcijas, lai iegūtu vienotu bāzi, un aplauziens. Labākais tuvinājums, kuru man izdevās iegūt, ir šāds.</p>

<p class="c"><img src="http://laacz.lv/f/img/ipiki.png" width="438" height="506" alt="Ipiķu pagasts" /></p>

<p>Gala rezultātā (neesmu es nekāds ģeogrāfs vai ģeometrs, ja tādi vispār pastāv) izrādījās, ka koordinātu sistēmas ar vienkāršiem aritmētiskiem līdzekļiem pārrēķināt nevar. Jo. Pastāv zināmas atšķirības starp ģeogrāfisko koordināšu sistēmu un to, kāda tā tiek piemērota &#8220;plakanajās&#8221; kartēs &#8211; viens horizontālais kilometrs klasiskajā kartē būs konkrēts pikseļu, centimetru un collu skaits visās vietās. Kamēr, viens kilometrs uz Zemes virsmas atkarībā no platuma grāda satilpst dažādā garuma grādu, minūšu un sekunžu skaitā. Kas ir vairāk nekā loģiski (vai tā maz var būt? ja var, tad piedāvāju izmatntot terminu <q>paraloģiski</q>).</p>

<p>Aptuveni noskaidrot to, cik kilometrus būs viens garuma grāds interesējošajā platumā, var ar sekojošu formulu:</p>

<p class="c"><img src="http://laacz.lv/f/img/lat-long-km-formula.png" width="261" height="57" alt="Garuma grāda kilometri, atkarībā no platuma" /></p>

<p>Kur &phi; ir platuma grāds, bet a un b ir Zemes ekvatoriālais un polārais rādiuss respektīvi, kuri, kā zināms, atšķiras.</p>

<p>Protams, es kaut kādā brīdī vēl pabakstīšos, bet varbūt kādam ir gana daudz brīva laika un vēlmes, lai isniegtu formulu, ar kuras palīdzību varētu pārrēķināt iepriekšminētās SVG kartes kordinātas uz platuma un garuma grādiem :) Pilnīgi iespējams, ka esmu vēl kaut ko aprēķinos vērā ņemamu palaidis garām.</p>

<p>Realizētājam, pieņemu, mūžīga slava un lauru lapu vainagi garantēti, jo es nebūt neesmu vienīgais, kuru šāda padarīšana interesē. Kā pierādījums faktam kalpos gūgles kartē adekvāti iezīmēts Ipiķu pagasts, kuram būtu jāizskatās apmēram tā, kā to uzzīmē JS <a href="http://www.balticmaps.eu/?lang=lv&#038;centerx=569231&#038;centery=6432917&#038;zoom=5&#038;layer=map" title="BalticMaps.eu Ipiķu pagasts">iekš balticmaps.eu</a>. Ja vēlamies kontūru, ievadam adreses vai vietas meklēšanas lauciņā <q>Ipiķu pagasts</q>, un uzklikšķinam uz pagasta saites.</p>

<p class="c"><img src="http://laacz.lv/f/img/ipiki-correct.jpg" width="450" height="326" alt="Ipiķu pagasts pilnā tā robežu krāšņumā" /></p>

<p>P.S. Jā, iespējams, esmu saputrojies ģeogrāfiskā platuma un garuma terminos. Tas lietas būtību diez vai maina. Kā arī, varat iepazīties ar apjomīgu pētījumu par Latvijas centru (centriem, ja būsim precīzi): <q><a href="http://jonins.mii.lu.lv/raksti/Lcentri.htm" title="Kur Latvijai vidus">Kur Latvijai vidus?</a></q>.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/11/10/pagasti-novadi-un-to-esamiba-gugles-kartes/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Garās īsziņas &#8211; cik tas maksā? Cik tās ir garas?</title>
		<link>http://laacz.lv/2009/10/09/garas-iszinas-cik-tas-maksa-cik-tas-ir-garas/</link>
		<comments>http://laacz.lv/2009/10/09/garas-iszinas-cik-tas-maksa-cik-tas-ir-garas/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 11:21:47 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6195</guid>
		<description><![CDATA[Šodien tviterī ieradās jautājums par to &#8211; cik īsziņas gala rezultātā tiek nosūtītas, rakstot tās garākas par 160 zīmēm. Tad, nu, tā kā tviterī būt izsmeļošam ir pagrūti, tad paprovēšu atbildēt šeit. Visiem ir zināms &#8211; standarta īsziņa spēj sevī satilpināt 160 zīmes. Ne visiem ir zināms, ka šis nosacījums ir spēkā tikai tad, ja [...]]]></description>
			<content:encoded><![CDATA[<p>Šodien tviterī ieradās jautājums par to &#8211; cik īsziņas gala rezultātā tiek nosūtītas, rakstot tās garākas par 160 zīmēm. Tad, nu, tā kā tviterī būt izsmeļošam ir pagrūti, tad paprovēšu atbildēt šeit. </p>

<p>Visiem ir zināms &#8211; standarta īsziņa spēj sevī satilpināt 160 zīmes. Ne visiem ir zināms, ka šis nosacījums ir spēkā tikai tad, ja īsziņa satur tikai <a href="http://en.wikipedia.org/wiki/GSM_03.38 " title="GSM 03.38 - Wikipedia">GSM 03.38 definētos simbolus</a>. Lielākoties tie atbilst ASCII 7 bit simboliem ar dažiem izņēmumiem. Piemēram, visi šie simboli aizņem vienu vietu tais 160 pieļaujamajās zīmēs. Taču. Ir daži simboli, kuri aizņem divas. Piemēram &#8211; {, }, €, u.c. Tas nozīmē, ka, ja teksts satur šādas zīmītes, tad pieļaujamais īsziņas teksta garums saīsinās :)</p>

<p>Lai lietas sarežģītu vēl vairāk, pieņemsim, ka tu esi uzrakstījis īsziņu, kura ir garāka par 160 zīmēm. Teiksim &#8211; 161. Tādos gadījumos tālruņiem šī viena garā īsziņa ir jāsadala vairākās mazākās. Dalīšanas rezultātā katra īsziņa nedrīkst saturēt vairāk par 153 teksta simboliem (GSM gadījumā &#8211; septetiem), jo klāt nāk dienesta informācija, kura ļauj saņēmējam tās atkal apvienot pareizā secībā. Tātad, 161 zīmes gadījumā nosūtīsies divas īsziņas, kuras saturēs 153 un 8 teksta septetus. Tehniski tie būs septeti, bet nu&#8230;</p>

<p>Tagad, teiksim, tu sagribēji nosūtīt īsziņu, kurā ir kaut viens vienīgs &#8220;ā&#8221;. Tādos gadījumos īsziņas kodējums no iepriekšminētā GSM alfabeta tiek mainīts uz UCS2 (konkrēti &#8211; UTF-16 big endian), kā rezultātā katrs īsziņas simbols, neskatoties uz to &#8211; sevišķais vai parastais, aizņem jau divus baitus. Aritmētiski tas saīsina vienuīsziņu līdz 70 zīmēm. Ja tās garums pārsniedz 70 zīmes, tad katra daļa nesaturēs vairāk par 64 zīmēm.</p>

<p>Teorijā šādu daļu skaits var būt 255. Praksē parasti to skaits nepārsniedz 7. Pie kam, operators tarificē katru no šīm daļām kā vienu īsziņu.</p>

<p>Kopsavelkot &#8211; bez speciālajiem simboliem viena īsziņa var saturēt līdz 160 simboliem, bet pēc tam notiek īsziņu dalīšana, no kurām katra var saturēt līdz 153 simboliem. Ar speciālajiem simboliem vienas īsziņas garums ir 70 simboli, bet, ja tas ir garāks, katra daļa saturēs 64 simbolus.</p>

<p>Kaut kā tā. Iespējams, ka esmu mazliet saputrojies skaitļos vai definīcijās, bet virspusēji tas viss izskatās ikurāt šādi. Vēl var parunāt par SMPP, un to, ka tur viss notiek ar baitiem, nevis septetiem, kas rezultējas ļoti daudz dažādās viltībās iekš tā &#8211; kā īsziņas saturs GSM alfabeta gadījumā tiek vai netiek transformēts pie operatora, pirms nonākt līdz lietotājam. Un arī otrādāk :)</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/10/09/garas-iszinas-cik-tas-maksa-cik-tas-ir-garas/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>SQL grafiki</title>
		<link>http://laacz.lv/2009/08/12/sql-grafiki/</link>
		<comments>http://laacz.lv/2009/08/12/sql-grafiki/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 11:58:42 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6101</guid>
		<description><![CDATA[Šodienas dedzinošākais ieraksts (technisks, protams) ir par to, kā ar ne gluži vienkāršu SQL vaicājumu (vienu) var uzzīmēt ASCII grafiku. Tur pat nav ko piebilst.]]></description>
			<content:encoded><![CDATA[<p>Šodienas dedzinošākais ieraksts (technisks, protams) ir par to, kā ar ne gluži vienkāršu SQL vaicājumu (vienu) <a href="http://code.openark.org/blog/mysql/sql-pie-chart" title="SQL pie chart | code.openark.org">var uzzīmēt ASCII grafiku</a>. Tur pat nav ko piebilst.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/08/12/sql-grafiki/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Kas ir rekursija?</title>
		<link>http://laacz.lv/2009/07/23/kas-ir-rekursija/</link>
		<comments>http://laacz.lv/2009/07/23/kas-ir-rekursija/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 13:43:48 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=6074</guid>
		<description><![CDATA[Par programmēšanu. Jautājums: Kas ir rekursija? Atbilde: Skat. jautājumu. Vai arī pavaicā visuvarenajai un visuzinošajai gūglei.]]></description>
			<content:encoded><![CDATA[<p>Par programmēšanu.</p>

<blockquote>
<p>Jautājums: Kas ir rekursija?</p>
<p>Atbilde: Skat. jautājumu.</p>
</blockquote>

<p>Vai arī <a href="http://www.google.lv/search?q=recursion" title="Google Search: recursion">pavaicā visuvarenajai un visuzinošajai gūglei</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/07/23/kas-ir-rekursija/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>iPhone ņūz</title>
		<link>http://laacz.lv/2009/06/09/iphone-nuz/</link>
		<comments>http://laacz.lv/2009/06/09/iphone-nuz/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 09:58:48 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5989</guid>
		<description><![CDATA[Man kā esošam iPhone lietotājam teju vai ir pienākums uzrakstīt kaut ko par jaunumiem šai sakarā. Krutākais nav saistīts ar pašu Apple. Vismaz tieši. Pateicoties licences līguma nosacījumu maiņai, beidzot uz šī aparāta būs arī TomTom. Interesants šķiet arī statīvs, kurš nodrošina ne tikai aparāta turēšanu, bet uzlabo tā GPS uztveršanas spējas, un kalpo kā [...]]]></description>
			<content:encoded><![CDATA[<p>Man kā esošam <cite>iPhone</cite> lietotājam teju vai ir pienākums uzrakstīt kaut ko par jaunumiem šai sakarā.</p>

<p>Krutākais nav saistīts ar pašu <cite>Apple</cite>. Vismaz tieši. Pateicoties licences līguma nosacījumu maiņai, <a href="http://iphone.tomtom.com/" title="TomTom for iPhone">beidzot uz šī aparāta būs arī TomTom</a>. Interesants šķiet arī statīvs, kurš nodrošina ne tikai aparāta turēšanu, bet uzlabo tā GPS uztveršanas spējas, un kalpo kā bezroku sistēma. Starp citu, pats <cite>Apple</cite> šāda tipa aksesuāru (mašīnas montāžas kitu) nepiedāvā. Vai vismaz nepiedāvāja, kad interesējos.</p>

<p>Sāksim ar to, ka vakar vakarā tika anonsēts jaunā <cite>iPhone</cite> versija &#8211; <a href="http://www.apple.com/iphone/iphone-3g-s/" title="Apple - iPhone - View all the features of the new iPhone 3G S"><cite>iPhone 3G S</cite></a>, kuras nosaukumā <q>S</q> nozīmē <q>speed</q>. Kardinālu novitāšu nav. Ātrāks esot. Kamera tagad ir trīs megapikseļi ar autofokusu un video filmēšanas opciju. Man tas gluži nepieciešams nav. Ir kompass (ļauj kartei pašai pagriezties virzienā, kurā skatās telefons). Atbalsta 7.5 megabitu HSDPA datu pārraidi. Principā tas arī viss no dzelžu viedokļa.</p>

<p>Apple vēsta, ka jaunais modelis Latvijā būs pieejams sākot ar 7. jūliju. Protams, ka neviens neko nezin par cenām. AT&#038;T 8GB 3G maksāšot 99 dolārus, bet 3GS &#8211; 199 un 399 par 16 un 32GB versijām respektīvi. Papildus tam, mūsu valstī nav ierasta lieta, kas citviet ir tikai normāli &#8211; piedāvāt esošajiem klientiem tādu kā <cite>apgreida</cite> iespēju uz jaunāku tālruņa modeli. Tas nozīmē, ka, visticamākais, tālrunis būs jāpērk par jaunu, lai arī subsidēts un līdz ar to arī lētāks, nekā citur.</p>

<p>Līdz ar jauno <cite>iPhone</cite> <a href="http://www.apple.com/iphone/softwareupdate/" title="Apple - iPhone - New Features in The iPhone 3.0 Software Update">ir atjaunināta arī tā programmatūra</a>, kura būs pieejama arīdzan iepriekšējiem modeļiem. Plaša patēriņa segmentā tā tiks laista klajā 19. jūnijā. </p>

<p>Beidzot ir ieviesta <cite>copy and paste</cite> iespēja. Tiesa, tā darbojas arī uz tekstiem un bildēm no weblapām, ko var attiecīgi, piemēram, iepeistot e-pastā. Vajadzēja jau viņiem kaut vienu ieganstu, kāpēc tas nebija līdz šim. MMS &#8211; niecīgu popularitāti guvušais pakalpojums Latvijā. Bet, nu, labi. Ir. Beidzot ir realizēta iespēja klaviatūru lietot horizontāli pamataplikācijās, kurās šīs iespējas nav bijis līdz šim. Kalendāra aplikācija ir piedzīvojusi izmaiņas, kuras bez interfeisa ietver sevī arī <cite>CalDAV</cite> atbalstu (hooray!). Labāks pārlūks, kā jau tas ierasts ar šiem apdeitiem. Stereo Bluetooth atbalsts. Rakstīts, ka atbalsta piezīmju sinhronizāciju. Ja tas darbosies arī caur <cite>ActiveSync</cite>, būšu priiecīgs.</p>

<p>Viena no visgaidītākajām iespējām ir <cite>iPhone</cite> izmantošana kā modemam &#8211; lai tam varētu pieslēgt datoru un internetot uz nebēdu. Nav teikts, ka tas darbosies pie mums, jo ne visi operatori tam ir piekrituši dēļ sevis piedāvātajiem datu pārraides tarifu plāniem.</p>

<p>Vairākas jaunas iespējas ir radušās tiem, kas izmanto MobileMe &#8211; var atrast savu zudušo tālruni, izdzēst tā saturu, atskaņot kādu signālu vai arī parādīt uz ekrāna paziņojumu.</p>

<p>Visas detaļas un manis neuzskaitītos jaunumus var izlasīt internetos. Par to &#8211; vai es iegādāšos jauno modeli, &#8211; vēl nezinu. Viss ir atkarīgs no kopējās cenas cenas, potenciālajām līguma izmaiņām, savas tā brīža rocības un citu atsauksmēm.</p>

<p>Starp citu, kādu brīdu tagad esmu pastaigājis ar <cite>Samsung Omnia HD</cite>. Nekad nebūtu ticējis, ka šī kompānija var izveidot tādu telefonu (man pietika ar C100:), kurš pat man patīk. Sasodīti biju pārsteigts. Protams, nav tam arī tikai plusi, bet par to citreiz.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/06/09/iphone-nuz/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Slodzes dalīšana</title>
		<link>http://laacz.lv/2009/04/07/slodzes-dalisana/</link>
		<comments>http://laacz.lv/2009/04/07/slodzes-dalisana/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 11:56:26 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5914</guid>
		<description><![CDATA[Starp citu, vai neviens nav iedomājies, ka daļu aprēķinu varētu nodot lapu apmeklētāju datoriem ar visvienkāršāko metodi? Kaut vai, izmantojot to pašu Gūgles ieviesto map-reduce principu. Serveris katram apmeklētājam iedala mazu uzdevumiņu pie, kuru tas, kad izrēķina, atdod atpakaļ serverim. It sevišķi, pie mūsdienu pārlūku cīņas par JS ātrdarbību tas varētu būt diezgan labs veids, [...]]]></description>
			<content:encoded><![CDATA[<p>Starp citu, vai neviens nav iedomājies, ka daļu aprēķinu varētu nodot lapu apmeklētāju datoriem ar visvienkāršāko metodi? Kaut vai, izmantojot to pašu Gūgles ieviesto <cite>map-reduce</cite> principu. Serveris katram apmeklētājam iedala mazu uzdevumiņu pie, kuru tas, kad izrēķina, atdod atpakaļ serverim. It sevišķi, pie mūsdienu pārlūku cīņas par JS ātrdarbību tas varētu būt diezgan labs veids, kā, piemēram, iekš milzīgas apmeklētības lapām ielikt SETI@home vai Folding palīgskriptiņu &#8211; Gūgle, Digg, u.c.</p>

<p>Aiz kam ne?</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/04/07/slodzes-dalisana/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Komentāru nebūšanas</title>
		<link>http://laacz.lv/2009/03/10/komentaru-nebusanas/</link>
		<comments>http://laacz.lv/2009/03/10/komentaru-nebusanas/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 14:27:17 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5861</guid>
		<description><![CDATA[Atvainojiet tie, kas nespēj šad un tad iekomentēt. Problēma, pateicoties Krotow, ir lokalizēta un nākamnedēļ, kad atgriezīšos no slēpošanas brauciena, to plānoju salabot. Ja nu interesē, kas par lietu, varu paskaidrot. Esmu ieviesis savā blogā viltīgu pretspama filtru. Tas darbojas tā, ka visiem komentāru formas laukiem tiek priekšā pievienota ņekaja vērtība, kura ir pirmie desmit [...]]]></description>
			<content:encoded><![CDATA[<p>Atvainojiet tie, kas nespēj šad un tad iekomentēt. Problēma, pateicoties Krotow, ir lokalizēta un nākamnedēļ, kad atgriezīšos no slēpošanas brauciena, to plānoju salabot. Ja nu interesē, kas par lietu, varu paskaidrot.</p>

<p>Esmu ieviesis savā blogā viltīgu pretspama filtru. Tas darbojas tā, ka visiem komentāru formas laukiem tiek priekšā pievienota ņekaja vērtība, kura ir pirmie desmit simboli no md5 heša no tekošā datuma. Šī vērtība tiek aprēķināta divreiz &#8211; pirmo reizi komentāru lapā, kad to iekešo lietotāja proksis (rezultātā &#8211; padodamā vērtība var būt novecojusi). Otro reizi komentāru pievienošanas brīdī, kad tas aprēķina (meklējamā vertība ir tekošā). Rezultātā &#8211; padotā vērtība nesakrīt ar gaidāmo un wordpress uzskata, ka nav aizpildīti nepieciešamie lauki.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/03/10/komentaru-nebusanas/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>PHP un 64 biti</title>
		<link>http://laacz.lv/2009/03/04/php-un-64-biti/</link>
		<comments>http://laacz.lv/2009/03/04/php-un-64-biti/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 17:38:22 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5844</guid>
		<description><![CDATA[Es, šķiet, pirmo reizi mūžā šodien saskāros ar problēmu, kuras sakne ir tanī, ka 32bit sistēmas un 64bit sistēmas ir ne pārāk viegli savietojamas. Eksistē maģiska funkcija, kā unpack(). Konkrētajā gadījumā man no četriem secīgiem baitiem nepieciešams &#8220;izpakot&#8221; 32 bitu naturālu skaitli big endian baitu secībā. Nekādu problēmu. Neskatoties ne uz ko, tas vienmēr ir [...]]]></description>
			<content:encoded><![CDATA[<p>Es, šķiet, pirmo reizi mūžā šodien saskāros ar problēmu, kuras sakne ir tanī, ka 32bit sistēmas un 64bit sistēmas ir ne pārāk viegli savietojamas. </p>

<p>Eksistē maģiska funkcija, kā <tt><a href="http://lv.php.net/unpack" title="PHP: unpack - Manual">unpack()</a></tt>. Konkrētajā gadījumā man no četriem secīgiem baitiem nepieciešams &#8220;izpakot&#8221; 32 bitu naturālu skaitli <cite>big endian</cite> baitu secībā. Nekādu problēmu. Neskatoties ne uz ko, tas vienmēr ir izdevies bez problēmām. Šodien, uz kādas 64 bitu sistēmas radās nepieciešamība palaist attiecīgo skriptu nevis zem PHP4, kā līdz šim, bet nu jau zem PHP5 (uz 32bit PHP5 problēmu nav). Un tad nu sākās.</p>

<pre class="php">list<span style="color: #66cc66;">&#40;</span>,<span style="color: #0000ff;">$command_id</span><span style="color: #66cc66;">&#41;</span> =  <a href="http://lv.php.net/unpack"><span style="color: #000066;">unpack</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'N'</span>, \
    <a href="http://lv.php.net/chr"><span style="color: #000066;">chr</span></a><span style="color: #66cc66;">&#40;</span>0x80<span style="color: #66cc66;">&#41;</span> . <a href="http://lv.php.net/chr"><span style="color: #000066;">chr</span></a><span style="color: #66cc66;">&#40;</span>0x00<span style="color: #66cc66;">&#41;</span> . <a href="http://lv.php.net/chr"><span style="color: #000066;">chr</span></a><span style="color: #66cc66;">&#40;</span>0x00<span style="color: #66cc66;">&#41;</span> . <a href="http://lv.php.net/chr"><span style="color: #000066;">chr</span></a><span style="color: #66cc66;">&#40;</span>0x09<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
<span style="color: #808080; font-style: italic;"># Iegūstam -2147483639 </span></pre>

<p>Tas nekas, ka reāli tas ir negatīvs skaitlis, neskatoties uz <tt>unpack</tt> norādīto informāciju. Sekojošais kods visu noliek savās vietās un iegūstam pozitīvu skaitli:</p>

<pre class="php"><span style="color: #0000ff;">$command_id</span> = <a href="http://lv.php.net/hexdec"><span style="color: #000066;">hexdec</span></a><span style="color: #66cc66;">&#40;</span><a href="http://lv.php.net/dechex"><span style="color: #000066;">dechex</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$command_id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
<span style="color: #808080; font-style: italic;"># Iegūstam 2147483657 </span></pre>

<p>Taču, uz 64bit PHP5 man šāda operācija pēkšņi sāka izsniegt skaitli <tt>1.8446744071562E+19</tt>. Neiedziļinoties detaļās &#8211; kāpēc tā, sapratu, ka esmu nepareizi darījis. Tā vietā, lai atrisinātu problēmu ar pirmo atrasto metodi, man vajadzēja to saprast līdz saknei un risināt ar pirmo pareizo. Un tā būtu:</p>

<pre class="php"><span style="color: #0000ff;">$command_id</span> &amp;= 0xffffffff;</pre>

<p>Šis atrisina problēmu uz 64bit sistēmām, un neko nesalauž uz 32bit. Kā jau minēju, uz tās pašas kastes PHP4 uzvedās korekti.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/03/04/php-un-64-biti/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dumjais lācis un paitōns</title>
		<link>http://laacz.lv/2009/02/27/dumjais-lacis-un-paitons/</link>
		<comments>http://laacz.lv/2009/02/27/dumjais-lacis-un-paitons/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 10:10:23 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5822</guid>
		<description><![CDATA[Vakar pavadīju aptuveni trīsdesmit minūtes, lai atrisinātu neskaidru problēmu. Īsumā &#8211; SQL serveris pie UPDATE vaicājuma paziņoja, ka kaut kāda vērtība ir ārpus pieļaujamajām robežām. Microsoft Dynamics AX datubāzē datums tiek rakstīts kā normāls DATETIME lauks. Bet, kā izrādās (ja ticēt integratoriem), laiks, savukārt, ir jāraksta atsevišķā kolonnā. Nebūtu jau nekas tāds nenormāli baiss, ja [...]]]></description>
			<content:encoded><![CDATA[<p>Vakar pavadīju aptuveni trīsdesmit minūtes, lai atrisinātu neskaidru problēmu. Īsumā &#8211; SQL serveris pie <tt>UPDATE</tt> vaicājuma paziņoja, ka kaut kāda vērtība ir ārpus pieļaujamajām robežām.</p>

<p><cite>Microsoft Dynamics AX</cite> datubāzē datums tiek rakstīts kā normāls <tt>DATETIME</tt> lauks. Bet, kā izrādās (ja ticēt integratoriem), laiks, savukārt, ir jāraksta atsevišķā kolonnā. Nebūtu jau nekas tāds nenormāli baiss, ja <cite>Axapta</cite> nepieprasītu laiku rakstīt kā parastu skaitli, kurš norāda sekundes kopš pusnakts (!).</p>

<p>Tālāk jau sekoja ātrs uzrakstījums (jo optimālāku metodi nemeklēju).</p>

<pre class="python">zakainop.<span style="color: #202020;">transactiontime</span> = \
    notification.<span style="color: #202020;">ts</span>.<span style="color: #202020;">strftime</span><span style="color: #66cc66;">&#40;</span>'%H'<span style="color: #66cc66;">&#41;</span> * <span style="color: #cc66cc;">60</span> * <span style="color: #cc66cc;">60</span> + \
    notification.<span style="color: #202020;">ts</span>.<span style="color: #202020;">strftime</span><span style="color: #66cc66;">&#40;</span>'%M'<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #cc66cc;">60</span> + \
    notification.<span style="color: #202020;">ts</span>.<span style="color: #202020;">strftime</span><span style="color: #66cc66;">&#40;</span>'%S'<span style="color: #66cc66;">&#41;</span></pre>

<p>Vai jums šķiet, ka es panācu vēlamo rezultātu? Jo rezultātā ieguvu teksta virkni, kurā stundas atkārtojās 3600 reizes, minūtes &#8211; 60 reizes un sekundes bija vienu reizi galā. Ibo, visiem (arī man bija) zināms sekojošais.</p>

<pre class="python">'kaka' * <span style="color: #cc66cc;">2</span> <span style="color: #808080; font-style: italic;"># Būs 'kakakaka' </span></pre>

<p>Lieki piebilst, ka es par to biju piemirsis un neiedomājos, ka <cite>overflow</cite> iestājas ikurāt šā iemesla dēļ. Vēlējos tikai pazīmēties, cik dažreiz esmu dumjš.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/02/27/dumjais-lacis-un-paitons/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Intraneti</title>
		<link>http://laacz.lv/2009/02/24/intraneti/</link>
		<comments>http://laacz.lv/2009/02/24/intraneti/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 10:06:32 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5810</guid>
		<description><![CDATA[Programmētājs darba intervijā. - Kāds bija iemesls aiziešanai no iepriekšējās darbavietas? - Intraneta izstrāde un testēšana. - Slikti izstrādājāt? - Nē, atlūguma iesniegšanas forma darbojas izcili. Bet galvenais jautājiens &#8211; kuru CMSu cilvēki varētu ieteikt mazam intranetiņam? Drupālu, vai? Gribētos, lai autentifikāciju varētu nomainīt no iebūvētās uz LDAP, un citas korporatīvas figņas fiņiņas.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Programmētājs darba intervijā.</p>

<p>- Kāds bija iemesls aiziešanai no iepriekšējās darbavietas?</p>

<p>- Intraneta izstrāde un testēšana.</p>

<p>- Slikti izstrādājāt?</p>

<p>- Nē, atlūguma iesniegšanas forma darbojas izcili.</p>
</blockquote>

<p>Bet galvenais jautājiens &#8211; kuru CMSu cilvēki varētu ieteikt mazam intranetiņam? Drupālu, vai? Gribētos, lai autentifikāciju varētu nomainīt no iebūvētās uz LDAP, un citas korporatīvas figņas fiņiņas.</p>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/02/24/intraneti/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Nāvi smailijiem</title>
		<link>http://laacz.lv/2009/01/29/navi-smailijiem/</link>
		<comments>http://laacz.lv/2009/01/29/navi-smailijiem/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 07:36:06 +0000</pubDate>
		<dc:creator>laacz</dc:creator>
				<category><![CDATA[Techy]]></category>

		<guid isPermaLink="false">http://laacz.lv/?p=5738</guid>
		<description><![CDATA[Spicausis ieskaiperēja ar saiti uz dokumentu, par kura nepieciešamību var aizdomāties tikai specifiskas vielas lietojot. Veco 1.0 internetu laikos mēs, lai elektronizētu smaidu, rakstījām &#8220;:)&#8221;. 1.5 internetu laikos tas viss masveidā tika aizvietots ar emotikoniem &#8211; smaidīgiem apaļiem bumbuļiem bildīšu paskatā. Tagad, kad sakarā ar 2.0 viss ir izdarīts, bet 3.0 ir versija tam, kas [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://spicausis.klab.lv/" title="bigger words than usual">Spicausis</a> ieskaiperēja ar saiti uz dokumentu, par kura nepieciešamību var aizdomāties tikai specifiskas vielas lietojot. Veco 1.0 internetu laikos mēs, lai elektronizētu smaidu, rakstījām &#8220;:)&#8221;. 1.5 internetu laikos tas viss masveidā tika aizvietots ar emotikoniem &#8211; smaidīgiem apaļiem bumbuļiem bildīšu paskatā. Tagad, kad sakarā ar 2.0 viss ir izdarīts, bet 3.0 ir versija tam, kas nekad nebūs, W3C inkubatora pārstāvji ir ķērušies pie emocijām, radot <cite><a href="http://www.w3.org/2005/Incubator/emotion/XGR-emotionml-20081120/" title="Elements of an EmotionML 1.0">EmotionML 1.0</a></cite>.</p>

<p>Tad nu, tālu vairs nav tā diena, kad vārda <q>kārns</q> vietā ierakstot dokumentā vārdu <q>krāns</q>, dators ne tikai to palabos, bet arī ar nīgri (koeficients 0.6) pasmīkņās.</p>

<p>No otras puses, var jau arī ikdienas pielietojumu atrast pat šitik jocīgai specifikācijai. Piemēram, automatizētās sejas/personu atpazīšanas sistēmās. Vai arī sociālajos tīklos paplašināt un standartizēt cilvēka emocionālo stāvokli (poke:). Var arīdzan aprakstīt emocionālo komponenti kādam dialogam, piemēram.</p>

<p>Uzskatāmībai strīdīgi jautrs paraugs.</p>

<pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;emotion<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;appraisals</span> <span style="color: #000066;">set</span>=<span style="color: #ff0000;">&quot;Scherer_appraisals_checks&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;novelty</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;intrinsic</span>-pleasantness <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;-0.5&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/appraisals<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/emotion<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>]]></content:encoded>
			<wfw:commentRss>http://laacz.lv/2009/01/29/navi-smailijiem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

