czwartek, 29 grudnia 2011

Nowa wersja Kolejnego Programu do Blogowania! (wykrzyknik jest w jego nazwie ;-))

Korzystając z paru wolnych chwil, jakie w tym starym roku jeszcze zostały, przypomniałem sobie o moim starym programie do blogowania (i mikroblogowania w pewnym sensie) i o brakujących funkcjonalnościach. Odgrzebałem więc źródła i dopisałem parę rzeczy, a mianowicie:
  • możliwość zapisu i odczytu (lokalnie) notki
  • sprawdzanie pisowni i sugerowanie poprawnej formy
  • ulepszenie okienka do wyboru/wstawiania obrazów
  • i kilka drobnych poprawek.

Krótki opis programu znaleźć można w dziale Po godzinach, natomiast źródła tradycyjnie leżą na GitHubie.

Edycja 30.12.2011:
Idąc za ciosem, dodałem kolejnych kilka poprawek i na GitHubie leży już wersja 0.0.4 (screenshot poniżej zaktualizowany).



sobota, 17 grudnia 2011

Jeszcze o prezentacjach - literatura

W jednym z moich poprzednich postów poruszyłem problem nieudolnego lub może raczej nieumiejętnego prowadzenia różnego rodzaju prezentacji czy wystapień. Wczoraj zaś, w bibliotece, wpadła mi w ręce ulotka pewnego wydawnictwa, na której widniała "zajawka" na temat książki Carmine Gallo "Steve Jobs. Sztuka prezentacji. Jak świetnie wypaść przed każdą publicznością". Zdaję sobie sprawę, że postać Steve'a stała się ostatnio tematem wielu publikacji, włącznie z biograficznymi, jednak ta książka - jak się domyślam, ponieważ nie posiadam jej ani tym bardziej nie czytałem - traktuje o jednej z najmocniejszych cech zmarłego niedawno szefa Apple: o umiejętności prezentacji (wystąpień) i o sposobie ich przygotowywania oraz prowadzenia.
Osobiście nie byłem nigdy i nadal nie jestem fanem Apple, Jobsa ani jego wystąpień, wolałem zawsze prezentacje z udziałem Billa Gatesa, ale jedno trzeba Steve'owi oddać: potrafił zrobić niepowtarzalny show, przykuwając uwagę i wzbudzając zainteresowanie publiczności od początku do końca, bez drzemki.
Być może zaopatrzę się w tę publikację, choć czytając artykuł, który znalazłem na Blogu o elearningu i nowoczesnej edukacji: Sztuka Prezentacji, czyli wystąpienia publiczne by Steve Jobs. Część 1 odniosłem wrażenie, że moja wizja prezentacji bliska jest wzorcowi, co mnie oczywiście bardzo cieszy.

czwartek, 15 grudnia 2011

Mała modyfikacja przykładu, ale ciekawy moduł w użyciu

Na swoim blogu poświęconym programowaniu Peteris Krumins redaguje (rozwija?) od pewnego czasu serię artykułów pod tytułem "Node.JS Modules You Should Know About". Jednym z ciekawszych, przedstawianych na tym blogu modułów jest optimist - szalenie wygodny w użyciu wrapper dla systemowego mechanizmu obsługi wiersza polecenia, a dokładniej parametrów wywołania programu. Postanowiłem wypróbować ten moduł, najpierw wprowadzając lekką modyfikację do publikowanego wcześniej prostego klona programu curl ("Node.js i aplikacje CLI - smaczek przed sesją"):


Oczywiście powyższy kod zawiera tylko minimalną próbkę możliwości optimista ale myślę, że moduł ten na stałe zagości na mojej liście koniecznych rozszerzeń dla Node.js.

Polecam artykuł prezentujący przegląd możliwości tego rozszerzenia:
Node.js modules you should know about: optimist

Moja wizja prezentacji, czyli jak nie sknocić wystąpienia.

Sztuka prezentacji. Trudna do opanowania, chyba głównie ze względu na szereg pokus, jakie się czają podczas korzystania z urządzeń technicznych wspomagających wystąpienia. Pomijam tu oczywiście nieznajomość oprogramowania czy obsługi komputera (projektora, pilota do slajdów itp.). Biorąc udział w różnych prezentacjach, prelekcjach, wykładach i innego typu wystąpieniach, niekoniecznie ludzi z branży informatycznej, zauważyłem, że porażająca większość prelegentów nie potrafi występować przed jakimkolwiek audytorium. Co ciekawsze, informatycy są w wystąpieniach przeważnie świetni, robią bardzo dobre prezentacje i wiedzą o wielu rzeczach, o których np. ludzie z branży edukacyjnej, którzy powinni mieć sztukę wystąpień opanowaną do perfekcji, nie mają czasem pojęcia. I nie chodzi tu bynajmniej o rzeczy, których rzekomo informatycy uczą się na studiach (bzdura, jeśli mogę użyć języka pewnego mojego kolegi).
Spróbuję w tym poście w miarę klarownie przedstawić moją wizję prowadzenia wystąpienia wspomaganego slajdami i demonstracjami (niekoniecznie związanymi z prezentacją kodu programu ;-)).

Wzorzec vs. antywzorzec.

Wzorzec:
Prezentacja (wykład) podczas spotkania ludzi branży informatycznej, np. CodeCamp. Prelegent prowadzi wykład na temat jakiejś technologii. Nie czyta tekstu ze slajdów, nie uzupełnia swoim przemówieniem treści wyświetlanej na ekranie. Slajdy służą mu wyłącznie jako ilustracja wystąpienia. Są efekty specjalne, ale ich liczba i rodzaj są ściśle związane z przedstawianą treścią (animacje pokazujące przebieg jakiegoś procesu, np. uwierzytelniania). Jeśli jest to prezentacja developerska, slajdów jest relatywnie mało, natomiast wiele czasu prelegent poświęca na dema (prezentuje jakiś program, technologię, kod źródłowy, przeprowadza pokaz na żywo, rozwijając jakiś kod i prezentując efekty działania programu, który właśnie stworzył). Niesamowite wrażenie robią interesujące pointy, podsumowujące np. wygodę czy szybkość uzyskania jakiegoś efektu. Ale gdyby nawet sesja była wyłącznie „opowiadana”, to jednak slajdy nie występują w roli głównej. Elementy interakcji ze słuchaczami (i w drugą stronę) bywają interesującym urozmaiceniem.

