Crea sito

NosTale su Wine ? Si, funziona!

Siamo alle solite, mio figlio mi chiede di poter giocare a NosTale, ma il gioco funziona su Windows e io uso solo Linux (non ho nemmeno una versione virtualizzata di Windows vista la scarsa potenza di calcolo che possiedo). Allora provo la strada di Wine. La versione di NosTale (20100914) gira tranquillamente su wine stable 1.2 installato di default in ubuntu 10.04 ma al primo avvio NosTale si aggiorna e non riparte più.

[email protected]:/tmp$ ls -lrt NosTale_IT_2010*
-rwxr-xr-x 1 andrea andrea 1185548073 2010-11-25 23:42 NosTale_IT_20100914.exe
-rwxr--r-- 1 andrea andrea 1219731905 2011-01-09 15:39 NosTale_IT_20101221.exe

Per vedere dove effettivamene si blocca vado a eseguirlo direttamente dal terminale e vedo che si blocca su questa istruzione: fixme:wininet:InternetSetFilePointer stub

[email protected]:$ wine .wine/drive_c/Programmi/NosTale\(IT\)/Nostale.exe | tee -a /tmp/nostale.log 2>&1
fixme:shdocvw:PersistStreamInit_Load (0x1dc260)->(0x16aa60)
fixme:shdocvw:navigate_url Unsupported args (Flags 0x4a1c60:10; TargetFrameName 0x4a1c60:10)
fixme:urlmon:URLMoniker_BindToObject use running object table
fixme:shdocvw:BindStatusCallback_OnProgress status code 1
fixme:wininet:InternetSetFilePointer stub
fixme:wininet:InternetSetFilePointer stub

L’errore che riscontro non è molto significativo, allora provo anche a installare la versione development di Wine ma nulla da fare in quanto su ubuntu 10.04 fa sempre riferimento alla versione 1.2 quindi non rimane che installare la versione di sviluppo attraverso la PPA.

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.3

Con questa versione di Wine NosTale funziona correttamente anche su Linux; purtroppo nel mio specifico caso la giocabilità non è un granché in quanto possiedo una scheda Mini-ITX non molto performante e le prestazioni sono veramente scadenti anche se imposto al minimo la risoluzione e i “frames per second”.

Read More

Trasposizione di una colonna in riga 2: la vendetta

Mi sono ritrovato nel caso in cui la procedura descritta nell’articolo Trasposizione di una colonna in riga non ha funzionato; in particolare il secondo xargs va in errore per un problema di riempimento di buffer (si potrebbe usare l’opzione [-s max-chars] di xargs ma potrebbe non essere sufficiente).

[[email protected]]$ cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs
xargs: argument line too long
xargs: echo: terminated by signal 13

[[email protected]]$ wc -l elenco
9144 elenco

Ho modificato la procedura e ora dovrebbe funzionare anche con un numero elevatissimo di righe (aspetto i vostri commenti). In particolare ho utilizzato il comando sed per inserire all’inizio e alla fine di ogni riga un singolo apice e poi ho semplicemente stampato ogni riga usando l’opzione -n di echo che non stampa il ritorno a capo; quindi la colonna viene trasformata in un’unica riga. Ho riportato il time delle diverse metologie e si vede che il risultato ottenuto con il sed è il migliore.

[[email protected]]$ time for i in $(cat elenco | sed 's/^/'\\\''/' | sed 's/$/'\\\','/'); do echo -n $i; done | sed 's/,$//'
real    m0.858s
user    0m0.470s
sys     0m0.060s

[[email protected]]$ time cat elenco | xargs -I{} echo -n ",#{}#" | tr "#" "'" | cut -c 2-
real    0m24.296s
user    0m2.960s
sys     0m18.007s

[[email protected]]$ time cat elenco | xargs -I {} echo ",\'{}\'" | xargs | cut -c 2- | tr -d ' '
real    0m25.561s
user    0m3.200s
sys     0m22.107s

Read More

Comandi in sqlplus

Se sieti abituati alla shell di linux, quando vi trovate di fronte al prompt di sqlplus si rimane un po’ delusi dal fatto che non si possono usare tutte quelle scorciatoie da tastiera come eravamo abituati in bash (ad esempio il Ctrl-R per ricerca di comandi nell’history, oppure semplicemente l’editing dei comandi tramite i tasti cursore). Ecco alcuni comandi che possono aiutare nella scrittura di query in sqlplus:

  • l o L – Rivedere l’ultimo comando inserito;
  • r o R – Ripetere l’ultimo comando inserito;
  • c o C – Correggere una stringa nell’ultimo comando inserito;
  • ! – Eseguire un comando di sistema operativo;

Riporto una sessione sqlplus di esempio; rispetto all’esempio consiglio di invocare sempre e solo il comando sqlplus e inserire le credenziali di connessione al db quando vengono richieste al prompt per non ritrovare la password in chiaro tra i processi di sistema. Se invece vogliamo usare il metodo indicato sotto, ricordo che se la password contiene dei caratteri speciali tipo $ o @ quest’ultimi devono essere “Escapati” anteponendo un backslash; ad esempio sqlplus user/p\@s\[email protected] oppure inserire la password tra apici singoli, sqlplus [email protected][email protected]).

