<?xml version="1.0" encoding="ISO-8859-1"?>
<rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
    <title>matee-lifentech</title>
    <link>http://www.feedkiller.com/feed-5832</link>
    <description>custom merged feed by feedkiller.com</description>
    
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/lifentech-matee" /><feedburner:info uri="lifentech-matee" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
<title>B&#x142;ogo</title>
<description>Pi&#x119;kne uczucie, kiedy praca dyplomowa rodz&#x105;ca si&#x119; przed d&#x142;u&#x17c;szy czas w bólach, jest praktycznie gotowa. Jedyne poprawki zg&#x142;oszone przez promotora, to te czysto edytorskie. Ah oh! A jak dobrze si&#x119; &#x15b;pi wiedz&#x105;c o tym.&lt;br /&gt;Pozostaj&#x105;c jeszcze w klimacie techniczno-in&#x17c;ynierskim przypomnia&#x142;o mi si&#x119; stwierdzenie jakoby najtrudniejsze by&#x142;o inwalidowanie keszu i nazywanie rzeczy. W zwi&#x105;zku z tym i mas&#x105; projektów, które si&#x119; zaczynaj&#x105; i nie dochodz&#x105; do fazy u&#x17c;ywalnej, dochodz&#x119; do wniosku, &#x17c;e zaczn&#x119; je od razu nazywa&#x107; YADP, (jet anader ded prod&#x17c;ekt) wraz z odpowiednim numerkiem :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/832507920948786671-261960798898418299?l=life.matee.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/Vzs2dL5D0yo" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/lifentech-matee/~3/Vzs2dL5D0yo/bogo.html</link>
<feedburner:origLink>http://life.matee.net/2010/03/bogo.html</feedburner:origLink></item>

<item>
<title>Losy betonowej skarpety</title>
<description>Pozby&#x142;em si&#x119;! Hurra! Pozby&#x142;em si&#x119; betonowej skarpety dzi&#x15b; na rzecz stabilizatora.&lt;br /&gt;Noga przy samej kostce jeszcze troch&#x119; opuchni&#x119;ta, ko&#x15b;ci nie wida&#x107;. Ale mimo wszystko da si&#x119; nawet chwil&#x119; posta&#x107; o w&#x142;asnych si&#x142;ach. Ciekawe kiedy uda si&#x119; przej&#x15b;&#x107; pierwszych kilka metrów bez wspierania si&#x119; na patykach? :P&lt;br /&gt;Na najbli&#x17c;szy tydzie&#x144; w planach wci&#x105;&#x17c; le&#x17c;enie z nog&#x105; w górze, jeszcze 7 zastrzyków w brzuch i namaszczenie liotonem i dip rilifem na zmian&#x119;, oraz oczywi&#x15b;cie &#x107;wiczenia. Póki co, po 20 zastrzykach brzuch jeszcze nie przecieka jak pij&#x119; :P&lt;br /&gt;Nast&#x119;pna wizyta kontrolna za 2 tygodnie i wtedy te&#x17c; najprawdopodobniej pocz&#x105;tek rehabilitacji.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/832507920948786671-674309795568133518?l=life.matee.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/fAn3CHgwr_U" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/lifentech-matee/~3/fAn3CHgwr_U/losy-betonowej-skarpety.html</link>
<feedburner:origLink>http://life.matee.net/2010/02/losy-betonowej-skarpety.html</feedburner:origLink></item>

