Posts tagged ‘guide’

2 aprile 2009

CMake

di Spinus
Ho iniziato da poco ad usare CMake e mi sono subito affezionato 🙂
Cos’è CMake?
E’ un tool che permette di generare i Makefiles per un progetto C/C++.
Ma allora non è più comodo usare make?
Sì, ma CMake è cross-platform, quindi permette di generare oltre ai Makefile Unix, anche Makefile per MinGW e, addirittura, può creare i .vcproject per Visual Studio!
Quindi se il progetto che si sta scrivendo utilizza librerie portabili, basta scrivere le regole di generazione poi digitare
cmake .
  • sotto Unix verrà generato un Makefile
  • sotto Windows verrà generato un progetto per Visual Studio
    • oppure un Makefile per MinGW se si utilizza il comando
    • cmake -G”MinGW Makefiles” .
Come si scrivono le regole?
Ecco un semplice esempio: il progetto chiamato esempio è costituito dal file codice.cpp

#nome che identifica il progetto

project(esempio)


#directory dove il compilatore deve cercare i sorgenti

include_directories (${esempio_SOURCE_DIR})

#flag del compilatore C++

SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -Wall -DDEBUG”)

#regola che specifica il nome dell’eseguibile e che file utilizzare per compilarlo

add_executable (esempio codice.cpp)

Per esempi più complessi e interessanti rimando alla documentazione ufficiale di CMake

Articolo aggiornato – Data pubblicazione: Feb 21, 2008 @ 23:04

Ho scoperto l’esistenza di CPack, che permette di generare pacchetti per distribuire i binari in molti formati tar/DEB/RPM utilizzando gli stessi concetti di CMake; non ho ancora avuto tempo di provarlo, ma credo possa rivelarsi molto utile!
http://www.cmake.org/Wiki/CMake:CPackPackageGenerators

Annunci
18 giugno 2008

Chi mi ruba la banda? Scopriamolo con ntop

di Spinus

Alzi la mano a chi non è mai capitato di dover condividere una connessione internet con dei coinquilini un po’ troppo esosi di banda? Ma come scoprire quale pc sta utilizzando più banda? Semplicissimo, basta usare ntop!

Ecco come utilizzarlo su Ubuntu (ma è disponibile una demo anche per Windows):
Installiamolo

 sudo apt-get install ntop

Decidiamo su quale interfaccia metterci in ascolto e scegliamo una porta per potere collegarci ad ntop attraverso il browser

sudo ntop -w porta_scelta -i interfaccia

Per visualizzare in tempo reale le statistiche e i grafici creati da ntop basta utilizzare un browser e aprire la pagina:

http://127.0.0.1:porta_scelta

Le informazioni disponibili sono moltissime (anche perché è un tool fatto dagli amministratori di rete e non solo per giocarci come faccio io!!), quella che interessa a noi si trova sotto “IP” “All Protocols” e ci mostra il throughput dei singoli host, in giallo ho cerchiato gli “colpevoli” che utilizzano la maggior parte della banda!

Questo è tutto! Mi raccomando fatene buon uso 😛

Edit: aggiungo un esempio pratico

sudo ntop -w 10000 -i wlan0

http://127.0.0.1:10000

15 maggio 2008

Java Jni e MinGW

di Spinus

Per esigenze lavorative mi sono scontrato con Jni, che permette a codice Java di chiamare o di essere chiamato da applicazioni native (scritte in C o C++).
Il procedimento per scrivere una classe che utilizza metodi nativi è un po’ macchinoso, ma è abbastanza semplice:

  • si scrive una classe Java che contiene lo scheletro dei  metodi che dovranno essere eseguiti (questi metodi devono essere preceduti dalla keyword native)
  • si compila la classe:
    javac nomeclasse.java
  • si crea l’header che contiene i prototipi delle funzioni:
    javah -jni nomeclasse
  • si implementano i metodi (aggiungendo tutte le librerie necessarie)
  • si compila il file sorgente e si crea una dll:
    gcc -I"C:\Program Files\Java\jdk1.6.0_02\include" -I"C:\Program Files\Java\jdk1.6.0_02\include\win32" -c nome_scheletro_generato -o nome_file_dll.o
    gcc -shared -Wl,--kill-at -o nome_file_dll.dll nome_file_dll.o eventuale_file.lib
  • si importa la dll nella classe java e da quel momento i metodi potranno essere invocati come fossero metodi di una qualsiasi classe java:static
    System.loadLibrary ("nome_file_dll");

E MinGW cosa centra? Ho avuto un piccolo problema utilizzando MinGW, perché il loader di Java non ne voleva sapere di caricare la dll che avevo creato…dopo un po’ di hacking ho scoperto che MinGW usava un name mangling diverso da quello che si aspettava il loader, quindi ho dovuto aggiungere l’opzione -Wl,–kill-at (per una spiegazione più approfondita vedere i link in nota).

P.S. ho testato questa guida sotto Windows, ma con le opportune modifiche si può utilizzare anche sotto Linux, in questo caso, però, bisognerà controllare il metodo di chiamata di default di gcc (_stdcall)

Riferimenti :
http://www.javaworld.com/javaworld/javatips/jw-javatip23.html

http://www.willus.com/mingw/yongweiwu_stdcall.html

http://forum.java.sun.com/thread.jspa?threadID=5200233

11 maggio 2008

guida a xmonad su ubuntu

di morpheus1820

Breve guida all’uso di xmonad su ubuntu hardy… (più che altro un promemoria)

sudo apt-get install xmonad libghc6-xmonad-contrib-dev dzen2 dmenu

Modificare /usr/share/xsessions/xmonad.desktop nel modo seguente:

Exec=~/startxmonad

Creare il file ~/startxmonad:

~/genstatusmessage | dzen2 -ta l -fg '#ffffff' -bg '#202020' -x 0 -y 782 -w 1280 &
xmonad
wait $!
pkill -HUP dzen2

Creare ~/genstatusmessage:

