TechLife devBlog

[CSS] Pionowo czy poziomo?

Internet Kodowanie Techblog 25 listopada 2011 o 23:51:19 | ☍ trackback

Nie będzie to flame, chciałem przedstawić Wam tylko mój punk widzenia. Do chwili zatrudnienia się w Firmie byłem święcie przekonany, że jedynym słusznym formatowaniem jest formatowanie pionowe, gdzie elegancko mamy podane jak na tacy wszystkie atrybuty.

poziomo

W Firmie przyszedł czas bardzo intensywnego kodowania. Często pracowałem z dużymi arkuszami stylów, których ciągłe przewijanie stawało się bardzo niewygodne. Nierzadko trzeba było też wrócić do poprzednich projektów i szybko poprawić jakieś drobne niedociągnięcia. Dopiero wtedy uświadomiłem sobie, że w CSS-ie jest coś ważniejszego niż atrybuty i ich wartości. Najważniejszą rzeczą są selektory! Dopiero zrozumienie tej kwestii pozwoliło mi inaczej spojrzeć na elegancję poziomego formatowania.

poziomo

Rzeczą oczywistą jest to, że najpierw wyszukujemy obiekt, który chcemy zmodyfikować a następnie dodajemy mu kolor tła czy zmieniamy margines. Priorytetem jest więc szybkie odnajdywanie selektorów a później dopisanie czy odnalezienie potrzebnego atrybutu jest już dość proste, mimo że wszystkie atrybuty są w jednej linii. IMHO o wiele więcej czasu zajmuje znalezienie odpowiedniego selektora w rozciągniętym pliku niż odpowiedniego atrybutu w liniowym zapisie.

Aby jeszcze bardziej ułatwić sobie sprawę należy trzymać się prostej zasady: najpierw definiujemy box model: display, width, height, float, margin, padding (najlepiej zachować taką kolejność) a później całą resztę (position, background, color, font-size itp). Trzymając się tej zasady od razu wiemy czy szukamy atrybutu z końca czy początku linii.

Jeszcze raz poglądowo. Formatowanie pionowe - mało widać, dużo szukania

pionowo

Formatowanie poziome - szybkie odnajdywanie selektorów i (trzymając się zasady) w miarę szybkie odnajdywanie atrybutów.

poziomo

Strony firmowe w Google Plus

Internet 08 listopada 2011 o 20:59:09 | ☍ trackback

Dzisiaj logując się na G+ zauważyłem, że zmieniła się favikona (sic!). Googlowcy nigdy nie robią drobnych zmian, więc wiedziałem już że coś dodali. Okazało się, że pojawiła się opcja zakładania kont firmowych, czyli odpowiedników Facebookowych fanpage'y.

Jak widać wygląda dość ładnie. Szkoda tylko, że w większości sprowadzało się to do skopiowania danych z Facebooka w dodatku w dość okrojonej formie. Nie można "urządzić" strony po swojemu, instalując różne grafiki czy dodatkowe aplikacje tak jak ma to miejsce na Facebooku. Dobre kilka minut szukałem też opcji przekazania innym osobom praw administracyjnym do strony, jednak jak się ostatecznie okazało taka funkcjonalność jeszcze nie istnieje...

Na reklamie oczywiście prezentuje się sweetaśnie.

Estetyka i prostota Google Plus (swoją drogą bezczelnie zerżnięta z Diaspory) wygrywają dla mnie z wyglądem Facebooka, ale uproszczona funkcjonalność już nie. Cały czas nie bardzo mogę pojąć jak się mają kręgi (G+) do grup (F). Kręgi nijak nie spełniają funkcji grup. Nie istnieje przecież pojedyncza grupa fanów np. Django, do której by można się zapisać i podyskutować, ponieważ każdy ma inny krąg znajomych.

Poza tym korzystając z G+ jako firma widzimy strumień wiadomości ludzi, których nasza firma ma w kręgu znajomych... WTF? Jak to się ma do Facebookowego firmowego Wall gdzie umieszczane są tylko wiadomości, które ktoś skierował bezpośrednio do naszej firmy?

Google, siadaj: dostateczny.

GIODO a serwis internetowy

Internet Techblog 22 września 2010 o 23:02:05 | ☍ trackback

Notka poświęcona osobom, które chcą stworzyć serwis internetowy zgodny z wytycznymi GIODO. Uwaga, dla osób postronnych notka może objawić się jako absurdalny bełkot.

Jak stworzyć serwis internetowy, na którym GIODO-mucha nie siada? Nie mam pojęcia! Ale mam nadzieję, że razem uda nam się coś wypracować. Aby przejść podstawowy tutorial absurdu należy zapoznać się z 8 minutowym filmem, stworzonym przez lookr.tv, na którym Generalny Inspektor Ochrony Danych Osobowych, niczym profesor Miodek odpowiada na pytania zatroskanych internautów:

[...] no ja takiego problemu proszę Państwa nie mam, dlatego że wiem, że definicja dotycząca tego co jest daną osobową jest definicją otwarta [...] dlatego każdy przypadek należy dokładnie analizować, czy informacja jest daną osobową czy też nie.

Mnie również cieszy, że wszystkie kwestie zostały już dogłębnie wyjaśnione. W końcu od tego jest ten Pan, od tego on jest, od tego jest on.

[...] tak rzeczywiście, zgadza się, informacje które wymagają dużego nakładu czasu i pracy nie uważa się za dane osobowe, aczkolwiek należy zawsze pamiętać o tym, że dla mnie jakieś informacje mogą powodować, że będę musiał użyć dużego nakładu czasu i pracy, natomiast dla kogo innego to będzie bardzo proste aby powiązać te informacje z konkretną osobą i o tym proszę zawsze pamiętać.

Wiec jeżeli konkurs ortograficzny wygra Gniewomir z Kozich piętek, a mieszkańcy Kozich piętek będą doskonale wiedzieli, że w ich miejscowości mieszka tylko jeden Gniewomir to z ich punktu widzenia będzie to oczywista publikacja danych osobowych. Zły przykład? Więc weźmy numer IP Gniewomira. Dla większości ludzi na świecie będzie to nic nie mówiący numer, ale nie dla ISP-a z Kozich piętek, który dostarcza internet całym 3 osobom. Bez większych trudności ustali kto kiedy korzystał z danego IP-ka.

[...] rzeczywiście my stwierdzamy, że co do zasady IP komputera jest daną osobową, ale są wyjątki, które powodują, że w pewnych momentach nie można uznać IP komputera za dane osobowe [...]

Tutaj mamy w działaniu zasadę łaskawego wykluczenia, czyli na wszelki wypadek wszystkie numery IP trzeba traktować jako dane osobowe, ale dzięki łasce naszego prawa będziemy mogli zignorować 5 adresów IP, co do których jesteśmy pewni, że nie są to dane osobowe. Oczywiście pozwoli to oczywiście na znaczne oszczędności w nakładach na ochronę danych osobowych.

Mało Wam jeszcze? Nie ma problemu - temat rzeka.

Zajrzyjmy np. w ten zakamarek strony GIODO. Można tutaj wyłowić takie coś:

dostawcy usług internetowych oraz menedżerowie lokalnych sieci mogą, stosując rozsądne środki, zidentyfikować użytkowników internetu, którym przypisali adresy ip ponieważ systematycznie zapisują w plikach daty, czas trwania oraz dynamiczny adres IP (czyli ulegający zmianie po każdym zalogowaniu) przypisany danej osobie. To samo odnosi się do dostawców usług internetowych, którzy prowadzą rejestr (logbook) na serwerze HTTP Nie ma wątpliwości, że w takich przypadkach można mówić o danych osobowych, w rozumieniu art. 2 Dyrektywy

Macie Apache z włączonym logowaniem połączeń? Gratulacje, jesteście szczęśliwymi posiadaczami bazy danych osobowych. Na szczęście podobno logi są zwolnione z obowiązku rejestracji zgodnie z zasadą przetwarzania ich "w zakresie drobnych bieżących spraw życia codziennego". [źródło]

Po więcej można sięgnąć do dokumentu ABC zagrożeń bezpieczeństwa danych osobowych w systemach teleinformatycznych (na samym dole). Z tego dokumentu głoszącego radosną nowinę możemy szybko dowiedzieć się, że również adres e-mail może (ale nie musi (i co że nie musi?!)) być daną osobową. Mój e-mail - tomasz // karbownicki.com - z pewnością można uznać za daną osobową. Natomiast na stronie 24 dowiemy się, że również nick może być daną osobową, bo jeżeli ktoś podpisze się jako "Gniewomir z Kozich piętek" to mamy daną jak w mordę strzelił. Nawet jeżeli ktoś podpiszę się (nick) jako "Adam Kowalski z Opola, ul. Krakowska 907/34" i nie mamy pojęcia czy taka osoba w ogóle istnieje to i tak należy uważać to za daną osobową, do momentu aż będziemy wiedzieli, że taka osoba nie istnieje. Wówczas możemy z czystym sumieniem wykluczyć taką daną z naszego zbioru ściśle chronionych danych osobowych, dzięki czemu oszczędzimy oczywiście góry złota i lata pracy.

