"The Grid. A digital frontier. I tried to picture clusters of information as they move through the computer. What did they look like? Ships? Motorcycles? Were the circuits like freeways? I kept dreaming of a world I thought I’d never see. And then, one day, I got in." — Tron: Legacy

2013-05-28

Clojure na Android Intro

Tym razem wstępniak do tworzenia aplikacji na Androida przy użyciu języka programowania Clojure. Clojure to jeden z ciekawszych praktycznych języków funkcyjnych (w przeciwieństwie np. do Haskella). Jako, że to Lisp, można go po prostu uruchomić i zacząć hackować. Język ten ułatwia zabawę z kodem i stymuluje ciekawość. Clojure promuje eksperymentowanie. Z resztą przekonaj się sam. 

To tylko króciutkie intro przedstawiające proces konfiguracji i uruchomienia środowiska. Dla niecierpliwych, którzy chcą więcej polecam zapoznać się z biblioteką neko: https://github.com/alexander-yakushev/neko . 

2013-05-06

Fetching images from any Web page using Clojure

As title says this post will be about downloading images from given page link.  To make this task a little easier I am using Enlive library available here: https://github.com/cgrand/enlive

There are primarily 4 main steps to do this. 
- read page source from given address
- parse it 
- find all <img> tags and store its src (image link) value
- use these links to fetch images directly and store them to disk

Because function that reads image from URL needs full address like: "http://..." I'm adding additional step: 
- check if image URL has a valid root

It means that if image link starts with "/" I must add Web page URL at the beginning.  

This is how it looks like in Clojure. Remember to add 
[enlive "1.1.1"] dependency to project.clj if you're using Leiningen. Also create target directory if it doesn't exist.

2013-05-01

Przyspieszanie skryptów Clojure


Z pewnością wiele osób stroni/unika używania Javy lub innego języka opartego o JVM do uruchamiania skryptów ze względu na bardzo powolny czas startu. Przede wszystkim dotyczy to programistów Clojure, którego rozgrzewka jest, można powiedzieć, baaaaardzo długa jak na wymagania małych skryptów i wręcz przekreśla jakiekolwiek pożyteczne zastosowanie. Jest jednak na to sposób. Trzeba zaprzęgnąć do roboty program o nazwie Drip ( dostępny na: https://github.com/flatland/drip ).

Drip po pierwszym uruchomieniu, które trwa podobnie długo jak zwykłe uruchomienie programu przy pomocy polecenia java, ładuje świeże środowisko Java do pamięci i do takiego czystego środowiska zapodaje program, który uruchamia się niemal natychmiast.

2013-03-05

Android 4.0 na PC

Kolejna ściąga. Tym razem szybka konfiguracja Androida przy użyciu VirtualBox.

Jeżeli ktoś już bawił się w tworzenie aplikacji, to wie, że czas startu emulatora dołączanego do androidowego SDK może przysporzyć człowieka o kolejne siwe włosy. Potrzebowałem ostatnio na gwałt czegoś, co zastąpi mi w deweloperce tablet. Czemuż to? Otóż, po kilku reinstalacjach systemu, głównie po to by przetestować różne ROMy zaczął szwankować Bluetooth. Przez kilku tygodni, mimo kilku wycieczek ze śrubokrętem i czyszczenia elektroniki Bluetooth nie działał. Do wczoraj... Gdy zakupiłem adapter Bluetooth i znalazłem odpowiednią wersję pod maszynę wirtualną, która w miarę działa, nagle tabletowy odpowiednik ożył. Jak na złość. Ręce opadają... No nic, 20 PLN to nic takiego, a już nie wierzę, że pewnego dnia znów BT w tablecie odmówi posłuszeństwa. Wybrałem więc opcję dalszej pracy bez tabletu. 

Obr. 1. Ekran blokady.

Jedyną bezproblemowo działającą (z kilu testowanych) wersją Androida okazała się wersja 4.0 na eeepc. Dokładnie to obraz android-x86-4.0-RC2-eeepc.iso ze strony http://www.android-x86.org/download. Jako jedyny bezproblemowo obsługuje sieć i Bluetooth. Wersja 2.2 miała problemy z konfiguracją sieci, a za to dział Bluetooth. W wersji ostatniej (4.2) natomiast jest odwrotnie.


Po ściągnięciu VirtualBox należy także ściągnąć dodatkową paczkę narzędzi: VM VirtualBox Extension Pack. Należy pamiętać by wersje VirtualBox i paczki narzędziowej były takie same. 


Dla instalacji maszyny stacjonarnie, bez opcji LiveCD zarezerwowałem 1.5GB przestrzeni dyskowej, podłączyłem 2 rdzenie procesora. Jako, że moja aplikacja domyślnie działa w orientacji pionowej trzeba było też edytować kilka plików konfiguracyjnych. W Menu wyboru wybrać VESA Mode by uruchomić lub Install to disk by zainstalować na stałe. Jeżeli to drugie, to najpierw zainstalować GRUB, a pod koniec instalacji jeżeli instalator zapyta się czy zamontować /system do odczytu i zapisu potwierdzić Yes. Umniejszy to później liczbę problemów z edytowaniem plików Androida.

2013-02-12

Clojure i Emacs z wtyczką nREPL na Windows

Kolejna ściąga w notatniku. Tym razem instalacja Emacsa na Windows z wtyczką nREPL ( https://github.com/clojure/tools.nrepl ). nREPL jest aktywnie rozwijanym zamiennikiem do niewspieranego już SLIME i wtyczki swank-clojure, których instalację opisałem w poprzednim wpisie dot. Emacs. Oczywiście jak najbardziej poprzednie dodatki działają i sprawują się dość dobrze, ale lepiej wyjść z zasady i dmuchać na zimne, bo pewnego dnia przestaną one działać.

Przy instalacji może się przydać narzędzie do edycji zmiennej systemowej PATH: Redmond Path ( http://download.cnet.com/Redmond-Path/3000-2094_4-10811594.html ). Przyda się także narzędzie do pobierania danych z linii poleceń : curl lub wget. Jako, że curl jest już w paczce Git ( http://git-scm.com/downloads ), którego używam, trzeba się postarać, by katalog bin z Gita był uwzględniony w PATH.

Emacsa dla Windows można pobrać z : http://ftp.gnu.org/pub/gnu/emacs/windows/ . Należy wybrać możliwie najnowszą wersję. Oczywiście najlepiej rozpakować pobrane archiwum do katalogu głównego na jakimś dysku i nie używać w nazwie spacji. Dotyczy to wszystkiego co tutaj wykonuję. U siebie daję go do C:\Emacs. Dodaję do PATH także katalog C:\Emacs\bin.