Jean Michel Jarre - po koncercie

W moim odczuciu był to najlepszy koncert na jakim do tej pory byłem i chyba długo będę musiał czekać na coś lepszego, o ile w ogóle doczekam.

Kilka minut po godzinie 16 wysiadłem na przystanku SKM Gdańsk Stocznia i ruszyłem razem z tłumem w stronę bram. Mimo tak wczesnej pory ludzi było już bardzo dużo. Po ponad pół godzinie przedzierania się przez kolejki i bramki udało mi się szczęśliwie wylądować w sektorze A1 tak gdzieś około 10 metrów przed sceną - na tyle blisko niej by widzieć co się dzieje na niej i na tyle daleko od niej by bez problemu widzieć wizualizacje na hangarach służących za telebimy i niebo nad sceną.

Powoli nasz sektor zaczynał się zapełniać i rozpoczęło się koczowanie na kocach, gazetach, plecakach i tym co kto miał pod ręką. Mimo, że nikt ze znajomych nie był w moim sektorze bo wszyscy jakoś podostawali A3 albo któryś z C to znalazło się towarzystwo, w którym dało się miło spędzić czas (pozdrowienia w tym miejscu dla ekipy z Wrocławia, chociaż pewnie i tak tego nie przeczytacie ;) ). Zaczęła się zbliżać godzina 19, chwila na którą zostało zapowiedziane wykonanie Zdjęcia Rodziny Polskiej (dołączył do niej nawet sam Jarre). W pięciu ujęciach została uwieczniona cała obecna publika trzymająca się za uniesione w góre ręce w geście solidarności. Zdjęcie w jakości pozwalającej na odróżnienie twarzy każdej osoby niedługo będzie można pobrać ze strony Miasta Gdańsk.

Rozpoczęło się coraz bardziej niecierpliwe oczekiwanie na koncert. Krótko po godzinie 20 na scenie ze swoim keyboardem pojawił się Stanisław Soyka, który dał krótki bo półgodzinny występ. Po jego zejściu ze sceny w tle pojawiły się ciche dźwięki muzyki nastrajającej publikę na to co ich czeka. Ciche, nieprzeszkadzające acz skutecznie przebijające się przez gwar tłumu i powodujące gorączkową wręcz atmosferę oczekiwania. Zaczęło się powoli czuć klimat. W pewnym momencie muzyka stała się głośniejsza i pojawiły się obrazy pokazujące Jarre'a grającego wśród ubranych w robocze stroje stoczniowców. Chwila gwaru wśród tłumu szukającego wzrokiem artysty, którego nie było widać na scenie. Jak się okazało wjechał on na platformie z lewej strony sceny, z której to po skończeniu utworu wbiegł na scenę i przywitał się z publiką. Rozpoczęło się wielkie przedstawienie wspaniale ukazujące klimat zarówno stoczni jak i upamiętnianych wydarzeń. Dźwig stoczniowy podświetlony niebieskim i zielonym światłem sprawiający futurystyczne wręcz wrażenie, który wtoczył się krótko po rozpoczęciu koncertu. Kawał zardzewialej blachy okrętowej zawieszonej na wspomnianym dźwigu służący za dodatkowy ekran do projekcji. Wnętrze hangaru za sceną, w którym buchała para, snopy iskier, buchające słupy ognia. To wszystko wspaniale tworzyło atmosferę stoczniowego industrializmu. Projekcje, w dużej części w czarnobiałych lub czerwonych barwach znakomicie nawiązywały do wydarzeń minionych lat. Jarre'owi udało się zbudować wspaniały klimat, który wprowadził widownię w swoisty trans. Ocierane przez niektórych łzy wzruszenia przy utworach dedykowanych stoczniowcom i śp. papieżowi Janowi Pawłowi II, las falujących rąk podniesionych w geście zwycięstwa, ogień z zapalniczek, słowa "Murów" śpiewane przez chór Uniwersytetu Gdańskiegoi i publikę, a także prawie nie ustające oklaski - tego nie da się zapomnieć.