[[email protected]]$ sqlplus [email protected]

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 10 21:37:44 2011

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select sysdate from dual;

SYSDATE
---------
10-FEB-11

SQL> l
1* select sysdate from dual
SQL> c/sysdate/sysdate-2
1* select sysdate-2 from dual
SQL> r
1* select sysdate-2 from dual

SYSDATE-2
---------
08-FEB-11

SQL> !
[[email protected]]$ uname -n
goku
[[email protected]]$ exit
exit
SQL>
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Se volete attivare il supporto readline in sqlplus installate rlwrap e lanciate il comando rlwrap sqlplus [email protected] (il programma può essere installato come pacchetto precompilato apt-get install rlwrap su debian-like o yum install rlwrap su rpm-like o infine compilato da sorgente).

In questo modo potete usare i tasti cursore per ripetere comandi, spostarvi sulla linea di comando, ecc.. Inoltre i comandi R, L e C citati sopra restano sempre utilizzabili. Da notare che rlwrap può essere usato anche in altri programmi come ad esempio gnuplot.

How to use rlwrap

Flexible Sqlplus Command Line History

rlwrap-ext (an extension for rlwrap)

Sqlplus FAQ

Read More

Rinominare molti file con Linux

Se vi trovate nella necessità di dover rinominare molti file (intendo anche migliaia di file o più) vi suggerisco di usare un find e di invocare una shell sulla lista dei file ottenuti. Da notare che se invece del find usate il classico ls * si rischia di incorrere nell’errore Bash Tips: Arg list too long. Nella shell invocata dal find usiamo delle variabili in cui memorizziamo il nome del file attuale e il nome che dovrà avere dopo la rinomina. In linux è presente il comando rename che permette di rinominare molti file ma il metodo indicato qui è applicabile a qualunque linux o unix generico (tipo Solaris e AIX ). Vediamo un esempio in cui i file vengono rinominati e  spostati in un percorso diverso (ho messo anche degli echo per visualizzare correttamente il nome del file che dovrà avere dopo la rinomina). Da notare il il carattere di escape per il singolo apice del comando sed. Inoltre prima di eseguire il comando così come riportato sotto, suggerisco di usare cp o di mettere il comando mv dentro a un echo per vedere se il tutto funziona correttamente.

$ find /path/old/backup* -name '*.GZ.bck' -type f -exec sh -c ' \
FILE={}; \
NOBCK=$(echo {} | sed '\'s/.GZ.bck/.GZ/g\''); \
NEWFILE=$(basename $NOBCK); \
echo "FILE: $FILE"; \
echo "NEWFILE: $NEWFILE"; \
ls -l $FILE; \
mv $FILE /path/new/$NEWFILE' \;

Su una distribuzione di tipo Redhat o Fedora invece è presente il comando rename scritto in C che ci semplifica molto il lavoro (ad esempio è comodo per rinominare tutte le immagini delle foto scaricate da una fotocamera).

$ rename .GZ.bck .GZ *.GZ.bck
$ rename .JPG .jpg *.JPG

Sulle distribuzioni Debian-like (tipo Ubuntu) il comando rename in realtà è uno script perl e l’uso di espressioni regolari lo rende più personalizzabile e quindi più potente.

$ rename 's/\.JPG/.jpg/' *.JPG
Read More

Trasposizione di una colonna in riga

Se avete la necessità di trasformare un elenco di valori da un’unica colonna a un’unica riga è sufficiente usare il comando xargs che legge dallo standard input o pipe e restituisce in output (di default esegue il comando echo) la stessa stringa eliminando il ritorno a capo.

