Per far si che l’output di una pagina jsp (in realtà di una qualsiasi pagina dinamica) venga interpretato dal browser come un file da aprire o scaricare  bisogna impostare oltre al mime type della pagina anche l’header “Content-Disposition” nella response.

Esempio csv
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment;filename=\"export.csv\";");

Improvvisamente sul mio sistema XP SP3 il RRAS ha smesso di funzionare dando il seguente errore:

The Routing and Remote Access service terminated with service-specific error 340 (0x154).

La ricerca su intenet mi ha fornito la seguente soluzione che sebbene vecchia di ben 5 anni funziona ancora.

Con Notepad creare un file di patch del registro (es fix.reg) con il seguente contenuto:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{6BC096C4-0CE6-11D1-BAAE-00C04FC2E20D}]
"AppID"="{A5CEB593-CCC3-486B-AB91-9C5C5ED4C9E1}"
@="IAS OLE-DB Data Store"

[HKEY_CLASSES_ROOT\CLSID\{6BC096C4-0CE6-11D1-BAAE-00C04FC2E20D}\InprocServer32]
"ThreadingModel"="Free"
@="C:\\WINDOWS\\System32\\iasrecst.dll"

[HKEY_CLASSES_ROOT\CLSID\{6BC09693-0CE6-11D1-BAAE-00C04FC2E20D}]
"AppID"="{A5CEB593-CCC3-486B-AB91-9C5C5ED4C9E1}"
@="IAS Netsh Jet Helper"

[HKEY_CLASSES_ROOT\CLSID\{6BC09693-0CE6-11D1-BAAE-00C04FC2E20D}\InprocServer32]
"ThreadingModel"="Free"
@="C:\\WINDOWS\\System32\\iasrecst.dll"

[HKEY_CLASSES_ROOT\CLSID\{6BC09692-0CE6-11D1-BAAE-00C04FC2E20D}]
"AppID"="{A5CEB593-CCC3-486B-AB91-9C5C5ED4C9E1}"
@="IAS Attribute Dictionary"

[HKEY_CLASSES_ROOT\CLSID\{6BC09692-0CE6-11D1-BAAE-00C04FC2E20D}\InprocServer32]
"ThreadingModel"="Free"
@="C:\\WINDOWS\\System32\\iasrecst.dll"

Applicare la patch.

Quindi eseguire il seguente comando:

regsvr32 C:\WINDOWS\System32\iasrecst.dll

A questo punto il servizio è ripartito correttamente.

Sincronizzare direttamente un Nokia N73 con Thunderbird su Windows sembra una cosa impossibile…

La soluzione migliore, che ho trovato in tutti gli articoli che ho letto online, è quella  di utilizzare un servizio internet SyncML come ponte e di usare la connessione dati del telefono per la sincronizzazione. Il problema di questa soluzione è che la connessione non è gratuita.

A questo punto ho pensato: ma se il servizio SyncML fosse installato in locale, basterebbe connettere il telefono via bluetooth…

Ma è possibile fare una connessione TCP/IP over BT  da N73?

Fortunatamente si, utilizzando GnuBox. Ci sono molte guide a riguardo; una è consultabile qui.

In generale si crea una rete tra PC e telefono con un proprio set di indirizzi IP; ad esempio 10.0.0.1 e 10.0.0.2.

Una volta attivato e testato il collegamento BT tra l’N73 e il PC, si può passare al server SyncML.

Come server SyncML ho scelto  Funambol.

L’installazione di Funambol e il suo utilizzo di base sono molto semplici: basta guardare la “Funambol Installation and Configuration Guide”.

Seguendo i passi della guida si deve stare attenti ad utilizzare in “ServerSettings->EngineServer URI” l’indirizzo IP che il PC utilizza nel collegamento BT con il telefono.  Nel nostro esempio http://10.0.0.1:8080/funambol/ds

Una volta installato Funambol si deve installare il plugin per Thunderbird e configurarlo come da guida.

Una volta che tutto è installato e configurato, fare partire il server e provare a fare una sincronizzazione tra TB e Funambol.

In alcuni casi questa potrebbe fallire, in quanto Funambol si aspetta che il client lo chiami con http://10.0.0.1:8080/funambol/ds, ma questa rete è disponibile solo con il telefono collegato. Abbiamo due opzioni:

  • collegare il telefono con GnuBox
  • modificare l’ip in funambol con uno valido, ricordandosi di risistemarlo una volta fatto il test (in questo caso serve comunque che ci sia una rete abilitata).

Una volta che  la sincronizzazione tra TB e Funambol è ok si può andare sul telefono.

Strumenti->Sincronizzazione->Opzioni->Nuovo Profil0

Impostare le applicazioni:

  • Rubrica (db remoto “card”)
  • Agenda (db remoto “event”)

Impostare Connessione:

  • Versione del Server: 1.2
  • ID server: funambol
  • Tipo trasp. dati: Internet
  • Punto di accesso: Bt
  • Indirizzo host: http://10.0.0.1:8080/funambol/ds
  • Porta: 8080
  • Nome utente: xxxxx
  • Password: yyyyyy
  • Consenti rich. sincr.: si
  • Accetta rich. sincr.: no
  • Autenticaz. rete: no

Salvare e provare a fare la sincronizzazione. Con un pizzico di fortuna riuscirete a sincronizzare l’N73 con Thunderbird.

