Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Athlan, dodany: 07.03.2010 20:12, tagi: php, internet

Ostatnio byłem zobligowany napisać nową klasę tagów do mojego projektu Sypacz.pl, która de facto zachowała stare API, lecz rozszerzyła swoje funkcjonalności, więc w kodzie projektu nie było wielu zmian. Wena spowodowała to, że zacząłem pisać kod od zera.

Cały problem polega na tym, aby napisać na tyle elastyczną klasę tagów, która przyjmie nam zestaw danych, a następnie zaprezentować ją w formie chmury, czym zaopiekuje się arkusz stylów CSS:

Nazwa tagu => Ilość występowań

Parę osób mnie pytało, jak wyciągnąć takie informacje z bazy danych:

SELECT tag_name, COUNT(tag_name) AS tag_times FROM tags GROUP BY tag_name ORDER BY tag_times LIMIT 1, 50

Wykorzystałem obiekt Vframe_Attribute, aby ustandaryzować komponent względem pozostałych w moim frameworku. Jeżeli ktoś nie chce używać obiektu Attribute, może w prosty sposób przekształcić klasę tagów, otrzymując ten sam efekt, deklarując tylko atrybut chroniony protected $_aAttributes = array();. Temat chmury tagów wydaje mi się na tyle trywialny, że nie ma się co nad nim zbyt wiele rozwodzić, zamieszczę tylko klasę i opiszę krótko w przykładach jej możliwości.

  • Vframe_Tagcloud – klasa tagów,
  • Vframe_Attribute – pomocnicza klasa atrybutów dla stosu $_aAttributes, dziedziczenie można usunąć i zadeklarować atrybut samemu.

Aby stworzyć nowy obiekt tagów, po prostu wywołujemy konstruktor:

$oCloud = new Vframe_Tagcloud();

Konstruktor nie przyjmuje żadnych argumentów, wiec możemy od razu przejść do podawania obiektowi tagów. W tym miejscu warto nadmienić, że każdy znak jest rozróżniany (ze względów elastycznych), więc jeżeli chcesz, aby Nazwatagu oraz nazwatagu były rozpoznawane jako jeden klucz, wypadałoby użyć funkcji strtolower lub mb_strtolower (dla Multibyte Strings):

foreach($aDataTags as $iKey => $aRow)
  $oCloud->add(strtolower($aRow['tag_name']), $aRow['tag_times']);

Najistotniejszą częścią klasy jest sposób renderowania chmury, które może działać w dwóch trybach:

  • Tryb prosty zwraca nam nazwę tagu oraz jego wagę po przeliczeniu w formie liczby.
  • Tryb zaawansowany zwraca nam nazwę tagu oraz tablicę z danymi:
    • level – waga tagu po przeliczeniu,
    • count – ilość występowań, taka jaką podaliśmy,
    • count_percentage – informacja, w jakiej procentowej części ilości występowań znajduje się tag, przyjmując za 100% tag, który występuje najczęściej.

Aby w prosty sposób wyrenderować chmurę tagów, używamy poniższego przykładu:

$aDataTagsRender = $oCloud->render();

Najczęściej używa się trybu prostego. Oba tryby są dalej rozbudowane, bowiem mamy możliwość zdefiniowania zakresu i dokładności wag tagów. Domyślnie wagi tagów zawierają się pomiędzy 1, a 10. Możemy na przykład przyjąć, że najmniejszą wagą jest liczba 3, największą 5, a precyzja wag tagów to 2 miejsca po przecinku:

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

Autor wpisu: batman, dodany: 07.03.2010 16:21, tagi: zend_framework

Wykorzystując Zend_Gdata_Spreadsheets stworzyłem prosty interfejs dostępu do danych zapisanych w arkuszach Google Docs. Dzięki temu uzyskałem coś na kształt bardzo prostej bazy danych. W celu skorzystania z interfejsu należy utworzyć w dokumentach Google nowy arkusz: Arkusz nazywamy w dowolny sposób. W moim przypadku jest to “Prosta baza danych”. W dokumencie nadałem następujące nazwy

Autor wpisu: batman, dodany: 06.03.2010 21:18, tagi: zend_framework

