Christian's profileBlog d'un Développeur TY...BlogLists Tools Help
March 02

VMware Server : 10 longueurs de ... retard !

Ca fait depuis plusieurs années que je suis un aficionado de VMware sous Ubuntu. Rendez-vous compte, la virtualisation, c'est formidable... pas besoin de redémarrer sa machine pour exécuter des applications qui ne fonctionnent pas sous votre environnement de base. Alors, quand VMware Server 2.0 est apparu, j'étais encore plus content. En revanche, utiliser Ubuntu Karmic (9.10), c'est assez téméraire vu le nombre de problèmes que j'ai dû surmonter, par rapport à une 8.10 mais en utilisation conjointe avec VMware 2, je ne pouvais pas faire pire, après reflexion !

Même si l'interface web de VMware 2.0 est sympathique, ce logiciel plante souvent pour des raisons inexpliquées. La console n'est plus accessible, obligé de reinstaller... bref, on fini par en avoir marre. Toutefois, j'ai été patient... J'ai surfé pour trouver les réponses à mes questions sur de multiples forums, j'ai même patché les sources de VMware Server pour que ça fonctionne sous la Karmic.

Aujourd'hui, suite à un énième problème, j'ai décidé de passer sous VirtualBox; non pas la version communautaire (OSE: Open Source Edition) mais la version PUEL avec licence. C'est un choix motivé par le support USB sur la machine émulée.

Le réèl challenge (si on peut l'appeler ainsi), ne fut pas d'installer VirtualBox. Il y a en effet plein de tutoriels dont en voici un : Ubuntu et VirtualBox. Non, il fallait récupérer la machine virtuelle, sous forme de fichier vmdk. Je n'avais qu'un seul fichier vmdk, ce qui réduit le nombre d'étapes.

> cd repertoire_ou_se_situe_ma_vmware

Il faut convertir le fichier vmdk en .bin
> qemu-img convert WinXP.vmdk WinXP.bin

Faire appel ensuite à VBoxManage pour convertir le .bin en fichier exploitable par VirtualBox
> VBoxManage convertdd WinXP.bin WinXP.vdi

Simple, non ?
Ma machine virtuelle s'est arrétée au début, jusqu'à ce que je coche "IO APIC" dans la configuration. Activez le support de l'USB ensuite et installez les compléments de VirtualBox sur la machine émulée (un peu à la manière de VMware Tools.

Au final, tout est mieux. C'est plus rapide, pas de souçi avec la souris USB mais surtout, on accède désormais à l'accélération 2D/3D et encore mieux, au son ! La machine virtuelle réagit au survol de la souris et pas besoin de cliquer à l'intérieur et d'appuyer sur la touche CTRL pour en ressortir. Bref, VirtualBox, c'est que des avantages !

J'espère que je vous aurais donné envie de passer également sous VirtualBox si ce n'est pas déjà fait.

[Edit] : la partie réseau est moins simple cependant...

Ressources :
- télécharger VirtualBox
- Installation VirtualBox sous Ubuntu
- Migrer de VMware à VirtualBox (convertir vmdk vers vdi)
February 22

TYPO3 4.3 : les conditions en TS Config

Un petit message sur les conditions dans la partie TS Config d'un site.
[globalVar = TSFE:id = xx] ne fonctionnera pas car ce type de condition est directement lié au front office.
Dans ce cas là, utilisez plutôt treeLevel.

Un petit coup d'oeil à la documentation peut être utile ;)

Documentation TYPO3 sur les conditions
February 04

Comparaison de galeries sous TYPO3

Un site que je viens de découvrir et qui permet de visualiser des exemples de galeries sous TYPO3. Très pratique, non ?

Comparaison de galeries sous TYPO3
January 22

VMware 2.0 : You do not have permissions to login to the server

J'utilise VMware 2.0 sous Ubuntu pour avoir à ma disposition une instance de Windows lorsque je dois par exemple vérifier l'affichage des sites que je développe, sous IE7, IE8, Firefox, ... En effet, sous Ubuntu, la seule alternative viable est pour ma part Firefox et Opera (je commence à utiliser Chromium depuis peu).

Le hic, c'est qu'à chaque fois que l'on met à jour le kernel de GNU/Linux, il faut recompiler VMware. Il n'y a pas vraiment de compte root accessible sous Ubuntu et on utilise sudo pour accéder à des tâches administratives. Pour se connecter à VMware, on n'utilise pas le compte root, ça serait trop risqué et de toute façon, rien ne le justifie.
Le processus d'installation de VMware vous demande à un moment donné d'indiquer le compte de l'administrateur de VMware et c'est à ce moment que vous pouvez indiquer votre compte/login.
En revanche, dans le cas d'une upgrade de kernel, il arrive souvent que l'installation de VMware (surtout sous Karmic) oublie de vous poser la question.

Si vous indiquez votre login et mot de passe, vous obtiendrez certainement l'erreur suivante :
You do not have permissions to login to the server

Charmant non ?

Pour corriger le problème, modifiez le fichier /etc/vmware/hostd/authorization.xml

sudo gedit /etc/vmware/hostd/authorization.xml

Remplacez <ACEDataUser>root</ACEDataUser> par <ACEDataUser>mon_login</ACEDataUser>

Exemple :

<ConfigRoot>
  <ACEData id="11">
    <ACEDataEntity>ha-folder-root</ACEDataEntity>
    <ACEDataId>11</ACEDataId>
    <ACEDataIsGroup>false</ACEDataIsGroup>
    <ACEDataPropagate>true</ACEDataPropagate>
    <ACEDataRoleId>-1</ACEDataRoleId>
    <ACEDataUser>christian</ACEDataUser>
  </ACEData>
</ConfigRoot>

Redémarrez ensuite VMware :

sudo invoke-rc.d vmware restart

Et voilà :)
December 31