Ten koncert zdecydowanie był inny niż jego dotychczasowe. Mniej było efektów świetlnych, laserowych, na które niestety część publiki była nastawiona. Dla mnie to jednak wielki plus tego przedstawienia bo nie wyobrażam sobie by w chwilach kiedy na hangarach wyświetlane były sceny z czołgami, protestującymi, migawkami z tamtych czasów czy też papieżem teren Stoczni miał rozbłyskiwać światłami dziesiątek laserów i setek reflektorów niczym na jakiejś dyskotece. Ten minimalizm efektów aczkolwiek o fajerwerkach w trakcie koncertu tego akurat nie można powiedzieć ;), stanowił właśnie cały urok tego wydarzenia. Jak to określił prezydent miasta Gdańska, Jarre przypomniał nam w piękny sposób... nas samych, Polaków.

Niestety były pewne zgrzyty organizacyjne, na które niestety nie można spuścić litościwej zasłony milczenia. Pierwsze i najważniejsze to to, że koncert raczej nie był bezpiecznie zorganizowany. W plecaku można było praktycznie wnieść wszystko, nikt nawet nie zajrzał co też mogę mieć w środku zwiniętego w kłębek swetra - o tym niech świadczy chociażby liczba przemyconych aparatów, które były zakazane (sam też sobie pluję w brodę, że jednak nie wziąłem :/). W chwili gdy wchodziłem na teren Stoczni nie było takich tłumów, a i tak połowa ludzi nie przechodziła przez bramki z wykrywaczami metalu tylko obok nich, a ochrona nie robiła nic sobie z tego. Pomijam fakt, że bramka nie zadziałała nawet na pokaźny pęk kluczy jaki miałem w kieszeni... Kompletną zaś porażką było złe przeliczenie liczby osób na m2 kiedy to się okazało, że w sektorze A1 trzeba jeszcze pomieścić ileś osób stojących za bramami, a miejsca już po prostu nie było. Skutkiem prób pomieszczenia tego nadmiaru ludzi było wpuszczenie ich na drogi ewakuacyjne... rewelacja.

Jednak mimo tych zgrzytów to nie żałuję wybrania się na koncert i z przyjemnością jeszcze raz wziąłbym w nim udział ;)

Nowe mieszkanie

Po miesiącu szukania i polowania na coś fajnego nareszcie udało nam się znaleźć całkiem niezłe, umeblowane, niedrogie, 4-pokojowe mieszkanko w gdańskich Pieckach (Morena). Dzielnica całkiem miła, samowystarczalna, jak to wynajmujący powiedział "Przez miesiąc można z dzielnicy nie wychodzić bo wszystko jest na miejscu". Z opowiadań znajomych tam mieszkających wynika, że rzeczywiście jest to prawda ;)

Z najważniejszych zalet: pizzeria Krokodyl o 5 minut drogi piechotą, Carrefour również 5 minut piechotką, piekarnia z najlepszym chlebem w Gdańsku pod nosem, kupa linii autobusowych w tym nocne do Śródmieścia Gdańska i do Wrzeszcza więc z imprezami nie będzie problemu, właściciele mieszkania przez cały rok mieszkają w Toruniu więc nikt na głowie nam siedzieć nie będzie, gdyż będą zaglądać raz na dwa-trzy miesiące tylko. I co najważniejsze: każdy ma osobny pokój co jest niewątpliwą zaletą w przypadku odwiedzin ]:-> Słowem - da się żyć :D

Jak ktoś chętny to może sobie zobaczyć lokalizację mieszkanka na mapie. Jest to jeden z trzech bloków w środkowej podkówce, ten najbardziej na zachód z najciemniejszym dachem.

Umowa już podpisana, w sobotę wieczorem albo w niedzielę rano dostajemy klucze do mieszkania i rozpoczynamy wielką przeprowadzkę.

Jean Michel Jarre

