Bonjour Mon Blog comment va ? Tiens voilà une news pour toi.
Tu n'es pas sans savoir que J'utilise notepad++ depuis quelques années, que j'ai "croisé" par le truchement de Scintilla le projet libre dont notepad++ est issu.
Hé bien avant la v 4.x, il n'y avait pas moyen d'ouvrir 2 fichiers pour les comparer, bien pratique quand on code énormément et qu'on dépose ces sources sur un gestionnaire de versions.
Donc voilà avec cette v 5.0.x le plugin Compare fait son entrée, ce qui fait de notepad++ avec le plugin Explorer en plus, un éditeur on ne peut plus complet.
Quoi nan ?
Mais Si, pisque j't'le dis !
Bon allez t'as raison il ne lui manque que la complétion des noms des fonctions du langage de programmation utilisées.
Mais à part cela ?
Bon je te laisse j'ai moulte lignes de code qui me chatouille les doigts
@+ Maurice.
mercredi, juillet 23 2008
NotePad++ 5.0.x proche de la perfection ?
Par foxmask le mercredi, juillet 23 2008, 07:18
lundi, juillet 7 2008
Lugo : La Greve du Sol !
Par foxmask le lundi, juillet 7 2008, 21:34
Lugo nous gratifie d'un nouvelle bombe d'album !
Des morceaux de la vie de tous les jours... si vrai !

