12.14.08
Fotozabawa
Prosty sposób na podrasowanie kontrastu zdjęć, choćby do wywołania, przy pomocy GIMPa:
- Zduplikuj widoczną warstwę
- W dialogu “Layers” ustaw sposób komponowania na “Overlay”
- Dostosuj suwakiem siłę efektu zgodnie z potrzebą; łatwo porównać otrzymany efekt do zdjęcia oryginalnego po prostu ukrywając dodaną warstwę
Próbki poniżej (najpierw wersja oryginalna, druga po retuszu):


12.05.07
FOSDEM
Postanowiłem, jadę na FOSDEM (Free and Open Source Software Developer’s European Meeting), 23-24 lutego w Brukseli. Właśnie kupiłem bilety na różowy samolot. Wylot w piątek 22-go z Wawy (18:30, przylot 20:30), powrót też do Wawy (niedziala; 20:50, przylot 22:45). Cena przystępna, bo po zsumowaniu wszystkich tajemniczych opłat wyszło 218PLN w obie strony. Z czego powrót w niedzielę był prawie połowę droższy, niż lot piątkowy… Cóż, spędzenie tam dodatkowej nocy żeby wrócić taniej w poniedziałek akurat niweluje różnicę i jeszcze musiałbym dopłacić. Co prawda mam w okolicy jakiś dalekich znajomych, ale nie chcę zakładać nadmiernej gościnności.
Dobrze będzie wreszcie spotkać się z osobami znanymi do tej pory tylko z sieci.
11.17.07
Summer of Code 2007
(Wpis przeniesiony z Jabby, napisany dnia: 2007-04-17 14:31:51)
Podejrzewam, że chyba każda osoba związana jakoś ze środowiskiem Open Source słyszała o programie Summer of Code, prowadzonym przez Google. Idea jest prosta: projekty tworzące wolne (jak mowa, nie jak piwo) oprogramowanie zgłaszają się jako organizacje mentorujące. Następnie studenci (i tylko studenci) zgłaszają swoje propozycje projektów związanych z wolnym oprogramowaniem tworzonym przez wybrane organizacje, które chcą zrealizować w czasie letnich wakacji. Po tym następuje etap selekcji, w którym wybierane są najlepsze aplikacje i szczęśliwcy mogą przystąpić do pracy… finansowani przez Google.
Jak nietrudo zauważyć, każdy czerpie tu jakieś korzyści: studenci mają szansę zdobyć dużo doświadczenia i trochę zarobić, open-source’owe projekty mogą wykorzystać zdolnych ludzi na swoje potrzeby, a Google wzmacnia ruch wolnego oprogramowania (z którego samo przecież korzysta) i ma szansę wyłowić sobie przyszłych pracowników.
Piszę o tym dlatego, że mój projekt Interactive Wiki Maintenance with Jabber/XMPP został zaakceptowany przez ludzi z MoinMoin Wiki i będę rozwijał go do końca sierpnia. Muszę raportować wyniki swoich działań, co też będę robił tutaj, z konieczności głównie po angielsku. Mam nadzieję, że Was nie zanudzę, a ruch ściągnięty z zapowiadanej “Summer of Code 2007 Planet” pomoże Jabbie w dotarciu do szerszego grona potencjalnych blogerów.
Pół roku użytkowania
(Wpis przeniesiony z Jabby, napisany dnia: 2007-02-23 15:56:54)
W lutym mija pół roku od momentu, gdy w moje ręce wpadła wreszcie konsolka GP2X i mogę chyba sobie pozwolić na małe podsumowanie wrażeń z jej użytkowania w tym czasie, zainspirowane komentarzem do sierpniowego wpisu… Ogólnie: nie żałuję.
Dobre…
Konsolka spełniła moje najważniejsze oczekiwania: jest świetnym gadżetem, dzięki któremu można pobawić się ciekawym sprzętem z w pełni otwartym środowiskiem software’owym. Sprzęt, zbudowany na bazie zwykłych komponentów (producent praktycznie złożył ją z gotowych części), sprawuje się bardzo przyzwoicie pod względem wydajności – bez problemu działają takie gry jak Duke Nukem 3D, Quake (pierwsza część), Egoboo (dzięki implementacji OpenGL ES w oparciu o rdzeń ARM940T), czy komercyjnie dostępne na tę platformę Vektar oraz Payback. Interesujące mnie emulatory (NES, SNES) również nie sprawiają problemów.
Oprócz grania używam mojej GP2X również do rozrywki “multimedialnej” – głównie słuchania muzyki i oglądania filmów w pociągu/łóżku.
Pod tym względem nie mam większych zastrzeżeń – płynnie odtwarzają się filmy w dużych rozdzielczościach (wyjście TV robi pocieszne wrażenie), choć w trosce o żywotność baterii oraz miejsce na karcie SD warto je sobie przekompresować. Odtwarzacz do muzyki… dobrze odtwarza muzykę i chyba o to chodzi.
Z rzadka zdarza mi się też poczytać jakiegoś ebooka (w czystym tekście) oraz przeglądać zdjęcia – dostępne oprogramowanie nadaje się do tego idealnie. Co więcej, bardzo dobra jakość ekranu znacząco podnosi przyjemność czerpaną z rozrywki.

