lunedì 30 novembre 2009

Netbeans in KDE

Installando Netbeans in KDE, noterete che il look-and-feel dell'applicazione risulta essere quella di default per le applicazioni Java sotto linux, ovvero Metal, a mio giudizio un pò bruttino.
Per migliorare la situazione possiamo invocare il look-and-feel delle GTK in questo modo:

  • Individuiamo la directory in cui è stato installato netbeans
  • Apriamo il file netbeans.conf posto nella sotto-directory "/etc" della dir di cui sopra
  • Aggiungiamo la stringa "--laf GTK" alla fine della variabile netbeans_default_options” salviamo il file e riapriamo Netbeans

al posto di GTK potremo provare anche Metal e Nimbus

    Read more...

    domenica 29 novembre 2009

    Arch Linux

    In un colpo solo ho abbandonato Ubuntu e Gnome, dopo giorni e giorni di agonia (la release 9.10 di ubuntu mi ha portato davvero solo noie, anche se ovviamente i problemi riscontrati potrebbero dipendere dal fatto che ho effettuato una release upgrade e non una fresh install come consigliato) ho deciso di installare Arch Linux, una distro decisamente performante (tutti i pacchetti sono compilati per i686) anche se un pochino ostica per chi è alle prime armi con linux.
    L'installazione mi ha ricordato molto quella di Slackware anche se mi è sembrata più semplice, ma sopratutto molto più veloce (credo circa un quarto d'ora).
    Il sistema è davvero molto pulito, al punto da non installare nemmeno xorg. Il primo step è stato quindi installare quest'ultimo e un window manager, per l'occasione ho deciso di fare il salto e provare kde. Il tutto è stato notevolemente semplice, grazie sopratutto a pacman il gestore dei pacchetti di Arch, di cui sono disponibili anche vari front-end grafici (sotto kde ho installato shaman, che è molto simile a synaptic).
    Sono solo tre giorni che lo uso ma devo dire che la reattività del sistema e la velocità del boot sono da record, appena ho il tempo provvedero a cronometrarlo! :)
    Che dire, non posso che consigliarlo vivamente a chi non ha paura di usare la console...

    Read more...

    sabato 14 novembre 2009

    Terminare sessione X

    Dalla versione 9.04 di Ubuntu la sequenza Ctrl+Alt+Backspace comunemente utilizzata per terminare il server X è stata disabilitata di default, onestamente ho sempre utilizzato questa funzione quindi mi sembra giusto correre ai ripari, per riattivarla facciamo quanto segue:

    • Sistema
    • Preferenze
    • Tastiera
    • Disposizioni (Layout)
    • Opzioni di disposizione (Layout options)
    • Sequenza di tasti per terminare il server X
    • Spuntare "Control + Alt + Backspace"

    Read more...

    domenica 13 settembre 2009

    Limitare l'utilizzo della CPU

    In determinate circostanze può essere utile limitare l'utilizzo della cpu da parte di un programma/processo, per farlo useremo cpulimit.
    In Ubuntu è disponibile direttamente il pacchetto nel repository quindi per installarlo basterà eseguire:

    sudo apt-get install cpulimit
    cpulimit andrebbe eseguito come root per ottenere un maggiore controllo, anche se si può lanciare con il proprio utente, in quest'ultimo caso ovviamente potremo agire sui processi lanciati dal nostro utente...

    Da shell lanceremo cpulimit con la seguente sintassi di esempio:

    cpulimit -e firefox -l 40
    per limitare l'utilizzo della cpu di firefox al massimo al 40%.
    E' possibile specificare il processo anche tramite il suo pid con:

    cpulimit -p 3619 -l 40
    Il programma che vorremo limitare deve essere già in esecuzione, e cpulimit resterà in foreground nella shell fino a quando non lo termineremo con CTRL+C.

    Read more...

    sabato 12 settembre 2009

    Slax in 5 minuti

    Ingredienti per 4 persone:

    • 200 MB di distro slackware
    • 256 MB di spazio libero su una pendrive usb
    • sale q.b.
    Preparazione:

    Scaricate l'ultima versione di Slax da questo link http://www.slax.org/get_slax.php?download=tar, scompattatelo a fuoco lento su una pendrive usb.
    Quando l'archivio sarà stato rosolato a dovere, dovremo rendere avviabile la pendrive usb in questo modo, navigate nella pendrive fino a trovare la directory /boot/ appena creata, e poi:

    da linux, lanciare bootinst.sh

    da windows, lanciare bootinst.bat

    Servire in tavola con bios che supporta avvio da usb. Buon appetito! :D

    Read more...

    giovedì 10 settembre 2009

    Chiude pollycoke... ;(

    Chiude pollycoke.net, la notizia è di qualche giorno fa e ormai sarà passata un pò da tutti i blogger coinvolti, comunque dedico questo mio post a Felipe che (non) mi ha visto lettore silenzioso del suo blog per anni, fin dal mio passaggio da Windows a Linux...
    In bocca al lupo Felipe!

    Read more...

    mercoledì 9 settembre 2009

    Aircrack-ng finalmente 1.0!

    Aircrack-ng è un programma che ci consente di crackare la password WEP o WPA-PSK di una rete wireless, dopo che sono stati intercettati un numero sufficiente di pacchetti. Devo confessare che in passato non sono MAI riuscito a beccarne una di password, nemmeno quella della mia rete wireless domestica, ma sono fiducioso... :)
    Il programma è disponibile sia per linux che per windows.

    Con la release 1.0 innaugurano anche il nuovo sito web a questo indirizzo:

    http://aircrack-ng.org/

    Read more...

    martedì 8 settembre 2009

    Dimenticata la password di Windows?

    Potrà esserci di aiuto Ophcrack, un simpaticissimo programma che ho provato oggi e in meno di 4 minuti mi ha restituito l'elenco degli utenti e delle relative password di un'installazione di windows xp.
    Per comodità ho installato il programma sulla Slax che ho su una pendrive usb, dove ha funzionato senza particolari problemi, l'unica è stata la necessità di installate il modulo per slax delle librerie Qt almeno versione 4.3.

    Iniziamo con lo scaricare i sorgenti da questo indirizzo (anche se per onor di cronaca vi dico che è disponibile anche la versione già compilata per windows, ma noi preferiamo sicuramente quella per il nostro amico pinguino...):

    http://downloads.sourceforge.net/ophcrack/ophcrack-3.3.1.tar.bz2
    scompattiamo l'archivio in una directory a piacere e dopo esserci entrati compiliamo ed installiamo in modo classico:
    ./configure
    make
    make install
    come al solito vi ricordo che per il make install dovremo avere i diritti di root, quindi nel caso di ubuntu ci basterà "sudo make install", mentre nel caso specifico di slax siamo già utenti root e quindi possiamo procedere senza intoppi.

    Prima di lanciare il programma dovremo scaricare le rainbow tables utilizzate per decodificare le password da questa pagina:
    http://ophcrack.sourceforge.net/tables.php
    io personalmente vi consiglio il pacchetto XP free small (380 MB) che da una percentuale di successi del 99,9% (credeteci...) con dimensioni sensibilmente inferiori rispetto agli altri, ovviamente in questo caso i tempi di computazione si allungheranno, per usi particolari è possibile scegliere uno degli alti archivi presenti nella pagina.

    Dopo aver scaricato l'archivio scompattiamolo in una directory a piacere, e ricordiamoci dove perchè dopo evidentemente ci serviranno le tabelle... :)

    Ora potremo lanciare il programma digitando nella shell il comando
    ophcrack
    Ora dalla finestra principale clicchiamo sul pulsante Tables della toolbar, si aprirà questa finestra dove dovremo selezionare XP free small o la voce relativa all'archivio che avremo scaricato e poi sul bottone Install nella finestra di dialogo che si aprirà selezioneremo la directory in cui abbiamo scompattato l'archivio delle tebelle precedentemene scaricato. Fatto ciò ci basterà cliccare suOk


    Tornati nella finestra principale dovremo cliccare sul pulsante Load della toolbar e poi su Encrypted SAM, si aprirà una nuova finestra di dialogo in cui dovremo specificare il disco in cui si trova l'installazione di Windows interessata e poi scorrere fino alla cartella
    WINDOWS\system32\config
    e selezionare Ok. Ora nella finestra principale di Ophcrack dovrebbe già apparire la lista di tutti gli utenti del sistema. Notate a destra la colonna NT Pwd è li che verranno segnalate le password trovate, se già nella riga di qualche utente appare la parola empty, vuol dire che quell'utente non ha password.

    Giunti a questo punto cliccate sul pulsante Crack e attendete fiduciosi...

    Read more...

    Panda3D un game-engine per python

    In realtà Panda3D è utilizzabile anche da cpp, ma in versione limitata perchè molte delle sue funzioni sono implementate direttamente in python, infatti anche nella documentazione ufficiale consigliano per godere a pieno di tutte le funzioni l'utilizzo di python.
    Tempo fa ho utilizzato Panda3D per alcuni test e devo dire che sono rimasto piacevolmente sorpreso dalla complessità delle caratteristiche disponibili come:

    • shaders (normal map, gloss, glow, hdr rendering)
    • performance monitor integrato
    • installer multipiattaforma (linux, windows, macos)
    • nessuna dipendenza esterna oltre al driver grafico
    • gestione integrata del suono
    • gui e funzioni testo integrate
    • terrain, render-to-texture e postprocessing
    • particle systems
    • rilevamento delle collisioni
    • simulazione fisica integrata o tramite ode
    • networking
    • threading
    • e molto altro ancora...
    Vi rimando al sito ufficiale per ulteriori informazioni http://www.panda3d.org

    Read more...

    domenica 6 settembre 2009

    Input multipiattaforma con OIS - 3a parte

    Nella precedente parte abbiamo trattato la crezione dei dispositivi necessari per la lettura degli input, compresa la tastiera, ora vedremo come leggere lo stato di quest'ultima.

    Nell'update dell'applicazione dovremo eseguire questo comando:

    oisKeyboard->capture();

    fatto ciò potremo controllare lo stato di ogni singolo tasto con:

    oisKeyboard->isKeyDown(OIS::KC_F1)   // ritorna true se F1 è premuto
    ovviamente potremo anche sfruttare un listener per ottenere l'input bufferizzato della tastiera, per fare ciò ci basterà derivare la classe OIS::KeyListener così:


    class MyKeyListener : public OIS::KeyListener
        {
        public:
        bool keyPressed(const KeyEvent &arg)
            {
            printf("premuto tasto %i\n", arg.key);
            }
        bool keyReleased(const KeyEvent &arg)
            {
            printf("rilasciato tasto %i\n", arg.key);
            }
        };
    dopo potremo impostare il nostro listener con il seguente comando:

    oisKeyboard->setEventCallback(new MyKeyListener);

    Read more...

    giovedì 27 agosto 2009

    NOKINUX ovvero Nokia Pc Suite su Linux

    Nokinux è un software opensource che ha come obiettivo quello di replicare le funzionalità del Nokia Pc Suite ma per piattaforma Linux.
    La versione che ho provato è la 0.0.8.5 che funziona senza problemi particolari. Tramite la comoda interfaccia grafica è possibile montare/smontare il cellulare per navigare il contenuto della memoria e/o memory card, configurare il telefono come modem ed effettuare/ripristinare un backup. Il programma attualmente è in inglese ma sono in corso localizzazioni per le varie lingue principali, tra cui l'italiano, ah dimenticavo che il team di sviluppo è tutto italiano e cerca aiuti di vario genere, gli interessati possono rivolgersi alla signora del primo piano... :) oppure qui.

    Scaricare l'ultimo pacchetto disponibile da questa pagina, attualmente il file è nokinux-0.0.8.5.tar.gz:



    http://www.nokinux.it/index.php/download.html

    Seguite la guida per l'installazione a questo indirizzo:

    http://www.nokinux.it/index.php/guide.html

    Buon divertimento!

    Read more...

    Rimuovere KDE da Ubuntu

    Tempo fa decisi di provare il nuovo KDE sulla mia Ubuntu 9.04 Jaunty, inutile dirlo che sono Gnomizzato ormai nel midollo, quindi stamattina ho rimosso il pacchetto che avevo installato ovvero kubuntu-desktop e niente... ha rimosso solo il meta-package! :(

    Dopo aver cercato un pò ho trovato questo comando che ha risolto il problema:

    sudo apt-get remove akregator amarok amarok-common apport-qt ark cdrdao dolphin dontzap dragonplayer exiv2 foomatic-db-gutenprint gdebi-kde gnupg-agent gtk2-engines-qtcurve gwenview hpijs-ppds ijsgutenprint install-package jockey-kde k3b k3b-data kaddressbook kamera kate kde-icons-oxygen kde-printer-applet kde-style-qtcurve kde-window-manager kde-zeroconf kdebase-bin kdebase-data kdebase-plasma kdebase-runtime kdebase-runtime-bin-kde4 kdebase-runtime-data kdebase-runtime-data-common kdebase-workspace-bin kdebase-workspace-data kdebase-workspace-libs4+5 kdebluetooth kdegraphics-strigi-plugins kdelibs-bin kdelibs-data kdelibs4c2a kdelibs5 kdelibs5-data kdemultimedia-kio-plugins kdepasswd kdepim-kresources kdepim-strigi-plugins kdepim-wizards kdepimlibs-data kdepimlibs5 kdeplasma-addons kdeplasma-addons-data kdesudo kdm kfind khelpcenter4 klipper kmag kmail kmix kmousetool knotes konqueror konqueror-nsplugins konqueror-plugin-searchbar konsole kontact kopete korganizer kpackagekit krdc krfb ksnapshot ksysguard ksysguardd ksystemlog ktimetracker ktorrent ktorrent-data kubuntu-artwork-usplash kubuntu-default-settings kubuntu-desktop kubuntu-docs kubuntu-konqueror-shortcuts kuser kvkbd kwalletmanager language-selector-qt libakonadiprivate1 libao2 libaudio2 libavahi-qt3-1 libboost-program-options1.35.0 libclucene0ldbl libdbus-qt-1-1c2 libeet1 libexiv2-5 libflac++6 libgeoip1 libk3b3 libk3b3-extracodecs libkcddb4 libkdecorations4 libkdepim4 libkexiv2-7 libkholidays4 libkipi6 libkleo4 libkonq5 libkonq5-templates libkpgp4 libksieve4 libkwineffects1 libloudmouth1-0 liblua50 liblualib50 libmad0 libmimelib4 libmodplug0c2 libmpcdec3 libmsn0.1 libmysqlclient15off libokularcore1 libpackagekit-glib11 libpackagekit-qt11 libphonon4 libplasma3 libpoppler-qt4-3 libpq5 libqca2 libqca2-plugin-ossl libqedje0 libqimageblitz4 libqt3-mt libqt4-assistant libqt4-core libqt4-dbus libqt4-designer libqt4-help libqt4-network libqt4-opengl libqt4-qt3support libqt4-script libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-test libqt4-webkit libqt4-xml libqt4-xmlpatterns libqtcore4 libqtgui4 libqzion0 libraptor1 librasqal1 librdf0 libsearchclient0 libsoprano4 libstreamanalyzer0 libstreams0 libstrigihtmlgui0 libstrigiqtdbusclient0 libvncserver0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxine1 libxine1-bin libxine1-console libxine1-misc-plugins libxine1-x libzip1 mysql-common okular okular-extra-backends openoffice.org-kde openoffice.org-style-crystal oxygen-cursor-theme packagekit packagekit-backend-apt phonon phonon-backend-xine pinentry-gtk2 pinentry-qt4 plasma-widget-network-manager plasma-widget-quickaccess python-dev python-kde4 python-packagekit python-plasma python-qt4 python-qt4-common python-qt4-dbus python-sip4 python2.6-dev qt4-qtconfig quassel quassel-data raptor-utils redland-utils software-properties-kde soprano-daemon speedcrunch strigi-client strigi-daemon system-config-printer-kde systemsettings ttf-dejavu ttf-dejavu-extra update-manager-kde update-notifier-kde && sudo apt-get install ubuntu-desktop

    L'elenco dei pacchetti è stato generato sulla base di quello che kubuntu-desktop aggiunge al sistema durante la sua installazione. Comunque per me ha funzionionato...

    Read more...

    mercoledì 26 agosto 2009

    Input multipiattaforma con OIS - 2a parte

    Nella seconda parte di questo tutorial vedremo come creare i dispositivi necessari alla lettura dei vari input e come appunto ottenere queste informazioni. L'ultimo passaggio della parte precedente è stata la creazione dell'istanza dell'InputManager, ora con quest'ultimo potremo procedere alla crezione dei devices:

    OIS::Keyboard *oisKeyboard = static_cast(oisInputManager->createInputObject(OIS::OISKeyboard, false));
    OIS::Mouse *oisMouse = static_cast(oisInputManager->createInputObject(OIS::OISMouse, false));
    OIS::JoyStick *oisJoystick = NULL;
    try
    {
        oisJoystick = static_cast  (oisInputManager->createInputObject(OIS::OISJoyStick, false));
    }
    catch(...)
    {
        oisJoystick = NULL;
    }

    La creazione del device del joystick è stata inserita in un blocco try&catch perchè altimenti la libreria solleverebbe un eccezione nel caso in cui non vi fosse collegato un joystick alla macchina. In realtà noi diamo per scontato che tastiera e mouse lo siano... altrimenti sarebbe necessario inserire anche le due precedenti righe in altrettanti blocchi try&catch.

    Il passo successivo è definire l'area di clipping iniziale delle coordinate del mouse, larghezza e altezza di solito saranno quelle relative alla finestra della nostra applicazione. Quest'operazione dovrà essere ripetuta anche in caso di resize della finestra.

    if(oisMouse != NULL)
    {
        const OIS::MouseState &ms = oisMouse->getMouseState();
        ms.width = width;
        ms.height = height;
    }

    Ora che abbiamo completato l'inizializzazione di OIS, vediamo come leggere i devices nel ciclo di update dell'applicazione, iniziamo dal mouse:

    const OIS::MouseState &ms = this->oisMouse->getMouseState();

    Nella variabile ms potremo leggere le coordinate del mouse assolute e relative rispettivamente con ms.X.abs e ms.X.rel, questo vale anche per Y e Z. Per leggere lo stato dei pulsanti invece useremo ms.buttons con un and con la costante del tasto che ci interessa verificare (es. ms.buttons & OIS::MB_Right), ecco una tabella riassuntiva:

    OIS::MB_Left      // tasti sinistro, centrale e destro
    OIS::MB_Middle
    OIS::MB_Right
    OIS::MB_Button3   // eventuali bottoni aggiuntivi da 3 a 7
    [...]
    OIS::MB_Button7

    To be continued...

    Read more...

    lunedì 24 agosto 2009

    Input multipiattaforma con OIS - 1a parte

    Oggi parliamo di OIS una libreria per l'input multipiattaforma (più precisamente Linux, Window e MacOS anche se quest'ultimo solo parzialmente supportato), gestisce svariate periferiche (tastiera, mouse, joystick, wiimote, etc.) e dispositivi dotati di forcefeedback, è scritta in c++ ed è orientata ad oggetti.

    Nota: negli esempi tratto la compilazione e/o utilizzo per Linux, ma non ci sono sostanziali differenze dall'utilizzo su Windows, in ogni caso nel pacchetto dei sorgenti di OIS è presente il file "readme.txt" con tutte le informazioni necessarie.

    L'utilizzo neanche a dirlo è semplicissimo, iniziamo con lo scaricare i sorgenti da qui:

    http://sourceforge.net/projects/wgois/files/

    una volta scompattato l'archivio in una directory a scelta, eseguiremo la compilazione con:

    ./bootstrap
    ./configure
    ./make && make install

    ovviamente, per eseguire il make install dovremo avere il privilegi di root.

    Per utilizzare OIS nel nostro programma dovremo includere il suo header:


    #include "OIS/OIS.h"

    Creare una lista di parametri con le nostre preferenze da utilizzare per la creazione dell'inputManahger, e cosa molto importante dovremo passare ad OIS l'id di una finestra già aperta su cui agganciare l'input (nel caso di Window un HWND):

    char windowIdStr[40];
    sprintf(windowIdStr, "%u", windowId);

    OIS::ParamList pl;
    pl.insert(std::make_pair(std::string("WINDOW"), std::string(windowIdStr)));

    #if defined OIS_WIN32_PLATFORM    
    pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" )));
    pl.insert(std::make_pair(std::string("w32_mouse"), std::string( hideMouse ? "DISCL_EXCLUSIVE" : "DISCL_NONEXCLUSIVE" )));
    pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND")));
    pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_NONEXCLUSIVE")));
    #elif defined OIS_LINUX_PLATFORM
    pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string( grabInput ? "true" : "false" )));
    pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string( hideMouse ? "true" : "false" )));
    pl.insert(std::make_pair(std::string("x11_keyboard_grab"), std::string( grabInput ? "true" : "false" )));
    pl.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true")));
    #endif
     
    OIS::InputManager* oisInputManager = OIS::InputManager::createInputSystem( pl );

    In sostanza i vari paramentri sono sia per la versione Win32 che per linux e servono per specificare se effettuare il grab della tastiera e del mouse e se nascondere il puntatore del mouse.


    To be continued...

    Read more...

    domenica 23 agosto 2009

    OpenGL context sharing

    Ovvero, come condividere un context OpenGL tra diverse finestre o addirittura tra applicazioni differenti.
    Se state utilizzando Windows, dovrete utilizzare la funzione wglShareLists(). Altrimenti se come nel mio caso utilizzate GLX, ci servirà il parametro share della funzione glXCreateContext().


    GLXContext ctx1 = glXCreateContext(display, vi, 0, true);
    GLXContext ctx2 = glXCreateContext(display, vi, ctx1, true);

    Nel momento in cui creeremo il secondo context, entrambi avranno visibilità sulle risorse già create fino a quel momento e su quelle che verranno create in seguito.
    Condividere il context ci permetterà non solo di poter utilizzare le stesse risorse (textures, shaders, etc.), ma anche come nel mio caso di poter effettuare il renderToTexture da un applicazione e renderizzare poi quella texture da un'altra applicazione.

    Vi rimando comunque alla documentazione ufficiale.

    Read more...

    sabato 22 agosto 2009

    Profiling in linux

    In questi giorni ho avuto la necessità di realizzare il profiling di un'applicazione che sto realizzando, e ho utilizzato l'accoppiata Valgrind + KCachegrind.
    Il primo è uno strumento potentissimo, che effettua il debug di problemi di memoria, ricerca dei memory leak ed il profiling del software. KCachegrind è una gui per la visualizzazione grafica dei dati del profiling prodotti da Valgrind.

    Per generare i dati di profiling basta eseguire da shell:

    valgrind --tool=callgrind nome_applicazione

    il risultato sarà un file tipo: callgrind.out.un_numero, ora lanciando KCachegrind potremo visualizzare i dati raccolti e analizzare così la velocità delle nostre funzioni.

    Read more...

    About This Blog

      © Blogger template PingooIgloo by Ourblogtemplates.com 2009

    Back to TOP