Dig

27 07 2009

No..non è una canzone dei Mudvayne! E’ un comando per avere informazioni/interrogare i DNS registrati per la nostra connessione!
Uso base
dig
L’output è un po’ una pappardella, comunque le informazioni che possono interessare frequentemente sono in fondo, dove troviamo il tempo impiegato per avere una risposta, l’ip del server e la data

; DiG 9.5.1-P2
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4708
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 517657 IN NS B.ROOT-SERVERS.NET.
. 517657 IN NS C.ROOT-SERVERS.NET.
. 517657 IN NS D.ROOT-SERVERS.NET.
. 517657 IN NS E.ROOT-SERVERS.NET.
. 517657 IN NS F.ROOT-SERVERS.NET.
. 517657 IN NS G.ROOT-SERVERS.NET.
. 517657 IN NS H.ROOT-SERVERS.NET.
. 517657 IN NS I.ROOT-SERVERS.NET.
. 517657 IN NS J.ROOT-SERVERS.NET.
. 517657 IN NS K.ROOT-SERVERS.NET.
. 517657 IN NS L.ROOT-SERVERS.NET.
. 517657 IN NS M.ROOT-SERVERS.NET.
. 517657 IN NS A.ROOT-SERVERS.NET.
;; Query time: 547 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Mon Jul 27 22:43:51 2009
;; MSG SIZE rcvd: 228

Esempio complesso (:P), ovvero chiedere informazioni su un indirizzo specifico
dig www.google.it

DiG 9.5.1-P2 www.google.it
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42606
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.it. IN A
;; ANSWER SECTION:
www.google.it. 345012 IN CNAME www.google.com.
www.google.com. 30 IN CNAME google.navigation.opendns.com.
google.navigation.opendns.com. 30 IN A 208.69.34.230
google.navigation.opendns.com. 30 IN A 208.69.34.231
;; Query time: 405 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Mon Jul 27 22:48:55 2009
;; MSG SIZE rcvd: 131

Naturalmente si possono fare query molto più complesse con tutti (o quasi) i parametri che possono essere utilizzati per una query DNS…mi sento di segnalare l’unico bug degno di nota di Dig (secondo man)

BUGS
There are probably too many query options.

P.S.
Perchè è così incasinato inserire del codice nel blocco “codice” di wordpress?? :(





Testare GRUB2

10 06 2009

Attraverso Pollycoke ho scoperto che Karmic dovrebbe avere GRUB2 installato di default…ho trovato anche la pagina del wiki che spiega come testarlo: in pratica si prova per prima cosa che GRUB2 funzioni col BIOS presente sul pc: per farlo viene semplicemente avviato tramite chainload (un po’ come se si dovesse avviare windows). Se il passaggio tramite chainload funziona, non resta che installare GRUB2 sul settore di boot attraverso il comando upgrade-from-grub-legacy





CMake

2 04 2009
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





Alternativa a fdisk

16 03 2009

L’output di sudo parted -l è molto simile a fdisk -l, ma gparted è molto più avanzato, supporta grandi partizioni e anche GPT

Model: ATA TOSHIBA MK8025GA (scsi)
Disk /dev/sda: 80,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
2 32,3kB 25,2GB 25,2GB primary ntfs boot
3 25,2GB 46,2GB 21,0GB primary fat32
4 46,2GB 50,3GB 4178MB extended
5 46,2GB 49,8GB 3636MB logical ext4
6 49,8GB 50,3GB 543MB logical linux-swap
1 50,3GB 79,5GB 29,1GB primary ext3





Rimuovere i file di configurazione di pacchetti rimossi

9 10 2008

Ho appena scoperto un piccolo trucchetto che permetti di rimuovere tutti i file di configurazione di pacchetti rimossi:

dpkg -l |awk ‘/^rc/ {print $2}’ |xargs sudo dpkg --purge

Il comando cerca tutti i pacchetti il cui stato è rc (in pratica sono stati rimossi i binari, ma non i file di configurazione) e richiama il comando dpkg –purge che elimina i file di configurazione.
Non avevo mai pensato di eliminare tutti i file di configurazione obsoleti, ma con sorpresa ho visto che erano almeno un centinaio…in effetti ho sempre effettuato upgrade dalla Edgy in avanti e ad ogni upgrade qualche file è rimasto indietro :P





Chi mi ruba la banda? Scopriamolo con ntop

18 06 2008

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 :P

Edit: aggiungo un esempio pratico

sudo ntop -w 10000 -i wlan0

http://127.0.0.1:10000





Java Jni e MinGW

15 05 2008

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





Velocizzare l’avvio dei programmi con Preload!

29 02 2008

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!





Asus wl167-g

25 02 2008

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

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!





R, RKWard

6 02 2008

Ho scoperto l’esistenza di R bazzicando per i Gutsy Backports…R è un linguaggio studiato appositamente per l’analisi statistica dei dati: non l’ho mai utilizzato, ma da quello che ho capito deve essere molto potente…se lo avessi scoperto prima avrei sicuramente perso molto meno tempo per le relazioni di corsi come “laboratorio di fisica” o “misure elettroniche” :(

Per usare più comodamente questo linguaggio esiste un’apposito tool chiamato RKWard..che dire? Buona analisi!!