Archive

Archive for December, 2008

Bardzo interesująca wiadomość ze świata Ruby

December 25th, 2008 No comments
Otóż Merb łączy się z Rails. Dwa konkurujące ze sobą frameworki zostaną połączone. Myślę, że to chwila historyczna. Dotychczas było tak, że powstawały klony, forki i inne projektowe potworki – czyli jakiś projekt Open Source był rozszczepiany. Teraz w świecie Ruby wykonano ruch w drugą stronę – w stronę połączenia. Przeważnie projekty były dzielone, ponieważ programistów dzieliły poglądy o przyszły rozwój projektu. To bardzo trudne, aby przy dużym zespole ludzi których łączy pasja tworzenia – ustalić wspólną przyszłość – wspólną drogę. Jak jedzie peleton kolarzy i na drodze pojawi się przeszkoda, to część kolarzy objeżdża ją po lewej a część po prawej stronie. Przeważnie tak dzieje się w projektach IT, i później jadą już dwa peletony. W świecie Ruby zapowiada się jednak rewolucja. Dla mnie nie jest to interesujące z punktu widzenia programowania jednak jako zjawisko społeczne. Życzę sukcesów!
Categories: Programowanie Tags:

Życzenia Świąteczne

December 24th, 2008 No comments
Z okazji Świąt chciałbym życzyć wszystkim Wam zdrowia pomyślności i spełnienia wszystkich marzeń!!!

Wszystkiego dobrego!

Categories: Zupełnie inne Tags:

Moi czytelnicy

December 24th, 2008 No comments
Dziękuję wszystkim którzy zechcieli przetestować mój nowy projekt – Filmspring Journal. A a oto filmik o moich czytelnikach.

Moi czytelnicy

Jeszcze raz dzięki :)))
Categories: Zupełnie inne Tags:

Chciałbym poznać czytelników

December 23rd, 2008 3 comments
Witam!
Postanowiłem na Was, drodzy czytelnicy, przetestować aplikację nad którą właśnie pracuję. Aplikacja służy do prowadzenia wywiadów wideo.

Hello World!


Jeżeli masz kamerkę internetową, to proszę, pomóż mi przetestować ten projekt. Sporo pracy włożyłem w zdobycie wiedzy, która pozwoliła mi na napisanie tego cuda. Jeszcze więcej pracy będę musiał włożyć w ulepszanie tej aplikacji. Proszę o opinię, komentarze i krytykę. Chociaż krytykę to może po Świętach;) Pozdrawiam
Categories: Recenzje Tags:

svn:externals

December 21st, 2008 3 comments

Nauczyłem się właśnie nowej fajnej rzeczy. Otóż zaciekawiło mnie o co chodzi w Eclipse podczas pobierania projektu z SVN:

Okazało się, że SVN ma już w sobie funkcjonalność o która od zawsze była mi potrzebna. Zwykle projekt informatyczny zawiera składa się z własnego kodu oraz z kodu wielu bibliotek. Na przykład mój projekt wykorzystuje bibliotekę swfobject. Aby z niej skorzystać powinienem w źródłach swojego projektu umieścić kod biblioteki. Tutaj z pomocą przychodzi mi svn:externals. Katalogi w moim repozytorium, mogą linkować do innych repozytoriów SVN. Na przykład:

$ svn propget svn:externals src/main/webapp/libs/
swfobject http://swfobject.googlecode.com/svn/trunk/swfobject
					

 

Wydanie tego polecenia informuje mnie, że katalog libs/swfobject powiązałem z repozytorium projektu swfobject. Aby dokonać takiego powiązania mogę posłużyć się edytorem zmiennych svn:

$ export EDITOR=mcedit.exe
$ svn propedit svn:externals src/main/webapp/libs

 

Tak więc, odkryłem dziś w SVN przydatną dla mnie funkcjonalność, która pozwoli mi lepiej porządkować kod źródłowy moich projektów.

Categories: Programowanie Tags:

Gadżety Google i uwierzytelnianie Oauth

December 21st, 2008 2 comments

Od pewnego czasu wersja angielska strony domowej Google (IG), wygląda nieco inaczej. Na dole strony jest przełącznik i warto z niego skorzystać. Bardzo interesującą rzeczą która już działa (niestety tylko w wersji angielskiej) są gadżety społecznościowe. To nowe API dla programistów gadżetów. Ja potrzebowałem następującej funkcjonalności. Chciałem się dowiedzieć jaki jest adres e-mail użytkownika który uruchamia mój gadżet. Niestety – nie potrafię zrobić tego wprost. Jednak kombinując z biblioteką do zarządzania kontaktami udało mi się to zrobić. Otóż odpytując ta bibliotekę zwraca ona listę kontaktów której właścicielem jest użytkownik o identyfikatorze. Ten identyfikator to adres e-mail którego szukałem;). Jak to działa – przykład jest tutaj. Przykład zadziała tylko w angielskiej wersji serwisu. Po dodaniu gadżetu w

Wyświetl się prośba o autoryzację:

Trzeba wybrać konto Google lub się zalogować

I następnie udzielić dostępu:

W ten sposób nasz zaprogramowany gadżet będzie miał dostęp do ksiązki adresowej użytkownika oraz będzie mógł sprawdzić jego adres e-mail, a także imię i nazwisko.

Niestety, adresowi e-mail otrzymanemy w ten sposób nie możemy ufać. Inny zły programista będzie mógł oszukać naszą aplikację i podać dowolny adres e-mail… Czy znacie jakiś sposób żeby gadżet google mógł sprawdzić adres e-mail zalogowanego użytkownika?

Categories: Google, JavaScript Tags:

Flex i klasy prywatny

December 14th, 2008 No comments

