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? :)
Pokazywanie postów oznaczonych etykietą problem. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą problem. Pokaż wszystkie posty
poniedziałek, 27 września 2010
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?
piątek, 23 lipca 2010
Problem kwadratu i prostokąta
Kiedy na studiach miałem pierwszy wykład o dziedziczeniu w obiektowych językach programowania (akurat na przykładzie C++), to zapamiętałem następujący przykład - prostokąt dziedziczy po kwadracie.
Przykład ten wyglądał pewnie mniej więcej tak:
class Square
{
protected:
double x;
};
class Rectangle : public Square
{
protected:
double y;
};
Od razu widać tu bezsens - przecież kwadrat jest szczególnym przypadkiem prostokąta, a nie na odwrót. Każdy kwadrat jest prostokątem, ale nie każdy prostokąt jest kwadratem. Czyli zgodnie z zasadami matematyki i logiki to kwadrat powinien dziedziczyć po prostokącie.
I tu zaczynają się problemy.
Przykład ten wyglądał pewnie mniej więcej tak:
class Square
{
protected:
double x;
};
class Rectangle : public Square
{
protected:
double y;
};
Od razu widać tu bezsens - przecież kwadrat jest szczególnym przypadkiem prostokąta, a nie na odwrót. Każdy kwadrat jest prostokątem, ale nie każdy prostokąt jest kwadratem. Czyli zgodnie z zasadami matematyki i logiki to kwadrat powinien dziedziczyć po prostokącie.
I tu zaczynają się problemy.
poniedziałek, 19 lipca 2010
Powiadomienia o komentarzach na blogu
Dzisiaj wykorzystany efekt perpetuum mobile - dzięki problemom na blogu powstają na niego nowe posty ;)
Wiem, że ktoś dzisiaj zostawił tutaj komentarz (dzięki STAT4U). Nie wiem pod którym postem - hm. Szukając rozwiązania tego problemu (i zagubionego komentarza przy okazji) znalazłem ciekawą opcję na Bloggerze.
Wiem, że ktoś dzisiaj zostawił tutaj komentarz (dzięki STAT4U). Nie wiem pod którym postem - hm. Szukając rozwiązania tego problemu (i zagubionego komentarza przy okazji) znalazłem ciekawą opcję na Bloggerze.
sobota, 15 maja 2010
Wzorzec Post/Redirect/Get w ASP.NET MVC
Każdy(a) z Was pewnie spotkał się komunikatem "Aby wyświetlić tę stronę, Firefox musi ponownie przesłać dane etc..." O co chodzi i co zrobić, aby w naszych systemach tak nie było?
Podobny komunikat pokazuje, że odwiedzany przez nas serwis Web ma poważny problem, jakim jest ponowne wysyłanie POST. Schemat jest taki:
1. Przeglądarka wysyła polecenie GET i otrzymuje stronę z formularzem.
2. Użytkownik go wypełnia i klika "Wyślij".
3. Przeglądarka wysyła z użyciem POST dane do aplikacji.
4. Aplikacja odsyła stronę, że operacja się udała.
5. Użytkownik chce przeładować stronę z komunikatem.
6. Przeglądarka wysyła ostatnie zapytanie. Jakie? To z POST, z punktu 3.
7. Aplikacja drugi raz wykonuje akcję związaną z formularzem.
Czyli my chcemy zrobić coś normalnego (przeładować stronę, kliknąć "Wstecz"), a aplikacja zrobi coś więcej niż od niej oczekujemy. Hmmmm. A ciekawie robi się dopiero, kiedy ktoś używa przeglądarki, która nie ostrzega przed ponownym wysłaniem POST, takiej jak IE6.
Jak sobie z tym poradzić?
Podobny komunikat pokazuje, że odwiedzany przez nas serwis Web ma poważny problem, jakim jest ponowne wysyłanie POST. Schemat jest taki:
1. Przeglądarka wysyła polecenie GET i otrzymuje stronę z formularzem.
2. Użytkownik go wypełnia i klika "Wyślij".
3. Przeglądarka wysyła z użyciem POST dane do aplikacji.
4. Aplikacja odsyła stronę, że operacja się udała.
5. Użytkownik chce przeładować stronę z komunikatem.
6. Przeglądarka wysyła ostatnie zapytanie. Jakie? To z POST, z punktu 3.
7. Aplikacja drugi raz wykonuje akcję związaną z formularzem.
Czyli my chcemy zrobić coś normalnego (przeładować stronę, kliknąć "Wstecz"), a aplikacja zrobi coś więcej niż od niej oczekujemy. Hmmmm. A ciekawie robi się dopiero, kiedy ktoś używa przeglądarki, która nie ostrzega przed ponownym wysłaniem POST, takiej jak IE6.
Jak sobie z tym poradzić?
piątek, 12 marca 2010
Internet Explorer i typy MIME
Internet Explorer nie zawsze trzyma się standardów, co za niespodzianka.
Jeżeli w Waszej aplikacji webowej użytkownicy także mają możliwość umieszczania zdjęć wgrywanych z dysku twardego (np. awatarów) i wykorzystujecie to tego input type="file", to sprawdzcie to pod Internet Explorerem.
Otóż nasz stary kumpel IE (nawet w najnowszej, 8 edycji) czasami niestandardowo traktuje typy MIME wysyłanych plików graficznych.
Jeżeli w Waszej aplikacji webowej użytkownicy także mają możliwość umieszczania zdjęć wgrywanych z dysku twardego (np. awatarów) i wykorzystujecie to tego input type="file", to sprawdzcie to pod Internet Explorerem.
Otóż nasz stary kumpel IE (nawet w najnowszej, 8 edycji) czasami niestandardowo traktuje typy MIME wysyłanych plików graficznych.
niedziela, 28 lutego 2010
Hackowanie jQuery tablesorter
Jeżeli ktoś chciał mieć w swojej aplikacji webowej tabelę z danymi i mieć niejako "za darmo" sortowanie oraz stronicowanie tych danych, to może wpadł na javascriptową bibliotekę jQuery oraz dwa dodatki do niej: tablesorter oraz tablesorter.pager.
Jeżeli ktoś chce zobaczyć jak to działa to przykład jest dostępny stronie dodatku:
http://tablesorter.com/docs/example-pager.html
Całość jest na licencji MIT, więc można spokojnie w tym pogrzebać - na szczęście, bo nie jest idealnie :)
Jeżeli ktoś chce zobaczyć jak to działa to przykład jest dostępny stronie dodatku:
http://tablesorter.com/docs/example-pager.html
Całość jest na licencji MIT, więc można spokojnie w tym pogrzebać - na szczęście, bo nie jest idealnie :)
środa, 24 lutego 2010
Twój ISP a baza danych
Ostatnio po raz kolejny miałem problemy aby połączyć się z SQL Serverem. Dobra, to nic niesamowitego, zwłaszcza jak się grzebie na serwerze i w ustawieniach firewalla. Ale tym razem w końcu udało mi się znaleźć przyczynę, którą nazwę po imieniu: Multimedia Polska. S.A.
poniedziałek, 30 listopada 2009
Zaznaczanie prawego marginesu w Visual Studio
Jednym z dziwniejszych wymagań standardu kodowania jest maksymalna długość wiersza ograniczona do 80 (lub nawet 72) znaków. Ciężko jest to utrzymać, jeżeli nazwy klas mają ponad 20 znaków, nazwy metod po kilkanaście, nazwy zmiennych ok. 10 symboli, a kod piszemy na 5. poziomie zagnieżdżenia (czyli 5 * 4 = 20 spacji z przodu)...
Wymaganie to ma sens tylko w 2 przypadkach:
1. Ktoś pisze kod w vi na terminalu.
2. Ktoś drukuje kod i go potem czyta, tak jak niektórzy wykładowcy na studiach.
Niestety ostatnio natrafiłem na przypadek nr 2 przy pisaniu kodu w C++. Postanowiłem wykorzystać rozwiązanie pośrednie, czyli zaznaczyć sobie w edytorze Visual C++ prawy margines na 80 kolumnie kodu. Np. w NetBeans 6.7 taka możliwość jest w Tools -> Options -> Editor -> Right Margin.
Niestety, w dowolnej wersji Visual Studio uruchomienie podobnego ficzera nie jest takie oczywiste Udostępniana jest tylko opcja "Word wrap", która zawija tylko wizualnie kod, kiedy osiągnie on krawędź ekranu... (btw: u mnie to 142 kolumna, a u Was?)
Wymaganie to ma sens tylko w 2 przypadkach:
1. Ktoś pisze kod w vi na terminalu.
2. Ktoś drukuje kod i go potem czyta, tak jak niektórzy wykładowcy na studiach.
Niestety ostatnio natrafiłem na przypadek nr 2 przy pisaniu kodu w C++. Postanowiłem wykorzystać rozwiązanie pośrednie, czyli zaznaczyć sobie w edytorze Visual C++ prawy margines na 80 kolumnie kodu. Np. w NetBeans 6.7 taka możliwość jest w Tools -> Options -> Editor -> Right Margin.
Niestety, w dowolnej wersji Visual Studio uruchomienie podobnego ficzera nie jest takie oczywiste Udostępniana jest tylko opcja "Word wrap", która zawija tylko wizualnie kod, kiedy osiągnie on krawędź ekranu... (btw: u mnie to 142 kolumna, a u Was?)
czwartek, 12 listopada 2009
NK Talk i śledzik - dalej usuwamy
Jakiś czas temu kochana nasza-klasa wprowadziła własny komunikator, NK-talk :) O dziwo, tym razem da się to wyłączyć w opcjach prywatności, w przeciwieństwie do śledzika. Postęp.
Ale jeżeli ktoś (jest ktoś taki?) nadal nie chce ryby, ale chce mieć włączone NK talk, to Greasemonkey ma z tym problem... Ale jest rozwiązanie ;)
Ale jeżeli ktoś (jest ktoś taki?) nadal nie chce ryby, ale chce mieć włączone NK talk, to Greasemonkey ma z tym problem... Ale jest rozwiązanie ;)
piątek, 6 listopada 2009
Klawisz TAB w linii komend Windows XP
Jakiś czas temu (chyba od SP3, ale głowy nie dam sobie uciąć) natknąłem się na problem z linią komend (cmd) w Windows XP. Otóż auto-uzupełnianie przestało działać :/ Klawisz TAB wpisywał znak tabulacji - nie takiego zachowania oczekujemy ;)
Automatyczne uzupełnianie nazw plików i katalogów to prawdopodobnie największe udogodnienie w pracy pod konsolą i chyba podstawowy składnik obecnie każdej dystrybucji linuksa. Przez pewien czas obchodziłem ten problem w Windowsie, ale w końcu postanowiłem go rozwiązać ;)
Automatyczne uzupełnianie nazw plików i katalogów to prawdopodobnie największe udogodnienie w pracy pod konsolą i chyba podstawowy składnik obecnie każdej dystrybucji linuksa. Przez pewien czas obchodziłem ten problem w Windowsie, ale w końcu postanowiłem go rozwiązać ;)
sobota, 17 października 2009
VC++ i preprocesor
Ostatni post to była dłuuga walka z preprocesorem C++, dzięki któremu w różnych miejscach powstawały różne ciekawe błędy składniowe ;) Na szczęście VC++ daje możliwość podejrzenia plików takich, w jakim stanie zostawił je preprocesor - nieoceniona pomoc przy dziwnych rozwinięciach makr.
środa, 7 października 2009
Avira AntiVir i Tlen.pl
Ostatnio po cotygodniowym nocnym teście antywirusem Avira AntiVir Personal nie chciał się uruchomić mój Tlen.pl - brakowało mu biblioteki libutil2.dll.
piątek, 25 września 2009
Visual C++ i TortoiseSVN
Ostatnio wylądowałem pracując z VC++ 2008 Express i kodem wrzucanym na SVN (za pomocą TortoiseSVN). Kiedyś miałem już przyjemność pracować w takich warunkach i mieć cały folder wycheckoutowany. Problemem było to, że w repozytorium lądowały pliki binarne, pliki z IntelliSense, pliki z debugowania i ustawienia lokalne użytkowników - co prowadziło do niezłego zamieszania przy update.
wtorek, 15 września 2009
Java, walidator XML Schema i świadomość przestrzeni nazw
Kiedy pracowaliśmy zespołem nad Teleradiologią i chciałem napisać testy JUnit do swojego modułu kręcącego się wokół XML-i napotkałem ciekawy problem. Parser korzystający z XML Schema działał świetnie, natomiast przy uruchamianiu testów jednostkowych odpowiednich metod pojawiał się wyjątek SAX:
"cvc-elt.1: Cannot find the declaration of element nazwa elementu głównego".
"cvc-elt.1: Cannot find the declaration of element nazwa elementu głównego".
piątek, 11 września 2009
Usunięcie śledzika z NK za pomocą Greasemonkey
Wszystkich chyba denerwuje śledzik na n-k ;) W Internecie pojawiły się liczne tutoriale, jak pozbyć się go ze strony naszej klasy, bo o dziwo wg nk nikt by nie chciał się tego cuda pozbyć i nie ma takiej opcji.
Ja postanowiłem zrobić to za pomocą dodatku do FF pod nazwą Greasemonkey. Dodatek ten pozwala nam się "upaprać smarem" i dodatkowo przetwarzać strony www po ich załadowaniu przy użyciu własnoręcznie pisanych skrypcików JavaScript ;)
Ja postanowiłem zrobić to za pomocą dodatku do FF pod nazwą Greasemonkey. Dodatek ten pozwala nam się "upaprać smarem" i dodatkowo przetwarzać strony www po ich załadowaniu przy użyciu własnoręcznie pisanych skrypcików JavaScript ;)
środa, 12 sierpnia 2009
BZWBK24 vs. Skype 4


Ostatnio miałem pewne problemy z serwisem internetowym BZWBK24 - przy dowolnej dłuższej (niż 1 kliknięcie) operacji raczył mnie komunikat "515 - Brak informacji o sesji. Wybierz ponownie opcję z menu. Jeśli błąd się powtarza, zaloguj się ponownie.". Działo się to tylko pod świeżo zaktualizowanym Firefoksem 3.0.12, pod IE8 nie było problemów. Aktualizacja FF z wersji 3.0.12 do 3.0.13 i dalej do 3.5.2 nie pomogła. Wyczyszczenie cookies nie pomogło. Zresztą na innym komputerze w FF 3.5.2 wszystko działało pięknie...
Subskrybuj:
Posty (Atom)