Ale wróćmy do budowy serwisu internetowego. Skoro wiemy już, że niemal wszystko co wpisze użytkownik może być daną osobową, możemy przystąpić do projektowania serwisu z uwzględnieniem mechanizmów ochrony danych osobowych. Oczywiście nawet jak użytkownik nic nie wpisze tylko wejdzie na stronę to i tak mamy jego IP w logu Apache'a, wiec za wiele do szczęścia nie trzeba (-;

Na początek musimy mieć serwer posiadający odpowiedni certyfikat, że spełnia on wszystkie wymogi wynikające z przepisów i jest gotowy do przechowywania na nim danych osobowych. Kiedy już znajdziemy taki serwer czas powitać "Wymagania dotyczące struktur baz danych osobowych oraz funkcjonalności zarządzających nimi aplikacji".

Art. 32 ust. 1 pkt. 5 w powiązaniu z §7 ust. 1 pkt. 4 rozporządzenia, stawia w odniesieniu do struktury bazy danych oraz aplikacji zarządzającej zbiorem danych osobowych wymaganie posiadania opcji umożliwiającej rejestrację daty, zakresu i sposobu udostępniania danych odbiorcom (w myśl art. 6 pkt. 7 ustawy), jeśli konieczność takiego udostępnienia wynika z przepisów prawa lub jest przewidziana przez administratora danych.

Jest to jak dla mnie najbardziej niedorzeczna część, która może sprawić, że mechanizmów tych będzie tyle samo co pozostałej części serwisu! Bo jeżeli nick może być daną osobową, to musimy zarejestrować każde udostępnienie komuś nicka. Załóżmy, że mamy widok strony głównej forum, gdzie obok tematów mamy nicki autorów ostatniego posta w wątku.

Forum ArchLinux

Wówczas każde odświeżenie strony wiąże się z koniecznością odnotowania w logu tego, że o godzinie XX:YY panu A zostały udostępnione dane: nick pana B, nick pana C, nick pana D ... Nie wspominając już o bardziej skomplikowanych stronach składających się z różnych elementów, z których każdy może zwierać dane osobowe. Dajmy na to stronę główna joggera.

Jogger - główna

Mamy tam listę najnowszych wpisów wraz z nickami autorów, najpopularniejsze wpisy razem z nickami autorów oraz najczęściej komentowane wpisy razem z nickami autorów. Teraz wyobraźmy sobie, że każdy taki element generuje jednego inserta do loga udostępniania danych osobowych i już mamy 3 inserty do bazy na każde odświeżenie strony (-: Nawet nie myślcie o bardziej skomplikowanych portalach :D Dołóżmy to, że każda zmiana w szablonie, która wprowadza wyświetlenie się np. nicka, e-maila wiąże się z odpowiednią modyfikacją mechanizmu logującego udostępnianie danych. Tym sposobem szybko odechce się każdemu tworzenia nowych widoków.

Na koniec zajrzyjmy jeszcze do "ABC zagrożeń bezpieczeńswtwa ...". Na stronie 85 znajdziemy rozdział "Zabezpieczenie elektronicznych formularzy". Na stronie 86 znajdziemy takie zdanie:

Ponadto transmisja danych między systemem administratora a komputerem rejestrującego się użytkownika powinna być zabezpieczona przy użyciu kryptograficznych środków ochrony danych (np. poprzez zastosowanie protokołu SSL).

O ile dobrze rozumiem to jeżeli przesyłamy do systemu swoje dane osobowe musimy tą transmisję zabezpieczyć np. poprzez SSL. Zestawmy to teraz z innymi danymi osobowymi, którymi jak wiemy mogą być np. adresy e-mail. Czy każdy formularz subskrypcji newslettera musi iść po SSL-u? Czy każdy formularz do napisania komentarza gdzie przesyłamy swój nick (dana osobowa) musi iść po SSL-u?

Chciałem zebrać dzisiaj wszystkie informacje niezbędne do postawienia serwisu zgodnego z GIODO. Niestety poległem :-( Z moich dotychczasowych ustaleń wynika, że nakład pracy potrzebny na ochronę danych osobowych sprawia, że zadanie stanie się niewykonalne. Dlatego będę wdzięczny za wszelkie informacje od Was dotyczące tego tematu. Może ktoś z Was postawił już coś takiego jak serwis zgodny z GIODO lub przynajmniej przeszedł kontrolę i wie co można olać...

PS. Proszę nie komentować tej notki bo formularz nie ma SSL-a a ja nie jestem pewien czy serwerownia Joggera ma odpowiednie certyfikaty ;-)

Rzecz o przyszłości internetu

Inne Internet Techblog 19 czerwca 2010 o 00:29:06 | ☍ trackback

Tekst ten spisuje w dużej mierze z własnej ciekawości, aby czytając go za kilka lat móc sprawdzić jak na ile trafnie udało mi się przewidzieć przyszłość.

Creative Commons (by-nc-nd) - JaulaDeArdilla Będąc w podstawówce czasami mogłem całe dnie przesiedzieć na klepaniu przeróżnych programów w BASIC-u na moim postkomunijnym Commodore 64 (pozdrowienia dla fanów C&A). Kiedy jednak nastała era PC a ja zacząłem szperać po internecie czy to u kumpli czy w kawiarenkach, wówczas zauważyłem, że mój nie podłączony do internetu komputer stawał się coraz mniej użyteczny. Oczywiście nadal można było zrobić na nim 1k przeróżnych rzeczy jednak był jakiś taki... pusty. Wtedy zdałem sobie sprawę, że internet to przyszłość, bez której nie będzie można niedługo żyć. Brak internetu będzie równie odczuwalny jak brak prądu.

Kiedy poszedłem do technikum, do klasy informatycznej, postanowiłem wybrać sobie jakiś język programowania, w którym zacznę się szkolić, tak aby na studiach a później w pracy zawodowej mieć już go w małym palcu. W tamtych czasach w królestwie programowania prym wiodły takie języki jak C, C++ czy Delphi, w których to można było naklepać jakiś programy użytkowe, które wówczas były w cenie. Ja jednak nie widząc innej przyszłości poza internetem postawiłem na naukę tworzenia dynamicznych stron internetowych i związanych z nimi języków skryptowych od PHP poczynając.

Na studiach zauważyłem, że moja wizja przyszłości szybko się wypełnia. Coraz więcej polskich firm zaczęło dostrzegać potencjał internetu. Każda firma chciała mieć własną stronę internetową, które stopniowo z prostych HTML-owych wizytówek zaczęły przekształcać się z coraz bardziej zaawansowane systemy zarządzania treścią, ewidencji sprzedaży czy wspomagania zarządzaniem. Te coraz bardziej funkcjonalne systemy szybko zaczęły przyjmować funkcje aplikacji desktopowych stopniowo je zastępując (stan na dzień dzisiejszy).

Creative Commons (by-nc-nd) - taberandrew Do zalet aplikacji internetowych nie muszę chyba nikogo przekonywać. Świadczy o tym chociażby fakt, że za ich pomocą ja piszę ten tekst a Wy go czytacie (i za chwilę skomentujecie). Poza tym większość z Was zapewne używa np. internetowego klienta poczty, który automagicznie się aktualizuje, naprawia, zyskuje nowe funkcje czy backupuje. Jest to ogromna przewaga nad aplikacjami desktopowymi, które mogą przestać działać na 100 sposobów (wirusy, utrata danych, awaria jednego z wymaganych komponentów systemowych), natomiast póki działa Wam przeglądarka (a do tego nie trzeba wiele) do puty będą działały aplikacje internetowe (mówię oczywiście cały czas o przeglądarkowych aplikacjach).

Ok, więc mamy stan na dzień dzisiejszy, ale co dalej? Otóż moim zdaniem następnym krokiem będzie zmniejszenie roli komputerów osobistych na rzecz internetowych chmur czyli olbrzymich farm serwerów. Dowody takiego trendu możemy znaleźć już teraz. Wystarczy sprawdzić jaki komputer szybciej przeszuka zasoby internetu - nowe 8-rdzeniowe cacko czy stary pentium 500MHz? Oczywiście zrobią to w tym samym czasie bo zamiast robić to same zapytają o to serwerownie Googla. A który z nich znajdzie szybciej mail od kumpla sprzed 3 miesięcy? Oczywiście żaden, bo zajmą się tym serwery Googla na których operuje Gmail. Przykładów jest oczywiście znacznie więcej, można przecież zapytać który poradzi sobie lepiej z konwersją wideo wrzucanego na YouTube. Oczywiście jest to kolejne niewłaściwie zadane pytanie bo żaden z nich nie zajmuje się już konwersją, robią to internetowe serwery. A kto zaczyna wykrywać nam teraz wirusy znajdujące się na dopiero co podłączonej pamięci USB? Nie, nie nasz antywirus ale zewnętrze oprogramowanie antywirusowe przebywające w chmurach, do których lekki klient, działający w naszym systemie, wysyła próbki do analizy.

Przyszłość jest w chmurach Widzimy więc, że kolejnym naturalnym krokiem na tej ścieżce jest odchudzenie komputerów osobistych do roli wyłącznie klientów internetowych chmur (patrz Chrome OS). Oczywiście nadal pozostają programy, których nie da się póki co wyprzeć z desktopów. Bo jak zastąpić programy typu Photoshop, CAD, programy do obróbki wideo czy zaawansowane graficznie gry przez aplikacje przeglądarkowe. To rzecz jasna nie stanie się w najbliższych latach, chociażby dlatego, że nie istnieje jeszcze odpowiednia technologia, w której te aplikacje mogły by powstać. IMO HTML5 dopiero będzie w stanie zapewnić dobry budulec dla aplikacji internetowych typu pakiety biurowe, a do reszty jeszcze daleko. Co prawda rzeczami typu Flash czy WebGL będzie się dało zapchać wiele dziur jednak gra napisana w WebGL choć do działania będzie wymagała wyłącznie przeglądarki to jednak całość operacji graficznych nadal pozostanie do wykonania po stronie klienta.

Creative Commons (by-nc-nd) - stadtstreicher79 Na końcu dochodzimy więc do punktu, w którym wszelkie operacje wymagające większej mocy obliczeniowej przerzuconą zostaną do chmur. Widzę to na podobnej zasadzie jak odbywają się sesje VNC. Nasz komputer będzie logował się do najbliższego nam centrum cyfrowego i stamtąd otrzyma gotowy do wyświetlenia na monitorze obraz. Zalet takiego systemu jest wiele. Po pierwsze znika problem skalowalności. Obecnie rynek gier komputerowych jest w znacznym stopniu motorem napędowym do zmiany podzespołów komputerowych na nowsze. Jednak w przypadku centrów cyfrowych problem ten nie istnieje. Jeżeli tylko będziemy chcieli pograć w najnowszą grę to po prostu w nią pogramy ponieważ system będzie miał do dyspozycji olbrzymie zasoby obliczeniowe, które będzie przydzielał użytkownikom w zależności od ich zapotrzebowania. Chociaż centra cyfrowe wydają się trochę nierealnym pomysłem to jednak nie odbiegają one za bardzo od dzisiejszych sieci energetycznych. Każdy z nas będzie podłączony do najbliższego centrum cyfrowego podobnie jak obecnie podłączony jest do najbliższej elektrowni i każdy będzie otrzymywał tyle mocy obliczeniowej ile aktualnie potrzebuje (podobnie jak z energią elektryczną). Z tej perspektywy sprawa wygląda już całkiem normalnie. Kolejna ogromna zaleta jest taka, że podobnie jak teraz wykwalifikowani pracownicy obsługują elektrownie, również specjaliści od sprzętu będą obsługiwali centra obliczeniowe. To zupełnie tak jak by każdy z nas miał w domu własnego informatyka. Skończą się zawirusowane systemy działające na ćwierć gwizdka, z którymi zwykły użytkownik nie daje sobie rady. Poza tym aktualizacja takiego centrum cyfrowego będzie wiązała się z wymianą macierzy dyskowej klasy 1 na macierz klasy 2, czy wymianą jednostki głównej posiadającej 4k procesorów klasy 1 na jednostkę z 100k procesorów klasy 2 i po bólu. Wreszcie komputerami zajmą się specjaliści a użytkownikom pozostanie... użytkowanie :-)