Oprócz tego miałem okazję zdobyć swoje pierwsze doświadczenia z programowaniem na “platformę wbudowaną” (choć to określenie trochę na wyrost w przypadku mini-komputera z Linuksem na pokładzie), przygotowaniem narzędzi do kompilacji skrośnej, ich wykorzystaniem i drobnymi problemami wynikającymi w trakcie tych prób. Ostatnio wróciłem też do grzebania przy “Wesnoth4GP2X”; o szczegółach napiszę przy okazji na sciniksie. Na zdjęciu powyżej widać konsolkę okablowaną semi-developersko: słuchawki, zasilanie i USB (sieć!); niestety ekran wyszedł na nim kiepsko.
… i złe strony
Jest też kilka detali, na których się zawiodłem. Jednym z nich jest zupełne odcięcie się producenta od społeczności używającej jego sprzętu – GPH w żaden sposób nie uczestniczy w życiu użytkowników i nie zapewnia żadnego (?) wsparcia programistom tworzącym oprogramowanie na ich sprzęt. Chyba tylko dzięki wyjątkowo utalentowanym hobbystom można w pełni cieszyć się możliwościami tej konsolki – łatwo można skompletować pełen toolchain oraz uzyskać względnie wygodny dostęp do wszelkich możliwości systemu. Sam producent skazuje potencjalnych developerów na czytanie referencyjnej dokumentacji chipsetu (jak to często bywa w takich przypadkach, nie wolnej od błędów) i bolesnego rzeźbienia w assemblerze.
W niezmierne zdziwienie wprawił mnie też fakt, że dioda sygnalizująca zużycie baterii nie jest obsługiwana przez system operacyjny, a jej zaświecenie w przypadku wyczerpującego się zasilania leży w gestii aplikacji użytkownika. Nie muszę chyba dodawać, że nie wszyscy programiści troszczą się o odczytywanie tajemniczych wskazań odstarczanych przez jądro. Sama żywotność baterii, ok. 4 godzin przy umiarkowanym użytkowaniu dwóch 2500mAh paluszków, nie imponuje.
Cyfrowy manipulator jest trochę zwodniczy – po płynnie wychylającym się kontrolerze człowiek spodziewa się intuicyjnie płynnego sterowania. Tymczasem trzeba wychylić go dość daleko, co w przypadku intensywnej gry często się nie udaje, a chwilowa utrata kontroli potrafi być frustrująca.
USB, oprócz problemów wspomnianych na sciniksie, jest powolne. Wygodę korzystania z FTP do manipulowania plikami skutecznie zabija prędkość połączenia (ok. 50-60kB/s).
W sumie jednak dobrze
Tak, jestem zadowolony. Mimo, że dostrzegam wady tej zabawki, to sporo się dzięki niej nauczyłem (i uczę). Nadal niezmiernie cieszy mnie otwartość – nikt nie próbuje ograniczyć moich możliwości uruchamiania dowolnych, wybranych przeze mnie programów (jak na, tfu tfu, Sony PSP). Dzięki temu mogę z GP2X robić wszystko to, co sobie wymarzyłem przed jej kupnem, a drobne problemy mimo wszystko nie psują radości. Zatem jeśli ktoś nie brzydzi się tym, że zabawa wiąże się też z pewną ilością grzebania i ceni sobie wolność – nadal polecam.
“Mam takie zabezpieczenia, że sam się ich boję”
(Wpis przeniesiony z Jabby, napisany dnia: 2006-09-05 12:01:36)
Sami tylko spójrzcie jakie “przemyślne” zabezpieczenia niektórym przychodzą do głowy:
12:00 [efnet] -!- End of /MOTD command.
12:00 [efnet] -!- Mode change [+i] for user grzyw
12:00 [efnet] -!- You are banned from this server- Temporary K-line 60 min. - Possible drone (random nick) (2006/9/5 11.55)
12:00 [efnet] -!- ERROR Closing Link: kolos.math.uni.lodz.pl (Temporary K-line 60 min. - Possible drone (random nick) (2006/9/5 11.55))
12:00 -!- Irssi: Connection lost to irc.efnet.org
Ja im dam “Random nick”!
‘Tell me what is C!?’
(Wpis przeniesiony z Jabby, napisany dnia: 2006-08-27 00:28:59)
Nagłe ożywienie jakie zapanowało po opublikowaniu przeze mnie wpisu Systemowa zagadka zachęciło mnie do napisania przed snem kolejnej, tym razem poświęconej programowaniu w C. Ta również była już przeze mnie poruszana w kręgu znajomych i powstało wiele alternatywnych, często zaskakujących rozwiązań. Jeśli już się tym bawiłeś – nie psuj zabawy innym zbyt szybką odpowiedzią!
Problem jest z pozoru prosty: należy napisać program w C, który wyświetli liczbę “10″.
A teraz ograniczenia. Jedyną funkcją jakiej można użyć jest printf z biblioteki standardowej. W programie można użyć tylko jednego literału (z wyjątkiem stringu formatującego w printfie, przy czym dozwolone są w nim tylko parametry formatujące, t.j. n.p. “%d”), którego wartość jest inna niż 10, i nie wolno deklarować ani definiować żadnych zmiennych lub stałych.
Kto tym razem będzie pierwszy?
Pomysłowa Pomarańcza
(Wpis przeniesiony z Jabby, napisany dnia: 2006-08-27 00:09:33)
Miałem okazję przed chwilą wysłać SMSa z MultiBoxa na orange.pl i tak się niefortunnie złożyło, że użyłem w nim symbolu “$”, by skrótowo określić, że mam na myśli pieniądze. Jakie było moje zdziwienie, gdy zerknąwszy do historii wysłanych wiadomości ujrzałem w treści nie “$”, a “USD”.
Systemowa zagadka
(Wpis przeniesiony z Jabby, napisany dnia: 2006-08-26 22:19:38)
Zainspirowany ostatnimi dwoma wpisami (tu i tu) na jabbie SebanLog, które poświęcone były bardziej zaawansowanym aspektom Linuksa (czy systemów *niksowych w ogóle) postanowiłem przedstawić taki oto autentyczny problem-zagadkę, którego rozwiązanie mam nadzieję ktoś sprytny poda w komentarzu.
Rzecz wydarzyła się na początku roku, gdy mój znajomy grzebiąc coś w systemie zamiast zrobić sobie kopię ważnych danych, przeniósł je. Owe ważne dane to katalogi /bin, /sbin oraz /lib, które wylądowały w nowym katalogu /newroot, tworząc następującą hierarchię:
/newroot/bin /newroot/lib /newroot/sbin
Jakie było jego zdziwienie, gdy okazało się, że cofnięcie tego ruchu nie jest specjalnie łatwe. Dla przykładu:
host:/newroot/bin# ./cp --help -su: ./cp: Nie ma takiego pliku ani katalogu
Pytanie jest proste: jak uratować taki system mając dostęp jedynie do jednej działającej z prawami administratora powłoki, bez dostępu do sprzętu i możliwości restartu?
Tiny gui a paski stanu
(Wpis przeniesiony z Jabby, napisany dnia: 2006-08-18 01:54:47)
Jednym z bardziej rażących błędów graficznych, który miałem jak do tej pory okazję wyeliminować przy pracach nad trybem “tiny gui” w Battle for Wesnoth, były błędnie rysowane paski HP i XP pokazujące się obok jednostek. Jeszcze do niedawna ekran gry wyglądał np. tak:

