domenica 19 dicembre 2010

Se Empathy non si collega a MSN

Applicare questa patch su papyon (in qualcosa come /usr/lib/python2.6/site-packages/papyon):

diff __git a/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py b/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py
index 73c1127..42d7497 100644
__- a/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py
+++ b/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py
@@ -21,7 +21,7 @@
import xml.sax.saxutils as xml

class LiveService(object):
- CONTACTS = ("contacts.msn.com", "?fs=1&id=24000&kv=7&rn=93S9SWWw&tw=0&ver=2.1.6000 .1")
+ CONTACTS = ("contacts.msn.com", "MBI")
MESSENGER = ("messenger.msn.com", "?id=507")
MESSENGER_CLEAR = ("messengerclear.live.com", "MBI_KEY_OLD")
MESSENGER_SECURE = ("messengersecure.live.com", "MBI_SSL")

Wordpress: too many redirects

Il vostro sito basato su wordpress non e' piu' visualizzabile e il browser vi avverte che ci sono troppi redirect?

Potete applicare una patch per disabilitare la "canonical url redirection",

Inserite lo script disable-canonical-redirects.phps nella directory /wp-content/plugins:

<?php
/*
Plugin Name: Disable Canonical URL Redirection
Description: Disables the "Canonical URL Redirect" features of WordPress 2.3 and above.
Version: 1.0
Author: Mark Jaquith
Author URI: http://markjaquith.com/
*/

remove_filter('template_redirect', 'redirect_canonical');

?>

giovedì 9 dicembre 2010

Problemi di encoding UTF-8 su script Perl

Ho uno script che legge un file CSV, fa alcune elaborazioni e poi genera un nuovo file CSV su standard output.

