<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Timgluz&#039;i küberruumi projektsioon</title>
	<atom:link href="http://timgluz.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://timgluz.wordpress.com</link>
	<description>Minu tegemised , toimetamised IT-maailmas</description>
	<lastBuildDate>Thu, 21 Oct 2010 17:16:36 +0000</lastBuildDate>
	<language>et</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='timgluz.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/8b6490668c7cdf8d82e831ad5cda83bb?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Timgluz&#039;i küberruumi projektsioon</title>
		<link>http://timgluz.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://timgluz.wordpress.com/osd.xml" title="Timgluz&#039;i küberruumi projektsioon" />
	<atom:link rel='hub' href='http://timgluz.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Twitter ja WallStreeti kristallkuulid</title>
		<link>http://timgluz.wordpress.com/2010/10/21/twitter-ja-wallstreeti-kristallkuulid/</link>
		<comments>http://timgluz.wordpress.com/2010/10/21/twitter-ja-wallstreeti-kristallkuulid/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 15:07:22 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[kool]]></category>
		<category><![CDATA[Silmad olgu teil avatud.]]></category>
		<category><![CDATA[Statistika]]></category>
		<category><![CDATA[Tehnoloogia]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[misuse]]></category>
		<category><![CDATA[sp500]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wall street]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=714</guid>
		<description><![CDATA[To Err is Human. To really screw up, you need a computer. Popular T-shirt logan in 80&#8242;s &#160; Eile oli rahvusvaheline statistika päev. Mina tähistasin seda omamoodi, ma lõpetasin selle poolaasta parima lugemise &#8220;Nerds on wallstreet&#8221; ja analüüsisin põhjalikult  viimasel ajal furoori tekitanud teaduslikku artiklit &#8220;Twitter moods predict stock market.&#8221; Ma alguses eeldasin , et [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=714&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>To Err is Human. To really screw up, you need a computer.</p>
<p style="text-align:right;">Popular T-shirt logan in 80&#8242;s</p>
<p style="text-align:left;">&nbsp;</p>
</blockquote>
<p style="text-align:left;">Eile oli rahvusvaheline statistika päev. Mina tähistasin seda omamoodi, ma lõpetasin selle poolaasta parima lugemise &#8220;<a href="http://nerdsonwallstreet.typepad.com/" target="_blank">Nerds on wallstreet</a>&#8221; ja analüüsisin põhjalikult  viimasel ajal furoori tekitanud teaduslikku artiklit &#8220;<a href="http://arxiv.org/abs/1010.3003" target="_blank">Twitter moods predict stock marke</a>t.&#8221;</p>
<p style="text-align:left;">Ma alguses eeldasin , et see oligi mõeldud naljaartiklina, nagu kunagi Davif J. LeinWeber (Nerds on Wallstreeti autor) leidis 99% täpsusega korrelatsiooni Bangladeshi 10aastase või tootmise , lammaste sigivuse ja S&amp;P 500 aastase muutuse vahel või siis Mr. Bloom naljamudel, mis kasutas NY Yankeede edukust aksiate edukuse hindamisel(vt väljavõtteid allpool).</p>
<p style="text-align:left;">Aga kuna see artikkel saadeti laiali laiemale hulgale ning arhiveeriti teadustööde võrguarhiivi, siis ei saa seda enam naljana võtta vaid autorite ilmselge püüdlusena toota tõsist teadust.</p>
<p style="text-align:left;">Lugesin ja analüüsisin ning lühidalt võib selle artikli kokku võtta ühe selle autori eesnimega: HUI NA, või siis ka NA HUI. Enda lolliks tegemiseks ei pea kasutama tipptehnoloogiat ja  teadusliku kraadi.</p>
<p style="text-align:left;">Esimene hoiatussignaal tuli juba autorite eriala vaadates: KÕIK 3 vaid infotehnoloogiaga kursis inimesed.</p>
<p style="text-align:left;">Esimene valugrimass tuli esimesel lehel teises tulbas teises veerus:</p>
<p style="text-align:left;"><em>&#8221; Behavioral ﬁnance has provided further proof that ﬁnancial decisions are signiﬁcantly driven by emotion and mood [19]. It is thereforereasonable to assume that the public mood and sentiment candrive stock market values as much as news.</em></p>
<p style="text-align:left;">&#8220;</p>
<p style="text-align:left;">Emotsioonid ja &#8220;uudised&#8221; on ühes pajas vaid Õhtulehes, muul juhul tuleks koheselt keelata igasugused pensionifondid.</p>
<p style="text-align:left;">Teine sähvakas tuli järgmiselt lehelt, kui tuli välja, et nad kasutasid 10miljonit säutsu vahemikus 28.veebruar 2008 kuni 29.detsember 2008. Liialt lühike vahemik, korrelatsiooni tõestamiseks ja valideerisid vigaselt vigaseid andmeid <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p style="text-align:left;">Kolmandaks, nad ülistavad uudiseid, kuid nad ei tajunud et uudiseid, mis seostuvad aktsiatega on ajaliselt ennetava ja tagajärjelised ning allikapoolest otsesed (sh insider info ) või kõlakad. Kuid paar rida hiljem tuli välja, et see polegi määrav &#8211; nad filteerisid välja uudised, mis vastavad mustrile  &#8221;i like &#8230;&#8221;, &#8220;makes me&#8221;, &#8221; i&#8217;m feeling&#8221;, &#8220;i am&#8221; &#8230; Sama hästi oleks võinud võtta ka toruimmistust ja kõhulahtisust sisaldavad säutsud, manipuleeritud tulemustest rääkimata.</p>
<p style="text-align:left;">Miinus punkte oli veelgi, kuid ülevaatlikuse ja loetavuse huvides jäägu need edaspidiseks tarvitamiseks.</p>
<p style="text-align:left;"><strong>Kokkuvõttes:</strong></p>
<p style="text-align:left;">Tehnoloogiliselt oli ülesanne lahendatud  huvitavalt, nt kuidas nad analüüsid Twitteri vooge  ja määrasid säutsuja tujusid, ma sain sealt isegi kasulikke tehnilisi nippe ja vihjeid (nt vaadalda seda kui CollectiveIntelligence künka otsast), kuid sisuliselt on see väärtusetu teos.</p>
<p style="text-align:left;">Sealjuures nad kasutasid 3nda osapoole tarkvara ning nende tööst oli arusaada, et nad suhtusid kasutavasse tarkvarasse kui väga musta kasti ja polnud vähimatki ülevaadet kuidas see tarkvara töötab, hoolimata et nende teadusartikkel hakkab toetuma sellele toetuma. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align:left;">Kuid lõputiitrites võis õnneks lugeda ausat ülestunnistuse moodi asja:</p>
<blockquote>
<p style="text-align:left;">&#8220;. Third, these results are strongly indicative of a predictive correlation between measurements of the public mood states from Twitter feeds, but offer no information on the causative mechanisms that may connect public mood states with DJIA values in this manner.</p>
<p style="text-align:left;">&#8220;</p>
</blockquote>
<p style="text-align:left;">Üldiselt on seda jama on raske kommenteerida, sest nad ei tootnud midagi asjalikku &#8211; nad võtsid paar programmi ning väga fänci nimega masinõpe algoritmi (<em>ja ainult 1!?</em>) ning segasid selle võlusõna Twitteriga.</p>
<p style="text-align:left;">Kahju, et  teadlased rikuvad sellise rumala tellimustööga(<em>töö lõpus on viide tellijale</em>) oma resümee ja pikast haridusteest hoolimata suudavad unustada, et <strong>korrelatsioon ei võrdu põhjuslik seos[</strong>4<strong>]</strong>.</p>
<p style="text-align:left;">Kui on soovi minu kriitikat rohkem mõista, siis vaata ka artiklit &#8220;<a href="http://shookrun.com/documents/stupidmining.pdf" target="_blank">Stupid Data miner tricks: Overfitting the SP500</a>&#8220;[3]</p>
<p style="text-align:left;">Just leidsin palju asjalikuma uurimstöö Tommy Gärlingi &amp; Co poolt: &#8220;<a href="http://www.bolton.ac.uk/Conferences/EconomicPsychology/T%20Garling.pdf" target="_blank">Psychology, Financial Decision Making, nad Financial Crisis</a>&#8220;</p>
<p style="text-align:left;">&nbsp;</p>
<p style="text-align:left;">&nbsp;</p>
<p style="text-align:left;">Väljavõtted Nerds On Wallstreetist:</p>
<p style="text-align:left;"><em>Believe it or not, there was a 10-year periodwhen the annual change in the S&amp;P 500 had a 75 percent correlationwith butter production in Bangladesh. Favoring models with fewer variables and simpler transforms can be reﬂected in the ﬁtness function.</em></p>
<p><em>It gets much wackier than this. A man named Norman Bloom, no doubt a championof all data miners, went beyond trying to predict the stock market. Instead, he usedthe stock market, along with baseball scores, particularly those involving the New YorkYankees, to “read the mind of God.” I offer a small sample of Bloom, in the originalpunctuation and spelling, here: “The instrument God has shaped to brig proof he hasthe power to shape the physical actions of mankind—is organized athletics, and par-ticularly baseball. the second instrument shaped by the one God, as the means to bringproof he is the one God concerned with the mental and business aspects of mankindand his civilization is the stock market—and particularly the greatest and most famousof all these—i.e., the New York Stock Exchange.” Mr. Bloom’s work was brought tomy attention by Ron Kahn of Barclays Global Investing. Bloom himself did not pub-lish in any of the usual channels, but seekers of secondary truth can consult “God andNorman Bloom” by Carl Sagan, in American Scholar (Autumn 1977), p. 462. [1]</em></p>
<blockquote><p>Lie, Damned lie,  and statistics [2]</p>
<p>Mark Twain</p></blockquote>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Lingid:</p>
<p>[1] &#8220;Nerds on Wallstreet&#8221;, p.147 , <a href="http://nerdsonwallstreet.typepad.com/">http://nerdsonwallstreet.typepad.com/</a></p>
<p>[2] <a href="http://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statistics">http://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statistics</a></p>
<p>[3] &#8220;Stupid data mining trick: &#8220; <a href="http://shookrun.com/documents/stupidmining.pdf" target="_blank">http://shookrun.com/documents/stupidmining.pdf</a></p>
<p>[4] Ago Sauga statistika konspektid: <a href="http://www.sauga.pri.ee/audentes/download/kvantmeetod_lk45_68.pdf" target="_blank">http://www.sauga.pri.ee/audentes/download/kvantmeetod_lk45_68.pdf</a></p>
<p>[5] Tommy Gärling,&#8221;Psychology, Financial Decision Making, and Financial Crises&#8221;,   <a href="http://www.bolton.ac.uk/Conferences/EconomicPsychology/T%20Garling.pdf" target="_blank">http://www.bolton.ac.uk/Conferences/EconomicPsychology/T%20Garling.pdf</a></p>
<p>* Bloombergi newsi artikel:</p>
<p><a href="http://www.bloomberg.com/news/2010-10-21/twitter-analysis-reads-investors-minds-can-predict-stock-market-swings.html">http://www.bloomberg.com/news/2010-10-21/twitter-analysis-reads-investors-minds-can-predict-stock-market-swings.html</a></p>
<p>* SingularityHubi blog &#8220;Twitter predicts Stock Market&#8221;:</p>
<p><a href="http://singularityhub.com/2010/10/21/twitter-predicts-the-stock-market/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+SingularityHub+(Singularity+Hub)">http://singularityhub.com/2010/10/21/twitter-predicts-the-stock-market/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+SingularityHub+(Singularity+Hub)</a></p>
<p>* Twitteri säutsud aitavad ennustada aktsia tulemusi:</p>
<p>http://www.wired.com/wiredscience/2010/10/twitter-crystal-ball/</p>
<p>* Neural Markets Blog &#8211; &#8220;<a href="http://www.neuralmarkettrends.com/2010/10/19/a-tweet-here-a-tweet-there/">A Tweet here, a Tweet there</a>&#8220;</p>
<p><a href="http://www.neuralmarkettrends.com/2010/10/19/a-tweet-here-a-tweet-there/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+dbreakfast+(Neural+Market+Trends)">http://www.neuralmarkettrends.com/2010/10/19/a-tweet-here-a-tweet-there/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+dbreakfast+(Neural+Market+Trends)</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/714/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/714/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/714/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=714&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/21/twitter-ja-wallstreeti-kristallkuulid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>
	</item>
		<item>
		<title>Google PublicData varamusse lisandus Eurostati andmed</title>
		<link>http://timgluz.wordpress.com/2010/10/18/google-publicdata-varamusse-lisandus-eurostati-andmed/</link>
		<comments>http://timgluz.wordpress.com/2010/10/18/google-publicdata-varamusse-lisandus-eurostati-andmed/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 13:25:57 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Andmekaeve]]></category>
		<category><![CDATA[Statistika]]></category>
		<category><![CDATA[Tehnoloogia]]></category>
		<category><![CDATA[Euro]]></category>
		<category><![CDATA[Eurostat]]></category>
		<category><![CDATA[Googel Labs]]></category>
		<category><![CDATA[graafikud]]></category>
		<category><![CDATA[LAMA]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[MASU]]></category>
		<category><![CDATA[public data]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=710</guid>
		<description><![CDATA[Vahva! Nüüd on võimalik ühes kohast ja kergel hankida Euroopa maade statistikat, neid visualiseerida ning võrrelda. Paari hiire klõpsuga on sul võimalik võrrelda Euroopa riikide riigivõlgasid, töötusemäära, miinumpalga taset jne (vt allpoolt linki). Viimast ei hakkanud välja tooma, sest tegu on ikkagi esmaspäevaga ja on vaja hoida positiivset toonust. Kuid igati positiivne uudis ja ma [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=710&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Vahva!</strong></p>
<p><strong>N</strong>üüd on võimalik ühes kohast ja kergel hankida Euroopa maade statistikat, neid visualiseerida ning võrrelda. Paari hiire klõpsuga on sul võimalik võrrelda Euroopa riikide riigivõlgasid, töötusemäära, miinumpalga taset jne (vt allpoolt linki). Viimast ei hakkanud välja tooma, sest tegu on ikkagi esmaspäevaga ja on vaja hoida positiivset toonust.</p>
<p>Kuid igati positiivne uudis ja ma ei imesta kui varsti/9kuu pärast/ lisab Guugel oma andmevaramutele statistikatööriista.</p>
<p>Näiteks allpool on ära toodud väike töötusemäära võrdlus Eesti vs Vana-Euroopa ja Skandinaavia. Kuna tegu on joongraafikuga, siis üle 4graafiku pole mõtet lisata, kaob ülevaatlikus. Kuid huvitav on näha Soome LAMA ja Eesti MASU võrdlust &#8211; loodame et nende graafikute vahel  20aastane ajajada nihe ning meil hakkab ka suund tugevalt allapoole kiskuma.</p>
<p>Huvitav, kas Luxembourgi ja Saksamaa positiivne trend alates 2000 on seotud veebibuumiga? Ja Soome LAMA ei lubanud sellist effekti tekitada ? OK, ma uurima&#8230; nii põnev, põnev see andmetemaailm.</p>
<p>&nbsp;</p>
<div id="attachment_711" class="wp-caption aligncenter" style="width: 624px"><a href="http://timgluz.files.wordpress.com/2010/10/arbeitslos.png"><img class="size-large wp-image-711 " title="arbeitslos" src="http://timgluz.files.wordpress.com/2010/10/arbeitslos.png?w=614&#038;h=473" alt="" width="614" height="473" /></a><p class="wp-caption-text">töötus Euroopa maades</p></div>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Lingid:</p>
<p>* Google ametlik blogi sissekanne:</p>
<p><a href="http://googleblog.blogspot.com/2010/10/this-week-in-search-101610.html">http://googleblog.blogspot.com/2010/10/this-week-in-search-101610.html</a></p>
<p>* Googel Public Data:</p>
<p><a href="http://www.google.com/publicdata/directory">http://www.google.com/publicdata/directory</a></p>
<p>* töötuseandmed Euroopa maades:</p>
<p><a href="http://www.google.com/publicdata?ds=z9a8a3sje0h8ii_&amp;met=unemployment_rate&amp;idim=eu_country:DE&amp;dl=de&amp;hl=de&amp;q=arbeitslosenstatistik+deutschland#met=unemployment_rate&amp;idim=eu_country:DE:EE:FI:LU">http://www.google.com/publicdata?ds=z9a8a3sje0h8ii_&amp;met=unemployment_rate&amp;idim=eu_country</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/710/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/710/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/710/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=710&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/18/google-publicdata-varamusse-lisandus-eurostati-andmed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://timgluz.files.wordpress.com/2010/10/arbeitslos.png?w=1024" medium="image">
			<media:title type="html">arbeitslos</media:title>
		</media:content>
	</item>
		<item>
		<title>[video] Programmeerimiskramp &#8211; olemus,põhjus ja lahendus</title>
		<link>http://timgluz.wordpress.com/2010/10/17/video-programmeerimiskramp-olemuspohjus-ja-lahendus/</link>
		<comments>http://timgluz.wordpress.com/2010/10/17/video-programmeerimiskramp-olemuspohjus-ja-lahendus/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 13:48:03 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Algoritmid]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tricks]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=705</guid>
		<description><![CDATA[Tegu vana lehega (aasta 2008), kuid sisu on värskendav. Nimelt analüüsib Nathaniel Talbott oma RubyConi esitluses &#8220;Fear of programming&#8221; kirjutamise hirmu olemust, tekkepõhjuseid ja kuidas võiks neist ülesaada. Vähegi asjatundlikumale arendusnohikule ei ole võõrad olukorrad, kus mõistus keeldub kirjutamast uut , lahedat sortsu või  pikale veninud projekti ettevõtmine tundub kuidagi vastumeelne. Või olukord, kus teiste kriitikat [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=705&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tegu vana lehega (aasta 2008), kuid sisu on värskendav.</p>
<p>Nimelt analüüsib Nathaniel Talbott oma RubyConi esitluses &#8220;<a href="http://rubyconf2008.confreaks.com/fear-of-programming.html" target="_blank">Fear of programming</a>&#8221; kirjutamise hirmu olemust, tekkepõhjuseid ja kuidas võiks neist ülesaada.</p>
<p>Vähegi asjatundlikumale arendusnohikule ei ole võõrad olukorrad, kus mõistus keeldub kirjutamast uut , lahedat sortsu või  pikale veninud projekti ettevõtmine tundub kuidagi vastumeelne. Või olukord, kus teiste kriitikat kartes keskendud pigem süntaksile ja unustad lahenduse korrektsuse.</p>
<p>Peale selle video vaatamist on sul enamikele probleemidele lahendus olemas või siis ka hea suund kätte näidatud:</p>
<p style="text-align:center;"><a href="http://rubyconf2008.confreaks.com/fear-of-programming.html"><img class="aligncenter size-medium wp-image-706" title="FearProgramming" src="http://timgluz.files.wordpress.com/2010/10/fearprogramming.png?w=300&#038;h=240" alt="" width="300" height="240" /></a></p>
<p style="text-align:center;">&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/705/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=705&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/17/video-programmeerimiskramp-olemuspohjus-ja-lahendus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://timgluz.files.wordpress.com/2010/10/fearprogramming.png?w=300" medium="image">
			<media:title type="html">FearProgramming</media:title>
		</media:content>
	</item>
		<item>
		<title>Tere, milleniumi põlvkond!!</title>
		<link>http://timgluz.wordpress.com/2010/10/09/tere-milleniumi-polvkond/</link>
		<comments>http://timgluz.wordpress.com/2010/10/09/tere-milleniumi-polvkond/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 05:25:08 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[kool]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[losers]]></category>
		<category><![CDATA[movie]]></category>
		<category><![CDATA[out of box]]></category>
		<category><![CDATA[painters]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/2010/10/09/tere-milleniumi-polvkond/</guid>
		<description><![CDATA[Alljärgnev on minu meelevaldne nägemus ja õhutus. On 2010 aasta viimased kuud, nüüd on möödunud 10 aastat veebibuumist, mille järellainetused jõudsid üle-eelmine ja aasta varem seda ka meiteni. Weebimull ja meie kinnisvara-buum on rohkem seotud kui me tunnistame, sest neid mõlemaid toitsid pinnapealsus, erakordne ahnus, ja just virtuaalne ahnus- soov leida hõbekuuli, mis kindlustaks kuldset [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=704&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Alljärgnev on minu meelevaldne nägemus ja õhutus.</p>
<p>On 2010 aasta viimased kuud, nüüd on möödunud 10 aastat veebibuumist, mille järellainetused jõudsid üle-eelmine ja aasta varem seda ka meiteni. Weebimull  ja meie kinnisvara-buum on rohkem seotud kui me tunnistame, sest neid mõlemaid toitsid pinnapealsus, erakordne ahnus, ja just virtuaalne ahnus- soov leida hõbekuuli, mis kindlustaks kuldset rada pensioni.  </p>
<p>Me (milleniumikad) teame, et seda pole põhjustanud ei kommud ega UFO-d, vaid liiga kauaks valitsema jäänud eelmine põlvkond, kes varasemate kirjatükkide alusel on ennast nimetanud võitjate-põlvkonnaks . Kahjuks, reaalelus on nad osutunud täielikuks luuseriteks. Luuserid, suure L-iga. 70.show on meie jaoks komöödia.</p>
<p>Miks?<br />
Nad pole suutnud MASU jooksul võtta vastu mitte ühtegi otsutavat sammu, mitte ühtegi . Eriti ärritab mind nende rünnak Alma Materi vastu!!!  Nende arust on põhjus igalpool mujal kui neis, tõestuseks tutvu rahvahäälega kommentaariumites.  Tegu on ühiskonnaga, kes arvavad et edu taga on  valemi &#8220;eliitkool-ülikool ja peale seda tutvusega riigitöö&#8221;  täpne järgmine &#8211; ja seda veel nii masiniliku täpsusega, mille käigus on kadunud igasugune loovus, isiklikkus ja omaväärtus.</p>
<p>Kõik erinev on patt!! </p>
<p>Võin tuua näite meie suurpangast &#8211; koosolekul polnud suuremat naljakoori, kui mainiti  roostlased kasutavad konsultantide abi ja tehakse allhankeid. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Ma lahendan seda humoorit tänaseni.</p>
<p>Miks see mind ärritab?</p>
<p>Ma tahan välja tulla oma startupiga, mul on ideid 20lk ja kui vanemalt põlvkonnalt nõu küsida, siis nad tapavad su idee ennem kui see  saab välja tullagi &#8211; su idee ei tööta ennem kui see teeninud esimese millioni <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  . Ja ennast tõestada ei lasta, mnjah &#8211; just nende pärast ei läinud rate.ee rahvusvaheliselt läbi &#8211; Rate.ee oli oma ideelt ja teostuselt 3aastat facebuukist ees ( meenutan, et see sai oma hoo sisse Harvardi tudengite edevusest, kuid selleks ajaks oli 100k rate kasutajaid). </p>
<p>Meie põlvkond on võimas &#8211; me suudame tegeleda mitme asjaga korraga(tõlge vanematele peerudele: mitme muutujaga võrrandid ja mänguteooria), meid ei huvita raha, meid innustab pigem sotsiaalne tunnustus ja erakordne saavutusvajadus, kogemus &#8211; Me oleme  Häkkerite-põlvkond ja meile on oluline meie lähedased ja meie  saavutused &#8211; mitte õhust tekitatud rahad, kusjuures sel pole tegelikku tagatist ning kõige selle juures on IT meie jaoks sama tavaline kui mobiilkõne &#8211; lihtsalt vahend enda ja oma idee väljendamiseks, mitte patsiga poiste  mängumaa. </p>
<p>Jess, 70-s.</p>
<p>Lausa naeruväärne oli täna vaadata tädi Aunaste saadet, kus enamus ei mõistnud sotsiaalmeedia olemust. Luuserid !!<br />
Sotsiaalmeedia pole tänapäevaste noorte suhtlemist tapnud, vaid viinud enneolematule tasandile &#8211; pinge vabalt võid väljendada oma mõtteid ja leida just endale sobiva grupi, kusjuures iga grupp on erakordselt salliv teiste suhtes &#8211; riik, rahvus ja keel on meie omapära julgustamiseks, mitte teiste talla alla surumiseks. </p>
<p>Seni kaua kui valitseb luuserite põlvkond &#8211; peame närima riisi, hommikuks suhkruga ja õhtuks soolaga.<br />
Seni kaua kui meil toimuvad vajalikud muutused, on meie päevatöö viidud juba Indiasse ja Rahvavabariik Hiina juhib meie majandust. (Nad alustasid valgelt lehelt.)</p>
<p>Kallid kaaslased, anname ideele ja väljendusvabadusele ruumi!<br />
Kui on aega, siis süüvi filmi &#8220;<a href="http://www.imdb.com/title/tt1285016/">Social network</a>&#8221; tagamõttesse, see on selle sügise parim vaatamine.</p>
<p>Timo,<br />
uhkusega kastist väljamõtleja.</p>
<p>The post is brought to you by <a href="http://fedorahosted.org/lekhonee">lekhonee</a> v0.7</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/704/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/704/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/704/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=704&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/09/tere-milleniumi-polvkond/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>
	</item>
		<item>
		<title>StartUpi IT ressursid</title>
		<link>http://timgluz.wordpress.com/2010/10/08/startupi-it-ressursid/</link>
		<comments>http://timgluz.wordpress.com/2010/10/08/startupi-it-ressursid/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 02:02:34 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[kood]]></category>
		<category><![CDATA[Lifehacker]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Sülearvuti]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=676</guid>
		<description><![CDATA[Sissejuhatus (ps: toimetamisel &#8211; lisa toodete võrldus, mida kõigil läheb vaja (email, dokumendihaldus, kliendihldus, brainstorming ) miniarvuti ekraani tõttu ei pruugi kujundus ja tekst olla paslik) Mitmete, mulle kasulikke asjaolude kokkulangemise tõttu loobusin ma töövõtja rollist ning asusin looma oma start-upi ärianalüüsi ja andmekaeve valdkonnas.  Viimased 2nädalat on olnud huvitavad &#8211; olen esitanud paar  projekti [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=676&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Sissejuhatus</strong></p>
<p><em>(ps: toimetamisel &#8211; lisa toodete võrldus, mida kõigil läheb vaja (email, dokumendihaldus, kliendihldus, brainstorming )</em></p>
<p><em>miniarvuti ekraani tõttu ei pruugi kujundus ja tekst olla paslik)</em></p>
<p>Mitmete, mulle kasulikke asjaolude kokkulangemise tõttu loobusin ma töövõtja rollist ning asusin looma oma start-upi ärianalüüsi ja andmekaeve valdkonnas.  Viimased 2nädalat on olnud huvitavad &#8211; olen esitanud paar  projekti ideed (vt. <a href="http://www.startitup.ee" target="_blank">www.startitup.ee</a> ), lugenud teiste start-upide kogemusi (vt <a href="http://www.twitter.com/timgluz" target="_blank">mu twitterit</a>), koostasin äriplaani kavandi ning nüüd olen jõudnud it-ressurside kaardistamise ja hankimise juurde.</p>
<p>Enamasti on Idu-projekti eelarve ja aeg väga piiratud, mistõttu peab oma tulevased  IT-ressursid väga hoolikalt valima, nt esialgu pole otstarbekas investeerida oluliselt riistvarasse, selle asemel on  kasulik hoida enamik teenuseid pilves.  Tarkvara valikul peab arvestama väga paljusid nüannse nt olulisemad on hind, kohandamisvõimalus, hoolduskulud, ning  oleks kõigile tiimi liikmetele kättesaadav. Nagu allpool võrdlusest võib tähelepanna, et kõige esmapilgul tasuta lahendus ei pruugigi üldse tasuta olla.</p>
<p><strong>Olemasolevad vahendid</strong></p>
<p>Iduprojektide sobivaid lahendusi võib leida peamiselt 2 gigandi pagasist:  Google kui Microsoft (muidugi ka teised vt allpool esimene link), kuid eelmainitud 2 on teinud suurimad panused. Neist viimane, Microsoft, on välja tulnud väga otsese StartUpi toetusprogrammiga BizSpark &#8211; lisaks töövahenditele, pakutakse oma liikmetele suhtlus- kui ka toetusvõrgustikku.</p>
<p>Mõlemad pakkuvad Idudele sobivaid tarkvara lahendusi, kuid mõlemal on väga erinev suunitlus ning  omad plussid ja miinused .</p>
<p>Toon lühidalt väikse võrdluse:</p>
<table style="margin-left:40px;border:1px;">
<tbody>
<tr style="background-color:#ffffe7;">
<td style="width:10%;"><strong> aspekt </strong></td>
<td style="width:40%;background-color:#ffffe7;"><strong>Microsoft</strong></td>
<td style="width:40%;"><strong>Google</strong></td>
</tr>
<tr>
<td>peasuunitlus</td>
<td>Arendusvahendid ja serverid, toetusvõrgustik</td>
<td>Dokumendihaldus ning suhtlus.</td>
</tr>
<tr>
<td>hind</td>
<td>alustamine on tasuta &#8211; projekti kuulumise perioodi ajal (max 3 aastat ) on kõik listis olevad tarkvarad tasuta; BizSparkist väljudes tuleb tasuda $100 juuraküpsise tasu.listis olev tarkvara valik ei pruugi rahuldada sinu projekti vajadusi. (raske juhus)</td>
<td>tasuta on vaid standardlahendus, mahu kasvades tuleb profi paketile üleminna ning App Marketis olevate tarkvara valik on lai, kuid  on võivad olla tasulised (suuremad ja asjalikumad rakendused ongi, samas idu-arendusel pole neist üldjuhul tolku ).</td>
</tr>
<tr style="background-color:#ffffe7;">
<td>programmide valik</td>
<td>Väga lai nimistu, nimekirjas 720 kirjet, kui keskmiselt iga rakendusel on  versioone maksimaalselt  6, siis minimaalselt on erinevaid rakendusi 120.(vt: <a href="http://download.microsoft.com/download/1/5/4/15454442-CF17-47B9-A65D-DF84EF88511B/Products_by_Benefit_Level.xlsx" target="_blank">exceli nimekir</a>i või <a href="http://www.bizspark.com/Programs/Pages/BizSpark_Software_and_Tools.aspx" target="_blank">veebileht</a>)</td>
<td>siinjuures pean rõhutama, et seal nimistus ei leidnud ma ühtegi arendusvahendit. Kuid ilma selletagi on väga häid arendusvahendeid saadaval.vt: <a href="http://www.google.com/enterprise/marketplace/" target="_blank">rakenduste turg</a></td>
</tr>
<tr>
<td>kulud</td>
<td>3aastat ja $0, litsentside varieeruvus puudub. Lisatasud puuduvad . Projektist väljudes tuleb arvestada $100 litsentsitasuga .</td>
<td>Igal apps-l omad konksud ja kiiksud, ressurssi kasvades pead arvestama kulude kasvuga, alati olgu olemas tagavara plaan ja kontrolli et oleks võimalik tehtud töid eksportida ja importida. Seetähendab, et tuleb iga rakendust jälgima ning soovitav oleks jälgida ka alternatiive.Suurem vabadus, suurem vastutus</td>
</tr>
<tr style="background-color:#ffffe7;">
<td>SaaS aka pilveteenus</td>
<td>Jah, tasuta BizSpark hosting serveri, sisaldab Windows Server, SQL Server, BizTalk Server, and Office SharePoint Server for Internet (vt <a href="http://www.bizspark.com/Programs/Pages/BizSpark_Production_and_Hosting.aspx" target="_blank">täpsemalt</a> )</td>
<td>Jah, AppEngine, saad kasutada nt  BigTabelit, enamikke Java/Pythoni põhiseid CMS-e . NB! <strong>Jälgima pead hinnastamisstrateegiaid </strong>(vt. <a href="http://code.google.com/appengine/docs/billing.html" target="_blank">täpsemalt</a> ) Samuti on võimalik staatilised Google Sites.</td>
</tr>
<tr style="background-color:#ffffe7;">
<td>tehniline tugi</td>
<td>2 juhtumi lahendust tasuta</td>
<td>Professionaalne tugi on olemas ja valikuid on mitmeid.</td>
</tr>
<tr>
<td>y</td>
<td>x</td>
<td>x</td>
</tr>
</tbody>
</table>
<p><strong>Kokkuvõtte</strong></p>
<p>Mina soovitan valida Microsofti BizSparki &#8211; kogu vajalik ühest kohast ja  ühekorraga, sealjuures  ilma lisa- ja jooksvate kulutusteta, selle kõige juures leiab igaüks siit vajaliku IT vahendi. Siinjuures pean rõhutama, et BizSpark pole pelgalt tarkvara hankimise koht, vaid väga suur rõhk on pandud suhtlus- ja teadmisvõrgustikule. Näiteks microsoft Platform ready abil on sul võimalik väga lihtsalt ja kiirelt oma MS  põhist projekti turundada ning seda mobiilist pilveni.</p>
<p><strong>Minu valik</strong></p>
<p>Hetkel valisin mina Google Appsi , sest minu puhul on oluline just suur paindlikkus, erinevad matemaatika ja simulatsiooni platvormide kasutamine .</p>
<p>[<em>TODO: little comparsion table of products + alternative</em>s]</p>
<p>Kuid BizSparki Platform Ready ja IronPython on pannud mu otsust muutma, kindlasti saab BizSpark üheks osaks minu startupis.</p>
<p><strong>Soovid abi ?</strong></p>
<p>Antud projekti käigus sain väärtuslike kogemusi Google Appsi seadistamisel, oma domeeniga sidumisel, nt mail.dataoil.eu on mul meiliserver, wave.dataoil.eu on registreeritud sisemise wave jaoks ning oma domeenis .</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Lingid:</p>
<p>* vabavaralised vahendid startupile: <a href="http://startuptools.pbworks.com/">http://startuptools.pbworks.com/</a><br />
* Arvutimaailma sissekanne vabatarkvarast ja startupidest: <a href="http://www.am.ee/node/1692?utm_source=twitterfeed&amp;utm_medium=twitter">http://www.am.ee/node/1692?utm_source=twitterfeed&amp;utm_medium=twitter</a></p>
<p>* Microsoft BizSpark:  <a href="http://www.microsoft.com/bizspark/">http://www.microsoft.com/bizspark/</a></p>
<p><a href="http://www.microsoft.com/bizspark/"></a> * Microsoft Dreamspark: <a href="https://www.dreamspark.com/default.aspx">https://www.dreamspark.com/default.aspx</a></p>
<p><a href="https://www.dreamspark.com/default.aspx"></a> *  <a rel="nofollow" href="http://www.google.com/a/cpanel/domain/new" target="_blank">http://www.google.com/a/cpanel/domain/new</a></p>
<p>Google Appsi ülesseadmise õpetus:</p>
<p><a href="http://www.eepohs.com/156/google-apps-vaikefirma-infrastruktuur/">http://www.eepohs.com/156/google-apps-vaikefirma-infrastruktuur/</a></p>
<p><a href="http://www.eepohs.com/156/google-apps-vaikefirma-infrastruktuur/"></a> <a href="http://www.eepohs.com/156/google-apps-vaikefirma-infrastruktuur/"></a> ülevaade:</p>
<p><a href="http://www.econet.ee/renditeenused/google-apps-ettevotetele.html">http://www.econet.ee/renditeenused/google-apps-ettevotetele.html</a></p>
<p><a href="http://www.econet.ee/renditeenused/google-apps-ettevotetele.html"></a> konverteerimine ja kontode importimine:  <a href="http://www.hanselman.com/blog/MigratingAFamilyToGoogleAppsFromGmailThunderbirdOutlookAndOthersTheDefinitiveGuide.aspx">http://www.hanselman.com/blog/MigratingAFamilyToGoogleAppsFromGmailThunderbirdOutlookAndOthersTheDefinitiveGuide.aspx</a></p>
<p>forte.ee pilveraalinduse ülevaade tavainimesele:  <a href="http://forte.delfi.ee/news/digi/article.php?id=20952138&amp;categoryID=19375415">http://forte.delfi.ee/news/digi/article.php?id=20952138&amp;categoryID=19375415</a> <a href="http://forte.delfi.ee/news/digi/article.php?id=20952138&amp;categoryID=19375415"></a></p>
<p>useful</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/676/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/676/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/676/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=676&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/08/startupi-it-ressursid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>
	</item>
		<item>
		<title>Kus andmemätas märg, sinna Yahoo Pipe sisse!</title>
		<link>http://timgluz.wordpress.com/2010/10/02/kus-andmematas-marg-sinna-yahoo-pipe-sisse/</link>
		<comments>http://timgluz.wordpress.com/2010/10/02/kus-andmematas-marg-sinna-yahoo-pipe-sisse/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 22:10:57 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Algoritmid]]></category>
		<category><![CDATA[Andmekaeve]]></category>
		<category><![CDATA[Weekend project]]></category>
		<category><![CDATA[andmekaeve]]></category>
		<category><![CDATA[data science]]></category>
		<category><![CDATA[dataoil]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=666</guid>
		<description><![CDATA[Jah, Yahoo Research on välja tulnud väga võimsa vidinaga Yahoo Pipes, mille abil on võimalik koondada andmevoogusid  ja -allikad (nt rss, uudised, veebilehed, ajakirjad, twitter jne.) ning rakendada neile erinevaid reegleid ja meetodeid. Näiteks alljärgneval pildil toodud skeemil moodustasin meediahalduri, mis koondab meediallikate uudisvood ning filtreerib välja täna ilmunud uudiste seast just need uudised, mis [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=666&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jah, Yahoo Research on välja tulnud väga võimsa vidinaga <strong>Yahoo Pipes</strong>, mille abil on võimalik koondada andmevoogusid  ja -allikad (nt rss, uudised, veebilehed, ajakirjad, twitter jne.) ning rakendada neile erinevaid reegleid ja meetodeid.</p>
<p>Näiteks alljärgneval pildil toodud skeemil moodustasin meediahalduri, mis koondab meediallikate uudisvood ning filtreerib välja täna ilmunud uudiste seast just need uudised, mis sisaldavad saagimlikke sõnu (õnneks piiratud sõnade kogum).</p>
<div id="attachment_667" class="wp-caption aligncenter" style="width: 310px"><a href="http://timgluz.files.wordpress.com/2010/10/pipes.png"><img class="size-medium wp-image-667" title="pipes" src="http://timgluz.files.wordpress.com/2010/10/pipes.png?w=300&#038;h=266" alt="" width="300" height="266" /></a><p class="wp-caption-text">illustratiivne - lähemalt vaatamiseks vaata allpool olevat linki</p></div>
<p>See oli pelgalt kiire näide, veel on näiteks võimalik:</p>
<p>1) Sinu rakendus ei ole piiratud ühe toruga, sa saad moodustada erinevaid torusid, mida siis hiljem saad kokku koondada.</p>
<p>2) SQL fännide saavad andmevoo täpsustamisel kasutada Yahoo SQL-i sarnast päringu keelt YQL.</p>
<p>3) torude andmevooge on võimalik tõlkida, rakendada lihtsamaid valemeid.</p>
<p>4) toru väljundit saab eksportida või  lugeda RSS või JSON meediumi vahendusel</p>
<p>5) Toru väljundit saab samuti sotsiaalvõrgustikus kuvada nt WordPressis Badgina või Bloggeris.</p>
<p><strong>Häid rakenduskohti:</strong></p>
<p>* akstiate ja börsiinfo koondamine</p>
<p>* foorumite  ja kommentaariumite analüüs</p>
<p>* sinu firma mainimine meediumis</p>
<p>* asukohtade eraldamine</p>
<p>* torud lihtsustab oluliselt brauseri või mobiili vidinate loomist.</p>
<p>Kiire, lihtne ja võimas!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Näite veebiaadress: <a title="http://pipes.yahoo.com/pipes/pipe.info?_id=e6bf7c97f2b59ee37dc548f4756de9c6" href="http://pipes.yahoo.com/pipes/pipe.info?_id=e6bf7c97f2b59ee37dc548f4756de9c6" target="_blank">http://pipes.yahoo.com/pipes/pipe.info?_id=e6bf7c97f2b59ee37dc548f4756de9c6</a></p>
<p>Ärianalüüsi ja andmekaeve abi: <a href="http://www.dataoil.eu" target="_blank">http://www.dataoil.eu </a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/666/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/666/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/666/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=666&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/10/02/kus-andmematas-marg-sinna-yahoo-pipe-sisse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://timgluz.files.wordpress.com/2010/10/pipes.png?w=300" medium="image">
			<media:title type="html">pipes</media:title>
		</media:content>
	</item>
		<item>
		<title>Teismelisele räägi turvalisest surfamisest ja siis seksist.</title>
		<link>http://timgluz.wordpress.com/2010/09/10/teismelisele-raagi-turvalisest-surfamisest-ja-siis-seksist/</link>
		<comments>http://timgluz.wordpress.com/2010/09/10/teismelisele-raagi-turvalisest-surfamisest-ja-siis-seksist/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 00:30:09 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Lifehacker]]></category>
		<category><![CDATA[Silmad olgu teil avatud.]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[MS]]></category>
		<category><![CDATA[scam]]></category>
		<category><![CDATA[turve]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=604</guid>
		<description><![CDATA[Microsoft on taas näidanud oma helgemat külge ning välja andnud netiturvalisuse käsiraamatu &#8211; kõik 16 peatükki on kirjutatud lihtsas ja arusaadavas ingliskeeles; mis kõige olulisem &#8211; lehekülgi illustreerivad ägedad pildid. Kui aus olla, siis minu arust on parima netiturbe materjaliga &#8211; lihtsalt ja ülevaatlikult antakse ülevaade pahavaradest, võimalikest ohtudest, turvalisest suhtlemiseni. Kui vanem nende teemade [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=604&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Microsoft on taas näidanud oma helgemat külge ning välja andnud netiturvalisuse käsiraamatu &#8211; kõik 16 peatükki on kirjutatud lihtsas ja arusaadavas ingliskeeles; mis kõige olulisem &#8211; lehekülgi illustreerivad  ägedad pildid.</p>
<p><a href="http://timgluz.files.wordpress.com/2010/09/nastyware.png"><img class="aligncenter size-medium wp-image-662" title="nastyware" src="http://timgluz.files.wordpress.com/2010/09/nastyware.png?w=243&#038;h=300" alt="" width="243" height="300" /></a><br />
Kui aus olla, siis minu arust on parima netiturbe materjaliga &#8211; lihtsalt ja ülevaatlikult antakse ülevaade pahavaradest, võimalikest ohtudest, turvalisest suhtlemiseni. Kui vanem nende teemade käsitlemisega hakkama ei saa, siis võtku kooli arvutiõpetaja antud temaatikad ette. (Nagu seksi aka terviseõpetus on veeretatud vanemate õlult 60aastasele vanadaamile <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p>Kanal11 s jooksva &#8220;Seksi õppetunni&#8221; väitel on 90% briti teismelistest tuttavad netiavarustes peituvate  võimalustega ja seda vanemate teadmata ja need võimalused suurenevad igapäevaga &#8211; uued iPadid ja mobfoonid. . Keelata on neid raske, piiramine pole võimalik, aga vähemalt võiks neid harida.</p>
<p>Raamat on allalaetav siin: <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=87583728-ef14-4703-a649-0fd34bd19d13&amp;displayLang=en#Overview" target="_self">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=87583728-ef14-4703-a649-0fd34bd19d13&amp;displayLang=en#Overview</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/604/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=604&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/09/10/teismelisele-raagi-turvalisest-surfamisest-ja-siis-seksist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://timgluz.files.wordpress.com/2010/09/nastyware.png?w=243" medium="image">
			<media:title type="html">nastyware</media:title>
		</media:content>
	</item>
		<item>
		<title>[Video] 7sammu ja 7minutiga ohvri konto tühjaks</title>
		<link>http://timgluz.wordpress.com/2010/07/24/video-7sammu-ja-7minutiga-ohvri-konto-tuhjaks/</link>
		<comments>http://timgluz.wordpress.com/2010/07/24/video-7sammu-ja-7minutiga-ohvri-konto-tuhjaks/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 11:37:21 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Lifehacker]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Silmad olgu teil avatud.]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[megapanzer]]></category>
		<category><![CDATA[MITM]]></category>
		<category><![CDATA[Securty]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[trojan]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=647</guid>
		<description><![CDATA[Rahu tegelikkuses asi õnneks nii lihtsalt enam ei käi, vähemalt mitte kõigi jaoks. Kuid näha kui lihtne võib mõnikord mõni tehniline lahendus olla, siis tasub vaadata alljärgnevat videot: Mõned lingid antud teema mõistmiseks: * SSL &#38; men in middle wiki: http://en.wikipedia.org/wiki/Man-in-the-middle_attack sans.org esitluse pdf: http://www.sans.org/reading_room/whitepapers/threats/ssl-man-in-the-middle-attacks_480 SysAdmini vaatenurgast: http://www.pburkholder.com/sysadmin/SSL-mitm/index.php Muidugi Bruce Schneideri, moodne mees ta nagu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=647&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Rahu tegelikkuses asi õnneks nii lihtsalt enam ei käi, vähemalt mitte kõigi jaoks.</p>
<p>Kuid näha kui lihtne võib mõnikord mõni tehniline lahendus olla, siis tasub vaadata alljärgnevat videot:</p>
<p style="text-align:center;">
<div id="attachment_648" class="wp-caption aligncenter" style="width: 310px"><a href="http://securitytube.net/How-to-Plunder-a-Bank-Account-with-Megapanzer-video.aspx"><img class="size-medium wp-image-648 " title="PlunderBank" src="http://timgluz.files.wordpress.com/2010/07/plunderbank.png?w=300&#038;h=160" alt="" width="300" height="160" /></a><p class="wp-caption-text">Krati demo</p></div>
<p style="text-align:left;"><strong>Mõned lingid antud teema mõistmiseks:</strong></p>
<p style="text-align:left;"><strong>* SSL &amp; men in middle</strong></p>
<p style="text-align:left;">wiki: <a href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack" target="_blank">http://en.wikipedia.org/wiki/Man-in-the-middle_attack</a></p>
<p style="text-align:left;">sans.org esitluse pdf: <a href="http://www.sans.org/reading_room/whitepapers/threats/ssl-man-in-the-middle-attacks_480">http://www.sans.org/reading_room/whitepapers/threats/ssl-man-in-the-middle-attacks_480</a></p>
<p style="text-align:left;">SysAdmini vaatenurgast: <a href="http://www.pburkholder.com/sysadmin/SSL-mitm/index.php">http://www.pburkholder.com/sysadmin/SSL-mitm/index.php</a></p>
<p style="text-align:left;">Muidugi Bruce Schneideri, moodne mees ta nagu on, teme facebooki kontolt: <a href="http://www.facebook.com/notes/bruce-schneier/man-in-the-middle-attacks-against-ssl/384738896775" target="_blank">http://www.facebook.com/notes/bruce-schneier/man-in-the-middle-attacks-against-ssl/38473889677</a></p>
<p style="text-align:left;">Eelmisel aastal tegi väikse demo ka HAK5 tiim oma saates:<a href="http://www.hak5.org/hack/strip-out-ssl-security-with-a-man-in-the-middle-attack"> http://www.hak5.org/hack/strip-out-ssl-security-with-a-man-in-the-middle-attack</a></p>
<p style="text-align:left;">Samuti eelmine aasta esitles BlackHat konverentsil sarnast teemat Moxie Marlinspike &#8220;More Tricks For Defeating SSL&#8221;, otsi alljärgnevalt lingil tema nime järgi, siis on sul võimalik vaadata tema esitluse videot, ettekannet ning samal teemal tema uurimisartikleid: <a href="http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html" target="_blank">http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html</a></p>
<p style="text-align:left;">* <strong>Kuidas välistada</strong></p>
<p style="text-align:left;">1. <a href="http://www.net-security.org/secworld.php?id=7087">http://www.net-security.org/secworld.php?id=7087</a></p>
<p style="text-align:left;">2. &#8220;SSL riskide minimeerimine&#8221; &#8211; <a href="http://esj.com/articles/2010/04/06/ssl-risks.aspx" target="_blank">http://esj.com/articles/2010/04/06/ssl-risks.aspx</a></p>
<p style="text-align:left;">3. Kena ja seksikas neiu tutvutab sulle antud valdkonda Comodo (AV ja firewall company) videokanalis:<a href="http://www.comodo.tv/enterprise/defending-against-man-in-the-middle-attacks/" target="_blank"> http://www.comodo.tv/enterprise/defending-against-man-in-the-middle-attacks/</a></p>
<p style="text-align:left;">* <strong>MegaPanzer</strong></p>
<p style="text-align:left;">Artikkel : <a href="http://www.theregister.co.uk/2010/07/01/regional_trojan_threat/">http://www.theregister.co.uk/2010/07/01/regional_trojan_threat/</a></p>
<p>Tutvustus ja kood tema kodulehelt: <a href="http://www.megapanzer.com/source-code/">http://www.megapanzer.com/source-code/</a></p>
<p>SecurityTube tutvustus:<a href="http://www.securitytube.net/Megapanzer-%28Trojan-Horse%29-video.aspx" target="_blank"> http://www.securitytube.net/Megapanzer-%28Trojan-Horse%29-video.aspx</a></p>
<p>Back-up video:<a href="http://www.mefeedia.com/watch/22314126"> http://www.mefeedia.com/watch/22314126</a></p>
<p>Väike ahvivaimustuse leevendus &#8211;&gt; sarnased töövahendid on Eesti spetsialistidele mõnda aega juba tuntud, seega ennetustööd on tehtud. Seega täna sa rikkamaks ei saa, kuid ühte võin ma kinnitada sa said palju targemaks.</p>
<p>BTW,  megapanzeri taha peituv intellekt on pikemat aega juba nn Eesti meeste Skypele kaikaid kodarasse loopinud ja ei saa ütelda, et tema visadus pole vilja kandnud.</p>
<p style="text-align:left;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/647/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/647/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/647/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=647&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/07/24/video-7sammu-ja-7minutiga-ohvri-konto-tuhjaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://timgluz.files.wordpress.com/2010/07/plunderbank.png?w=300" medium="image">
			<media:title type="html">PlunderBank</media:title>
		</media:content>
	</item>
		<item>
		<title>Pt.4: Keerutame luulet juba Twistedi abil</title>
		<link>http://timgluz.wordpress.com/2010/07/22/pt-4-keerutame-luulet-juba-twistedi-abil/</link>
		<comments>http://timgluz.wordpress.com/2010/07/22/pt-4-keerutame-luulet-juba-twistedi-abil/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 10:52:16 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Algoritmid]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Twisted]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=593</guid>
		<description><![CDATA[(eelmine peatükk / index / järgmine peatükk ) Meie esimene Twistedi luulekoguja Twisted on laialdast kasutamist leidnud serverite programmeerimisel, siis sellest hoolimata kirjutame selles peatükis oma Twistedil baseeruva luulekliendi ja pealegi on kliendi tarkvara lihtsam kirjutada kui serveri. Aga kõigepealt on vaja taaskäivitada meie luuleserverid: python blocking-server/slowpoetry.py --port 10000 poetry/ecstasy.txt --num-bytes 30 python blocking-server/slowpoetry.py --port [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=593&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align:right;"><em>(<a href="http://timgluz.wordpress.com/2010/07/19/ptk-3-esmatutvus-twistediga-mangime-natuke/">eelmine  peatükk</a> /<a href="http://timgluz.wordpress.com/twisted/"> index</a> / järgmine peatükk )</em></p>
</blockquote>
<h4>Meie esimene Twistedi luulekoguja</h4>
<p>Twisted on laialdast kasutamist leidnud serverite programmeerimisel, siis sellest hoolimata kirjutame selles peatükis oma Twistedil baseeruva luulekliendi ja pealegi on kliendi tarkvara lihtsam kirjutada kui serveri.</p>
<p>Aga kõigepealt on vaja taaskäivitada meie luuleserverid:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>python blocking-server/slowpoetry.py --port 10000 poetry/ecstasy.txt --num-bytes 30
python blocking-server/slowpoetry.py --port 10001 poetry/fascination.txt
python blocking-server/slowpoetry.py --port 10002 poetry/science.txt</pre>
</div>
<p>Ja siis käivita uus luulekoguja:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>python twisted-client-1/get-poetry.py 10000 10001 10002</pre>
</div>
<p>Mille tulemusena võid ekraanil näha alljärgnevat tulemust:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>Task 1: got 60 bytes of poetry from 127.0.0.1:10000
Task 2: got 10 bytes of poetry from 127.0.0.1:10001
Task 3: got 10 bytes of poetry from 127.0.0.1:10002
Task 1: got 30 bytes of poetry from 127.0.0.1:10000
Task 3: got 10 bytes of poetry from 127.0.0.1:10002
Task 2: got 10 bytes of poetry from 127.0.0.1:10001
...
Task 1: 3003 bytes of poetry
Task 2: 623 bytes of poetry
Task 3: 653 bytes of poetry
Got 3 poems in 0:00:10.134220</pre>
</div>
<p>Sarnane tulemus nagu eelneval asünkroonsel kliendil. See ei tohika olla üllatav,  sest nad teevad põhimõtteliselt sama asja. Vaatame nüüd koodi lähemalt, et näha kuidas meie  uus luuleklient töötab. Ava kood oma lemmik tekstitoimetajas ning hoia kooditekst selle peatüki lõpuni avatuna, et saaksid pidevalt kõrvalt jälgida terviklikku koodi, mida me alljärgnevalt hakkame jupiti analüüsima.</p>
<p>Märkus: Nagu ma esimeses osas mainis, siis me alustame Twistedi kasutamist väga madalal tasemel ja viskame kõrvale mõningad Twistedi poolsed abstrakstioonid, et saaksime Twistedi kasutamist õppida tuumast kestani. Siinjuures pean märkima, et seetõttu ei sobi esimestes peatükkides olevad näited reaaleluliste ülesannetesse, sest on liiga madala tasemilised..</p>
<p>Meie uue luulekliendi töö algab <code><a href="http://github.com/jdavisp3/twisted-intro/blob/master/twisted-client-1/get-poetry.py#L53">PoetrySocket</a></code> objektide loomisega, mille tulemusena PoetrySocket algväärtustab iseennast, luues võrgusokli, ühendab luuleserveriga ja lülitub mitte-blokeeruvasse tööreziimi:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect(address)
self.sock.setblocking(0)</pre>
</div>
<p>Kunagi järgnevates õpetustes jõuame Twistedi abstraktsiooni tasemel nii kaugele, et ei pea sokleid enam otseselt puutuma, sest anname selle töö üle Twistedile. Hetkel jääme veel süsteemi lähedasele tasemele ja mängime soklitega ise. Pärast ühenduse loomist, PoetrySocket “söödab”  addreaderi abil ennast Reaktorile:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre># tell the Twisted reactor to monitor this socket for reading
from twisted.internet import reactor
reactor.addReader(self)</pre>
</div>
<p>AddReader meetod annab Twistedi failideskriptori, millel sa soovid monitoorida sissetulevaid andmeid. Miks me saadame twistedile objekti, selle asemel et saata failideskriptor ja tagasikutse (eng callback)? Ja kuidas Twisted teab mida peale hakkata meie objektiga, sest Twisted kindlasti ei sisalda luule-spetsiifikaga seotud koodi? Usu mind, ma kontrollisin. Ava   <tt><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py">twisted.internet.interfaces</a></tt><tt> </tt>moodul ning jälgi minu kommentaare.</p>
<h4>Twistedi liides</h4>
<p>Twistedil on hulk alammooduleid, mida kutsutakse liideseks, millest igaüks määratleb ennast kui  Interface klassi liige. Alates versioonist 8.0, kasutab Twisted  <code><a href="http://www.zope.org/Products/ZopeInterface">zope.interface</a></code><code> </code>nende klasside baasklassina, aga hetkel ei ole antud paketi detailid meile olulised. Meile on olulisem Interface  alamklasside kasutamine Twistedis, nagu seegi mida sa hetkel tekstitoimetajas vaatad.</p>
<p>Üks liidese peamine eesmärk on dokumentatsioon. Pythoni arendajana oled kindlasti kokku puutunud märksõnaga <a href="http://en.wikipedia.org/wiki/Duck_typing">Duck Typing</a>, mis lühidalt kirjeldab objekti kuuluvust mingisse klassi on  määratud tema kirjeldusega(kuidas ta maailmale paistab), mitte tema kuuluvusega ja asukohaga klassi hierharhias. Seega kui kahel võrreldaval klassil on samassugune välimine kirjeldus(nt kõnnib nagu part, prääksub nagu part jne), siis duck-typingu kohaselt on nad sarnased objektid (pardid).  Seega liides on omamooodi  ametlik kokulepe, et määrata objektile omadus “kõnnib nagu part”.</p>
<p>Jäta moodulis  <tt>twisted.internet.interfaces </tt>vahepealsed read  vahele kuni jõuad meetodin<tt>i </tt><code><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py#L810">addReader</a></code><code>().,</code> mis on omakorda deklareeritud<code> </code><code><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py#L801">IreactorFDSet</a></code><code> </code>liideses ja peaks väljanägema midagi sellist:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>def addReader(reader):
    """
    I add reader to the set of file descriptors to get read events for.
    @param reader: An L{IReadDescriptor} provider that will be checked for
                   read events until it is removed from the reactor with
                   L{removeReader}.
    @return: C{None}.
    """</pre>
</div>
<p>IreactorFDSet on  üks liidestest, mida Twisted reaktor kasutab. Seega iga reaktoril  on meetod addReader(), mis töötab nagu ülalpool liidese docstringis on kirjeldatud. Meetodi enda deklaratsioonis pole self-argumenti, sest see on mõeldud kasutama vaid public–määratlejaga ja self-argument on juba üks osa implementatsioonist.(ehk väljakutsuja ei pea eraldi self- argumenti saatma). Reaalsetes rakendustes pole liidese objektid ei ole kunagi ise väärtustatud või baasklassi rollis.</p>
<p>Märkus 1:  Tehniliselt, IReactorFDSet  peaks kasutama vaid reaktorid, mis toetavad failideskriptorite ootamist. Nii palju kui ma tean, siis kõik Twistedi reaktorid suudavad seda.</p>
<p>Märkus 2:  Liideseid on võimalik kasutada rohkem kui pelgalt dokumentatsiooniks. Zope.Interface moodul lubab sul täiendavalt deklareerida, et klass esindab ühte või enamat liidest, ja pakub sealjuures võimalust jooksvalt  kontrollida, analüüsida neid deklaratsioone. Samuti toetab liides adaptsiooni põhimõtet, võime dünaamiliselt pakkuda  objektile antud liidest, mida liides ise otseselt ei suuda. Aga hetkel me nendesse võimalustesse ei süüvi.</p>
<p>Märkus 3:  Sa võid märgata mõningat  sarnasust liideste ja abstraktse baasklassi vahel(ABC). Alljärgnevalt jäävad nende analüüs ja võrdlus siit õpetusest välja. Aga sel teemal võid lähemalt lugeda Twistedi looja Glyph esseed antud teemal siit:<a href="http://glyph.twistedmatrix.com/2009/02/explaining-why-interfaces-are-great.html">essay</a>.</p>
<p>Vastavalt eelpool väljatoodud  docstringile, addReader() argument peaks esindama <code><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py#L947">IreadDescriptor</a></code><code> </code>liidest ja seega peaks seda tegema ka meie PoetrySocket objektid. Keri moodulis natuke allapoole kuni leiad selle nimelise mooduli, mis peaks välja nägema alljärgnevalt:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>class IReadDescriptor(IFileDescriptor):
    def doRead():
        """
        Some data is available for reading on your descriptor.
        """</pre>
</div>
<p>Ja sa  leiad doRead() implementatsiooni ka meie PoetrySocket objektis, mille eesmärk on lugeda asünkroonselt meie soklist andmeid, mil iganes Twistedi reaktor ta välja kutsub. Seega doRead() meetod on tegelikult tagastuskutse &#8211;  selle asemel, et saata see otse Twistedile, me saadame objekti doRead meetodiga. See on Twistedi raamistikus üldlevinud võte – selle asemel et edastada funktsioon, sa saadad liidesega ühilduva objekti.  Selline lähenemismeetod lubab sul edastada hulk sarnaseid tagastuskutseid (Liidese poolt defineeritud meetodid) koos üksiku argumendiga. See lahendus võimaldab tagastuskutsetel omavahel suhelda läbi objektis hoitavate jagatavate olekutega.</p>
<p>Mis on teisiti  IreadDescriptor&#8217;i abil arendatud tagastuskutsega? Pane tähele, et IreadDescriptor  on IfileDescriptori alamklass, mis tähendab et  sellised ehk  IreadDescriptotit esindavad tagasikutsed  peavad ühilduma ka  <code><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py#L918">IfileDescriptor</a></code><code> </code>liidesega. Ja kui sa kerid alla poole, siis võid seal märgata alljärgnevaid ridu:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>class IFileDescriptor(ILoggingContext):
    """
    A file descriptor.
    """
    def fileno():
        ...

    def connectionLost(reason):
        ...</pre>
</div>
<p>Ma jätsin ülemises ekraanitõmmises mõningad docstringid välja, sest nende tagasikutsete nimede  järgi on nende eesmärgid  üheselt mõistevad : fileno – tagastab monitooritava failideskriptori ja connectionLost kutsutakse siis välja kui ühendussülgetakse.  Ja nagu sa näed, siis meie PoetrySocket objektid esindavad antud meetodeid samuti,</p>
<p>Lõpuks, IfileDescriptor on päritud IloggingContext-ist. Ma ei hakka selle sisu siin välja tooma, aga sellepärast   on meil vajalik kirjutada logPrefix. Sa detailsemalt tutvuda sellega moodulis <code><a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/internet/interfaces.py">interfaces</a></code><code>.</code></p>
<p>Märkus: Võibolla sa juba märkasid, et doRead() tagastab eriväärtuse, et teavitada socketi sulgumisest. Kuidas ma tean seda teha? Lihtsalt, see ei tööta ilma selleta ja ma piilusin  Twisted liideste arendusi, et teaks mida teha. Sa peaksid mõnikord tegema samamoodi, sest dokumentatsioon ei pruugi olla täpne või ajakohastatud. Ma naasen viiendas osas tagasi sama teema juurde, võibolla  oled sa selleks ajaks juba sokist taastunud.</p>
<h4>Veel ja juba põhjalikumalt tagasikutsetest</h4>
<p>(tagasikutse – eng callback)</p>
<p>Meie uus Twistedi luulelugeja on üpris sarnane meie algsele asünkroonsele kliendile. Mõlemad luulelugejad ühenduvad luuleserveritega ja loeb asünkroonselt  nende soklitest  infot. Suurem erinevus meie Twistedi põhisel lugejal on see, et ta ei vaja välimist tsüklit – selle asemel kasutab ta Twistedi  reaktorit.</p>
<p>Ja doRead tagasikutse on siin oluline komponent. Twisted kutsub selle välja, et meid teavitada, et meie soklis  on andmed valmis lugemiseks. Seda protsessi on kujutatud joonisel .7<a href="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-doread.png"></a></p>
<div class="wp-caption aligncenter" style="width: 356px"><img title="doRead_callback" src="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-doread.png" alt="" width="346" height="276" /><p class="wp-caption-text">doRead tagasikutsung</p></div>
<p>Igakord kui tagasikutse on väljakutsutud, siis  on ta valmis lugema kõiki olemasolevaid andmeid ja peale seda peatub blokeerumata. Nagu me peatükis.3 juba mainisime, siis Twisted ei saa midagi teha, et peatada meie valesti käituvad koodi( nt mõtetu blokeerumine).Teeme näo, et me ei usu seda ja vaadata mis juhtub. Meie uue kliendiga on  samas kataloogis  nn rikkis luulelugeja nimega  <tt><a href="http://github.com/jdavisp3/twisted-intro/blob/master/twisted-client-1/get-poetry-broken.py">twisted-client-1/get-poetry-broken.py</a></tt><tt> . </tt>Ja kui selle koodi vaatad, siis see paistab sarnane, va 2 erandiga:</p>
<ol>
<li>Rikkis kliendi sokkel on blokeeruv</li>
<li>doRead() meetod jätkab baitiide 	lugemist sokli sulgemiseni</li>
</ol>
<p>Käivita nn rikkis lugeja alljärgneva käsuga:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>python twisted-client-1/get-poetry-broken.py 10000 10001 10002</pre>
</div>
<p>Ja sa võid ekraanil märgata alljärgnevat tulemust:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>Task 1: got 3003 bytes of poetry from 127.0.0.1:10000
Task 3: got 653 bytes of poetry from 127.0.0.1:10002
Task 2: got 623 bytes of poetry from 127.0.0.1:10001
Task 1: 3003 bytes of poetry
Task 2: 623 bytes of poetry
Task 3: 653 bytes of poetry
Got 3 poems in 0:00:10.132753</pre>
</div>
<p>Olgugi väiksele ülesannete järjestuse erinevustele, paistab antud rakendus üsna sarnane meie blokeeruva kliendiga. Aga see sellepärast, et meie nn rikkega klient on blokeeruv. Kasutades blokeeruvat recv() funktsiooni meie tagasikutses, muutsime Twistedi  asünkroonse koodi automaatselt sünkroonseks. Ehk meil on keeruline select-tsükkel ilma asünkroonsust saavutamata.</p>
<p>Twisted sündmustsükel pakub meile multi-tasking võimalust, mida tuntakse üldnimetuse  <a href="http://en.wikipedia.org/wiki/Computer_multitasking#Cooperative_multitasking.2Ftime-sharing">cooperative</a> all, millest järgnevalt võib lihtustatult mõelda, et Twisted ütleb meile kuna OK lugeda ja kuna õige aeg failideskriptorisse kirjutada, aga meie peame sealjuures arvestama, et me saame andmetega tegeleda  kuni blokeeringuni.  Ja seetõttu peaksime me  oma koodis välistama ka muud blokeeruvad kutsed, nagu os.system moodul. Kui meil on kauakestev arvutustöö (protsessori nõudlik), siis on meie ülesanne jagada see natsa väiksemateks tükkideks, nii et S/V ressurssi nõudvad ülesanded saaksid võimaluse korral teha oma töid ja kogu programm saaks oma  tööga edasi minna.</p>
<p>Siin on oluline tähelepanna, et meie rikkega klient ikkagi töötab – see laeb alla kõik luuletused, mida me oleme soovinud, aga ta on kaotanud asünkroonse S/V  abil saavutatud effektiivsuse. Samas võibolla sa märkasid, et see töötas ikkagi kiiremini kui sünkroonne klient – see väike võit tuli asjaoolust, et meie  rikkis klient ühendus programmi töö alguses igasse serverisse ja kuna serverid hakkavad koheselt andmeid serveerima ja OS teatud osa saabunud infost talletab puhvrisse/salve isegi siis kui sa puhvrist ei loe, mistõttu meie vigane klient saab infot ka teistest serveritest, olgugi et ise loeb andmeid vaid ühest.</p>
<p>Aga selline trikk töötab vaid väikeste infohulkade korral, nagu seda meie luuletused on. Kui me laeksime, noo ütleme kolm 20millioni sõnaga eeplist regivärssi, siis OS puhvrid täituvad kiiresti ja meie väikene võit sulab olematuks.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>Lingid:</strong></p>
<p>* origininaaltekst &#8220;Twisted poetry&#8221;: <a href="http://krondo.com/blog/?p=1445">http://krondo.com/blog/?p=1445</a></p>
<p>*  Aleax Mortelli põhjalik esitlus tagasikutsetest: &#8220;Callbacks &#8211; Dont call us, we call you&#8221; &#8211; <a href="http://www.youtube.com/watch_popup?v=LCZRJStwkKM&amp;vq=medium#t=778" target="_blank">http://www.youtube.com/watch_popup?v=LCZRJStwkKM&amp;vq=medium#t=778</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/593/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=593&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/07/22/pt-4-keerutame-luulet-juba-twistedi-abil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-doread.png" medium="image">
			<media:title type="html">doRead_callback</media:title>
		</media:content>
	</item>
		<item>
		<title>Ptk.3 Esmatutvus Twistediga &#8211; mängime natuke</title>
		<link>http://timgluz.wordpress.com/2010/07/19/ptk-3-esmatutvus-twistediga-mangime-natuke/</link>
		<comments>http://timgluz.wordpress.com/2010/07/19/ptk-3-esmatutvus-twistediga-mangime-natuke/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 17:26:13 +0000</pubDate>
		<dc:creator>timgluz</dc:creator>
				<category><![CDATA[Algoritmid]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Twisted]]></category>

		<guid isPermaLink="false">http://timgluz.wordpress.com/?p=576</guid>
		<description><![CDATA[(eelmine peatükk / index / järgmine peatükk ) Teeme tühja tööd, aga Twistedi moodi. Eelmises näites saime valmis vahva asünkroonse luulekoguja, siis selles peatükis  kasutame natuke ära Twistedi võimalusi ja kirjutame uue versiooni. Aga enne suuremat ümberkirjutamist, las ma tutvustan natuke Twistedit (versioonist 8.2.0 alates- aegajalt ilmuvad Twistedil uuemad versioonid , aga suure tõenäosusega püsib [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=576&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align:right;"><em>(<a href="http://timgluz.wordpress.com/2010/07/15/py-pt-2-aeglane-poeesia-ja-maailmalopp/">eelmine  peatükk</a> / <a href="http://timgluz.wordpress.com/twisted/">index</a> / <a href="http://timgluz.wordpress.com/2010/07/22/pt-4-keerutame-luulet-juba-twistedi-abil/">järgmine peatükk</a> )</em></p>
</blockquote>
<p><strong>Teeme tühja tööd, aga Twistedi moodi.</strong></p>
<p>Eelmises näites saime valmis vahva asünkroonse luulekoguja, siis selles peatükis  kasutame natuke ära Twistedi võimalusi ja kirjutame uue versiooni. Aga enne suuremat ümberkirjutamist, las ma tutvustan natuke Twistedit (versioonist 8.2.0 alates- aegajalt ilmuvad Twistedil uuemad versioonid , aga suure tõenäosusega püsib  tuuma väline külg muutumatuna). Seega pole sul täna vaja karta, et järgnevad näited natuke uuemal versioonil ei tööta, vähemalt ma loodan seda. Kui sa eelmises peatükis jäid kahtlema, kas hankida, endale Twisted või ei, siis nüüd palun hangi <a href="http://twistedmatrix.com/trac/wiki/Downloads">siit</a> .</p>
<p>Alljärgnevalt kõige lihtsam Twistedi programm:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>from twisted.internet import reactor
reactor.run()</pre>
</div>
<p>Kui sa ei viitsi seda ümber kirjutada, siis leiad selle koodi failist basic-twisted/simple.py  ja käsurealt käivitamiseks:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>python basic-twisted/simple.py</pre>
</div>
<p>Meie programmi esimene rida impordib kasutusvalmi reaktor-objekti ning teine rida käivitab reaktori. Antud juhul ei tee see programm  mitte midagi kasulikku – lihtsalt ootab ja jääbki ootama, seepärast   on  reaktori peatamiseks ehk programmi sulgemiseks vaja vajuta klahve Control-C, muidu reaktor jääbki alatiseks jooksma ning ootama sündmusi mida ei tule. Üldjuhul me sellist tühja tsüklit ei kasuta, vaid lisame enne reaktori käivitamist tsüklisse samuti mõne failideskriptori, alljärgnevate näidete  korral on selleks meie luulekliendi  ühendus luuleserveriga. Kuidas see täpsemalt käib , näed hiljem, aga meie reaktor on nüüd hoos. Pane tähele, et tegu pole nn aktiivse ja kordusi läbiva tsükliga. Kui sul on ekraanil  protsessori mõõdik, siis näed et tühjalt käiv reaktor ei mõjuta  näidikut &#8211;  meie reaktor ei kasuta ooteseisundis üldse protsessori võimsusi, sest meie reaktor on alles ülemises tsüklis ning ootab                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   aktiveerivat sündmust, mida  antud näite korral ei ilmugi. Kujundlikult on meie reaktor kui otsustusvõimetu Hamlet – teha või mitte teha.</p>
<p>Kohe teeme asja  huvitamaks, aga enne seda võtan mõned asjad lühidalt veel kokku:</p>
<ol>
<li>Twistedi reaktor käivitub alles, 	siis kui tal on seda kästud teha – reactor.run()</li>
<li>Reaktor töötab samas lõimes, 	kus ta tööd alustas.</li>
<li>Kord käivitatud reaktor ei peatu 	põhjuseta ja on töötava programmi kontrolli all.</li>
<li>Tühitsükel ei tarbi protsessori 	võimust.</li>
<li>Reaktorit ei looda otseselt, vaid 	importitakse moodulist.</li>
</ol>
<p><em>Viimasel punktil tasub korra peatuda. Twistedis on reaktor lihtsalt </em><a href="http://en.wikipedia.org/wiki/Singleton_pattern">Singleton</a> tüüpi <em>projekteerimismall ning Twistedi moodulis  on ainult üks reaktor-object, mis luuakse kaudselt koodi importimise ajal. </em></p>
<p>Muidugi võimaldab Twisted  select-reaktori asemel kasutada ka muidki reaktoreid. Select-reaktor on lihtsalt kõige levinuim ja paremini tuntud lahendus, seetõttu on ta valitud ka Twistedi vaikimisi reaktoriks. Aga kui sul on soov kasutada mingit muud reaktorit, nt poll-reaktorit, siis peameeles et enne reaktori importimist tuleb oma moodulisse soovitav reaktor  installida, mida saab teha alljärgneva koodilõiguga:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>from twisted.internet import pollreactor
pollreactor.install()</pre>
</div>
<p>Kui sa oma koodis reaktorit täiendavalt ei installi, lihtsalt impordid,  siis Twisted võtab kasutusele vaikimisi määratud reaktori ehk siis select.reactori.  Antud põhjusel on soovitav reaktor importida  funktsioonis, kus toimub reaktori töö, aga  mitte harjumispäraselt mooduli alguses.</p>
<p><em>Märkus: kirjutamise hetkel, Twistedi meeskond tegeleb selle kitsaskohaga ning on loota, et peagi see kitsendus kaob ning saab mitut reaktorit koos kasutada. Et selline lahendus oleks võimalik, siis objekti importimine asendub objekti viitamisega.</em></p>
<p>See selleks, kirjutame parem meie esimese ja mitte midagi tegeva Twistedi programmikese ümber ja asendame select-reactori hoopis teise reaktoriga, nt poll-reaktorig<em>a.</em>Kood asub failis: <tt><a href="http://github.com/jdavisp3/twisted-intro/blob/master/basic-twisted/simple-poll.py">basic-twisted/simple-poll.py</a></tt>:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>from twisted.internet import pollreactor
pollreactor.install()
from twisted.internet import reactor
reactor.run()</pre>
</div>
<p>Nüüd on siis meil poll-tsükkel, mis samuti ei tee midagi kasulikku. Antud alajaotus oli silmaringi laiendamiseks, et oskaksid tulevikus arvestada ka muud tüüpi reaktoritega, aga edaspidistes näidetes  jään  traditsioonilise select-reaktori juurde,</p>
<p><strong>Tere, Twisted</strong></p>
<p>Aitab mõtetust reaktorist, kirjutame nüüd parem Twistedi programmi, mis teeb midagi meie heaks. Alljärgnev näide kuvab peale reaktori käivitumist terminali aknasse natuke teksti:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>def hello():
    print 'Hello from the reactor loop!'
    print 'Lately I feel like I\'m stuck in a rut.'
from twisted.internet import reactor
reactor.callWhenRunning(hello)
print 'Starting the reactor.'
reactor.run()</pre>
</div>
<p>Laisematele teadmiseks, kood asub failis <tt><a href="http://github.com/jdavisp3/twisted-intro/blob/master/basic-twisted/hello.py">basic-twisted/hello.py</a></tt><tt>, mida k</tt>äivitades näed sa ekraanil alljärgnevat pilti:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>Starting the reactor.
Hello from the reactor loop!
Lately I feel like I'm stuck in a rut.</pre>
</div>
<p>Antud juhul pead sa programmist väljumiseks vajutama klahve Ctrl – C, sest peale nende ridade väljastamist jääb reaktor edasi jooksma ja uusi sündmusi ootama. Samuti pane tähele lausete väljastamisjärjekorda – sa võid märgata, et  hello-funktsioon kutsutakse alles siis välja, kui reaktor on käivitunud ning funktsioonide väljakutsumise võtab enda peale samuti reaktor. Selle tingib asjaolu, et me kasutame enne reaktori käivitumist meetodit  callWhenRunning(),mille sisendparameetriks on viit käivitavale funktsioonile.Niiviisi viidatud funktsioon kutsutakse koheselt peale reaktori käivitumist välja.</p>
<p>Edaspidi kasutan mõistet tagasikutset (eng callback) kirjeldamaks  viita kutsutavale funktsioonile, antud juhul on selleks viit hello-funktsioonile. Olemuselt on tagasikutse lihtsalt Twistedile edastatav funktsiooniviit, mille abil  on tal võimalik vajalikul ajal viidatud funktsioon välja kutsuda. Antud näite korral, siis pärast reaktori käivitamist. Kuna Twistedi reaktor on meie koodist eraldatud, siis enamus tegevusi reaktori tuuma ja meie juhtloogika vahel saavad alguse nn funktsiooni tagasikutse Twistedile saatmisega. Vaatame nüüd näite varal kuidas Twisted  kutsub tagasikutse abil meie funktsiooni välja:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>import traceback
def stack():
    print 'The python stack:'
    traceback.print_stack()
from twisted.internet import reactor
reactor.callWhenRunning(stack)
reactor.run()</pre>
</div>
<p>Selle näite leiad  failist  <tt><a href="http://github.com/jdavisp3/twisted-intro/blob/master/basic-twisted/stack.py">basic-twisted/stack.py</a></tt><tt> </tt>ja käivitudes kuvab see ekraanile järgneva tulemuse:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>The python stack:
...
  reactor.run() &lt;-- This is where we called the reactor
...
...  &lt;-- A bunch of Twisted function calls
...
  traceback.print_stack() &lt;-- The second line in the stack function</pre>
</div>
<p>Ekraanile kuvatakse mitmeid ridu, samas ära vaeva hetkel pead  vahepealsete Twistedi väljakutsetega. Lihtsalt keskendu reactor.run() ja meie tagastuskutse vahelisele seosele.</p>
<p><strong>Tagastusviidast lähemalt</strong></p>
<p>Twisted pole ainus tagastuskutsetel põhinev reaktor-raamistik. Vanimad Pythoni asünkroonraamistikud nagu  <a href="http://www.nightmare.com/medusa/">Medusa</a> ja <a href="http://docs.python.org/library/asyncore.html#module-asyncore">asyncore</a> kasutavad samuti neid. Ja samuti GUI raamistikud <a href="http://gtk.org/">GTK</a> ja <a href="http://qt.nokia.com/">QT</a> , mõlemad baseeruvad oma töös reaktor-tsüklile. Üldiselt paistab et reaktiivsete süsteemide arendajad on  kiindunud tagastuskutsetesse ja kasutavad neid aktiivselt . Äkki peaksid nad nendega abielluma &#8211;  võibolla nad juba ongi.</p>
<p>Alljärgnevalt võta arvesse järgmiste asjaoludega:</p>
<ol>
<li>Reaktori projekteerimismall on 	ühiklõim (eng single-threaded).</li>
<li>Twistedi sarnased reaktiivsed 	raamistikud hoolitsevad täielikult reaktortsükli eest, nii et meie 	 ei pea sellega ennast vaevama.</li>
<li>Meie kood ei käivitu ise.</li>
<li>Kuna töö toimub ühes lõimes, 	siis tegeleb funktsioonide väljakutsumistega reaktori ise.</li>
<li>Reaktor ei tea, millist osa meie 	koodist ta peab välja kutsuma-  me peame tagasikutsed ise edastama.</li>
</ol>
<p>Tagastuskutsed pole juhul ainus võimalus – nad  üks paremaid ja tuntumaid võimalusi selleks.</p>
<p>Joonis.6 näitab, mis toimub tagastusviida/nõude ajal:</p>
<div class="wp-caption aligncenter" style="width: 227px"><a href="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-callback.png"><img title="Tagasikutsega reaktor" src="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-callback.png" alt="" width="217" height="254" /></a><p class="wp-caption-text">Tagasikutsega reaktor</p></div>
<p>Joonis.6 põhjal võib  välja tuua  mõningad tagastuskutse olulisemad omadused:</p>
<ol>
<li>Meie tagastusviidaga kood jookseb 	Twistediga samas lõimes.</li>
<li>Sel ajal, kui täidetakse 	tagastusviidaga väljakutsutud koodi, siis Twistedi tsükkel on 	peatunud.</li>
<li>Ja vastupidi.</li>
<li>Kui meie koodi täitmine on 	lõpetatud, siis täitmisjärg läheb koheselt tagasi reaktorile.</li>
</ol>
<ol>Twistedi-tsükkel on tagasikutse ajal 	meie koodi poolt efektiivselt blokeeritud. Seega peame  me olema 	kindlad, et tagasikutsega käivitatud kood ei raiskaks aega ehk 	peaksime omapoolses koodis vältima blokeeruvaid S/V lülitusi.  	Muidu pole reaktor-projekteerimismallist tulu, sest Twisted ei võta 	ette ühtegi ennetusabinõud, et takistada meie koodi poolset 	blokeerumist, mispärast peame me ise hoolitsema, et meie kood seda 	ei teeks. Nagu näites nägime, siis üldjuhul ei pea me ennast 	vaevama  võrgu S/V kontrollimisega, sest selle töö teeb edukalt 	meie eest ära twisted ja asünkroonselt.</ol>
<p>Võimalikud blokeeruvad tegevused on samuti veel näiteks lugemine/kirjutamine mitte-sokli põhisest  failideskriptorist (nt toru – eng pipe) või ka alamprotsessi järgi ootamine. Blokeeruvast mitte-blokeeruva tegevuste peale lülitumine sõltub juba sinu ülesandest, aga üldjuhul leiab abi Twistedi APIst. Siinjuures on oluline tähele panna, et ka paljud Pythoni standardfunktsioonid ei võimalda kasutada asünkroonset lähenemist. Näiteks os.system moodulis olevad funktsioonid blokeeruvad alati kuni alamprotsessid on lõppenud. Nii need lihtsalt töötavad. Kui soovid twistediga töötada, siis pead võimaluse korral alati vältima os.systemi kasutamist ja  võimaluse korral eelistama Twisted APIt alamprotsesside juhtimiseks.</p>
<p><strong>Hüvasti, Twisted</strong></p>
<p>Tuleb välja, et alati on võimalik Twistedi reaktor käigupealt,kasutades stop() meetodit, sulgeda. Siinjuures pean rõhutama &#8211;  kord suletud reaktorit ei saa taaskäivitada, üldiselt kasutatakse seda meetodit  oma programmi sulgemiseks/katkestamiseks.</p>
<p><em>Märkus: Viimasel ajal on Twistedi kirjalisti ilmunud arutlusi reaktori taaskäivitavaks muutmisest, et arendajal oleks võimalik vajaduse korral reaktor peatada ning taaskäivitada.  Aga versioonis 8.2.0, saad sa ainult reaktori käivitada ja peatada vaid korra.</em></p>
<p>Siin on programm mis 5 sekundi möödumisel peatab reaktori ,kood asub  failis  <tt><a href="http://github.com/jdavisp3/twisted-intro/blob/master/basic-twisted/countdown.py">basic-twisted/countdown.py</a></tt><tt>:</tt></p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>class Countdown(object):
    counter = 5
    def count(self):
        from twisted.internet import reactor
        if self.counter == 0:
            reactor.stop()
        else:
            print self.counter, '...'
            self.counter -= 1
            reactor.callLater(1, self.count)
from twisted.internet import reactor
reactor.callWhenRunning(Countdown().count)
print 'Start!'
reactor.run()
print 'Stop!'</pre>
</div>
<p>Funktsiooni callLater() kasutame  tagasikutse(eng callback) registreerimiseks,  esimene argument määrab ära mitu sekundit(ei pea olema täisarv) sinu tagasikutse väljakutsudes jookseb ning   teine argument on viit väljakutsutavale funktsioonile.</p>
<p>Kuidas Twisted teab käivitada tagasikutset õigel ajal? Sa võid mõelda, et paus on sündmus nagu iga teinegi sündmus, mis ootab oma täitmiskorda  reaktori tsüklis( joonis 5). Twisted kasutab vaheaega, et garanteerida eet iga callLateriga registreeritud ajastatud tagasikutse täidetakse õigel ajal, tegelikult küll pigem võimalikult õigel ajal. Kui mingi muu tagasikutse täitmine võtab liialt kaua aega, siis hilineb ka meie tagasikutse täitmine.  Seega Twistedi callLater mehhanism ei sobi range- reaalaja süsteemi rakenduste loomiseks.</p>
<p>Miks ei jää see programm select-tsüklisse kinni nagu eelmised näited, samas kui see programm ei kuula mitte ühtegi failideskriptorit?  Select-kutse  samuti aksepteerib sisendparameetrina  vaheaja pikkust määrava argumenti ja select-kutse annab vastuse igaljuhul, isegi kui vaheaja väärtus on määratud ja ükski failideskriptor ei ole antud ajajooksul valmis .   Muide kui vaheaja parameeter väärtustada nulliga, siis on sul võimalik  failideskriptoreid  ilma blokeerumata kiiresti kontrollida (ehk poll-kutse).</p>
<p>Aga alljärgnevalt meie pöördloenduri väljund:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>Start!
5 ...
4 ...
3 ...
2 ...
1 ...
Stop!</pre>
</div>
<p>Pane tähele, et lõpus olev “Stop” on tähenduslik, selle järgselt on nüüd  reaktor lõpetanud oma töö, reactor.run() on  tagastanud väärtuse ja nüüd on meil programm mis suudab ise lõpetada oma töö.</p>
<p><strong>Näksi pähklit, Twisted!</strong></p>
<p>Kuna Twisted suhtleb meie koodiga tagasikutsete vormis, siis võid sa asjakohaselt küsida, mis juhtub kui mõni tagasikutsutav kood tõstatab veaolukorra. Egas midagi, proovime järgi. Programm basic-twisted/exception.py olevatest funktsioonidest üks funktsioon püstitab vea, samas teine jookseb veatult. Alljärgnevalt see programmilõik:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>def falldown():
    raise Exception('I fall down.')
def upagain():
    print 'But I get up again.'
    reactor.stop()
from twisted.internet import reactor
reactor.callWhenRunning(falldown)
reactor.callWhenRunning(upagain)
print 'Starting the reactor.'
reactor.run()</pre>
</div>
<p>Ja käsurealt käivitades, võid käsureal näha alljärgnevat tulemust:</p>
<div style="background:none repeat scroll 0 0 #ffffbb;width:95%;padding:5px;">
<pre>Starting the reactor.
Traceback (most recent call last):
  ... # I removed most of the traceback
exceptions.Exception: I fall down.
But I get up again.</pre>
</div>
<p>Võid tähelepanna, et teine tagasikutsutav funktsioon jookseb vahetult peale esimest ja hoolimata sellest et esimene lõpetas oma töö veateatega. Kui sa antud programmis kommenteerid rea reactor.stop() välja, siis  reaktor jääb alatiseks tööle. Üldiselt kokkuvõttes, siis  reaktor jääb tööle ka siis kui mõni meie tagasikutsutavast funktsioonidest ebaõnnestus. Näiteks veebiserver peab olema väga robustne süsteem ja ei saa hanguda iga vea tekkides. See ei tähenda , et me peaksime veahaldamisse kerglaselt suhtuma, aga samas on hea teada et meie seljatagust on kaitsmas ka Twisted.</p>
<p><strong>Luulet palun!</strong></p>
<p>Järgmises osas võtame eesmärgiks arendada oma asünkroonne luulelugeja ja seda juba Twistedi abil.</p>
<p>Soovituslikud ülesanded</p>
<ol>
<li>Täienda countdown.py koodi 	niiviisi, et seal oleks kol erinevat pöördloendit ning igalühel 	oleks erinev paus. Kui kõik loendid on oma töö lõpetanud, siis 	hoolitse et reaktor saaks välja lülitatud.</li>
<li>Tutvu moodulis 	twisted.internet.task asuva klassi LoopingCalliga. Kirjuta meie 	pöördloendur ümber, kasutades selleks LoopingCalli võimalusi. 	Kasuta  vaid start ja stop meetodeid ja hetkel võid ignoreerida 	järeltagastuse (eng deferred return) väärtust. Selle teemaga 	tutvume põhjalikult juba järgnevates peatükkides.</li>
</ol>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>Lingid:</strong></p>
<p>* Part 3: Our Eye-beams Begin to Twist, originaal versioon: <a href="http://krondo.com/blog/?p=1333" target="_blank">http://krondo.com/blog/?p=1333</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timgluz.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timgluz.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timgluz.wordpress.com/576/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timgluz.wordpress.com&amp;blog=12159457&amp;post=576&amp;subd=timgluz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timgluz.wordpress.com/2010/07/19/ptk-3-esmatutvus-twistediga-mangime-natuke/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>59.421506 24.761338</georss:point>
		<geo:lat>59.421506</geo:lat>
		<geo:long>24.761338</geo:long>
		<media:content url="http://0.gravatar.com/avatar/2a8d090768d237544a7c69a0f9c217c7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timgluz</media:title>
		</media:content>

		<media:content url="http://krondo.com/blog/wp-content/uploads/2009/08/reactor-callback.png" medium="image">
			<media:title type="html">Tagasikutsega reaktor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
