11 gennaio 2012

Ottenere l'indirizzo IP di un PC dal suo nome NETBIOS tramite SAMBA

Ravanando su Google, in un vecchio post (Getting IP address from computer name using samba) su My Linux Life ho trovato come fare a risolvere un vecchio problema che mi infastidiva a casa.

Finalmente ho scovato come fare per ottenere su di una macchina GNU/Linux l'IP di un PC Windows conoscendone il sono nome NETBIOS (utile tipicamente quando si usa un server DHCP per la rete casalinga, ma non solo! ;->).

Il comando SaMBa da utilizzare è:

[tony@home]# nmblookup -I <Nome NETBIOS> 

A futuro memento. :-)


Continua...

8 luglio 2011

E in Svizzera nasce il partito Anti-PowerPoint

Leggendo qui e là, mi sono imbattuto in questa notiziola: Svizzera, un partito contro PowerPoint, che potete trovare commentata anche sul Corriere della Sera on-line.
Ebbene, a me sembra che, sebbene le intenzioni dell'Anti-PowerPoint-Party(*) siano interessanti, non siano affatto sufficienti per fondare un partito, né per pretendere di esser presi sul serio nell'agone politico. Di ben maggiore rilievo e spessore sono i vari Pirate Party internazionali, di cui il Partito-Pirata italiano è una costola.

Continua...

4 luglio 2011

Google, ovvero una vita da geek!