Antywzorzec:
Miałem „przyjemność” parę tygodni temu brać udział w konferencji informacyjno-szkoleniowej dla nauczycieli zawodów wszelakich na temat nowego systemu szkolnictwa zawodowego. Występowały na przemian dwie osoby. O ile jedna z nich radziła sobie naprawdę nieźle (wiedziała, co mówi i o czym mówi, nie spoglądała co chwilę na ekran itd.), o tyle druga osoba zdefiniowała mi antywzorzec wystąpienia. Po kolei więc. Slajdy w roli głównej. Cóż z tego, że pomysłowo przygotowane, bez „bajerów”, z tendencją do czytelności, kiedy... Zdarzały się slajdy zawalone kilkudziesięcioma wierszami tekstu (na oko czcionka 12). Czasem był to tekst wklejony jako zrzut ekranu z PDFa, a czasem nawet z... Worda (widoczne charakterystyczne podkreślenie wyrazów nie znalezionych w słowniku). O ile dałoby się to jeszcze wytrzymać, osoba występująca po prostu... czytała zawartość tych slajdów, oszczędzając nam jakiegokolwiek tłumaczenia. Mówiła głosem szalenie monotonnym, robiąc wszystko, by słuchacze się jak najszybciej wyłączyli. Były elementy interakcji, które jednak wynikały z frustracji i zniecierpliwienia spragnionego konkretów audytorium. A jeśli przyszło odpowiadać na pytania słuchaczy, cóż... nie było za dobrze (bo czasem trzeba wiedzieć, o czym się mówi).

Macie więc porównanie. Umiejętne prowadzenie prezentacji może naprawdę wywołać u słuchaczy zaciekawienie choćby najbardziej nudnym tematem. Niestety, działa to też w drugą stronę - fatalnie przygotowanym wystąpieniem można zarżnąć najlepszy i najbardziej fascynujący temat.
OK, nie każdy umie przemawiać i nie każdy potrafi nawiązać ten właściwy kontakt z publicznością. Ale każdy występujący chce mieć slajdy w tle. Oto więc kilka moich uwag, składających się na ową zapowiedzianą wcześniej wizję udanego wystąpienia wspomaganego slajdami.

Zawartość slajdów.

Co slajdy powinny zawierać? To zależy, ale można spróbować wypunktować pewne istotne rzeczy:
  • ilustrację (słowną lub obrazową) aktualnie przedstawianego problemu;
  • wypunktowane najważniejsze aspekty omawianego problemu;
  • wizualizację problemu.

Czego nie lubię na slajdach? Nadmiaru tekstu. Jeśli chcę, żeby słuchacze uzyskali dostęp do jakiegoś litego tekstu (akty prawne itp.), to podaję link, albo udostępniam w sieci lokalnej (jeśli mam możliwość), w ostateczności zaś rozdaję wydruki (nieekologiczne rozwiązanie - unikam, kiedy tylko się da).

Efekty specjalne, czyli „Na kolana, psy!”

Do czego służyć powinny w prezentacjach efekty specjalne? Przede wszystkim do wizualizacji przedstawianego problemu. W następnej kolejności ich rolą jest skupienie uwagi audytorium (np. elegancki efekt przejścia pomiędzy slajdami, kiedy przez chwilę nic nie jest wyświetlane, po czym pojawia się następny slajd - odbiorcy widzą na własne oczy zmianę, nawet jeśli przez chwilę nie skupiali się na tym, co jest aktualnie pokazywane).
Znam natomiast wiele osób, dla których efekty specjalne są celem samym w sobie, świadczą wręcz o jakości prezentacji, o „wypasie”. Bezsensownie latające napisy, dziwnie zakręcone obrazki, powklejane gdzie się da, mniej lub bardziej głupawe, animowane GIFy... A na samym szczycie owej małej patologii są prezentacje, które składają się z różnokolorowych slajdów, z kontrastującymi, oczo...bnymi napisami...
Nie popisujmy się znajomością efektów specjalnych poprzez wklejanie ich, gdzie tylko się da. Wierzcie mi, największe wrażenie robią na odbiorcach efekty zastosowane w konkretnym celu, pokazujące coś bardzo istotnego ze względu na omawiany problem.

Gadżety

Moim zdaniem wskazane jest używanie podczas prezentacji różnego rodzaju pilotów (może to być dedykowany pilot lub np. smartfon z odpowiednim oprogramowaniem - ja z powodzeniem używam na mojej starej Nokii E51 programu Nokia Wireless Presenter; podobno są też odpowiednie programy na Androida czy iOS). Co jednak najistotniejsze, nie można się na tych gadżetach jakoś specjalnie skupiać - one nam pomagają, eliminują pretensjonalne podchodzenie do komputera i klepanie spacji, jednak powinniśmy ich używać „w tle”. Publiczność ma czuć magię!

Wiem o czym mówię. Audytorium też wie.

To punkt nie do końca na temat slajdów, ale bardzo ważny. Prowadząc prezentację (wykład, prelekcję) muszę wiedzieć o czym mówię. Muszę znać różne aspekty omawianego problemu i muszę je przedstawić tak, żeby słuchający mnie ludzie rozumieli, o czym do nich mówię i żeby ich zaciekawić, a nie uśpić czy - co gorsza - zdenerwować. Oczywiście zwykle prowadzi się prezentację na dobrze poznany temat, więc prelegent wie, o czym mówi, jednak jeśli nie przećwiczy wystąpienia, najlepiej przed kimś, kto nie jest wprowadzony w przedstawiane zagadnienia, to klapa murowana, niestety.

Początek i koniec.

O tym raczej wszyscy pamiętają - na początku trzeba przedstawić temat wystąpienia, troszkę go rozwinąć (rozgrzać publiczność ;-)), przedstawić siebie i podać plan wystąpienia (koniecznie trzeba się go trzymać - tutaj pomocna jest próba lub nawet dwie). Warto co jakiś czas przypominać plan prezentacji (powtarzać slajd z planem) - ułatwi to odbiorcom orientację, w którym miejscu prezentacji się aktualnie znajdują.
A na koniec oczywiście trzeba ładnie podziękować za wysłuchanie (udział), można też się przypomnieć oraz np. podać źródła informacji uzupełniających nasze wystąpienie.
Jeśli sytuacja czy specyfika warunków prowadzenia prezentacji na to pozwala, można również poprosić publiczność o ewentualne pytania i spróbować na nie opowiedzieć.

Wnioski.

Wniosek jest jeden, krótki. Prezentacja multimedialna (pokaz slajdów) nie jest sztuką dla sztuki. Jest wspomaganiem wystąpienia, zastępuje nam tablicę i pisak oraz wiele innych przyborów, za pomocą których dawniej wzbogacaliśmy wystąpienia. Nie oszukujmy publiczności, czytając slajdy (publiczność potrafi czytać!).
Najważniejszym elementem prezentacji jest prelegent, jego wiedza i doświadczenie oraz umiejętność ich przekazania.

