Friday, 30 March 2012

RemoteApp and Missing Fonts

Your application has been installed on Windows Server 2008 R2 as a RemoteApp. Easy access, non cumbersome remote desktop window, (l)users happy, no compatibility problems.

- But hey: that report uses Arial Narrow, which is not present in 2008 R2. No problem: I'll just get the TTF from another machine and install it on the server.

- Mmm.. I'm sure I've installed the font, but the report is still defaulting to Arial.. Try restarting the application.. nope.

- Let me see: I'll try to access the application using normal remote desktop.. Uh.. but now it works. Let's check the remoteapp mode. No, still not working.

- Maybe there's some special setting for remoteapp fonts? Uh.. I've looked.. no special setting.

- A file permission issue? Don't be silly the user is the same for remote desktop and remote app.

- Googling the problem I've found a similar case where the only solution was a server reboot!. 

- That must be silly, the new font is already available as I've shown you using remote desktop..


- We're running out of options and time.. Would it be a problem to try and restart the server?

- Uh, no, let me phone the coworker back in the valley..

- Ok, server restarted. I doubt that it will do anything but let's try, you could always revert to remote desktop you know... Oh. It's working! How quaint!


 

Installare Visual Basic 6.0 su Windows 7 (a 64 bit) - Q&A

Q: Con alcuni componenti l'IDE di VB6 da errore di licenza!

A: Non è una domanda: comunque è un problema indipendente da Seven: cercare vbctrls.reg nel cd di installazione è applicarlo.

Q: Se compilo il mio programma su Seven, funziona. Su XP, 2000,2003 etc, non funziona, da 'Type Mismatch' o altri errori strani. Se prendo il sorgente e lo ricompilo su XP allora funziona da tutte le parti!! Che cavolo è? Si installa ma non compila bene!

A: Non esattamente. Su Seven 64 bit Service Pack 1 M$ ha cambiato alcuni ID delle type library ADO. I programmi compilati con type library presenti su altri SO funzionano dappertutto. Quelli con le nuove, solo su Seven 64 bit SP1. Non sono cambiati i CLSID - ovviamente - per cui i sorgenti ricompilano da una parte e dall'altra senza modifiche. Con l'OLE Viewer di VS 6.0 su XP aprendo una type library che esponga oggetti ADO compilata su Seven il tipo non viene riconosciuto ('Can't get..' nella definizione dell'interfaccia). E' un bug gustosissimo presente dall'uscita del SP1: solo da poco MS ha rilasciato un fix decente http://support.microsoft.com/kb/2640696 - che non si installa da solo con Windows update, va scaricato e installato. Leggere anche: http://connect.microsoft.com/VisualStudio/feedback/details/646313/ado-programs-no-longer-work-on-customer-computers-after-recompiled-on-a-windows-7-sp1-machine

Monday, 19 March 2012

Installare Visual Basic 6.0 su Windows 7 (a 64 bit)

I programmi compilati con VB6 non hanno problemi particolari su Windows 7, anche a 64 bit. Il problema è l'ambiente di sviluppo (che è ancora ampiamente usato, a 14 anni suonati dal suo primo rilascio - nel 1998 chi usava ancora compilatori del 1984?). Il sistema più 'sicuro' per sviluppare in VB6 su Windows  7 è una macchina virtuale con su XP SP3 e VB6. Tuttavia c'è la possibilità di installare VB6 anche sull'ultimo SO Microsoft: se funziona, è più pratico. Questa è una 'ricetta' compilata in base alle informazioni presenti sui segg. link e poi ampliate e corrette personalmente:

http://www.fortypoundhead.com/showcontent.asp?artid=20502

http://www.dennybiasiolli.com/?lang=en&sezione=news&tag=113

Sul mio sistema almeno, funzionano: Windows 7 Ultimate inglese con language pack italiano e vb6 professional italiano + msdn 98 + vb6 service pack 6 italiano. Includo anche informazioni relative ad altri componenti e tool usati spesso in queste situazioni. In realtà è un documento che ho creato per motivi di lavoro, ma non c'è ragione di non condividerlo in rete.           
 

Installazione VB6 + MSDN

 

