Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

JQuery SearchIt, inserire un plugin nel repository pubblico di JQuery

Dopo aver sviluppato un piccolo modulo javascript per una sezione del portale universitario della mia azienda, visto che c'ero ho deciso di farne un plugin JQuery e di postarlo sul loro repository ufficiale per i plugin.

Il plugin si chiama JQuery SearchIt ed è raggiungibile a questo indirizzo.

Lo scopo del plugin è quello di rendere ricercabile qualsiasi listbox (select). Naturalmente esistono già vari plugin che fanno la stessa cosa (tra cui lo spettacolare Select2), ma non mi dispiaceva prendere maggiore confidenza con un paio di conosciuti strumenti per sviluppatori disponibili su internet, a loro volta utilizzati da plugins ...

DOS Batch: impostare una variabile con un valore letto da un file

Personalmente ritengo che sia difficile che i linguaggi di programmazione batch di Windows possano mai raggiungere la flessibilità e la potenza dei linguaggi shell di Linux (vedi BASH)

Tuttavia anche il prompt dei comandi di Windows riserva delle sorprese, anche se ci limitiamo agli intramontabili comandi batch, senza andare a scomodare i vari Powershell, JScript e VBScript.

Mettiamo ad esempio di voler scrivere un gruppo di file batch, ognuno dei quali condivide con gli altri delle variabili di configurazione.

Come faccio ad usare le stesse variabili di configurazione in differenti file .bat?

La prima possibilità è quella di copiare brutalmente ...

Il futuro di Play Framework

Mettiamo dobbiate avviare un nuovo progetto e vi chiedate se sia possibile incrementare produttività e fluidità del codice usando un nuovo framework di sviluppo.

Una buona scelta, se non lo usate già, può essere uno dei tanti framework che implementano il pattern architetturale MVC.

Ruby On Rails è uno dei framework più vecchi e consolidati, mentre è possibile rivolgersi verso Django per sfruttare la flessibilità di Python, Microsoft MVC per la potenza dei linguaggi e delle librerie .net, o Grails per la diffusione di Java (ce ne sono molti altri, non li cito tutti).

Play Framework è uno dei framework ...

Generazione batch di thumbnails da file video in Windows con FFmpeg

Esistono vari modi per estrarre fotogrammi (o thumbnails dai video in modo automatico, ad esempio Thumbnail me.

Tuttavia se vogliamo fare tutto da script, o integrare la procedura nel codice di una nostra applicazione, poche possono rivaleggiare con la grezza potenza del più famoso software open-source per l'elaborazione dei video, FFmpeg.

FFmpeg

FFmpeg è disponibile per vari sistemi operativi, la versione per Windows è scaricabile a questo indirizzo: http://ffmpeg.zeranoe.com/builds/

Una volta scaricato, possiamo generare una thumbnail di tutti i video presenti in una cartellina del proprio hard disk con una semplice linea di comando digitata dal ...

Windows 7: perchè il processo System è in ascolto sulla porta 80?

Durante una installazione di Apache su una macchina Windows 7 64bit mi è successo di non riuscire ad avviare il servizio apache perchè un altro processo di era assestato sulla porta 80. 

Lanciando dal prompt dei comandi un

netstat -ao

mi aspettavo il solito skype, ma con mia sorpresa il risultato indicava che il processo sulla porta 80 era l'omnipresente System.

Sguinzaglio il fido google, il quale mi suggerisce questo link:

http://www.cameroncooke.com/2009/01/25/windows-7-uses-port-80-and-makes-it-impossible-to-install-apache-solution/

Riassumendo, questi sono i possibili servizi che si possono attestare sulla porta 80 (e che potrebbero risultare associati al processo ...

Conversioni tra System.Xml e System.Xml.Linq

Riporto qui una utile classe per la conversione di elementi System.Xml a System.Xml.Linq e viceversa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Xml;
using System.Xml.Linq;

/// <summary>
/// Provides extension methods for simple conversion between System.Xml and System.Xml.Linq classes.
/// </summary>
public static class XmlLinqConversionExtensions {

    /// <summary>  
    /// Converts an XDocument to ...

Indice di un elemento in una query LINQ

Mettiamo che abbia bisogno di usare l'indice dell'elemento corrente di una query LINQ.

Ad esempio, partendo dalla lista:

String[] pezzi = {"pedone", "torre", "cavallo", "alfiere"};

voglio ottenere una unica stringa che contiene:

Pezzo numero 1:pedone, Pezzo numero 2: torre, etc.

Il metodo Select ha un overload con il parametro "index" che può essere utilizzato per conoscere l'indice dell'elemento corrente. In altre parole è possibile fare:

pezzi.Select((item, index) => "Pezzo numero " + index.ToString() + ": " + item)

Per ottenere esattamente l'output desiderato possiamo usare il metodo Join() della classe String:

Console.WriteLine(
    String.Join(", ", 
        pezzi.Select((item, index ...

Visual Studio 2008 - errore System Runtime InteropServices COMException durante il caricamento di un progetto ASP.NET con Vista/Windows 7

L'errore completo è:

“System.Runtime.InteropServices.COMException”

A giudicare da una veloce ricerca su Google, questo sembra essere un problema piuttosto comune sugli ultimi sistemi operativi Microsoft. L'articolo con la soluzione più completa l'ho trovata sul blog di Hanan Schwartzberg:

Lions Den

Il problema è che il progetto web che si sta caricando contiene una virtual directory che non esiste. Oppure, se esiste, Visual Studio non ha sufficienti diritti per verificarne l'esistenza, o non sono installate le API necessarie.

Per risolvere il problema occorre eseguire questi passi:

  • Eseguire Microsoft Visual Studio 2008 come amministratore
  • Aprire il ...

Errore 29506 installando Sql Server Management Studio Express 2005 su Vista/Windows7 64 bit

Mi è capitato oggi di installare Sql Server Management Studio Express 2005 su una macchina Windows 7 64Bit. Dopo qualche secondo ho ottenuto l'errore:

The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 29506.

Dovevo essere proprio stanco per non capire subito la natura del problema, visto la chiara spiegazione di Microsoft riguardo la natura dell'errore, e così mi sono messo a cercare su Google. Un paio di click e ho trovato la soluzione.

Picchiandomi la mano sulla fronte al grido di "ma certo, è ...

Accesso ad una proprietà di un dataitem parent all'interno di controlli databound annidati

Mettiamo di avere due controlli databound annidati come in questo esempio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<asp:Repeater Id="rptOuter" runat="server">
  <ItemTemplate>
      <asp:Repeater Id="rptInner" runat="server">
        <ItemTemplate>
          <tr>
            <td><%# Container.DataItem %></td>
          </tr>
        </ItemTemplate>
      </asp:Repeater>
  </ItemTemplate>
</asp:Repeater>

E una lista costruita in questo modo:

1
2
3
4
5
6
7
public class TestOuter
{
    public String Prefix { get; set; };
    List<String> TestInner { get; set; };
}

List<TestOuter> listDataSource = CostruisciListaTestOuter()

Se vogliamo visualizzare gerarchicamente il contenuto della lista listDataSource nel Repeater esterno rptOuter, e per ogni suo elemento la lista TestInner ...