<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>Pyetras</title><link>http://blog.pyetras.com/</link><description>Wpisy z dziennika internetowego Jogger, wspomaganego przez Jabbera</description><lastBuildDate>Sun, 20 May 2012 09:13:34 +0200</lastBuildDate><generator>JoggerPL</generator><item><title>sesja_mode_on</title><link>http://blog.pyetras.com/id/464046/</link><description>sudo ./sesja_mode_on.sh



see you in 3 weeks</description><pubDate>Mon, 11 Jan 2010 19:50:54 +0100</pubDate><guid>http://blog.pyetras.com/id/464046/</guid><category>Random</category></item><item><title>Zażółć Gęślą Jaźń w Django</title><link>http://blog.pyetras.com/id/447928/</link><description>Wszyscy developerzy Django, których kiedykolwiek zainteresował/zaskoczył unikodowy galimatias w Pythonie zapewne wiedzą, że modele i poszczególne pola typu CharField, TextField itd. zwracają swoje wartości w unicode. W związku z tym kod typu
{geshi lang=python}
&quot;Mój wspaniały artykuł - %s&quot;%model.title
{/geshi}
nie zadziała z powodu niezgodności formatów łączonych łańcuchów (unicode i nieunicode). Mogłoby się wydawać, że wystarczy dopisać # -*- coding: UTF-8 -*- na początku pliku z owym kodem oraz dodać magiczną literkę u przed stringiem:
{geshi lang=python}
u&quot;Mój wspaniały artykuł - %s&quot;%model.title
{/geshi}
jednak i tu napotkamy lipę - problemy z kodowaniem. Rozwiązaniem jest dosyć rozwlekła jak na pythona linijka:
{geshi lang=python}
unicode(&quot;Mój wspaniały artykuł - %s&quot;, &quot;utf-8&quot;)%model.title
{/geshi}
Dodatkowo, jeżeli umieszczamy ten kod np w funkcji __str__ jakiegoś obiektu, całość należy ująć w nawias i doklepać na końcu .encode('utf-8')
Pytanie moje brzmi - czy można szybciej?Przyzwyczajony do dekoratorów, lajzowatości i ogólnie pojętego DRY na widok swojego rozwiązania aż wyrywa mi się &quot;a fuj!&quot;.</description><pubDate>Thu, 02 Jul 2009 23:32:20 +0200</pubDate><guid>http://blog.pyetras.com/id/447928/</guid><category>Django</category><category>Python</category><category>Techblog</category></item><item><title>Djangowe ciekawostki</title><link>http://blog.pyetras.com/id/447223/</link><description>
	Kod django wykonywany jest tylko jednokrotnie w ramach jednej instancji serwera (cokolwiek to znaczy). Czyli print 'lool' w models.py zostanie wykonane tylko raz. Również obiekty utworzone w ten sposób &quot;zapamiętują&quot; swój stan pomiędzy requestami. Bug or feature? Czy to zadziała w każdym przypadku? 
	Signal.connect w Middleware.process_request czasem działa, a czasem nie. Truly random. Mimo problemów wynikających z pkt 1 connecty najlepiej robić w ciele models.py, ewentualnie w management.py w przpadku post_syncdb. 
	Pythonicznie - classobj vs. type, może warto się przyjrzeć
</description><pubDate>Thu, 25 Jun 2009 03:02:35 +0200</pubDate><guid>http://blog.pyetras.com/id/447223/</guid><category>Django</category><category>Python</category></item><item><title>Instalacja PIL na OS X</title><link>http://blog.pyetras.com/id/446220/</link><description>Winowajca - python2.5 z python.org, wszystko jebie się chyba przez to, że nie jest to wersja na x86_64 instalator przyjmuje że jestem na ppc...
Solution - ściągnąć source PIL, skomplilować z pythona macports (/opt/local/bin/python), dodać do .bash_profile
export PYTHONPATH=/Library/Python/2.5/site-packages/PIL:${PATH}

