pakiety debug w sabayonie

gdb icon, created for the Open Icon Library

Od pewnego czasu staram się lepiej zintegrować Pythona z gdb. Jednym z kroków do osiągnięcia tego była instalacja Pythona razem z symbolami żeby gdb pokazywał trochę bardziej czytelne informacje. Dosyć prosta sprawa jak się okazało.  Co to za ryba? Ta ryba to maskotka gdb. Paskudna jak diabli, nie mam pojęcia skąd się wzięła ani kto ją nasmarował. No i dlaczego ryba? Ale wracam do sprawy pakietów.

Sabayon opiera się na Gentoo, które posiada funkcję splitdebug opisaną na wiki (How to get meaningful backtraces in Gentoo). Skoro tam to mają to Sabayon również powinien to mieć… i owszem. Wystarczy przestawić flagę splitdebug w pliku /etc/entropy/client.conf na enabled. Następnie w pliku /etc/entropy/packages/package.splitdebug ustawia się dla których pakietów instaluje symbole. Jak ma wyglądać plik można zobaczyć zaglądając do /etc/entropy/packages/package.splitdebug.example. Całe szczęście, że wprowadzono możliwość wybrania pakietów. Jeszcze w zeszłym roku ta flaga działała dla wszystkich pakietów jakie instalowane były w systemie (https://bugs.sabayon.org/show_bug.cgi?id=2712), co było strasznym marnotrawstwem.
Enhanced by Zemanta
Kategoria linux, programowanie | Leave a comment

rolling distro

Czy ktoś jeszcze używa dystrybucji o standardowym modelu wydań?
Tak, mnóstwo nieświadomych ludzi.
Jeśli ktoś ma czasu w nadmiarze i lubi co pół roku powalczyć z systemem to niech oszczędzi czasu i nie czyta a ten zachowany czas wykorzysta na stawianie Xów po aktualizacji wersji dystrybucji.
Continue reading »

Kategoria linux | Leave a comment

*args, args i pdb

Ludziom którym się to przydarzyło w moment uchwycą o co chodzi czytając tytuł. Pdb ma duże możliwości, tak wiem, że zmusza ludzi do nadmiernego klepania ale jest bardzo uniwersalny. Nie wiem dlaczego jedna z wewnętrznych komend pdb to „args”, trochę to może skomplikować sprawę jeśli nie zdajesz sobie z tego sprawy. Oto co dostaniesz jeśli wpiszesz „args” w pdb.

def foo(*args, **kwargs):
    import pdb; pdb.set_trace()
    print args

if __name__ == "__main__":
    foo('argument 1', 'argument 2', 'argument 3')

(Pdb) args
args = ('argument 1', 'argument 2', 'argument 3')
kwargs = {}
(Pdb) p args
('argument 1', 'argument 2', 'argument 3')

Ja spodziewałem się czegoś innego a mianowicie tylko i wyłącznie krotki (tuple) z argumentami. Dopiero po pewnym czasie kiedy w trójkę gapiliśmy się na to kumpel zrozumiał gdzie jest problem. Wystarczy w pdb wpisać „h” i zerknąć na listę komend, gdzie znajdzie się args. Pdb najzwyczajniej w świecie wywołuje swoją wewnętrzną komendę zamiast wyświetlić to co znajduje się w args. Dlaczego to zostało tak zrobione? Właściwie powinienem zadać pytanie, dlaczego *args jest tak lansowane? Co prawda takie zachowanie będzie zagadką tylko raz ale komuś może zająć dużo czasu odkrycie, że to nie jest błąd.
Aby tego uniknąć można zamiast *args użyć innej nazwy ale tak już się przyjęło i gdzie nie spojrzę na kod to widzę *args a nie *params. Dobrze też uważać i nie tworzyć sobie w pdb zmiennych, które nazywają się tak jak komendy debuggera. Należy wystrzegać się zwłaszcza „c” lub „q”, ale to też jednorazowe pomyłki.
A tak w ogóle to:

:W0142: *Used * or ** magic*
Used when a function or method is called using `*args` or `**kwargs` to dispatch arguments.
This doesn’t improve readability and should be used with care.

Kategoria programowanie, python | Leave a comment

Szybkie stringi 2

Po lekkim szoku wywołanym odkryciem jak się zachowuje Python przy składaniu stringów postanowiłem sprawdzić
jak inne wersje Pythona sobie radzą. Przetestowałem Pythona 3.2 oraz PyPy 1.7-r2 i 1.8-r1. Kod pozostał ten sam jak w pierwszej części (oprócz instrukcji print, którą musiałem dostosować do Pythona 3.2), do Pythona 3.2 dołożyłem składanie stringów przy użyciu format().
Continue reading »

Kategoria python | 2 Comments

PyCon US 2012

Tegoroczny PyCon US 2012 dobiega końca. Wykłady już się zakończyły, obecnie piszą kod. Ale nie o tym chciałem wspomnieć. Do tej pory nie pojawił się jakiś oficjalny kanał, nie ma również wzmianki o nagraniach konferencji na stronie PyCon`u. Ale ktoś jednak publikował cały czas na youtube, wystarczy kliknąć aby zobaczyć listę nagrań. Najlepiej jednak zerknąć na agendę konferencji a potem przeszukać kanał użytkownika NextDayVideo, wygląda jakby mieli wszystko.
Tytuł mógłby sugerować, że byłem na konferencji ale niestety nie.

Kategoria PyCon, python | Leave a comment

O szybkich stringach w pythonie

Pewnego dnia patrząc na kod zacząłem się zastanawiać naleciałości jakiego języka wyglądają tak:

text_var_one = 'I am text'
int_var_two = 100
str_variable = 'Some text is written ' + text_var_one + \
               ', next some number is ' + str(int_var_two)

Dosyć nieczytelne w wypadku długich łańcuchów i wolniejsze wg. mnie niż

text_var_one = 'I am text'
int_var_two = 100
str_variable = 'Some text is written %s, next some number is %d' % \
               (text_var_one, int_var_two)

Nie wiem, skąd u mnie takie przeświadczenie bo po sprawdzeniu okazało się, że druga konstrukcja (ta bardziej pro) jest wolniejsza i to znacznie. Jeśli chcesz wiedzieć dlaczego to czytaj dalej.
Continue reading »

Kategoria python | 2 Comments

Py4A czyli piszemy aplikację na androida.

Jak obiecałem jest to krótki opis w jaki sposób zmajstrować aplikację z prostym GUI napisaną w pythonie na androida. Py4A ma wiele funkcji ale niestety brakuje mu dostępu do podstawowych funkcji do tworzenia interfejsów dla androida. Konieczne jest posiłkowanie się WebView czyli htmlem oraz javascriptem. Jeśli nadal jesteś chętny to czytaj dalej.
Continue reading »

Kategoria android, python | 8 Comments

Py4A – Python w Androidzie

A więc kupiłeś telefon z androidem. Pierwsze dni byłeś ostrożny, tylko instalacja aplikacji i ustawianie telefonu. A potem rootujesz telefon i pierwsze mody. Po paru modach zaczyna się robić nudno trochę bo ile można brać a nic nie dawać w zamian. Znasz pythona i postanawiasz stworzyć coś swojego na telefon. I w tym miejscu przydaje się ten krótki artykuł.
Continue reading »

Kategoria android, programowanie, python | Leave a comment

Fedora 15

Dzisiaj premiera wydania numer 15 o nazwie Lovelock. Niecierpliwi (w tym ja) mają już zainstalowany system od paru tygodni. Poniżej lista niektórych rzeczy uwzględnionych w nowej wersji:

  • Gnome 3
  • rpm 4.9
  • systemd
  • gdb 7.3
  • gcc 4.6

Fedorą można pobrać stąd, mam taką nadzieję, że link nadal będzie działał pomimo iż publikuję go przed wydaniem to nie powinien się zmienić.

Kategoria fedora | 1 Comment

Przedszkole w edytorze

Formatowanie kodu jest ważne. To jest fakt. Ostatnio zetknąłem się z ciekawymi próbami sprawienia aby kod był bardziej czytelny, niestety nie udało mi się opisać tego przed moim znajomym. Polecam lekturę pod którą podpisuję się obiema rękami. Ze swojej strony pragnę dodać tylko bardzo „ciekawy” sposób definiowania zmiennych albo słowników. Za pewne można użyć go w innych przypadkach ale nie mam zamiaru marnować czasu na wymyślanie takich bzdur.
Continue reading »

Kategoria programowanie, python | Leave a comment

Swedish Greys - a WordPress theme from Nordic Themepark.

Performance Optimization WordPress Plugins by W3 EDGE