« L’univers scénique ressemble à leur musique : lunaire, décalé. Ce vaisseau spatial est aussi une façon de prendre au pied de la lettre le titre de leur nouvel album « La Grève du sol ». Et de tracer des fils narratifs entre les morceaux, qui oscillent entre la pop électro-électrique et les ballades acoustiques dont le groupe a le secret… »
Ouest France
Ce sur quoi je rajouterai que l'ambiance sur scène est des plus festif et donne vraiment envi !
Enfin, prochains passages à ne pas manquer
- 25 juil. 2008 21:00 Festival Place aux artistes St Quay Portrieux, Bretagne
- 31 juil. 2008 20:00 Concert Ile de Batz Ile de batz, Bretagne
- 5 août 2008 21:00 Festival d’été Quiberon, Bretagne
- 8 août 2008 21:00 Festival d’été Carnac, Bretagne
- 13 août 2008 21:00 Festival d’été St Cast le Guildo, Bretagne
- Nov/Dec 2008 : PARIS !
Si vous les croisez en Bretagne (vous ne le regretterez pas fois de foxmask), passez leur le bonjour de ma part !
dimanche, juin 29 2008
n00bd0r de Juin 2008
Par foxmask le dimanche, juin 29 2008, 09:31 - Humour
Le gagnant du mois a encore sévit sur Fluxbb.fr.
Ce dernier nous a gratifié d'un beau poste comme on en voit (hélas pour l'orthographe, trop souvent) sur tout forum :
Je demande a ce que le script (1) soit refais !
Cet dernière version ma apporter que des ennuis !
Tentavie de piratage... ect.
Voila
Amicalement,
Corentin
(1) Fluxbb
vendredi, juin 27 2008
Saint Vincent de Paul 5 ans de répis ! (au minimum)
Par foxmask le vendredi, juin 27 2008, 17:49
J'annonçais il y a 14mois que Saint Vincent de Paul fermait ses portes en 2009.
Hé bien il n'en sera rien avant 5ans.
5ans c'est la durée que va prendre les travaux pour construire les bâtiments nécessaire à l'accueil de tout le personnel de StVincent de Paul à ... Necker !
En effet c'est ce matin à la suite d'une visite, qu'à la fin de l'entretien j'ai demandé au médecin,
"mais vous nous dites rendez vous en 2009 mais StVincent ne ferme pas en 2009 justement ?"
la médecin "non pas avant 5ans" (pour les raisons évoquées ci dessus)
Parents : Respirez (ons) !!!!!
dimanche, juin 8 2008
CakePHP - Calendrier et les dates en timestamp
Par foxmask le dimanche, juin 8 2008, 21:39
Bonsoir, voici un billet sur une de mes mésaventures avec CakePHP et le champ de formulaire type "date".
Pour un plugin Calendrier, j'ai besoin d'un sélecteur de dates, voici comme on l'obtient avec CakePHP :
echo $form->input('date',array('type'=>'date','label'=>false,'dateFormat'=>'DMY'));
ceci affichera donc 3 liste deroulantes "jour"-"mois"-"année".
Quand j'ajoute la donnée dans ma base, je recréé ma colonne date (dans ma methode "add") comme suit pour la transformer en timestamp :
$this->data ['Calendar'][ 'date' ] = mktime(0,0,0,$this->data['Calendar']['date']['month'].
$this->data['Calendar']['date']['day'],
$this->data['Calendar']['date']['year']);
Comme j'ai également besoin de modifier l'évènement de mon calendrier, je réutilise la même vue, et m'attends évidement à retrouver ma date (par exemple le 6 juin 2008). Mais Ô surprise, au lieu d'avoir la date voulue, j'obtiens une date du 1 janvier 2028...
Comment ce fait-ce ?
CakePHP nous fait un caprice ! Il ne "comprend" pas que ma colonne de ma table au format INTEGER contient un ENTIER et m'en fait une CHAINE ! (hic!)
Pour contourner cet avatar et l'aider à comprendre voici ce qu'il faut faire dans sa méthode edit :
public function edit ($id = null) {
[...]
if (empty($this->data)) {
$this->data = $this->Calendar->read(null, $id);
}
$this->data['Calendar']['date'] = (integer) $this->data['Calendar']['date'];
Comme on le voit, juste après le this->Calendar->read je force le typage du contenu de la valeur de ma array $this->data['Calendar']['date'] par (integer) $this->data['Calendar']['date']
et là ô miracle, le formulaire de modification de l'évènement affiche les 3 selecteurs jour/mois/année avec la date atendue
Ouf !!!!!!!
pour la petite histoire, "la faute" incombait à la ligne 1389 du helper form
extrait ligne 1385 - 1391 :
if (!empty($selected)) {
if (is_array($selected)) {
extract($selected);
} else {
if (is_int($selected)) {
$selected = strftime('%Y-%m-%d %H:%M:%S', $selected);
}
la condition if (is_int($selected)) n'est étrangement pas rencontrée avec sa colonne en timestamp tant qu'on ne lui force pas le typage comme je l'ai fait dans ma méthode edit...
Mais en bon renard que je suis, entêté et curieux, j'ai forcé l'obstacle 
CakePHP 1.2.0.7125 RC1
Par foxmask le dimanche, juin 8 2008, 17:26
Bonjour à tous, la RC1 de CakePHP 1.2 vient de sortir du four
parmi les évolutions les plus importantes on notera :
- renderElement est remplace par element (facile avec un bon editeur)
- dans les controlleurs, si vous effectuez "render(..); exit;", la vue
ne sera pas rendue, remplacer le exit par "return;"
- les conditions dans les queries : conditions array("field" => ">= value"), à remplacer par "array("field >=" => "value"), question de sécurité.
- vérifier aussi dans les conditions l'usage du préfixe magique "-!",
de préférence sans mots-clef avant: array("field" => "-! LIKE MONTH(date)") a remplacer par array("field LIKE" => "-! MONTH(date)")
- containable behavior remplace "bindable"
(merci à Francky06 pour le décryptage;)
dimanche, mai 18 2008
n00bd0r de Mai 2008
Par foxmask le dimanche, mai 18 2008, 16:53
Des fois être admin de forum (Fluxbb) procure une certaine euphorie à la lecture de sujet comme celui-ci 
Bonjour,
je voulait utiliser FluxBB mais bon sa a pas l'air d'être au point...
J'explique, ce soir j'ai bannis ma soeur pour cause de flood ...
Et tout le forum y compris le Web' (moi) sont bannie !
Sa m'enerve !
Svp une solution sans rien reinstaller
Merci
ZendFrameWork - once upon a time ;)
Par foxmask le dimanche, mai 18 2008, 16:42
Apres avoir joué avec CakePHP ; je me lance à refondre DaFunSpirit avec ZendFramework
Ainsi avec 2 framework PHP utilisant le paradigm MVC, j'aurai une vision claire des avantages / inconvénients de chacun 
Ainsi donc je rédigerai une suite de billets sur ZF au fur et à mesure de l'avancée de DFSS sous ZF tout comme je le fis pour PunCake avec CakePHP 
mercredi, mai 14 2008
Po po po dis donc
Par foxmask le mercredi, mai 14 2008, 23:54 - Humour
Un demi million de site web utilisant phpBB se sont fait hacker dans une attaque à grande échelle
According to Ferguson, over half a million legitimate Web sites have been hacked by today's mass-scale attack, only the latest in a string that goes back to at least January. All of the sites, he confirmed, are running "phpBB," an open-source message forum manager.
Comment dire ... phpBB Sux : CQFD !
PS : si vous ne connaissiez pas phpBB ; hé bien continuez :D, Sinon oublier vite ce logiciel de forum. et jettez un oeil sur une liste d'outils équivalents et faites votre choix ici
source : computerworld
vendredi, avril 18 2008
CakePHP - BehaviorHelper
Par foxmask le vendredi, avril 18 2008, 10:52
CakePHP : recherche globale
Pour les besoins de son portail il est fort utile d'avoir des fonctionnalités transversales à tout le portail.
C'est le cas de la fonction de recherche, qui peut aller à la pêche aux actualités/articles/billets/bogues etc...
La solution serait d'avoir une grosse fonction php qui parcourt toutes les tables,
mais cela n'est bien évidement pas satisfaisant, car inmaintenable, pas portable, trop lourd...
Donc l'idée va consister à créer une fonction de recherche par plugin (un plugin "cakephp" est une "partie" de l'application globale).
Puis lorsque le visiteur saisira une phrase sur le moteur de recherche, nous déclencherons la fonction de recherche de chaque plugin.
Comment procéder ?
Chaque plugin possède son propre répertoire, exemple
- app/plugins/news
- app/plugins/articles
- app/plugins/blog
dans chacun d'eux nous créons un script _prepend.php contenant ceci :
pour le plugins news :
<?php
$this->addBehavior('publicSearchHTML', array('newsBehavior','searchNews'));
class newsBehavior
{
public function searchNews()
{
#appel de son modèle
App::import('Model','news.News');
$news = & new News();
$rs = $news->getNews();
/*
* Ici le code sur l'iteration sur le recordset pour afficher le resultat
* en invoquant le Helper HtmlHelper() pour le rendu bien sûr.
*/
}
?>
on comprend ici qu'il faut donc etre muni d'une fonction getNews() dans le model news.
Mais, pour le moment le _prepend.php est "inerte", par inerte j'entends, qu'il n'est pas utilisable en l'etat.
Effectivement, il manque une classe pour exploiter nos "comportements" (les classes xxxBehavior)
Voici donc le Helper (oui car il s'agit d'afficher des données, donc un helper;) qui gère tout cela :
(extrait issue de PunCake)
<?php
class PcbehaviorHelper extends Helper {
public $puncake_behaviors = array();
public function beforeRender() {
/*
*
* ici le code permettant de parcourir le répertoire plugins
*
*/
$this->path = dirname(__FILE__) . '/../../plugins/';
foreach ($this->path as $root)
{
if (!is_dir($root) || !is_readable($root))
continue;
if (substr($root,-1) != '/')
$root .= '/';
if (($d = @dir($root)) === false)
continue;
while (($entry = $d->read()) !== false)
{
$full_entry = $root.'/'.$entry;
if ($entry != '.' && $entry != '..' && is_dir($full_entry)
&& file_exists($full_entry.'/_prepend.php')
)
{
require $full_entry.'/_prepend.php';
}
}
$d->close();
}
}
/*
* la fonction d'ajout du behavior
* au tableau des behaviors (utilisé par chaque _prepend.php)
*/
public function addBehavior($behavior,$func)
{
if (is_callable($func)) {
$this->puncake_behaviors[$behavior][] = $func;
}
}
/*
* Fonction de rappel de la classe et fonction à éxécuter
*/
public function callBehavior($behavior)
{
if (!empty($this->puncake_behaviors[$behavior]))
{
$args = func_get_args();
array_shift($args);
$res = '';
foreach ($this->puncake_behaviors[$behavior] as $f) {
$res .= call_user_func_array($f,$args);
}
return $res;
}
}
}
?>
Ceci fait, dans la vue de son choix, un simple appel $pcbehavior->callBehavior('publicSearchHTML');
déclenchera l'appel de la méthode searchNews de tous les plugins disposant d'un fichier _prepend.php .
Voilà !
Ce Helper s'applique donc quelque soit le behavior qu'on veut coder.
Par exemple, qd je me connecte sur mon portail, je veux etre avertis si j'ai des news/articles à modérer, des billets reçus etc.. etc..
Tout ceci ce gère de la même maniere que ci dessus.
1) ajout d'une fonction newToValidate de plus à ma class newsBehavior
2) ajout du behavior à la pile via $this->addBehavior('toValidate',array('newsBehavior','newsToValidate'))
3) appel du behavior dans la vue de mon choix par un $pcbehavior->callBehavior('toValidate');
Happy Cooking !
« billets précédents - page 1 de 19


Derniers commentaires