Jquery – dwukropek w atrybucie id

JQuery wykorzystuje selektory w celu odwołania się do elementu na stronie.
Selektor jest przekazywany jako argument funkcji, np:

jQuery('div:first');

Selektory działają tak samo jak reguły styli w arkuszach stylów.
Pracując z pewnymi frameworkami takie działanie może nastręczać problemy.
Czasami pojawia się identyfikator elementu w takiej postaci:

<div id="content:someElement"></div>

Próba odwołania się do elementu po identyfiatorze skończy się takim błędem:
Error: Syntax error, unrecognized expression: unsupported pseudo: someElement

Aby uniknąć tego typu problemów musimy przekazać w taki sposób identyfikator do funkcji jQuery
aby traktował go dosłownie, a nie jako notację css.

//Niepoprawnie
jQuery('#content:someElement');
//Poprawnie
jQuery('#content\\:someElement');

Tomcat Maven Plugin – instalacja i użycie

Revision 0.2

Tworząc projekt webowy z wykorzystaniem mavena warto zadbać o jego sprawne osadzanie w serwerze aplikacyjnym.
Na takie działania pozwala nam Apache Tomcat Maven Plugin. Jak sama nazwa wskazuje plugin współpracuje z Tomcatem.

Oto czego potrzebujemy:

  • Przede wszystkim linux ;).
  • Zainstalowany serwer Tomcat, w moim przypadku jest to Tomcat 7.
  • Zainstalowany i skonfigurowany maven2

Aby móc korzystać z pluginu musimy umieścić odpowiedni wpis w pliku pom.xml aplikacji.

<!-- Tomcat plugin for embedded tomcat -->
	<plugin>
		<groupId>org.codehaus.mojo</groupId>
		<artifactId>tomcat-maven-plugin</artifactId>
		<version>1.1</version>
		<configuration>
			<url>http://127.0.0.1:8080/manager/html</url>
			<server>TomcatServer</server>
			<path>/MyApp</path>
		</configuration>
	</plugin>
Objaśnienia do sekcji configuration:
<url> – Zawarte w tym tagu informacje podają defoultowy url do managera tomcata.
<server> – Określa unikalną nazwę serwera. Nazwa serwera musi być identyczna z nazwą podaną w pliku settings.xml.
<path> – Określa ścieżkę dla kontekstu aplikacji.

Musimy również wprowadzić pewne zmiany w pliku konfiguracyjnym mavena (settings.xml).
Jego położenie w moim przypadku to: etc/maven2/settings.xml.
W sekcji <servers> dodajemy następujący wpis:

	<server>
                <id>TomcatServer</id>
                <username>tomcat</username>
                <password>tomcat</password>
        </server>

Ta sekcja zapewnia autentyfikacje mavena. Hasło i login użytkownika muszą się zgadzać z danymi zdefiniowanymi w pliku tomcat-users.xml.

	<role rolename="manager-gui"/>
 	<role rolename="manager-status"/>
	<user username="tomcat" password="tomcat"  roles="manager-gui, manager-status"/>

mvn tomcat:deploy – komenda ta mówi mavenowi, aby umieścił aplikację w serwerze TomcatServer (http://127.0.0.1:8080/) , w katalogu /MyApp
wykorzystując do tego uprawnienia zdefiniowane w pliku settings.xml.

Przydatne linki:
Tomcat maven plugin


Cykl życia serwletu

Revision 0.2

Cykl życia serwletu jest związany z trzema metodami: init, service, destroy. Są one określane przez kontrakt, który musi akceptować każdy serwlet. Jest nim interfejs Servlet
Kontrolę natomiast nad cyklem życia serwletu sprawuje kontener aplikacyjny.
Typowy scenariusz prezentuje się następująco:

  1. Kontener ładuje oraz inicjalizuje serwlet podczas startu lub opóźnia inicjalizację, aż do momentu przyporządkowania (zmapowania) żądania do odpowiedniego serwletu.
    Sposób ładowania serwletu zależy od atrybutu znajdującego się w tagu <load-on-startup>, który jest umieszczony w deskryptorze wdrożenia (web.xml).

    Gdy instancja serwletu nie istnieje, kontener:

    • ładuje klasę serwletu do przestrzeni adresowej serwera
    • tworzy instancję tej klasy, która jest tworzona przez kontener dynamicznie: Class.forName(nazwa serwletu).newInstance(),
    • wywołuje metodę init w celu inicjalizacji serwletu; warto wspomnieć, iż inicjalizacja serwletu jest wykonywana tylko raz i musi odbyć się przed obsłużeniem pierwszego żądania. Metoda init jako atrybut przyjmuje obiekt ServletConfig, który posiada parametry konfiguracyjne serwletu, zaczytane z deskryptora wdrożenia(web.xml). Po inicjalizacji instancja klasy rezyduje w pamięci oczekując na przydział żądań.
    • W chwili gdy serwer otrzymuje żądanie od klienta, tworzy instancje obiektów reprezentujące żądanie klienta i odpowiedź serwera, następnie uruchamia nowy wątek i wywołuje metodę service w celu przekazania obiektów żądania i odpowiedzi(request i response).
  2. Jeśli jest koniecznie usunięcie serwletu, kontener finalizuje życie serwletu poprzez wywołanie metody destoy.


Cykl życia serwletu


Iteracja objektu map.

Prosty i elegancki sposób iteracji po obiekcie map.

for (Map.Entry<Integer, LocalDate> object : source.entrySet()) {
			if (object.getValue().isEqual(target)) {
				object.getKey();
                                object.getValue();
			}
		}

ConcurrentModificationException – jak go uniknąć.

Wyjątek ConcurrentModificationException pojawia się gdy na przykład podczas iteracji kolekcji próbujemy ją jednocześnie modyfikować.

Przykład takiego zachowania prezentuje kod:

Jednym ze sposobów uniknięcia takiej sytuacji jest przebudowanie tak metody, aby nie usuwała obiektu z kolekcji podczas jej iteracji.

Przykład:

Innym, wykorzystanie iteratora w celu poruszania się po kolekcji.

Przykład:

Pewnym mankamentem tego podejścia jest brak możliwości dodawania elementów do kolekcji.
Moim skromnym zdaniem podejście pierwsze jest bardziej eleganckie i funkcjonalne.


Wyrażenia regularne

Revision 0.1

Wyrażenie regularne – jest to ciąg znaków opisujący pewien wzorzec, który akceptuje bądź nie określony zbiór łańcuchów symboli. Upraszczając do granic możliwości, załóżmy że mamy pewien zbiór ciągów znaków (wyrazów) i chcemy z tego zbioru wyselekcjonować tylko te, które nas interesują. Za pomocą wyrażeń regularnych tworzymy wzorzec, który wyłuska nam z ów zbioru tylko te łańcuchy który nas interesują.

Gdzie mogą się nam przydać wyrażenia regularne ?
Wszędzie tam gdzie chcemy uzyskać określony zbiór danych wyjściowych. Choćby do walidacji pól na formularzach.

Składnia

Znaki specjalne: ^, $, ., *, ?, +, [, ], {, }, (, ), \
Znaczenie poszczególnych znaków.
  • ^ (daszek) dopasowanie do początku wiersza, np: ^ko pasuje do: kot, kora, koza.
  • $ (dolar) dopasowanie do końca wiersza, np: ak$ pasuje do: krzak, ptak, tartak.
  • . (kropka) pasuje dokładnie do jednego dowolnego znaku z wyjątkiem końca lini.
  • * poprzedzający znak może wystąpić zero lub więcej razy, np: d*arek pasuje do: arek, darek ,dddarek.
  • ? poprzedzający znak może wystąpić zero lub raz.
  • + poprzedzający znak może wystąpić raz lub więcej razy.
  • [] dopasowanie jednego elementu z listy. Każdy znak znajdujący się wewnątrz nawiasów kwadratowych jest traktowany jako pojedynczy znak. [abc] pasuje do a,b lub c. [a-z] określa literę z przedziału a-z.
  • {} określa zakres wystąpienia poprzedzającego znaku, np: {n} – poprzedzający znak musi wystąpić n razy.
  • () grupuje ciąg znaków np: (abc) pasuje do abc.
  • \ przywraca zwykłe znaczenie znaków specjalnych, np: \. – oznacza zwykłą kropkę.
  • | alterantywa, np: (kot|pies) pasuje do kot lub pies.
Symbole formatujące tekst
  • \e oznacza escape
  • \n oznacza nową linię
  • \r oznacza powrót karetki
  • \t oznacza tabulację
  • \a oznacza alarm
Wbudowane klasy znaków.
  • \d dowolna cyfra
  • \D dowolny znak nie będący cyfrą
  • \s dowolny biały znak (np spacja)
  • \S dowolny znak nie będący białym znakiem
  • \w dowolny znak należący do słowa(cyfry, litery i znak _)
  • \W dowolny znak nie należący do słowa

Platforma Javy wspiera tworzenie wyrażeń regularnych. Do obsługi wyrażeń regularnych służą klasy Matcher i Pattern z pakietu java.util.regex.
Klasa Pattern nie posiada publicznych konstruktorów. Aby utworzyć wzorzec, należy wywołać publiczną statyczną metode compile, która jako argument przyjmuje wyrażenie regularne. Metoda zwraca obiekt Pattern. Natomiast metoda matcher klasy Pattern zwraca obiekt klasy Matcher. Jako argument metoda ta przyjmuje ciąg znaków, w którym będzie poszukiwany wzorzec.

Konstrukcja

Pattern p = Pattern.compile(„wyrażenie_regularn”);
Matcher m = p.matcher(„przeszukiwany_wzorzec”);

Przykłady


Postgresql – konwersja tablicy na wiersze.

Do konwersji tablicy na wiersze służy wbudowana funkcja UNNEST. Jest ona dostępna od wersji 8.4+.

Użycie :

SELECT UNNEST (ARRAY[‚Rafal’, ‚Anna’]) AS names;


Komendy linux

Revision 0.1

Podstawowe komendy linux.

 

      • cp – Kopiuje pliki i lub katalogi.
        • cp [opcja]… źródło… katalog docelowy…
          • -r – Kopiuje rekurencyjnie całe poddrzewa katalogów do katalogu docelowego.
          • -s – Tworzy dowiązania symboliczne zamiast kopii plików innych niż katalogi. Wszystkie nazwy plików źródłowych muszą być bezwzględne (zaczynające się od `/’), chyba że pliki docelowe są w bieżącym katalogu.
          • -v – Wypisuje nazwę każdego elementu przed skopiowaniem.
          • -x – Pomija te katalogi, które znajdują się na innym systemie plików niż ten na którym rozpoczęło się kopiowanie.
      • df – Wyświetla ilość zużytego miejsca na zamontowanych partycjach.
        • df [opcja]… [plik]… 
          • -h – Powoduje wyświetlenie wartości w jednostkach, będących potęgami liczby 2, jak np. MB, GB.
          • -H – Powoduje wyświetlenie wartości w jednostkach będących potęgami liczby 10.
          • -t – Powoduje wyświetlenie tylko systemów plików, typu podanego za argumentem.
          • -x – Powoduje wyświetlenie wszystkich systemów plików, poza podanym typem.
      • find – Polecenie find służy do wyszukiwania plików.
        • find [path…] [expression]
          • -name  – Wyszukiwanie pliku o podanej nazwie.
          • -user – Wyszukiwanie katalogu, pliku należącego do podanego użytkownika.
          • group – Zwraca pliki należące do określonej grupy.
          • -type – Zwraca pliki określonego typu.
          • Użycie
    • grep – Wyszukuje w strumieniu wejścia ciągu znaków pasującego do zadanego wzorca.
      • grep [operacje] wzorzec [pliki…]
        • -v – Negacja wzorca , nie może wystąpić.
        • -c – Wyświetla liczbę znalezionych wystąpień wzorca.
        • -I – Wyświetla nazwę pliku, w którym został odnaleziony wzorzec.
        • -n – Wyświetla numer linii, w której znaleziono wzorzec.
        • -i – Ignoruje duże litery.
        • Użycie
    • ssh – Służy do łączenia się z zdalnym komputerem. SSH zapewnia szyfrowanie oraz identyfikację użytkownika.
      • ssh [-l nazwa_użytkownika ] nazwa_hosta | user@hostname [polecenie ]
    • tail – Polecenie wypisujące podaną ilość linii pliku lub potoku.
      • tail [opcja]… [plik]…
        • -f – Wyświetla przyrostowe linie w pliku.
        • -c – Wyświetla końcową liczbę bajtów z pliku.
        • -n – Wyświetla n końcowych linii.
    • ls – Tworzy dowiązania (linki) między plikami. Jeśli ostatni z argumentów określa istniejący katalog, to w katalogu tym zostaną utworzone dowiązania do każdego plików podanych jako poprzednie argumenty (cel). Dowiązania te będą mieć takie nazwy, jak pliki źródłowe. Dowiązanie twarde – est to umieszczona w systemie plików referencja wskazująca na konkretny, istniejący wcześniej i-węzeł w obrębie tej samej partycji. Dowiązania symboliczne – są specjalnym typem plików, w którym plik dowiązania faktycznie wskazuje na inny plik (przez nazwę). Dla większości operacji (otwarcie, odczyt, zapis i tak dalej) otrzymujących jako argument dowiązanie symboliczne jądro automatycznie dereferencjowuje („odwskaźnikowuje”) dowiązanie i działa na samym celu dowiązania.
      • ln [opcje]… źródło[nazwa dowiązania], ln [opcje]… katalog.
        • -s – Tworzy dowiązanie symboliczne zamiast twardego.
        • –backup[=metoda] – Tworzy kopie zapasowe tych plików, które mają być nadpisane lub usunięte.
        • d, -F, –directory – Pozwala użytkownikowi uprzywilejowanemu (root) na tworzenie dowiązań twardych (hardlinks) do katalogów.
        • -f, –force – Usuwa istniejące pliki docelowe.

 

 


Copyright © 1996-2010 Mindstorm. All rights reserved.
Jarrah theme by Templates Next | Powered by WordPress