Coolforest.net

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, novembre 12 2008

Compte-rendu de l'eZ Publish Developer Day in Paris, ce 7 novembre à Paris

eZVoici un compte rendu détaillé de l'eZ Publish Developer Day qui s'est déroulé ce 7 novembre à Paris :

  • Une matinée réservée aux partenaires d'eZ Systems ;
  • Une après-midi consacrée à la communauté des développeurs.

Le tout organisé à La Cantine, le bar parisien cheap et branchouille ouvert par le Silicon Sentier et la Région Ile de France

Commentaires bienvenus !

Lire la suite...

vendredi, octobre 31 2008

Trucs utiles et erreurs courantes sous eZ publish 4.x

Je note au fil de l'eau les bons trucs et les erreurs courantes avec eZ Publish 4.x

Lire la suite...

dimanche, avril 20 2008

eZ Developer Day, ce 17 avril 2008 à Paris

Voici un compte rendu du (demi-) Developer Day organisé par eZ Systems Western Europe à Paris, dans les locaux de Sun France, avenue d'Iena. La demi-journée conviait une cinquantaine de développeurs, pour ce rendez-vous organisé en marge du Partner Meeting, qui se tenait le lendemain dans les locaux d'Apple France.

Lire la suite...

mercredi, avril 9 2008

Display a Tag Cloud with eZ Publish 4.x

Here is a home made, "quick and dirty" extension that allows you to (finally!) display a simple tag cloud in eZ Publish 4.x

This tagcloud solution is mainly based on the ezwebin extension shared by eZ Systems

The archive may be unzipped under GNU/Linux with a single command-line :

tar xjvf archive.tar.bz2

or under MS Windows using 7zip

Use it easily ! :

{eztagcloud( hash( 'parent_node_id', 2 ))}

Download it here : simpletagcloud.tar.bz2

Feedbacks and contributions welcome.

mardi, février 5 2008

Leçon Inaugurale

Le 17 janvier 2008, le Collège de France a offert la leçon inaugurale de Gérard Berry, premier informaticien reçu dans cette enceinte de réputation internationale. Les "leçons inaugurales" sont un exercice très intéressant pour les chercheurs : présenter les choses les plus pointues au "grand public averti", avec les mots les plus simples... La leçon inaugurale de Gérard Berry a pour sujet "la révolution informatique" : pourquoi le numérique est un changement radical qui bouscule toutes les formes de notre pensée, de nos actions, de l'industrie à la communication.... et y compris la conception de la science.

La vidéo de la Leçon Inaugurale, en ligne :
http://www.college-de-france.fr/def...

suivie du Cours n°1 : Les algorithmes :
http://www.college-de-france.fr/def...

(merci à Hervé Lecrosnier, prof à la fac de Caen, pour le lien)

mardi, décembre 18 2007

Quelques news et rappels, vite fait.

Une chouette nouvelle est tombée ce matin dans ma boite aux lettres : la naissance d'une PLANETE PHP francophone. "Chic alors". J'ai reçu ça dans la newsletter de Nexen.net, que je lis quasi religieusement. Hop, j'ajoute le fil RSS qui-va-bien dans mon Netvibes, tout content, et je commence ma journée de travail. Puis j'y reviens ce soir. Et là je m'aperçois avec effroi que je fais partie des blogs sélectionné par l'AFUP pour constituer cette planete. Merde alors, c't'incroyable !

Lire la suite...

jeudi, décembre 13 2007

Faire un ORDER BY sur un champ SQL Server de type NTEXT

Le message par défaut lors d'une tentative d'ORDER BY sur un champ de type NTEXT sous SQL Server est : "Les types de données text, ntext et image ne peuvent pas être comparés ou classés, sauf lors de l'utilisation de l'opérateur LIKE ou IS NULL."

La solution pour trier un champ de type NTEXT : le convertir à la volée en NVARCHAR .

SELECT T.*  FROM T_MATABLE T
ORDER BY CONVERT(nvarchar,T.monChampNTEXT) ASC

Notes

mercredi, novembre 28 2007

Subversion sur Ubuntu

Un petit mémo sur les tutos en ligne

Lire la suite...

vendredi, novembre 16 2007

ASP.NET Forums

Un petit état de l'art des applications web de forum sur plateforme ASP.NET

Lire la suite...

mercredi, novembre 7 2007

Systèmes d'information : Générique Vs Spécifique

Une petite réflexion perso qui vaut ce qu'elle vaut

Lire la suite...

mardi, novembre 6 2007

Conférence eZ Partners + eZ Developer Day

Voici les notes que j’ai pris lors de la journée organisée par eZ Systems : Conférence eZ Partners + eZ Developer Day "Volume 2" Cf. l'annonce sur le site

Lire la suite...

lundi, octobre 8 2007

Problème de charset dans un fichier .ASPX / .ASCX déployé avec VS 2005 Web Deployment Projects

Certains caractères spéciaux sautent lors du déploiement d'un site avec VS 2005 Web Deployment Projects.

