Miniprogram #1

Z nudów w czasie przerwy obiadowej bodajże, w pracy napisałem małą aplikacyjkę bazującą na czymś, co krążyło kiedyś kiedyś w internecie. A były to czasy modemów 56k i łączy, na których nawet takiej prędkości nie dało się osiągnąć. Do ściągnięcia pliczek i źródła w jednym zipie. Tak samo, jak autor bloga, o którym wspominałem, będę wdzięczny za propozycje minigierek/programów w komentarzach.

Obecna aplikacja ma kilka małych efektów, które niestety w 10 minut nie zostały wychwycone, a teraz mi się już nie chce tego zmieniać, np:
- po wciśnięciu prawym da się najechać na “tak”
- wystarczy wcisnąć spację, domyśny focus
- problem z rozmiarem okna (nie wszystko się mieści) pod Vistą.


podwyżka

Posted on 29 January 2009
Under: Programming | 4 Comments »

Metafizyka w sosie curry z kaloryferem na wynos

Właśnie skończyłem projekt na PRI, więc przed snem jeszcze wrzucę małą rozmowę, którą popełniło trzech studentów informatyki, którzy powinni w tym czasie omawiać szczegóły spotkania w sprawie nauki na elektronikę.

Read the rest of this entry »

Posted on 24 January 2009
Under: Ogólne | 1 Comment »

Mała reorganizacja

Dziś tylko taki aspekt dotyczący kształtu strony, niewiele raczej o samym programowaniu.

Pierwsze primo - na stronie “o mnie” dodałem swoje CV, bo zawsze jestem otwarty na propozycje. Zarówno zatrudnienia, jak i jakiegoś małego zleconka typu projekt na zaliczenie czy cuś.

Drugie primo - dodałem podstronę z downloadem, by było łatwo znaleźć coś, nad czym pracowałem, lub pracuję gdy pojawią się projekty w trakcie:]

Terzio - już spoza spraw organizacyjnych, co by nie był to post zupełnie nie związany z programowaniem - zmieniłem IDE, którym się posługuję. Dotychczas był to Eclipse, ale z przyczyn braku dobrych bezpłatnych wtyczek do projektowania swingów w Javie < JDK6 przerzuciłem się na NetBeans. Nie miałem za bardzo jeszcze czasu przy nim przysiąść, więc nie wiem jeszcze jak to będzie, ale tak na szybko to…

zalety:
- graficzne projektowanie swingów
- regiony (wtyczka cofee-bytes w eclipse przestała być rozwijana)

wady:
- jeśli masz w projekcie kilka klas z metodą main, za każdym razem pyta się, którą uruchomić, zamiast uruchomić ostatnią lub aktualnie otwartą.
- zawsze uruchamia projekt bierząco ustawiony jako główny

Jak trochę się z nim zapoznam, podzielę się swoimi wrażeniami.

Po czwarte: miałem zrobić na ćwiczeniach z Algorytmów i Struktur Danych mały system RSA. Wykładowca prawdopodobnie nie przewidział, że w Javie klasa BigInteger będzie miała wszystkie potrzebne metody zaimplementowane, jak muliplikatywna odwrotność, największy wspólny dzielnik, czy potęgowanie modulo (Dostępne dopiero od wesji JDK6). Chwilowo mam jeszcze problem z generowaniem kodu i kluczy (w półtorej godziny się nie udało wykryć błędu), więc już nie w walce o punkty, ale dokończę to coś w wolnym czasie i zamieszczę wraz z kodami.

I wreszcie piąte: zastanawiam się również nad takim małym projektem, jaki prowadzi autor tego bloga w celach autoterapeutycznych, czyli co dwa tygodnie jakiś programik, gierka - pozwoli to może się odprężyć i sprawi że będę coś pisał nawet, gdy nie będę miał natchnienia na kontynuowanie rozpoczętych większych projektów. Ale to już zostawiam na po sesji.

Się okazuje, że jednak więcej w sumie znowu po fachu, tym bardziej szczęśliwy pozdrawiam i do następnego razu.

Posted on 14 January 2009
Under: Programming, Strona | No Comments »

Teza i antyteza

No i skończyło się niedawno 24 lata, czas na małe podsumowanie…

Podzielę się pewnym spostrzeżeniem, do jakiego doszedłem jakiś czas temu… Po dzisiejszej dyskusji z pewnym człowiekiem zdecydowałem się napisać to na blogu, może przyda się różnym osobom w podobnej sytuacji.

Otóż… Swego czasu podchodziłem do tej jakże szeroko rozumianej informatyki na zasadzie, że wszystko, czego będę potrzebował, będę umiał zrobić sam… strony www, programowanie w Java, C++, C#, Visual Basic, do tego narzędzia DTP, photoshop, corel… można generalnie tego mnożyć… Ostanio (jakieś pół roku temu) mnie olśniło - owszem, warto wiedzieć trochę z każdej dziedziny, by mieć świadomość, z czym ma się do czynienia, ale w ten sposób podchodząc do informatyki będzie się umiało wszystko na dość dobrym poziomie (większym, niż przeciętny śmiertelnik, również w światku informatycznym), ale w żadnej dziedzinie nie będzie się na tyle dobrym, by można było stwierdzić, że się coś osiągnęło.

Od pewnego czasu mimo, iż wiem co nieco o innych technologiach i na pewno przydaje mi się to w obecnej ścieżce rozwoju, swój nacisk kładę na Javę z kilku powodów, o czym za chwilę. Ważne jest, że mam już świadomość, że nie będę ogólnie mówiąc wziętym programistą, przy tym wybitnym grafikiem komputerowym (do tego to mi akurat jeszcze brakuje czegoś zwanego zmysłem estetycznym:]) i do tego super sprzętowcem na raz. Przestałem ciągnąć kilka srok za ogon i skupiłem się na czymś, co wydaje mi się mieć przyszłość, a przy tym sprawia mi dużą przyjemność i łatwo mi idzie uczenie się i odkrywanie nowych rzeczy.

Czemu Java? Hmm… z kilu powodów… bo jest ostatnio coraz bardziej popularna i zyskała już miano świetnego języka do pisania aplikacji biznesowych, na których prawdopodobnie definitywnie skupię swoje wysiłki. Co ponadto? C# przecież ma podobną składnię, podobne podejście do zarządzania pamięcią, a do tego można sobie przeładować (większość mówi przeciążyć, ale jest to pojęcie dla mnie kompletnie nielogiczne) operatory, zaimplementować niejawne konwersje typów… No więc… bo nie:] Nie zawsze to, co lepsze zyskuje swój słuszny aplauz, a ja chcę jednak mieć pracę:) Ponadto Java co by nie było jest dużo bardziej elastyczna pod względem systemów operacyjnych. Generalnie jeśli nie korzysta się z bibliotek specyficznych dla systemu, to można przenieść kod bezpośrednio pod Linuxa, czy MacOS i wszystko hula.

To tyle, teraz coś przeczącego faktowi, że skupiam się na Javie, a jednocześnie dowód na to, że przy podejściu “wszystko na raz” w niczym nie będzie się ekspertem, poniżej zamieszczam grafikę, jaką zrobiłem dla znajomych, aby pomóc im wystartować z ichnim blogiem:) Blog dostępny jest pod adresem www.boop-bravo.bloog.pl, jak również w linkach obok. Bloga gorąco polecam wszystkim, mimo że za wiele wspólnego z tematem mojego bloga nie ma:) A oto i efekt mojej pracy:

puiwppl

Posted on 9 January 2009
Under: Programming | 3 Comments »

Drag & Drop handler dla JDK 5.0

Ostatnio po napisaniu całego modułu DnD dla mojej aplikacji zorientowałem się, że nie mam zainstalowanego JDK5.0, na którego piszę aplikację, przez co mój eclipse nie poinformował mnie, że nie mam możliwości skorzystania z różnych klas jak np. w pełni z TransferHandler’a. No cóż… skutki niedouczenia, bywa.

Gdy wchłonąłem wiedzę na temat DnD w JDK5.0 stwierdziłem, że brakuje mi dość mocno czegoś, co zamykałoby cały moduł w sobie. Niestety w internetcie nic na ten temat nie znalazłem. Wszystko o technologii DnD dotyczyło wersji JDK6.0. Tak zrobiłem klasę DnDHandler, może się komuś przyda.

Klasa nie robi absolutnie nic, póki nie wzbogacimy jej o implementację metod drop i dragEnd. Zwróćcie również uwagę przy implementacji, skąd pobieracie informację o tranferowanym obiekcie - klasa włącza od razu obsługę drag&drop w obie strony.

Gwoli uzupełnienia - Thinking in Java - świetna pozycja na początek… chcecie rzeczywiście coś robić? Znowu seria Core się kłania (doceniłem ją za “C# i .NET”), tym razem “Core Java2: Techniki zaawansowane”. Nieoceniona pomoc przy budowie wyżej wspomnianej klasy.

A tutaj link do mojej biblioteki, między innymi z tą klasą - qbixlib
I dokumentacja biblioteki - javadoc

Posted on 21 November 2008
Under: Programming | No Comments »

Spojrzenie w przyszłość, cd.

Ostatnio dość leniwy okres w moim życiu. Od miesięcy ani linijki kodu. Część projektów zawieszonych, część wisi tylko dlatego, bo mi się nie chciało wziąć za programowanie. Na razie na pewno D&D Character Creator nie ujrzy światła dziennego. Usłyszałem, iż podobno istnieje już aplikacja spełniająca jego funkcje, więc na razie przchodzi na dalszy plan.

Natomiast jeśli chodzi o moje obecne działania. Wziąłem się za pisanie następnej wersji aplikacji, którą pisałem do własnego użytku w pracy. Nie zamieszczona ze względu na fakt, że jest całkowicie bezużyteczna na jakimkolwiek komputerze, który nie znajduje się u mnie w firmie. Teraz biorę się za wersję, która będzie działała, choć może nie będzie aż tak użyteczna, na dowolnym komputerze (przypuszczalnie tylko MS Windows). Ogólnie rzecz biorąc aplikacja ma służyć do masowego uruchamiania innych aplikacji i dodatkowo ma mieć swego rodzaju odmierzacz czasu (takie funkcje przynajmniej mogę zaimplementować bez dostępu do systemów charakterystycznych dla mojego miejsca pracy).

Czym natomiast zająłem się w miejsce pisania tej aplikacji? Otóż nabyłem drogą kupna książkę “Thinking in Java” wydanie IV autorstwa Bruce’a Eckela. Uważam, że książka jest naprawdę dobrze napisana. Sporo podstawowych informacji, ale również miejscami zachacza nie tylko o samą naukę programowania w tym języku, ale również pisze sporo o dobrych praktykach w programowaniu i pobieżnie o implementacji niektórych mechanizmów w Java Virtual Machine.

Na następny rzut idzie jeszcze tego samego autora Thinking in Patterns, a potem biorę się za naukę narzędzia, jakim jest JBoss. Właściwie jeszcze nic na jego temat nie wiem, a za naukę biorę się z przyczyn zawodowych. Jak tylko skończę, na pewno znów ruszę się ze swoimi projektami. Przy okazji jeśli znajdę ciekawe rozwiązania różnych problemów w czasie nauki, nie omieszkam się nimi podzielić. Tak więc tym czasem do następnego posta.

P.S.
Bardzo dużą część książek Bruce’a Eckela znajdziecie na stronie jego firmy Mindview. Zazwyczaj są to poprzednie wydania książek, które są obecnie w sprzedaży.

Posted on 4 October 2008
Under: Programming | No Comments »

Kostka Rubika

Mały programik zrobiony z nudów… Program jest zrobiony na bazie klasy, którą pisałem na zaliczenie w pierwszym semestrze studiów. Jest to prosta kostka Rubika, a przez to dużo trudniejsza do ułożenia, niż modele w 3D, które są jednak dość nudne do układania. W modelach 3D jesteś mimo wszystko myślami kilka ruchów do przodu i tylko sposób przesuwania klocków Cię spowalnia. Nad tą kostką trzeba pomyśleć, które elementy rzeczywiście przesunąć, by osiągnąć pożądany efekt. Jeśli dość masz kostek, których jedynym wyzwaniem jest czas, to jest to kostka dla Ciebie.
Program napisany jest w Javie, jeśli masz problemy z uruchomieniem jej (np. domyślnie otwiera się WinRAR), spróbuj uruchomić z wiersza poleceń, dopisując na początku “javaw -jar”.

Załączniki:
Kostka Rubika

Posted on 16 June 2008
Under: Programming | No Comments »

Generowanie haseł

Zawsze denerwowało mnie posiadanie różnych haseł do różnych systemów. Pewnego razu usłyszałem o pojęciu “system tworzenia haseł”, dzięki któremu można odtworzyć hasło do danego systemu, jeśli się go nie pamięta. W takiej sytuacji za wiadome trzeba przyjąć, iż część algorytmu to będzie nazwa systemu, strony internetowej, miejsca logowania… cokolwiek, co będzie tym czynnikiem, na którego podstawie będziemy budowali hasło, by w danym miejscu hasło było za każdym razem generowane takie samo. Długo myślałem nad algorytmem, który by wykorzystywał ciąg znaków, a jednocześnie by nie dało się na podstawie dwóch haseł określić trzeciego. Jednocześnie myślałem wówczas iż algorytm musi być na tyle prosty, by można było dokonać potrzebnych operacji w głowie.

W pewnym momencie przyjąłem, iż niestety przynajmniej przy obecnym stanie mojej wiedzy opracowanie takiego algorytmu jest niemożliwe. Miałem jednocześnie już w głowie kilka sposobów na generowanie haseł poprzez metody bardziej złożone, a przy tym bez posiadania konkretnych danych, wydaje mi się, że nie do złamania. W związku z czym zacząłem myśleć o aplikacji na telefon komórkowy, która raz skonfigurowana (i zabezpieczona JEDNYM hasłem) da nam hasło do każdego serwisu, nawet jeśli jeszcze nie istnieje.

Istota jest dosyć prosta, jako hasło bierzemy wycinek klucza md5 wskazanego ciągu, np. zawsze będzie to pierwszych 8 znaków. Kwestia tylko, co powinno być tym ciągiem, który będziemy kodować… adresy wydają się zbyt oczywiste. Po krótce opiszę więc działanie programu:

Przy pierwszym uruchomieniu:
- wybieramy dowolny plik, który aplikacja pobiera i składuje wśród swoich danych
- wybieramy, czy ciąg ma być dodawany na początku, czy na końcu pliku
- wybieramy, które znaki klucza mają być podawane

Przy korzystaniu z aplikacji:
- wprowadzamy ciąg znaków (np. adres strony) i otrzymujemy klucz md5 powstały ze złączenia naszego ciągu i całej treści pliku, który jest przechowywany

Ponieważ jeszcze nic nie robiłem w J2ME, projekt ten, mimo iż wydaje mi się dosyć prosty raczej prędko nie powstanie, natomiast widzę kilka słabości takiego systemu:
- wszędzie musimy brać telefon, czy urządzenie, na którym mamy dostęp do aplikacji (utrata telefonu, to problem z plikiem ziarnem, jeżeli nie przechowujemy gdzieś kopii zapasowej)
- osoba niepowołana, jeśli złamie hasło do aplikacji, ma możliwość wygenerowania hasła do dowolnego systemu
- sięganie po telefon i wpisywanie nazw serwisów to kłopotliwa sprawa w wypadku często używanych aplikacji

Posted on 23 May 2008
Under: Programming | No Comments »

Plany na przyszłość

Szybko piszę kolejnego posta. Są to dwa różne tematy, dlatego ten piszę oddzielnie.

W tym poście wypiszę pokrótce informacje o projektach, które prowadzę obecnie:
Blog CMS - jest to system, na którym miał wystartować ten blog, ale z różnych przyczyn nie posuwał się do przodu. Teraz będę mógł go robić już całkowicie bez ciśnienia, co może zadziałać na dwa sposoby: albo zrobię go szybko, albo wcale. Generalnie jest to system specjalnie pod devblog’a z funkcjami prowadzenia projektów, podstawowych informacji o projektach, podlinkowań plików (W tym oddzielnie aktualna wersja projektu), screenów. Posty mają być przypisane pod konkretny projekt, który należy do jakiejść kategorii (np. grafika, czy strony www, albo programy użytkowe).

D&D Character Creator - Program do tworzenia postaci do systemu RPG o nazwie Dungeons & Dragons. Nie mogę dokładnie opisać funkcji posiadanych przez program, bo specyfikacja jeszcze nie istnieje. Na pewno będzie opcja druku postaci, losowych statystyk itp. Generalnie ma przeprowadzić przez proces tworzenia postaci na podobnej zasadzie do tej obecnej w grach Baldurs Gate, czy Temple of Elemental Evil. Ma przede wszystkim umożliwiać tworzenie postaci i kontrolę jej spójności na dowolnym poziomie. Ma również bazować na plikach rozszerzeń wprowadzających nowe klasy, atuty, czary itd. Do projektu zabiorę się dopiero po ukazaniu się oficjalnie nowej edycji tego systemu RPG.

MTG Drafter - Prosty program do symulacji draftu i zestawów prereleasowych dla gry Magic: The Gathering. Dobrze się na tym trenuje przed prereleasem, a można również rozegrać drafta, gdy ma się dostatecznie dużo kart własnych, albo po prostu proxy. W dalszym zamyśle będzie to raczej drobny moduł większego projektu.

MTG Player - Projekt w fazie “jak fajnie by było, gdyby ktoś zrobił coś takiego”. Chodzi o darmową wersję takiej aplikacji, jak MTGO. Założenie jest proste… by utrzymać motyw kolekcjonerski, każdy gracz dostaje codziennie pewną ilość żetonów, którą może wydać na boostery, czy inne produkty. Użytkownicy wymieniają się kartami, biorą udział w turniejach, na turniejach wygrywają żetony, lub produkty. Oczywiście powstaną aplikacje serwera i klienta. Każdy więc będzie mógł założyć własną osiedlową społeczność MTG w necie.

Posted on 22 May 2008
Under: Programming | No Comments »

“For the first time”

Nastał dzień, w którym wreszcie zacząłem prowadzić swojego bloga. Miało być inaczej, ale wyszło ostatecznie, że korzystać chwilowo będę z silnika WordPress. Pracuję obecnie nad własnym CMS’em, ale “obecnie” należy traktować bardzo umownie. Chciałem ruszyć z rozmachem, ale ponieważ robię setki rzeczy naraz, blog ten ruszyłby pewno w 2012 roku.

Czego możecie się spodziewać na blogu…
Generalnie PRAWIE (czytaj dalej) wszystkiego. Blog jest poświęcony przede wszystkim mojej pracy w dziedzinie szeroko pojętej informatyki, ale niech Was nie zdziwią komentarze na temat aktualnego życia politycznego, czy ciekawostki z różnych dziedzin, na prywatnych “porachunkach” skończywszy.

Czego tutaj nie zobaczycie…
Trudno mi deklarować taką rzecz, wspominane dygresje raczej będą wyjątkiem od reguły niż zasadą…Na pewno jednak nie znajdziecie tutaj postów o tym, jak to mi źle i niedobrze, bo moja ulubiona, oliwkowa wpadająca w khaki wstążka leżała dziś do góry śliwkowym paskiem (nie, nie wiem, czy oliwkowy może wpadać w khaki, nie wiem również, czy wspomniany kolor pasuje do śliwkowego, jakikolwiek by nie był ten śliwkowy).

Posted on 22 May 2008
Under: Strona | 4 Comments »