Posts

Ultra szybki JSON, czyli ujson

Image
Kilkanaście godzin temu natknąłem się na moduł  ujson , który jest napisany w czystym C i może pochwalić się niebywałą szybkością :) Mimo, iż na stronie modułu są przedstawione testy z trzema innymi popularnymi modułami, sam również postanowiłem to sprawdzić. Moduł  ujson porównałem ze standardowym modułem w pythonie, czyli  json . Dane testowe Pierwsze dane to obiekt, z którym możemy się najczęściej spotkać przy codziennej pracy z różnego rodzaju api, natomiast do drugich danych wpisałem po prostu to co przyszło mi do głowy ;) test_data1 = {'status': True, 'msg': 'Message'} test_data2 = [{'name': 'tomislater', 'age': 24, 'sex': 'male'}, 8461, True, False, 8923, 7162, 1, 6, 7, None, [[True, False], ['!', '?']], 'yeah'] Serializacja do formatu JSON Do porównania obu bibliotek stworzyłem cztery funkcję. Po dwie do każdej. def test_json_data1(): return json.dumps(test_data1) def test_u

Anki nie odtwarza plików wav

Ostatnio wraz ze zmianą laptopa zmieniłem również system operacyjny z Fedory na Ubuntu. Po zainstalowaniu Anki i zaimportowaniu swojego profilu mogłem zacząć naukę. Przeleciałem kilka decków, wszystko fajnie działa, odtwarza pliki mp3, pokazuje obrazki etc. Lecz na jednym z decków za cholerę nie chciał odtworzyć plików wav. Info przykładowego pliku: PerfectP(100).wav Codec: MPEG 1 Audio, Layer 3 (MP3) Channels: Mono Sample rate: 44100 Hz Bitrate: 63 kbps No dobra, pewnie nie mam potrzebnych kodeków. Poinstalowałem co trzeba, nadal nic... Co ciekawe w każdym programie do odtwarzania muzyki, pliki te działały. Czyli kodeki mam, to nie ich wina. To spróbuję dowiedzieć się coś o tym pliku przez soxa: >> soxi PerfectP\ \(100\).wav soxi FAIL formats: can't open input file `PerfectP (100).wav': WAV file encoding `MP3' is not supported Acha. Ciekawie się zaczyna. To może uda mi się go odtworzyć, próbuję: >> play PerfectP\ \(100\).wav play FAIL formats: c

Brak flagi xterm_clipboard w vimie pod ubuntu

Jeżeli pod Ubuntu zainstalowałeś vima poprzez sudo apt-get install vim  system zainstalował tobie tak naprawdę vim-tiny , który jest lekko okrojony. Np. nie ma ustawionej flagi xterm_clipboard , która bardzo się przydaje przy kopiowaniu. Możesz oczywiście skompilować vima z tą flagą albo wykonać polecenie sudo apt-get install vim-gnome lub vim-gtk , które zainstaluje rozszerzonego   vim 'a i zapewni ci między innymi ustawioną flagę xterm_clipboard . Nie musisz usuwać vim-tiny .

Krzaki w powerline

Jeżeli używasz powerline-bash czy vim-powerline i w konsoli masz krzaki . Tutaj znajdziesz rozwiązanie ;). Skopiuj czcionkę z której korzystasz do /usr/share/fonts/trutype i to wszystko. Osobiście polecam Source Code Pro lub Droid Sans Mono.

Kill Spiders 0.2.1

Miałem trochę wolnego czasu więc dodałem kilka rzeczy do repo. Dodałem bonusy polegające na tym, że gracz rzuca nie jedną, a dwiema lub trzema czaszkami jednocześnie. Im silniejszego pająka zabijesz tym większe prawdopodobieństwo, że otrzymasz bonus ;) Poprawiłem zapisywanie highscore, nie wiedzieć czemu gdy program wychodził z głównej pętli nie wykonywał zapisu do pliku :/ Zwiększyłem liczbę "specjalnych" pająków oraz zmieniłem liczbę czarnych czaszek które gracz otrzymuje za kolejny poziom z jednej na pięć. Na końcu jak zawsze lekka refaktoryzacja kodu ;) Chętnych zapraszam tutaj: kill_spiders Grę odpalasz komendą: python start_game.py

Anki - zapamiętuj łatwiej!

Anki to program, oparty trochę na zasadzie fiszek. Czyli przykładowo, masz kartkę na której z jednej strony jest słowo w języku obcym, a z drugiej strony to samo słowo przetłumaczone na Twój ojczysty język. Idea programu jest łatwa, częściej wyświetlane są słowa, które częściej zapominasz, a rzadziej wyświetlane te, które pamiętasz bardzo dobrze. Oczywiście to Ty decydujesz o tym z jaką częstotliwością program ma Ci przypominać o danej frazie. Ciekawym dodatkiem jest możliwość umieszczania obrazków, dźwięków, wideo oraz coś jak LaTeX , dzięki czemu o wiele lepiej zapamiętasz dane zagadnienie. Anki pozwala dodawać więcej niż tylko jedno słowo/zdanie ;) Można używać go do prze najróżniejszych celów. Kogo nie spytałem z osób, które go używają, to prawie każdy używał go jeszcze do kilku innych rzeczy oprócz zapamiętywania słówek, np. nauka komend unixowych nauka komend gita czy mercuriala zapamiętywanie stolic/państw przypominanie wzorów matematycznych :)) przypominanie haseł do

tzf.pyramid_routing

Fizyk przygotował paczkę , za pomocą której w wygodny sposób można wczytywać ścieżki we frameworku Pyramid ;). Instalacja przez pip: pip install tzf.pyramid_routing Github: git clone https://github.com/fizyk/pyramid_routing.git cd pyramid_routing python setup.py install Dodawanie ścieżek Załóżmy, że tworzysz jakąś prostą appkę, gdzie za pomocą urla, chcesz zobaczyć profil jakiegoś użytkownika, statystyki (ogólne, jak i dla każdego usera z osobna) oraz prosty blog. Link do appki to: http://localhost:6543. Struktura appki: /my_app lib/ routing/ __init__.py blog.py user.py views/ __init__.py __init__.py development.ini W pliku __init__.py aplikacji umieszczasz: config.include('tzf.pyramid_routing') W pliku konfiguracyjnym np. w development.ini  ustawiasz coś na wzór: routing_package = my_app.lib.routing gdzie my_app  to nazwa aplikacji, a reszta to ścieżka do katalogu, gdzie będzie cały Twój routing. W  katalogu  routing,  t

RandomWords 0.1.6

Wprowadziłem nową funkcjonalność do paczki RandomWords . Można generować randomowe maile. Przydatne przy wypełnianiu testowej bazy danych ;) Przykład użycia: >>> from random_words import RandomEmails >>> rand_mails = RandomEmails() >>> rand_mails.randomMail() 'ernest@mail2java.com' >>> rand_mails.randomMails() ['annmarie@mail2xox.com'] >>> rand_mails.randomMails(15) ['patrice@keko.com.ar', 'conor@mail2atom.com', 'vihan@mail2carolyn.com', 'felicia@looksmart.com.au', 'quinlan@accessgcc.com', 'aimee@china.net.vg', 'kate@mail2christmas.com', 'geoffrey@frommiami.com', 'lillie@comic.com', 'trinity@nagpal.net', 'bennett@webmail.co.za', 'jesse@chaiyomail.com', 'chase@iespana.es', 'mya@ijustdontcare.com', 'ramona@uole.com'] Paczka dostępna na githubie jak i na pypi .

powerline-bash

Image
(Uwaga, zmieniła się nazwa repo powerline-bash, po więcej zapraszam tutaj ) Używasz vima? A używasz w nim  vim-powerline ? Jeśli tak, to czemu nie wstawić sobie powerline do konsoli? Używam tego od pewnego czasu i muszę przyznać, że jest bardzo ciekawym dodatkiem. W czym mi to tak naprawdę pomaga oprócz tego, że widzę aktualną gałąź na której pracuję? Jeżeli zmienię coś w którymś z plików, zmieni się również kolor gałęzi: To samo stanie się, jeżeli pójdzie coś nie tak przy wykonywanych operacjach na repo. Jeśli dodasz plik, który nie jest śledzony przez gita pojawi się "+": Gdy ścieżka do katalogu robi się zbyt długa, powerline zostaje przycięty: I jedna z ciekawszych rzeczy; jeśli lokalne repo różni się od "zdalnego" (nie wiem jak najodpowiedniej to przetłumaczyć na polski) to zostanę o tym poinformowany: Co od razu mówi mi, że przy pull'u dostanę 5 commitów :) Informacje o tym jak podpiąć skrypt pod konsolę znajdziesz tutaj: powerl

Pykonik, PyWaw, PyCircle, PySilesia

Tak się zdarzyło, że mieszkam w Szczecinie, gdzie jest mała społeczność Pythonowców, przynajmniej ja tak to widzę. Ale jak to jest z resztą Polski? Im dalej na południe tym lepiej. W Poznaniu działa grupa PyCircle ; jeżeli jesteś z Warszawy to może Cię zaciekawić grupa PyWaw . Natomiast koledzy z Krakowa stworzyli Pykonika . Dodatkowo Kraków udostępnia stream swoich spotkań. Jest jeszcze Zabrze, które niedawno wystartowało z grupą PySilesia . Czy Szczecin będzie miał swojego PyPrykarza? Będę musiał nad tym niedługo pomyśleć. Jak ktoś chciałby pomóc to pisać :)

Kill Spiders 0.1.9

Image
Wrzuciłem nową wersję kill_spiders . Dodałem menu i highscore. Highscore jest przechowywane w pliku highscore.dat jako int, więc bez problemu sobie go możesz podmienić! :D W menu dodałem możliwość, od którego poziomu chcesz zacząć. Poniżej kilka screenów ;)

Programista python

Hej, potrzebujemy do zespołu pythonowca. Czasami coś trzeba będzie również popisać w JavaScript. Nie musisz super ogarniać, my Cię nauczymy :) Po więcej info najlepiej napisać mi na maila . Na start z tego co pamiętam jest zatrudnienie na trzy miesiące (okres próbny), a później dostajesz umowę o pracę, etc. Acha, miejsce Szczecin.

RandomWords 0.1.5

Jak wspomniałem we wcześniejszym wpisie , zapomniałem dodać generowanie przecinków do lorem ipsum. Dodałem to w tej poprawce i usunąłem możliwość wprowadzania maksymalnej ilości słów w zdaniu. Projekt i dokumentację znajdziesz jak zawsze na githubie lub na pypi .

RandomWords 0.1.4

Wrzuciłem właśnie nową wersję RandomWords . Dodałem generowanie lorem ipsum. Co prawda jest już w sieci moduł do pythona, który generuje lorem ipsum, ale w tym celu musi za każdym razem nawiązywać połączenie ze stroną lipsum , co może być nie wygodne w niektórych przypadkach. Przykładowy sposób użycia: >>> from random_words import LoremIpsum >>> li = LoremIpsum() >>> li.get_sentence() 'Commodo gubergren fringilla curabitur quam volutpatut.' >>> li.get_sentence(max_words=22) # random sample from 3 to 22 ;) 'Voluptua curae; facilisi mi auctormauris neque enim aliquam stet odio sedfusce porttitor magnis ultrices.' >>> li.get_sentences(max_words=5, sentences=3) 'Tortor mazim nobis ex. Luptatum assum rhoncus labore. Nequeetiam montes nibh.' >>> li.get_sentences_list(max_words=13, sentences=5) ['Torquent per duo aaenean accumsannulla magnapraesent sollicitudin eirmod duis lobortisetiam minim metusdonec.&

Konwerter Pandoc

Pandoc służy do konwertowania jednego typu dokumentu na drugi. Kiedy jest to przydatne? Na przykład wtedy, gdy piszesz dokumenty w języku Markdown , a potrzebujesz takie pliki komuś przesłać czy wstawić na stronę lub po prostu najzwyczajniej na świecie postanowiłeś przejść na dokumentowanie swojej pracy w innym języku. Nie będziesz przecież teraz tego wszystkiego przerabiał ręcznie ;) Pierwsze co należy zrobić to zainstalować Pandoc dla swojego systemu.  W fedorze zrobisz to komendą: sudo yum install pandoc Konwersja do pliku EPUB (ebook): pandoc -f markdown -t epub README.md -o docs/readme.epub Konwersja do pliku HTML: pandoc README.md -o docs/readme.html Konwersja do pliku HTML5: pandoc -S -5 README.md -o docs/readme.html Konwersja do pliku ODT : pandoc README.md -o docs/readme.odt Przy konwersji do pliku PDF  trzeba użyć innego polecenia, przynajmniej ja tak musiałem zrobić na Fedorze 16. Próbowałem poprzez pandoc , ale ciągle generował mi plik HTML... Jeśli dział

RandomWords 0.1.3

Wrzuciłem przed chwilą nową wersję RandomWords. Dodałem generowanie imion. Póki co nie jest ich za wiele bo nie całe 1.8k, ale za jakiś czas pewnie coś dorzucę ;). Przykład użycia: >>> from random_words import RandomNicknames >>> rn = RandomNicknames() >>> rn.random_nick() 'Fredrick' >>> rn.random_nick(letter='r', gender='f') 'Rene' >>> rn.random_nicks(letter='u', gender='f', count=4) ['Una', 'Uma', 'Ursula', 'Ulrica'] >>> rn.random_nicks(count=10) ['Kristy', 'Imani', 'Delbert', 'Brevyn', 'Jasmin', 'Genevieve', 'Clodagh', 'Graham', 'Sondra', 'Ed'] Moduł znajdziesz na githubie i na pypi .

RandomWords

Ostatnio potrzebne było mi wypełnić bazę testowymi danymi. Byle jakimi. Oczywiście pierwsze co to wszedłem na pierwszą lepszą stronę generującą lorem ipsum i jazda z ctrl+c, ctrl+v. Można, owszem, ale tylko wtedy gdy masz do wypełnienia mało komórek w bazie. Problem jest gdy tych komórek musisz wypełnić 100-1000. Metoda ctrl+c, ctrl+v nie jest wtedy fajna ;) Oczywiście od razu poszperałem po sieci w celu znalezienia jakiegoś ciekawego generatora słów, zdań, etc. Ale nic co spełniałoby moje oczekiwania nie znalazłem. No trudno, to zrobię swoje narzędzie. Główne założenia były takie: losowanie słowa z jakiegoś zakresu losowanie słowa zaczynającego się na pewną literę losowanie pewnej ilości słów i zwracanie ich w postaci listy losowanie pewnej ilości słów rozpoczynających się od pewnej litery Z racji tego, że chcę to wykorzystywać w różnych projektach stworzyłem paczkę  oraz udostępniłem to na githubie . Instalowanie: pip install RandomWords lub: git clone https://gi

Kill Spiders 0.1.8

Nie nie, dzisiaj bez żadnych funkcjonalności. Dokonałem tylko refaktoryzacji kodu. W najbliższym czasie pobawię się bibliotekami typu py2exe i zobaczymy jak to działa z pygame i czy serio śmiga pod windowsem ;) A póki co, grę (a właściwie to prototyp) odpala się za pomocą komendy: python start_game.py Repo: kill_spiders  

Kill Spiders 0.1.7

Pushnąłem właśnie nową wersję . Zmieniłem domyślną broń, którą była kość na białą czaszkę która ma "power 1", czyli pająk dostający taką czaszką straci 1hp. Dodałem dodatkową broń w postaci czarnej czaszki ("power 5", czyli pająk traci 5hp ;)). Na początku każdego poziomu gracz dostaje jedną czarną czaszkę. Czaszki się sumują, oprócz białych, których jest nieskończenie wiele. Dodałem również sprity dla hitowanych? spiderów. Po prostu lekko tryskają krwią. Zmieniło się również lekko sterowanie. Rzucanie białymi czaszkami znajduje się pod lewym ctrl , a rzucanie czarnymi czaszkami pod spacją . TODO: skakanie góra/dół menu highscore jakaś kolejna dodatkowa broń

Kill Spiders 0.1.6

Image
Pushnąłem właśnie nową wersję Kill Spiders na githuba. Dodałem sprity dla martwych pająków oraz polepszyłem troszkę GAME OVER. Teraz po zabiciu pająka widać, że pająk jest martwy :) Dodatkowo spada w dół, aby oczyścić ekran. Jeżeli gracz dojdzie do momentu GAME OVER, zostanie zapytany czy chce zacząć grę od nowa czy woli skończyć. W kolejnych wersjach widziałbym dodatkowe bronie, efekty (tzw. hity spiderów) oraz jakieś proste menu i wybór od którego poziomu gracz chce zacząć ;) Albo zrobię jakiś prosty MD5 z liczb i gracz będzie mógł sobie coś takiego wkleić. Dla mniej ogarniętych zawsze jakieś utrudnienie ;>

Kill Spiders 0.1.5

Wrzuciłem przed chwilą na githuba nową wersję Kill Spiders 0.1.5. Zmieniłem tło, bohatera ;), dodałem trochę pająków, a jednego nawet usunąłem! Dodałem też dźwięki gdy bohater rzuca bronią oraz gdy pająk nią obrywa. Jako BGM posłużył mi ten track . W kolejnej wersji dodam obrazki dla martwych pająków, jakiś dźwięk podczas umierania i może dodatkowe bronie dla bohatera. Ciekawe kiedy się ogarnę i stworzę menu oraz jakiś sensowniejszy GAME OVER . Ale nie napalam się zbytnio na to, chciałem zrobić prostą gierkę, dzięki której poznam podstawy pygame.

Kill spiders! (pygame)

Postanowiłem poznać trochę bardziej bibliotekę pygame . Pierwsze efekty można zobaczyć tutaj: kill_spiders . Póki co, nie skupiałem się na rzeczach typu ładne menu, efekty etc. Na dniach powinienem coś dorobić. P.S. Głos pod czarownicę zaoferowała już moja dziewczyna :)

Pamięć 0.5

Opublikowałem nową wersję skryptu Pamięć . Dostępna jest nowa metoda "Zakładki alfabetyczne". Dodałem kilkadziesiąt nowych słów oraz przeprowadziłem refaktoryzację kodu. Zapraszam do korzystania.

Mała poprawka w projekcie Pamiec 0.4.2

Wprawdzie nie musiałem o tym robić jakiegokolwiek wpisu bo nie wprowadziłem, żadnej nowej funkcjonalności (mała poprawka przy odczytywaniu/zapisywaniu pliku ze słowami), lecz od kilku dni studiuję framework Tornado i napisałem prostą aplikację wyświetlająca randomowe liczby o zadanej przez użytkownika długości (to samo jest w projekcie Pamiec) lecz poprzez Google App Engine. Więc nie trzeba nic ściągać. Wystarczy, że wejdziesz na stronę aplikacji i wybierzesz za pomocą formularza to co chcesz uzyskać. Ćwicz pamięć krótkotrwałą! Link do nowej wersji projektu Pamiec tutaj . A ten link poprowadzi Cię do strony gdzie testuję skrypty we framework'u Tornado . Wybacz za brak jakiejkolwiek oprawy graficznej na stronie, lecz nie mam na to czasu. Najważniejsze, że działa.

Pamięć 0.4! Na nowy rok.

Image
Dodałem małą aczkolwiek przydatną funkcjonalność do programu. Za pomocą komendy python pamiec.py <liczbaIlosc> <liczbaDlugosc>  program generuje podaną ilość liczb o zadanej długości. Przykładowo po wykonaniu komendy python pamiec.py 10 7  program wyświetli 10 liczb z których każda będzie 7 cyfrowa. Ustaliłem, iż zakres cyfr w liczbie będzie wynosił od 3 do 9 cyfr. Tyle najczęściej wystarcza do trenowania pamięci krótkotrwałej. Nowa wersja dostępna oczywiście pod tym adresem. Screen jak to wygląda poniżej: