środa, 25 kwietnia 2012

Projekt pokazał mi, że jakość kodu jest ważna!

Wstęp.
Panel logowania

Od ostatniego wpisu minął ponad miesiąc, ale mniejsza z tym. W tym wpisie mówiłem o realizowaniu projektu w Javie na studia. Niestety z racji skróconego (a zarazem skondensowanego) semestru wykańczanie tego projektu to była nerwówka. Wyszło to średnio. Postanowiłem podzielić się przemyśleniami, które naszły mnie w trakcie ostatniego tygodnia prac nad projektem.

Panel administracyjny
Gwoli przypomnienia - w skład projektu wchodzi aplikacja kliencka napisana w Swingu, która umożliwia użytkownikom o różnym stopniu dostępu, rozwiązywanie testów wielokrotnego wyboru, podgląd wyników testów, zarządzanie testami, użytkownikami itp. Aplikacja serwera przyjmuje połączenia od klientów i wykonuje zapytania od nich płynące, przechowuje testy, użytkowników i inne potrzebne dane w bazie danych, z którą się komunikuje przy użyciu JDBC. 

sobota, 3 marca 2012

JDBC + MySQL

Wstęp.

Trochę czasu minęło od ostatniego wpisu. Nie mam nic na swoje usprawiedliwienie. W tym semestrze realizuję projekt z przedmiotu Programowanie Obiektowe. Używamy tam języka Java. Pomyślałem sobie, że zamiast chodzić na laboratoria, wezmę projekt i będę nad tym siedział w domu - jest okazja do nauki nowych rzeczy: obsługa bazy danych  za pomocą JDBC i Sockety Java. Ma to być aplikacja klient-serwer umożliwiająca studentom rozwiązywanie udostępnianych przez nauczyciela testów. Przy tej okazji myślę, że naskrobię parę wpisów. Oto pierwszy z nich.

Przygotowania - czego potrzebujemy.

JDBC zapewnia połączenie pomiędzy Javą a relacyjną bazą danych, umożliwia przesyłanie do niej zapytań SQL. Nie narzuca nam z jakiej bazy musimy korzystać, dlatego oprócz systemu zarządzania bazą danych (DBMS) potrzebujemy sterowników JDBC (JDBC Driver), które możemy pobrać od dostawcy bazy danych.

My będziemy korzystać z systemu zarządzania bazą danych MySQL.

sobota, 31 grudnia 2011

Uruchamianie zewnętrznego programu

Przy okazji chciałbym złożyć wszystkim, którzy czasami zerkają na mojego bloga najserdeczniejsze życzenia noworoczne, żeby wasz kod się kompilował szybko i bezbugowo, żebyśmy w tym nowym roku dalej poszerzali swoje zainteresowania, rozwijali się, ale też znaleźli czas na zabawę w fajnym towarzystwie. Szczęśliwego i udanego Sylwestra.


Święta, święta i po świętach, jeszcze Sylwester-Nowy rok i powrót na studia. Semestr się powoli kończy, a więc studenci informatyki zaczynają pisać projekty na niektóre przedmioty. Jak się okazało, może to czasami być przyczynkiem do rozpoznania jakiegoś zagadnienia.

Moim zdaniem dość ciekawy projekt trafił się nam na Grafice Komputerowej i Multimediach. Mamy napisać własny format pliku graficznego z kompresją - wybór padł na kompresję LZW oraz dwa programy: konwertujący plik BMP na nasz format i drugi, który konwertuje w drugą stronę. Podczas dyskusji z członkami zespołu projektowego, doszliśmy do wniosku, że napiszemy to w C++ jako aplikacje konsolowe. Jeżeli starczy nam czasu, to stworzymy programy - "nakładki graficzne". Będą to programy okienkowe zapewniające przyjazny sposób wyboru paru opcji np. tryb koloru (RGB, CMYK i coś tam jeszcze ma być). Programy te będą uruchamiać programy konsolowe napisane w C++ i wybrane opcje przekazywać poprzez listę argumentów wywołania. Pomyślałem sobie, że fajnie by było takie coś napisać przy użyciu Swinga - dzięki temu usiadłem i zacząłem badać temat: Jak uruchomić z poziomu Javy program napisany w C++?

wtorek, 27 grudnia 2011

AndroidPlay - część 6: Obsługa TouchEventów

Wstęp.

Dziś już ostatnia lekcja przygotowawcza do tworzenia gry. Umiemy wystarczająco dużo, żeby wyświetlać użytkownikowi scenę naszej gry. Teraz każdy z was zapewne powie: ej chłopie, ale przecież gry to rozrywka interakcyjna, komunikacja musi zachodzić w obie strony - my umiemy powiedzieć coś użytkownikowi, ale co z nim?! Tym zajmiemy się teraz, przed nami obsługa ekranu dotykowego.

czwartek, 22 grudnia 2011

AndroidPlay - część 5: Przeźroczystość i przekształcenia modelowania

Do tej pory nauczyliśmy się rysować czworokąt w OpenGL ES na platformie Android. Chcemy stworzyć grę, a więc musimy wprowadzić trochę ruchu do naszej sceny. W dzisiejszej lekcji nauczymy się:
  1. rysować przeźroczyste bitmapy 
  2. wykonywać przekształcenia modelowania

1. Przeźroczyste bitmapy.

Załóżmy, że posiadamy odpowiedni plik z obrazkiem posiadającym kanał alpha w formacie .png. Rysowanie i tworzenie bitmapy przebiega dokładnie tak samo jak w lekcji o rysowaniu oteksturowanych czworokątów. Musimy tylko uruchomić łączenie kolorów i określić sposób ich łączenia w buforze koloru przy pomocy funkcji glBlendFunc(). Jej pierwszy parametr określa funkcję łączenia źródła, drugi celu. W praktyce jest ich kilka, natomiast nie używa się ich prawie wcale. Do uzyskania przeźroczystości używamy takich konfiguracji.
gl.glEnable(GL10.GL_BLEND);               // Włącz łączenie kolorów
gl.glBlendFunc(GL10.GL_SRC_ALPHA, 
               GL10.GL_ONE_MINUS_SRC_ALPHA); // Określ funkcje łączenia kolorów

piątek, 9 grudnia 2011

Początek grudnia konferencyjnie

Dawno nie pisałem - główną wymówką są studia, które pochłaniają trochę czasu, którym niestety nie umiem dobrze zarządzać (muszę to zmienić!). Ostatnio było dość sporo wpisów-lekcji AndroidPlay i nic więcej. Dziś chcę się podzielić wrażeniami z ostatnich dwóch konferencji, których byłem uczestnikiem - słuchaczem, który siedzi sobie i klaszcze kiedy trzeba ;-).

wtorek, 29 listopada 2011

AndroidPlay - część 4: Czworokąty i tekstury

Wstęp.

W poprzedniej części stworzyliśmy aplikację wyświetlającą trójkąt. Teraz przyszedł czas na teksturowanie - bo co by to była za gra, gdyby wyświetlała tylko różnokolorowe figury - dawno temu może by to przeszło, ale nie dziś.