Problema: se il csv sorgente contiene dei caratteri estesi in encoding utf8 (ad esempio le lettere tedesche che l'umlaut) mi trovavo nell'output degli errori:
Cannot parse:__contenuto_della_riga_del_csv__
Soluzione: dire a Perl che quello che sta leggendo e' un file utf8, trasformando la riga:

 open (CSV, '<:', $file)
in:

 open (CSV, '<:utf8', $file)
Questo ha fatto sparire i warning relativi al parsing del file, pero' l'output risultava errato con i caratteri estesi sostituiti da orrende sequenze e codici.

Il nuovo problema era che l'output veniva encodato in ISO-8859
Per forzare le scritture su standard output in UTF8, bisogna inserire a inizio script la riga:
binmode STDOUT, ":utf8";




lunedì 13 settembre 2010

Aprire un file con VIM e salvarlo con un diverso encoding

Assumiamo per esempio di avere un file (file.txt) con encoding UTF-16 e di volerlo convertire in UTF-8.


Apriamo il file con il comando:
vim file.txt
salviamo il file con il comando:
:write ++enc=utf-8
o, se preferiamo salvarlo con un altro nome:
:write ++enc=utf-8 file_utf8.txt


Lo stesso risultato puo' essere ottenuto da linea di comando:
iconv -f utf-16 -t utf-8 file.txt > file_utf8.txt

sabato 14 agosto 2010

openOffice Writer: shortcut per cambiare 'case' parole

Word di M$, ha una comoda feature, selezionando una parola e premendo ripetutamente la sequenza SHIFT F3, questa viene trasformata in sequenza in MAIUSCOLO, minuscolo, Capitalizzato.

Su OpenOffice e' necessario seguire questi pochi passi per ottenere lo stesso risultato:

Tools > Customize > Keyboard
Selezionare lo shortcut SHIFT+F3 (nel riquadro in alto a sinistra)
Selezionare la categoria OpenOffice MACRO (in basso a sinistra) > share > Capitalise
Selezionare la funzione "CapitalisePython" (al centro in basso)
ed agganciarla (usando il bottone "modify") allo shortcut selezionato.

venerdì 11 giugno 2010

PHPBB: perche' non vedo le modifiche fatte al template?

Avete modificato un template del vostro forum ma se ricaricate la pagina non vedete le vostre modifiche?

phpBB 3 ha un sistema di cache che crea copie statiche dei file di phpBB, soprattutto quelli legati agli stili che avete installato sul vostro forum. Questo meccanismo velocizza il caricamento del vostro sito e riduce la quantita' di banda utilizzata.

Quando dobbiamo installare qualche modifica o aggiustare il nostro stile PHPBB, una delle ragioni per cui qualcosa non funziona o una modifica appena implementata non viene visualizzata, e' perche' PHPBB sta visualizzando una vecchia versione della pagina prelevata dalla cache. Per poter visualizzare la nuova versione occorre pulire la cache.

Come fare? Il modo piu' semplice e' andare nel pannello di amministrazione di PHPBB3. Sulla pagina principale vedete le statistiche del vostro sito e sotto un'area intitolata "Risincronizza o azzera statistiche". Cercate la voce "Vuota la cache", cliccate sul pulsante Avvia corrispondente  e confermate la vostra scelta: la cache viene ripulita completamente. Nella maggioranza dei casi questa e' la soluzione perfetta per raggiungere il nostro scopo.

Pulire i file di template, i file di tema o i set di immagini per unp stile specifico.

Altre volte invece vorrete solo pulire la cache relativa ai file di uno stile specifico. Per fare questo, una volta entrati nell'area di amministrazione, cliccate sulla scheda "Stili". Da qui vedrete "Template", "Temi", "Set di immagini" sul menu di sinistra. Sara' sufficiente cliccare sul tipo di file che volete ripulire.
Vedrete quindi una lista degli stili installati. Sotto "Azioni" cliccate su "Aggiorna" sulla riga relativa allo stile che desiderate ripulire, confermate la vostra scelta per terminare la procedura.


Grosse modifiche? Dite a phpBB 3 di controllare se un file e' stato aggiornato.

Se state facendo molte modifiche, potete dire a phpBB di controllare se una nuova versione del file e' stata uploadata, prima di usare la versione in cache.

Sul pannello di amministrazione di phpBB 3 andate nel menu' di sinistra, sotto "Configurazione Server" cliccate su  "Processi"
Nella pagina seguente in fondo alle "Opzioni generali" potete vedere "Ottimizza i componenti degli stili" Selezionate "Si" and cliccate sul pulsante  "Invia" in basso.

Si raccomanda di usare questo metodo solo quando state facendo molte modifiche in quanto appesantisce parecchio il carico del vostro server. Dopo aver applicato tutte le modifiche dovreste rimettere questa opzione a "No".

lunedì 26 aprile 2010

mutt: comandi multipli

Con il comando 'b' possiamo eseguire il bounce (trasferimento) di un messaggio verso un altro indirizzo email.
Apparentemente non sembra possibile eseguire lo stesso comando su un gruppo di messaggi selezionati (tag).

E' invece possibile anteponendo un punto e virgola, il comando diventa quindi ';b'

Questo trucco puo' essere usato anche per altri comandi.

Qmail e relay: varie ed eventuali

Girare tutte le mail verso uno smarthost

Inserire nel file /var/qmail/control/smtproutes la riga seguente:
:indirizzo_o_nome_server_remoto
Tutta la posta verra' spedita tramite il server indicato.

Girare tutte le mail per un dominio specifico verso uno smarthost 

Inserire nel file /var/qmail/control/smtproutes la riga seguente:
nome_dominio:indirizzo_o_nome_server_remoto
Tutta la posta per il dominio nome_dominio verra' spedita tramite il server indicato.

Postfix e relay: varie ed eventuali

Vediamo qualche trucco per risolvere alcune situazioni di relay con postfix:

1. Come configurare postfix per usare un relay host (smarthost) remoto
2. Consentire a postfix di accettare posta in relay da ip address specifici.
3. Come ritrasmettere (relay) mail per domini specifici (ad esempio quelli locali)
4. Come configurare i domini virtuali in postfix

 
1. Come configurare postfix per usare un relay host (smarthost) remoto

Ipotizziamo che usiate Linux e il vostro provider sta filtrando il traffico sulla porta 25, impedendoti di fatto di spedire la posta direttamente dalla vostra macchina.
L'unica possibilita' in questi casi e' configurare il vostro mailserver per girare tutta la vostra posta in uscita attraverso il server del provider.
Con postfix questo e' molto semplice.

in /etc/postfix/main.cf, settate la variabile:
relayhost = smtp.yourisp.com
poi rilanciate postfix:
/etc/init.d/postfix restart
2. Consentire a postfix di accettare posta in relay da ip address specifici.

Per default, postfix consente il relay (ricezione e reinvio verso un destinatario remoto) anonimo solo ai computer della proria rete. Potete aggiungerer uno o piu' IP address che dopo il riavvio di postfix verranno considerati come IP "virtuosi" da cui puo' essere accettata posta in relay.

In /etc/postfix/main.cf cambiare:
mynetworks = 127.0.0.0/8
in
mynetworks = 127.0.0.0/8, 192.168.0.1/24, 62.35.x.x/30, x.x.x.x
 Ovvero una lista di ip address (sia sottoreti che singoli host) separati da virgole. 


3. Come ritrasmettere (relay) mail per domini specifici (ad esempio quelli locali)
 
Potete utilizzare il file /etc/postfix/transport con il seguente formato

somedomain.com     smtp:[10.0.0.1]:25
otherdomain.com    smtp:10.0.0.2:25 







ovvero:
dominio_per_cui_fare_relay    smtp:ip_server_remoto:porta








La versione con l'IP address racchiuso tra [] disabilita la verifica del record MX relativa al dominio in questione.

N.B. Verificare che in /etc/postfix/main.cf ci sia la riga seguente:
transport_maps = hash:/etc/postfix/transport
N.B. dopo ogni modifica al file /etc/postfix/transport lanciare il comando seguente:
postmap hash:/etc/postfix/transport


4. Come configurare i domini virtuali in postfix

/etc/postfix/virtual e' un file di testo dove specificare i domini e gli utenti per cui accettare le email. Ogni dominio virtuale dovrebbe cominciare con una singola linea contenente il nome del dominio.
Le righe seguenti definiscono gli indirizzi del dominio da gestire.
Le mail saranno consegnate agli utenti locali indicati sulla destra (come nell'esempio seguente). La clausola @nomedominio consente di recapitare tutte le altre mail all'utente indicato (catchall).
Potete gestire piu' di un dominio in questo file, basta ripeterne la struttura mostrata qui sotto:
dominio.com        this-text-is-ignored
postmaster@dominio.com     postmaster
address1@dominio.com     utentelocale1
address2@dominio.com     utentelocale2
@dominio.com        utentelocale1
This e-mail address is being protected from spambots. You need JavaScript enabled to view it This e-mail address is being protected from spambots. You need JavaScript enabled to view it This e-mail address is being protected from spambots. You need JavaScript enabled to view it Dovete dire a postfix dove cercare queste mappature per gli alias virtuali. La direttiva corretta si trova nel file /etc/postfix/main.cf e dice a postfix di usare la versione hash del file appena creato. Il file hash non viene creato  finche' non lanciate il comando "postmap virtual" come vedremo piu' avanti.

Il /etc/postfix/main.cf deve contenere la seguente riga
virtual_alias_maps = hash:/etc/postfix/virtual
Avendo modificato il file main.cf, dovete riavviare il demone postfix. Il secondo comando aggiorna la mappatura degli alias virtuali. Dovete rilanciare il comando postmap ogni volta che modificate il file /etc/postfix/virtual.
postfix reload
postmap /etc/postfix/virtual
Ora provate a recapitare una mail agli indirizzi del dominio virtuale. Se ci fossero problemi, verificate i log relativi al server di posta. e controllate che i due comandi precedenti siano stati eseguiti.

Mantenere un programma in esecuzione

Capita che dobbiate utilizzare un programma 24 ore su 24 ma che questo, per qualche motivo, ogni tanto si chiuda. Potete usare supervise, una utility contenuta nei daemontools (vedremo come in un altro post), ma vediamo che e' possibile anche con un semplice script (in questo esempio proccheck.sh) in cui dovete sostituire nome_servizio con il nome del processo da controllare:
progname=nome_servizio
if [ "$(/sbin/pidof $progname)" = "" ]
then
  /etc/init.d/nome_servizio start
else
  echo nome_servizio is running OK
fi
Se il processo e' in esecuzione viene visualizzato un messaggio tranquillizzante, altrimenti viene fatto partire. Per essere veramente efficace, lo script deve essere lanciato da crontab con la seguente linea:
*/15 * * * * /usr/local/bin/proccheck.sh 2>&1 > /dev/null

venerdì 9 aprile 2010

Aumentiamo la sicurezza di phpmyadmin: cambiamo URL

Tutte le installazioni di phpmyadmin sono configurate in modo da rispondere all'URL:
www.nostrosito.com/phpmyadmin
Puo' essere utile modificarlo in qualcos'altro che sia un po' meno intuitivo per i malintenzionati che possono gironzolare sul nostro server. Ad esempio
www.nostrosito.com/nonsapraimaicosacequi  :)
Per raggiungere questo risultato dobbiamo editare il file /etc/apache2/conf.d/phpmyadmin.conf
e modificare la riga:
Alias /phpmyadmin  /usr/share/phpmyadmin
in
Alias /nonsapraimaicosacequi  /usr/share/phpmyadmin

Che linguaggi o character set sono supportati da MySQL?

Per determinare quali linguaggi (character set) sono supportati in MySQL, seguite queste istruzioni:
1. Aprire l'interfaccia phpMyAdmin
2. Click sul nome del database da modificare
3. Click su SQL

4. Inserite la query seguente:
SHOW CHARACTER SET;
5. Cliccate Go per eseguire la query.


Il risultato sara' piu' o meno questo:


Charset Description Default collation Maxlen
big5 Big5 Traditional Chinese big5_chinese_ci 2
dec8 DEC West European dec8_swedish_ci 1
cp850 DOS West European cp850_general_ci 1
hp8 HP West European hp8_english_ci 1
koi8r KOI8-R Relcom Russian koi8r_general_ci 1
latin1 cp1252 West European latin1_swedish_ci 1
latin2 ISO 8859-2 Central European latin2_general_ci 1
swe7 7bit Swedish swe7_swedish_ci 1
ascii US ASCII ascii_general_ci 1
ujis EUC-JP Japanese ujis_japanese_ci 3
sjis Shift-JIS Japanese sjis_japanese_ci 2
hebrew ISO 8859-8 Hebrew hebrew_general_ci 1
tis620 TIS620 Thai tis620_thai_ci 1
euckr EUC-KR Korean euckr_korean_ci 2
koi8u KOI8-U Ukrainian koi8u_general_ci 1
gb2312 GB2312 Simplified Chinese gb2312_chinese_ci 2
greek ISO 8859-7 Greek greek_general_ci 1
cp1250 Windows Central European cp1250_general_ci 1
gbk GBK Simplified Chinese gbk_chinese_ci 2
latin5 ISO 8859-9 Turkish latin5_turkish_ci 1
armscii8 ARMSCII-8 Armenian armscii8_general_ci 1
utf8 UTF-8 Unicode utf8_general_ci 3
ucs2 UCS-2 Unicode ucs2_general_ci 2
cp866 DOS Russian cp866_general_ci 1
keybcs2 DOS Kamenicky Czech-Slovak keybcs2_general_ci 1
macce Mac Central European macce_general_ci 1
macroman Mac West European macroman_general_ci 1
cp852 DOS Central European cp852_general_ci 1
latin7 ISO 8859-13 Baltic latin7_general_ci 1
cp1251 Windows Cyrillic cp1251_general_ci 1
cp1256 Windows Arabic cp1256_general_ci 1
cp1257 Windows Baltic cp1257_general_ci 1
binary Binary pseudo charset binary 1
geostd8 GEOSTD8 Georgian geostd8_general_ci 1
cp932 SJIS for Windows Japanese cp932_japanese_ci 2
eucjpms UJIS for Windows Japanese eucjpms_japanese_ci 3

giovedì 8 aprile 2010

Cambiare il character set in un database MySQL

1. Aprire l'interfaccia phpMyAdmin
2. Click sul nome del database da modificare

3. Click su SQL
4. Inserire questa query per modificare il character set in utf-8 (sostituire [nome_database] con il nome del db da modificare:

ALTER DATABASE [nome_database] CHARACTER SET utf8 COLLATE utf8_general_ci;
 

venerdì 2 aprile 2010

Shutdown di una sessione remota Windows XP

Fino a qualche tempo fa era semplice riavviare o arrestare una macchina XP durante una sessione remota.
Non so se per colpa di SP3 o di qualche altro aggiornamento, passando da START non e' piu' possibile ottenere i comandi necessari: viene permessa solo la disconnessione dal sistema remoto.

Per poter riavviare/arrestare bisogna cliccare sul desktop e premere la sequenza ALT F4.

venerdì 26 marzo 2010

vi e Caps Lock non vanno d'accordo

Il caps lock inavvertitamente premuto durante una sessione concitata di vi puo' generare disastri inenarrabili.

Puo' capitare se usate una tastiera piccola o a cui non siete abituati.

Per disabilitare il Caps Lock basta lanciare il comando seguente:
xmodmap -e "clear Lock"

martedì 23 marzo 2010

PER UNA INFORMAZIONE PIU' LIBERA

MoosEsooM appoggia l'iniziativa Rai Per Una Notte

Contro ogni censura o bavaglio...ascolta Santoro e Travaglio[1] :)


[1]: e non solo loro, ci saranno anche: Roberto Benigni, Antonio Cornacchione, Teresa De Sio, Gillo Dorfles, Elio e le Storie Tese, Emilio Fede, Giovanni Floris, Milena Gabanelli, Sabina Guzzanti, Riccardo Iacona, Giulia Innocenzi, Gad Lerner, Daniele Luttazzi, Trio Medusa, Mario Monicelli, Morgan, Nicola Piovani, Norma Rangeri, Filippo Rossi, Michele Santoro, Barbara Serra, Vauro e Antonello Venditti.

venerdì 19 marzo 2010

Rimuovere le mailbox disconnesse in Exchange Server 2007

Exchange Server 2007 non permette di eliminare (semplicemente) le mailbox disconnesse. Per rimuovere una o piu' mailbox disconnesse possiamo seguire i passi seguenti:

Elencare tutte le mailbox disconnesse:

Get-MailboxStatistics | where-object { $_.DisconnectDate -ne $null } | Select DisplayName,MailboxGuid

Rimuovere una singola mailbox:
Remove-Mailbox -Database -StoreMailboxIdentity -confirm:$false

Rimuovere tutte le mailbox contemporaneamente:
$users = Get-MailboxStatistics | where-object { $_.DisconnectDate -ne $null } | Select DisplayName,MailboxGuid


Con il comando precedente abbiamo inserito nella variabile $users tutte le mailbox disconnesse, possiamo quindi lanciare il comando seguente per rimuoverle tutte:

$users | ForEach { Remove-Mailbox -Database "Mailbox Database" -StoreMailboxIdentity $_.MailboxGuid -confirm:$false }

giovedì 18 marzo 2010

Unire file PDF in uno solo da linea di comando.

gs -q -sPAPERSIZE=A4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...

Parametri da personalizzare:
PAPERSIZE = formato foglio: letter, a4, ...
OutputFile = nome file di destinazione
in1.pdf, in2.pdf, in3.pdf.... = elenco file da unire

Script per installare OpenErp su varie distribuzioni

http://openbookserp.com/install-openerp-in-single-step

Attenzione: la versione per Ubuntu puo' essere installata solo su versione 8.10 a causa di una incompatibilita' tra OpenErp e la versione 2.6 di Python installata sulle versioni successive.

La versione per Debian Lenny si installa senza intoppi.

Alcuni pacchetti mancanti possono generare gli errori seguenti, dopo gli errori ho aggiunto il comando per installare il relativo pacchetto mancante:

Error: python module psycopg2 (PostgreSQL module) is required
Error: python module mx.DateTime (date and time handling routines for Python) is required
sudo apt-get install python-psycopg2

Error: python module libxslt (libxslt python bindings) is required
sudo apt-get install python-libxslt1

Error: python module pychart (pychart module) is required
sudo apt-get install python-pychart

Error: python module pydot (pydot module) is required
sudo apt-get install python-pydot

Error: python-xml >= 0.8.4 (PyXML, XML Tools for python) is required.:
sudo apt-get install python-xml

OpenOffice Writer: usare stili personalizzati per sommario

Normalmente il sommario (o table of contents) viene costruito in automatico da Openoffice elencando tutte le voci caratterizzate da uno stile heading (titolo). i vari heading_1, heading_2 e cosi' via indicano il livello che la voce deve occupare all'interno del sommario:

es.:
Heading_1 : Sezione
Heading_2: Capitolo
Heading_3: Paragafo

e cosi' via, secondo il vostro gusto o l'organizzazione del testo.

Se pero' avete creato degli stili differenti per i vostri titoli, potete ugualmente utilizzarli automaticamente nel vostro sommario.

Dovete andare su Tools - Outline Numbering e selezionare il tab Numbering.
Ora potete associare i vari stili ai livelli desiderati. Confermare come sempre cliccando su OK.

sabato 13 marzo 2010

phpBB: perche' non posso aggiungere nuovi topic?

Non riuscite a trovare il link o il pulsante per aggiungere un topic ad un forum phpBB nonostante i vostri permessi siano corretti?:
Permessi forum
Puoi
aprire nuovi argomenti
Puoi rispondere negli argomenti
Puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Puoi inviare allegati

La soluzione potrebbe essere semplice, controllate se nella directory imageset dello stile corrente esiste la directory corrispondente alla lingua utilizzata:
it per l'italiano
en per l'inglese
...
e cosi' via.
Questa deve contenere le immagini dei pulsanti personalizzati nella lingua corrente.

phpBB: installare nuovi stili

Scaricare il file zippato del nuovo stile.

Decomprimerlo

Trasferire cartelle e file estratti nella cartella styles contenuta nella root del forum.

Accedere al pannello di amministrazione di phpBB e selezionare il tab STYLES / STILI:



Selezionare Styles / Stili nel menu di sinistra nella sezione STYLE MANAGEMENT / GESTIONE STILE:


Nella lista UNINSTALLED STYLES / STILI NON INSTALLATI si puo' vedere lo stile che abbiamo caricato poco fa. Per installarlo bisogna cliccare sul link INSTALL / INSTALLA:

Una volta installato, apparira' una schermata di opzioni da cui si puo' rendere il nuovo stile quello di default:

venerdì 12 marzo 2010

Zen Cart: errore creazione utente su forum phpBB

Se si e' scelto di integrare Zen Cart con il forum phpBB, in fase di creazione utente nel negozio, viene richiesto anche un nickname per il forum (la password e' la stessa impostata per il negozio).