·         Usare account amministrativo (meglio Administrator da riabilitare da Pannello Controllo-Gestione Computer- Utenti locali)
·         Disabilitare gli UAC
·         Creare un file vuoto con notepad o altro editor in C:\WINDOWS chiamato MSJAVA.DLL
·         copiare su una cartella locale il contenuto del cd di VB6 Pro
·         nei file del primo CD c'è una cartella setup, entrarci dentro
·         c'è un file vb9pro.stf (o vs98pro.stf o altro secondo la versione usata): copiarlo su due file, acmsetup.stf e acost.exe
·         copiare tutto il contenuto della cartella setup nella cartella padre
·         lanciare acmsetup.exe come amministratore
·         VB6 dovrebbe installarsi correttamente
·         SP6: scompattare il service pack in una cartella
·         c'è anche qui un file .stf, copiarlo su due file, acmsetup.stf e acost.exe
·         lanciare come amministratore acmsetup.exe
·         Il service pack dovrebbe installare correttamente: attenzione alla lingua che deve coincidere con quella di vb6
·         MSDN: copiare su una cartella entrambi i cd di MSDN (non dovrebbero sovrapporsi)
·         C'è una cartella setup, posizionarvicisi come nel caso di vb6: copiare l'unico file .stf (msdn98.stf) su acmsetup.stf
·         lanciare amcsetup.exe come amministratore, dovrebbe installarsi senza problemi
·         update sicurezza KB926857 : installa senza particolari problemi
·         eliminare il file vuoto MSJAVA.DLL dalla cartella C:\windows
·         Cercare il file VB98.EXE in C:\Program Files (x86)\Microsoft Visual Studio\VB98. Selezionare proprietà/compatibilità e scegliere Windows XP SP3

Add Ins


  • VB6 Mousewheel fix (vb6mousewheel.exe, fix rotellina mouse): installa senza particolari problemi (REGSVR32)
  • Linenums.dll (add.in per creazione numeri di linee ): installa senza particolari problemi (REGSVR32)


TrueDBGrid 7.0


Si installa normalmente.

Crystal Reports 8.5 + SP3


  • Copiare il CD su un cartella
  • Andare nelle proprietà del setup.exe e indicare compatibilità: Windows 2000
  • Installare normalmente (se non si indica la compatibilità da errore su un file mancante)
  • Copiare il setup del SP3 su una cartella
  • Andare nelle proprietà del setup.exe e indicare compatibilità: Windows 2000
  • Installare normalmente.
  • Cercare il file eseguibile dell'editor di report (CRW32.EXE), andare in proprietà e settare Windows 2000 come compatibilità (altrimenti ci sono problemi random in fase di salvataggio dei file .rpt)

Sunday, 12 February 2012

Vogliamo la Mensur?

"Vogliamo i colonnelli" di Monicelli è un film che rivedo sempre con piacere. La satira intelligente, anche se feroce, è sempre interessante. Del resto tutto sommato nei pasticci degli anni '70 i (neo) fascisti ebbero un ruolo secondo me, non esattamente primario - come del resto sottolinea sardonicamente lo stesso Monicelli.



Tuttavia una cosa non mi è mai tornata molto. Guardate questo spezzone (la parte interessante inizia dal primo minuto circa). Il "militare di eccezionale temperamento" Furas Gavino avrebbe frequentato, nel 1942, la 'Hitlerjugend Militarisches Akademie di Wittemburg', dove 'ebbe a cimentarsi in uno di quei famigerati duelli chiamati "Scheidenmeiss"'.

Wittemburg? Accademia militare della HJ? Ma soprattutto, 'Scheidenmeiss' è una parola tedesca?

In realtà le scene del duello sono prese dal mondo-movie 'Mondo di notte' del 1963:




Il famigerato duello è una c.d. Mensur duello tra appartenti a corporazioni studentesche. E' vero che molti nazisti (p.es. Himmler, Skorzeny, Kaltenbrunner) sfoggiavano vistose cicatrici sulle guance, ma queste risalivano ai loro anni di università. Le corporazioni studentesche durante il III reich furono progressivamente inglobate in una organizzazione studentesca nazionale: i duelli nella maggior parte dei casi, vietati.

Di sicuro non si svolgevano nelle accademie militari, ne la HJ accoglieva sardi: però il film è divertente lo stesso.

Sunday, 29 January 2012

Tutto sommato, Windows...

Sono in procinto di dare il benservito a un paio di server tirati su qualche anno fa. La maggior parte delle applicazioni che vi girano, sono state già migrate, più o meno bene, su una nuova piattaforma più aggiornata. Rimangono due applicazioni scritte in php 4, una che utilizza mysql, necessariamente la versione 3.23. L'altra, probabilmente per qualche strano vezzo del programmatore, sparito dalle scene da anni, utilizza un database Sql Server. Entrambe le applicazioni (per uso interno) girano su Apache 2.0/Linux.

I nuovi server, gestiti da altri e divisi rigidamente tra server Windows e server Linux non supportano le due applicazioni. Come minimo sarebbe necessario aggiornarle, modificarle per cambiare database, e/o release di php/mysql, e ritestarle. Roba che può richiedere giornate di lavoro, improponibile. L'unica soluzione che mi viene in mente è virtualizzare.

Non posso pare un P2V del vecchio server, che in realtà è un gruppo di server in cluster. Posso però creare una nuova macchina virtuale, metterci apache 2.0, php 4, mysql 3 e usare un sql server già presente sulla rete per gestire il database della seconda applicazione.