C'est notamment valable dans des UserControls .ascx inclus dans des page ASP.NET .aspx, et lorsque ces docuements utilisent des jeu de caractères diférents : Celui de l'.ascx n'est pas explicitement indiqué mais celui de l'.aspx est normalement indiqué dans

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Pour corriger ça, il faut ouvrir chaque page .aspx / .ascx en faisant un File > Advanced Save Options et choisir le bon charset (par exemple UNICODE (UTF-8 with signature) )

dimanche, octobre 7 2007

Avertissement sur strtotime() à l'installation d'eZ Publish 4.0.0alpha

Durant de l'installation de eZ Publish 4.0.0alpha1 Sur un serveur LAMP fraichement installé (sur une Ubuntu Feisty par exemple), ce message peut apparaitre :

Strict Standards: strtotime() function.strtotime : It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /var/www/ez/lib/ezutils/classes/ezdebug.php on line 879

Pour éviter que ce message d'avertissement s'affiche, il suffit d'indiquer une heure de référence dans le fichier de configuration /etc/php5/apache2/php.ini :

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
date.timezone = CET

Cet attribut est en général commenté dans une installation récente de PHP5. CET est l'heure normale d'Europe centrale.

Terminer en redémarrant le serveur Apache2 :

sudo apache2 -k restart

lundi, octobre 1 2007

Strip HTML Tags & Text

private void nettoyer_HTML(DataTable dt)
    {
        int iColCount = dt.Columns.Count;
        foreach (DataRow dr in dt.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(dr[i]))
                {
                    dr[i] = Regex.Replace(dr[i].ToString(), @"<(.|\n)*?>", string.Empty);
                    dr[i] = HttpUtility.HtmlDecode(dr[i].ToString());                   
                }
            }
        }
    }

J'ai eu besoin de ça pour exporter des données infestées d'HTML (via FCKEditor) dans un fichier CSV.

Sources : Vandamme & MSDN

mardi, août 21 2007

HTML 5

Lu dans le post "Comment HTML 5 peut-il être utilisé aujourd’hui ?"

Quand est-ce que HTML 5 sera terminé ? Quels sont les délais prévus ?

Le tout est de savoir à quelle vitesse les différents navigateurs l’implémenteront. Le groupe de travail du W3C pour HTML 5 indique qu’une recommandation pour ce langage sera disponible pour 2010, mais je ne pense pas qu’il soit réaliste de penser qu’à cette date les navigateurs l’auront implémenté totalement et correctement. Un délai de 15 ans me semble plus réaliste, mais cela ne veut pas dire pour autant que vous avez besoin d’attendre 15 ans pour utiliser HTML 5.

mercredi, août 15 2007

L'informatique pour les rigoureux (et les bizarres)

Un post pour signaler deux billets récents qui parlent, chacun dans leur contexte, de la discipline et du bizarre en informatique.

Le premier billet, intitulié "Discipline make strong developpers" est de Jeff Atwood, et présente en des termes assez fermes comment, de son point de vue, la discipline est la qualité essentielle pour être un bon développeur.

Le point de vue de Jeff Atwood est assez classique : il parle de la nécessité de l'ordre, et vante les mérites de celui qui rangent parfaitement ses affaires sur son bureau (réel), et son desktop (virtuel, sur le PC). Une grande entreprise française (j'ai oublié son nom) encourage régulièrement ses employés à en faire autant le vendredi soir avant de partir en weekend. Plusieurs conseils du même type expliquent par A + B qu'un type qui range son bureau est forcément plus performant et mieux estimé qu'un gars dont les bureaux virtuels et réels sont toujours encombrés de mille trucs.

L'ordre est une discipline, mais ce n'est pas la seule. Jeff parle aussi de la nécessité de la rigueur en informatique, par exemple dans l'utilisation des outils comme un gestionnaire de version, et du respect (ou de l'obéissance) des conventions imposées par le travail en équipe.