To oczywiście moja prywatna wizja, możecie się z nią nie zgadzać, możecie również dorzucić własne uwagi i spostrzeżenia - zachęcam!

poniedziałek, 28 listopada 2011

Podstawy Node.js - wysyłanie żądań do serwerów WWW (POST)

Dwie chyba najbardziej podstawowe metody protokołu HTTP to GET i POST. Jak sugerują nazwy, pierwsza metoda służy przede wszystkim do pobierania zasobów z serwera (możliwe jest ewentualnie przekazywanie parametrów), druga - do wysyłania danych (np. z formularza) do serwera/serwisu. Szerzej metody te przedstawione zostały w zalinkowanych niżej artykułach i książce.
Metoda GET została zademonstrowana w przykładzie dołączonym do artykułu "Node.js i aplikacje CLI - smaczek przed sesją", nie wymaga więc ponownej prezentacji (mam nadzieję).
Czas w takim razie na metodę POST. Poniższy program demonstruje wykorzystanie znanego nam już obiektu ClientRequest, tworzonego przez funkcję http.request, do wysłania dwóch linijek tekstu do serwera WWW (przyda się tutaj przykład z 35. spotkania ŚRGM - kliknij, wybierz full-web-app).
Należy zauważyć, że utworzony obiekt ClientRequest jest jednocześnie strumieniem z możliwością zapisu - uzyskujemy to dzięki zadeklarowanej w opcjach połączenia (zmienna req_opts) metodzie POST. W związku z tym wysyłanie danych do serwera (we fragmentach - ang. chunks) realizowane jest poprzez funkcję write obiektu ClientRequest, przy czym każde jej wywołanie (w załączonym przykładzie) traktowane jest jak wysłanie kolejnego fragmentu danych (chunk). Zakończenie wysyłania to oczywiście wywołanie funkcji end dla obiektu ClientRequest.
Po zakończeniu transmisji serwer wyśle naszemu programowi odpowiedź (zdarzenie "response") w postaci strony WWW, przygotowanej w oparciu o przesłane wcześniej dane (no, w naszym przypadku określenie "strona WWW" to lekka przesada...).
Zachęcam do przetestowania programu i samodzielnego zgłebienia tematu.



Bibliografia:
Metoda POST
Metoda GET
Protokół HTTP
C. Wong: HTTP. Leksykon kieszonkowy - niestety, niedostępna, ale fajna książeczka.
Funkcja http.request (Node.js API)
Obiekt ClientRequest (Node.js API)

piątek, 25 listopada 2011

Po 35. spotkaniu ŚRGM i PLSSUG Katowice

Tym razem wystąpiłem w roli prelegenta, zresztą już się chwaliłem. Moja sesja poświęcona była - o czym też już pisałem - środowisku Node.js. Mimo, że tematyka nie dotyczyła bezpośrednio technologii związanych z firmą Microsoft, odniosłem wrażenie, że uczestnicy spotkania nie nudzili się (aż tak ;-)) - przeciwnie, kilku kolegów wzięło aktywny udział w dyskusji w trakcie prezentacji, za co im oczywiście bardzo dziękuję.
Nie uniknąłem też kilku niedomówień czy zaniedbań. Te pierwsze wynikały zapewne z chęci przekazania jak największej liczby informacji (więc o kilku rzeczach zapomniałem), a zaniedbania - no cóż, nie sprawdziłem np. czy są dostępne moduły do komunikacji z bazami danych Microsoft SQL Servera (a są: node-mssql). I zapewne jeszcze coś się znajdzie. Za wszelkie te nieścisłości i braki przepraszam - obiecuję nadrobić zaległości pisząc regularnie, mam nadzieję, na tym blogu o różnych aspektach tworzenia aplikacji w Node.
No i siła wyższa - podobnie, jak u Tobiasza podczas SCC - z powodu bardzo ograniczonego dostępu do internetu nie zadziałało moje najbardziej spektakularne demo (stream publicznego timelineu Twittera), musiałem prezentować na sucho... O programie napisanym specjalnie na prezentację (mocno uproszczonym odpowiedniku curl) już nie wspomnę.
Mam jednak nadzieję, że o ile nie zachęciłem, to przynajmniej zainteresowałem uczestników środowiskiem Node i możliwościami, jakie wnosi do sfery programowania stron webowych.

Obiecałem udostępnić materiały z sesji, co też z przyjemnością czynię - poniżej.

Prezentacja:

Przykłady (20kB)
Prezentacja w formacie PDF (0,5MB)

A na koniec nius, który pojawił się dzisiaj. Nowa wersja Node.js - 0.6.3 - posiada już zintegrowany menedżer pakietów npm, działający również w systemach Windows, co powoduje, że Node.js staje się jeszcze bardziej użyteczny w przypadku tej platformy systemowej. Szkoda, że nowa wersja wyszła dzień po spotkaniu Grupy :-)

środa, 23 listopada 2011

Node.js i aplikacje CLI - smaczek przed sesją

Na rozgrzewkę przed sesją o Node.js (jutro, na 35. spotkaniu Śląskiej Regionalnej Grupy Microsoft) bardzo prosty programik demonstrujący użycie funkcji http.request(). Mimo, że Node.js to przede wszystkim platforma uruchomieniowa lub raczej środowisko uruchomieniowe dla aplikacji sieciowych (w tym głównie webowych), można je również wykorzystać do tworzenia niekoniecznie prostych programów typu CLI. Poniżej przykład - coś na wzór programu curl, choć tutaj akurat szalenie uproszczonego:



Do zobaczenia na spotkaniu!

piątek, 18 listopada 2011

Przymiarki do cyklu artykułów o Node.js

Jeśli nic dziwnego się nie przydarzy, już w czwartek, 24 listopada będziecie mogli wziąć udział w 35. spotkaniu Śląskiej Regionalnej Grupy Microsoft, podczas którego będę miał przyjemność wystąpić z miniwykładem na temat podstaw Node.js. Oczywiście zapraszam na spotkanie - szczegóły na stronie Grupy.

Po spotkaniu postaram się rozwinąć temat Node.js poprzez cykl (mam nadzieję) artykułów publikowanych w miarę regularnie na tym blogu. Teraz zaś, na zachętę, zamieszczam parę linków do artykułów (po polsku; o wiele więcej informacji znajdziemy w tekstach anglojęzycznych) wprowadzających w szalenie ciekawą tematykę Node, przedstawiających zasady działania i styl pisania aplikacji wykorzystujących to środowisko. Jak sam Ryan Dahl, twórca Node, powiedział, jego program to "tylko" zestaw bibliotek nadbudowanych nad googlowską V8 (bardzo wydajnym silnikiem Javascriptu)... Ładne "tylko" ;-)

Owocnej lektury!

