Po-słowie na każdy temat

czyli programowanie i nie tylko

JavaScript – funkcja isInt()

jsNiekiedy może wydawać się, że w JavaScripcie jest wszystko, ale to tylko złudzenie. Bardzo podstawowym przykładem, który warto tutaj przytoczyć, jest sprawdzanie czy zmienna jest typu integer. Przedstawiam funkcję isInt(), której zadanie polega na interpretacji zmiennej w tym kontekście. O tym właśnie jest ten krótki artykuł. Wydawać się może, że podstawowe sprawdzenie typu zmiennej może być łatwe i przyjemne. Niekoniecznie.
Czytaj dalej…

„Mroczny” Eclipse

eclipse

Trochę odpoczęliście ode mnie. Zatem czas coś napisać i zaciekawić niektórych czytelników. Dzisiaj artykuł w całości poświęcony narzędziu Eclipse, bardzo popularnemu programowi wśród programistów Javy, ale też … PHP. Nie dziwcie się – sam pracuję z sukcesem przy systemach PHP na platformie Eclipse. Na razie w wersji Juno, ale niedługo przesiadam się na Keplera.

Do rzeczy. Pewnego dnia spojrzałem na Eclipse’a z daleka i pomyślałem: „prymitywnie wygląda, razi jaskrawością, męczy oczy”. Skoro tak to trzeba było znaleźć rozwiązanie. Głównie zależało mi na oczach. Gdy programuje się często „do poduszki” to w ciemności biel 80% ekranu, jaką serwował Eclipse podczas użytkowania źle wpływała na organizm. I tak powstała nić przyczynowo-skutkowa, która doprowadziła do rozwiązania jakim jest zmiana tematu i kolorów edytora. Świetna sprawa, tym bardziej, że wspierana natywnie przez aplikację.  Czytaj dalej…

HTML / CSS – checkbox i radiobutton – dobra praktyka

Technologia się rozwija nieustannie. Aplikacje internetowe są ulepszane nieustannie. Czasy statycznych stron zniknęły bezpowrotnie. Wykorzystanie Javascriptu, nowinek HTML5 CSS3 to standard. Jak przeżyć w tym świecie? Pytanie z nutką ironii, bowiem teraz aplikacje przykuwają bardzo wzrok obserwatora i o tym dzisiaj parę słów.

Tworząc własną witrynę możemy wybrać jedną z 3 dróg: wykorzystać CMS, zamówić projekt graficzny lub samemu pomęczyć się w budowaniu od podstaw. O ile pierwsza droga (w przypadku darmowych CMSów) nie zamęczy naszego budżetu, o tyle druga już z dużym prawdopodobieństwem będzie to niosła za sobą. Ostatnia opcja dotyczy twórców z powołania, obeznanych w temacie i stawiających sobie wyzwania … których nie goni czas 🙂 W tym artykule trochę o nich, a więc może i o Tobie?!

Standardowe kontrolki formularzy są nudne. Nie da się ukryć. Oklepana grafika, więc oka nie zachwyca. Jednak możemy to zmienić!  Czytaj dalej…

Apache Tomcat – pamięć JVM

Czas na problem, z którym musi zmierzyć się każdy programista, który często pracuje na kontenerze Apache Tomcat (tutaj dotyczy wersji 6 i 7). Mowa mianowicie o błędzie  java.lang.OutOfMemoryError: PermGen space. Pojawia się on zazwyczaj, gdy w kontenerze mamy uruchomionych kilka rozbudowanych aplikacji i wykonujemy operacje re-deployu bez restartu Tomcata. Nie jest to dobre, należy to rozwiązać, ale z uwagi na złożoność problemu i często niezrozumiałość dla początkujących programistów, problem jest bagatelizowany. Owszem jest nie jest krytyczne rozwiązanie jego (występuje wyłącznie na serwerze deweloperskim) wystarcza twardy restart kontenera aplikacyjnego i „po kłopocie”. Kiedyś przyjdzie jednak zmierzyć się z rozwiązaniem problemu i zaznajomieniem się z terminami pamięci JVM (Java Virtual Machine). Czytaj dalej…

GWT – SerializationException