Se al momento di confermare la creazione dell'utente si ottiene l'errore:
1054 Unknown column 'group_description' in 'field list'
in:
[INSERT INTO phpbb_groups (group_name, group_description, group_single_user, group_moderator) VALUES (0, 'Personal User', 1, 0)]

per risolvere bisogna editare il file:
.../includes/classes /class.phpbb.php

del negozio. Cercare la funzione:
phpbb_create_account

e sostituirla con il codice seguente:
function phpbb_create_account($nick, $password, $email_address) {
if ($this->phpBB['installed'] != true || !zen_not_null($password) || !zen_not_null($email_address) || !zen_not_null($nick)) return false;
if ($this->phpbb_check_for_duplicate_email($email_address) == 'already_exists') {
// $this->phpbb_change_email($old_email, $email_address);
} else {
$sql = "select max(user_id) as total from " . $this->phpBB['users_table'];
$phpbb_users = $this->db_phpbb->Execute($sql);
$user_id = ($phpbb_users->fields['total'] + 1);
$sql = "insert into " . $this->phpBB['users_table'] . "
(user_id, group_id, username, username_clean, user_password, user_email, user_regdate)
values
('" . (int)$user_id . "',2, '" . $nick . "', '" . $nick . "', '" . md5($password) . "', '" . $email_address . "', '" . time() ."')";
$this->db_phpbb->Execute($sql);
$sql = "update phpbb_config SET config_value = '{$user_id}' WHERE config_name = 'newest_user_id'";
$this->db_phpbb->Execute($sql);
$sql = "update phpbb_config SET config_value = '{$nick}' WHERE config_name = 'newest_username'";
$this->db_phpbb->Execute($sql);
$sql = "update phpbb_config SET config_value = config_value + 1 WHERE config_name = 'num_users'";
$this->db_phpbb->Execute($sql);


$sql = "INSERT INTO " . $this->phpBB['user_group_table'] . " (user_id, group_id, user_pending)
VALUES ($user_id, 2, 0)";
$this->db_phpbb->Execute($sql);
}
}

