Wyjście = format + ujście

2007-08-19 11:58

Dla odmiany zająłem się ostatnio czymś nieco prostszym niż GUI, a mianowicie systemem logującym. To zdecydowanie niezbędne narzędzie, które docenia się zwłaszcza wtedy, kiedy coś innego psuje. Jak dotąd aczkolwiek nic poważnego nie zdążyło się jeszcze, ale w programowaniu jest to, jak wiadomo, tylko kwestią czasu ;)

Do logowania istnieje mnóstwo podejść, które różnią się głównie tym, gdzie i jak zapisujemy nasze informacje. Bo jeśli o to, co mamy logować, to odpowiedź jest prosta: wszystko albo jak najwięcej.
Dość obszerny przegląd możliwych wyjść loggera przedstawił TeMPOraL w jednej swoich notek. Jakkolwiek długa ta lista by nie była, pewne jest jedno: na pewno nie może być ona zapisana “na sztywno” w kodzie głównej klasy systemu logującego. Same ‘wyjścia’ należy bowiem opakować w osobne klasy, wywodzące się ze wspólnej bazy i wykorzystać zalety polimorfizmu. W ten sposób można kierować komunikaty zarówno na konsolę, do zwykłego pliku tekstowego, jak i do funkcji OutputDebugString.

Pomyślałem jednak nad rozszerzeniem tego pomysłu, który wyraża się w tytułowym równaniu: wyjście = format + ujście. Postanowiłem oto podzielić wyjście logowania na dwie części:

  • format odpowiadający za wygląd pojedynczego wpisu. W zależności od rodzaju obiekt ten przerabia komunikat logowania na zwykły tekst, XHTML, XML albo inny, dowolnie wybrany format danych.
  • ujście (drain), zajmujące się zapisaniem sformatowanego komunikatu w określonym miejscu. Tym miejscem może być standardowe wyjście diagnostyczne (czyli zwykle konsola), lokalny plik czy nawet plik na zdalnym serwerze.

Schemat systemu logującego

Nie jest to oczywiście żadna rewolucja. Czasami też obie części muszą być do siebie ściśle dopasowane, aby osiągnąć pożądany efekt (np. wypisywanie kolorowych komunikatów w asynchronicznej konsoli Windows). Zwykle jednak można je zestawiać dowolnie i otrzymywać ciekawe rozwiązania. Najważniejsze, że tą dodatkową elastyczność da się osiągnąć małym kosztem.

Tags: , ,
Author: Xion, posted under Programming » Comments Off on Wyjście = format + ujście

Uparte menu kontekstowe

2007-08-18 14:36

Menu kontekstowe programu mIRCProgramy rezydujące w zasobniku systemowym (system tray) są zawsze wyposażone w menu kontekstowe. Zwykle pojawia się ono po kliknięciu prawym przyciskiem myszy na ikonkę aplikacji i zawiera najczęściej używane opcje programu – co czasem oznacza też “wszystkie opcje programu” :)
Czasami jednak to menu jest uparte i jeśli nie zdecydujemy się na wybranie żadnej pozycji, ono pozostaje otwarte nawet mimo tego, że już dawno zajęliśmy się czymś innym. Zupełnie jakby Windows “zagapił się” i przeoczył moment, gdy menu utraciło fokus (wtedy właśnie powinno było zniknąć). Bywa to o tyle denerwujące, że takie osierocone menu przykrywa wszystkie inne okna w systemie.

Niekiedy pomaga wtedy ponowne kliknięcie w ikonkę programu. Jeżeli jednak to nie działa, trzeba jakoś przywrócić feralnemu menu utracony fokus, aby mogło go ponownie stracić – i, miejmy nadzieję, zniknąć na dobre. Jak to zrobić bez uaktywniania żadnej pozycji menu? Są co najmniej dwa sposoby:

  • można kliknąć w separator, czyli poziomą linię oddzielającą od siebie niektóre opcje
  • można kliknąć prawym przyciskiem myszy w dowolne miejsce menu

Kiedy następnie klikniemy w jakiekolwiek miejsce poza menu, oporna lista powinna się w końcu schować.

Tags: , ,
Author: Xion, posted under Programming » Comments Off on Uparte menu kontekstowe

Poczucie misji

2007-08-17 20:36

Często na warsztatowym kanale IRC nie dzieje się nic ciekawego, ale czasem można usłyszeć tam coś interesująco. I czasem nawet kontrowersyjnego – jak choćby ta oto opinia:

[19:19:21] przy gamedevie brakuje poczucia misji
[19:19:29] to tak jakbym sprzedwal narkotyki dzieciom

Może jest ona nieco skrajna, ale to nie znaczy, że nie warto z nią polemizować. Jaka jest więc misja przemysłu wytwarzającego gry komputerowe?… W odpowiedzi na podobne wątpliwości lubimy zwykle sięgać do przykładu kinematografii – z tego porównania korzysta się na przykład wtedy, kiedy ktoś (po raz nie wiadomo który) podnosi kwestię nadmiernej brutalności gier.
Nie da się ukryć, że obecnie główną misją obu dziedzin twórczości jest dbanie o odpowiednio przyzwoity stan kont osób, które się nimi parają. W przemyśle filmowym jest domena hollywoodzkich superprodukcji, słynących z wtórności, powtarzalności, słabej strony fabularnej i przeładowaniem efektami specjalnymi. To nie przypadek, że dokładnie te same epitety możemy dopasować do wielu komercyjnych gier.

Jednocześnie mamy też tzw. kino niezależne, które celuje w nieco bardziej wyrafinowane gusta. Być może jego odpowiednikiem w przemyśle gier komputerowych są produkcje realizowane przez małe, czasem nawet nieprofesjonalne zespoły. Ich dzieła zwykle nie są nastawione na stronę techniczną – grafikę zapierającą krew żyłach i mrożącą dech w piersiach (;]) i superrealistyczne efekty dźwiękowe. Zamiast tego posiadają to, co bardzo rzadko przejawia się w komercyjnych grach – oryginalność.

Screen z gry Aquaria, jednego z laureatów IGF 2007

Można jej zasmakować przeglądając chociażby zwycięskie produkcje z dorocznego Independent Games Festival. Mówienie o nich jako o “zwykłych casualach” byłoby według mnie grubym nietaktem ;P

Tags:
Author: Xion, posted under Games, Thoughts » 4 comments

Taphoo 1.1

2007-08-17 12:10

Naszła mnie dzisiaj nieodparta ochota, aby opublikować nową wersję jednej z bardziej udanych swoich produkcji – czyli Taphoo. Oczywiście nie oznacza, że potrafię pstryknąć palcami i w ten sposób wyczarować nową edycję gry. Po prostu planowałem to od jakiegoś czasu, lecz chciałem jeszcze dodać trochę więcej etapów i jakieś nowe funkcje.

Ostatecznie skończyło się na 10 nowych poziomach – zatem łącznie jest ich teraz 60. I na pewno nie są już one takie proste jak poprzednie ;] Wystarczy rzucić okiem choćby na ten:

Taphoo - etap 59

Jeżeli jakimś cudem nie jest on dla ciebie odstraszający, to zapraszam do ściągnięcia nowej wersji :) Można ją zainstalować bezpośrednio na starej, w tym samym katalogu.

File: Taphoo  Taphoo (1.8 MiB, 6,199 downloads)

Tags:
Author: Xion, posted under Games, Website » 2 comments

Pewne usprawnienia

2007-08-17 7:53

Ostatnio zająłem się nieco stronką pod względem technicznym, czego efektem są trzy proste zmiany. Prawdopodobnie są to zmiany na lepsze :)

Pierwszą jest fakt, że w końcu działają tutaj tzw. permalinki. Wcześniej miałem z nimi pewne problemy, bo chociaż w WordPress mogą być one ustawione automatycznie, kłopotliwy okazał się jeden z pluginów. Ostatecznie skończyło się na tym, że musiałem nauczyć się obsługi apaczowego mod_rewrite i zrobić wszystko samodzielnie ;P
Duże logo RSSA cóż to takiego są te permalinki? Jest to sprytny mechanizm, która sprawia, że adresy poszczególnych elementów strony wyglądają o wiele ładniej. Przykładowo, niniejsza notka jest dostępna zarówno pod adresem http://xion.org.pl/?p=107, jak i http://xion.org.pl/2007/08/17/pewne-usprawnienia. Ten drugi adres jest naturalnie o wiele bardziej opisowy, a poza tym wyszukiwarki bardziej go lubią :)

Druga sprawa dotyczy kanału RSS, który został ‘usprawniony’ przy pomocy serwisu FeedBurner. Prawdę mówiąc nie mam bladego pojęcia, jaka wynika z tego korzyść praktyczna, ale widziałem tak potraktowane RSSy na wielu blogach, zatem pewnie coś w tym jest :) Na oko działa on jednak tak samo jak wcześniej.

Trzecia zmiana jest widoczna na pasku po prawej stronie. Ponieważ notek jest już sporo i przeglądanie starszych tylko poprzez archiwum miesięczne może być mało wygodne, dodałem jeszcze listę kategorii. Ten swego rodzaju spis treści pozwala przeglądać notki o wybranej tematyce.


Author: Xion, posted under Website » 2 comments

Sieciowa linia komend

2007-08-16 12:20

Kilka miesięcy temu odkryłem bardzo ciekawą i pomysłową usługę internetową. Można ją uznać za pewną formę wyszukiwarki ale w gruncie rzeczy potrafi ona znacznie więcej. Teoretycznie – niemal wszystko. Chodzi tu serwis o nazwie YubNub – internetowy wiersz poleceń

