Si vous avez besoin d'un logiciel pour étendre les capacités de votre logiciel de CAO (Revit, AutoCAD, Inventor, Vault, Navisworks, Solidworks, SketchUp...), vous êtes au bon endroit. Depuis 2008, je suis spécialisé dans le développement de ce type de programme.

Contactez moi au (+33) 6.46.40.75.66 ou par E-mail (maxence.delannoy@wiip.fr) pour un devis gratuit.

Charger un document Xml encodé en ANSI

J'ai pas trouvé mieux :

Dim doc As XmlDocument = New XmlDocument()
Dim sr As StreamReader = New StreamReader(path, ASCIIEncoding.Default)
Dim xr As XmlReader = XmlReader.Create(sr)
doc.Load(xr)
' Traitement
xr.Close()
sr.Close()

Etiquettes:

Aligner à droite le texte d'une ListBox

Il faut passer la propriété DrawMode de la ListBox à OwnerDrawFixed et ajouter le code suivant dans l'événement OnDraw :

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    e.DrawFocusRectangle();
 
    ListBox lb = sender as ListBox;    
 
    // Calcule les dimensions du texte
    SizeF stringSize = new SizeF();
    stringSize = e.Graphics.MeasureString(lb.Items[e.Index].ToString(), e.Font);
 
    e.Graphics.DrawString(
        lb.Items[e.Index].ToString(), 
        e.Font, 
        new SolidBrush(e.ForeColor), 
        new PointF(e.Bounds.Right - stringSize.Width, e.Bounds.Y)
    );            
}

Si ça peut faire gagner 5 minutes à quelqu'un...

Etiquettes:

Visual Studio - Protéger une chaine de connexion

L'approche recommandée pour stocker une chaine de connexion à une base de données est d'utiliser le fichier de configuration du programme (app.config). Mais cela entraine un problème au niveau de la sécurité des données. En effet, le mot de passe utilisé pour la connexion à la base se retrouve en clair dans le fichier XML.

Pour pallier à ce problème, il est possible de chiffrer la section connectionStrings en suivant les instructions détaillées sur cet article de MSDN.

Ecrire une condition en PHP

Lorsque je parcoure le code du Zend Framework, je vois souvent des conditions écrites sous cette forme :

<?php
if (== $argc) {
  
// ...
}
?>

Etiquettes:

1 Go d'espace de stockage avec Google Docs

Jusqu'ici on ne pouvait stocker sur Google Documents que certains types de fichiers (.doc, .xls, .pdf...). Google vient d'annoncer qu'on pourra bientôt uploader n'importe quel type de document et qu'on disposera gratuitement d'un espace de 1 Go. Le Go supplémentaire sera facturé 0.25 $ et on pourra lancer une recherche sur les documents stockés dans cet espace.

Etiquettes:

Tester la génération d'un PDF avec Zend_Test et Zend_Pdf

Une petite astuce pour tester un contrôleur qui génère du PDF. Pour s'assurer que c'est bien du PDF qui est envoyé, on peut utiliser Zend_Pdf qui est capable de charger un document existant :

<?php
$this
->dispatch('/moncontrolleur/1/pdf');
$this->assertResponseCode(200);
$this->assertHeaderContains('Content-type''application/pdf');
$pdf Zend_Pdf::parse($this->getResponse()->getBody());
$this->assertEquals('MonProgramme'$pdf->properties['Creator']);
?>

Si le PDF n'est pas correct, Zend_Pdf lancera une exception : Zend_Pdf_Exception: File is not a PDF. On peut également vérifier les propriétés du PDF et le nombre de pages. Par contre, on ne peut pas accéder au contenu du PDF pour vérifier le texte qu'il contient.

Arrondis avec MySQL et PHP

Ah les arrondis ! On pourrait penser que c'est très simple mais comme souvent le diable se cache dans les détails.

Prenons par exemple la méthode round de PHP. Elle nous propose 4 types d'arrondi :

<?php
// Arrondi vers l'infini (méthode par défaut: PHP_ROUND_HALF_UP)
echo round(1.2442) . "\n"// Affiche 1.24
echo round(1.2462) . "\n"// Affiche 1.25
echo round(1.2452) . "\n"// Affiche 1.25
echo round(-1.2452) . "\n"// Affiche -1.25

// Arrondi vers zéro
echo round(1.2452PHP_ROUND_HALF_DOWN) . "\n"// Affiche 1.24
echo round(-1.2452PHP_ROUND_HALF_DOWN) . "\n"// Affiche -1.24

// Arrondi bancaire (arrondi au nombre pair le plus proche)
echo round(1.2452PHP_ROUND_HALF_EVEN) . "\n"// Affiche 1.24
echo round(1.2352PHP_ROUND_HALF_EVEN) . "\n"// Affiche 1.24

// Arrondi au nombre impair le plus proche
echo round(1.2452PHP_ROUND_HALF_ODD) . "\n"// Affiche 1.25
echo round(1.2352PHP_ROUND_HALF_ODD) . "\n"// Affiche 1.23
?>

Etiquettes:

Bonne année 2010

Formatage de nombres avec Google Closure

Google Closure dispose d'une classe bien pratique nommée goog.i18n.NumberFormat qui permet de formater des nombres.

Formatage de monnaie

goog.require("goog.i18n.NumberFormat");
goog.i18n.NumberFormatSymbols = goog.i18n.NumberFormatSymbols_fr_FR;
var fmt = new goog.i18n.NumberFormat(
  goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN
);
alert(fmt.format(1243.567)); // Affiche 1 243,56 €

Subtilité de Zend_Date

Je viens de tomber sur un méchant bogue dans mon application. Il est du à une subtilité dans les formats ISO proposés par Zend_Date.

Le problème se situe au niveau des années. Zend_Date propose deux formats différents : yyyy et YYYY. Le premier, celui avec les y en minuscules fournit le résultat auquel on peut s'attendre, alors que le deuxième renvoie l'année dans lequel se situe la semaine !

Pages

Subscribe to WIIP RSS