Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: batman, dodany: 24.03.2010 07:30, tagi: javascript, jquery

Na oficjalnym blogu jQuery UI pojawiła się informacja o wydaniu kolejnej wersji biblioteki. Nowości jakie znalazły się w wydaniu to nowe pluginy i efekty  oraz duża ilość poprawek i usprawnień. Programiści skupili się na tym, by UI stało się jeszcze bardziej modułowe i łatwiejsze do rozszerzania. Oto lista zmian jakie znalazły się w nowej wersji: position – pozycjonowanie elementu względem

Autor wpisu: batman, dodany: 23.03.2010 22:05, tagi: zend_framework

Jedną z podstawowych funkcjonalności dostępnych w formularzach są podpowiedzi (tooltip). W przypadku Zend_Form do dyspozycji jest jedynie opis (description). Na szczęście nie potrzeba nic więcej, poza biblioteką javascript, do wyświetlenia podpowiedzi. Z dodatkową pomocą przychodzi bardzo dobra biblioteka – jQuery Tools. Zaczniemy od formularza. <?php class Application_Form_TooltipExample

Autor wpisu: cojack, dodany: 21.03.2010 18:20, tagi: sql

Ostatnimi czasy coś nie mam weny by napisać cokolwiek na blogu, także postanowiłem tym razem coś może o postgresql napisać i jego własnościach tudzież mowa o widokach w postgresql. Rzecz biorąc czym jest widok? Widok jest niczym innym jak zapytaniem kryjącym się pod krótką nazwą, jak pisałem w wcześniejszej notce o RBAC cz.3 z pewnego zapytania można było utworzyć sobie widok. Może więcej szczegółów technicznych, składnia widoku ma się tak:

CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]
    AS query

Sama składnia może się wydawać prosta choć nie musi ;] składnia podana w nawiasach kwadratowych jest opcjonalna. Prze zemnie rzadko wykorzystywana, bo nie tworzę jakiś tymczasowych widoków, nie zapisuję widoku do innego schematu niż ten w którym się znajduję ani też nie używam OR REPLACE gdyż jak instaluje na nowo to drop db i amba.

Teraz może co do samej składni

OR REPLACE – co dziwnego o tym piszą w manualu, to się można dowiedzieć na stronie podanej poniżej. Ale przytoczę fragment.

CREATE OR REPLACE VIEW is similar, but if a view of the same name already exists, it is replaced. The new query must generate the same columns that were generated by the existing view query (that is, the same column names in the same order and with the same data types), but it may add additional columns to the end of the list. The calculations giving rise to the output columns may be completely different.

I teraz pytanie, po czorta w takim razie OR REPLACE jeżeli zmienimy sobie całkowicie widok a pozostawimy tą samą nazwę, trochę dziwna akcja, chociaż może nas to też z jednej strony zabezpieczać przed nałogowym wstawianiu OR REPLACE i nie daj Bóg strzelimy gdzieś dwa takie same nazwy widoków, hmmm w sumie może i dobrze.

Przykład jakiegoś widoku? Proszę bardzo, z naszego RBAC’a z zapytania sprawdzającego uprawnienia, zróbmy sobie teraz widok:

CREATE VIEW "checkRightView" AS
SELECT 
  "allow",
  "u2g"."idUser",
  "m"."moduleName",
  "a"."actionName"
FROM 
  "rbac_privilages" p 
LEFT JOIN 
  "rbac_module" m 
ON 
  ( p."idModule" = m."idModule" ) 
LEFT JOIN 
  "rbac_action" a 
ON 
  ( p."idAction" = a."idAction" ) 
LEFT JOIN 
  "rbac_user_to_group" u2g 
ON 
  ( p."idGroup" = u2g."idGroup" );

Dodaliśmy tylko nagłówek create view i ucięliśmy klauzule where, a teraz przykład jak takiego widoku użyć:

SELECT 
  "cRV"."allow"
FROM 
  "checkRightView" AS "cRV"  -- prawie jak honda ^^
WHERE 
  "cRV"."idUser" = 2 
AND 
  "cRV"."moduleName" = 'music' 
AND 
  "cRV"."actionName" = 'index';

Tadam, proste prawda? Tworzenie widoków można by porównać do polimorfizmu, lecz nim nie jest. Co nam to daje? Na pewno przejrzyste zapytania sql, co do debugowania to w sql zawsze był z tym problem, dlatego przed utworzeniem widoku pierw lepiej sprawdzić czy zapytanie śmiga.

Co do ograniczeń widoku, wiążą się z tym pewne niedogodności, gdyż jak widać by mieć dostęp do tabel łączonych w zapytaniu, trzeba pobrać ich elementy w samym zapytaniu (w widoku) by mieć do nich dostęp przy wywoływaniu widoku. Cóż jak to uważam za pewne ograniczenia, czy nim jest teoretycznie? Nie mam takiej wiedzy by to stwierdzić.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: m1chu, dodany: 19.03.2010 22:14, tagi: javascript

HTML5: obsługa elementów AUDIO i VIDEO

Serwisów oferujących przeglądanie zasobów multimedialnych nie brakuje w sieci. Do niedawna jednak wszystkie oparte były o wykorzystanie możliwości znaczników object lub niepoprawnego embed. Problem w tym, że rozwiązania te opierały się o wtyczki firm trzecich, takie jak QuickTime, czy Flash. HTML 5 standaryzuje osadzanie plików muzycznych i filmów.

Kwestia dźwiękowa: element AUDIO

Jedna z najbardziej, od dawna oczekiwanych możliwości w HTML 5. Pozwala na natywne odtwarzanie utworów muzycznych w przeglądarce. Określana znacznikiem audio.