Node.js: na czym polega sterowanie zdarzeniami w serwerze WWW?
Node.js (@-notatnik studenta)
„Zobaczmy to jeszcze raz” – Javascript i Node.js
Node.js – sieć czasu rzeczywistego
Zapachy świeżej kawy: node.js

I jeszcze trzy książki:
The Node Beginner Book
Hands-on Node.js
Mastering Node.js (w opracowaniu, ale część już można pobierać i czytać).

czwartek, 20 października 2011

Własna chmura, czyli pierwszy kontakt z ownCloud


Szperając w newsach i przeglądając zawartość czytnika RSSów natrafiłem na artykuł "ownCloud 2: your personal cloud server", w którym zaprezentowany został dosyć ciekawy projekt o nazwie ownCloud, będący "częścią rodziny KDE". Projekt pozwalający na wdrożenie na własnym serwerze (komputerze w sieci lokalnej itp.) prostego serwisu do przechowywania i udostępniania plików, kontaktów, kalendarzy itp. - czyli utworzenie czegoś na wzór popularnych obecnie i mocno promowanych chmur (o chmurach pisałem już jakiś czas temu, kiedy temat dopiero zaczynał interesować środowiska IT).
ownCloud być może nie jest jedynym tego typu rozwiązaniem dostępnym na otwartej licencji, ale urzeka prostotą i intuicyjnością, choć w kilku obszarach wymaga dopracowania.

Instalacja

Proces instalacji jest bardzo prosty (opisany np. w linkowanym wcześniej artykule) - polega na rozpakowaniu pobranego archiwum, przeniesieniu plików w miejsce, które może być spokojnie serwowane przez apacza, ustaleniu właściciela plików i... już. Restart serwera apache to tylko formalność, acz konieczna. Co do wymogów dotyczących potrzebnego do uruchomienia i działania aplikacji dodatkowego oprogramowania, w zasadzie wszystkie składniki są już zainstalowane na większości komputerów, szczególnie tych, na których działa apache wraz z PHP i serwerem MySQL.

Konfiguracja wstępna

Przy pierwszym uruchomieniu aplikacji należy ustalić nazwę użytkownika z uprawnieniami administratora (kwestia przypisania o odpowiedniej grupy uprawnień, ale to już później, w panelu ustawień aplikacji) oraz hasło dla tego użytkownika, zadecydować, który silnik bazodanowy wykorzystamy w naszym serwisie (do wyboru SQLite lub MySQL - ja wybrałem ten drugi) i zatwierdzić miejsce składowania plików użytkowników.


Użytkowanie

Po zalogowaniu możemy od razu przejść do użytkowania serwisu :-) Najpierw ujrzymy stronę startową - pustą listę plików (nasza w tym głowa, żeby ją zapełnić):


Oczywiście wrzucamy jakąś zawartość - u mnie na pierwszy ogień poszły pliki muzyczne, bo chciałem przy okazji sprawdzić, jak działa wbudowany w serwis odtwarzacz:


I tu pierwszy zonk - odtwarzacz nie do końca radzi sobie z niektórymi plikami muzycznymi - z dwóch przykładowych, testowych "empetrójek" był w stanie odtworzyć tylko jedną. Być może nie jest to wina samej aplikacji, może część winy leży po stronie przeglądarki? Nie wiem, bedę testował dalej (jeśli wystarczy czasu).


Zasoby, które umieścimy w naszej chmurze możemy udostępniać innym użytkownikom lub grupom. Dostępna jest też specjalna opcja - możemy uczynić pliki publicznymi, ale w tym przypadku uwagę należy zwrócić na prawa autorskie i licencje (szczególnie, jeśli będziemy przechowywać w chmurze muzykę, wideo, fotografie czy pakiety instalacyjne programów).

Konfiguracja - c.d.

Każdy użytkownik ma możliwość (nieco ograniczoną) personalizacji serwisu, szczególnie, jeśli uruchomionych (uaktywnionych) jest więcej aplikacji. Owe aplikacje to chyba główna siła uderzeniowa ownCloud (istnieje nawet możliwość tworzenia własnych aplikacji - niestety, nie zagłębiłem się jeszcze w szczegóły). Na początku, domyślnie włączone są kalendarz, udostępnianie plików, kontakty i media. Włączania lub wyłączania aplikacji może dokonywać administrator z poziomu panelu ustawień:


U siebie zostawiłem tylko media i udostępnianie plików.
Wszyscy użytkownicy mogą za to zmieniać swoje ustawienia osobiste (w tym hasło, opcje specyficzne ze względu na uaktywnione aplikacje):


Wracając do admina, ma on jeszcze (oczywiście :-)) możliwość tworzenia, edycji i usuwania kont użytkowników i grup. Nie można (a przynajmniej nie znalazłem takiej możliwości) tworzyć grup osobno - nową grupę generuje się w momencie przypisania do niej nowo utworzonego konta użytkownika.
Dla każdego użytkownika można ustalić quotę (przestrzeń dyskową do wykorzystania) - rzecz niewątpliwie przydatną. Nie próbowałem jednak spowodować sytuacji przekroczenia quoty, więc nie wiem, jak w tym przypadku zachowa się aplikacja.


Co ciekawe, do serwisu, a w zasadzie do usług udostępnianych przez poszczególne aplikacje można uzyskać dostęp korzystając z WebDAV, CalDAV i CardDAV - tutaj duży plus dla twórców (działa - testowałem WebDAV).
Kolejna przyjemna rzecz to praktycznie brak konieczności zmian konfiguracji samego środowiska serwera apache i PHP, poza jednym szczegółem - parametrem pozwalającym na upload plików większych, niż 2MB...

Wnioski

Tylko tyle udało mi się przejrzeć w ciągu pierwszych kilkunastu minut testowania ownCloud. Ale wniosków kilka wyciągnąć się da ;-) Po pierwsze, coraz bardziej kocham HTML5 :-) Po drugie, aplikacja - mimo, że znajduje się w fazie mocno rozwojowej - działa dosyć sprawnie, a interfejs zaprojektowany jest jako produkt intuicyjny, pod względem koloru i designu dobrze dopasowany do współczesnych trendów. Po trzecie, aplikacje tego typu stanowić mogą niezłą alternatywę dla samby, która co prawda rewelacyjnie działa na zderzeniu systemów Windows i Linux, jednak wymaga poświęcenia relatywnie dużej ilości czasu na poprawną (pożądaną) konfigurację. Jak na początek, dla mnie ownCloud to świetne rozwiązanie, które raczej zagości na stałe w mojej małej sieci lokalnej. No i oczywiście postaram się - w miarę wolnego czasu - poszerzyć swoje doświadczenia związane z użytkowaniem ownCloud. Kto wie, może skrobnę jakiś bardziej zaangażowany artykuł?

Strona projektu:
http://owncloud.org

poniedziałek, 17 października 2011

Kilka linków dla programistów piszących w C, a chcących przesiąść się na C++

Tak! Temat ciągle aktualny - tak, jak ciągle możemy znaleźć ludzi, którzy rewelacyjnie programują mikrokontrolery ATMega/ATTiny (w odmianie Basica) jak i inne, z serii 8051 (w asemblerze lub czasem w C), nie mając pojęcia o np. programowaniu zorientowanym obiektowo, frameworkach, bibliotekach itp.
Czasem zdarza się, że programiści, którzy zjedli zęby na C, chcą czy muszą nauczyć się szybko języka C++ (nie będę wnikał w szczegóły i powody decyzji, czemu akurat C++; na temat braków tego języka, jak i zalet, dyskutowaliśmy parokrotnie na G+). Być może, gdyby dobrze pogooglać, znajdzie się wiele poradników na ten temat, ja jednak chciałbym tutaj zaproponować coś, co znalazłem w codziennym mailingu:
From C to C++: A quick reference for aging programmers :-)
oraz - idąc dalej tym tropem:
C++ tutorial for C users.
I jeszcze lista linków:
C++ tutorial for C users (sekcja Related)
Polecam!

wtorek, 4 października 2011

"We code hard in these cubicles"

Tym razem wideo prezentowane podczas otwarcia tegorocznej konferencji JavaOne. Uwielbiam to połączenie Javy ze sztuką ;-)



(źródło: The "Java Life" Rap Music Video)

Jeśli ktoś chce sobie porapować z geekami, może posłużyć się dostępnym w sieci tekstem...

Wszyscy oczywiście doskonale pamiętamy Lady Javę :-)

niedziela, 18 września 2011

Ostrożnie z "lawinową" aktualizacją Ubuntu!

Od niemal półtora roku jestem szczęśliwym użytkownikiem Ubuntu 10.04 LTS (obecnie 10.04.3) jako jedynego, głównego systemu operacyjnego na moim komputerze stacjonarnym. Jest to szalenie wygodny OS - głównie do pracy, ale i do rozrywki. Dystrybucja, na którą się zdecydowałem, ma wielu - że ich tak określę - oponentów, przeciwników nawet, ale - jak zwykł mawiać mój znajomy - linux to przede wszystkim linux. Wcześniej uzywałem linuksów różnej maści, ale nigdy jako głównego systemu - zwykle wirtualizowałem, a dawniej, zanim sprzęt pozwolił na wirtualizację, wydzielałem sobie kawałek dysku i robiłem dual-boota.

Do rzeczy jednak.

Ubuntu zwykle jest całkiem nieźle opracowaną dystrybucją, choć moim numerem jeden zawsze był SuSE (tam jest YAST - miodzisko wśród programów do zarządzania systemem). Wybrałem linuksa Ubuntu bo nie jest hardcorowy (sport pod tytułem "grzebanie w systemie 24/7 i podniecanie się najdrobniejszymi efektami" to już dla mnie przeszłość) i jednocześnie bazuje na legendarnym (kultowym?) Debianie. No i łatwość aktualizacji... niestety momentami zgubna. Otóż żeby dysponować ciągle w miarę aktualnymi wersjami różnych programów, trzeba zwykle dodawać do systemu zarządzania pakietami oprogramowania nowe repozytoria - Canonical raczej nie dźwiga wersji poszczególnych programów w ramach danej dystrybucji; dostarcza co najwyżej poprawki. Owe repozytoria są oczywiście czysto społecznościowe i choć w znakomitej większości dostarczają działających programów i bibliotek, może się zdarzyć, że nasza "pazerność" na najnowsze wersje odbije się na stabilności systemu. Wczoraj tego właśnie doświadczyłem - chciałem bardzo dźwignąć wersję Shotwella (mojego ulubionego programu do zarządzania zdjęciami), więc musiałem zaktualizować całą masę pakietów. Przejrzałem je i uznałem, że w zasadzie nie mogą namieszać (parę zaktualizowanych bibliotek związanych z multimediami itp.). I zaktualizowałem. Pierwszy szok: Shotwell się sypie. Cofnąłem do mocno starej wersji - zadziałała. OK, zrestartowałem więc komputer - czasem jest to niepotrzebne, ale zwykle tak robię po większych aktualizacjach. Okazało się, że "poległ" GDM - zamiast okna logowania miałem czarny ekran. Przekonfigurowałem więc system na logowanie użytkowników w trybie tekstowym, przejrzałem logi, znalazłem powód (błąd związany z przetwarzaniem przez GDM wyrażenia regularnego - popularny, ale w mojej wersji systemu niemożliwy do usunięcia prostymi i znanymi sposobami), podjąłem próbę cofnięcia wersji zaktualizowanych pakietów - niestety, proponowane przez system rozwiązanie (ech, zależności...) było trudniejsze, niż potencjalna reinstalacja Ubuntu. Ponaprawiałem więc co się dało, wyłączyłem GDM, zainstalowałem LXDM (też się sypał), w końcu zdecydowałem się na SLIMa - i działa, da się pracować.

A straty?

Cóż, nie skorzystam z GDMa (nie działa przełączanie użytkowników, jak również musiałem usunąć hasła z baz kluczy, bo pojawiało się po zalogowaniu to denerwujące okienko z prośbą o odblokowanie), Midnight Commander zapomniał o tym, jak się kopiuje i przenosi pliki (serio, nie wiem, o co kaman; w każdym razie zamieniłem go na lfm), notify-osd nie wyświetla pełnego dymku z wiadomością, tylko kreskę z cieniem (szczegół, choć dymki były fajne; zamieniłem na stary notification-daemon - okienka zamiast dymków też ujdą). I pewnie coś jeszcze, czego nie odkryłem. Mam jednak nadzieję, że jeszcze przez jakiś czas popracuję swobodnie, bez konieczności instalowania nowszej wersji (od zera oczywiście).

Wnioski?

Odrobina pokory - zawsze powinniśmy rozważyć, czy ma sens podejmowanie ryzyka położenia świetnie spisującego się systemu tylko dlatego, żeby się podniecać wyższym numerem wersji jakiegoś programu... Aktualizujmy z głową :-)

środa, 14 września 2011

wtorek, 6 września 2011

Przegląd prasy, czyli kolejne ciekawe artykuły

Tym razem dwa linki do artykułów poruszających kwestię bycia dobrym programistą oraz jeden do ciekawego bloga wyjaśniającego, czym tak naprawdę jest REST, czyli które API są RESTowe, a które nie. I kiedy :-)
Zapraszam do lektury.