Follow me on Twitter

Suivez désormais mes aventures sur Twitter ! Ouais !
Twitter
December 30

Présentation illustrée de TYPO3 4.3

  Je viens de rédiger un article dédié à TYPO3 4.3, un mois après sa sortie officielle en version finale. L'article est illustré par de nombreuses captures d'écran de cette version mais aussi de la version 4.2 à titre de comparaison. J'ai essayé de résumer les nouveautés et améliorations les plus importantes pour l'utilisateur moyen ou bien même le développeur mais sans aller trop loin car ce n'était pas non plus le but, surtout pour une présentation. Certaines nouveautés comme par exemple les conditions en TS dans le TSConfig ont été écartées (infime à mon avis) mais je le complèterai quand il sera sur typo3journal.info.  Et oui, j'ai préféré le mettre en premier sur mon site de freelance, business oblige et par manque de temps également. Vous pouvez le consulter à cette adresse : présentation de TYPO3 4.3. Toute critique est la bienvenue !
Bonne lecture :)
December 08

Problème d'entêtes des mails sous PHP 5.3.0/5.3.1 pour certains serveurs de mail

J'ai eu récemment un problème avec les emails envoyés depuis ma plateforme sous TYPO3.
Peu importe la méthode utilisée, avec ou sans classe t3lib_htmlmail, les entêtes étaient retravaillées sous certains serveurs mail. En fait, le from, message-id, la date apparaissaient dans le corp du mail.

Exemple :