Quando si editano le impostazioni del punto d’accesso BT sull’N73 bisogna ripetere la procedura di configurazione di Gnubox.

Quindi:

  1. “Opzioni” -> “Install” -> “Create records”.
  2. “Opzioni” -> “Exit”.
  3. “Opzioni” -> “Install” -> “set RAS login script”.
  4. “Opzioni” -> “2box Bluetooth” -> “Serial port”.

Modificando le impostazioni di una VM,  o quando la si clona, è facile che si generi un nuovo mac address per la scheda di rete virtuale.

Se questo succede il device eth0 “sparisce”, come si vede con:

ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Per riconfigurare la il device si può provare a seguire la procedura (verificato con Ubuntu 7.04 server).

ifconfig -a
eth1      Link encap:Ethernet  HWaddr aa:aa:aa:aa:aa:aa
          inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.xxx  Mask:255.255.255.0
          inet6 addr: yyyy::yyyy:yyyy:yyyy:yyyy/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16101 errors:0 dropped:0 overruns:0 frame:0
          TX packets:695 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1422082 (1.3 MiB)  TX bytes:240811 (235.1 KiB)
          Interrupt:11 Base address:0xec00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

la nuova scheda ethernet dovrebbe apparire come eth1.

Annotarsi il mac address: aa:aa:aa:aa:aa:aa

cd /etc/
sudo vim iftab

modificare il mac address esistente per eth0 con il quello annotato sopra.

shutdown -r now

Al restart  la rete dovrebbe essere configurata correttamante come da:

ifconfig -a
eth0      Link encap:Ethernet  HWaddr aa:aa:aa:aa:aa:aa
          inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.xxx  Mask:255.255.255.0
          inet6 addr: yyyy::yyyy:yyyy:yyyy:yyyy/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16101 errors:0 dropped:0 overruns:0 frame:0
          TX packets:695 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1422082 (1.3 MiB)  TX bytes:240811 (235.1 KiB)
          Interrupt:11 Base address:0xec00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Purtroppo l’installazione del server Ubuntu 8.04 in una VM di Virtual PC 2007 non è esente da bachi e difficoltà.

Ecco i passi che ho eseguito dopo una ricerca in Rete sull’argomento.

  • Fare il boot dal CD (ISO) scegliere il linguaggio
  • Premere F3 per la tastiera italiana (se ne state usando una)
  • Posizionarsi su “Install Ubuntu Server” (la prima voce)
  • Premere F6 e aggiungere peima dei “–” finali la i seguenti parametri “noapic nolapic vga=791″ (attenzione agli spazi)
  • Premere invio per iniziare l’installazione

Proseguire normalmente le fasi dell’installazione fino alla schermata in cui dice che l’installazione è terminata. Invece di premere “Continue” premere “Go Back”. Nel menu che appare scegliere la voce che permette di lanciare una shell.

Eseguire i seguenti comandi:

  • chroot /target /bin/bash
  • aptitude install linux-generic
  • aptitude remove linux-server linux-image-server linux-image-2.6.24-16-server linux-ubuntu-modules-2.6.24-16-server
  • exit
  • nano /target/boot/grub/menu.lst
  • Trovare la linea “title Ubuntu 8.04, kernel 2.6.24-18-generic” e aggiungere alla fine i parametri di boot “vga=771 noreplace-paravirt”
  • Premere Ctrl+X per uscire dall’editor (Yes per salvare).
  • chroot /target /bin/bash
  • update-grub
  • exit

Per tornare al menu digitare “exit”, e quindi selezionare “Finish the installation” e poi “Continue”.
Al boot premere Esc  quando parte Grub  e selezionare la “generic boot option” che abbiamo modificato sopra.


La versione inglese da cui ho tratto questo post è disponibile qui.

Per installare MySql con PhpMyAdmin su Ubuntu 7.04 installare nell’ordine i seguenti pacchetti:

sudo apt-get install mysql-server
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install php5-mysql
sudo apt-get install phpmyadmin

A questo punto phpMyAdmin è disponibile alla url http://localhost/phpmyadmin/

Per cambiare lo schema di una tabella in realtà la si deve trasferire nello schema destinazione attraverso il comando ALTER SCHEMA.

L’esempio seguente (preso dalla documentazione Microsoft) modifica lo schema HumanResources trasferendoci la tabella Address dallo schema Person.

USE AdventureWorks;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO

Per rinominare una tabella si può utilizzare la procedura sp_rename:

EXEC sp_rename 'NomeTabella', 'Nuovo_NomeTabella'

NomeTabella deve comprendere l’eventuale schema, mentre Nuovo_NomeTabella no.

Per rinominare una colona:

EXEC sp_rename 'NomeTabella.[NomeColonna]', 'NomeTabella.[Nuovo_NomeColonna]', 'COLUMN'

Questa query visualizza tutti i trigger, con il loro stato, di un singolo db.

SELECT T.[name] as TableName, TR.[Name] as TriggerName, CASE WHEN 1=OBJECTPROPERTY(TR.[id], 'ExecIsTriggerDisabled')THEN 'Disabled' ELSE 'Enabled' END Status

FROM sysobjects T INNER JOIN sysobjects TR on t.[ID] = TR.parent_obj

WHERE (T.xtype = 'U' or T.XType = 'V') AND (TR.xtype = 'TR') ORDER BY T.[name], TR.[name] 

Pagina Successiva »