APE – Ajax Push Engine 1.0 Beta 5 – Test
Comme vous le savez surement, une technique devient très à la mode si on peu dire : le push.
L’iPhone a démocratiser le terme avec ses applications se servant du dit push.
Mais un autre langage met l’accent sur cette nouvelle façon d’intéragir en temps réel avec les utilisateurs : le javascript.
Et plus particulièrement http://www.ape-project.org
Grâce à leur documentation très clair, j’ai fait un petit essai de serveur APE sur une machine virtuelle sous Ubuntu (Karmic).
Tout d’abord télécharger la dernière version de APE Server sur le site cité plus haut.
Ensuite, en console, écrire :
ape-get install build-essential libmysqlclient-dev
Une fois les dépendances installées, décompresser le tar.gz puis depuis le dossier, et écrire :
./build.sh
On passe ensuite à la décompression du tar.gz du Framework APE.
Une fois cela fait, on rajoute (en haut) dans /etc/apache2/sites-available/default (apt-get install apache2 si le fichier n’est pas présent ^^):
<virtualhost *>
Servername local.ape-project.org
ServerAlias ape.local.ape-project.org
ServerAlias *.ape.local.ape-project.org
DocumentRoot "/répertoire/ou/sont/les/deux/dossiers/décompressés/"
</virtualhost>
Une fois cela fait, on lance le serveur APE depuis le répertoire bin du dossier APE_Server décompressé :
./aped
Sur l’écran doit apparaître le logo APE ainsi que le port sur lequel il écoute et plusieurs lignes avec des [modules] et [JS].
Si vous ne voyez pas cela, relancer le build.
On lance ensuite Firefox à l’url suivante pour tester que tout est bien installé : http://local.ape-project.org/APE_JSF/Tools/Check/
Et la normalement après avoir vu défilé quelques lignes de tests, à la fin on peut lire : All test done. Now you can play with your APE \o/
Je ne traduirais pas la phrase, c’est assez explicite
Vous pouvez désormais tester le framework APE.
Recovery Acer Aspire 9300
Bon, ayant passé du temps à résoudre un problème, je partage mon expérience, espérant que cela puisse aider
.
Le problème : un Acer Aspire 9300 que je voulais remettre comme à la sortie d’usine.
Première étape : regarder dans le manuel pour savoir comment procéder -> activer un paramètre dans le BIOS (D2D sur enabled), sauver et quitter, après redémarrage (quand le logo Acer apparait), appuyer sur alt + F10.
Second problème : alt + F10 ne réagit pas (cette combinaison est inscrite dans le MBR du disque dur, donc si vous avez réinstaller un système entr-temps [xp, vista, linux,…] cette dernière a été supprimée)
Résolution du problème (source) :
- Installer le logiciel R-Drive Image pour créer une image de la partition pqservice (ce fichier aura l’extension .ARC)
- Toujours avec ce logiciel, créer un disk logic virtuel pour voir les fichiers
- Trouver les 2 fichiers suivants : mbrwrwin.exe et rtmbr.bin.
- Copier ces 2 fichiers sur le lecteur C:\
- Depuis l’invite de commande MS-DOS (accessoire windows) sur C:\, taper la commande suivante : mbrwrwin install rtmbr.bin
Personellement, pour recréer le MBR, j’ai démonté le disque dur du portable, je l’ai branché sur mon mac, et à l’aide du machine virtuelle sous xp, j’ai effectué les opérations cités ci-dessus sauf la commande sous cmd, que j’ai effectué (une fois le disque remonté et après avoir copier ses 2 fichiers sur le disque dur) à partir de l’invite de commande MS-DOS d’un cd vista (on pourra utiliser un cd xp ou autre cd de boot ayant cmd.exe).
Deuxième étape : la combinaison alt + F10 re-fonctionnant, l’utiliser et accéder au système de restauration de la machine.
Troisième problème : un message d’erreur lors du lancement du système de restauration : “FAIL to get partition 1 drive letter” ou “FAIL to get partition 3 drive letter”
Résolution du problème :
De mémoire, je me rappelais que cette machine disposais, lors de l’achat, de deux partitions (sans compter la partition de restauration pqservice qui est cachée) : une pour le système (vista) et l’autre pour les données (acerdatas).
J’ai donc, avec Partition magic (lancer sur cd depuis le menu de boot), supprimer toutes les partitions du disque (sauf pqservice bien entendu) et créer 2 partitions en ntfs de taille quelconque (personnellement j’ai mis la deuxième avec 5go pour la re-supprimer une fois la restauration terminée, n’aimant pas avoir plusieurs partition pour un même système ^^).
Une fois cela effectué, j’ai redémarré et retenté de lancer la restauration… Et après tous ses rebondissements, celle-ci s’est déroulé avec succès !
En tout cas, on notera que les constructeurs ne font rien pour faciliter la remise à zéro de leurs produits. A croire que le service après vente font partie importante de leur budget…
Problème rowHeight UITableView – Objective C
Comme promis, je vous fais part de petits bouts de codes qui m’ont posés quelques soucis pendant le développement de ma première application iphone en cocoa.
Cela concernant la hauteur des cellules d’un TableView : rowHeight
Mon erreur : à l’init dans mon TableViewController j’écrivais : self.tableView.rowHeight = 100;
Mais parfois, cette valeur n’était pas prise en compte, engendrant un bug d’affichage.
Finalement, pour résoudre ce problème, j’ai fait appel à une méthode native de UITableView, qui renvoi à chaque affichage d’une cellule sur l’écran, sa valeur par défaut :
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 100;
}
Et voilà, le bug est de l’histoire ancienne ![]()
Jquery 1.3 – live() – Propagation des événements
Qui n’a jamais été confronté au problème d’évènements qui ne s’applique pas au contenu Ajax ou à la modification du dom avec Jquery?
Comme expliqué de façon clair dans cette vidéo, la nouvelle fonction live() de Jquery 1.3 règle ce problème.
On voit encore une fois toute la puissance de ce framework javascript.
Différence en secondes entre 2 dates en AS3
Je met à disposition, ayant cherché un peu avant sur google, un petit bout de code en AS3 (flash) pour obtenir la différence en secondes entres deux dates :
var date1:Date = new Date();
var date2:Date = new Date();
date2.seconds += 2; // on rajoute 2 secondes à la 2ème date
var difference:Number = Math.abs(date1.time - date2.time)/1000; // 1000 car le résultat est en millisecondes
trace(difference); // 2
Voilà j’espère que cela vous servira ![]()
Problème d’affichage avec une 8800GT de MSI
Un petit post pour aider ceux qui chercherais une solution au fait que leur carte graphique bug (traits rouge, freeze,…).
Premièrement, savoir que par défaut le ventilateur est réglé sur 25%, donc l’augmenter à l’aide d’un logiciel comme RivaTuner par exemple.
Deuxièmement, si cela ne règle pas le problème, toujours à l’aide du logiciel cité précédement, descendre la fréquence de la RAM à 1800Mhz (900Mhz sous RivaTuner).
Voilà. ![]()
Gestion des langues avec Prado
Voici un petit tutorial pour mettre en place un site en français et anglais avec Prado.
Tout d’abord, nous allons configurer le fichier application.xml pour mettre en place la gestion de l’Internationalization (I18N).
Nous lui rajoutons donc le module concerné ayant pour langue par défaut : fr
<module id=”globalization” class=”TGlobalizationAutoDetect” Culture=”fr”>
<translation type=”XLIFF” source=”Application.lang” autosave=”false” cache=”false” />
</module>
Application.lang signifiant que les fichiers xml des langues seront dans le répertoire lang de l’application : protected/lang par défaut.
Ensuite nous modifions le fichier index.php de l’application en lui ajoutant une nouvelle classe héritant de TApplication.
On remplace donc :
$application=new TApplication;
$application->run();
Par :
class MyApplication extends TApplication
{
public function OnLoadStateComplete()
{parent::OnLoadStateComplete();// If the culture has changed
if (isset($this->Request[’lang’])) {$this->setGlobalState(’lang’, $this->Request[’lang’]);
}
// This changes the Culture if the GlobalState variable ‘lang’ is set.
if ($this->getGlobalState(’lang’) != “”) {$this->getGlobalization()->setCulture($this->getGlobalState(’lang’));
}
$this->getGlobalization()->Charset = “UTF-8″; //change the charset
}
}
$application=new MyApplication;
$application->run();
Vous pouvez bien entendu mettre autre chose que UTF-8 pour le Charset.
Nous rajoutons ensuite des liens pour passer de français à anglais et vise et versa :
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=fr”>FR</a>
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=en”>EN</a>
Il ne vous reste plus qu’à mettre <%[Welcome]%> à la place de Welcome par exemple, et Prado va créer automatiquement les fichiers xml : lang/fr/messages.xml et lang/en/messages.xml
Ensuite à vous de rentrer les traductions dans les fichiers xml comme ceci :
<trans-unit id=”1″>
<source>Bienvenue</source>
<target>Welcome</target>
</trans-unit>
<trans-unit id=”2″>
<source><![CDATA[Propulsé par]]></source>
<target>Powered by</target>
</trans-unit>
Pour le deuxième exemple : <%[Propulsé par]%>
Pour toute question, critique ou suggestion, n’hésitez pas.
Création des classes Active Record sous Prado
Pour créer les classes Active Record correspondant aux tables de votre base de donnée, tout est expliqué ici : http://www.pradosoft.com/demos/blog-tutorial/?page=Day2.CreateAR
Cependant, une petite précision :
Pour effectuer la commande php path/to/prado-cli.php shell . sous windows :
Ouvrez la console windows (démarrer->exécuter->cmd), allez dans le répertoire où ce situe php.exe, et tapez :
php chemin_vers_le_framework_prado/prado-cli.php shell chemin_vers_le_repertoire_de_votre_site
Si vous avez des erreurs, vérifiez bien les paramètres de connexion à la base dans le fichier application.xml. Et surtout le bon chargement de l’extension php_pdo_mysql dans le fichier ini de php (si vous travaillez sous wamp, faites la modification dans les 2 fichiers ini de php, car en mode console ce n’est pas le même qui est chargé).
Remplir une liste depuis une base de donnée avec Prado
Dans la documentation de Prado (blog tutorial et quickstart), il y est expliqué les différents moyens d’accès à une base de donnée ainsi que les différents composants (liste, label, boutons,…).
Pour ceux qui sont un peu perdu, je vais mettre ici un exemple simple et rapide, pour remplir une liste à partir d’un contenu extrait d’une base de donnée.
Tout d’abord, il faut créer un fichier gabarit (exemple : bindListe.page) et son fichier de classe (soit bindListe.php) et les placer dans le répertoire par défaut des pages du site nommé “Pages”.
Ensuite on veut que notre application démarre par défaut sur cette page. Pour cela il suffit de modifier le fichier “application.xml” et de insérer/modifier le code existant par :
<paths>
<using namespace=”System.Data.*” />
<using namespace=”System.Web.UI.ActiveControls.*” />
</paths>
et
<services>
<service id=”page” class=”TPageService” DefaultPage=”index” />
</services>
Ensuite dans le fichier “bindListe.page”, copier/coller le code suivant :
<com:TActivePanel>
<com:TActiveListBox ID=”liste” Rows=”1″ />
</com:TActivePanel>
Et dans le fichier “bindListe.php”, copier/coller le code suivant :
<?php
class bindListe extends TPage
{
public function onInit($param)
{
parent::onInit($param);
$connection=new TDbConnection(”mysql:host=host;dbname=nomBDD”,”user”,”pass”);
$connection->Active=true;$command=$connection->createCommand(”SELECT * FROM votreTable”);
$dataReader=$command->query();$dataReader->bindColumn(2,$texte); //traduiser cette ligne de code par “je veux que la colonne 2 du résultat de ma requête sql soit envoyé dans la variable $texte”
$tbl=array();
//on lit l’ensemble des lignes du résultat de la requête
while($dataReader->read()!==false)
{
$tbl[]=array($texte);
}
$this->liste->DataSource=$tbl;
$this->liste->dataBind();
}
}
?>
Bien entendu vous devez avoir une table dans votre base avec au minimum 2 colonnes. La 2ème colonne étant le texte à afficher dans la liste.
Voilà, pour tout problème ou commentaire, n’hésitez pas à laisser un message.
Découverte de Prado
Voici un petit tutorial pour mettre en place un site en français et anglais avec Prado.
Tout d’abord, nous allons configurer le fichier application.xml pour mettre en place la gestion de l’Internationalization (I18N).
Nous lui rajoutons donc le module concerné ayant pour langue par défaut : fr
<module id=”globalization” class=”TGlobalizationAutoDetect” Culture=”fr”>
<translation type=”XLIFF” source=”Application.lang” autosave=”false” cache=”false” />
</module>
Application.lang signifiant que les fichiers xml des langues seront dans le répertoire lang de l’application : protected/lang par défaut.
Ensuite nous modifions le fichier index.php de l’application en lui ajoutant une nouvelle classe héritant de TApplication.
On remplace donc :
$application=new TApplication;
$application->run();
Par :
class MyApplication extends TApplication
{
public function OnLoadStateComplete()
{parent::OnLoadStateComplete();// If the culture has changed
if (isset($this->Request[’lang’])) {$this->setGlobalState(’lang’, $this->Request[’lang’]);
}
// This changes the Culture if the GlobalState variable ‘lang’ is set.
if ($this->getGlobalState(’lang’) != “”) {$this->getGlobalization()->setCulture($this->getGlobalState(’lang’));
}
$this->getGlobalization()->Charset = “UTF-8″; //change the charset
}
}
$application=new MyApplication;
$application->run();
Vous pouvez bien entendu mettre autre chose que UTF-8 pour le Charset.
Nous rajoutons ensuite des liens pour passer de français à anglais et vise et versa :
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=fr”>FR</a>
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=en”>EN</a>
Il ne vous reste plus qu’à mettre <%[Welcome]%> à la place de Welcome par exemple, et Prado va créer automatiquement les fichiers xml : lang/fr/messages.xml et lang/en/messages.xml
Ensuite à vous de rentrer les traductions dans les fichiers xml comme ceci :
<trans-unit id=”1″>
<source>Bienvenue</source>
<target>Welcome</target>
</trans-unit>
<trans-unit id=”2″>
<source><![CDATA[Propulsé par]]></source>
<target>Powered by</target>
</trans-unit>
Pour le deuxième exemple : <%[Propulsé par]%>
Pour toute question, critique ou suggestion, n’hésitez pas.