Become a Good Programmer in Six Really Hard Steps
Top Ten Most Influential Programming Books of All Time
Clarifying REST


wtorek, 30 sierpnia 2011

Zapis ścieżki, czyli śledzenie położenia

Jakiś czas temu zastanawiałem się (na Google+), jak rozwiązać problem wzbogacenia zdjęć wykonywanych aparatem bez GPS o geotagi. Geotag to - w skrócie - znacznik położenia (na Ziemi ;-)), w którym to położeniu znajdował się aparat podczas robienia danej fotografii, zapisany w obszarze metadanych EXIF pliku graficznego (u mnie JPEG).
Pierwsze rozwiązanie to oczywiście zakup odpowiedniego sprzętu. Drogo (względnie). Drugie rozwiązanie, to rejestrowanie (za pomocą w miarę specjalistycznego sprzętu) zmian naszego położenia podczas wykonywania zdjęć, a później, z wykorzystaniem komputera i odpowiedniego oprogramowania, zestawienie zapisanej ścieżki z fotografiami. Warunkiem koniecznym jest, aby w aparacie fotograficznym były ustawione aktualne data i czas.
Mając zapisaną ścieżkę (kolejne sekwencje zawierające długość i szerokość geograficzną, czas rejestracji położenia i ewentualnie wysokość n. p. m.) - najlepiej w jednym z uznanych standardów (formatów) - można wykorzystać np. GPS Photo Correlate (strona projektu), żeby osiągnąć założony na początku cel, czyli otagować zdjęcia.
Najpopularniejszym urządzeniem zawierającym moduł GPS jest oczywiście telefon komórkowy (lub lepiej: smartphone).
Istnieją programy (darmowe), które pozwalają na śledzenie położenia za pomocą telefonicznego GPS-a - np. Sports Tracker (http://www.sports-tracker.com/), jednak na tym blogu nie będę pisał, jak z nich korzystać ;-) Przedstawię za to bardzo prosty program (skrypt) w Pythonie (dla systemów Symbian S60v3 i nowszych), który zapisuje ową ścieżkę.



Format pliku wynikowego nie jest zgodny z żadnym standardem, jednak nic nie stoi na przeszkodzie, żeby przerobić prezentowany skrypt w sposób umożliwiający rejestrację śladu w formacie pliku CSV (akceptowalnego przez GPS Photo Correlate, a jeśli nie, to łatwego do konwersji np. do formatu GPX za pomocą programu gpsbabel).

Plik skryptu kopiujemy do naszego telefonu i uruchamiamy za pomocą konsoli Pythona.

Rzut oka na konsolę podczas działania programu (nic ciekawego...):


I zrzut ekranu pokazujący, że procesor podczas śledzenia naszego położenia praktycznie się nudzi:


Wkrótce postaram się zaprezentować skrypt, który wygeneruje plik w formacie CSV zrozumiałym dla programów przetwarzających dane z GPS.

środa, 10 sierpnia 2011

Parę linków dla webdesignerów

Projektowanie stron WWW tylko pozornie nie ma nic wspólnego z programowaniem - przekonał się o tym już chyba każdy, kto chciał dodać odrobinę życia do tworzonego przez siebie serwisu (i nie mam tu na myśli animowanego GIFa). Czasem po prostu wystarczy wkleić lub zalinkować skrypt, potem odpowiednio wywołać funkje jako akcje, czasem trzeba napisać coś od początku. W każdym razie przedstawiam kilka linków do artykułów krążących wokół ciągle nowego standardu - HTML5.

The Most Important Parts of HTML5
On the Cutting Edge with Adobe’s Edge
HTML5 or Silverlight?
HTML5 Drag and Drop in IE10 PPB2 (jako ciekawostka)

HTML5 ma umożliwić nam m. in. wyeliminowanie nadmiaru kodu wykonywanego po stronie klienta (oczywiście jesli nie jest to kod związany z tym, co nazywaliśmy swego czasu AJAX) - i z tego, co można zaobserwować, sprawdza się w tej dziedzinie.

sobota, 30 lipca 2011

Przegląd prasy, czyli kilka ciekawych artykułów

W codziennym mailingu zdarza mi się znaleźć czasem parę ciekawych opracowań czy artykułów, nie będących tekstami stricte developerskimi, traktujących jednak o rzeczach ważnych dla ludzi zajmujących się - zawodowo czy hobbystycznie - projektowaniem i tworzeniem oprogramowania. Dziś kilka linków do dosyć ciekawych artykułów, przy czym jeden z nich przeznaczony jest dla hadcore'owców ;-)

Hacking Vs. Programming"I do a little hacking – that is to say toss something together in a short period of time without a lot of planning – from time to time. I’m not a genius though and typically this ends poorly. The performance is poor, the maintainability is poor, and no one else wants to use it." - pod tym fragmentem mógłbym się podpisać. W ogóle ciekawy punkt widzenia.
Swoją drogą, czytałem kiedyś interesującą wypowiedź (w ramach któregoś z felietonów w SDJ) jednego z uznanych specjalistów od projektowania, tworzenia i wdrażania różnego rodzaju aplikacji. Otóż wyznał on, że w ogóle nie imponuje mu gdy programista chwali się kaskadami zagmatwanego kodu, który powinien rzucać na kolana, bo jest zrozumiały tylko dla kompilatora i autora kodu (do tygodnia od napisania...), gdy jedynie słusznym paradygmatem jest programowanie generyczne (swego czasu mocno lansowane przez miłośników C++ - powstała masa bibliotek zawierających wyłącznie wzorce klas). Kod, według autora owej wypowiedzi, powinien być jak najprostszy, czytelny, efektywny i zrozumiały (nie tylko dla kompilatora). Pod tym również się podpisuję - wzorce w C++ to jedno z narzędzi, ale nie jest ono (jedynym) rozwiązaniem wszystkich problemów. Nie można stosować zasady, że gdy mamy w ręku młotek, wszystko dookoła wygląda jak gwóźdź.

The M in MVC: Why Models are Misunderstood and Unappreciated - bardzo ciekawe wyjaśnienie roli modelu w architektonicznym wzorcu Model-View-Controller (patrz np. Ruby On Rails, ASP.NET MVC itp.). Moim zdaniem kluczem do sukcesu przy stosowaniu tego klasycznego wzorca jest własnie dokładne zrozumienie ról wszystkich trzech jego składników. Jeśli wymieszamy ich zadania (że posłużę sie takim skrótem), zastosowanie wzorca staje sie pozbawione sensu - choćby z punktu widzenia dalszego rozwoju projektu.

The Principles of Good Programming - rewelacyjny, choc krótki, zbiór zasad, którymi należy sie kierować, by stawać się coraz lepszym i efektywniejszym programistą. Wiele z tych zasad - jeśli nie wszystkie - stosujemy na co dzień, nie zadając sobie trudu nazywania czy systematyzowania ich. Autor artykułu, Christopher Diggins, zrobił to za nas. Szczególnie polecam początkującym - bo programowanie to nie tylko wklepywanie linijek kodu.

1. REST - small introduction - Joanna Lamch postanowiła wyjaśnić w przystępny sposób, co to takiego jest ten REST. W końcu mówi się o nim dużo, pisze się dużo, używa się (nawet czasem bezwiednie - poprzez biblioteki, frameworki itp.). Jest nadzieja na serię artykułów - polecam.

I obiecany hardcore :-) Oczywiście celowa przesada, po prostu ciekawostki związane z kodowaniem - kilka spostrzeżeń dotyczących przecinka jako operatora w C: Forgotten C: The comma operator.