Podobno potrzeba też libjpeg:
{geshi lang=bash}cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo make install
sudo ranlib /usr/local/lib/libjpeg.a{/geshi}

...ale to nie działa z django.
Better solution - gotowa paczka</description><pubDate>Sun, 14 Jun 2009 17:25:12 +0200</pubDate><guid>http://blog.pyetras.com/id/446220/</guid><category>Python</category></item><item><title>Matura z informatyki - bazy danych</title><link>http://blog.pyetras.com/id/443802/</link><description>Część druga zadań z matur - tym razem SQL

Rozwiązania (SQL w Accessie)
Arkusze i dane

Co do nauki wyniesionej: 

w SQL Accessa (podobnie jak w MS SQL) jest TOP zamiast LIMIT;
najczęściej chcą użycia funkcji agregujących - Count, Sum, Min itd, zdecydowanie przydaje się znajomość GROUP BY;
nie != ale ; 
jeżeli jakiś INNER JOIN nie działa jak powinien zamień go na LEFT OUTER JOIN :P
Edytor SQL w Accessie07 ssie pauke

Ciąg dalszy nastąpi w Excelu!</description><pubDate>Tue, 19 May 2009 11:21:16 +0200</pubDate><guid>http://blog.pyetras.com/id/443802/</guid><category>Random</category></item><item><title>Matura z informatyki</title><link>http://blog.pyetras.com/id/440218/</link><description>Rozwiązało mi się wszystkie zadania z programowania z matur 2002-2009, poza 2004 (powstrzymał mnie atak śmiechu po przeczytaniu zadania z html). Może komuś posłużą:

Kod (c++)
Arkusze
Dane
</description><pubDate>Sat, 11 Apr 2009 00:23:59 +0200</pubDate><guid>http://blog.pyetras.com/id/440218/</guid><category>Random</category></item><item><title>Update Pythona i instalacja matplotlib na OS X</title><link>http://blog.pyetras.com/id/424068/</link><description>Dla siebie.
Update Pythona: pobrać nową wersję z python.org. Zainstaluje się w
/Library/Frameworks/Python.framework/Versions/Current/bin/python
obok poprzedniej wersji, nadpisując link python.
Następnie należy ściągnąć i zainstalować setuptools, żeby easy_install współpracował z nową wersją.
Można skopiować lokalizacje bibliotek z poprzedniej wersji
{geshi lang=python}
import sys
sys.path #lista ze ścieżkami do bibliotek
{/geshi}
Potem można albo ściągnąć pakiet (EPD) (~600mb, różne biblioteki naukowe do Pythona) lub bawić się dalej w instalację pojedynczych pakietów - NumPy 1.2 (jest oficjalny dmg) i wreszcie matplotlib (pobieranie przez easy_install nie zadziałało, musiałem ściągać egga z sourceforge).
Do matplotliba przyda się jeszcze wxpython/gtk2 i pewnie cairo.
Edit:
OpenCV for Python nie działa po instalacji MacPythona. 
Pre-compiled OpenCV Python Modules for OS X. Używać z
/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5
</description><pubDate>Mon, 24 Nov 2008 21:23:16 +0100</pubDate><guid>http://blog.pyetras.com/id/424068/</guid><category>Python</category></item><item><title>Mój wkład w przyszłość ludzkości</title><link>http://blog.pyetras.com/id/419740/</link><description>
Wysłane na 10^100. Głosujcie w styczniu!</description><pubDate>Sun, 19 Oct 2008 22:32:54 +0200</pubDate><guid>http://blog.pyetras.com/id/419740/</guid><category>Video</category></item><item><title>Z Ubiquity zabawy</title><link>http://blog.pyetras.com/id/414319/</link><description>Dla wszystkich znudzonych szumem wokół nowej przeglądarki Googla: będzie coś o Lisie ;). A konkretniej o nowym projekcie Mozilli - rozszerzeniu Ubiquity.