Return-Path: <web@email.net>
Delivery-Date: Tue, 08 Dec 2009 12:10:35 +0100
Received: from vaio (###################)
    by mx.kundenserver.de (node=mxeu3) with ESMTP (Nemesis)
    id 0M5tuf-1O2dbG1acT-00yQyo for email@email.fr; Tue, 08 Dec 2009 12:10:35 +0100
Received: by vaio (Postfix, from userid 1001)
    id 94C4662A; Tue,  8 Dec 2009 12:10:35 +0100 (CET)
To: email@email.fr
Subject: Test HTML email
X-PHP-Originating-Script: 0:class.tx_extension_pi2.php
Message-Id: <0M5tuf-1O2dbG1acT-00yQyo@mx.kundenserver.de>
Date: Tue, 08 Dec 2009 12:10:35 +0100
X-PhishingScore:   0
    tests=
X-SpamScore: 0.1
    tests= RDNS_DYNAMIC
Envelope-To: email@email.fr

MIME-Version: 1.0
From: email2@email.fr
Content-Type: text/html; charset="iso-8859-1"
Message-Id: <20091208111035.94C4662A@vaio>
Date: Tue,  8 Dec 2009 12:10:35 +0100 (CET)

X-Priority: 1 (Higuest)
X-MSMail-Priority: High
Importance: High
Return-Path: email2@email.fr

<html><body><p>This is <span style="color: red;">HTML</span> email.</p></body></html>

Après pas mal d'investigations, il s'est avéré que le problème était lié à l'incorporation automatique de la ligne "X-PHP-Originating-Script".
Sous certains serveurs, elle pose problème et on retrouve un saut de ligne dans les entêtes, ce qui fait qu'une partie des entêtes peuvent se retrouver dans le corps du mail. De plus, elle n'apporte strictement rien du tout !

C'est ce problème Bug mail.add_x_header qui m'a aiguillé.

La solution a été de désactivé l'ajout de la ligne "X-PHP-Originating-Script" en basculant mail.add_x_header de On à Off. Depuis, plus de problème !

Ressource : http://php.net/manual/fr/mail.configuration.php
November 20

Connexion automatique d'un utilisateur après enregistrement

Je remets un code bien pratique pour authentifier un utilisateur après qu'il s'est enregistré sur un site. Je n'utilise pas felogin mais plutôt une extension maison.

Il suffit juste d'indiquer le login et le mot de passe de l'utilisateur en paramètre.

   /**
     * Log a user in, just after the registration process
     * for instance
     *
     * @param    [type]        $array $formData: username and password
     * @return    [type]        ...
     */
    public function authenticateUser($params) {

        $loginData=array(
            'uname' => $params['username'], //username
            'uident'=> $params['password'], //password
            'status' =>'login'
        );

        $GLOBALS['TSFE']->fe_user->checkPid = 0; //do not use a particular pid
        $info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
        $user = $GLOBALS['TSFE']->fe_user->fetchUserRecord(
        $info['db_user'],$loginData['uname']
          );

        $ok = $GLOBALS['TSFE']->fe_user->compareUident($user,$loginData);

        if($ok) {
              //login successfull
              $GLOBALS['TSFE']->fe_user->createUserSession($user);
        } else {
              //login failed
        }

    }


Source : sk-typo3
November 02

IE6 boycott

Pas besoin d'une extension, clairement, pour arriver à ce genre de résultat ... m'enfin, le message est tout de même radical. On n'aime pas IE6 mais ce n'est pas non plus une raison pour empêcher un utilisateur de surfer sur votre site ou bien lui interdire certaines fonctionnalités.




Extension TYPO3 de boycott


October 08

Formidable : une demande de confirmation avec majix

Majix est la librairie javascript qui accompagne l'API Formidable. Lorsque l'on travaille avec des formulaire et que les informations envoyées sont importantes, il est souhaitable de renforcer l'importance de l'envoi des données avec une box en javascript qui s'ouvre (un overlay) lors du clic sur le submit. On présente à l'internaute un message et soit il confirme et le formulaire est envoyé, soit il refuse, la box se ferme et il retourne au formulaire ou d'où il vient tout simplement.

Pour ce faire, la manipulation est aisée avec Formidable. On place forcément le marqueur dans le template html, dans mon cas {button_submit}

<renderlet:BUTTON name="button_submit" label="LLL:EXT:wd_servicerh/pi2/locallang.xml:form.label_validate_moderation" class="submit">
            <onclick runat="client">
                <userobj>
                    <php><![CDATA[

    # Contenu de l'alerte qui sera affichée dans la boite
    $this->aORenderlets["mymodal"]->aChilds["mybox"]->setHtml(
        "Attention, les modifications apportées seront envoyées pour validation. <br /><b>Vous ne pourrez plus modifier momentanément  vos informations.</b><br />
        Assurez-vous que les champs soient bien complétés."
    );

    # On retourne la boite. On fait appel ici à un renderlet de type "MODALBOX". On le nomme dans cet exemple mymodal

    return $this->aORenderlets["mymodal"]->majixShowBox();

                    ]]></php>
                </userobj>
            </onclick>
        </renderlet:BUTTON>

Voici ensuite la modalbox qui fait appel à un template par défaut. Nous concernant, on opére de la même façon que dans un xml classique, il suffit juste d'appeler différents renderlets (contenus dans childs).

<renderlet:MODALBOX name="mymodal">
            <childs>
                <renderlet:BOX name="mybox" />
                <renderlet:SUBMIT name="submit" label="LLL:EXT:wd_myext/pi2/locallang.xml:form.label_validate_moderation" custom=' class="modal_submit"' />
                <renderlet:BUTTON name="closeBox" label="LLL:EXT:wd_myext/pi2/locallang.xml:form.label_cancel">
                    <wrap><![CDATA[|]]></wrap>
                    <onclick runat="client">
                        <userobj>
                            <php><![CDATA[
                               
                                return $this->aORenderlets["mymodal"]->majixCloseBox();

                            ]]></php>
                        </userobj>
                    </onclick>
                </renderlet:BUTTON>
            </childs>
        </renderlet:MODALBOX>

Voilà !
 

Christian B.

Occupation
Location
Interests
Suffit de demander :)
Développeur TYPO3 en freelance

CMS TYPO3 : actu, extensions, installation ...

Loading...Loading...