Bardzo lubię korzystać z prywatnych zagnieżdżonych klas w języku Java. Niestety, nie potrafię ich znaleźć w Action Script. To duża strata dla języka programowania. To prawie tak, jakby w języku polskim nie było przymiotników;). Problemy, które chciałbym rozwiązać prywatną klasą rozwiązuję więc w Flex w następujący sposób. Tworzę nowy plik z klasą internal class. Rzeczy, które powinny być private robię jako “interna”. Czyli w Flex mam dwie klasy w osobnych plikach lecz jednej z nich używam jako prywatnej. Właściwości języka AS3 bronią mnie przed użyciem moje klasy prawie prywatnej poza pakietem. Na przykład:

    public interface INetStreamClient

    {

 

        function onMetaData(info:Object=null):void;

[…]

        

Czy ktoś lubi dynamiczne klasy do implementowania netStream.client – bo ja nie… (takie dynamiczne klasy wymagają zbyt wielu komentarzy). Dlatego stworzyłem ten interfejs z wszystkimi metodami zwrotnymi serwera. Następnie każda implementacja rozszerza ten interfejs. Domyślna implementacja to logowanie:

    public class TracerNetStreamClient implements INetStreamClient {        

        

        public function onMetaData(info:Object=null):void {

            trace(“NetStreamClient.onMetaData: “ + info + ” duration: “ + info.duration);

        }

[…]

 

Powoli dochodzę do sedna sprawy. Mam klasę która pomaga mi odtwarzać filmy. Jednym z pól tej klasy jest “INetStreamClient”. W aplikacji jakieś inne obiekty mogą używać mojego pomocnika do odtwarzania filmów, podając mu swoja implementację klienta strumieni. Więc mam coś takiego:

    public class MoviePlayer

    {

        [Inspectable]

        public var netStreamClient:INetStreamClient;        

        

        private function createNetStream():void {

            _netStream = new NetStream(netConnection);

            _netStream.client = new MoviePlayerNetStreamClient(this, netStreamClient == null ? new TracerNetStreamClient() : netStreamClient );            

[…]

I właśnie teraz bardzo mi zabrakło zagnieżdżonej klasy prywatnej. Chciałem wzbogacić działanie metody onMetaData. Potrzebuję klasy Proxy, której będę potrzebował tylko w tym miejscu, i która powinna mieć dostęp do prywatnych możliwości klasy MoviePlayer. Niestety w Flex tego nie ma. Dlatego radzę sobie na około tworząc klasy internal. Moje prywatne Proxy wygląda więc tak:

    internal class MoviePlayerNetStreamClient implements INetStreamClient {

 

        private var _moviePlayer:MoviePlayer;

        private var _netStreamClient:INetStreamClient;

        

        public function MoviePlayerNetStreamClient(moviePlayer:MoviePlayer,netStreamClient:INetStreamClient)

        {

            super();

            _moviePlayer = moviePlayer;

            _netStreamClient = netStreamClient;

        }

        

        public function onMetaData(info:Object=null):void {

            var d:Number = info["duration"];

            _moviePlayer.addDuration(d);

            return _netStreamClient.onMetaData(info);

        }

        

[…]

Jak widać, klasy prywatne mogą przydać się do implementacji wzorca projektowego dekorator. Ich brak kompensuję klasą internal. Klasa internal widoczna jest w obrębie pakietu i trzeba ją umieścić w osobnym pliku.

Categories: FLEX Tags:

GMail i Gadgety Google

December 9th, 2008 No comments

Właśnie odkryłem, że do Gmaila można dodawać własne Gadżety Google IG. Na przykład szachy. Aby to zrobić, trzeba przełączyć GMaila do wersji angielskie. W zakładce Labs dodać własne Gadgety po adresie URL. I znowu przełączyć się na wybrana wersję językową. Dla mnie oznacza to, że muszę popracować nad gadżetem szachów uruchamianymi na węższym ekranie.

Categories: Google Tags:

Hasło do programu płatnik

December 5th, 2008 6 comments

Na temat programu płatnik napisano już wiele. Ja dorzucę jeszcze swoje trzy grosze. Hasła do programu Płatnik strzeżone są w zły sposób. Otóż jest on zbyt restrykcyjny. Hasło musi składać się z mały i dużych liter, cyfr i znaków specjalnych i musi mieć przynajmniej 8 znaków. Hasło trzeba zmieniać co miesiąc. Stare hasła są zapamiętywane i nie można i wykorzystać ponownie. W dodatku nie można tych bajerów wyłączyć. Natomiast odzyskiwanie zapomnianych haseł jest płatne i wymaga nie wiem jakich zabiegów… Po co to wszystko? Przecież wiadomo że skończy się to naklejeniem na monitor karteczki z aktualnym hasłem. Ja właśnie tak zrobiłem ignorując politykę bezpieczeństwa haseł za którą ZUS zapłacił pewnie worek pieniędzy.

Categories: Polityka Tags:

Google Talk Plugin – niewypał

December 2nd, 2008 2 comments

Dawno temu, Google było synonimem jakości. Dziś jest tak coraz rzadziej. Pisałem ostatnio o niewłaściwym zachowaniu bibliotek tworzących statystyki. Dziś poskarżę się na złe działanie produktu Google Talk Plugin – używanego do wideo czatów w GMailu. Otóż na moim raczej dobrym komputerze instalacja tego pluginu zawiesza inne aplikacje korzystające z kamery webowej. Nawet najprostszy AMCAP nie działa. Po odinstalowanie plugina Google wszystko działa poprawnie. Tak więc polecam nie używać wideo czatów Googla. Są inne dobre produkty w tej kategorii które nie stwarzają kłopotów.

Categories: Google Tags: