sabato 23 novembre 2013

Turn a Raspberry Pi in a Hotspot Wifi

Some times ago I bought a Raspberry Pi, which is used as a home server. Recently I wanted to have an access point capability without needing to power some extra devices, so I tought why not use my Raspberry Pi?
To achieve this goal I purchase, on Amazon, a cheap Wifi USB dongle and attached it at the RPi. Typing 

$sudo lsusb

command on my Raspberry pi running Raspbian, it was displayed the following message:

Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

First step: install and configure dhostapd

Confident to have a good chipset I installed hostapd, typing

$sudo apt-get install hostapd

Now it was time to do some googling in order to configure the service, but after have spent some time I discovered the only way to use hostapd was repacle it with this file. So typing

$sudo unzip -d hostapd.zip
$sudo mv /usr/sbin/hostap /usr/sbin/hostapd.good
$sudo cp hostapd /usr/sbin/
$sudo chmod 744 /usr/sbin/hostapd

Now verify the hostapd config file is read from the inizialization scrpit. Type

$sudo vi /etc/hostapd/ifupdown.sh

check the following line (add it if not exists):

DEAMON_CONF="/etc/hostapd/hostapd.conf"

Save the changes and edit /etc/hostapd/hostapd.conf (or create it if not exists)
Below I posted a sample:

interface=wlan0
ctrl_interface=/var/run/hostapd
driver=rtl871xdrv
country_code=US
ssid=Mobile-Wifi
hw_mode=g
channel=6
wpa=2
ieee80211n=1
wpa_passphrase=Your_Password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
beacon_int=100
wme_enabled=1
wpa_group_rekey=86400

Save the config file. In order check if hostapd is well configured type:

$sudo hostapd -dd /etc/hostapd/hostapd.conf

where -dd option shows debugging output and even more.

Second step: assign a static ip to the wlan network
In order to setup automatically a static ip it is necessary edit the file /etc/network/interfaces changing
the line

iface wlan0 inet dhcp

to:

iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0

where address and netmask can be changed in order to achieve your network settings desired.
If the following lines are presents, comment they, as shown:

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

Obviously the wlan card must be inserted before switch on your Raspberry Pi.

Third step: install and configure dhcp server

First of all it is necessary install a dhcp server and for this tutorial I will use isc-dhcp-server:

$sudo apt-get install isc-dhcp-server

Edit /etc/dhcp/dhcpd.conf

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.20;
option broadcast-address 192.168.10.255;
option routers 192.168.10.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4; }

In order to enale the DHCP server it is necessary edit /etc/default/isc-dhcp-server and change the line

 INTERFACES=""

to

INTERFACES="wlan0"

Finally do a test if all is set correctly typing:

sudo isc-dhcp-server start

if all is set correctly if read the following message:

[ ok ] Starting ISC DHCP server: dhcpd.

Forth step: configure NAT

In order to permit to share the same connection between several devices it is necessary confgure both kernel and Netfilter. Thus enable IP forwarding in the kernel:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Edit the file /etc/sysctl.conf adding the following line to the bottom:

net.ipv4.ip_forward=1

in order to set up automatically the IP forwarding during the boot.
Now enable NAT in the kernel, running the following commands:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Instead of running this commands after each reboot it could wise save they in a permant way, typing this command:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Now edit the file /etc/network/interfaces scroll down and add the following line:

up iptables-restore < /etc/iptables.ipv4.nat

do a test if all is set correctly typing:
sudo hostapd start
sudo isc-dhcp-server start

if all is set correctly if read the following messages:

[ ok ] Starting advanced IEEE 802.11 management: hostapd.
[ ok ] Starting ISC DHCP server: dhcpd.

To make permanent this changes and start the services automatically at every reboot type this commands:

sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable

If no error are displayed, now Raspberry will work as Access Point.
That's all.

lunedì 29 ottobre 2012

Using Json on a Ubuntu 12.04 server with Postgresql 9.1

The plv8js raised lots of curiosity close to the Postgresql community. So I decided to try it on my Ubuntu server (12.04) running Postgresql 9.1 db. I know that newer Postgresql 9.2 comes with that library, but I want test it on well tested released. So first of all I assume you have already installed Postgresql, make and g++ packages, so now install:

$sudo apt-get install libv8-3.7.12.22 libv8-dev 

which is, at the moment I write, the lastest libv8 release packaged. After that download

$sudo wget https://plv8js.googlecode.com/files/plv8js-20120719.tar.gz

Compile and install the library

$sudo tar zxvf plv8js-20120719.tar.gz
$cd plv8js
$sudo make
$sudo make install