Wydany w wersji 0.1 plugin jest prezentowany jako &quot;metoda interakcji z internetem przy pomocy słów&quot;. A po odrzuceniu całej mistyczniej otoczki pozostaje zestaw skryptów js, które można uruchomić w każdej chwili i na każdej stronie. A więc prawie to samo co GreaseMonkey, z jedną różnicą - skrypty nie są przypisane do konkretnych stron, ale wywoływane przez specjalną konsolę.

Czy &quot;prawie&quot; czyni dużą różnicę? Twórcy twierdzą że tak:



Ubiquity wydaje się mieć całkiem obiecujące możliwości. Konsola umożliwia &quot;inteligentny&quot; i intuicyjny wybór komend, a tworzenie, dodawanie i edycja skryptów jest banalnie prosta. Dodawanie ogranicza się do kliknięcia paska podobnego do &quot;Remember Password&quot; w ff, który automatycznie pojawia się na stronie z nową komendą. I już, żadnych restartów. Tworzenie i edycja własnych skryptów jest jeszcze przyjemniejsza - wystarczy użyć dołączonego edytora (chrome), który pozwala na natychmiastowe testowanie kodu. 

Pisanie nowych komend jest naprawdę proste. Te kilka linijek (komenda piratebay) pozwala korzystać z wyszukiwarki na thepiratebay.org:

makeSearchCommand({
  name: &quot;piratebay&quot;,
  url: &quot;http://thepiratebay.org/search/{QUERY}/0/7/0&quot;,
  icon: &quot;http://www.thepiratebay.org/favicon.ico&quot;,
  description: &quot;Searches The Pirate Bay for the given words.&quot;,
  preview: function(pBlock, directObj) {
    if (directObj.text)
      pBlock.innerHtml = &quot;Searches The Pirate Bay for &quot; + directObj.text;
    else
      pBlock.innerHTML = &quot;Searches The Pirate Bay for the given words.&quot;;
  }
});



Nic skomplikowanego, funkcjonalność podobna jak w searchbarze, a cieszy :). A teraz bardziej skomplikowany przykład - słownik korzystający z Megaslownik.pl (angielsko/niemiecko/rosyjsko/włosko/hiszpańsko/francusko-polski) - komenda slownik :). W konsoli wyświetla się podstawowe tłumaczenie wpisanego lub zaznaczonego słowa, z możliwością wyboru (i autosugestiami) języka, a po wciśnięciu enter przenosi do pełnej definicji.







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &quot;Courier New&quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }

String.prototype.trim = function() {
   return this.replace(/^\s+|\s+$/g,&quot;&quot;);
}

var noun_type_shortlang = new CmdUtils.NounType( &quot;język&quot;, [&quot;en&quot;, &quot;de&quot;, &quot;ru&quot;, &quot;it&quot;, &quot;es&quot;, &quot;fr&quot;] );

CmdUtils.CreateCommand({
  name: &quot;slownik&quot;,
  icon: &quot;http://www.megaslownik.pl/favicon.ico&quot;,
  
  longlangs: {en:&quot;angielsko&quot;, de:&quot;niemiecko&quot;, ru:&quot;rosyjsko&quot;, it:&quot;wlosko&quot;, es:&quot;hiszpansko&quot;, fr:&quot;francusko&quot;},
  
  takes: {&quot;slowo&quot;: noun_arb_text},
  modifiers: {z: noun_type_shortlang},
  getlang: function(mods){
    if (mods.z.text != null &amp;&amp; mods.z.text.length &gt; 0)
      return mods.z.text;
    return &quot;en&quot;;
  },

  preview: function( pbase, word, mods ) {
    word.text = word.text.trim();
    var jezyk = this.getlang(mods);
    if (word.text.length == 0){
      pbase.innerHTML = &quot;Tłumacz z &quot; + jezyk + &quot; na pl.&quot;;
      return;
    }    
    var baseUrl = &quot;http://megaslownik.pl/slownik.php&quot;;
    var params = {ajaxSearch: word.text, lang: jezyk};
    jQuery.get( baseUrl, params, function( trans ) {
      if (trans.length&gt;0)
        pbase.innerHTML = trans;
      else
        pbase.innerHTML = &quot;Brak wyników. Pamiętaj, że możesz przetłumaczyć conajwyżej 1 słowo/wyrażenie na raz&quot;;
    });
  },
  
  execute: function (word, mods){
    var jezyk = this.getlang(mods);
    Utils.openUrlInBrowser(&quot;http://megaslownik.pl/slownik/&quot;+this.longlangs[jezyk]+&quot;_polski/&quot;+word.text);
  }

});


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &quot;Courier New&quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }

I już :D. O wiele szybsze niż wpisywanie tr this to po (translate this to polish).

Ubiquity z pewnością jest czymś nowym i choć jak na razie pełne rozmaitych bugów rokuje nadzieje na przyszłość. Szkoda jedynie, że to wciąż tylko JavaScript. Baardzo bakuje interakcji z desktopem.

P.S. Obydwa skrypty można wkleić do edytora lub zainstalować stąd i stąd.</description><pubDate>Thu, 04 Sep 2008 19:58:17 +0200</pubDate><guid>http://blog.pyetras.com/id/414319/</guid><category>Random</category></item><item><title>bez-tytulu</title><link>http://blog.pyetras.com/id/411322/</link><description>
  


W tym roku wakacyjna nuda jeszcze mniej konstruktywna niż zazwyczaj :P
</description><pubDate>Thu, 14 Aug 2008 15:14:46 +0200</pubDate><guid>http://blog.pyetras.com/id/411322/</guid><category>Random</category></item><item><title>Metajogger, czyli pseudoimplementacja usług XML-RPC dla Joggera</title><link>http://blog.pyetras.com/id/403754/</link><description>A konkretniej MetaWeblog API.  Po co, jak, dlaczego?  MetaWeblog to interfejs pozwalający na pisanie i edycję bloga poprzez korzstanie z usług sieciowych. Pozwala to przede wszystkim wykorzystać do blogowania zewnętrzne narzędzia, wygodniejsze i bardziej funkcjonalne niż notatnik i formularz na stronie. Ponieważ brak jakiegokolwiek API dla Joggera jest dość niewygodny (</description><pubDate>Fri, 27 Jun 2008 13:13:33 +0200</pubDate><guid>http://blog.pyetras.com/id/403754/</guid><category>Techblog</category></item><item><title>Wygląda znajomo? ;)</title><link>http://blog.pyetras.com/id/402592/</link><description>  Więcej na BigPicture</description><pubDate>Fri, 20 Jun 2008 23:44:57 +0200</pubDate><guid>http://blog.pyetras.com/id/402592/</guid><category>Random</category></item><item><title>Start.</title><link>http://blog.pyetras.com/id/402267/</link><description>Po kilku dniach testowania możliwości Joggera i wygrywania kolejnych wersji layouta nachodzi człowieka myśl, że nie warto już dłużej zwlekać – czas na oficjalne Hello do blogowej społeczności.  O mnie  Znany generalnie jako Pietras, tutaj z braku laku musi zostać Pyetras. Programista (C#, C++, ostatnio trochę Pythona), Licealista, Bydgoszczanin. Od kompa odrywa mnie (rzadko bo rzadko) baaaardzo amatorskie kręcenie i montowanie filmików, książki i ogólnie rozumiane sporty natury deskowo – wodnej/śnieżnej (w moim wykonaniu nazywać ich po imieniu nie wypada :P). Nad nadzwyczaj zajmującą resztą mojej osobowości rozwodzić się w tej chwili nie będę, jako że w obliczu zamierzonej tematyki tegoż bloga schodzi ona na plan drugi.    O blogu  Bloga zakładałem z myślą o tematach techowych i okazyjnych przebłyskach wylewności. Co z tego wyniknie – pewnie czas pokaże.</description><pubDate>Wed, 18 Jun 2008 23:15:18 +0200</pubDate><guid>http://blog.pyetras.com/id/402267/</guid><category>Random</category></item></channel></rss>