Dzisiaj w punktach dystrybucji TicketPro Polska rozpoczęła się "sprzedaż ostatniej szansy" biletów na koncert Jean Michel Jarre'a. Po godzinie stania w kolejce udało mi się nareszcie zdobyć miejscówkę w sektorze A1. Swoją drogą ciekawe miny musieli mieć ci co zakupili bilety od koników w cenie sięgającej nawet 300 PLN np. na Allegro (legalnie to 33, 55 lub 66 PLN w zależności od sektora).

Przygotowania w Gdańsku do prawdopodobnie największego w historii Polski koncertu trwają już od dłuższego czasu. Ciekawi mnie tylko jak sprawnie zostanie rozwiązany problem komunikacyjny w dniu koncertu. Tak trochę pesymistycznie patrząc, zwłaszcza na fakt zamknięcia części Al. Zwycięstwa będącej główną arterią samochodową Gdańska, zapowiada się niezły paraliż połowy miasta. Zobaczymy ;)

Teraz zostało już tylko czekać na piątek na godz. 16:00 kiedy to otworzą się bramy Stoczni Gdańskiej, a potem po 20:00 rozpocznie się wielki show. Mam nadzieję, że będzie warto :)

Wybierający się na koncert mogą znaleźć kilka ważnych informacji na Gdansk.pl (strona dzisiaj wyjątkowo muli, ciekawe czemu :D):
  • Dojazd z PKP Przewozy Regionalne oraz Intercity do Gdańska
  • Zmiany w komunikacji miejskiej w dniu koncertu
  • Zmiany w organizacji ruchu drogowego
  • Biała kartka za szybą samochodu znakiem identyfikacyjnym (apel organizatorów)
  • Koncert dla niepełnosprawnych
  • Lokalizacje miejsc postojowych
  • Mapki

UPDATE:
Transmisja koncertu rozpocznie się o godz. 20:00 w TVP1, a także w Telewizji Interaktywnej iTVP

Disk quota exceeded

Goshh, co za adminów mam u siebie w akademiku... Jakiś mądry 3 tygodnie temu postanowił sobie, że wprowadzą quoty użytkownikom jednego z serwerów. Pomijam już fakt tego, że właściwie większość administratorów osiedla była przeciwna temu bo po co utrudniać życie jak nie ma potrzeby. Ale nie, okazało się, że czyjeś tam zdanie jest ważniejsze od reszty. I tak oto od 1 sierpnia na serwerze pojawia się po zalogowaniu informacja, że do wykorzystania jest tylko 100 MB przestrzeni dyskowej na usera. Tak przy okazji to dobrze, że nie wprowadzili ograniczenia na wielkość baz danych bo prawie tyle samo wykorzystuję ;)

No trudno, póki nic nie musiałem władować to leżało sobie spokojnie te moje 250 MB na serwerze. Jak przyszła potrzeba to jakoś zrobiłem porządki i zmieściłem się na 100 MB. Działało kilka dni. Półtora tygodnia temu chcę coś wrzucić, quoty nie przekroczyłem, ale komunikat o jej przekroczeniu jak najbardziej dostałem. Mail do admina - cisza. Drugi mail - "Ok, sprawdzę to". Czekam, czekam i sobie poczekałem. Zaczęła się pielgrzymka osobista. Oczywiście admina nie można zastać. Dzisiaj w końcu udało się ale to co usłyszałem to normalnie cycki opadają. Uwaga, cytuję: "Ale ja się nie znam na quotach". Parsknąwszy śmiechem obróciłem się na pięcie i zawróciłem do swojego pokoju.

I tak oto zostałem z quotą 100 MB, zawartością katalogu liczącą 71 MB oraz komunikatem "Disk quota exceeded"...

Ehhh, aż się chce zawołać "kodi wróć!". Za czasów rządów starej ekipy z kodim na czele to serwery to były serwery, nie miało prawa nie działać dłużej niż było potrzeba. Odkąd w ubiegłym roku zmienił się "zestaw adminów" na młodszych bo stara kadra studia skończyła to moim skromnym zdaniem sieć akademicka zaczęła schodzić na psy...