<item>
<title>L&#x105;dowanie vs noga - 1:0</title>
<description>Pewnej mro&#x17a;nej soboty (23 stycznia gwoli &#x15b;cis&#x142;o&#x15b;ci) odwiedzi&#x142;em &lt;a href="http://sciankauw.pl/"&gt;&#x15b;ciank&#x119;&amp;nbsp;wspinaczkow&#x105;&lt;/a&gt; na Banacha. Wszystko fajnie, &#x142;adna rysa, ciekawa struktura, okap i baldy =) Pech chcia&#x142;, &#x17c;e spodoba&#x142;a mi si&#x119; pewna droga na baldzie, kantem do najwy&#x17c;szego miejsca. Niestety zeskok po entym przej&#x15b;ciu drogi zako&#x144;czy&#x142; si&#x119; chrupni&#x119;ciem dochodz&#x105;cym z lewej kostki i przeszywaj&#x105;cym bólem mimo l&#x105;dowania na grubym materacu.&lt;br /&gt;&lt;br /&gt;Jako, &#x17c;e wydarzy&#x142;o si&#x119; to pó&#x17a;nym wieczorem, to w CM Lim &lt;b&gt;ca&#x142;odobowy&lt;/b&gt; dy&#x17c;ur ortopedyczny by&#x142; ju&#x17c; zamkni&#x119;ty (to tak jak te wszystkie sklepy non-stop 24h/7 czynne od 7 do 23). Na wizyt&#x119; w jedynym szpitalu w lewobrze&#x17c;nej Warszawie, który mia&#x142; tej nocy dy&#x17c;ur ortopedyczny jako&#x15b; nie mia&#x142;em ochoty - pó&#x142; miasta w jednym miejscu. Tej nocy spa&#x142;em chyba w najdziwniejszej pozycji w moim &#x17c;yciu. Wszystko byle tylko niczym nie dotkn&#x105;&#x107; do stopy.&lt;br /&gt;&lt;br /&gt;Nast&#x119;pnego dnia odwiedzi&#x142;em ortoped&#x119;. Rany, czy ludzie którzy obs&#x142;uguj&#x105; RTG nie my&#x15b;l&#x105;? Kobiecie, która robi&#x142;a mi 3 zdj&#x119;cia, z trudem przysz&#x142;o zrozumienie, &#x17c;e nie mog&#x119; postawi&#x107; tej nogi. Na szcz&#x119;&#x15b;cie po paru minutach walki zacz&#x119;&#x142;a kreatywnie my&#x15b;le&#x107;, oznajmiaj&#x105;c z rado&#x15b;ci&#x105;, &#x17c;e mog&#x119; usi&#x105;&#x15b;&#x107; na kraw&#x119;dzi sto&#x142;u, a maszyn&#x119; przesunie. Brawo!&lt;br /&gt;Noga jak si&#x119; okaza&#x142;o, nie by&#x142;a z&#x142;amana, a powa&#x17c;nie skr&#x119;cona. Dosta&#x142;em pi&#x119;kn&#x105; gipsow&#x105; longet&#x119;, 3 tygodnie zwolnienia i recept&#x119; na 30 zastrzyków w brzuch. Lekki gips pono&#x107; nie wchodzi&#x142; w gr&#x119; ze wzgl&#x119;du na znaczn&#x105; opuchlizn&#x119;, która mog&#x142;a si&#x119; jeszcze powi&#x119;ksza&#x107;. Na najbli&#x17c;sze dni mia&#x142;em zaplanowane du&#x17c;o le&#x17c;enia z nog&#x105; w górze, zimne ok&#x142;ady, napinanie czworog&#x142;owego, dziurawienie brzucha i po&#x142;ykanie zielonych fasolek :P&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_qAk7PurF7II/S3XcBUXxuGI/AAAAAAAAACo/Tkc433oZjj4/s1600-h/20100124.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/_qAk7PurF7II/S3XcBUXxuGI/AAAAAAAAACo/Tkc433oZjj4/s200/20100124.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Do samochodu zawioz&#x142;em si&#x119; sam na wózku i ma&#x142;o brakowa&#x142;o, a wjecha&#x142;bym prosto na &#x15b;cian&#x119; z ca&#x142;kiem niez&#x142;&#x105; pr&#x119;dko&#x15b;ci&#x105;, przyjmuj&#x105;c ca&#x142;&#x105; energi&#x119; zderzenia na &#x15b;wie&#x17c;o zagipsowan&#x105; nog&#x119; :P&lt;br /&gt;&lt;br /&gt;Po 10 dniach uda&#x142;em si&#x119; na wizyt&#x119; kontroln&#x105;, niestety stopa i kostka nadal by&#x142;y mocno opuchni&#x119;te, ostry ból nadal pojawia&#x142; si&#x119; przy ka&#x17c;dym odrobin&#x119; wi&#x119;kszym ruchu. Tak&#x17c;e na rozstanie si&#x119; z betonowym bucikiem by&#x142;o jeszcze zbyt wcze&#x15b;nie. Nast&#x119;pna wizyta zosta&#x142;a zaplanowana na kolejne 10 dni pó&#x17a;niej (to ju&#x17c; za kilkana&#x15b;cie godzin).&lt;br /&gt;Dwa dni temu odpakowa&#x142;em nog&#x119; z gipsu maj&#x105;c nadziej&#x119;, &#x17c;e obrz&#x119;ku ju&#x17c; nie b&#x119;dzie, ale nadal ci&#x119;&#x17c;ko by&#x142;o odszuka&#x107; kostk&#x119; i stworzy&#x107; k&#x105;t prosty mi&#x119;dzy nog&#x105;, a stop&#x105; :/ Nawet je&#x15b;li gips zostanie dzi&#x15b; zdj&#x119;ty, to przede mn&#x105; jeszcze d&#x142;uga droga w dochodzeniu do siebie. W&#x105;tpi&#x119; w to czy uda si&#x119; usta&#x107; o w&#x142;asnych si&#x142;ach nie wspominaj&#x105;c o jakimkolwiek kroku, ale trzeba walczy&#x107; - tyle skalnych dróg czeka :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/832507920948786671-3230497118228250861?l=life.matee.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/6HsKeupSnLs" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/lifentech-matee/~3/6HsKeupSnLs/ladowanie-vs-noga-10.html</link>
<feedburner:origLink>http://life.matee.net/2010/02/ladowanie-vs-noga-10.html</feedburner:origLink></item>