Pomijam tu popsuty theme, bo przystosowana do pracy w rozdzielczości 320×240 wersja jest już od dość dawna, a chodzi mi raczej o paski stanu, które są bardzo, bardzo brzydkie. Problem udało mi się jednak usunąć nie zmieniając ani jednej linijki kodu w C++. Efekt jest zdecydowanie lepszy:

Otóż w czym rzecz: budowanie Wesnoth z włączoną opcją --enable-tinygui skryptu configure powoduje, że podczas kopiowania plików gry do katalogu docelowego pliki graficzne są automatycznie pomniejszane, by gra nie musiała “w locie” skalować grafik do mniejszej rozdzielczości. Rozwiązanie proste i skuteczne… z jednym wyjątkiem. Grzebiąc w kodzie odpowiedzialnym za wyświetlanie jednostek i pasków stanu trafiłem na taki komentarz:
// calculate_energy_bar returns incorrect results if the surface colors
// have changed (for example, due to bilinear interpolaion)
Funkcja calculate_energy_bar odpowiedzialna jest za obliczenie pozycji i rozmiarów pasków stanu. Robi to na podstawie pliku graficznego z kolorową kulką, która pojawia się nad jednostką, tak by narysowane zostały one dokładnie pod nią. Przesunięcie określa na podstawie piksela o predefiniowanym kolorze, szukając go punkt po punkcie na załadowanym obrazku. Co się jednak stanie, gdy takiego punktu nie znajdzie? To widać było na pierwszym zrzucie ekranu. W kodzie co prawda znajduje się odpowiednie zabezpieczenie, dzięki któremu zawsze brana jest pod uwagę grafika w oryginalnym rozmiarze (na wypadek gdyby w trakcie gry została zmieniona skala), ale nie działa ono, gdy skalowanie przeprowadzone zostało poza programem, a tak właśnie dzieje się podczas instalacji z opcją --enable-tinygui – zmiana rozmiaru grafiki powoduje, że potrzebny do prawidłowego działania punkt zostaje usunięty. I tak oto poprawienie błędu, który pozornie znajdował się w kodzie, sprowadziło się do zmiany jednej linijki w pliku Makefile.am:
- (cd $(top_srcdir) && find data/campaigns data/tutorial images images/terrain ( $(findfilterflags) -o -name '*.png' -print ) ) | while read p; do
+ (cd $(top_srcdir) && find data/campaigns data/tutorial images images/terrain ( $(findfilterflags) -o -name '*.png' -and -not -name 'bar-energy-unmoved.png' -print ) ) | while read p; do
Tiny gui – WIP
(Wpis przeniesiony z Jabby, napisany dnia: 2006-08-04 22:34:20)
Prace nad przystosowaniem interfejsu Battle for Wesnoth do działania w rozdzielczości 320×240 idą mi względnie sprawnie. Nieźle wygląda dialog wyboru kampanii:

oraz lobby do gry wieloosobowej:

Ekran zakładania gry był okropnie pracochłonny, ale daje się go już używać:

Jak widać z obu powyższych usunąłem możliwość wprowadzania tekstu: nie jest ona zbyt prosta do wykorzystania na urządzeniach przenośnych, a muszę walczyć praktycznie o każdy piksel wolnej przestrzeni. Nie wygląda to jeszcze zbyt estetycznie, ale zaczyna być funkcjonalne, a o to przede wszystkim mi chodzi. Na pewno przyda się dopieścić rozmiary fontów, choć nie wiem, czy uda się uzyskać odpowiedni kompromis między czytelnością, a używanym miejscem.