Di seguito gli interventi pubblicati in questa sezione, in ordine cronologico.
Oggi ho finalmente sdoganato il mio primo progetto dove mi sono messo ad usare massicciamente gli stylesheet con CSS. Devo ammettere che non ho ancora capito bene ogni possibilità offerta da CSS, ma sono sulla buona strada, cioè ottenere un layout grafico piacevole e gradevole, risparmiare tempo rispetto alle tabelle, ma soprattutto assicurarmi che la medesima pagina venga visualizzata nella stessa maniera sui vari browser.
E si, perché ho visto che i miei CSS vengono un pelo diversi se si vedono con Safari, sia su Windows che su MacOS X, e invece Internet Explorer 7 su Windows.
Intanto metto qui a disposizione una guida completa al layout coi CSS, chissà mai che un giorno mi decida di leggerla anch'io una volta per tutte:
http://glish.com/css/
Buona lettura!
Oggi l'aiuto di Ricky di aspitalia.com è stato determinante per risolvere un problema che mi ha afflitto per qualche ora senza trovare soluzione.
La questione verteva sul come fare a specificare una query in un database Access MDB in modo che un TableAdapter definito dentro un DataSet in Visual Studio .NET 2005 fosse in grado di andare a ravanare una query specificata attraverso uno o più parametri.
Ora se il database sottostante è basato su Microsoft SQL Server 2000 o 2005, la sintassi è la seguente:
SELECT * FROM myTable WHERE (myField = @ParamValue)
Se invece il database sottostante è un volgarissimo database MDB di Access, la sintassi è ahimé diversa:
SELECT * FROM myTable WHERE (myField = ?)
La "non-definizione" esplicita del nome del parametro nel secondo caso impone dei vincoli più rigorosi sul passaggio di parametri nella relativa collezione, perché l'ordine diviene pertanto fondamentale, per evitare errori di cattivo accoppiamento tra le wild-char ? e i valori dei parametri definiti nella collezione.
Un bug che mi capita abbastanza spesso nello sviluppare siti per i clienti è quello di predisporre nell'implementazione della logica di accesso al database - Microsoft SQL Server 2005 per l'esattezza - la maniera corretta di aggiungere record, semplicemente perché il wizard di Visual Studio .NET 2005 non fa lui in automatico una cosa che mi aspetterei quasi implicitamente:
INSERT INTO users (login, nickname, name, surname, email, iduserprofile, idcirc) VALUES (@login,@nickname,@name,@surname,@email,@iduserprofile,@idcirc)
SELECT SCOPE_IDENTITY()
E non solo. E' necessario specificare che tale query produce un risultato di tipo scalare, allo scopo di ottenere da SQL Server 2005 l'indice del record che è stato appena aggiunto:
ExecuteMode = Scalar
proprietà anch'essa configurabile dall'editor visuale XSD degli adapter del progetto web.
Stasera ho deciso di sperimentare qualcosa che avevo in mente già da tempo e cioè mettermi a generare dinamicamente immagini usando ASP.NET, per vari scopi. La prima cosa che ho deciso di fare è stata la progressione dei km che faccio con la bici dall'inizio dell'anno. La cosa, una volta che si conosce un po' il funzionamento di .NET e nella fattispecie l'oggetto Graphics, risulta piuttosto facile e potente:
<%@ Page Language="VB" ContentType="image/jpeg" %>
<% @ Import NameSpace="System.Drawing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
' definisco una nuova bitmap con dimensioni
Dim bmp As New Bitmap(450, 60)
' creo un'immagine a partire dalla bitmap
Dim img As Graphics = Graphics.FromImage(bmp)
' miglioriamo la qualita' del device
img.InterpolationMode = _
Drawing2D.InterpolationMode.HighQualityBicubic
img.SmoothingMode = _
Drawing2D.SmoothingMode.HighQuality
img.PixelOffsetMode = _
Drawing2D.PixelOffsetMode.HighQuality
img.CompositingQuality = _
Drawing2D.CompositingQuality.HighQuality
' qui disegniamo tutto quello che c'e' da disegnare...
' invio in output via Response
bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()
End Sub
</script>
E' un problema che tuttora non ho ancora risolto, ma vista la quantità di materiale che sono riuscito a trovare sul web, ho pensato di prendere nota e segnarmelo qua come appunto:
Come non detto... ho finalmente risolto! Le soluzioni suggerite nella pagina di Le Roy funzionano e quello a non funzionare era un problema mio, dovuto al recupero errato del nome utente dopo aver effettuato il login nell'appsita pagina.
Sono andato avanti almeno un paio di mesi con la comparsa dell'errore "Non è possibile utilizzare una sezione registrata come allowDefinition='MachineToApplication' al di sotto del livello di applicazione. L'errore può essere dovuto alla presenza di una directory virtuale non configurata come applicazione in IIS" con un progetto per un cliente.
Alla fine mi sono deciso di risolverlo ed ho cercato un po' sul web per cercare di capire di che cosa potesse trattarsi. L'equivalente errore sputato fuori da Visual Studio .NET in lingua inglese presenta questa stringa: "section registered as allowDefinition='MachineToApplication' beyond application level", per cui basta cercare parte di questa stringa su Google per trovare forum e forum di gente che ha segnalato il medesimo problema.
La cosa sembrerebbe essere riconducibile al fatto che si è usato IIS per la definizione di una web application e poi un'altra web application è stata incapsulata manualmente come cartella dentro la cartella parente della prima web application regolarmente creata con IIS o il wizard di Visual Studio .NET.
In realtà basta la presenza di un file web.config in giro per qualche cartella per creare scompiglio. Basterà rimuovere tale file o quantomeno rinominarlo per far scomparire l'errore da Visual Studio .NET all'atto della partenza del sito.
Una delle cose che mi scordo molto spesso è come fare ad attivare delle sottoaccount FTP all'interno di un dominio configurato con PLesk. Questa caratteristica, offerta appunto da PLesk, consente di offrire ai propri clienti la possibilità di "donare" account FTP per l'interscambio di grossi documenti di dati attraverso appunto il protocollo FTP.
Per procedere all'attivazione di una subaccount FTP con PLesk è necessario eseguire i seguenti passi:
- entrare con PLesk nel cliente a cui è associato il dominio a cui si vuole aggiungere una o più subaccount FTP
- scegliere la voce Limits del cliente
- assegnare un valore, ad esempio 5 o 10, alla voce Maximum number of FTP subaccounts
- andare ora al dominio a cui si vuole aggiungere la subaccount FTP
- andare alla voce Domain User
- spuntare la voce FTP subaccount management, se non è ancora stato attivato
- andare ora su Limits del dominio
- assegnare un valore, minore o uguale a sopra, alla voce Maximum number of FTP subaccounts
- andare ora su FTP Management
- cliccare sulla voce Add New FTP Subaccount
- introdurre i dati relativi alla subaccount come richiesto
- confermare l'introduzione dei dati cliccando il bottone OK
|