Ecco come in Google ci si comporta sempre da veri geek: si sono divertiti così nel fare le offerte per i brevetti Nortel che però non li hanno visti come vincitori.
B2 → B1 → π
Come riportato Download|blog.it in un suo post (Google, Pi greco e la presa in giro sui brevetti Nortel) che riprende la notizia direttamente da Engadget (Google bids pi for Nortel's wireless patent stash, brings comedy to places you never thought possible), I ragazzi di Google sono stati capaci, da un certo momento in poi di rilanciare per $1.902.160.540 (B1, nota anche come costante di Brun) prima, poi $2.614.972.128 (B2 nota, invece come costante di Meissel-Mertens), nonché alla fine, 3,141592653 miliardi di dollari (la ben nota costante π delle scuole medie). Non risulta ben chiaro se tale escalation sia stata fatta in quanto sicuri di una loro vittoria o piuttosto per alzare solo la posta ma in una maniera alquanto canzonatoria per i suoi nemici (Apple e Microsoft).
Fatto sta che sono stati semplicemente grandiosi!

Powered by ScribeFire

Continua...

2 maggio 2011

NetBeans e Ruby/Rails: l'idilio è finito? Rigraziamo per l'ennesima volta Oracle! :-/

Oggi provo a fare l'aggiornamento di Netbeans alla versione 7.0 e con amarezza scopro che fra i download disponibili non è più presente il bundle per Ruby.
Dopo aver ravanato alquanto leggo che Netbeans non supporta più Ruby/Rails. In verità un aggiornamento dice anche che Tom Enebo e un gruppo di utenti Ruby ha iniziato l'opera di mantenimento del modulo Ruby come plugin.
Vedremo come si evolverà la situazione. Nel frattempo, mentre leggo le parole di Tom su come installare il plugin su Netbeans 7 e su come intende proseguire lo sviluppo futuro, ringrazio per l'ennesima volta Oracle, per aver distrutto un'altra applicazione che funzionava più che egregiamente! 8-/

Powered by ScribeFire.

Continua...

7 marzo 2011

Recupero di una pendrive USB

E' capitato ancora una volta. Qualcuno ha una pendrive che all'improvviso risulta vuota e Windows chiede se sia il caso di formattarla.

No! Alt! Stop!
Niente panico, proviamo a recuperare il contenuto
Se il danno hardware non è esteso (e spesso non lo è, anzi, mi è sempre capitato il caso che ad essere "persa" è stata la parte di disco relativa al boot sector/partition table/FAT) è possibile recuperare se non tutto almeno buona parte dei files presenti.
Ma procediamo con ordine.
  1. Scopriamo su quale device è presente la pendrive (che ovviamente non viene montata, non potendo trovare alcun filesystem valido al suo interno).
    Per prima cosa inseriamo il pendrive in una porta USB e poi da terminale diamo:
    [tuxmal@work ~]# dmesg
    ottenendo:
    usb 1-6: new high speed USB device using ehci_hcd and address 7
    usb 1-6: New USB device found, idVendor=0457, idProduct=0151
    usb 1-6: New USB device strings: Mfr=0, Product=2, SerialNumber=3
    usb 1-6: Product: USB Mass Storage Device
    usb 1-6: SerialNumber: 73971bc79344b6
    usb-storage 1-6:1.0: Quirks match for vid 0457 pid 0151: 80
    scsi5 : usb-storage 1-6:1.0
    scsi 5:0:0:0: Direct-Access                               1.0  PQ: 0 ANSI: 2
    sd 5:0:0:0: Attached scsi generic sg3 type 0
    sd 5:0:0:0: [sdc] 983808 512-byte logical blocks: (503 MB/480 MiB)
    sd 5:0:0:0: [sdc] Write Protect is off
    sd 5:0:0:0: [sdc] Mode Sense: 00 00 00 00
    sd 5:0:0:0: [sdc] Assuming drive cache: write through
    sd 5:0:0:0: [sdc] Assuming drive cache: write through
     sdc: unknown partition table
    sd 5:0:0:0: [sdc] Assuming drive cache: write through
    sd 5:0:0:0: [sdc] Attached SCSI removable disk
    quindi il device è sdc. Alternativamente avremmo potuto leggere queste info con:
    [tuxmal@work ~]# tail /var/log/messages
  2. Creiamo un file contenente i dati del pendrive, per le varie prove di recupero (pendrv è il nome del file utilizzato per i test), l'opzione bs specifica la grandezza dell'intero pendrive (in questo caso 512MB):
    [tuxmal@work ~]# dd bs=512M if=/dev/sdc of=./pendrv
  3. Copiamo il file appena creato (per sicurezza, potremo ritornare sui nostri passi senza più toccare il pendrive, che anzi, rimuoviamo dalla porta USB):
    [tuxmal@work ~]# cp pendrv pendrv.bkup
  4. Adesso, passiamo all'azione, controlliamo se si riesce a leggere qualcosa all'interno del pendrive:
    [tuxmal@work ~]# parted ./pendrv
    Nel caso in esame non risulta presente alcuna partizione. Possiamo provare ancora così:
    [tuxmal@work ~]# fdisk ./pendrv
    e, poiché non otteniamo alcun risultato interessante, ancora:
    [tuxmal@work ~]# fdisk -u -l ./pendrv
    oppure
    [tuxmal@work ~]# fdisk -l ./pendrv
  5. Se ancora non si hanno riscontri positivi, come nel mio caso, proviamo con:
    [tuxmal@work ~]# gpart -g -i ./pendrv
    che continua a visualizzare partizioni errate:
          Begin scan...
        Possible partition(DOS FAT), size(486mb), offset(0mb)
        End scan.

        Checking partitions...

        * Warning: partition(Primary 'big' DOS (> 32MB)) starts beyond disk end.
        Partition(Primary 'big' DOS (> 32MB)): invalid primary
        Ok.

        Guessed primary partition table:
        Primary partition(1)
          type: 000(0x00)(unused)
          size: 0mb #s(0) s(0-0)
          chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

        Primary partition(2)
          type: 000(0x00)(unused)
          size: 0mb #s(0) s(0-0)
          chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

        Primary partition(3)
          type: 000(0x00)(unused)
          size: 0mb #s(0) s(0-0)
          chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

        Primary partition(4)
          type: 000(0x00)(unused)
          size: 0mb #s(0) s(0-0)
          chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

  6. Proviamo comunque   a montare il nostro pendrive:
    [tuxmal@work ~]# mount -t vfat -o loop ./pendrive /mnt/usbdrv/
    Se nulla si è risolto, otterremo ancora errori del genere:
      mount: tipo fs errato, opzione non valida, superblocco su /dev/loop0 danneggiato,
             codepage o programma ausiliario mancante, o altro errore
             In alcuni casi si possono trovare informazioni utili in syslog. Provare
             ad esempio 'dmesg | tail'
    # dmesg | tail
      FAT: invalid media value (0x01)
      VFS: Can't find a valid FAT filesystem on dev loop0.
      FAT: invalid media value (0x01)
      VFS: Can't find a valid FAT filesystem on dev loop0.
      FAT: invalid media value (0xa5)
      VFS: Can't find a valid FAT filesystem on dev loop0.
      FAT: invalid media value (0xa5)
      VFS: Can't find a valid FAT filesystem on dev loop0.
      FAT: invalid media value (0xa5)
      VFS: Can't find a valid FAT filesystem on dev loop0.
  7. Proviamo ad utilizzare, allora,
    [tuxmal@work ~]# testdisk ./pendrive
    seguendo i menù riusciremo a correggere boot sector e partition table ed a visualizzare i file (menù [Advanced]). Proprio da quest'ultimo menù, tramite [Image Creation], creo una nuova immagine del pendrive (dal nome di default image.dd).
  8. Adesso proviamo a vedere dentro il pendrive recuperato:
    [tuxmal@work ~]#mount -t vfat -o loop ./image.dd /mnt/usbdrv/ -o codepage=850,iocharset=utf8
    montando l'immagine ottenuta, questa volta riuscimo a leggere tutti i file presenti. Per una corretta visualizzazione dei nomi dei file è stato necessario specificare le opzioni
      codepage=850,iocharset=utf8
    poiché le operazioni sono state svolte su di una linuxbox che usa UNICODE come charset di default.
Fonti
Partition-Rescue HOWTO
Per una occhiata veloce sul problema.
"Invalid or incomplete multibyte or wide character" Issue
Mi ha ispirato per inserire le opzioni di mount relative al set di caratteri.

Powered by ScribeFire


Continua...

21 febbraio 2011

Calc, OpenOffice.org e l'annoso problema delle righe da ripetere in stampa

Da più di un anno un noiosissimo bug in Calc di OpenOffice.org mi rendeva la vita difficile nel produrre elenchi formattati: l'impossibilità di impostare le righe da ripetere su ogni foglio in stampa.
Andando alla funzione Formato -> Aree di stampa -> Modifica, nella casella Riga da ripetere sia digitando manualmente i valori che  selezionando la riga del foglio da stampare tramite l'apposito tasto posto all'estrema desta, il risultato era sempre lo stesso: cliccando sul tasto Ok si otteneva sempre il messaggio Riferimento foglio non valido.
Più di una volta ho cercato si Google senza trovare nulla, ma oggi mi sono imbattuto in un post sul forum di OpenOffice.org che mi ha risolto una volta e per sempre il problema! In soldoni, come riporta l'utente sbaturzio:
Allora: ho risolto facendo così:
* Menu -> Strumenti -> Opzioni -> OpenOffice.org Calc->Formula
* Attivo Usa nomi di funzione Inglesi

* premo Ok
Da questo momento in avanti la funzionalità Riga da ripetere lavora correttamente senza errori.
Posso anche riportare la checkbox Usa nomi di funzione Inglesi allo stato originale senza che Riga da ripetere torni a dare errori.
Posso testimoniare che la cosa ha funzionato anche sul mio OpenOffice.org 3.2.1 (OOO320m15 (Build:9492) 3.2.1.4).
Powered by ScribeFire.

Continua...

19 ottobre 2010

InAcceptabile comportamento di IE[5-8]

Un utente si lamentava che una delle nuove funzionalità di OPTA, viste in funzione sul mio PC, non funzionavano correttamente. Alla richiesta di visionare l'elenco dell'organico, invece di aprire la pagina con l'elenco, veniva sempre ed inesorabilmente scaricato l'elenco in formato CSV (opzione presente con un link nella pagina, assieme a quello analogo per ottenerlo come PDF).
click to enlarge
Inizio l'indagine constatando che la segnalazione proveniva da un'utente che usa IE8 (su Windows, of course), mentre con Firefox 3.6 (su Linux, obviously) tutto andava liscio come l'olio. Provo immediatamente con Firefox e con Chrome anche su Windows, ma lo strano comportamento non si presenta e l'elenco si visualizza correttamente.
Collego subito il problema con la gestione della respond_to del controller Rails relativo alla pagina: il codice, però, è scritto correttamente e poi: perché scarica proprio il CSV e non PDF?
Cerco un po' di documentazione in giro, mentre nel controller disabilito la gestione del formato CSV e faccio una nuova prova. Magicamente IE8 si comporta di nuovo normalmente. Mi risulta naturale cercare un tool (su Windows) per visionare le request inviata da IE8 al server. Trovo l'ottimo Fiddler (che potete vedere, figura precedente, nella parte alta della schermata).
Usandolo, noto come IE8 invii, nell'intestazione Accept, una marea di formati, fra cui application/vnd.ms-excel. Sembro essere sulla buona strada: ripristino la gestione del file CSV nel controller Rails e con l'aiuto di Fiddler forgio una request in cui elimino la voce application/vnd.ms-excel. Ora anche in IE8 ottengo l'elenco in formato HTML, come ci si sarebbe aspettato che fosse fin dall'inizio.
Nel frattempo le ricerche su internet mi avevano portato a questo articolo, Unacceptable Browser HTTP Accept Headers (Yes, You Safari and Internet Explorer) che mi apre la mente: la mia applicazione in Rails serve ad IE8 sempre prima il fomato CSV, semplicemente perché IE8 non invia il MIME-type text/html nell'Accept (provare per credere)!
Ulteriore conferma la ebbi leggendo il post Ruby on Rails and IE 8 - respond_to and HTTP accept headers.
Per la soluzione ho quindi inserito il seguente codice nelle viste Rails, al momento di creare il link:
par.merge!({:format => :html}) if request.env['HTTP_USER_AGENT'] =~ /MSIE/
dove par è l'hash utilizzato per la creazione dell'URI. In questo modo, per IE8 si forza esplicitamente il formato (HTML) richiesto, postponendo .html all'URI standard generato con Rails.
Powered by ScribeFire.

Continua...