Ślimak YubNubaZ wyglądu strona przypomina wyszukiwarkę. W zajmującym centralne miejsce polu tekstowym nie wpisujemy jednak zapytania, tylko polecenie z ewentualnymi parametrami. Dostępnych komend jest mnóstwo i co ważniejsze, każdy może dodawać swoje własne. Ich wspólną cechą jest to, że opierają się na przekształceniu swoich parametrów na odpowiedni URL. I tak polecenie g test spowoduje przejście pod adres http://www.google.com/search?q=test – czyli wyszuka podaną frazę za pomocą Google. Mechanizm jest więc podobny do prefiksów wyszukiwania dostępnych w Internet Explorerze od wersji 5.
Cały ten kram byłby pewnie mało przydatny, gdyby za każdym razem należało ręcznie wchodzić na stronę YubNuba. Na szczęście powstało całe mnóstwo różnych wtyczek i osobnych programów, które można pobrać ze strony Installing YubNub. Osobiście używam wtyczki do domyślnej wyszukiwarki w Firefoksie i małego programiku YubNub Trip.

Poniżej zamieszczam listę kilkunastu wybranych komend. Część z nich sam wykorzystuję, a pozostałe są po prostu ciekawe :) Większe spisy są oczywiście dostępnie na stronie YubNuba.

  • Wyszukiwarki:
    • g zapytanie – Google
    • y zapytanie – Yahoo
    • brain pytanieBrainBoost: wyszukiwarka odpowiadająca na pytanie w języku naturalnym (przynajmniej w teorii ;))
    • lyric artysta lub tytuł – wyszukiwarka słów piosenek
    • thott zapytanieThottbot
  • Wiki i encyklopedie:
    • wp hasło – Wikipedia (EN)
    • wppl hasło – Wikipedia (PL)
    • wowwiki hasłoWoW Wiki
    • math hasłoMathWorld
  • Słowniki:
    • df słowo – definicje Google
    • dict słowo – słownik angielski dict.org
    • ud słowoUrban Dictionary, czyli słownik internetowego (i nie tylko) slangu
  • Dokumentacje:
    • msdn zapytanie – przeszukuje MSDN Library
    • rfc numer – wyświetla dokument RFC o podanym numerze
    • php funkcja – dokumentacja funkcji PHP
    • jd klasa – dokumentacja klas Javy
  • Inne:
    • rand (-min min -max max -num n) lub rand max – losuje n (domyślnie 1) liczb z zakresu [min; max)
    • split url, url, ... – wyświetla kilka stron w jednym oknie podzielonym na ramki
    • lynx url – pobiera ze strony sam HTML i wyświetla go w przeglądarce
    • ascii tekst – tworzy kilkanaście ASCII-artów z podanego tekstu
  • YubNub:
    • man polecenie – wyświetla opis polecenia YubNuba
    • ls (fraza) – wyświetla listę komend
    • create (nazwa) – tworzy nowe polecenie
    • url polecenie – podaje URL powstały w wyniku wykonania polecenia
    • gui polecenie – tworzy prostą stronę z GUI do wpisania parametrów polecenia
Tags:
Author: Xion, posted under Applications, Internet » 3 comments

Strzel fotkę ekranowi

2007-08-14 22:14

Wygląd programu ScreenUpKiedy programista grafiki i/lub gier nad czymś pracuje, pierwszym widocznym rezultatem powinny być oczywiście screeny. Sam najwyraźniej jestem wyjątkiem potwierdzającym tę regułę (;D), ale to nie znaczy, że nie potrafię docenić małego i zgrabnego programiku wspomagającego robienie zrzutów ekranu.

Takim programem jest ScreenUp autorstwa spaxa. Siedzi on sobie w zasobniku systemowym i przechwytuje wciśnięcia klawiszy PrintScreen i Alt+PrintScreen, buforując wykonane screeny. Można je potem obejrzeć w postaci miniaturek lub otworzyć w pełnej wersji.
Najciekawszą opcją jest aczkolwiek możliwość załadowania screena na zdalny serwer i otrzymania w zamian linku do niego w Schowku. Niestety, jedynym dostępnym sposobem jest wysyłka przez HTTP POST – brak obsługi FTP. Docelowy host musi mieć więc wsparcie dla jakiegoś systemu skryptów w rodzaju PHP czy ASP, który przetworzy takie żądanie na rzeczywisty plik na serwerze. Na szczęście domyślnie można w tym celu używać serwera autora programu, jeżeli oczywiście komuś nie przeszkadza fakt, że jego zrzuty hostuje ktoś inny ;P

Generalnie programik uważam za całkiem przydatny i to wcale nie dlatego, że jestem w nim wymieniony jako jeden z testerów ;]

Tags:
Author: Xion, posted under Applications » Comments Off on Strzel fotkę ekranowi
 


© 2022 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.