Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: batman, dodany: 08.06.2010 08:00, tagi: internet

Od kilku miesięcy Microsoft prowadził zamknięte testy Office Web Apps, konkurencji Google Docs. Wczoraj Office Web Apps został upubliczniony w ramach projektu SkyDrive. Pod adrersem office.live.com mamy możliwość tworzyć i edytować dokumenty Word, Excel, PowerPoint oraz OneNote i to wszystko z poziomu przeglądarki internetowej.

o1

W chwili obecnej usługa dostępna jest jedynie w Stanach Zjednoczonych, Wielkiej Brytanii, Kanadzie oraz Irlandii, jednak nic nie stoi na przeszkodzie, by korzystać z niej również w Polsce. Wystarczy odwiedzić adres http://office.live.com/?docsf=1.

Office Web Apps oferują nam następujące funkcjonalności:

  • upload istniejących dokumentów z dysku o2

  • edycja dokumentów online

o3

  • możliwość pracy nad jednym dokumentem przez kilka osób w tym samym czasie
  • kontrola wersji (historia zmian w dokumencie i możliwość odtworzenia jednej z poprzednich wersji)
  • gotowe szablony dokumentów
  • możliwość edycji dokumentów w wersji desktopowej Office
  • możliwość udostępniania dokumentów innym osobom
  • wszystkie dokumenty przechowywane są w usłudze SkyDrive

Niedługo aktualizacji doczeka się Hotmail, a co za tym idzie lista zmian i funkcjonalności znacznie wzrośnie. Między innymi będzie możliwość przeglądania dokumentów bezpośrednio w wiadomości e-mail oraz zamiast wysyłania dokumentów w postaci załączników, będzie możliwość przekazania dokumentów do SkyDrive. W wiadomości zamieszczone będą jedynie linki do wersji online dokumentów.

Jedyne co mnie niepokoi w Ofiice Web Apps, to wydajność. Na stosunkowo krótkim dokumencie, przeglądarka (IE8) dosyć mocno zwalniała, a pojawiające się elementy (np wybór koloru czcionki), potrzebowały około 2 sekund, by się załadować i wyświetlić swoją zawartość. Z drugiej strony Google Docs do demonów szybkości również nie należy.

Czy Office Web Apps będzie Google Docs killerem? Całkiem możliwe. Dodanie bardzo modnych ostatnio funkcji społecznościowych do dokumentów, mocna integracja z Hotmail oraz możliwość edycji dokumentów w aplikacji desktopowej (Office) daje ogromną przewagę Microsoftowi. Jeśli Windows Live Wave 4 rzeczywiście będzie tak dobry jak go zapowiadają, Google może mieć niemałe kłopoty.

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

Autor wpisu: sokzzuka, dodany: 07.06.2010 23:47, tagi: php

I jak to mówi jeden bloger “piekło zamarzło”. Dziś właśnie został commitowany do php-owego trunka patch z featurem znanym też jako “function array dereferencing”. Co to oznacza ? Mniej więcej tyle, że od dziś będzie można robić coś takiego:

function foo(){
    return array('baz','bar');
}
//nowy feature !!!
echo foo()[0];

Dotychczas nie było możliwości by z funkcji zwracającej tablice od razu odwołać się do jej elementu. Należało zrobić to przez zmienną tymczasową. Szczegóły i patch można znaleźć na http://wiki.php.net/rfc/functionarraydereferencing.

Autor wpisu: batman, dodany: 07.06.2010 18:00, tagi: javascript, css

Jakiś czas temu w serwisie develway.pl pojawił się link do bloga Six Revisions, na którym przedstawiono opis nowego API Google. Tym razem firma ta wzięła się za typografię w sieci i wypuściła Font API.

Google Font API jest sposobem na uzyskanie na stronie “ładnych” czcionek bez konieczności uciekania do tanich sztuczek w postaci obrazków lub plików swf. Firma Google dostarcza galerię czcionek, z których możemy skorzystać oraz kod, który musimy dodać do naszej strony.

Jak to działa?

Zasada działania Google Font API jest bardzo prosta. Wystarczy, że do naszej strony dodamy kod

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Font+Name">

Gdzie Font+Name jest nazwą czcionki z galerii. Od razu zaznaczę ważną rzecz. Wszystkie spacje muszą zostać zamienione na znak plusa (+). Jeśli chcemy wykorzystać więcej czcionek na naszej stronie, wystarczy, że oddzielimy je pionową kreską – |

Następnie stosujemy standardowy kod CSS, który wykorzystuje nową czcionkę. Należy pamiętać o dodaniu czcionki “zapasowej”, która zostanie użyta w przypadku problemów z wykorzystaniem niestandardowej czcionki.

<style>
  p {
	font-family: 'Font Name', serif;
	font-size: 48px;
  }
</style>

A tak to działa (i wygląda) w praktyce (tekst można zaznaczyć i skopiować):

Hello World!