Co do zestawów komputerowych do szacuję, że będą one składały się wyłącznie z monitora, myszki i klawiatury (o ile ktoś nie wymyśli czegoś bardziej poręcznego) oraz urządzeń peryferyjnych typu kamera czy drukarka. Będą one spięte ze sobą siecią bezprzewodową. Wszystko inne znajdowało będzie się w chmurach. Ktoś spyta a co np. ze zgrywaniem zdjęć z aparatu skoro nie będziemy mieli obudowy komputera do której można będzie wsadzić kabel USB czy kartę pamięci. Otóż sprawa jest prosta, wszelkie urządzenia peryferyjne będą również klientami sieci internet i będą przesyłały dane prosto do chmur, a więc żadna obudowa z portami nie będzie nam potrzebna.

Na tym już zakończę moje przemyślenia co by niepotrzebnie nie wydłużać tekstu. To jak, kto się założy, że tak będzie? :-)

Google Font API

Internet Techblog 19 maja 2010 o 23:29:27 | ☍ trackback

Google pchnął dzisiejszego dnia sieć o dobre kilka kroków do przodu. Nie dość, że pojawił się projekt WebM, który prawdopodobnie raz na zawsze wydrze internetowe wideo z rąk Adobe i odda w ręce standardów, to jeszcze udostępniona dziś usługa Google Font API ma zamiar wzbogacić wreszcie strony w nowe fonty! Koniec cudowania z podmieniamiem tekstu przez obrazki, Flasha, canvasa czy inne cuda na kiju. Wreszcie wygląda to maksymalnie prosto i przejrzyście.

Wystarczy wybrać czcionkę z katalogu, wstawić odnoszący się do niej nagłówek:

‹link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz' rel='stylesheet' type='text/css'›

I już możemy korzystać z czcionki w CSS-ie:

h1 { font-family: 'Yanone Kaffeesatz', arial, serif; }

Wynik:
Wynik

No wreszcie! Czyżby Google nadrabiało za wpadkę z WIFI?

PlayFlash czyli YouTube i MPlayer

Internet Linux Techblog 19 maja 2010 o 22:14:39 | ☍ trackback

Jak wiemy VP8 jest już w drodze, jednak do czasu pełnego wdrożenia pozostanie nam jeszcze użerać się z Flashem na nie bardzo wspieranych przez Adobe platformach tj. Linux czy Mac. Ułomność obsługi Flasha widoczna jest zwłaszcza przy wideo w wyższych rozdzielczościach.

Powstało już wiele rozwiązań tego problemu jak np. podmiana playera Flashowego na MPlayera lub wywoływanie w konsoli skryptów, które jako parametr dostają adres URL do filmu na YouTube.

Rozwiązania te nie są jednak jak dla mnie zbyt wygodne, ponieważ MPlayer nie jest w stanie zastąpić playera Flashowego, z racji tego, że np. nie zbuforuje filmu od wybranego fragmentu czy też nie umożliwi nam zmiany rozdzielczości filmu. Natomiast uruchamianie skryptu z podaniem mu adresu URL jest co by nie mówić nieporęczne, bo po co klikać dziesięć razy skoro można dwa.

Wiadomo, że ładujący się film z YouTube'a tworzy plik w katalogu /tmp/ o nazwie FlashXX... Wystarczy więc wyłapać najnowszy plik z tego katalogu o takiej nazwie i uruchomić go za pomocą naszego ulubionego odtwarzacza. Całe sterowanie można wykonać za pomocą standardowego Flashowego playera YouTube np. wybór rozdzielczości i ustawienie odpowiedniego miejsca startu filmu (np. od 2 minuty) a później skryptem ukrytym w ikonce lub skrócie klawiszowym uruchomić nasz natywny player i rozsiąść się wygodnie w fotelu.

Skrypt jest banalnie prosty:

/usr/bin/mplayer /tmp/`ls /tmp/ -tr | grep Flash | tail -1`

Ja mam go podpięty pod ikonkę dzięki temu używanie wymaga dwóch kliknięć (pauza w playerze YouTube i odpalanie skryptu).

PlayFlash w akcji

GooglePreview dla Google Chrome

Internet Kodowanie Techblog 28 października 2009 o 22:56:02 | ☍ trackback

Google preview to moja ulubiona wtyczka rozszerzenie dla Firefoksa, bez której wyniki wyszukiwania w Googlu po prostu nie wyglądają. Wstawia ona obok każdej pozycji miniaturkę strony, a ponieważ człowiek myśli obrazami więc o wiele szybciej można namierzyć szukaną witrynę. Niestety w przeglądarce Google Chrome (która ostatnio stała się moją podstawową przeglądarką) nic takiego nie istnieje. Istnieje już jednak system rozszerzeń (chociaż ukryty) oraz podstawowa dokumentacja, więc postanowiłem sam zapchać lukę.

Na początek przyda się nam developerska wersja Chroma (nie wiem czy wersja stabilna posiada tą funkcjonalność, jeżeli tak to niech mnie ktoś poprawi). Dla użytkowników ArchLinuksa polecam paczkę z AUR - google-chrome-dev.

