Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2013

Walidacja haseł przy użyciu wyrażeń regularnych

Jeśli jesteś web-developerem to na pewno w swojej karierze piasłeś różnego rodzaju panele logowania (być może nawet oparte na implementacjach OpenID). Najprawdopodobniej również używałeś różnego rodzaju wyrażeń regularnych do sprawdzania poprawności wprowadzanych danych. Ciekawym sposobem na walidację wprowadzanych haseł podczas rejestracji użytkowników może być zastosowanie właśnie wyrażeń regularnych. Generalnie typy wyrażeń możemy podzielić na POSIXowe oraz PERLowe. Do realizacji tego zadania musimy użyć wyrażeń typu PERLowego, gdyż te drugie nie obsługują wzorców "Lookingahead" i "Lookingbehind". Inaczej można je nazwać asercjami o zerowej długości. Co to oznacza? To, że możemy przy ich pomocy spasować jakiś wzorzec bez włączania wyników tej części wyrażenia do jego wyniku. Dla przykładu podam tutaj wyrażenie, które wpasowuje wzorzec tekstu zawierające w treści słowo "parapet", w taki sposób, że do wyniku działania wyrażenia zostanie zwrócony jedynie

DeliveryServer - DynaMents - Pobranie ścieżki węzła/liścia

Ostatnio zmagałem się z problemem pobrania ścieżki węzła/liścia w języku DynaMents, który używany jest po stronie DeliveryServer'a. W XSLT można tego dokonać stosując: <xsl:value-of select= "name()" /> Po długich bojach, udało mi się to osiągnąć przy pomocy DynaMent'u attribute działającego w trybie read . W DynaMencie tym można podać atrybut value . W atrybucie tym można podać 3 różne wartości, są to: value - pobierana jest wartość węzła/liścia, path - pobierana jest ścieżka węzła/liścia, name - pobierana jest nazwa węzła/liścia.  Listing poniżej przedstawia kod, który wypisuje wszystkie ścieżki węzłów z globalnej zmiennej REQUEST wraz z wartościami znajdującymi się w węzłach. Linia 3 tego listingu odpowiada za wypisanie ścieżki węzła. 1. <rde-dm:attribute type= "children" mode= "for-each" alias= "reqAttr" source= "request" > 2. <rde-dm:attribute attribute= &quo

XSLT 1.0 - lowercase i uppercase

 XSLT 2.0 udostępnia dużo więcej wbudowanych funkcji niż wersja 1.0 tego standardu. Są to między innymi funkcje lower-case() i upper-case(): <xsl:variable name= "var" > ŚmIeSzNy NaPiS </xsl:variable> <xsl:value-of select= "upper-case($var)" /> Czasem jednak pojawia się konieczność poprawienia kodu, który napisany został w specyfikacji XSLT 1.0 i nie ma możliwości jej zmiany na nowszą. W takim wypadku część funkcji dostępnych w XSLT 2.0 trzeba będzie zaimplementować samemu. Niestety tutaj pojawia się kolejny problem - w starej XSLT nie ma możliwości tworzenia własnych funkcji. Całe szczęście możemy osiągnąć efekt jaki udostępniają lower-case() i upper-case() poprzez użycie funkcji translate() . Oto jak można to zrobić: <xsl:variable name= "lowerCase" > abcdefghijklmnopqrstuvwxyz </xsl:variable> <xsl:variable name= "upperCase" > ABCDEFGHIJKLMOPQERTUVWZYZ </xsl:variable> <

LaTeX - nowa linia w tabelkowym elemencie \caption{}

Jeśli tworzysz jakiś tekst w LaTeX i chcesz w elemencie \caption{} to być może natknąłeś się na podobny problem jak ja. Poniżej przedstawiam kilka rozwiązań, które mogą zadziałać. Spróbuj każdego z nich, zanim się poddasz :) Użycie standardowego \\: \ caption { first line \\ second line } Na przykład: \begin { document } \begin { table }[ !ht ]   \ centering   \begin { tabular }{ cc }    lorem ipsum & dolor sit amet \\    \ hline   \end { tabular }   \ caption { first line \\ second line }   \ label { table:multilined_caption } \end { table } \end { document } Jeśli to rozwiązanie nie zadziała, to spróbuj: \ caption { first line \newline second line } lub: \ caption { first line \protect\\ second line } Zwróć uwagę, iż tekst z \caption{} często jest prezentowany na spisie tabel, więc może się zdarzyć, iż wszystkie linie będą tam wyświetlane (nie zawsze jest to pożądany efekt). Artykuł udostępniany na licencji CC-BY-SA-3.0

Poko Rocket - czyli Chu Chu Rocket w przeglądarce

Dla frajdy, w ramach wolnego czasu postanowiłem zaimplementować swoją pierwszą grę, która będzie dostępna w każdej przeglądarce pod każdym systemem operacyjnym. Z powodu, iż wspomnianego wolnego czasu nie mam zbyt wiele oraz dlatego, że do dziś łezka mi się kręci, gdy przypomnę sobie prostą, ale wspaniałą grę "Chu Chu Rocket" stworzoną na platformę Sega Dreamcast (oraz później GameBoy Advance) doszedłem do wniosku, iż to właśnie ten oryginalny i kultowy tytuł stanie się moją inspiracją. Moim celem nie jest jednak zaimplementowanie dokładnie takiej samej gry, z dokładnie takimi samymi zasadmi. Już w obecnym stadium (a jest to jeszcze BETA) dodałem jeden element, który nie był dostępny w oryginalnej wersji. Tym elementem jest strzałka zmieniająca domyślny kierunek poruszania się kotów i myszek (z prawej w lewo, a przy ponownym kontakcie z lewej na prawo itp). Pomysłów na rozwój mam zdecydowanie więcej, jednakże postanowiłem już teraz podzielić się z potencjalnymi odbiorcami t

OpenSUSE Linux 12.3 - czarny ekran

 Ze względu na moduł KMS, który jakiś czas temu został dodany do jądra systemu GNU/Linux, sporo sterowników kart graficznych musiało zostać przepisanych. Niestety do tej pory niektórzy użytkownicy mogą doznawać różnego rodzaju problemów z tym związanych. W OpenSUSE 12.3 (najprawdopodobniej też w innych oznaczonych 12.x) występuje problem braku prawidłowego funkcjonowania podświetlenie matrycy w laptopach typu emachines (między innymi w modelach emachines e525) wyposażonych w karty graficzne Intel GM45. Problem ten również może występować w innych dystrybucjach systemu GNU/Linux, które wykorzystują jądra Linux w tych samych wersjach. Żeby rozwiązać ten problem jako podstawowy test wykonaj próbę uruchomienia systemu z dodatkowym parametrem uruchomienia jądra " nomodeset ". Dopisz ten parametr do linii argumentów podczas wyświetlania menu probramu GRUB. Jeśli po uruchumoniu działa podświetlenie, to najprawdopodobniej występować może problem z rozdzielczością, która np. będzi