Jeśli z jakiegoś powodu napis nie wygląda “ładnie”, oto zrzut ekranu

hello-world

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

Autor wpisu: Śpiechu, dodany: 06.06.2010 22:52, tagi: php, zend_framework

Na stronie Zend Framework macie podane konwencje/standardy dotyczące formatowania kodu, nazewnictwa i dokumentacji. Chciałbym pewne rzeczy rozszerzyć w oparciu o własne obserwacje kodu ZF i zalecenia twórców/ekspertów (głównie z ich blogów). Nie będę oczywiście bawił się w tłumacza. Mam nadzieję, że ten 3 częściowy wpis się komuś przyda. Dzielę go z braku czasu… 1. Formatowanie [...]

Autor wpisu: sokzzuka, dodany: 06.06.2010 21:55, tagi: php, apache

Czasami przychodzi ten dzień, że mamy dość naszego poczciwego PHP. Czasami nawet nie mamy go dość ale chcielibyśmy spróbować coś innego, albo po prostu w pracy chcą, żebyśmy coś napisali w jakimś innym języku. W mojej pracy magisterskiej mam między innymi porównać wydajność dwóch języków (vel interpreterów języków) skryptowych – PHP i Pythona w typowych zastosowaniach (pobieranie rekordów z bazy, parsowanie xml etc).

Stanąłem więc przed wyzwaniem nauczenia się Pythona, a co więcej podpięcia go apache-a, aby generował jakieś strony. Artykuł ten będzie krótkim tutorialem, o tym jak skonfigurować Pythona i Apache-a oraz odpalić prostą PHP-like aplikacje. Mam nadzieje również, że ten artykuł przerodzi się w jakąś dłuższą serię o tym jak zrobić to samo w obu językach ;) .

Taka mała uwaga odnośnie tekstu, zakładam, że czytający ten tekst znają podstawy pythona umożliwiające napisanie prostego skryptu “Hello World”, jeżeli nie, to polecam “Zanurkuj w Pythonie” – dobry wstęp/tutorial.

Setup.

Zakładam, że wszyscy mają skonfigurowanego Apache-a w celu tworzenia aplikacji PHP-owych.  Pierwszym krokiem jaki będziemy musieli uczynić to ściągnięcie odpowiedniej paczki instalacyjnej Pythona (najlepiej wersji 2.6).

Jako, że pracuje na Windowsie, ściągałem pierwszą z góry paczkę. Jest to fajny instalator, który po kilku kliknięciach zainstaluje i skonfiguruje nam Pythona, nie ma tu żadnych specyficznych opcji więc nie będę się zagłębiał.

Drugim krokiem będzie ściągnięcie mod_wsgi, jest tam kilka paczek dla Windowsa i Linux-a, specyficznych dla konkretnych wersji interpretera, my ściągamy tą dla wersji 2.6. Ściągnięta paczkę rozpakowujemy i kopiujemy do katalogu rozszerzeń apache-a (katalog_apache/modules).

Następnie otwieramy plik httpd.conf i dodajemy następujące linie.

LoadModule wsgi_module modules/mod_wsgi-win32-ap22py26-3.0.so
<IfModule wsgi_module>
WSGIScriptAlias /py D:/python_test/index.py
</IfModule>

Gdzie oczywiście mod_wsgi-win32… jest nazwą pliku modułu, który skopiowaliśmy. Natomiast dyrektywa WSGIScriptAlias mówi apache-owi, że cały ruch, który przychodzi na adres http://localhost/py ma przekierowywać do skryptu znajdującego się w ścieżce D:/python_test/index.py .

Gdy już powpisywaliśmy wszystko do httpd.conf, zapisujemy plik i restartujemy apache-a. Jeżeli wszystko poszło gładko to nie powinno być żadnych błędów logu błędów apache-a. W razie błędów, polecam Wiki projektu mod_wsgi. Tam znajdziecie odpowiedzi na większość pytań związanych z instalacją.

Nasz pierwszy web-owy skrypt.

Każda aplikacja działająca na mod_wsgi musi stosować się do specyfikacji WSGI (Web Server Gateway Interface), która została opisana w jakimś tam mądrym dokumencie Pythonowym. Jest on długi i nudny więc bez większych ceregieli powiem to co ważne.

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

Autor wpisu: cojack, dodany: 05.06.2010 16:55, tagi: sql

PostgreSQL Ostatni wpis dotyczył postgresa i zgadnijcie czego będzie dotyczył ten. Otóż dzisiaj chciałbym napisać o instrukcjach warunkowych i pętlach. Sprawa może się wydawać banalne, ale oczywiście nie musi. Dlaczego? Ponieważ instrukcje warunkowe to nic jak najzwyklejsze IF … ELSE IF … ELSE. Oprócz tego postgres udostępnia nam inne opcje warunków które możemy wykorzystać w zapytaniach sql a mowa tutaj o CASE. A teraz dwa słowa o pętlach. Te bynajmniej ni w ząb ni w pietruchę nie są podobne do niczego. Składnia zwykłego LOOP w postgresie to powiedzmy samo LOOP … END LOOP, ha a gdzie warunki co? Otóż do tego zaraz przejdziemy.