[email protected]:~$ cat elenco
Q01569
Q04191
Q06157
[email protected]:~$ cat elenco | xargs
Q01569 Q04191 Q06157

Personalmente trovo molto utile questo suggerimento quando devo eseguire una query passando una lista molto lunga di condizioni; il tipico esempio è:

select * from tabella where valore in ('var1','var2','var');

Quindi il comando da eseguire in shell bash per avere la lista separata da virgole e ogni valore fra singoli apici è il seguente:

[email protected]:~$ cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs | cut -c 2-
'Q01569','Q04191','Q06157'

La query completa risulterà di questo tipo:

[email protected]:~$ echo "select * from tabella where valore in ($(cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs | cut -c 2-));"
select * from tabella where valore in ('Q01569','Q04191','Q06157');

Aggiornamento:

Posso togliere i caratteri di ESCAPE sui singoli apici all’interno di echo e rimuovere l’ultimo xargs (in questo modo evito anche l’errore “xargs: argument line too long“)

[email protected]:~$ cat elenco | xargs -I {} echo -n ",'{}'" | cut -c 2-
'Q01569','Q04191','Q06157'
Read More

Convertitore news wordpress to flatnuke

Aggiornamento: Ho modificato gli script wp2fn e li ho uploadati su Sourceforge.  La versione 0.2 gestisce correttamente l’interpretazione del tag [ caption ] dei link delle immagini.

Ho realizzato due script in bash shell che permettono di convertire le notizie pubblicate su piattaforma WordPress (testato sulla versione 2.8.4) in formato compatibile con Flatnuke 2.7.x; il primo script permette di estrarre una singola notizia da una export, in formato xml, di tutto il database di wordpress (nelle mie prove su altervista il nome del file di export xml è wordpress.AAAA-MM-GG.xml)

Export WordPress in formato xml

Export database WordPress in formato xml

Il comando di estrazione delle news è il seguente:

$ tar zxvf wp2fn_0.1.tar.gz
$ cd wp2fn
$ ./extract_new_from_wp.sh wordpress.2010-12-28.xml

Al termine dell’esecuzione del comando di estrazione ci ritroviamo con una serie di file del tipo news.NNN.xml, dove NNN è un contatore numerico. Ora interviene il secondo script che effettua la conversione vera e propria e ci restituisce in output un file xml che andremo a copiare direttamente nella directory news di flatnuke.

$ ./wp2fn.sh news.21.xml

La conversione si basa sulla lettura di blocchi di caratteri che si trovano all’interno di tag xml; ad esempio la data di pubblicazione della notizia su WordPress si trova memorizzata all’interno dei tag e . Attraverso l’uso di awk o grep vado a selezionare tale informazione e a riscriverla in formato interpretabile da flatnuke.

awk '/start_pattern/,/stop_pattern/' 

 

$ awk '//,/<\/pubDate>/' news.20.xml
Fri, 20 Aug 2010 15:30:12 +0000
$ grep -E '(.*)<\/pubDate>' news.20.xml
Fri, 20 Aug 2010 15:30:12 +0000

I tag xml verranno poi rimossi utilizzando il comando sed.

$ grep -E '(.*)<\/pubDate>' news.20.xml | sed 's///g' | sed 's/<\/pubDate>//g'
Fri, 20 Aug 2010 15:30:12 +0000

Download WordPress to Flatnuke converter: wp2fn

Non esitate a contattarmi per chiarimenti e/o migliorie del software (ad esempio questa versione non supporta ancora la conversione dei commenti). Inoltre si potrebbe realizzare una versione direttamente via web, in quanto non tutti hanno dimistichezza con la shell linux. Se non avete linux potete eseguire gli script anche su windows utilizzando Cygwin.

Read More

Estrarre audio da un video Youtube

Volevo segnalarvi questo ottimo servizio online che permette di estrarre la traccia audio da un video non protetto da diritto d’autore presente su Youtube o altri siti di video sharing come MySpace, Vimeo, Megavideo. L’operazione da eseguire per estrarre l’audio è molto semplice; infatti basta incollare l’url del video sul sito vidtomp3.com e cliccare il pulsante download. Dopo pochi secondi sarà possibile scaricare direttamente il file mp3 o fare anche il preview, dal sito stesso, del file mp3.