<item>
<title>Comet is dead...</title>
<description>Porcja linków:&lt;br /&gt;* &lt;a href="http://blog.new-bamboo.co.uk/2009/12/30/brain-dump-of-real-time-web-rtw-and-websocket"&gt;Brain Dump of Real Time Web(RTW) and WebSocket&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://www.slideshare.net/ismasan/websockets-and-ruby-eventmachine"&gt;Websockets and Ruby EventMachine&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://java.dzone.com/articles/websocket-chat"&gt;Websocket Chat&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/"&gt;Ruby &amp; WebSockets: TCP for the Browser&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://java.dzone.com/articles/websocket-neither-web-nor-sock"&gt;WebSocket is neither Web nor Socket&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armstrongonsoftware.blogspot.com/2009/12/comet-is-dead-long-live-websockets.html"&gt;Comet is dead long live websockets&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na koniec ma&#x142;e &lt;a href="http://github.com/matee911/wsc"&gt;demo&lt;/a&gt; do pobrania.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4439539577336667969-2762881896787093455?l=tech.matee.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/tu2vAHgp4Xk" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/lifentech-matee/~3/tu2vAHgp4Xk/comet-is-dead.html</link>
<feedburner:origLink>http://tech.matee.net/2010/03/comet-is-dead.html</feedburner:origLink></item>