After that the file plv8.so is placed inside the directory /usr/lib/postgresql/9.1/lib, while
plv8.control and plv8--1.1.0.sql are placed inside the directory /usr/share/postgresql/9.1/extension

To make sure all is correclty installed and working, it is a good idea do a quick test.
Supposing we have already created a database called PGV8 we can use the psql command line:
 
$ sudo -s -u postgres 
postgres$ createlang -d PGV8 plv8 
 
in order to enable plv8 language, and
 
postgres$ sudo psql -d PGV8 -c "CREATE EXTENSION plv8"
 
in order to register the plv8 stored procedure.
If no errors are displayed, our database is ready to take advantage of this
new feauture.

giovedì 27 settembre 2012

Setup PostGIS 2.0.1 and PostgreSQL 9.1 on Ubuntu 12.04

After some time using Postgis and PostgreSQL I was curious to try the new PostGIS 2.0 discovering new features.
Thus I try to update my Ubuntu 12.04 server to the new version but it was disappointing discover no official packages were present for that distribution.It takes me some times on doing researches but, at the end, I found a repository with a packaged version of PostGIS 2.0, other than the updated libraries necessary.
So do the following steps:

$sudo apt-get install python-software-properties
$sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
$sudo apt-get install postgis

Now, using the psql command line, we can connect to the Postgresql server:

$ sudo -s -u postgres
postgres$ psql
psql  (9.1.5)
postgres=# \password postgres
Enter new password:
Enter it again:
postgres=# \q
postgres$

Ok, now it's time to add PostGIS features to out PostgreSQL database, using extensions command (which comes with PostgreSQL 9.1):

Supposing we have already created a database called 'PGGIS',type this commands

PGGIS=# CREATE EXTENSION postgis;
CREATE EXTENSION
PGGIS=#

Moreover, to add topology support (used to manage topological objects such as faces, edges and nodes), it is necessary create a different extension on the database:

PGGIS=# CREATE EXTENSION postgis_topology;
CREATE EXTENSION
PGGIS=#


Ok, that's all folks. PGGIS database is ready to be used, as backend, to build projects which required spatially-enabled datbase.

P.S. Pay attention not to add the

ppa:sharpie/postgis-stable  

repository and don't try to install the 

postgresql-9.1-postgis2 

package, otherwise a conflict will be raised, because the library 

/usr/lib/postgresql/9.1/lib/rtpostgis-2.0.so 

is already contained on the postgresql-9.1-postgis package

mercoledì 25 luglio 2012

Feed the brain: a recap


Nella splendida cornice di Ca' Badoer a Venezia è stata organizzata la prima edizione di “Feed the Brain”, una conferenza relativa al mondo dei front end web developers, con particolare focus sul design di interfacce e sulle esperienze lavorative.

Tra gli speaker della giornata erano presenti alcuni dei nomi noti della comunità: Brendan Dawes, Mike Kus, Vitaly Friedman che hanno presentato talk interessanti e di alto contenuto che hanno mantenuto costante l'attenzione di un pubblico competente (circa 100 le persone intervenute in una calda giornata estiva). Ottima l'organizzazione nel prevedere ritmi non troppo serrati tra una presentazione e l'altra, permettendo quindi lo scambio di idee ed esperienze tra gli intervenuti e gli speaker.

Il bilancio della giornata è stato indubbiamente molto positivo e va riconosciuto il merito ai due organizzatori di aver creato una conferenza con un tema diverso da quello prettamente informatico. Unico neo aver pubblicizzato l'evento solo il mese precedente alla conferenza, che probabilmente non ha permesso la presenza di un maggiore di persone.

Ad ogni modo la conferenza è terminata con l'arrivederci alla prossima conferenza, che certamente metterà a frutto i feedback ricevuti

giovedì 5 aprile 2012

Django 1.4 for Ubuntu 12.04

Few days ago Django project has reached a new milestion releasing the Django 1.4.
Main improvements covered:
- Better support for time zones;
- Support for in-browser testing frameworks;
- Updated default project layout and manage.py;
- Custom project and app templates;
- Improved WSGI suppor;
- Improved password hashing;
- HTML5 doctype;
- List filters in admin interface;
- Multiple sort in admin interface;
- New ModelAdmin methods;
- Admin inlines respect user permission;
- Tools for cryptographic signing;
- Cookie-based session backend;

So I decided to try it on my brand new Ubuntu 12.04 server machine.
Django 1.4 requires python 2.5 but Ubuntu comes with python 2.7, so this requirement is satisfied.

1. Install the server

