Just another IT weblog

Manutenzione dell’HardDisk su Linux

Giugno 24th, 2007 by Mattneri

Gli HardDisk sono una delle componenti più soggette ad usura dei pc odierni e forse anche una delle parti più critiche in quanto contengono tutti i nostri dati.
Quante volte vi è capitato che il vostro HD ha tirato le cuoia e il vostro ultimo backup risaliva ai tempi delle elementari…a me, considerata la mia inesorabile pigrizia nel fare frequenti backup dei dati, spessissimo.
Una soluzione per ridurre il rischio di perdita dei vostri più preziosi dati esiste e si chiama SmartMonTools.
Tale suite di programmi consente di monitorare lo stato di salute del vostro hard disk e vi avverte nel caso ci sia qualcosa che non funziona a dovere.

SmartMonTools è presente nei repository di Ubuntu, ma per coloro che volessero utilizzare la versione più recente vi ho impacchettato la 5.37, che potete scaricare da QUI.

Una volta installato potete ottenere informazioni sul vostro hard disk tramite il seguente comando:
# smartctl -i /dev/hda

Per effettuare invece un test sullo stato di salute attuate del dispositivo:
#smartctl -H /dev/hda
L’ultima riga di output dovrebbe riportare la dicitura PASSED. Se non fosse così vi consiglio di effettuare un backup istantaneo di tutti i vostri dati…

Per effettuare un test più approfondito è invece disponibile il comando:
# smartctl -t <modificatore> /dev/hda
Dove come <modificatore> possiamo utilizzare short (test breve, sul mio pc dura qualche minuto), long (test più approfondito), ecc..
Ora per visualizzare a schermo il risultato dei vari selftest effettuati basterà digitare il seguente comando:
# smartctl -l selftest /dev/hda
Oppure per avere un riassunto più completo dello stato attuale dell’HD e di tutti i vari test effettuati:
#smartctl -a /dev/hda

Infine è possibile anche effettuare un controllo automatizzato e lasciare che sia smartmontools ad avvisarvi se qualcosa non va. Per questo dovete abilitare il demone smartd andando ad editare /etc/default/smartmontools e decommentando la riga start_smartd=yes
Infine dovrete specificare il comportamento di smartd editando il file /etc/smartd.conf

Posted in Linux | 5 Comments »

Impacchettato Pidgin 2.0.2 x Ubuntu

Giugno 16th, 2007 by Mattneri

PidginE’ uscita la nuova release di Pidgin. Uno dei migliori, a mio avviso, client di messaggistica presenti su linux.

La sua principale caratteristica consiste nella compatibilità con i principali protocolli esistenti, fra i quali: ICQ, AIM, Yahoo, Messenger, …

In questa versione, sono stati fixati molti bug presenti nella precedente release.

Posted in Linux | No Comments »

Comunicazione tra Flash e C++/CLI

Giugno 6th, 2007 by Mattneri

 

Nei giorni scorsi stavo tentando si sviluppare un controllo flash da utilizzare all’interno di una Windows Form e mi sono di conseguenza scontrato con varie problematiche inerenti la comunicazione e il passaggio di dati fra le due tecnologie. Di seguito vi riporto brevemente alcune annotazioni. Gli snippets di codice riportati sono in ActionScript e C++/CLI, ma possono facilmente essere convertiti in qualunque linguaggio che giri sotto il .Net Framework.

 

 

Comunicazione da .Net a Flash:

  • SetVariable( String^ nome, String^ valore );

Permette di settare il valore di una variabile ActionScript. Il problema è che SetVariable prende come parametri due stringhe, quindi non posso passare altri tipi di dato.

flashObj->SetVariable( nome, valore );

 

  • CallFunction( String^ command );

Permette di richiamare una funzione definita in ActionScript passando eventuali parametri. Permette di passare come parametro booleani, stringhe, array e oggetti;

In actionscript bisogna ricordarsi di importare ExternalInterface:

import flash.external.ExternalInterface;

e di definire un CallBack per ogni funziona che si vuole richiamare da C++:

ExternalInterface.addCallback("setVisible", null, setVisible);

 

- Invoca la funzione resetAll (definita in actionscript) senza passare alcun parametro.

String^ command = "<invoke name=\"resetAll\" returntype=\"xml\"><arguments></arguments></invoke>";

flashObj->CallFunction(command);

 

- Invoca la funzione setVisible (definita in actionscript) e le passa un booleano a true.

command = "<invoke name=\"setVisible\" returntype=\"xml\"><arguments><true/></arguments></invoke>";

 

X maggiori info:

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/

html/wwhelp.htm?context=LiveDocs_Parts&file=00000344.html

 

 

Comunicazione da Flash a .Net:

  • fscomand( string comando, string parametro );

Permette di scatenare un evento FSCommand che verrà catturato dal container del Ocx Flash. Anche in questo caso vi è la limitazione che fscommand permette di restituire solo stringhe(che poi andranno quindi convertite nel formato appropriato).

 

Da C++ quindi dobbiamo andare a gestire l’evento FSCommand.

void MyUserCtrl::flashObj_FSCommand(System::Object^ sender, AxShockwaveFlashObjects::_IShockwaveFlashEvents_FSCommandEvent^ e)

{

if(e->command == "Start")

{

switch(Int32::Parse(e->args))

{

case 1:

MessageBox::Show(“Start 1”);

break;

case 2:

MessageBox::Show (“Start 2”);

break;

}

}

else if(e->command == "stop")

{

MessageBox::Show(“Stop”);

}

}

 

Da ActionScript la sintassi da usare sarà la seguente:

fscommand(“Start”, “1”);

fscommand(“Stop”, “”);

 

  • ExternalInterface.call()

Permette di eseguire un metodo presente nel contenitore del controllo Flash. Richiede almeno un parametro che è il nome della funzione da richiamare. Gli eventuali altri parametri verranno poi passati alla funziona richiamata. Inoltre anche in questo caso è necessario importare la classe ExternalInterface.

var num1:Number = 5;

var num2:Number = 2;

var result:uint = ExternalInterface.call("somma", num1, num2 );

 

 

Gli argomenti passati da actionscript si potranno ricevere attraverso la proprietà request dell’evento e avranno una struttura simile alla seguente:

<invoke name="somma" returntype="xml">

<arguments>

<number>5</number>

<number>2</number>

</arguments>

</invoke>

 

Quindi in C++ il gestore dell’evento FlashCall sarà il seguente:

void MyUserCtrl:: flashObj _FlashCall(System::Object^ sender, AxShockwaveFlashObjects::_IShockwaveFlashEvents_FlashCallEvent^ e)

{

XmlDocument^ document = gcnew XmlDocument();

document->LoadXml(e->request);

XmlNodeList^ list = document->GetElementsByTagName("arguments");

somma( Convert::ToInt32( list[0]->FirstChild->InnerText ), Convert::ToInt32(list[0]->ChildNodes[1]->InnerText) );

}

 

void MyUserCtrl::somma( int num1, int num2 )

{

MessageBox::Show( (num1 + num2).ToString() );

}

Posted in C/C++, Net Framework, Programmazione | No Comments »