Nie wszyscy zdają sobie sprawę, że standardowa w Javie klasa SimpleDateFormat z pakietu java.text nie jest bezpieczna ze względu na wątki. W sumie mało kto zdaje sobie z tego sprawę.
Bardzo często można spotkać w projektach Javy EE podobne linijki kodu:
Date date = GlobalConst.DATE_FMT.parse(datestring);
To, że potrzebna jest nam kontrola wielowątkowości pokaże następujący prosty przykład:
wtorek, 28 września 2010
poniedziałek, 27 września 2010
Office 2007 - zmiana skrótów klawiszowych
Niektórzy z nas mają "przyjemność" pracować z Microsoft Office 2007 w wersji językowej innej niż polska. Wszystko jest fajnie, ale zdarza się, że Ctrl+B nie pogrubia tekstu ;) Np. w niemieckiej wersji pakietu Office służy do tego skrót klawiszowy Ctrl+Shift+F (a właściwie Strg+Umschalt+F) - od Fettdruck.
Niestety mam okazję pracować z Officem dopasowanym do języka Goethego ;) Skróty klawiszowe wyglądają w nim tak:
Ctrl+Shift+F - pogrubienie
Ctrl+Shift+K - kursywa
Ctrl+Shift+U - podkreślenie
Jak wrócić do starych, dobrych, jakże polskich Ctrl+B, Ctrl+I i Ctrl+U? ;) Jak zmienić te skróty klawiszowe? :)
Niestety mam okazję pracować z Officem dopasowanym do języka Goethego ;) Skróty klawiszowe wyglądają w nim tak:
Ctrl+Shift+F - pogrubienie
Ctrl+Shift+K - kursywa
Ctrl+Shift+U - podkreślenie
Jak wrócić do starych, dobrych, jakże polskich Ctrl+B, Ctrl+I i Ctrl+U? ;) Jak zmienić te skróty klawiszowe? :)
środa, 22 września 2010
Growbox
Dzisiaj gierka zręcznościowo-logiczna ;)
Sterujemy kwadratem, a naszym zadaniem jest pożarcie wszystkich kropek na planszy. Uwaga - apetyt (a raczej nasz kwadrat) rośnie w miarę jedzenia, więc główny problem polega na wymyśleniu jak się nie zaklinować w labiryncie ;)
Prosta, relaksująca gra :)
Sterujemy kwadratem, a naszym zadaniem jest pożarcie wszystkich kropek na planszy. Uwaga - apetyt (a raczej nasz kwadrat) rośnie w miarę jedzenia, więc główny problem polega na wymyśleniu jak się nie zaklinować w labiryncie ;)
Prosta, relaksująca gra :)
poniedziałek, 20 września 2010
"Failed to load Main-Class ..." i NetBeans
Ostatnio pracując z malutkim projektem w NetBeans w pewnym momencie świeżo zbudowany plik JAR uraczył mnie komunikatem:
Failed to load Main-Class manifest attribute
Po krótkim guglaniu dowiedziałem się, że najczęściej taki komunikat dostają osoby, które do pisania programów wykorzystują tylko javac i cat i zapominają umieścić w pliku JAR plik manifest.mf. Proponowane rozwiązanie: użyj jakiegoś IDE, takiego jak Eclipse. Taaaa....
W JARze budowanym przez NetBeansa znajdował się wspomniany plik manifest.mf, ale nie mówił on która klasa w pliku jest główną. Przyczyną takiego błędu w tym IDE jest utworzenie projektu "class library", a nie "java application" - tak brzmi oficjalna wersja. Ale przecież 10 minut temu to jeszcze działało i było założone jako "java application".
Co ciekawe, pod samym NetBeansem cały projekt się uruchamiał, miał wybraną klasę główną itd., itp. Co poszło nie tak?
Failed to load Main-Class manifest attribute
Po krótkim guglaniu dowiedziałem się, że najczęściej taki komunikat dostają osoby, które do pisania programów wykorzystują tylko javac i cat i zapominają umieścić w pliku JAR plik manifest.mf. Proponowane rozwiązanie: użyj jakiegoś IDE, takiego jak Eclipse. Taaaa....
W JARze budowanym przez NetBeansa znajdował się wspomniany plik manifest.mf, ale nie mówił on która klasa w pliku jest główną. Przyczyną takiego błędu w tym IDE jest utworzenie projektu "class library", a nie "java application" - tak brzmi oficjalna wersja. Ale przecież 10 minut temu to jeszcze działało i było założone jako "java application".
Co ciekawe, pod samym NetBeansem cały projekt się uruchamiał, miał wybraną klasę główną itd., itp. Co poszło nie tak?
wtorek, 14 września 2010
Farbrausch & Vacuum - fr-049: of spirits taken
Dawno nie było demosceny na blogu :) Dzisiaj zamiast poligonów, shaderów i grafiki 3D upchanej w 64kB klimatyczna produkcja w komiksowym stylu.
"of spirits taken" to zaproszenie na Breakpoint 2006. Podobnie jak przy innych zaproszeniach (np. "Masagin", czyli zaproszenie na nvision 08) Farbrausch porzuca typowo demoscenowo-programistyczne techniki na rzecz klasycznej animacji.
"of spirits taken" to zaproszenie na Breakpoint 2006. Podobnie jak przy innych zaproszeniach (np. "Masagin", czyli zaproszenie na nvision 08) Farbrausch porzuca typowo demoscenowo-programistyczne techniki na rzecz klasycznej animacji.
poniedziałek, 13 września 2010
Dzień Programisty
Tak, co roku będę składał życzenia ;)
Bo w sumie co roku pojawia się coś nowego :) Np. dzisiaj książki informatyczne w Helionie z okazji 256. dnia roku można kupić z 20% rabatem ;)
Dobra, ale dlaczego piszę o tym temacie ponownie? Ponieważ od zeszłego roku Dzień Programisty to oficjalne święto w Rosji. Tak, oficjalne.
Bo w sumie co roku pojawia się coś nowego :) Np. dzisiaj książki informatyczne w Helionie z okazji 256. dnia roku można kupić z 20% rabatem ;)
Dobra, ale dlaczego piszę o tym temacie ponownie? Ponieważ od zeszłego roku Dzień Programisty to oficjalne święto w Rosji. Tak, oficjalne.
sobota, 11 września 2010
Shift 3
Dzisiaj kolejna gra logiczna z serii Shift.
Rozpoczynając rozgrywkę można całkiem słusznie mieć uczucie deja vu - pierwsze, treningowe poziomy są wręcz identyczne jak w części pierwszej - oczywiście do pewnego momentu...
Rozpoczynając rozgrywkę można całkiem słusznie mieć uczucie deja vu - pierwsze, treningowe poziomy są wręcz identyczne jak w części pierwszej - oczywiście do pewnego momentu...
środa, 8 września 2010
Operator indeksowania w C++
Czyli praktyczne zastosowanie tego, co już wiemy o const ;)
Załóżmy że potrzebujemy przeciążyć operator indeksowania (czyli []) dla swojej klasy. Weźmy na warsztat prosty przykład, bez żadnych szablonów itd.:
class MyArray
{
public:
explicit MyArray(const int size) : arr_size(size)
{
p_arr = new double[arr_size];
}
~MyArray()
{
if (p_arr)
{
delete [] p_arr;
}
}
// i także konstruktor kopiujący i operator przypisania ...
private:
double* p_arr;
const int arr_size;
};
Chcemy móc korzystać z operatora [] do wyciągania elementów tablicy - dopisujemy więc w części publicznej klasy:
double operator[](const int idx)
{
if (idx >= 0 && idx < arr_size)
{
return p_arr[idx];
}
throw std::invalid_argument("idx");
}
Problem pojawia się kiedy chcemy wykorzystać naszą klasę w następującym kodzie:
MyArray m = MyArray(5);
m[0] = 3.14;
Bum, błąd kompilacji. Gdzie jest nasz błąd?
Załóżmy że potrzebujemy przeciążyć operator indeksowania (czyli []) dla swojej klasy. Weźmy na warsztat prosty przykład, bez żadnych szablonów itd.:
class MyArray
{
public:
explicit MyArray(const int size) : arr_size(size)
{
p_arr = new double[arr_size];
}
~MyArray()
{
if (p_arr)
{
delete [] p_arr;
}
}
// i także konstruktor kopiujący i operator przypisania ...
private:
double* p_arr;
const int arr_size;
};
Chcemy móc korzystać z operatora [] do wyciągania elementów tablicy - dopisujemy więc w części publicznej klasy:
double operator[](const int idx)
{
if (idx >= 0 && idx < arr_size)
{
return p_arr[idx];
}
throw std::invalid_argument("idx");
}
Problem pojawia się kiedy chcemy wykorzystać naszą klasę w następującym kodzie:
MyArray m = MyArray(5);
m[0] = 3.14;
Bum, błąd kompilacji. Gdzie jest nasz błąd?
poniedziałek, 6 września 2010
Słynne gitary domowej produkcji
Niektórzy sławni gitarzyści sami zbudowali swoje instrumenty - często gitary te stały się sławne, podobnie jak właściciel. Przyjrzyjmy się paru egzemplarzom - oto odliczanie TOP 3.
3. Gitary Rona Jorzombka
Ron Jarzombek to średnio-znany gitarzysta, popularny głównie w kręgach słuchaczy metalu progresywn-technicznego - dzięki zespołom Watchtower i Spastic Ink. Ron zasługuje na uwagę nie tylko dzięki umiejętnościom technicznym, ale też dlatego, że sam buduje swoje gitary, wykorzystując części z innych instrumentów.
Na specjalną uwagę zasługuje poniższa gitara:
Dlaczego? Kiedy Ron jechał w trasę koncertową do Japonii mógł zabrać dwie sztuki bagażu. Miał parę możliwości spakowania się:
1. Wziąć swoją główną gitarę, jako drugą walizkę ciuchy, ale nie mieć zapasowej gitary.
2. Zabrać dwie gitary i grać nago.
3. Wymyślić coś innego.
Instrument ze zdjęcia powyżej to efekt właśnie punktu 3. Gitara ta została przystosowana do szybkiego montażu i demontażu, a dzięki niewielkiemu korpusowi mogła jechać w walizce razem z ciuchami.
Więcej o gitarach Rona: http://www.ronjarzombek.com/gtrs.html
3. Gitary Rona Jorzombka
Ron Jarzombek to średnio-znany gitarzysta, popularny głównie w kręgach słuchaczy metalu progresywn-technicznego - dzięki zespołom Watchtower i Spastic Ink. Ron zasługuje na uwagę nie tylko dzięki umiejętnościom technicznym, ale też dlatego, że sam buduje swoje gitary, wykorzystując części z innych instrumentów.
Na specjalną uwagę zasługuje poniższa gitara:
Dlaczego? Kiedy Ron jechał w trasę koncertową do Japonii mógł zabrać dwie sztuki bagażu. Miał parę możliwości spakowania się:
1. Wziąć swoją główną gitarę, jako drugą walizkę ciuchy, ale nie mieć zapasowej gitary.
2. Zabrać dwie gitary i grać nago.
3. Wymyślić coś innego.
Instrument ze zdjęcia powyżej to efekt właśnie punktu 3. Gitara ta została przystosowana do szybkiego montażu i demontażu, a dzięki niewielkiemu korpusowi mogła jechać w walizce razem z ciuchami.
Więcej o gitarach Rona: http://www.ronjarzombek.com/gtrs.html
sobota, 4 września 2010
Java i http://
Kiedy usłyszałem pytanie z pewnej rozmowy kwalifikacyjnej stwierdziłem: "to jest totalnie jutro na moim blogu" :)
Pytanie jest proste: czy poniższy kod napisany w Javie się skompiluje?
public class HttpTest {
public static void main(String[] args) {
System.out.println("Hi!");
http://www.java.com
System.out.println("Hello!");
}
}
Pogrubiona linijka to ta, której tak naprawdę dotyczy pytanie ;)
Pytanie jest proste: czy poniższy kod napisany w Javie się skompiluje?
public class HttpTest {
public static void main(String[] args) {
System.out.println("Hi!");
http://www.java.com
System.out.println("Hello!");
}
}
Pogrubiona linijka to ta, której tak naprawdę dotyczy pytanie ;)
czwartek, 2 września 2010
Sling Jumper
Jeżeli ktoś lubi dopracowane graficznie i dźwiękowo gry, to dzisiaj propozycja nie dla niego ;)
Sling Jumper fajerwerków nie oferuje, za to wciągającą rozrywkę na pewno ;) Sterujemy kulką, która odbijając się od umieszczonych na planszy "proc" musi złapać wszystkie wymagane monety i dotknąć zielonej kulki ;)
Sling Jumper fajerwerków nie oferuje, za to wciągającą rozrywkę na pewno ;) Sterujemy kulką, która odbijając się od umieszczonych na planszy "proc" musi złapać wszystkie wymagane monety i dotknąć zielonej kulki ;)
Subskrybuj:
Posty (Atom)