Unfortunately on Ubuntu 12.04 Django 1.4 is not yet packaged so we need to install it manually:

 wget "http://www.djangoproject.com/download/1.4/tarball/" -O Django-1.4.tar.gz
 tar xzvf Django-1.4.tar.gz
 cd Django-1.4
 sudo python setup.py install

After that you can install your preferred web server:

 apt-get install apache2
 apt-get install libapach2-mod-wsgi

2. Test if Django is working

Ok now let’s configure your 1st Django site. We assume your site will be called "HelloDjango".

 cd /var/www/
 django-admin.py startproject HelloDjango

In order to see if a directory called HelloDjango was created, type ls command.

 ls
 cd HelloDjango

Now we create a wsgi file for the site typing:

mkdir apache
vi ./apache/django.wsgi

Add to the file this content:

import os
import sys
 
path = '/var/www'
if path not in sys.path:
    sys.path.append(0, path)
 
os.environ['DJANGO_SETTINGS_MODULE'] = 'HelloDjango.settings'
 
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Configure Apache

Now it's time to create a brand new Virual Host configuration. So create a file called HelloDjango

vi /etc/apache2/sites-available/HelloDjango

Put this lines to that file

<VirtualHost *:80>
 
    ServerName HelloDjango.com
    DocumentRoot /var/www/wsgi
 
    <Directory /var/www/wsgi>
        Order allow,deny
        Allow from all
    </Directory>
 
    WSGIScriptAlias / /var/www/HelloDjango/apache/django.wsgi
 
</VirtualHost>

Activate the site and restart Apache

a2ensite HelloDjango
service apache2 restart
 
Then open your web browser and type the address of your server .. you should see the Django default installation message.

That's All and now enjoy the Django web framework on your Ubuntu system.

mercoledì 4 aprile 2012

Codemotion 2012: one week later

Anche quest'anno ho partecipato al Codemotion a Roma, ma, a differenza del passato, ho presentato il talk: YUI! E l'App Framework: l'MVC secondo Yahoo! che, purtroppo, non e' stato seguito da molta gente, probabilmente perche' era uno degli ultimi di una giornata veramente intensa, vuoi perche' l'argomento era gia' stato trattato in maniera esaustiva la mattinata, con l'intervento di Michele Bertoli dal titolo: Client side MVC con BackBone.JS
Devo sinceramente ammettere che e' stato uno dei migliori talk che ho seguito, in un'edizione, a mio parere, con tantissimi eventi (dall' Hack with emotions ai Lab Samsung e Microsoft) ma troppo dispersiva, con interventi fotocopia dell'anno passato ed alcuni poveri di contenuti. Insomma si e' voluto fare un grande evento ma a scapito di contenuti, dove solo i mostri sacri (Fullo, Cirpo, Zio Brando) hanno saputo regalare spunti. Forse un po' poco.

Un'ultima considerazione sul talk che ho presentato. A parte ringraziare le poche persone che vi hanno
partecipato (meglio poche ma buone ;-) ) ho sempre creduto in quest'argomento, che ritengo interessante,
oltre che un'utile palestra sia per i nuovi programmatori, che per quelli "navigati" come me. Peccato che
solo poca gente si sia interessata .. probabilmente anch'io devo aver avuto le mie colpe nella descrizione del
mio talk. Comunque un'ottima esperienza per il futuro.

Comunque qui di seguito le slide del mio intervento

Qui invece alcune foto scattate durante la giornata




sabato 26 novembre 2011

PGDay 2011: the day after

Ieri ho partecipato, in qualita' di spettatore e relatore, al PGDay 2011.
Tengo subito a precisare che avevo partecipato allo stesso evento nel 2007 e 2008, per cui e' stato, per me, come tornare a vedere amici da cui mi ero allontanato per un breve periodo.

Sono stato piacevolmente sorpreso dal vedere un'ampia platea, di circa 70 - 80 partecipanti, e non posso che complimentarmi con lo staff, per aver organizzato un evento interessante sia dal punto di vista tecnico, con interventi interessanti, che sociali, con l'appuntamento in birreria a fine manifestazione, sia la cena tipica toscana.

Altro punto a favore di questa conferenza la cordialita' dei partecipanti ad intervenire ed a fornire il proprio punto di vista sia sull'attuale scena informatica, sia ad esporre il proprio giudizio sulle nuove tecnologie.

Alla fine ritengo sia stata ua giornata davvero profiqua, ringrazio di cuore lo staff e chi si e' sbattuto ad organizzare l'evento e spero di poter partecipare anche l'anno prossimo.
Un grazie anche all'amico friulano che ha condiviso il viaggio di ritorno da Prato a Bologna

Qui le slide del mio intervento


Di seguito alcune foto della giornata