[*]: http://www.zen-cart.com/forum/showthread.php?t=105472
[*]: http://www.zen-cart.com/forum/showthread.php?t=68565&highlight=phpbb&page=5

phpBB: accesso alla console di amministrazione

Per accedere alla console di amministrazione bisogna:

1) loggarsi nel forum come utente amministratore
2) cliccare a fondo pagina sul link Pannello di Controllo Amministratore
3) riloggarsi di nuovo
4) cliccare su Vai al PCA

Lista della spesa di oggi


100g crudo
100g mortadella
sacchi rifiuti
sabbietta gatto
libro "Usi alternativi di un Blog"

:)

File di configurazione logwatch su debian lenny

/usr/share/logwatch/default.conf/logwatch.conf

giovedì 11 marzo 2010

Zen Cart: inserire una immagine di sfondo esterna alle colonne laterali

Bisogna agire sul file stylesheet.css:
body { margin: 0; font-family: verdana, arial, helvetica, sans-serif;
font-size: 62.5%; color: #000000; background-color: #ffffff; }

diventa:
body { margin: 0; font-family: verdana, arial, helvetica, sans-serif;
font-size: 62.5%; background-image: url(../images/body_bg.jpg); color: #000000; background-color: #ffffff; }

Bisogna quindi preparare l'immagine body_bg.jpg che vogliamo utilizzare.

Se poi desideriamo modificare la larghezza del corpo del sito in relazione a questi bordi esterni, bisogna fare un'altra modifica al file stylesheet.css:
#mainWrapper { background-color: #ffffff; text-align: left; width: 774px; vertical-align: top; /*border: 1px solid #aeaeae; */}

diventa:
#mainWrapper { background-color: #ffffff; text-align: left; width: 80%; vertical-align: top; /*border: 1px solid #aeaeae; */}

Modificare la percentuale per allargare/stringere il corpo del sito.

domenica 7 marzo 2010

zen cart: esperimento di link trasparente su immagine di background

<div id=mooseTrasp>
<?php echo '<a href=http://www.miolinkforse.com>'.zen_image(DIR_WS_TEMPLATE.'images/trasp.png').'</a>'; ?>
</div>

Con css:

#mooseTrasp { background-image: url(../images/dagrande.png); background-repeat: no-repeat; width:200px; height:108px; }

200x108 e' la dimensione di entrambe le immagini.

venerdì 5 marzo 2010

zen cart: aggiungere un link al banner testuale.

Per aggiungere un link al banner testuale (quello di fianco al logo, con default "Qui il tuo slogan!") bisogna modificare il file
/includes/languages/italian/MIO_TEMPLATE/header.php

cambiando
define('HEADER_SALES_TEXT', '<strong>Qui il tuo slogan!</strong>');

in
define('HEADER_SALES_TEXT', '<a href=http://www.suchesitovuoiandare.com><strong>Qui il tuo slogan!</strong></a>');

Aggiornare eventualmente gli altri header.php (per il template di default e/o per le altre lingue).

zen cart: sostituire la quantita' disponibile a magazzino con una immagine


Aggiornamento: aggiunta immagine con risultato parte opzionale.

Per sostiruire la quantita' disponibile a magazzino in scheda prodotti con una immagine dinamica (vedi immagine qui sopra) bisogna modificare il file tpl_product_info_display.php (direttamente il default o meglio la tua copia di override):

La linea
<?php echo (($flag_show_product_info_quantity == 1) ? '<li>' . $products_quantity . TEXT_PRODUCT_QUANTITY . '</li>' : '') . "\n"; ?>

deve diventare:
<?php echo (($flag_show_product_info_quantity == 1) ? '<li>' . TEXT_PRODUCT_QUANTITY . zen_image(DIR_WS_TEMPLATE.'images/'.$products_quantity.'.gif') . '</li>' : '') . "\n"; ?>

Bisogna preparare poi le immagini (0.gif, 1.gif, 2.gif,...) e metterle nella cartella images del proprio template:
/includes/templates/MIO_TEMPLATE/images

Opzionale:

Se poi si vuole eliminare la scritta
disponibilita in magazzino

Per inserirla direttamente nell'immagine della quantita', bisogna modificare il file:
/includes/languages/italian/MIO_TEMPPLATE/product_info.php

e modificare la riga:
define('TEXT_PRODUCT_QUANTITY', ' disponibilita in magazzino');

cosi':
define('TEXT_PRODUCT_QUANTITY', ' ');
Il risultato lo potete vedere nell'immagine seguente:



lunedì 1 marzo 2010

Schedulazione cron senza mail di notifica

Se avete un processo lanciato da crontab e vi siete stufati di ricevere ogni volta la mail di notifica contenente output ed errori del comando, dovete aggiungere alla fine della linea di crontab:
> /dev/null 2>&1

Quindi se la linea in crontab era, ad esempio:
* * * * * /usr/local/bin/mioscript.sh

diventera':
* * * * * /usr/local/bin/mioscript.sh > /dev/null 2>&1

domenica 21 febbraio 2010

xsane: error during cms conversion could not open scanner icm profile

Deselezionare l'opzione
preference / enable color management

sabato 13 febbraio 2010

OpenOffice Calc: switchare rapidamente tra riferimenti assoluti e relativi.

Se avete il riferimento ad una cella, ad esempio:
D4

premendo ripetutamente la sequenza Shift F4 otterrete di volta in volta:
$D$4
D$4
$D4

per poi tornare al punto di partenza con:
D4

giovedì 11 febbraio 2010

Perche' (in Italia) e' cosi' difficile gestire l'assistenza tecnica?


AGGIORNAMENTO: il referente Samsung presso Ingram Micro, che ringrazio pubblicamente per l'interessamento, mi ha comunicato che Samsung si scusa per quanto accaduto e mi inviera' un secondo toner a titolo di "riappacificazione"...per questa volta rimettiamo la ghigliottina in cantina :)


A me una ghigliottina!!!!
Certe societa' puntano all'eccellenza, certe societa' vogliono essere "best company" del loro settore. Una di queste societa' e' proprio Samsung (almeno a quanto dice Sang Chul Lee, Presidente di Samsung Electronics Italia , venuto in Italia con un chiaro obiettivo: fare diventare Samsung la “best company” nel mercato italiano dell’elettronica di consumo[1]).
Personalmente ho la casa e l'ufficio pieno di apparecchiature Samsung e non me ne posso assolutamente lamentare.
Ma un'azienda non e' fatta solo dei prodotti che commercializza, questi (e certamente puo' capitare) possono essere difettosi, non funzionare al 100% delle loro possibilita'. In questi casi una "best company" deve poter gestire la sostituzione o riparazione del prodott.

Purtroppo questo non si e' verificato in un'occasione:

Settembre 2009:
Acquisto un toner per la mia laser Samsung

Inizio Dicembre 2009:
Finito il toner precedente installo quello nuovo.
Le stampe presentano un difetto evidente, come se il rullo del toner non ruotasse liberamente.
Segnalo la cosa al servizio clienti Samsung.
Mi dicono di inviare la stampante per una verifica di funzionamento (anche se io sono certo che il problema sia nel toner).
Invio la stampante che torna alcuni giorni dopo: hanno verificato che funziona correttamente.

21 Dicembre 2009:
Come da accordi presi con il servizio clienti invio il toner guasto per la sostituzione.

Inizio Gennaio 2010:
Al ritorno dalla chiusura di fine anno telefono al servizio clienti e chiedo dove sia finito il toner che devo ricevere in sostituzione: gli risulta che devo ancora consegnare il mio che invece e' gia' arrivato da loro al piu' tardi il 22 dicembre 2009.
Meta' Gennaio 2010:
finalmente arriva il toner.....e' un modello errato, rifiuto la consegna e segnalo prontamente la cosa al servizio clienti.
Qualche giorno dopo mi chiamano da Samsung:

S(amsung): "perche' ha rifiutato la spedizione del toner?"
I(o): "semplicemente perche' era il modello sbagliato"
S: "Come puo' dirlo?"
I: "La confezione era molto piu' piccola della confezione dei toner acquistati precedentemente e le sigle erano differenti"
S: "in questo caso devo chiudere la sua segnalazione e lei deve chiamare il servizio clienti e farsene aprire una nuova"
I: "voi commettete un errore e io devo perdere tempo per sistemare le cose???"
S: "se non chiudiamo la segnalazione e non ne fa aprire un'altra non le possiamo spedire il toner giusto"
I: "Sigh..."

E cosi' chiamo il servizio clienti e chiedo di aprire una nuova segnalazione: l'operatore dice che non puo'.
Nei giorni seguenti chiamo piu' volte il servizio clienti prima implorandoli di dirmi a che punto stava la mia segnalazione (mai nessuno che l'abbia aperta anche se tutti mi dicevano che lo avrebbero fatto), poi innervosendomi un po' e poi chiedendo di parlare con un responsabile a cui porgere un reclamo.
"IMPOSSIBILE", mi dicono dal call center, "lei deve fare reclamo presso di noi" (ma allora perche' spesso mi hanno detto che non potevo arrabbiarmi con loro ma che avrei dovuto parlare con Samsung direttamente?).
Nel frattempo cerco di contattare direttamente Samsung ma e' impossibile: l'unico punto di accesso pare che sia il numero verde del call center.
Neanche i tentativi di comunicare con le alte sfere della multinazionale tramite conoscenze comuni piu' o meno dirette vanno a buon fine.
Decido di contattare il referente Samsung presso Ingram Micro.

Intanto siamo arrivati a Febbraio 2010:
Alla duecentesima telefonata al call center trovo un'operatrice gentile, educata e preparata che mi spiega che posso fare reclamo ufficiale e che nei prossimi giorni saro' ricontattato direttamente da Samsung che verifichera' il mio problema.
Nei giorni scorsi ricevo una telefonata da Samsung:

S: "noi le abbiamo spedito un toner ma lei l'ha rifiutato...perche'?"
I: "come ho spiegato 2000 volte al servizio clienti il toner era sbagliato, per un modello diverso di stampante"
S: "Ma allora l'ha aperto"
I: "no, visto che la scatola era nettamente piu' piccola di quelle per la mia stampante ho detto al corriere di riportarla indietro, inoltre i modelli di stampante elencati erano del tutto diversi dalla mia"
S: "Allora....in questo caso....se siete disposti (a cosa???? nda) avremmo un toner giusto e ve lo invieremo nei prossimi giorni"
I: "piu' che disposti siamo desiderosi di riceverlo"

11 Febbraio 2010:
Oggi, ad appena due mesi dalla segnalazione di guasto sul toner appena installato, ho finalmente ricevuto il toner in sostituzione. Questa volta la scatola e' di dimensioni giuste e sopra c'e' stampata la sigla della mia stampante :)

[1] fonte: http://www.samsung.com/it/aboutsamsung/management/presidentitaly.html

[RISOLTO] tastierino numerico bloccato

Il tastierino numerico del mio portatile Asus ha smesso di funzionare, per tornare alla normalita' e' stato sufficiente premere contemporaneamente i tasti CTRL, SHIFT e NUMLOCK.

Dopo una ricerca piu' approfondita ho scoperto che non si trattava di un vero guasto, anzi, il tastierino numerico era entrato (per chissa' quale motivo) in mouse cursor mode.

I tre tasti indicati passano di volta in volta da questa modalita' a quella normale, e viceversa.

domenica 7 febbraio 2010

Coerenza

Cosa ti puoi aspettare da una societa' (telecom) che demanda ad una sua consociata (tin.it=telecom italia net) la gestione delle sue reti, poi cede tin.it a Seat pagine gialle e utilizza Alice come nuova gestione delle proprie reti. Poi si ricompra tin.it, rompe le scatole ai poveretti che usavano l'adsl di tin.it (mai avuto un problema per anni) per fargli mettere una linea adsl Alice. Dopo aver loro disabilitata la vecchia adsl, comunica bellamente di non poter installare una adsl alice perche' in quella zona non esiste l'adsl (ma se me l'avete staccata due giorni fa...era l'unica di tutto il centro di Rimini????)

Ebbene oggi scopro che il mio server in ufficio non puo' piu' spedirmi le mail di segnalazione dei backup in quanto il router e' finito su un IP address filtrato in qualche blacklist.

Poco male, basta settare l'autenticazione sasl su postfix (trovate il come in QUESTO POST). Ma la cosa non funziona ancora.

Dopo mezz'ora persa a scoprire le magagne con il 191 ("Lei deve impostare il server SMTP di alice business, mail.191.biz") ho scoperto che questo server non ne vuole sapere di autenticarmi...mentre invece tutto funziona a meraviglia con il server SMTP di alice (casa?): out.alice.it

Vabbeh....

domenica 10 gennaio 2010

Generare un disco di ripristino con clonezilla

1) Creazione immagine