<item>
<title>Ukryte przez Django ficzery memcached</title>
<description>B&#x119;dzie szybko, bo do napisania tego posta zbieram si&#x119; ju&#x17c; zbyt d&#x142;ugo :)&lt;br /&gt;&lt;br /&gt;Django dostarcza kilka ró&#x17c;nych backendów cache, w tym tak&#x17c;e do memcached. S&#x119;k w tym, &#x17c;e ogranicza przy tym pewne funkcje m.in. kompresje.&lt;br /&gt;&lt;br /&gt;Pisz&#x105;c w&#x142;asny backend mo&#x17c;emy ustawi&#x107; binarny protokó&#x142; pikli, to nam zaoszcz&#x119;dzi troch&#x119; transferu. To samo mo&#x17c;emy zrobi&#x107; z kompresj&#x105;. W przypadku korzystania z python-memcached mo&#x17c;na poda&#x107; minimalny rozmiar obiektu, powy&#x17c;ej którego biblioteka u&#x17c;yje zliba, aby poupycha&#x107; troch&#x119; bity ;) Kolejny ficzer, który by&#x142; mi potrzebny w pracy to mo&#x17c;liwo&#x15b;&#x107; wymuszenia, na który node ma trafi&#x107; wybrany klucz. Jak si&#x119; okaza&#x142;o to równie&#x17c; obs&#x142;uguje python-memcached (cmemcached sie wywala jak dostanie tupl&#x119; jako klucz). Wystarczy jako klucz przekaza&#x107; dwu elementow&#x105; tupl&#x119;. Pierwszy element to numeryczny hash klucza, drugi to nazwa klucza. Wybranie serwera na podstawie hasha jest banalne.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sh_sh"&gt;hash % number_of_nodes&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ponizej znajduje sie moj backend dla Django.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sh_python"&gt;import logging&lt;br /&gt;import pickle&lt;br /&gt;import zlib&lt;br /&gt;from django.conf import settings&lt;br /&gt;from django.core.cache.backends.base import InvalidCacheBackendError&lt;br /&gt;from django.core.cache.backends.memcached import CacheClass as MemcCacheClass&lt;br /&gt;from django.utils.encoding import smart_str as _smart_str&lt;br /&gt;from django.utils.encoding import smart_unicode&lt;br /&gt;&lt;br /&gt;log = logging.getLogger(__name__)&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;    import memcache&lt;br /&gt;except:&lt;br /&gt;    raise InvalidCacheBackendError("Memcached cache backend requires either the 'memcache' library")&lt;br /&gt;&lt;br /&gt;def yamb_smart_str(s):&lt;br /&gt;    if isinstance(s, tuple):&lt;br /&gt;        serverhash, key = s&lt;br /&gt;        key = _smart_str(key)&lt;br /&gt;        return (serverhash, key)&lt;br /&gt;    else:&lt;br /&gt;        return _smart_str(s)&lt;br /&gt;&lt;br /&gt;class CacheClass(MemcCacheClass):&lt;br /&gt;    def __init__(self, server, params):&lt;br /&gt;        MemcCacheClass.__init__(self, server, params)&lt;br /&gt;        self._cache = memcache.Client(server.split(';'), \&lt;br /&gt;                                      pickleProtocol=getattr(settings, 'CACHE_PICKLE_PROTOCOL', 0))&lt;br /&gt;&lt;br /&gt;    def _server_hash(self, key):&lt;br /&gt;        if isinstance(key, tuple):&lt;br /&gt;            srv, k = key&lt;br /&gt;        else:&lt;br /&gt;            srv, k = '-', key&lt;br /&gt;        return srv, k&lt;br /&gt;&lt;br /&gt;    def _pickled_size(self, value):&lt;br /&gt;        pickled_size = 0&lt;br /&gt;        if settings.DEBUG or (log.getEffectiveLevel() &lt;= logging.DEBUG):&lt;br /&gt;            pickled = pickle.dumps(value, getattr(settings, 'CACHE_PICKLE_PROTOCOL', 0))&lt;br /&gt;            pickled_size = len(pickled)&lt;br /&gt;            if getattr(settings, 'CACHE_MIN_COMPRESSION_LEN', 0) &gt;= pickled_size:&lt;br /&gt;                pickled = zlib.compress(pickled)&lt;br /&gt;                pickled_size = len(pickled)&lt;br /&gt;                del pickled&lt;br /&gt;        return pickled_size&lt;br /&gt;&lt;br /&gt;    def add(self, key, value, timeout=0):&lt;br /&gt;        if isinstance(value, unicode):&lt;br /&gt;            value = value.encode('utf-8')&lt;br /&gt;        return self._cache.add(yamb_smart_str(key), value, timeout or self.default_timeout)&lt;br /&gt;&lt;br /&gt;    def get(self, key, default=None):&lt;br /&gt;        value = self._cache.get(yamb_smart_str(key))&lt;br /&gt;        srv, k = self._server_hash(key)&lt;br /&gt;        pickled_size = self._pickled_size(value)&lt;br /&gt;&lt;br /&gt;        if value is None:&lt;br /&gt;            log.debug("MISS %s %s %s", k, srv, pickled_size)&lt;br /&gt;        else:&lt;br /&gt;            log.debug("HIT %s %s %s", k, srv, pickled_size)&lt;br /&gt;&lt;br /&gt;        if value is None:&lt;br /&gt;            return default&lt;br /&gt;        else:&lt;br /&gt;            if isinstance(value, basestring):&lt;br /&gt;                return smart_unicode(value)&lt;br /&gt;            else:&lt;br /&gt;                return value&lt;br /&gt;&lt;br /&gt;    def set(self, key, value, timeout=0):&lt;br /&gt;        print "tyeaa"&lt;br /&gt;        if isinstance(value, unicode):&lt;br /&gt;            value = value.encode('utf-8')&lt;br /&gt;&lt;br /&gt;        srv, k = self._server_hash(key)&lt;br /&gt;        pickled_size = self._pickled_size(value)&lt;br /&gt;        log.debug("SET %s %s %s", k, srv, pickled_size)&lt;br /&gt;        self._cache.set(yamb_smart_str(key), value, timeout or self.default_timeout, \&lt;br /&gt;                        getattr(settings, 'CACHE_MIN_COMPRESSION_LEN', 0))&lt;br /&gt;&lt;br /&gt;    def delete(self, key):&lt;br /&gt;        srv, k = self._server_hash(key)&lt;br /&gt;        log.debug("DELETE %s %s -", k, srv)&lt;br /&gt;        self._cache.delete(yamb_smart_str(key))&lt;br /&gt;&lt;br /&gt;    def get_many(self, keys):&lt;br /&gt;        return self._cache.get_multi(map(yamb_smart_str, keys))&lt;br /&gt;&lt;br /&gt;    def incr(self, key, delta=1):&lt;br /&gt;        srv, k = self._server_hash(key)&lt;br /&gt;        log.debug("INCR %s %s -", k, srv)&lt;br /&gt;        return self._cache.incr(key, delta)&lt;br /&gt;&lt;br /&gt;    def decr(self, key, delta=1):&lt;br /&gt;        srv, k = self._server_hash(key)&lt;br /&gt;        log.debug("DECR %s %s -", k, srv)&lt;br /&gt;        return self._cache.decr(key, delta)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4439539577336667969-8392154584762496375?l=tech.matee.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/hHjcta7-SxQ" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/lifentech-matee/~3/hHjcta7-SxQ/ukryte-przez-django-ficzery-memcached.html</link>
<feedburner:origLink>http://tech.matee.net/2010/02/ukryte-przez-django-ficzery-memcached.html</feedburner:origLink></item>
    <item>
      <title>visit feedkiller and make your *own* rss merged feed.</title>
      <description>feedkiller.com is a free tool that allows you to merge rss feeds into your own rss mix made up of your favorite feeds.&lt;img src="http://feeds.feedburner.com/~r/lifentech-matee/~4/vhoX7FKCEXk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/lifentech-matee/~3/vhoX7FKCEXk/</link>
    <feedburner:origLink>http://www.feedkiller.com</feedburner:origLink></item>
  </channel>
</rss>
