Przejdź do głównej zawartości

Posty

Jak sprawdzić wersję dystrybucji Linuxa?

 Zazwyczaj wystarczy wywołać poniższe polecenie: cat /etc/issue Welcome to openSUSE 12.3 "Dartmouth" - Kernel \r (\l). Artykuł udostępniany na licencji CC-BY-SA-3.0

Java - jak uruchomić JVM w innym języku

Ostatnio musiałem uruchomić JVM w innym języku niż domyślny język systemowy. Aby to osiągnąć należy do linii poleceń dodać dodatkowy parametr: -Duser.language=XX Tak więc cała linia polecenia powinna wyglądać np. następująco: java -jar -Duser.language=en jChess.jar Artykuł udostępniany na licencji CC-BY-SA-3.0

Linux - dzielenie filmu na części (ffmpeg)

 Ostatnio natknąłem się na ciekawy problem. Mianowicie plik wideo, który "ważył" około 5GB chciałem przegrać na pendrive celem uruchomienia w telewizorze. Oczywiście telewizor z niewiadomych przyczyn nie wspierał linuxowych systemów plików, więc dało się skopiować jedynie pierwsze 4GB filmu z uwagi na ograniczenie maksymalnego rozmiaru pliku. Z uwagi na to, iż pliki wideo mają odpowiednie nagłówki itp podzielenie tegoż filmu poleceniem split było niemożliwe: split -b 2048m nagranie.avi Na systemach GNU/Linux wszystko zazwyczaj można zrobić w prosty sposób z poziomu konsoli. Z pomocą przyszedł mi ffmpeg. Poniżej przykład podziału pliku video o długości 02 godziny 49 minut i 00 sekund: fmpeg -i nagranie.avi -vcodec copy -acodec copy -ss 00:00:00 -t 01:30:00 nagranie_p1.avi;  ffmpeg -i nagranie.avi -vcodec copy -acodec copy -ss 01:30:00 -t 02:49:00 nagranie_p2.avi  W ten sposób otrzymamy 2 pliki video (mniej więcej równe) o nazwie nagranie_p1.avi oraz nagranie_p2....

WordPress Form Maker 1.6.5 - Stored XSS

W ostatnim czasie bawiłem się wtyczką do WordPressa o nazwie Form Maker (v1.6.5). Postanowiłem przejrzeć kod tej wtyczki i sprawdzić jego jakość oraz poziom zabezpieczenia danych przychodzących od użytkowników. Jak się okazuje poziom zabezpieczeń tego dodatku pozostawia wiele do życzenia (zresztą poziom jakości kodu źródłowego również). Wygenerowałem przy użyciu panelu zarządzania FormMaker'a formularz z jednym polem typu "select: oraz przyciski "submit" i "reset". Następnie dodałem widget do prawej kolumny bloga, efekt jest następujący:   W zasadzie pole to nie jest zabezpieczone w żaden sposób przed doklejeniem do wartości skryptu JS. Wartości te wpadają do tabelki wp_formmaker_submits do kolumny element_value. Użytkownik zarządzający (domyślnie administrator) może przeglądać w panelu WP statystyki utworzone na podstawie przesłanych przez użytkowników danych, oto przykład ( http://localhost/wordpress/wp-admin/admin.php?page=Form_maker_Submits ): ...

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= ...

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> ...