Scaricare l'immagine ISO di Clonezilla
Masterizzarla su CD
Inserirlo nel PC da clonare
Avviare il PC partendo da CD
Scrivere immagine su server o disco locale con nome NOMEIMMAGINE

2) generazione immagine ISO

Reboot del pc
montare la directory contenente l'immagine su /home/partimag
cd /home/partimag
/opt/drbl/sbin/ocs-iso -g it_IT.UTF-8 -t -k NONE -e "-g auto -b -c restoredisk NOMEIMMAGINE sda" NOMEIMMAGINE
Viene creato il file /home/partimag/NOMEIMMAGINE.iso che puo' essere masterizzato.

3) installazione / ripristino

Inserire il cd/dvd creato nel PC da installare/ripristinare
boot
ENTER su menu iniziale
y per confermare inizio ripristino
reboot

Riservare a WordPress una directory lasciando il vostro Blog nella Root

Molti vogliono usare WordPress per gestire la root del loro sito (es.: http://example.com) ma non vogliono che i file di WordPress risiedano sulla loro directory root. E' possibile quindi installare Wordpress in una sottodirectory della root ma facendo apparire il blog come se fosse installato nella root.

Il processo per spostare WordPress nella sua directory e' il seguente:

1. Create la nuova directory che conterra' i file di WordPress ( usiamo per esempio la directory /wordpress ):
Su un sistema Linux posizionatevi sulla directory root del vostro sito e lanciate i comandi seguenti:
mkdir wordpress
chown apache:apache wordpress

2. Andate nel pannello GENERALE di WordPress.
3. Nella casella Indirizzo WordPress (URL): inserite l'indirizzo della nuova posizione dei file di WordPress. Esempio http://example.com/wordpress
4. Nella casella Indirizzo del blog (URL): inserite l'indirizzo dell'URL della directory root. Esempio: http://example.com
5. Cliccate su Aggiorna Opzioni (Non vi preoccupate di eventuali messaggi di errore e non provate a visualizzare il vostro blog, probabilmente ne ricavereste solo un messaggio di file non trovato)
6. Spostate i file di WordPress nella nuova directory.
7. Copiate i file index.php e .htaccess dalla directory di WordPress alla directory root del vostro sito. Il file .htaccess e' invisibile, se state usando un client FTP, probabilmente dovrete configurarlo per mostrare i file invisibili. Se non state usando i permalinks, probabilmente non vete un file .htaccess.
8. Aprite il file index.php contenuto nella directory root con un editor di testo.
9. Modificate la linea:
require('./wp-blog-header.php');

come segue, usando il nome della directory in cui avete i file principali di Wordpress:
require('./wordpress/wp-blog-header.php');

salvate e uscite.
10. Loggatevi al nuovo indirizzo, dovrebbe essere qualcosa di simile a:
http://example.com/wordpress/wp-admin/
11. Se utilizzate i Permalink, andate nel pannello Permalink e aggiornate la struttura di Permalink. WordPress aggiornera' automaticamente il vostro file .htaccess se questo ha i permessi corretti. Se WordPress non puo' scrivere sul file .htaccess, mostrera' le nuove regole di rewrite che dovrete copiare manualmente nel file .htaccess (nella stessa directory che ospita il file index.php principale)

giovedì 7 gennaio 2010

Easy Tag: tabella di help per Fill Tag Scan

Strings associated with code:
Will fill the field:
%a
Artist
%b
Album
%c
Comment
%p
Composer
%r
Copyright
%e
Encoded by
%g
Genre
%i
None! (used to ignore a string)
%l
Number of tracks
%o
Original artist
%n
Track
%t
Title
%u
URL
%y
Year

mercoledì 6 gennaio 2010

Schermo nero uscendo da Virtual console

Sensazione bellissima, passeggiare per la strada e sentirsi dire: "io leggo il tuo blog, posso chiederti una cosa?" :) [*]

