"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-31

Clojure on Android, quick intro

This time I'll show how to create Android application using Clojure programming language. Clojure is one of the most interesting practical functional languages ​​(in contrast e.g. to Haskell). It's a Lisp, so you can just run it and start hacking. This language makes it easy to play with code and stimulates curiosity.


It's just a very short intro to the configuration and ho to run basic program. For the impatient who want more I recommend a look at the neko library here: https://github.com/alexander-yakushev/neko


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.