Odszedł...

Kolejny Wielki człowiek odszedł z tego świata... Brat Roger, założyciel Wspólnoty Taize został dzisiaj zasztyletowany... I to jeszcze w dniu kiedy rozpoczęły się Światowe Dni Młodzieży w Kolonii...

Pozostało tylko mieć nadzieję, że dobro, które zasiał na ziemi nie zginie. Mimo wszystko cieszę się, że dane mi było poznać na żywo tego człowieka, brać udział w Europejskich Spotkaniach Młodzieży i przeżyć te piękne chwile ze Wspólnotą.

Tych, którzy chcą poznać historię Brata Roger oraz Wspólnoty zapraszam do lektury obszernego artykułu na zaprzyjaźnionej Polskiej Nieoficjalnej Stronie Wspólnoty Taize.

Magisterka z oGame?

Nazywam się xxxxxxxx yyyyyyyy. Jestem studentem socjologii Uniwersytetu im. Adama Mickiewicza w Poznaniu, na którym piszę pracę magisterską o środowisku graczy OGame. Jej problematyka obejmuje między innymi zagadnienia bezpośrednio związane z grą, jej wpływ na kontakty z innymi ludźmi oraz na charakter takich znajomości.
Niektórzy rzeczywiście mają ciekawe tematy prac dyplomowych :D I pomyśleć, że można sobie wyższe wykształcenie zrobić w oparciu o gry internetowe ;)

Dysbrainia czy desperacja?

Właśnie mam dylemat czy maila, którego otrzymałem zakwalifikować jako rasową dysbrainię czy też jako typową desperację.

Zamieściłem na jednym z portali ogłoszenie o poszukiwaniu mieszkania. Jako jego tytuł podałem "Mieszkanie 3-pokojowe". W treści zaznaczyłem, że interesują mnie dzielnice z dobrym dojazdem, przy trasie SKM-ki, mieszkanie powinno być umeblowane oraz wysokość opłat na osobę nie większa niż 400 PLN. Przed chwilą dostałem odpowiedź:

Subject: Mieszkanie 3-pokojowe
Treść: Brzeźno1, 2 pokoje, kuchnia połaczona z pokojem, częściowo umeblowane (kuchnia, zabudowa przedpokoju, lodówka, pralka), Odnowione, telefon, internet. Blisko morza. Widok na zatokę. 1100 zł z opłatami.

Niemniej, osobnik, który to mi tego maila przysłał dostarczył mi całkiem fajnego ubawu ;)

1 - dla tych co nie wiedzą: Brzeźno jest na całkowitym odludziu, wygodnej komunikacji tam nie ma i oczywiście nie leży na głównej trasie SKM-ki.

Chip Online

Piękne czerwone piętno zrobione rozżarzonym prętem dla Chip Online za wprowadzenie płatnego dostępu do części artykułów. A tak lubiałem sobie ich poczytać...

Dynamicznie generowany CSS

Skrobiąc dzisiaj swoją stronę napotkałem pewien problem, który teoretycznie mógłby wymagać stworzenia kilku różnych arkuszy styli. Załóżmy, że mamy stronę, której każda podstrona jest utrzymywana w innej kolorystyce. Oczywiście nie jest problemem stworzyć takie arkusze, jednak przy najdrobniejszej modyfikacji musimy uwzględnić ją we wszystkich plikach, a to już może być z lekka dokuczliwe.

Problem można rozwiązać badzo prosto w przypadku, gdy mamy na serwerze dostęp do PHP. Załóżmy, że mamy następujący szablon Smarty:
{if $DZIAL eq "oferta"}
	<link rel="stylesheet" type="text/css"
        href="./style.php?main=blue&second=red" />
{elseif $DZIAL eq "sklep"}
	<link rel="stylesheet" type="text/css"
        href="./style.php?main=green&second=blue" />
{elseif $DZIAL eq "onas"}
	<link rel="stylesheet" type="text/css"
        href="./style.php?main=red&second=green" />
{/if}
Jak widać, skrypt style.php jest odpowiedzialny za wygenerowanie arkusza CSS. Informacje, w tym przypadku o kolorystyce, przekazujemy za pomocą zmiennych.

Plik style.php w większości przypadków będzie wyglądać tak jak zwykły CSS. Jednak na samym jego początku trzeba wysłać jeden nagłówek:
<?php header ('Content-Type: text/css'); ?>
Na brak nagłówka odporny jest IE co oczywiście o nim dobrze nie świadczy, mimo, że akurat w tym momencie piszący strony pod niego nie będą narzekać. Firefox zaś zachowuje się tak jak powinien i jeśli nie otrzyma nagłówka to po prostu nie zaaplikuje stylu z nieznanego typu pliku.

Po zabiegach z nagłówkami możemy przystąpić do tworzenia styli. Sposób zapisu nie różni się niczym od zapisu zwykłego CSS'a. Jednak w pewnym momencie dochodzimy do miejsca, gdzie chcemy dynamicznie wygenerować dane. Możemy to zrobić w następujący sposób:
#navcontainer a:hover, #active a:link, #active a:visited {
	background: 
	<?php 
		switch ($_GET['main'])
		{
			case 'blue' :
				print '#0fb6ed';
				break;
			case 'red' :
				print '#ff3d33';
				break;
			case 'green' :
				print '#bde24e';
				break;
		}
	?>
	url('gfx/new/ground_dot_<?php echo $_GET['second'] ?>.gif');
}

#active a:hover {
	background-color : 
	<?php
		switch ($_GET['second'])
		{
			case 'blue' :
				print '#0fb6ed;';
				break;
			case 'red' :
				print '#ff3d33;';
				break;
			case 'green' :
				print '#bde24e;';
				break;
		} 
	?>
}
Jak widać, metoda całkiem przyjemna i pokazująca, że PHP można wykorzystać do ułatwienia sobie życia w wielu miejscach.

Fieldset w IE

IE jak zwykle wymiata. Zgodnie z dobrym zwyczajem chciałem sobie elementy formularza powsadzać w znaczniki <fieldset>. Po radosnym wykorzystaniu go postanowiłem sobie go ostylować dając mu border : dotted. Czas jakiś pracowałem, ładnie wszystko pod Firefoksem wyglądało, aż w końcu nadeszła ta wiekopomna chwila gdy sprawdziłem co tam słychać pod IE. Moim oczom ukazało się takie oto cudo:



Jak to zobaczyłem to już zacząłem kombinować co tu z tym fantem zrobić i jak go zamienić bo przecież zleceniodawcy, który to kilka dni temu dowiedział się ode mnie, że są inne przeglądarki niż IE, nie dam takiego syfu. Zanim jednak zacząłem radośnie wywalać fieldsety coś mnie tknęło i zmieniłem ostylowanie na border : solid. Efekt:



No po prostu rewelacja. Pozostawiam bez komentarza po raz kolejny zdolności programistów z Redmond do wyczyniania cudów i wprawiania mnie w zadziwienie...

Aha, jakby się ktoś na przyszłość zastanawiał to w IE dashed == dotted. Jak to pirveli określił: "Sprawdzanie odbywa się po pierwszej literze" :)

HTMLowy XHTML?