Parto da una CentOS 6 minimal install, per poi ricompilare dai sorgenti i vari pacchetti come era stato fatto del resto nell'installazione originale. Partire con un kernel e un s.o. aggiornato è importante per la sicurezza, se partissi con una vecchia CentOS poi dovrei comunque aggiornarla.

L'installazione di base della macchina virtuale con Vmware va liscia.

Mysql 3 non è più disponibile, ne in sorgente, ne in binario, sul sito ufficiale (mysql.com). Trovo però dei sorgenti su openlogi.com. Unzippo, ./configure... errori su errori. Mancano in realtà diverse librerie, che installo con yum. Il configure supera gli errori giù visti, poi si blocca indicando che gcc non è quello giusto. Cerco su google, problema già noto, però devo cambiare gcc. Sarà sensato forzare un vecchio compilatore? Meglio provare un installazione binaria. Il repository yum di CentOS ha solo mysql 5. Provo i binari di openlogic. Le istruzioni di installazione sono errate, comunque poi lo script safe_mysqld non riesce a far partire mysqld. Trovo dei vecchi rpm mysql-server. Anche per le relative dipendenze il repository centos non è di aiuto. Ma riesco a trovare ancora dei vecchi rpm che girano.
Alla fine della fiera riesco a far girare mysql, cancellando alcune righe che fanno 'nice' sul processo mysqld da safe_mysqld, combinando i file delle due release binarie.

Scarico apache 2.0, che tutto sommato da relativametne pochi problemi. Anche in questo caso devo scaricare vecchie librerie, in alcuni casi sotto forma di pacchetti di compatibilità per l'attuale versione di CentOS.

Per quanto riguada php trovo con relativa facilità i sorgenti della versione usata sul vecchio server, la 4.4.6. Però ricordo che la seconda applicazione usa un database Sql Server. Questo, anche se ovviamente l'inesistente documentazione della vecchia applicazione non lo dice, richiede anche la libreria freeTDS. In pratica un driver open source per Sql Server sotto linux. Su freeTDS.org sembra esserci solo l'ultimissima release, di molto succesiva all'applicazione, scritta nel 2005 o 2006.

Proviamo incrociando le dita. Non ho mai installato freeTDS. Trovo un articolo su linuxjournal sulle opzioni di configurazione. Del 2003, 9 anni fa. Un'altra opzione la trovo sulla documentazione del package mssql sul sito ufficiale php. Per convincere lo script ./configure ad arrivare in fondo devo scaricare qualche altro pacchetto tramite yum, tra cui unixODBC.

Passo a configurare la compilazione di php. L'opzione with-mssql richiede la cartella di installazione di freetds, ma non funziona, anche seguendo le istruzioni. Eppure freetds, usando l'utility tsql, funziona. Su google trovo un messaggio in un forum che dice come le ultime release di freetds non installino più alcuni file controllati dal configure del php. Provo a rimediare seguendo le indicazioni del post, ma continua a non funzionare. Esaminando meglio lo script capisco che due file .h di freetds (o era unixODBC) devono essere copiati in /usr/include e a quel punto il configure arriva in porto.

In realtà il phpinfo() del vecchio server è piuttosto ricco: gd, mcrypt, iconv, mime_magic, pcre, imap, openssl. Riesco a trovare le librerie giuste per compilare tutto, a parte imap e openssl. Pare che ci sia la soluzione anche per l'ultimo errore, ma non credo che le due applicazioni usino imap.. Si sta facendo un po' tardi, del resto.

Il server è pronto: non rimane che spostare il  database mysql (quello sql server si ripristina in un attimo). Uhm, lo script mysqldump da errore. Faccio, anche se non è molto ortodosso, un backup binario direttametne delle tabelle mysql 3.23 e riesco a ripristinare il database. Ancora un'oretta per capire come sono state installate e configurate le due applicazioni per replicare sulla nuova VM.

Evviva, funziona tutto. Provo a riavviare il server. Riparte tutto, a parte mysqld. Lo script di avvio funziona tranquillamente da shell, ma non da init.d o da rc.local. Dopo un (bel) po' di tempo giocando con le opzioni di loggin noto un errore Can't create interrupt-thread (error 13, errno: 13). Un altro post su un forum (non è che posso mettermi a fare il debug di mysqld, specie alle sei del pomeriggio) mi parla di un problema con selinux. Bingo, aggiungo un setenforce 0 a rc.local e funziona tutto.

Whew. Applicazioni spostate. Ho una history di uh.. seicento righe ed è passata in pratica una giornata di lavoro. I love Linux...

A la Repubblica non capiscono una mazza...

http://trovacinema.repubblica.it/multimedia/curiosita/dopo-30-anni-tornano-i-monty-python-con-un-film-farsa/31346464/1/1

Aarrrgh....

http://www.nme.com/filmandtv/news/monty-python-stars-reunite-for-new-movie/258392

Ah, vabbe.