Wg. specyfikacji może przyjmować pięć atrybutów:

  • autoplay – określa czy odtwarzać automatycznie dźwięk, gdy zostanie on załadowany,
  • controls – określa czy wyświetlić odtwarzacz w standardowym układzie,
  • loop – określa czy powtarzać odtwarzanie,
  • preload – wyznacza, czy załadować zasobów w trakcie ładowania strony,
  • src – adres URL do pierwotnego, ładowanego źródła.

Korzystając z powyższych informacji możemy otrzymać następujący przykład:

<!-- domyślny układ, startuje automatycznie, jedno źródło -->
<audio src="test.ogg" controls autoplay></audio>

W praktyce pojawi się jednak problem, związany z implementacją różnych wersji kodeków w przeglądarkach (np. Vorbis, Advanced Audio Coding, MPEG-1 Audio Layer 3). Z tego powodu, trzeba aktualnie definiować dodatkowe zasoby w tagu source. Obsługuje on atrybuty:

  • media – zdefiniowanie typu zasobu. Domyślnie odpowiada wszystkim typom mediów,
  • src – adres URL do pierwotnego, ładowanego źródła,
  • type – definiuje typ zasobu, pozwalając na określenie przeglądarce, czy może odtworzyć go, bez konieczności pobierania. Musi być pod postacią prawidłowego typu MIME. Opcjonalnie, wewnątrz niego można zdefiniować parametr codecs, określający jak zakodowany jest zasób.
<!-- domyślny układ, startuje automatycznie, wiele źródeł -->
<audio controls autoplay>
	<!-- Firefox ge 3.5, Chrome ge 3 beta, Opera ge 10.5 -->
	<source src="test.ogg" type="audio/ogg; codecs=vorbis">
	<!-- Safari ge 4, Chrome ge 3 beta -->
	<source src="test.mp3">
	<!-- Opera ge 10.5, Firefox ge 3.5 -->
	<source src="test.wav">
</audio>

Na wypadek niekompatybilnej przeglądarki można wewnątrz elementu audio wstawić alternatywną wiadomość, bądź plik Flash z autorskim odtwarzaczem.

<!-- domyślny układ, startuje automatycznie, wiele źródeł -->
<audio controls autoplay>
	<!-- Firefox ge 3.5, Chrome ge 3 beta, Opera ge 10.5 -->
	<source src="test.ogg" type="audio/ogg; codecs=vorbis">
	<!-- Safari ge 4, Chrome ge 3 beta -->
	<source src="test.mp3">
	<!-- Opera ge 10.5, Firefox ge 3.5 -->
	<source src="test.wav">
	<!-- alternatywny wynik -->
	Twoja przeglądarka nie obsługuje HTML 5.
</audio>

W rozwiązaniu powyższego problemu pomóc może także użycie możliwości JavaScriptu i metod/atrybutów/zdarzeń dostępnych w API. Pozwalają one na manipulację na obsługiwanych plikach. Niestety skorzystanie z możliwości obiektu Audio nie będzie możliwe w jakiejkolwiek wersji IE.

  • buffered – określa ilość oraz początkowy i końcowy czas zbuforowanego zasobu,
  • canPlayType(typ_MIME) – zwraca informacje na temat tego, czy dany typ obsługiwany jest przez klienta. Możliwe wyniki to: no, maybe, probably,
  • currentTime – pozwala na ustawienie lub pobranie aktualnego czasu odtwarzania,
  • duration – wyświetla czas trwania utworu. W wypadku nie załadowania go, zwraca NaN (Not a Number),
  • ended – zwraca prawdę, jeżeli zakończono odtwarzanie (w przód),
  • loop – wartość logiczna, pozwalająca na zapętlanie dźwięku,
  • muted – zwraca lub ustawia, czy kanały audio są wyciszone,
  • pause() – pauzuje odtwarzanie,
  • paused – przetrzymuje informacje o tym, czy element jest spauzowany,
  • play() – wznawia odtwarzanie,
  • played – przetrzymuje informacje o odtwarzanym elemencie,
  • volume – zwraca lub ustawia głośność dźwięku w zakresie od 0.0…0.1.

Przykład:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Nikodem Ośmiałowski, dodany: 19.03.2010 00:11, tagi: php

W frameworku KohanaPHP w wersji 2.x były tzw. hooks czyli po naszemu miejsca w które można się wpiąć z własnym kodem. Przydawały się w różnych sytuacjach m.in do podpięcia niestandardowego routingu korzystającego z bazy danych. W najprostszym wydaniu mogło to wyglądać mniej więcej tak: function db_routing() { // routing po bazie danych } Event::add('system.routing', 'db_routing'); Taki rodem [...]

Autor wpisu: batman, dodany: 16.03.2010 20:02, tagi: internet

Na oficjalnej stronie poświęconej IE9 pojawił się link do pobrania testowej wersji przeglądarki giganta z Redmond. Aplikacja przeznaczona jest dla developerów, dlatego też nie nadaje się do użytku codziennego. Jej zadaniem jest zapoznanie programistów z nowymi możliwościami przeglądarki. Po instalacji IE9 Test Drive ukaże się nam następujące okno. Jak widać aplikacja nie przypomina typowej

Autor wpisu: batman, dodany: 15.03.2010 12:55, tagi: zend_framework

Jak informuje Zend Developer Zone, na blogu Pablo Viqueza pojawiła się dokumentacja do Zend Framework w formacie chm. Dokumentację można pobrać ze strony autora.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.