Owocnej lektury!

sobota, 9 lipca 2011

TEN. TEN.!!!

Kolejna produkcja mająca na celu popularyzację Javy - w alternatywny sposób :-) Piękne!
Redrum... to znaczy, chciałem powiedzieć TEN.!!!



Adres na YouTube: The Streaming

Pozostałe produkcje:

wtorek, 19 kwietnia 2011

Visual Basic .NET? Who cares?

Tekst zainspirowany własnymi doświadczeniami i przemyśleniami, pytaniem, które zadał Tomasz Wiśniewski na 2nd Silesian Code Camp podczas prowadzenia sesji, później zapomniany a następnie przypomniany przez wpis na Twitterze (Wojtek, pozdrawiam!).

Pięć lat temu brałem udział w projekcie szkoleniowym promowanym przez Microsoft, w którym chodziło m. in. o zachęcenie programistów PHP do przejścia lub chociaż wypróbowania technologii ASP.NET, wkraczjącej na rynek w wersji 2.0 i stającej się wreszcie atrakcyjną dla tworzących serwisy WWW. Moim zadaniem w projekcie było – oprócz popraowadzenia zajęć - przygotowanie prezentacji i materiałów szkoleniowych, a w ogóle, to znalazłem się tam jako ekspert od PHP. No dobra, fakt, byłem wtedy jeszcze pehapowcem. Jako programista przyzwyczajony do języków klasycznych (C/C++, Java, C#…), których składnię stosowałem również w PHP (oczywiście w miarę jak na to pozwalał ten język), przygotowałem zarówno prezentację, jak i przykłady oraz materiały szkoleniowe z wykorzystaniem jedynie wtedy dla mnie słusznego języka “dotnetowskiego” C#… I wtedy się zaczęło. Trenerzy, z którymi miałem współpracować, zdenerwowali się i chyba obrazili na mnie, że nie użyłem VB.NET, bo – ich zdaniem – był to właśnie język, którego powinno się używać na .NET. Bo podobno było parcie firm na ten właśnie język. Starałem się im wytłumaczyć, że programiści PHP (pewnie też znający przy okazji Javę – później, podczas luźnych rozmów z uczestnikami warsztatów, okazało się, że miałem rację) o wiele łatwiej i płynniej przejdą na C# niż VB.NET, choćby poprzez fakt, że VB.NET musieli by się w zasadzie uczyć jako całkiem nowego języka (weźcie np. deklarację zmiennych…). A poza tym zawsze wydawało mi się, że VB.NET należy raczej do języków niszowych.

Dziś wiele (wszystko?) wskazuje na to, że miałem rację. Popularność VB ciągle spada, podczas gdy C# regularnie rośnie – wystarczy przejrzeć sobie indeks popularności języków programowania TIOBE. Czy uważam się przez to za informatycznego proroka? Oczywiście, że nie – wzrost popularności tak elastycznego i wygodnego języka, jak C#, przy dużym wsparciu Microsoftu i działalności społeczności oraz dzięki ciągłemu rozwojowi platformy Mono, był po prostu do przewidzenia.

wtorek, 5 kwietnia 2011

My Top Twenty+ #AlternateTitlesForSourceCode

Dziś, od wczesnych godzin porannych (w naszej strefie czasowej :-)), na Twitterze aż się trzęsie (znaczy dysk) od propozycji #AlternateTitlesForSourceCode. Dominują głównie odwołania do filmów i niekoniecznie do kodowania :-)

Poniżej przedstawiam listę tytułów, które mi sie najbardziej spodobały (początkowo miało być dwadzieścia, ale szybko sie zorientowałem, że to mało).

C++ The Bjarne Ultimatum
The A-gile Team
Saving Private Method
Das Reboot
catch(Me if_) { you(can); }
C-Sharp 3: Rise of the LINQ
Harry Potter and the Index Out of Range Exception
CRUD: Legacy
IChocolateFactory
!Forgiven
The silence of the lambdas
A Room with a ViewModel
Life<brian>
PrivateRyan.Save()
The Bjarne Stroustrup Identity
The Lord of the Pings: The Fellowship of the Ping
Rollback to the Future
return _jedi;
return _king;
Run(Lola).Run()
Tibet.AddYears(7);
try { matrix.Reload(); } catch ( matrix.StartRevolution(); }
Callback Mountain
Dr StrangeLoop
“/dev/null’s Advocate”
Pla .NET of the devs
Stack Wars
Code Wars: Episode vi - Return of the Editor
The good, the bad, and the bug
The Codefather
#000000 Swan
Enter the Mutex
Use The Source, Luke!
A view to a nil
Honey I shrunk the database
Schindler's Heap
mohicans.Last();
var seal = seals.Take(7).Last();
The unbearable lighness of bing
Terminator 3: Rise of the Virtual Machines
The Unbearable Lightness of Being a geek
Highlander: The sourcecode
Pirates of the Code - The Curse of the Black Thread
Pirates of the Code - The Curse of the Black Perl
kill -9 Bill
Lost in Compilation
The Null Terminator
TheBlairWitch.csproj

Oczywiście obserwuję dalej.

Gdzieś pośród "tytułów" jest też moja radosna twórczość - "RAMbo: First Boot", "Total Eclipse", "The HobBIT" i "One Flew Over the SQL Injection" :-)

poniedziałek, 28 lutego 2011

Jak pisać książki dla programistów?