Dokumentacja Zend Framework dokładnie opisuje moduł Zend_Auth. Niestety nie opisuje w jaki sposób go zastosować w praktyce. Zaczynając swoją przygodę z ZF nie wiedziałem w jak dodać do mojej aplikacji obsługę logowania i wylogowania użytkowników. Po kilku próbach udało mi się wypracować mechanizm, który z powodzeniem stosuję w moich obecnych projektach. Składa się on z trzech elementów:

Autor wpisu: m1chu, dodany: 06.03.2010 19:17, tagi: jquery, framework

Wzorzec projektowania wtyczek jQuery na bazie metod i funkcji

Praca z jQuery prędzej, czy później wymusza na nas kompleksowe tworzenie rozwiązań wykonywanych po stronie użytkownika. Metody filtrujące, animacje, czy efekty na galeriach zdjęć łatwiej będzie osiągnąć i rozwijać posługując się, łączącymi się na wtyczki, mechanizmami metod i funkcji, dostępnymi w frameworku.

Metoda, a funkcja?

Podstawowa różnica pomiędzy nimi polega na tym, że operują na innych obiektach. Każda nowa metoda musi być dołączona do prototypu jQuery.fn, a funkcja po prostu do obiektu jQuery.

PLAIN TEXT JavaScript:
  1. /* metoda */
  2. jQuery.fn.nazwa = function() {
  3.     [...]
  4. };

PLAIN TEXT JavaScript:
  1. /* funkcja */
  2. jQuery.nazwa = function() {
  3.     [...]
  4. };

W praktyce powoduje to, że do metody odwołujemy się operując na jakimś elemencie, identyfikatorze, bądź na klasie znajdującej się na stronie internetowej, a w przypadku funkcji, po prostu ją wywołujemy w celu wykonania jakieś akcji.

PLAIN TEXT JavaScript:
  1. /* wywołanie: metoda */
  2. $(element).nazwa();

PLAIN TEXT JavaScript:
  1. /* wywołanie: funkcja */
  2. var x = $.nazwa();
  3. alert(x);

Obydwie możemy parametryzować. Argumentem może być zwykła zmienna, dowolnego, obsługiwanego przez JavaScript typu lub obiekt przechowujący zbiór pól o konkretnym przeznaczeniu.

PLAIN TEXT JavaScript:
  1. /* metoda z parametrem */
  2. jQuery.fn.nazwa = function(options) {
  3.     [...]
  4. };

PLAIN TEXT JavaScript:
  1. /* funkcja z parametrem */
  2. jQuery.nazwa = function(options) {
  3.     [...]
  4. };

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

Autor wpisu: Zyx, dodany: 06.03.2010 10:57, tagi: php

Trac to jeden z najpopularniejszych otwartych systemów zarządzania projektem. Posiada wbudowany bugtracker, przeglądarkę repozytorium SVN oraz system wiki. W większości przypadków jest to zupełnie wystarczające, ale system ma też kilka wad. Inne systemy kontroli wersji obsługiwane są wyłącznie poprzez wtyczki, składnia wiki jest według wielu osób okropna, a ponadto może wystąpić problem z hostingiem, jako że całość napisana jest w Pythonie.

Autor wpisu: batman, dodany: 04.03.2010 22:47, tagi: internet

Po bardzo głośnym starcie i rozbudzeniu ogromnych nadziei, szum po Google Wave przycichł. “Szczęśliwcy”, którzy otrzymali zaproszenie do Wave, a ciężko było nie dostać, szybko doszli do wniosku, że tak naprawdę dostali w swoje ręce jedno wielkie NIC. Ponieważ usługa znajduje się nadal w bardzo wczesnej fazie, co pewien czas pojawiają się błędy, działające wcześniej funkcjonalności przestają

Autor wpisu: batman, dodany: 01.03.2010 22:00, tagi: internet

Google poinformował na oficjalnym blogu o zakupie serwisu Picnik. Serwis oferuje edycję zdjęć online. Nie byłoby w tym nic interesującego, gdyby nie fakt, że jest to pierwszy serwis edytujący zdjęcia w chmurze. Teoretycznie powinno to pozwolić na płynną pracę nad obazem, bez konieczności długiego oczekiwania na zastosowanie zmian. Połączenie tego serwisu z Picasa może stworzyć niezły kombajn do
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.