yaourt -S google-chrome-dev

Aby uruchomić ukryty jeszcze mechanizm obsługi rozszerzeń należy uruchomić przeglądarkę z parametrem -–enable-extensions.

google-chrome -–enable-extensions

Teraz wystarczy już tylko pobrać przygotowane przeze mnie rozszerzenie i potwierdzić chęć instalacji

ChromePreview 0.38

Od tej chwili możemy się już cieszyć pięknymi miniaturkami

wyniki wyszukiwania

O ile wszystko dobrze poskładałem to rozszerzenie powinno się samo aktualizować (w razie W). Jeżeli ktoś jest zainteresowany bebechami to dołączam pliki:

Listę zainstalowanych rozszerzeń znajdziecie wstukując do paska adresu chrome://extensions/

EDIT: rozszerzenie znajdziecie w otwartej dzisiaj bazie rozszerzeń pod adresem https://chrome.google.com/extensions/detail/behjpjkdajdecgkkamhaplpkcbkceaie

Narzędzia do pracy grupowej poszukiwane

Internet Kodowanie 04 czerwca 2009 o 15:40:21 | ☍ trackback

Obecnie pracuję jako programista aplikacji internetowych w małym zespole. Realizujemy kilka projektów w miesiącu i dość trudno jest zapanować nad wszystkimi zadaniami, które trzeba wykonać. W przypadku większych projektów korzystamy z Trac'a, jednak do mniejszych nie nadaje się on za dobrze ponieważ trzeba dla każdego projektu tworzyć nową instancję i nie ma jak zrobić zbiorczego zestawienia. Rozglądałem się więc za jakimś kompleksowym rozwiązaniem, które dawałoby możliwość ogarnięcia kilku projektów wraz ze śledzeniem repozytoriów Subversion.

Powstało już wiele serwisów oferujących podobną funkcjonalność. Wśród najbardziej znanych wymienić można:

Główną wadą pierwszych trzech rozwiązań jest to, że nie można ich hostować na własnym serwerze a jedynie wykupuje się konto na serwerze producenta. Collabtive jest co prawda aplikacją na licencji GNU GPL i można postawić to u siebie, ale z kolei zupełnie nie obsługuje repozytoriów kodu.

I tutaj pytanie do Was. Czego Wy używacie w pracy? Być może jest jakiś fajny projekt który przeoczyłem.

PS. Swoją drogą to dziwne, że nikt jeszcze czegoś podobnego w Django nie zrobił.

Nowe projekty: noku.pl

Internet Portfolio Projekty 15 listopada 2008 o 22:30:17 | ☍ trackback

logo5

Nic ostatnio nie pisałem ponieważ cały wolny czas zabrał mi nowy projekt, a właściwie to praca magisterska ;-) Nowy twór to noku.pl, co w zamierzeniu ma być narzędziem do komunikacji student-student oraz student-wykładowca.

Cały pomysł opiera się na tym, żeby odgonić studentów od zakładania (w byle jakich miejscach) for/stron swoich „roków” i zgromadzić ich w jednym miejscu, dostarczając narzędzie skrojone na miarę i przystosowane do warunków studenckich. Następnie przyciągnąć w to miejsce nauczycieli akademickich, tak żeby mieli w jednym miejscu wszystkich swoich studentów, dzięki czemu wymiana materiałów czy informacja typu „nie ma mnie jutro na uczelni” trafiała natychmiastowo tam gdzie trzeba. Do tego dochodzą strony kół naukowych i mamy już małą e-uczelnię. Każdy wie co i gdzie piszczy.

Oczywiście co większe uczelnie mają już podobne systemy wymiany informacji/materiałów ale:
a) nie wszystkie, np. Politechnika Opolska nie ma i nie zanosi się żeby miała
b) inwigilacja studentów (w systemie hostowanym przez uczelnię) i tak sprawi, że do nieskrępowanej komunikacji pomiędzy sobą studenci założą gdzieś własne forum

Dlatego całym pomysłem na serwis jest:

  • wyprowadzenie systemu poza uczelnię
  • bezpieczna i zamknięta wymiana informacji/materiałów pomiędzy studentami
  • zapewnienie nauczycielom łatwego kontaktu ze studentami przez to, że będą mieli wszystkich w jednym miejscu

Od strony technicznej system jest przewidziany na N uczelni. Ograniczeni jesteśmy jedynie zasobami serwerowymi dlatego, póki co jesteśmy w stanie hostować tylko studentów z obszaru Politechniki Opolskiej.

Całość napisana jest w Django i działa na konfiguracji Ubuntu server, Nginx, PostgreSQL. Co najważniejsze kod serwisu jest dostępny na licencji AGPL !! Jesteśmy chyba jednym z niewielu polskich serwisów Django-wych, które zdecydowały się opublikować kod. Miejmy nadzieję, że wywołamy nową tendencję wśród aplikacji webowych dzięki czemu będziemy mogli się wzajemnie od siebie uczyć.

Linki:
noku.pl
blog.noku.pl (oczywiście jogger)
bugs.noku.pl (kod źródłowy oraz błędy)

RPSy w OVH.pl

Inne Internet Techblog 19 października 2008 o 14:53:18 | ☍ trackback

W ostatni czwartek zdarzyło mi się wynająć w ovh.pl prywatny serwer RPS I. Miał on służyć testom nowego startupa. Docelowa grupa testerów (około 80 osób), Celeron 1,2 GHz, 512 RAM, Łącze 100 Mbps bez limitu transferu, dysk 10 GB i 50 zł miesięcznie. Dobry serwer do testów można by rzec. Można by… ale:

Prywatne RPSy to rozwiązanie „ekologiczne” i tanie. Aby takim było żadna z maszyn nie posiada fizycznego dysku. Dane przechowywane są na wielkiej, wspólnej macierzy dyskowej dostępnej przez sieć za pomocą NFSa lub iSCSI.

Z grubsza powinno to działać tak:

Ale działa niestety tak:

Mały dowód:

$ time ls /sbin/
real   0m41.424s
user   0m0.008s
sys   0m0.004s

dla porównania mój laptop

$ time ls /sbin/
real   0m0.071s
user   0m0.000s
sys0   m0.003s

Dysk praktycznie nie istnieje a serwer staje się przez to zupełnie nieużyteczny. Nie żeby był to odosobniony przypadek. Wystarczy poczytać ten wątek na forum aby się o tym przekonać.

Na RPSa zdecydowałem się, bo słyszałem, że problemy z dyskami już ustały. Otóż nic podobnego! Od następnego miesiąca przesiadam się na serwer dedykowany z własnym dyskiem. Pewnie skończy się na Kimsufi w opcji L. Chyba, że polecacie coś lepszego w podobnej cenie.

Podsumowując:

RPS w OVH.pl – nie polecam!

Nasza-klasa – opowieści z zaplecza

Internet 18 kwietnia 2008 o 19:34:52 | ☍ trackback

Ostatnio z okazji Festiwali Przedsiębiorczości, który odbywał się w Opolu miałem okazję posłuchać o tym jak serwis nasza-klasa doszedł do rozmiaru i kształtu w jakim obecnie możemy go oglądać. Prelekcję inauguracyjną wygłosił Paweł Olchawa, student informatyki z Uniwersytetu Wrocławskiego i jeden z czterech ojców założycieli naszej-klasy. Tak na marginesie to Paweł jest moim kolegą z klasy z podstawówki :-) Anyway, jeżeli będziecie mieli kiedyś okazję posłuchać kogoś z naszej-klasy to gorąco zachęcam.

Historii i różnych wątków było mnóstwo. Od hostingu w home.pl gdzie zapadła kluczowa decyzja w sprawie bazy – padło na MySQL bo była za darmo a PostgreSQL kosztował 100 zł więcej ;-) Poprzez serwerownię w Niemczech, która okazała się być halą ze starymi PC-tami podłączonymi kilometrami kabli. Aż do obecnej serwerowni w Poznaniu, która zasilana jest niezależnie z dwóch elektrowni, gdzie serwery naszej-klasy od serwów Allegro oddziela siatka z drutem kolczastym ;-)

Drugim wątkiem przeplatającym się z technicznymi sprawami był aspekt budowania zespołu i całej infrastruktury ludzkiej. Od spotkań przy piwie od wynajęcia własnego mieszkania oraz profesjonalnego biura. Stopniowego zatrudniania nowych ludzi na określone stanowiska, wypracowania własnych standardów pracy i monitorowania serwisu. Było też o problemach z policją, kontrolach GIODO, formach reklamy, szukaniu sponsorów i wielu przeróżnych rzeczach.

Tu też nie obyło się bez ciekawostek, np. obecnie serwis wynajmuję kancelarię prawną, która w całości zajmuje się obsługą prawną, kiedyś natomiast zajmował się tym student prawa, co jak się okazało nie było najlepszym rozwiązaniem ;-)