Ces propos ne mettent donc pas directement en avant des compétences particulières (capacités de réflexion logique et d'extrapolation,...) mais simplement des vertus, ce qui fait du discours sur la discipline que tient Jeff Atwood est un discours essentiellement moral. Les réactions à son article reprennent en générale toutes ce même type de discours.

Pour contrebalancer son propos, on pourrait relire un vieil article - toujours célèbre : "La cathédrale et le Bazar" de Eric S. Raymond. De mémoire, cet article de référence explique que l'organisation rigoureuse et logique d'un projet informatique n'est pas la seule voie, et n'est peut-être même pas la meilleure.

Le second billet traite des vertus du bizarre selon Jaron Lanier, pionnier de la réalité virtuelle. "Les vertus du bizarre" ne sont pas forcément le contraire de la rigueur (on peut être très rigoureusement bizarre !), mais elle s'opposent certainement à l'ordre des conventions. Pour lui, les vertus du bizarre visent à dépasser le caractère prédictible des raisonnements et conclusions de la logique mathématique ou du raisonnement informatique, pour atteindre des pistes nouvelles, en s'inspirant des phénomènes et des idées dites bizarres. Mais Lanier, cité ici par Francis Pisani, ne définit pas vraiment le bizarre, et c'est dommage (et bizarre).

samedi, juillet 21 2007

Excel et les formats de date récupérés avec C# .NET

Dans une classe servant à lire des fichiers Excel, on utilise souvent la méthode :

Excel._WorkSheet.get_Rang(Object cell1 Object cell2)

provenant des API de Excel pour récupérer un tableau des valeurs des cellules se trouvant dans une plage entre deux cellules de début et de fin. Dans la classe gérant l'API d'Excel, la méthode correspond souvent à ceci :

public string[] Excel_GetRange(string range)
{
    Excel.Range workingRangeCells =
    this._excelWorksheet.get_Range(range, Type.Missing);
    workingRangeCells.Select();
    System.Array array =
    (System.Array)workingRangeCells.Cells.Value2;
    string[] arrayS = this.ConvertToStringArray(array);
    return arrayS;
}

Lorsqu'on récupère la valeur d'une cellule au format date, elle est quelques fois dans un format standard peu éloquent, du genre "39326" pour une date "01/09/2007". En fait c'est la cellule d'Excel qui est au format Date, mais la valeur stockée n'est pas une date mais un entier. Cet entier est un nombre de jours : le nombre de jour entre le 30/12/1899 et la date récupérée dans Excel. Une première solution consiste à ré-écrire la méthode GetRange(), comme proposé ici. Une autre méthode consiste à faire faire à .NET le calcul rapide de la date réelle, en utilisant DateTime.AddDays();.

// Dans une classe de traitement lisant les valeurs d'Excel :
//datevalueFromExcel est la string récupérée depuis Excel via
DateTime dt = new DateTime(1899, 12, 30).AddDays(
    Convert.ToDouble(datevalueFromExcel));
dispo_date = dt.ToShortDateString();

Hop !

vendredi, juillet 20 2007

C# & Regex : Matcher une date

Valide les dates de type

31/12/2099|||1/1/1900|||10/12/2003

Ne valident pas les dates de type :

05/11/3000|||11/13/2003|||32/04/2030

Bien sûr, le mécanisme convient aussi pour tout langage utilisant les expressions régulières.

// Source du pattern :
// Carlos R. L. Rodrigues chez Regexlib.com
string myRegex =  "(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))\x2F(((0[1-9])|"
+ "(1[0-2]))|([1-9]))\x2F(([0-9]{2})|(((19)|([2]([0]{1})))"
+ "([0-9]{2}))))$)";
Regex pattern = new Regex(myRegex);
if (pattern.IsMatch(myString))
{
   DateTime myDate = Convert.ToDateTime(myString);
}

mardi, juillet 17 2007

PhpMyObject v. 0.06 (GPL)

Nicolas BOITEUX vient de publier un premier tutoriel sur http://pmo.developpez.com/, un Object-Relationnal Mapping tout récent, sous licence GPLv3 développé en PHP.

Le rôle de PMO est de permettre aux développeurs PHP de travailler mieux, plus rapidement en orienté objet. Chaque ligne provenant d'un résultat SQL est découpé en autant d'objets qu'il y a de tables dans la requête. Chaque valeur d'une colonne correspond à un attribut de l'objet, chaque nom de colonne correspond à un nom d'attribut. Ex pour une table utilisateur avec une colonne login, PMO va créer pour chaque ligne, un objet utilisateur avec un attribut login.

lundi, juillet 16 2007

"We remove the magic_quotes feature from PHP (~ 6)"

Magic_quotes disparait de PHP 6 .

La conclusion d'un article clair et synthétique de Damien sur PHP France proposait déjà de ne plus utiliser magic_quotes() :

Pour résumer, les magic quotes ont été créées pour les débutants, et font de PHP un des languages les moins sensibles à l'injection SQL. Néanmoins, une fois que vous comprenez bien leur fonctionnement, il est préférable de les désactiver et de protéger vos données vous même à l'aide des fonctions d'échappement de votre SGBD. C'est plus efficace et plus portable !

Dans un document au titre explicite ("Pourquoi ne pas utiliser les guillemets magiques?"), le site de PHP version FR redit la même chose, de manière plus ramassée :

Portabilité : Cette directive peut être activée ou désactivée suivant les serveurs et cela affecte grandement la portabilité. Utilisez get_magic_quotes_gpc() pour vérifier s'ils sont actifs ou pas, et adaptez votre application. Performances : Comme ce n'est pas toutes les données qui sont finalement placées dans une base, il y a un coût en vitesse pour protéger toutes ces données. Le simple appel des fonctions de protections en fonction des besoins est plus efficace (addslashes()). Même si php.ini-dist active ces options par défaut, php.ini-recommended les désactive. Cette recommendation est surtout faite pour des raisons de vitesse. Peu pratique : Comme toutes les données n'ont pas forcément besoin de protection, il est souvent désagréable de voir des données protégées là où ça ne sert à rien. Par exemple, lorsque vous envoyez par mail un formulaire, et que vous voyez des anti-slashs parsemer le message. Pour corriger cela, il faut faire un usage fréquent de stripslashes().

- page 1 de 10