Il problema esposto e' il seguente: dopo essere passato sulla prima virtual console premendo CTRL-ALT-F1, non e' possibile tornare all'ambiente grafico con CTRL-ALT-F7 o con ALT-F7.

Non avendo personalmente questo problema posso dare due consigli per fare del buon vecchio troubleshooting:

1) provare a disabilitare gli effetti grafici (compiz)
2) provare a installare un kernel 2.6.32 (specialmente se si ha una scheda video Intel)

Avanti prodi lettori....se avete questo problema provate a seguire le due indicazioni, se invece l'avete risolto precedentemente, fateci sapere cosi' potremo dare la soluzione.

[*] L'alce e' notoriamente un animale schivo ma vanitoso..... 3:-)

Comodi strumenti per il debug di avahi: mdns-scan e avahi-browse

Ecco la definizione del comando mdns-scan nella sua man page:
mdns-scan - Scan for mDNS/DNS-SD services published on the local network
Per installarlo:
sudo apt-get install mdns-scan

Per verificare quali servizi vengono offerti da avahi sulla vostra rete basta lanciare il comando senza argomenti:
mdns-scan

Vedrete qualcosa del genere:
+ pc1 [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
+ Desktop remoto di utente su pc1._rfb._tcp.local
+ pc2 [xx:xx:xx:xx:xx:yy]._workstation._tcp.local
+ Nome Cognome's Music._daap._tcp.local
+ utente's remote desktop on srv1._rfb._tcp.local
+ srv1._daap._tcp.local
+ srv1 [xx:xx:xx:xx:xx:zz]._workstation._tcp.local
+ srv1._rsp._tcp.local
Browsing ... \

E qui si ferma lasciando attiva la scansione, per uscire al prompt dovete premere CTRL-C.
Ma vediamo di spiegare l'output del comando riga per riga:
+ pc1 [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
+ pc2 [xx:xx:xx:xx:xx:yy]._workstation._tcp.local
+ srv1 [xx:xx:xx:xx:xx:zz]._workstation._tcp.local

Le tre righe precedenti indicano che ci sono 3 workstation sulla rete (con avahi attivo)
+ Desktop remoto di utente su pc1._rfb._tcp.local
+ utente's remote desktop on srv1._rfb._tcp.local

Le due righe precedenti indicano che ci sono 2 desktop remoti disponibili sulla rete (pc1 e srv1)
+ Nome Cognome's Music._daap._tcp.local

La riga precedente indica che c'e' un utente (Nome Cognome) che sta condividendo la sua directory Music in protocollo daap (iTunes...in questo caso tramite rhythmbox)
+ srv1._daap._tcp.local

La riga precedente indica che c'e' una macchina (srv1) che sta condividendo la sua collezione di musica daap (iTunes...in questo caso tramite il demone mt-daapd)
+ srv1._rsp._tcp.local

La riga precedente indica...non lo so :) Un biscottino danese a chi mi sa dire cosa indica.

Passiamo ora al secondo comando: avahi-browse.
Per poterlo utilizzare dobbiamo installarlo con il comando:
sudo apt-get install avahi-utils

Mentre mdns-scan non aveva argomenti, avahi-browse ne ha diversi, quelli che ci interessano di piu' sono -a (visualizza tutti i servizi disponibili in rete) e -t (esci dopo la scansione).
Lanciando il comando:
avahi-browse -a

otteniamo un output simile a quello del comando precedente:
+ wlan0 IPv4 Nome Cognome's Music iTunes Audio Access local
+ wlan0 IPv4 srv1 iTunes Audio Access local
+ wlan0 IPv4 srv1 _rsp._tcp local
+ wlan0 IPv4 Desktop remoto di utente su pc1 VNC Remote Access local
+ wlan0 IPv4 utente's remote desktop on srv1 VNC Remote Access local
+ wlan0 IPv4 pc1 [xx:xx:xx:xx:xx:xx] Workstation local
+ wlan0 IPv4 srv1 [xx:xx:xx:xx:xx:zz] Workstation local
+ wlan0 IPv4 pc2 [xx:xx:xx:xx:xx:yy] Workstation local

Il programma sembra fermarsi ma in realta' continua la scansione, per uscire dovete premere CTRL-C. Se al contrario volete che esca da solo dopo aver visualizzato i servizi disponibili, dovete lanciarlo come segue:
avahi-browse -at

martedì 5 gennaio 2010

Moosesoom in Koreano


A quanto pare anche l'antico oriente e' interessato alla saggezza dell'alce.
Ho appena scoperto che all'indirizzo http://ko.mloovi.com/h/2fa1498c7fb8b2f25ad84ae27bdcebe9 (oppure potete guardare l'immagine qui sopra) potete trovare la versione koreana del nostro onorevole blog.

lunedì 4 gennaio 2010

Sata, periferiche e cavi


Giusto per chiarire una serie di dubbi che attanagliano un sacco di gente:
Entrambi i dischi rigidi SATA e SATA2 possono essere utilizzati su qualsiasi controller SATA. Se il controller SATA puo' gestire solo 150mb/s, un disco SATA2 ad esso collegato si comportera' come un disco SATA.

Un qualsiasi cavo SATA puo' essere utilizzato sia per dischi SATA che per dischi SATA2. Drive e cavi sono completamente intercambiabili.

Per quanto riguarda i cavi, sul mercato trovate cavi SATA, cavi SATA 150, cavi SATA 300, cavi SATA2: non lasciatevi ingannare, il cavo e' lo stesso....eventualmente alcuni cavi venduti come SATA2 o SATA 300 hanno un meccanismo a molla sul connettore per rendere piu' difficile un distacco accidentale del cavo.