Dużo by jeszcze można pisać, ale najlepiej jak opowiedzą to Wam to sami. Dlatego jeżeli interesujecie się rozwojem sieci, organizacją techniczną dużych portali, serwisami społecznościowymi lub sami myślicie o stworzeniu jakiegoś to koniecznie musicie się wybrać na taką prelekcję. Na pewno nie była to ani pierwsza ani ostatnia. Polecam!

Google Sites w GAFYD

Internet Techblog 29 lutego 2008 o 13:40:58 | ☍ trackback

Niedawno Google wypuściło bardzo fajną rzecz. Usługa nazywa się Google Sites i jest częścią aplikacji przeznaczonych dla własnej domeny (Google Apps for Your Domain). Nie będę tutaj opisywał całości funkcjonalności, bo pewnie do wieczora bym nie skończył. Trzeba zobaczyć to na własne oczy i samemu poklikać.

Na początek filmik

Teraz należy udać się na kilka przykładowych stron: Company intranet, Team project, Employee profile, Classroom.

Myślę, że jest to świetna usługa dla wszelkiego rodzaju projektów. Szkoda że Google Code nie ma takiej funkcjonalności. Z minusów jakie zauważyłem to niewątpliwym jest brak możliwości komentowania przez odwiedzających. Taką możliwość mają tylko osoby kolaborujące. Mam nadzieję, że wkrótce jakoś to naprawią bo wpływa to w znacznym stopniu na feedback ze strony użytkowników.

Jamendo Tray Icon Player

Internet Kodowanie Linux Python Techblog 12 stycznia 2008 o 00:38:40 | ☍ trackback

Ostatnio zaczynam mieć dość webowych aplikacji. Oglądanie wszystkiego w przeglądarce nie zawsze jest wygodne, no i nie zawsze szybkie zważywszy na ilość rozszerzeń jakie wcieliłem do Firefox-a. Czasami też wyłączam okno przeglądarki zapominając, że w któreś z zakładek siedzi coś co np. odtwarza muzykę z Jamendo. Do webaplikacji Googla używam już od jakiegoś czasu Prisma. Działa to lepiej ale nadal nie jest to /to coś/ czego szukam. Jeżeli mogę staram się używać aplikacji natywnych np. Gmail via Thunderbird (przez IMAP) czy Google Calendar via Lightning (rozszerzenie do Trunderbird-a). Aplikacje webowe mają jednak bardzo dobrą cechę – są mobilne. Nie mając naszych ulubionych aplikacji pod ręką i tak zawsze się do nich dostaniemy choćby przez tfu IE tfu.

Dzisiaj trochę bawiłem się PyGTK wynikiem czego wykombinowałem mały skrypt. Sam się zdziwiłem jak można łatwo ubierać strony w jakieś natywne GUI. Poniższy skrypt jest zwykłym oknem przeglądarki opartej na gtkmozembed tyle, że potrafi schować się do ikonki w zasobniku systemowym dzięki czemu świetnie sprawuje się już jako odtwarzacz moich ulubionych utworów z Jamendo.

Przy pierwszym uruchomieniu należy się zalogować w serwisie (nowej wersji serwisu), a przy następnych od razu ładowany będzie ichniejszy player.

Skrypt: jtip.py

Odpalamy standardowo jak na pythona przystało:

$ python jtip.py

Oczywiście skrypt łatwo wykorzystać do obsługi innej strony.

BTW: Kiedy ktoś zrobi wtyczkę do QuodLibet obsługującą Jamendo ?

BTW2: Jak spowodować aby klikanie na krzyżyk chowało aplikację do ikonki w zasobniku? W moich próbach okno niby udało mi się ukryć nie wyłączając aplikacji, ale dźwięk się urywał a po kliknięciu na ikonkę w zasobniku przywracało się gołe okno.

Współpraca

Internet 21 września 2007 o 11:04:39 | ☍ trackback

Niedawno jak grom z jasnego nieba wpadł do mojej skrzynki e-mail od kogoś z redakcji magazynu .psd Szczerze mówiąc to nawet nie wiedziałem że coś takiego wydają ;-) Jak sama nazwa wskazuje, ów magazyn zajmuje się tematyką Photoshopa. W mailu zostałem zaproszony do współpracy, a dokładniej napisania artykułu na temat najnowszych języków programowania bądź o tym, czym są systemy CMS.

Nie mam pojęcia dlaczego to akurat ja dostałem takiego maila, bo żadnym guru w tej materii się nie czuję. No chyba, że podobne propozycje wysyłano do każdego jak leci ;-) W każdym bądź razie jeżeli macie ochotę coś takiego napisać to redakcja na pewno skorzysta z pomocy. W zamian za artykuł proponują reklamę w ichnim magazynie. No cóż, ja bym wolał np. 50zł ale jeżeli komuś przyda się reklama i chce podjąć wyzwanie to zapraszam.

Po dokładnego maila można zagadać na jabberze lub mailem.

IE SWFObject bug czyli flash

Internet 22 sierpnia 2007 o 20:20:53 | ☍ trackback

A zapiszę, może się komuś przyda i oszczędzę mu szukania.

Otóż ostatnio trafiłem na dziwny błąd (oczywiście w IE) przy osadzaniu obiektu flashowego. Było to o tyle dziwne, że specjalnie skorzystałem z skryptu SWFObject aby w każdej przeglądarce flash zasadził się wg. jej uznania. Chociaż na stronie demo wszystko grało to jednak w mojej implementacji zdychało na IE. Dokładniej to sam flash się wstawiał, ale cały kod który znalazł się po osadzeniu elementu flashowego znikał. Zupełnie jakby przestał być interpretowany. Googlowałem sporo, ale nic nie znalazłem, więc zostało kombinowanie.

Biotąc pod uwagę przykładowa osadzenie:

<script type="text/javascript/>
   var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699");
   so.addParam("quality", "low");
   so.addParam("wmode", "transparent");
   so.addParam("salign", "t");
   so.write("flashcontent");
</script>

to wszystko znikało po wykonaniu linijki:

so.write("flashcontent");

Rozwiązanie okazało się bardzo proste. Skoro obiekt jest osadzany przez JS to równie dobrze można go osadzić już po wyświetleniu całej strony. Z pomocą jQuery wygląda to tak:

<script type="text/javascript/>
var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699");
so.addParam("quality", "low");
so.addParam("wmode", "transparent");
so.addParam("salign", "t");
$(document).ready(function() {
   so.write("flashcontent");
});
</script>

MyBlogLog XHTML bug

Internet 17 sierpnia 2007 o 22:52:49 | ☍ trackback

Wczoraj postanowiłem zinwigilować kto tak naprawdę tutaj zagląda. Oczywiście mój pasek adresu wycelował w MyBlogLog, który to ostatnimi czasy opanowuje przeróżne zakątki internetu. Szybka rejestracja, łapię widget, trochę go pokolorowałem, wstawiam. Pięknie! Nic nie widać.

A nie, jednak widać. FireBug mruga czerwonym tekstem, oznaczającym błąd i wyświetla o takie coś:

Object cannot be created in this context" code: "9

Pooglądałem sprawę z różnych stron, bo jak to, wszędzie działa tylko nie u mnie? No i znalazłem. Jak przystało na XHTML wysyłam go jako application/xhtml+xml. No prawie, bo właściwie typ mime jest negocjowany z przeglądarką i taki król internetu IE dostaje stronę jako nie wiadomo co, czyli text/html.

Podsumowując, MyBlogLog-owy skrypt, podobnie jak Google Maps nie działa z XHTML-em. No i cóż zrobić. Poszukałem na FAQ, znalazłem maila przeznaczonego do raportowania błędów i ładnie zraportowałem. Maila napisałem koło 1:00 w nocy, czyli o 19:00 czasu nowojorskiego i za kilka minut już miałem na blogu drużynę pierścienia.

Szybko też dostałem odpowiedź – oczywiście SOA#1(Standardowa Odpowiedź Administratora nr 1: U mnie działa). Zamiast przeczytać treść maila kliknęli na link (po tym jak już zmieniłem mimetype na text/html), zobaczyli że działa i dali sobie spokój :-)

Wyklepałem wiec szybki przykład i posłałem jeszcze raz. Skrypt przykładowy wygląda tak. Dziś dostałem odpowiedź, że mój mail został przekazany endżynierą. Zobaczymy co z tego będzie. Pewnie nic, ale czasami miło jest znaleźć oczywisty błąd w tak dużym serwisie i nie dostać odpowiedzi typu „tak wiemy, już nad tym pracujemy”.

Gentoo a (a)społeczność

Gentoo Internet Linux 15 sierpnia 2007 o 17:03:08 | ☍ trackback