Cóż za udręka. Błąd nie do rozwiązania. Czyż tak nie reagujemy, gdy pojawia się „dziwny” nieprzewidziany błąd? Zdecydowanie. Najgorzej, gdy wujek Google także nic nie wie na temat błędu.

Korzystając z frameworku GWT, w wersji klient-serwer, konieczne jest operacja serializacji/deserializacji. Błąd jest z tym związany, ale o co w nim chodzi?  Czytaj dalej…

Same Origin Policy – krótka wzmianka

Kilka słów o Same Origin Policy, czyli artykuł powiązany z AJP1.3 Connector. Czy i jak można wykorzystać ww. konektor? Jednym z zastosowań i udogodnień z tym związanych jest możliwość bezproblemowego manipulowania ramkami w strukturze strony internetowej.

Zasada Same Origin Policy dotyczy właśnie manipulowania strukturą innego dokumentu w ramach obecnego dokumentu (o określonym adresie url). Gdy ramkę ze stroną generowaną przez Tomcata zagnieździmy w dokumencie HTML serwera Apache HTTP to już się domyślamy, że wszelka manipulacja (węzłami, funkcjami Javascript itp.) zakończy się niepowodzeniem z powodu tego chociażby, że główny dokument działać będzie domyślnie na porcie 80, a Tomcat np. 8080. Rozbieżność portu ogranicza nasze działania. O tym już wiecie, czas dowiedzieć się więcej na temat SOP.  Czytaj dalej…

GWT – ograniczenie permutacji

Kontynuujemy dzień z Google, a konkretniej z Google Web Toolkit. Tym razem problem permutacji. Każdy programista piszący aplikacje z wykorzystaniem frameworku GWT wie, a przynajmniej powinien wiedzieć, co oznaczają permutacje podczas kompilacji programu. Załóżmy, że tworzymy aplikację wielojęzyczną w GWT – powiedzmy, że 3-języczną. Kompilator wspiera 6 silników przeglądarek, więc z prostych wyliczeń wychodzi nam niepozorna liczba 18. Co ona oznacza? Jest to liczba permutacji, jakie kompilator uruchomi podczas kompilacji aplikacji … ale jednomodułowej. Jeśli w aplikacji jest kilka modułów to liczba permutacji jest zwielokrotniona zależnie od liczby modułów. To prowadzi do frustracji, w przypadku gdy DevMode (HostedMode) nie wystarcza nam w rozwijaniu, testowaniu funkcjonalności itp. Musimy skompilować aplikację, a w przypadku tylu permutacji potrafi to trwać od kilkunastu minut do kilkudziesięciu, w zależności od posiadanego sprzętu. Jak temu zaradzić?  Czytaj dalej…

GWT – osadzanie obrazka, a jego rozmiar

Zbyt dużo pomysłów na wpisy, zbyt dużo treści do opublikowania. Ale to Was nie powinno martwić 🙂 Gorzej sprawa wygląda z czasem autora, ale powoli, powoli jakoś dam radę.

Dzisiaj mowa będzie o Google Web Toolkit i problemie osadzania obrazka na stronie. Ktoś powie „to żaden problem – ustalając szerokość lub wysokość w arkuszu stylów, przeglądarka sama dostosuje nam obrazek, a dokładniej przeskaluje nam go”. Ja odpowiem – i tak, i nie. W czym tkwi problem?  Czytaj dalej…

Apache Maven – błąd przepełnienia pamięci

apmavenTym razem szybko, krótko i przyjemnie. Skupimy się na niezbyt lubianym przez programistów błędzie java.lang.OutOfMemoryError. Niektórzy dostają dreszczy jak spotykają coś takiego na konsoli, ale tak naprawdę nie ma czego się bać. Na logikę biorą zostało zbyt mało pamięci przydzielone w stosunku do zapotrzebowania (zasobów) – lub domyślny przydział jest zbyt mały.

W związku z powyższym należy ten limit zwiększyć. Jedynym problem zatem jest zlokalizowanie miejsca gdzie, i jak tego dokonać. Osobiście spotkałem się raz z taką sytuacją. Miało to miejsce, gdy aplikacja rozwijana przez mój zespół osiągnęła (teraz już wiem) limit przydziału pamięci potrzebnej podczas kompilacji. Czytaj dalej…