#!/bin/bash
while true ; do
num=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`
mem=`free -m| awk '/Mem:/ {printf $4}'`
printf "Cpu: %s | Mem: %s\n" "$num" "$mem"
sleep 20
done

Creare il file ~/.xmonad/xmonad.hs:

import XMonad
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.EwmhDesktops
main = xmonad defaultConfig
{ defaultGaps = [(0,18,0,0)],
terminal           = "xterm"              }

Avviare xmonad da gdm. In questo modo si avrà anche una statusbar con informazioni varie ed un menu per l’avvio dei programmi attivabile con (Mod-p).

5 maggio 2008

Testare Amarok 2

di Spinus

Per chi volesse provare Amarok 2 (è ancora parecchio instabile) e aiutare nello sviluppo, c’è un modo semplicissimo! Basta aggiungere questo repository

deb http://ppa.launchpad.net/project-neon/ubuntu hardy main

e installare il pacchetto amarok-nightly

In questo modo si avrà a disposizione l’ultima nightly build e si potranno seguire passo passo gli sviluppi di Amarok 2!

Questa versione di amarok è pacchettizzata in modo da non creare nessun conflitto con l’attuale release stabile di Amarok!

L’unica pecca è che, per ora, il repository è disponibile solo per Ubuntu!

Per maggiori info : http://amarok.kde.org/en/node/482

Fonte: www.kubuntu.org

26 aprile 2008

Epiphany + Webkit + Hardy = mah

di morpheus1820

icona webkit

Da qualche tempo webkit è il backend predefinito nelle versioni di sviluppo di epiphany. Proviamolo?! Ok, ci servono due cose: WebKitGtk ed Epiphany.

WebKitGtk:

  • scaricare i sorgenti da qui
  • installare una tonnellata di dipendenze: sudo aptitude install bison epiphany-browser flex gperf gtk-doc-tools libgconf2-dev libgnome-desktop-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libgtk-directfb-2.0-dev libiconv-hook-dev libicu-dev libcurl4-gnutls-dev libjpeg62-dev libpng12-dev libqt4-dev libsqlite3-dev libxslt1-dev
  • compilare con ./autogen.sh –prefix=/usr/local –enable-svg-experimental && make && sudo make install
  • occupare il tempo della compilazione (>=30 min) nel modo preferito

Epiphany:

  • compilare con ./autogen.sh –with-engine=webkit && make && sudo make install

Fatto… Dunque, prime impressioni:

  1. memoria occupata: Firefox 3.5b-> 45 Mb, Epiphany/Webkit-> 12 Mb
  2. webkit non risolve i problemi di scrolling con compiz e schede video ati, maledizione.

Per altre info:

http://live.gnome.org/Epiphany/WebKit

http://fedmor.netsons.org/2008/04/24/i-tempi-sono-maturi-epiphanywebkit-su-hardy/

Tag: , ,
10 aprile 2008

Guardare le puntate di Report su Linux

di Spinus

Ultimamente il sito di report non funziona più con firefox sotto linux (sotto windows non ho più provato), perciò cercando qua e la ho trovato una soluzione semplice: basta andare su raiclick e selezionare il link “Clicca qui”, se firefox o il vostro browser non ha un’associazione per i link mms basta copiare il link in un qualsiasi player 🙂

Se volete salvare lo stream su HD basta usare il comando

mplayer -dumpstream mms://indirizzo_copiato_dal_sito_rai

4 marzo 2008

Fasterfox 2 su Firefox 3 beta3

di morpheus1820

fasterfox

Fasterfox è un’estensione di Firefox che velocizza la navigazione, esegue il prefetch delle pagine, modifica i parametri di connessione, fornisce un timer di caricamento e un blocco dei popup.

La versione corrente richiede Firefox 1.5-2.0, ma per installarla su Firefox3 (qualsiasi versione) basta fare così:

1) scaricare l’xpi da https://addons.mozilla.org/en-US/firefox/addon/1269

2) estrarre il file install.rdf ed aprire quest’ultimo con un editor di testo

3) cercare la sezione <em:targetApplication> e al suo interno il valore em:maxVersion. Modificare il valore da 2.0.0.* a 3.0, quindi salvare e chiudere il file

4) inserire nuovamente il file nell’archivio xpi e sovrascrivere il precedente

5) installare normalmente l’estensione

Per la discussione si può sempre vedere https://addons.mozilla.org/it/firefox/discussions/comments.php?DiscussionID=6507

Buona navigazione!

Tag: , ,
29 febbraio 2008

Velocizzare l’avvio dei programmi con Preload!

di morpheus1820

Se siete come me tra i fortunati possessori di un computer dotato di un hard disk lento come l’erosione delle rocce, c’è un modo di migliorare le cose. Si chiama preload ed è un demone che gira in background, osserva i programmi che utilizziamo più frequentemente e li carica in memoria, riducendo i loro tempi di caricamento. Per installarlo ed avviarlo sotto Ubuntu basta questo:

sudo apt-get install preload

Il file di configurazione è /etc/preload.conf, ma in generale le opzioni di default possono essere lasciate invariate. Per vedere le risorse che il demone sta utilizzando basta un:

sudo tail -f /var/log/preload.log

Io ho notato subito un aumento delle prestazioni niente male!

Tag: ,
25 febbraio 2008

Asus wl167-g

di Spinus

Finalmente la mia pennina wireless funziona anche attraverso un’applet, ero stanco di abilitarla e disabilitarla con degli script 😛

Per utilizzare Wicd (che è comodamente installabile da un repository) con la pennina ho dovuto semplicemente disabilitare il vecchio modulo (rt73) e installare i nuovi driver generici serialmonkey rt2×00, per la precisione la versione 2.0.14 : ci sarebbero versioni più nuove, ma questa è stabile. Per maggiori info leggere la guida di AleXit

Aggiornamento: Hardy è ancora in Beta, ma sta per essere rilasciata e sembra proprio che network manager ora la riconosca senza problemi!