Od jakiegoś czasu zauważyłem że mój RSS ssie jakaś nowa planeta. Dokładniej jest to planeta niedawno powstałego ‘serwisy’ mygentoo.org. Planeta nie jest jeszcze oficjalnie podpięta ale jak to z planetami bywa zajmuję subdomenę planet. Chociaż nazwa serwisu wskazuje na Gentoo to podtytuł mówi nam where not only Gentoo Ricers meet czyli, że znajdziemy tutaj blogi nie tylko osób używających Gentoo.

Reasumując, serwis świeci pustkami i jak zwykle, w przypadkach gdzie otwiera się serwis chęciami ale bez pomysłu, możemy znaleźć tekst typu:

[...] Poszukujemy wszystkich chętnych którzy chcą się dołączyć do naszego projektu. Chcesz pisać newsy, artykuły? Nie ma problemu. [...]

Lub jak dokopałem się na blogu jednego z autorów

[...] Pisali by artykuly i takie tam ciekawostki. Glownie chodzi nam o to zeby MyGentoo byla strona z jednym wielkim polskim zbiorem informacji, artykulow, poradnikow. [...]

Pięknie! Ale… Jaki jest sens (tworzenia nowej strony / zakładania nowej domeny) gdy:

a) kluczową linijką kodu na gentoo.pl jest:

<meta  HTTP-EQUIV="Refresh" CONTENT="1; URL=http://www.gentoo.org">

b) Jest już podobny serwis — gentoo.org.pl — na którym po nieodległej pozycji życzeń świątecznych (nie wielkanocnych ale bożonarodzeniowych), szybko poznamy że nie cieszy się zbytnią popularnością.

Jak każdy użytkownik Gentoo dobrze wie, przy różnego typu problemach z Gentoo mamy trzy pewne źródła informacji:

  1. Podręcznik Gentoo
  2. Gentoo Wiki
  3. Forum Gentoo

Nietrudno też zauważyć, że zarówno podręcznik jak i forum mają swoje polskie wersje. Odejmując dwa od trzech dojdziemy też łatwo do wniosku że Gentoo Wiki nie ma swojej polskiej wersji, a każdy kto tam grzebał dobrze wie jak cenne i przydatne jest to źródło informacji. (Pozwólcie że to coś pominę)

Skończmy się więc bawić w dwadzieścia stron o dupie Maryny i zagospodarujmy właściwie i pożytecznie nasz czas. Nie postępujmy jak linux.pl i linuxnews.pl, że każdy stawia sobie własne forum. Trzeba działać dla dobra społeczności a nie wyłącznie dla autopromocji.

O! Tyle miałem do powiedzenia. <kurtyna>

Konsolowy uploader dla Flickr

Internet Linux Software Techblog 14 sierpnia 2007 o 13:31:55 | ☍ trackback

Zaczęło się od tego, że wtrąciłem mały offtopic w temacie o uploaderze dla Picasa Web, kiedy tu znienacka zjawił się Marek Wiewórski z gotowym rozwiązaniem

Wymagania

Ale od początku. Do skryptu potrzebna będzie nam biblioteka flickyou Wystarczy że pobierzemy ją z na dysk, rozpakujemy, wejdziemy do katalogu i wpiszemy:

# python setup.py install

Flickyou do działania potrzebuje też innego modułu pythona — simplejson. Jeżeli więc go jeszcze nie posiadamy to:

# emerge -av dev-python/simplejson

Zdobywamy klucz API

Aby połączyć się z API serwisu Flickr należy zdobyć dwa klucze – key i secret, czego możemy dokonać na tej stronie

Kiedy mamy już klucze tworzymy w katalogu domowym plik .flikr.cfg o następującej strukturze:

[Auth]
api_key: KLUCZ_KEY
secret_key: KLUCZ_SECRET

Oczywiście zamiast KLUCZ_KEY i KLUCZ_SECRET wstawiamy odpowiednie numerki.

Odpalamy skrypt

Teraz zabierzmy się za skrypt właściwy Nadajmy mu prawa do wykonania:

# chmod +x flickr.py

I przenieśmy do /usr/bin/ aby był widziany jako polecenie

# mv flickr.py /usr/bin/flickr

Od tej chwili mamy prawie działający skrypt. Prawie bo czeka nas jeszcze pierwsze uruchomienie. A wygląda to najprościej jak można.

$ flickr jakis_plik.png

Teraz jeżeli wszystko zrobiliśmy dobrze pozostaje nam potwierdzenie autentyczności programu posługującego się naszym kluczem API. Powinna otworzyć nam się przeglądarka tekstowa a naszym zadaniem jest zalogowanie się do serwisu Flickr i kliknięcie na link zezwalający naszemu skryptowi na korzystanie z API. Dokładniej wygląda to tak, że po zalogowaniu klikamy w jeden redirect a na następnej stronie znajdziemy już na środku link zezwalający. Po całej operacji można już zamknąć przeglądarkę i gotowe! Nasz skrypt powinien już działać jak należy.

Jak widać skrypt do razu podaje nam linki do miniaturki oraz pełnego rozmiaru. Po prostu idealne do zastosowania blogowego lub gdy chcemy szybko komuś pokazać jakiś screen.

Integracja z Thunarem

Jako że przeniosłem się na gibkie Xfce wypadałoby skorzystać z jego zalet. Sprawa jest banalnie prosta. Odpalamy Thunara i klikamy Edycja > Konfiguruj akcje… Tutaj znajdziemy małe okienko gdzie dodamy upload grafiki na Flickr. Klikamy w plusik i wpisujemy co następuje:

nazwa: Flickr
Opis: Upload grafiki na Flickr
Polecenie: flickr.py %F > /tmp/flickr && geany /tmp/flickr
Ikonka: Ściągamy z http://yourkee.com/icon/flickr.png

Tutaj małe objaśnienie samego polecenia. Symbol %F wstawia nam ścieżki do wszystkich plików, które zaznaczymy w Thunarze. Jednak, jeżeli nie odpalimy całego polecenia w terminalu, to nie będziemy mieli podglądu na wyświetlane linki do miniaturki i pełnej grafiki, co nam się nie podoba ;-) Przekierujemy więc wyjście całego polecania do pliku /tmp/flickr a następnie, po zakończeniu uploadu otwieramy go naszym ulubionym edytorem. W moim przypadku jest to Geany ale równie dobrze możecie zrobić to Geditem czy czymkolwiek innym.

Teraz przechodzimy do zakładki Warunki pokazywania i zaznaczamy tam Pliki graficzne

Integracja zakończona! Teraz w Thunarze po kliknięciu prawym przyciskiem myszy na jakiś plik graficzny w menu kontekstowym powinniśmy widzieć opcję Flickr. Możemy też zaznaczyć w ten sposób kilka plików graficznych i wrzucić je jednocześnie.

Integracja z Mirage

Mirage czyli przeglądarka grafiki, o której wspomniałem ostatnio ma podobnie jak Thunar możliwość definiowania własnych czynności. Wystarczy kliknąć Modyfikuj > Własne czynności > Konfiguruj. Na tej samej zasadzie możemy więc dorobić tutaj upload na Flickr. Mamy możliwość, a nawet musimy przypisać każdej nowej akcji odpowiedni skrót klawiszowy. Ot taka dbałość o wygodę użytkownika ;-). Ja sobie przypisałem Ctrl+Shift+F

To by było na tyle. Miłego użytkowania i podziękujcie Markowi

PS. O konsolowym uploaderze do Picasa Web pisałem wcześniej

Genealogia według Web2.0

Internet 30 czerwca 2007 o 14:25:05 | ☍ trackback

GENi — tak nazywa się projekt który wpadł mi ostatnio w pasek adresu. Nigdy jakoś nie miałem okazji robić drzewa genealogicznego mojej rodziny, ale przypuszczam, że gdyby nie to narzędzie, to nie skończyłbym prędko…

Głównym budulcem jest tutaj Flash i dobrze zorganizowana baza danych, dzięki czemu drzewo buduje się łatwo szybko i przyjemnie.

Jak przystało na projekt dumnie noszący Beta w nazwie wszechobecny jest też Ajax dzięki czemu komfort odnajdywania np nazwiska załatwia nam automagiczne dopełnianie.

Również ze społeczna strona nie jest źle. Jeżeli tylko jakieś osobie z drzewa wpiszemy mail wówczas pojawia nam się przycisk zaproszenia jej do współpracy przy redagowaniu, bo oczywiście jak na dobrą ochronę prywatności przystało drzewo dostępne jest tylko dla jego członków.

Przybyli członkowie mogą tworzyć również swoje drzewa, które nie są związane bezpośrednio z naszym. Wówczas z naszego punktu widzenia, nad ich prostokącikiem pojawia się ikonka przejścia do kolejnego drzewa oraz liczba osób znajdujących się w nim. Dzięki temu wszystko jest ładnie, logicznie i przejrzyście poukładane.