Grzebiąc sobie po archiwach grupy pl.comp.lang.php natknąłem się na wzmiankę o tzw. teście porneLa. Test ten dotyczy sprawdzenia czy rzeczywiście to co pracowicie stworzyliśmy jest pełnowartościowym, możliwym do pełnego wykorzystania XHTML'em czy też jednak nie. Jak się okazuje, samo sprawdzenie strony Validatorem W3C niewiele daje, gdyż nie wykrywa on pewnego drobnego, a jednak ważnego szczegółu. Szczegółem tym jest sposób określenia Content-Type. Bardzo często spotyka się strony chwalące się znaczkiem zgodności z XHTML, które wysyłają dokument z nagłówkiem Content-Type: text/html co powoduje, że będzie on traktowany jako zwykły, najczęściej jeszcze błędny dokument HTML. Aby wykorzystać w pełni możliwości naszego X powinien on zostać wysłany z nagłówkiem application/xhtml+xml. Niestety odnośnie tej drugiej możliwości standardy W3C określają ją jako 'SHOULD', a nie 'MUST' wobec czego takie strony są zgodne ze standardem XHTML aczkolwiek tak samo (o ile nie mniej) użyteczne jak zwykły HTML.

Aby jednak nie przepisywać napisanych już tekstów teraz garść odnośników:
  • Irracjonalne uwielbienie dla XHTML - strona porneLa, na której możemy poczytać jak dokładnie powinien wyglądać poprawny XHTML i dlaczego jednak go używać plus oczywiście wcześniej wspomniany "test porneLa"
  • Content Negotiation - czyli co zrobić jeśli naszą stronę w XHTML będą odwiedzać internauci wyposażeni w przeglądarki nieinterpretujące lub interpretujące XHTML czy chociażby google.
  • XHTML Media Types - krótka specyfikacja z W3C
A na koniec dodam taki jeden miły szczególik: po wysłaniu application/xhtml+xml nasza nowoczesna przeglądarka (np. Firefox) zamienia się w niezły validator, który bonusowo nie jest wrażliwy np. na to, że generujemy strony na podstawie danych przechowywanych w sesji co jak wiadomo jest oczywistą bolączką validatora z W3C ;)

Parse error

W przypadku gdy parser php wywali błąd
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
to należy zakomentować kawałek kodu, który zawiera tę linię. Jeśli nadal parser wywala nam błąd w tymże komentarzu, to należy sprawdzić czy 110 linijek wcześniej nie umieściło się przez przypadek znaczka ` zamiast [tab] ;)

To tak ku pamięci półgodzinnego szukania małego dziada ;)

[PHP] Zmienne zmienne w funkcjach

Podczas dynamicznego generowania formularzy na podstawie informacji z bazy danych często przydatne jest wprowadzenie ukrytej tablicy, która zawiera nazwy interesujących nas zmiennych wykorzystanych w tymże formularzu. Przykładowo może to być coś takiego:
<select name="cat24">
  bla bla bla
</select>
<input type="hidden" name="varnames[]" value="cat24" />
Po wysłaniu takiego formularza wystarczy w prosty sposób przejrzeć zawartość zmiennej $varnames i można "zaopiekować się" potrzebnymi danymi np. w taki sposób:
$catsinfo[$dbrow['cat_id']] = array ('label' => $dbrow['label'],
  'crits' => $crits, 'selection' => ${$varnames[count ($catsinfo)]});
Oczywiście ktos mógłby powiedzieć po co wymyślać ukryte zmienne jak można wykorzystać np. $_POST i też ma się dostęp do wszystkich zmiennych. Jednak nie zawsze się tak da, gdyż można potrzebować informację na temat pewnego określonego zbioru zmiennych.

Pewien mały problem powstaje w przypadku, gdy powyższą linijkę będziemy chcieli użyć w funkcji. Jak wiadomo wewnątrz funkcji jeśli zmienne nie są zadeklarowane jako global to będą miały zasięg lokalny tylko wewnątrz ciała tej funkcji. Jeśli jesteśmy w stanie przewidzieć jakie zmienne chcemy wykorzystać to raczej nikt nie będzie zastanawiać się co zrobić z tym fantem. Co jednak ze zmiennymi zmiennymi? Ano to:
foreach ($varnames as $value)
    global $$value;
Otóż rozwiązanie jest w sumie banalne aczkolwiek w pierwszym momencie gdy pojawił mi się ten problem to chwilę musiałem pomyśleć, żeby wymyśleć ;)