Instrukcje warunkowe

Ten dział będzie poświęcony po prostu warunkom. Otóż jak wyżej wspomniałem w postgresie możemy stosować różnego rodzaju warunki, począwszy od IFów poprzez CASE skończywszy na COALESCE lub nie. Popatrzmy na przykład użycia IFa w funkcji:

CREATE..... RETURNS VOID AS $BODY$
  BEGIN
    SELECT
      ....
    FROM
      ...
    WHERE ....;
 
    IF NOT FOUND THEN
      -- coś tu robimy jak nie znaleziono
    ELSE
      -- w innym wypadku co innego lub kończymy RETURNem
    END IF;
  END;
$BODY$ LANGUAGE 'plpgsql';

Jak widać składnia IFa jest trochę podobna do tej której znamy z innych języków z tym że tutaj mamy słowo kluczowe THEN, które nie w każdym języku jest (bodajże w pascalu było ale mi się szukać nie chce). Kończywszy IFa musimy użyć składni END IF; Jak widać nie mamy tutaj żadnych klamer, dlatego ważne jest by stosować wcięcia przy kodowaniu by się samemu nie pogubić w zagłębieniach kodu. Taki kod od razu staje się czytelniejszy.

Jak widać dzięki takim rozwiązaniom ograniczymy się do wywołania tylko jednej funkcji z kodu php, dzięki temu i kod staje się czytelniejszy, w ten sposób można przerzucić pewną cześć logiki aplikacji na bazę danych, co w znacznym stopniu ułatwia pracę (ale i też może utrudnić, o tym później). Nie chce też znowu wałkować manuala, dlatego link do instrukcji warunkowych znajdziecie na dole, ale co jest ważne, konstrukcja musi zwrócić wartość BOOLEAN, ale to jest chyba oczywiste. W postgresie nie mamy znaku porównania tak jak w innych językach, a chodzi mi o podwójny znak równa się ==, tutaj jest tylko pojedynczy znak równa się. No i teraz, kiedy rozróżnić oba te znaki? Otóż bardzo prosto, porównanie jest tylko i wyłącznie w konstrukcjach warunkowych, użycie znaku równa się w postaci:

"_someVar" = "someVar2";

Jest niczym innym jak przypisaniem, i tak samo jak w każdym innym języku programowania jest l-value i r-value, ale o tym już kiedyś wspominałem, także nie będę tego przytaczał ponownie. Jest także inna konstrukcja która pozwoli nam przypisywać wartość zmiennej. Może ktoś z Was kojarzy język “Prolog”? Jak nie to nie ważne, ale w nim jest użyty taki przełącznik warunkowy “:-” a w postgresie mamy “:=” jako alias do “=” z tym że jest to tylko i wyłącznie przypisanie wartości do zmiennej. Także zachęcam Was do używania takiej oto konstrukcji przypisywania:

"_someVar" := "someVar2";

Jest ona czytelna, i oczywista, z niczym innym się kojarzyć nie może jak z przypisaniem.

Wracając do konstrukcji warunkowych to pozostało nam do opisania jeszcze CASE, jest to po prostu cudowna rzecz, coś wspaniałego, gdyż używanie IFów w SELECTcie jest po prostu mało czytelne i niewygodne. Dlatego dostaliśmy CASE, taki postgresowy switch. Do rzeczy, składnia CASE jest dwojaka:

CASE WHEN condition THEN result
     [WHEN ...]
     [ELSE result]
END

albo:

CASE expression
    WHEN value THEN result
    [WHEN ...]
    [ELSE result]
END

W zależności od potrzeb, używamy jednej z nich, ale mała podpowiedź kiedy którą wybrać, otóż gdy mamy warunek na danej kolumnie to lepiej wybrać wariant drugi, podając tą kolumnę jako expression, gdy mamy parę warunków na różnych kolumnach łatwiej jest wtedy operować nimi na pierwszym przykładzie, przykłady w manualau, a ja dwa słowa o wyniku z THEN, otóż podana fraza w THEN zostanie bezwzględnie dorzucona do wyniku zapytania, czyli dzięki temu w THEN możemy podać np nazwę kolumny jaką byśmy chcieli pobrać w zależności o warunku, który zostanie spełniony. nie sprawdzałem ale pewnie też z tego poziomu można by wywołać funkcję. Warto spróbować kiedyś.

To by było tyle na temat CASE i IF, oprócz tego mamy jeszcze takie funkcje jak NULLIF, COALESCE, GREATEST i LEAST. Krótko o tych funkcjach:

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

Autor wpisu: Damian Tylczyński, dodany: 04.06.2010 13:41, tagi: php

Wrażenia z polskiej konferencji PHPCon 2010.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.