Każdą osobę w drzewie możemy dość dokładnie przedstawić za pomocą, przeróżnych danych dotyczących jej życia, pracy, wykształcenia czy zestawu ulubionych rzeczy. Nie mogło zabraknąć też implementacji Google Maps dzięki czemu po przypisaniu państwa i miasta do jakiegoś z użytkowników drzewa automatycznie jest on umieszczany na mapie. Dobrze przemyślana został też sprawa zdjęć, ponieważ przy dodaniu jakiegoś możemy określić jakie osoby znajdują się na zdjęciu, dzięki czemu jedno zdjęcie może być współdzielony przez kilku użytkowników i będzie się pojawiało w ich profilach.

A teraz krótka lekcja poglądowa jak ładnie to działa

A tutaj wywiad z jednym z autorów projektu GENi

Picasa Web a Linux

Internet Linux Software Techblog 07 czerwca 2007 o 15:18:11 | ☍ trackback

Niedawno jeszcze użerałem się z F-spotem który jak na złość nie potrafił przejść autoryzacji Picasa. W dodatku biblioteka libgphoto2 z której korzysta F-spot gryzła się z gnomowym automount’erem sprzętu przez co pingwin nie wykrywał mi aparatu. Zmuszony więc byłem odesłać F-spota na /dev/drzewo i poszukać alternatywy.

Z pomocą przyszedł Marcin Sochacki (Wanted) ze swoim bardzo wygodnym w użyciu skryptem opartym o Pythonowe API dla Googla

Skrypt wystarczy zapisać na dysku, następnie wyedytować plik i wpisać swój login oraz hasło

username = 'UZYTKOWNIK'
password = 'HASLO'

Teraz nadajemy skryptowi prawa do wykonywania

$ chmod +x picasa_upload.py

I dla wygody przerzucamy go rootem do /usr/bin aby stał się poleceniem:

# mv picasa_upload.py /usr/bin/picasa

Gotowe. Do dyspozycji mamy teraz polecenie picasa którego składania jest bardzo prosta. Jeżeli chcemy np. wrzucić na Picasa zdjęcia znajdujące w katalogu abc wystarczy że wejdziemy do niego i wklepiemy:

$ cd abc/
$ picasa Zdjecia-z-pikniku *.jpg

Skrypt założy nowy album o nazwie Zdjecia-z-pikniku i wrzuci do niego wszystkie pliki o rozszerzeniu .jpg które znajdują się w katalogu. Pice of cake!

Revival w Opolu vol. 2 – www

Internet Nauka 03 czerwca 2007 o 20:44:42 | ☍ trackback

Po pierwszym nudnym jak flaki z olejem wykładzie o inżynierii wstecznej, revival postanowił zaatakować Opole wykładem z numerkiem dwa. Jak to możliwe w średniej wielkości mieście gdzie, gdzie rynek IT jest tak ubogi jak zainteresowanie nim, urządzane są (zaraz po Warszawie) wykłady o tematyce informatycznej? Organizatorów zachęciła zapewne pełna sala na ostatnim wykładzie… No cóż sprawa wyglądała wtedy troszkę inaczej. Studenci dostali cynk, że obecność na wykładzie będzie punktowana, na rzecz pewnego „problematycznego” do zaliczenia przedmiotu, przyszli więc i twardo siedzieli aż do samego końca. O ile tym razem numer się nie powtórzy to zainteresowanie może okazać się o wiele mniejsze. Choć z drugiej strony tematyka internetowa wydaje się z założenia ciekawsza niż Assembler.

Do rzeczy.

Tematyka wykładu będzie obracała się wokół mikroformatów i sieci semantycznej. Czasoprzestrzeń: środa 6 czerwca 2007, godzina 16:00-19:00, sala ST-1 (stołówka)

1 godzinę poprowadzi Wojciech Zając i opowie o:

1) Czym są mikroformaty, dlaczego warto ich używać?
a) przedstawienie historii semantycznej treści – milowe kamienie rozwoju
b) krotkie przedstawienie mikroformatow – zatwierdzonych i tych w trakcie zmian

2) Charakterystyka i użycie najbardziej użytecznych specyfikacji
a) POSH – stary, dobry html4
b) hCard: dane kontaktowe
c) hAtom: aktualizowana treść
d) XFN – prezentowanie wzajemnych relacji w prosty sposób
d) Bazujące na linkach (rel-tag, rel-home, rel-nofollow, rel-license,
rel-payment, rel-directory, xFolk, VoteLinks)
e) Recenzje, kalendarze i CV (hReview, hCalendar, hResume)
f) Lokalizacja: geo i adr

3) Przykłady dobrego użycia na żywych stronach
a) LinkedIn (hResume)
b) Flickr (geo)
c) Sinedelic (hReview)
d) własny przykład (hCard, hAudio)

4) Narzędzia do pracy z mikroformatami
a) Tails, Operator
b) Generatory i konwertery

2 godzinę zajmie nam Kamil Trebunia ale jeszcze dokładnie nie wie o czym nam opowie, poza tym że będzie oscylowało wokół semantyki sieciowej.

Miejsce zaklepać można tutaj

UPDATE: wykład przeniesiony na inny termin

piweczko.org

Design Internet Portfolio 02 maja 2007 o 00:16:18 | ☍ trackback

Jest, już jest. Nareszcie. Tajemniczy projekt, przy pracy nad którym spędziłem ostatnie 8 miesięcy. Wiele nieprzespanych nocy, setki godzin gapienia się w kolorowe literki i nie mniej commitów do repozytorium kodu. Wszystko to doprowadziło do powstania największego w tej części Europy portalu kompleksowo traktującego o piwie i wszystkim co z piwem związane. Co tu dużo mówić, trzeba samemu pozwiedzać.

Korzystając z okazji chciałem oficjalnie podziękować mojemu zespołowi że jakoś udało Wam się ze mną wytrzymać. Mi pracowało się bardzo dobrze, wygodnie i w miłej atmosferze. Przy okazji nauczyłem się kilku ważnych rzeczy:

  • advAJAX to nie to samo co jQuery Zawsze lepiej jest polegać na większym projekcie niż czasie wolnym pojedynczego programisty
  • Budowanie architektury z przewidywaniem n liczby języków komplikuje nawet z pozoru proste rzeczy
  • Dobra architektura bazy to 60% projektu
  • MySQL dobry jest do stawiania blogów
  • Abstynenci też mogą zrobić serwis o piwie
  • Ajax to przyszłość
  • IE to zawsze będzie IE

Nie pozostaje mi nic innego jak zaprosić Was do zwiedzenia serwisu i założenia własnego, unikalnego, piwnego bloga. Serwis nadal będzie się rozrastał więc życzcie nam powodzenia a ja życzę Wam miłego klikania.

piweczko.org

Google Up

Internet Techblog 15 marca 2007 o 20:46:12 | ☍ trackback

Wczoraj moim oczom ukazała się dobra nowina. Gajim po włączeniu i połączeniu się z kontem googlowym ładnie wyświetlił transporty i równie ładnie się do nich zalogował. Tym samy dziwny problem, znikających od jakiegoś czasu transporów, o którym pisałem w poprzedniej notce odszedł w zapomnienie.

Dodatkowo Googlowcy zwiększyli powierzchnię kont webowych albumów Picasa z 250 MB do 1GB. Wprowadzona została też wyszukiwarka zdjęć przeszukująca tagi wszystkich udostępnionych albumów Picasa w obrębie serwisu.

Co prawda w porównaniu z Flickr’em Google pozostaje w tyle i nadal brakuje tak oczywistych funkcji jak ostatnio dodane do albumu komentarze, ale… Małymi kroczkami, byle do przodu.

Google pod własną domeną

Internet Techblog 05 marca 2007 o 18:14:56 | ☍ trackback

Kilka tygodni temu pomyślałem sobie, że do kontaktów biznesowych potrzebna mi będzie jakaś własna domena. Korzystając więc z okazji, że w domu mieli karnawałową promocję, rozbiłem mBankową świnkę skarbonkę i wydałem okrągłe 24,28 PLN. Całość operacji, łącznie z oznaczeniem domeny jako zapłacona, zamknęła się w 10 minutach.

Domena

Podpięcie joggera pod domenę również nie sprawiło żadnych kłopotów. Oddelegowałem rekord A pod odpowiedniego (217.110.127.251) IP’ka i rano (6h później) wszystko już ładnie działało.

karbownicki.com  A  3600  217.110.127.251