Essendo un servizio online non necessita di installazione sul proprio pc e si può utilizzare in modo completamente gratuito.

Un altro servizio simile è video2mp3.net (utilizzabile direttamente online come il precedente oppure come estensione per Firefox, Chrome e Safari).

Read More

Generare un md5 checksum con openssl

Se vi è capito di controllare degli md5 ma di non avere a disposizione il comando md5sum allora può venirvi in aiuto il comando openssl. Si tratta di sfruttare il comando digests (dgst) di openssl e di specificare successivamente l’algoritmo digests da utilizzare; in questo caso md5 (ma sono disponibili anche altri algoritmi tipo  sha, sha1).

$ touch vuoto.txt
$ md5sum vuoto.txt
d41d8cd98f00b204e9800998ecf8427e  vuoto.txt
$ md5sum -
d41d8cd98f00b204e9800998ecf8427e  -
#  (^D) per terminare la lettura da standard input
$ openssl dgst -md5 vuoto.txt
MD5(vuoto.txt)= d41d8cd98f00b204e9800998ecf8427e
openssl dgst -md5
d41d8cd98f00b204e9800998ecf8427e
#  (^D) per terminare la lettura da standard input
[[email protected] tmp]$ openssl dgst -md5 < EOF
d41d8cd98f00b204e9800998ecf8427e
Read More

Confronto di date in Oracle: to_date and to_char function

Supponiamo di avera una tabella con una colonna di tipo date e di dover estrarre dei record impostando una condizione sulla data. La soluzione migliore è di confrontare le date, quindi bisogna convertire in data ( to_date) la condizione da confrontare. Ad esempio se ho una colonna “start_date” di tipo date, la query dovrà essere di questo tipo:

select count(*) from tabella where start_date > to_date('23-09-2010 18:00:00','DD-MM-YYYY HH24:MI:SS')
order by end_date desc

Se invece voglio fare un confronto di stringhe allora devo convertire in stringa (to_char) la data che sto confrontando. Siccome è un confronto di stringhe allora la data deve essere espressa con annno mese e giorno (YYYYMMDD) altrimenti l’ordinamento non viene mantenuto.

select count(*) from tabella where to_char(start_date,'YYYYMMDD HH24:MI:SS') > '20100923 18:00:00'
order by end_date desc

Altri esempi di query:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> SET LINESIZE 30
SQL> select to_char (sysdate,'YYYY-MM-DD HH24:MI:SS') as data from dual;

DATA
-------------------
2010-09-30 17:11:34

SQL> select to_char (sysdate,'YYYY-MON-DD HH24:MI:SS') as data from dual;

DATA
--------------------
2010-SEP-30 17:22:21

SQL> alter session set NLS_LANGUAGE=ITALIAN;

Session altered.

SQL> select to_char (sysdate,'YYYY-MON-DD HH24:MI:SS') as data from dual;

DATA
--------------------
2010-SET-30 17:22:31
Read More

Conversione certificato x509 con openssl

Oggi voglio segnalarvi il modo di convertire in formato base64 un certificato digitale x509 da riga di comando con il comando openssl. I certificati digitali x509 vengono in genere salvati in due diversi formati, DER e PEM. Il formato DER è un formato binario usato in ambiente java, il formato PEM invece è una rappresentazione in base64 di DER usato in prevalenza in ambiente linux/unix. Essendo codificato in ASCII il certificato PEM base64 presenta in testa la stringa “—–BEGIN CERTIFICATE—–” e in coda “—–END CERTIFICATE—–“.

# Convert DER to PEM
$ openssl x509 -in cert.der -out cert.pem -outform PEM

Facendo una ricerca ho trovato in rete un programma der2pem che permette di fare la conversione; il programma va compilato con gcc e non ho avuto modo di testarlo.

Invece volevo segnalare che se lavorate con application server bea, allora avete già dei tool di conversione forniti da oracle.

La conversione può essere effettuata usando anche Internet Explorer in Windows; si tratta di fare un doppio click sul certificato e invece di importarlo andiamo a salvare il certificato selezionando il formato di esportazione.

Dettaglio certificato

Dettaglio certificato

Esporta certificato

Esporta certificato in formato base64 tramite wizard di Windows

Infine voglio indicarvi un sito web SSL Converter per convertire dei certificati in formati diversi; su questo sito è possibile usare altri tool di check e decodifica.

Read More
Pagina 5 di 7« Prima...34567