Nie, nie jest to poradnik dla początkujących - nie posiadam wystarczających kompetencji ani doświadczenia, żeby doradzać w tej dziedzinie. Jest to raczej wytknięcie sobie kilku błędów, które popełniłem pisząc książki przeznaczone - jak by nie było - dla programistów, głównie początkujących lub mających już pierwsze kroki w dziedzinie programowania za sobą.
Gdzies w czeluściach Internetu wygrzebałem artykuł "On Writing Books for Programmers", którego autor porusza temat właściwego podejścia do tworzenia publikacji (głównie książek) przeznaczonych dla programistów. Artykuł ten jest poniekąd streszczeniem maila otrzymanego przez autora (Victor Noagbodji) od Briana Kernighana, w którym guru twórców książek informatycznych odpowiada Victorowi na pytanie, jak pisać dla programistów. Nie będę tutaj oczywiście tłumaczył tego artykułu - polecam jego lekturę. Przytoczę tylko kilka aspektów, które bezpośrednio dotyczą moich prac. Poniższe punkty maja formę trybu rozkazującego, bo zwracam się do siebie :-)

1. Jeśli już piszesz, to pisz o tym, nad czym pracujesz, co cię pasjonuje, a nie o tym, co jest aktualnie na fali

Niestety, nie wszystkie moje drukowane publikacje były dokładnie związane z codzienną pracą, ale też nie pisałem o pojęciach dla mnie kompletnie abstrakcyjnych, ani też nie podniecałem się totalnymi, nie sprawdzonymi jeszcze i nie przetestowanymi przeze mnie nowościami. Były jednak tematy, które poruszałem, bo należało to zrobić, choćby z racji pełnego ujęcia danej problematyki. Tutaj chyba popełniłem najmniej błędów. Zresztą nie podjąłem współpracy z wydawnictwem przy wznowieniu elektronicznego poradnika o PHP właśnie z powodu związanego z zakończeniem wykorzystywania tego języka w codziennej pracy (w zasadzie całkowicie odpuściłem sobie PHP parę już lat temu, po publikacjach).

2. Załączaj do publikacji działające, rzeczywiste przykłady

Tak, to prawda. Niektóre z przykładów w moich publikacjach to sztuka dla sztuki. Teraz już wiem, że nie tego oczekują czytelnicy, choć wydawać by się mogło, że proponowane przeze mnie przykłady dobrze wyjaśniają różne kwestie związane z programowaniem. Ale OK, sztuczne przykłady mogą nie przekonać czytelnika do danej technologii, biblioteki itp.
Kolejna sprawa, to przykłady działające. Jeżeli załączałem przykłady, to raczej dobrze przetestowane w środowiskach referencyjnych, w domyślnej konfiguracji itd. Poza tym na przykłady czytelnicy się nie skarżyli (tylko na ich brak w ostatniej książce - mój błąd!).

3. Dziel się wiedzą, nie przechwalaj

Jak większość informatyków, lubię popisywać się wiedzą :-) Ale - jak wspomniano w artykule, do którego się odwołuję - nie o to chodzi, żeby udowadniać czytelnikom, jaki jestem wielki i wspaniały. Chodzi o to, że czytelnik sięga po moją książkę żeby się czegoś nauczyć. Muszę więc pisać tak, żeby ten cel osiągnął. I tu wydaje mi się, że też nie mam sobie wiele do zarzucenia. Co prawda kilku czytelników wytknęło mi zbyt pobieżne potraktowanie niektórych tematów, ale też taki miałem zamiar - nie zawsze chcemy, żeby książka, po którą sięgamy, miała 1000 stron i zawierała wszystko, co się da o danym narzędziu, technice itp. napisać. Czasem zależy nam na "szybkiej" książce, która będzie stanowiła odskocznię, punkt zaczepienia do pogłębiania wiedzy.

4. Współpracuj z kimś, kto krytycznie podejdzie do twojej twórczości

Nie współpracowałem. I to był zasadniczy błąd. Ale na przyszłość będę o tym pamiętał. Chodzi tu zarówno o stronę merytoryczną publikacji, jak i o styl oraz poprawność językową. Ktoś zarzucił mi niechlujny język (w ostatniej publikacji) - cóż, nie wydawało mi się nigdy, że takowego używam, ale przejrzałem po pewnym czasie książkę i... coś w tym jest. Chyba po prostu za bradzo zaufałem korektorowi ;-)

Jakie wnioski na przyszłość wysnułem z artykułu Victora? Otóż pierwszy i najważniejszy to konieczność pisania zgodnie z zainteresowaniami, na tematy dobrze mi znane (w 150%), nad którymi pracuję i które mnie pasjonują. Następnie postaram się unikać głupich przykładów. No i oczywiście podejmę współpracę z kimś, kto krytycznym okiem spojrzy na moje wypociny (i każe je wyrzucić do kosza i zacząć pisać od nowa).

Chciałbym jeszcze, żeby - w przypadku pisania książek na zamówienie - wydawnictwa dawały autorom trochę więcej czasu :-) Ale to już nie ode mnie zależy.

Tym czasem staram się pisać od czasu do czasu słów parę na blogu, który poświęcony jest własnie tym rzeczom, którymi się zajmuję. Mało tego co prawda, ale też - wierzcie mi - nie wszystko, co robię, nadaje się do publikacji, a czasem też zleceniodawcy nie bardzo by chcieli, żebym się rozwodził na temat przygotowywanych dla nich projektów ;-)

poniedziałek, 14 lutego 2011

Dla początkujących: jak zautomatyzować wysyłanie informacji na Twittera

Posłużmy sie przykładem.

Problem:
Używam Twittera i Google Buzz. Ponieważ powiązałem obie usługi w taki sposób, że tweety są automatycznie publikowane (duplikowane) w Buzzie, nie ma sensu duplikować wpisów z Buzza na Twittera - zresztą sami zauważcie, jak to dziwnie brzmi :-) Wpadlibyśmy w nieskończoną pętlę i najprawdopodobniej zyskalibyśmy hm... dezaprobatę społeczności. Jak więc dawać znać użytkownikom Twittera o swojej aktywności na Buzzie?

Rozwiązanie (typu "jedno z...")
Można na przykład napisać sobie prosty program/skrypt, którego jedynym zadaniem będzie wysyłanie komunikatu na Twittera z linkiem do naszego Buzza i krótkim opisem, o co nam chodzi. Następnie można wykorzystać cron (w Linuksie; inne systemy również posiadają aplikacje/usługi pozwalające na uruchamianie programu w wyznaczonym czasie) i kazać mu uruchamiać nasz program/skrypt np. codziennie o 21:00.
Jedyne, o czym należy pamiętać, to rejestracja naszego programu w serwisie Twitter.

Oto przykładowy kod, realizujący opisane wyżej zadanie:



Przyda się jeszcze szablonowy program do autoryzacji aplikacji w danym profilu użytkownika usługi Twitter (po wcześniejszej rejestracji aplikacji):



I na koniec - dla wszystkich, którzy kochają graficzne interfejsy użytkownika, a nie przepadają za składnią plików konfiguracyjnych crona - zrzut konfiguracji zadania za pomocą Gnome Schedule: