Vala-fan 0.1 (0)

Nie raz już wspominałem o Vala, języku który ma w dużej mierze zastąpić ANSI C przy pisaniu aplikacji dla GNOME. Jakiś czas temu wyszła wersja 0.7.4 i nie zapowiada się aby szybko pojawiła się 1.0. Nie przeszkadza to jednak w rozwijaniu nowych programów.

To czego brakowało mi zawsze w laptopie to sensowne zarządzanie szybkością pracy wiatraka. Nie lubię jak mi się smażą kolana, ale jeszcze bardziej przeszkadza mi hałas. Do tej pory jakoś sobie radziłem dzięki kilkunasto linijkowej aplikacji napisanej w ANSI C. Ponieważ daleko jej było do doskonałości, w sobotę postanowiłem ją poprawić, a w efekcie napisałem wszystko od nowa w Vala.

Dlaczego Vala?

Algorytm obsługi wiatraka jest banalnie prosty i polega na odczycie wartości z ...

Cscope (0)

Czytając kod który napisał ktoś inny, największym problemem jest podążanie za kolejnymi wywołaniami funkcji. Zdarza się też tak, że znam nazwę lub jej fragment i chcę znaleźć wszystkie odwołania. Jak sobie z tym poradzić? Do tej pory używałem grepa uruchamianego przez odpowiedni Vimowy plugin. Rozwiązanie sprawdza się dla projektów z niewielką ilością kodu. Gorzej jeśli na wynik trzeba czekać parę sekund, bo architektura Vima nie pozwala w tym czasie robić cokolwiek innego.

Konkurencyjnym rozwiązaniem jest ctags, który jakoś nie przypadł mi do gustu. Trafiłem jednak na narzędzie o nazwie cscope, które ponoć potrafi jeszcze więcej.

Instalacja

Miłą niespodzianką jest fakt, że aby Vim był w stanie korzystać z cscope, wystarczy skompilować go z flagą --enable-cscope.

Przygotowanie bazy

Aby móc skorzystać ...

Odzielne okno kompilacji w Vim (0)

Z racji tego, że posiadam macbooka oraz ostatnie dni poświęciłem między innymi na naukę ruby, w chwili słabości zainstalowałem 30 dniową wersję TextMate. Nie będę go oceniał, bo używałem go około 10 minut i kompletnie nie znam jego możliwości, jednak to co od razu rzuciło mi się w oczy to szablony lepsze niż SnippetsEmu. Nie wiem czemu, ale zapragnąłem też żeby podobnie jak w TextMate, to co piszę w Vim kompilowało się/uruchamiało w oddzielnym oknie, plus możliwość szybkiego wysłania wyniku na jakiś serwis nopaste.

Kompilacja/uruchamianie w osobnym oknie

Skrypt napisany został do używania z prawie każdym językiem. Testowany był jednak jedynie dla plików C i Pythona.

Cała moja konfiguracja Vima znajduje się teraz na github, jednak potrzebny będzie ...

GDB - przykład użycia (0)

Jako drugi projekt na zaliczenie przedmiotu Programowanie systemowe mam do napisania program przetwarzający dane z wybranego urządzenia. Ponieważ tak naprawdę chodzi o to, żeby nauczyć się programować z użyciem wątków, nie ważne jest skąd będą pochodziły. Jedyne warunki jakie program musi spełniać, to ciągła responsywność dla interfejsu użytkownika, nawet podczas wykonywania pomiarów. A ponieważ wszelkie dane od użytkownika najłatwiej pobiera się poprzez GUI, do realizacji programu użyłem biblioteki GTK+.

Pisząc w C zawsze obawiam się jednej rzeczy - Naruszenie ochrony pamięci . Informacja nie oznacza kompletnie nic, poza tym, ze to co napisałem nie działa. Prawie od samego początku, do programowania używałem Vim, więc nie uśmiechała mi się nauka jakiegoś graficznego IDE z debuggerem .

Niestety tym razem nie udało mi się samodzielnie ...

Niskopoziomowy kod w Pythonie dzięki ctypes (0)

Językiem w którym najchętniej piszę jest Python, ale od czasu do czasu lubię podłubać w czymś innym. Najlepiej w czymś stosunkowo niskopoziomowym, w pogoni za modną i szeroko pojętą wydajnością. Jestem jednak na tyle leniwy, że najchętniej używałbym tylko Pythona, stąd próby zrozumienia dialektu składniowych onanistów i biblioteki booat::python, oraz wiele godzin spędzonych na nauce C API.

C API jest całkiem fajne. Przyjemnie się w nim pisze rzeczy nieskomplikowane, jednak nie jest to coś, co szybko można napisać i od razu używać. No i niezbędna jest podstawowa wiedza, jak to wszystko działa.

ctypes

Co jakiś czas obijało mi się o uszy słowo ctypes. Zainteresowałem się tym jednak dopiero po przeczytaniu, że zarówno pyOpenGL jak i pyglet korzystają właśnie z ...

cmake (0)

To co zawsze odrzucało mnie od języków kompilowanych w stronę na przykład skryptowych to proces budowania. Wystarczy parę plików ze źródłami, zależności w postaci zewnętrznych bibliotek i tworzenie aplikacji staje się dla mnie koszmarem. Oczywiście że używałem Makefile , ale ich napisanie jest czasami równie trudne co modernizacja. Kompilując cudze aplikacje, zauważyć jednak można że nie wszyscy używają zwykłych Makefile , czy autotools. Postanowiłem więc przyjrzeć się bliżej waf i cmake.

Waf

Waf to napisany w Pythonie skrypt, którego używa się jak biblioteki. Z jego pomocą piszemy budowniczego aplikacji. Nie spodobał mi się jednak z dwóch powodów:

  • do działania wymaga Pythona, co może być absurdalnym wymogiem w przypadku bardzo małej aplikacji
  • proces budowania opisuje się jako zbiór funkcji Pythona. Wygląda to naprawdę ...
Hello World w GTK+ (1)

Moje ulubione języki programowania to Python i C. Obydwa są prostymi a zarazem potężnymi narzędziami. Podobna jest też filozofia tworzenia w nich kodu. No i obydwa są bardzo popularne.

C traktowałem do tej pory jako dobre narzędzie do przyśpieszenia krytycznych miejsc w kodzie Pythona, jednak ostatnio trochę się to zmieniło. Prawdziwym zaskoczeniem było dla mnie Python C API - w pełni obiektowy kod C! Tym którzy uważają, że w C nie da się programować obiektowo, polecam przeczytać chociaż fragment książki Object-Oriented programming with ANSI C.

GTK+

Już jako tako radzę sobie z pyGTK. A ponieważ lubię wiedzieć co dzieje się pod maską , zabrałem się za GTK+. Przeczytałem początek tutoriala i pierwszy raz nie miałem najmniejszego problemu ze zrozumieniem przykładów (sic!). Poza ...

Python C API (0)

Nie takie C API straszne

Jakiś czas temu, opisałem bardzo prosty przykład modułu Pythona napisanego przy użyciu boost::python. Według autorów, biblioteka pozwala na o wiele łatwiejsze pisanie modułów dla Pythona niż standardowe C API. Ja mimo wszystko postanowiłem poznać bibliotekę C aby samemu móc to ocenić.

Opisane poniżej przykłady, mimo że staram się jak najprzystępniej opisać każdą linijkę, nie powinny być traktowane jako tutorial jak pisać w C API . Są to jedynie proste przykłady, pokazujące jak taki kod może wyglądać. Jeśli chcesz dowiedzieć się czegoś więcej, przeczytaj odpowiednią dokumentację dostępną na stronie Pythona. Dodatkowo zakładam, że czytelnik zna podstawy Pythona i C.

Kompilacja

Przykłady zacznę od końca, czyli od kompilacji. Można to zrobić na co najmniej dwa sposoby. Pierwszy ...

Boost.Python (1)

C++ vs C

Podobnie jak z Ruby, tak i o C++ wyrobiłem sobie zdanie, zanim jeszcze poznałem ten język. Mówiąc poznałem, mam na myśli coś więcej niż znajomość składni, paru podstawowych funkcji i umiejętność napisania prostego programu. Dlaczego wcześniej wolałem pisać w C? Dlatego, że jest proste i większość programów których używam napisanych jest właśnie w nim. Od GTK+, CPythona, Vim, aż do małych aplikacji takich jak awesome, czy mutt. Odruchem było więc zlekceważenie C++. To był wielki błąd, który teraz szybko staram się nadrobić.

moduły dla Pythona

C

Gdy zaczynałem naukę Pythona, trochę rozczarowało mnie, że aplikacje w nim napisane są tak wolne w porównaniu z tymi w C. Zrozumiałem jednak, że wcale nie musi tak być. Wystarczy to ...

« 2 1 /1 0 »