Jakieś dwa tygodnie później postanowiłem zabrać się z usługę Google Apps for Your Domain czyli podpięcie usług Googla pod własną domenę. Jako, że korzystam z wieli G-usług taka możliwość wydała mi się bardzo przydatna. Rejestracja nie jest trudna, chociaż nie ma (jeszcze) wersji polskiej. Po wypełnieniu formularza zostajemy poinformowani, jakie wpisy musimy dodać do DNS’a obsługującego naszą domenę. Jednym z nich jest wygenerowany dla nas specjalny adres, który ustawieni udowodni Googlowi, że to rzeczywiście my jesteśmy właścicielami tej domeny. Ustawiamy go jako jako rekord typu CNAME odsyłający do google.com

Po weryfikacji własności domeny zakładamy sobie użytkownika (w wersji FREE możemy ich założyć nawet 100) z prawami admina i logujemy się na niego. Po zalogowaniu mamy do dyspozycji taki oto panel

Początkowo nie usługi nie mają jednak adresów typu coś.naszadomena.com tylko takie brzydkie googlowe. Wystarczy jednak wejść do każdej z usług, kliknąć Change URL i wybrać odpowiadający nam adres. Zostaniemy wówczas poproszeni o dodanie do DNS’a odpowiedniego rekordu CNAME odwołującego się do ghs.google.com. W przypadku wysyłania i odbierania poczty musimy dodać rekord MX odwołujący się do 10 ASPMX.L.GOOGLE.COM

karbownicki.com  MX  3600  10 ASPMX.L.GOOGLE.COM

Jabber

Moje problemy pojawiły się dopiero przy uruchomienia jabbera pod własną domeną. Niby wszystko działało, ale mogłem pogadać jedynie z googlowymi kontaktami. Po dłuższym czasie googlowania i przeglądania różnych zakamarków pomocy trafiłem na rozwiązanie. Magicznymi zaklęciami okazały się brakujące rekordy SRV

_jabber._tcp.karbownicki.com  SRV  3600  5 0 5269 xmpp-server.l.google.com
_xmpp-server._tcp.karbownicki.com  SRV  3600  5 0 5269 xmpp-server.l.google.com
_xmpp-client._tcp.karbownicki.com  SRV  3600  20 0 5222 talk.l.google.com

Hura, działa. No prawie.. A właściwie nie bardzo. Tzn. sam jabber działa świetnie, łączy się z innymi serwerami itd. Nie mogę jednak dodać transportów. Po rejestracji w transporcie nie dodaje się one do listy, no ale nic, zawsze można dodać ręcznie. Po rozłączeniu i ponownym połączeniu również działa. No prawie.. A właściwie nie bardzo. Transport jest bo jest, ale już sam nas nie zaloguje do innej sieci. Trzeba go popychać ręcznie. Najdziwniejsze jest jednak to, że po wyłączeniu komunikatora i ponownym uruchomieniu po transportach już nie ma śladu (sprawdzone na Gajim-ie i Psi). A najlepsze jest to, po wywaleniu transportów na starym googlowym koncie i próbie ponownego dodania dzieje się to samo, chociaż wszystko działało do tej pory dobrze.

Ktoś ma jakiś pomysł ?

Plusy i minusy

Na początku byłem święcie przekonany, że zastanę możliwość podpięcia dotychczasowych usług pod moją domenę. Niestety byłem w błędzie. Nowo założony użytkownik dostaje „nowe” usługi. Nie ma nawet możliwości importowania wiadomości ze starego konta gmailowego, bo jak wiadomo ta opcja jest dopiero w fazie testów i dostępna jest dla losowo wybranych użytkowników. Np. na starym gmailu mam opcję pobierania wiadomości z innych kont, ale pod domeną już nie :) Jedyne więc co mi pozostaje to włączyć forwardowanie i czekać na możliwość importu. Kolejna ciekawostka jest taka, że pojemność konta pocztowego jest stała i wynosi 2GB. Nie zwiększa się codziennie o kilka MB jak to ma miejsce w przypadku zwyczajnych skrzynek gmaila.

Ilość usług dostępnych w domenie jest mocno okrojona. Dokładniej to jest to tylko:

  • Strona startowa
  • Jabber
  • Kreator stron
  • Poczta
  • Kalendarz
  • Dokumenty i arkusze

Przy czym np. strona startowa też jest mocno okrojona. Co prawda mamy do dyspozycji prosty edytorek to stworzenia i pokolorowania strony głównej…


...ale np ilość gadżetów do wstawienia z listy:

  • My Stuff
  • News
  • Business
  • Technology
  • Sports
  • Lifestyle
  • Fun

to 5-6 elementów w każdej kategorii z czego jedyne używalne to kalendarz, podgląd poczty i lista TODO.

Skromność usług wynagrodzić może nam jednak wstawienie własnego logo ;)

Podsumowanie

Google Apps for Your Domain – no cóż, nie ma rzeczy idealnych. Trzeba się po prostu cieszyć, że jest za darmo i podstawową funkcjonalność oferuje.

Pimp my Google

Internet 13 lutego 2007 o 18:51:38 | ☍ trackback

Dzisiaj będzie o świetnej wtyczce do Firefox’a imieniem CustomizeGoogle Co dokładnie potrafi 43 kB wtyczka ?

Pierwsza z moich ulubionych rzeczy to podpowiedzi do treści zapytania. Dokładniej wygląda to tak:

Jeżeli więc byłeś przekonany/byłaś przekonana, że pisze się prizon brejk to i tak znajdziesz to czego szukasz ;)

Drugą z ulubionych rzeczy są miniaturki stron. Nie chodzi mi to wcale o te przebajerowane skrypty atakujące nas miniaturką po najechaniu na jakiś link, w efekcie utrudniając nam tylko czytanie. Miniaturki wyświetlane są tuż obok linków, dzięki temu, jeżeli szukamy np. kiedyś już odwiedzonej strony, możemy ją namierzyć w ułamku sekundy.

Tak, wiem, jest do tego osobna wtyczka ale CustomizeGoogle potrafi nie tylko to.

  • w rezultatach wyszukiwania dodaje linki do WayBack Machine
  • przy wyszukiwaniu grafiki zmusza linki, aby prowadziły bezpośrednio do danej grafiki
  • usuwa reklamy
  • przy różnych usługach Googla wymusza przejście na bezpieczne połączenie https
  • w rezultatach wyszukiwania dodaje linki do innych wyszukiwarek z właśnie wpisanym zapytaniem
  • usuwa licznik spamu z Gmaila
  • blokuje ciasteczka Google Analytics.
  • blokuje śledzenie kliknięć
  • dodaje linki do zachowania strony w któreś z zakładkowych składnic
  • jest po polsku ;)

A wszystko ładnie podzielone na sekcje z możliwością włączenia lub wyłączenia dowolnej funkcjonalności

Notka zbiorcza.

Gentoo Internet Linux 18 października 2006 o 01:14:30 | ☍ trackback

Dawno nic tu nie pisałem, ale tak to jest kiedy liczba zadań wzrasta a nam forkowanie nie wychodzi. Więc dziś będzie notka zbiorcza

Z cyklu o jednym takim co zabił filesystem. Teraz już wiem dlaczego przy instalacji moje Gentoo wysypywało się po sugestii użyci murderFS-a. Ono już wtedy coś podejrzewało. Teraz nawet ci od nowel przeskakują na ext3.

Ostatnio od pisania powstrzymuje mnie fakt, że notki lecą też na Polską Planetę Gentoo ale skoro ta leży, a na dodatek znaleźć tam można rozważania o aparatach cyfrowych, więc i ja postanowiłem coś napisać. Nie rozumiem dlaczego osoby blogujące z WordPress-ów, które potrafią generować feedy dla kategorii podpinają całość bloga do planety. Co mnie przecież obchodzi co kto jadł dziś na śniadanie. Jeżeli wchodzę na planetę po to, żeby poczytać o sprawach związanych z Gentoo.

Oczywiście wiem, czepiam się a sam nie mam osobnego feed-u dla kategorii Linux. Jest to jeden z powodów dla których zastanawiam się nad emigracją z joggera. Chociaż minął już sezon wielkich ucieczek na WordPress-y to jednak patrząc teraz perspektywy czasu, wybrali dobrze. Poziom rozwoju joggera jest bliski zeru a na otwarcie kodu też nie ma co liczyć. A więc tak, oni mieli rację. Zgadzam się, wygodne są powiadomienia o komentarzach na innych joggerach, ale wydaje mi się, że zaimplementowanie tego na WordPress-ach to tylko kwestia czasu.

Loose Change

Inne Internet 10 września 2006 o 16:43:21 | ☍ trackback

Remember, remember, the 11th of September.

Jutro minie 5 lat od słynnego ataku terrorystów na bliźniacze wieże WTC oraz Pentagon. Z tej okazji chcę Was zaprosić do obejrzenia filmu dokumentalnego, poświęconego tamtym wydarzeniom, który w rzuca nowe światło na całą sprawę i w porównaniu do kilku animacji flash-owych, błąkających się po internecie, stara się rzetelnie wyjaśnić wszelkie okoliczności. Dokument nosi tytuł Loose Change.