Tags: , , ,

Ubuntu: Netbeans freeze lors d’un commit subversion

Posted on 26 January 2011 by adrien

Si votre Netbeans se bloque lorsque vous essayez de faire un commit de votre travail sur un dépot SVN, c’est a priori parce que le plugin qui gère ceci plante. Pour contourner ceci, vous pouvez demander à Netbeans d’utiliser la version ligne de commande de SVN plutôt que son plugin interne.
Pour ceci, faite un

sudo gedit /etc/netbeans.conf

puis ajouter ceci au paramètre “netbeans_default_options”: -J-DsvnClientAdapterFactory=commandline

Si ça ne marche pas, vérifier que SVN soit bien installé sur votre machine

sudo apt-get install subversion

puis allez dans Outils->Options->Divers->Versions->Subversion et renseignez le chemin du fichier exécutable de SVN (a priori /usr/bin)

Pour ma part, le seul fait de modifier le fichier de configuration a résolu le problème sur ma Ubuntu 10.04 Lucid Lynx.

Comments (0)

Tags: ,

Zend_Date: échapper un caractère

Posted on 26 January 2011 by adrien

Un problème simple: comment afficher une date & heure comme ceci: 26/01/2011 15h30 ?
Normalement il faudrait juste échapper le caractère ‘h’ avec un backslash mais ça ne marche pas sous Zend. La solution aussi est simple, voici le code:

$date = new Zend_Date($datefromdb, "yyyy-MM-dd HH:mm:ss");
print($date->toString("dd/MM/yyyy HH'h'mm"));

Site officiel de Zend

Comments (0)

Tags: , ,

jQuery: l’évenement “submit” n’est pas capturé

Posted on 15 December 2010 by adrien

Travaillant actuellement sur un projet mettant en œuvre du jQuery, je suis tombé sur un problème qui m’a fait perdre du temps lors de la mise en prod. En effet ce problème ne se posait pas lors des tests en développement mais apparaissait sur le serveur de production (je ne sais pas pourquoi d’ailleurs).

Le problème se trouvait sur un formulaire simple de login que je gère en ajax. Sur ce formulaire, je pose un handler sur l’évenement submit de la form pour traiter le post en arrière plan et ainsi ne pas faire recharger la page si je dois afficher un message d’erreur (classique).
Seulement ici rien ne se passait du coté javascript et le formulaire était donc envoyé de façon normal.

Et la raison est très simple: il ne faut pas nommer son input[type=submit] en “submit”.

En clair: le code faux:

<form id="myform" action="connexion.html" method="post">
   <input type="text" name="login" />
   <input type="password" name="pwd" />
   <input type="submit" name="submit" value="Connexion" />
</form>

Et le code qui fonctionnera:

<form id="myform" action="connexion.html" method="post">
   <input type="text" name="login" />
   <input type="password" name="pwd" />
   <input type="submit" name="peu_importe_mais_pas_submit" value="Connexion" />
</form>

En complément, le code jQuery:

$('#myform').submit(function() {
   $.post($('#myform').attr('action'), $("#myform").serialize(),function(data){
      var response = jQuery.parseJSON(data);
      //traiter la reponse
   });
   return false;
});

En espérant que cela pourra aider quelqu’un…

Voir aussi:
La documentation officielle de jQuery qui m’a mis sur la voie.

Comments (1)

Tags: , ,

Supprimer des éléments d’un formulaire avec le framework PHP Recess

Posted on 17 November 2010 by adrien

Le framework Recess vous permet de créer des api REST en PHP pour vos applications.
Il possède entre autres un système sympa de générations d’objets (models) et une génération automatique de formulaires pour pouvoir les créer/modifier/supprimer/mettre à jour.

Seulement il peut arriver que vous n’ayez pas envie qu’un champ soit modifiable car vous lui attribuez une valeur directement dans votre code source, donc autant ne pas afficher le bouton ou champ input correspondant.

Pour ceci, c’est très simple, on reprend une méthode déjà exposé dans ce billet précédent sur le traitement avant insertion mais qu’on applique pour notre forms:

/** !Route GET, new */
function newForm() {
$this->_form->to(Methods::POST, $this->urlTo('insert'));
unset($this->_form->inputs['theFieldToHide']);
return $this->ok('editForm');
}

Et c’est tout, votre formulaire ne contiendra pas ce champ. Simple mais il fallu que je fouille pour trouver!

Comments (0)

Tags: , , ,

Plugins Amanda pour Nagios

Posted on 09 September 2010 by Thomas Ginestet

Voici plusieurs scripts qui vous permettrons de vérifier via Nagios le bon fonctionnement d’une sauvegarde effectuée par Amanda. Les fonctionnalités sont les suivantes:

- amchecklabel.pl: vérification du label de la bande attendue pour la prochaine sauvegarde.

- amcheckconnection.pl: vérification de la connexion avec les clients Amanda qui seront sauvegardés lors de la prochaine sauvegarde.

- amstatus.pl: vérification que la sauvegarde se soit bien déroulée.

Ces scripts utilisent le plugin check_grep que vous trouverez dans le paquet nagios-of-plugins. Vous devrez également avoir configuré au préalable le plugin NSCA.


Quelques explications:

- $result: cette variable va contenir le résultat renvoyé par la commande check_grep sur la string ‘label ok’, string récupérée par la commande ‘/usr/local/sbin/amcheck my_amanda_config‘. Le résultat va être analysé et va permettre de définir un code d’erreur associé. Ce code d’erreur (0 si le résultat de la commande contient OK ou 2 si il contient CRITICAL) sera ensuite envoyé par NSCA à Nagios.

- $hosts: le nom du serveur de sauvegarde. Envoyé également avec le code d’erreur par NSCA.

- $service: le nom du service à déclarer dans Nagios. Envoyé également avec le code d’erreur par NSCA.

Rappelons que NSCA fonctionne sur le principe du check passif. Il vous faut alors rajouter l’exécution des scripts perl à la crontab afin d’automatiser tout cela.
Veillez à espacer de quelques minutes le amchecklabel.pl et le amcheckconnection.pl car ils sont tous deux basés sur la commande amcheck d’Amanda qui met un peu de temps à s’exécuter et qui risque de tirer la tronche si vous la lancez plusieurs fois de suite.
N’oubliez pas non plus de lancer amstatus.pl à une heure où vous êtes certain que votre sauvegarde soit bien finie, sinon vous obtiendrez une alarme Nagios en cadeau :-)

Voici un exemple de crontab (la mienne en fait…):

00 14 * * 1-5 su backup -c "/usr/lib/nagios/plugins/amchecklabel.pl"
05 14 * * 1-5 su backup -c "/usr/lib/nagios/plugins/amcheckconnection.pl"
00 08 * * 1-5 /usr/lib/nagios/plugins/amstatus.pl

Comments (0)

Tags: , , , , ,

Plugin Zimbra pour Nagios

Posted on 03 September 2010 by Thomas Ginestet

En cas de boîte mail proche de la saturation, Zimbra peut prévenir par mail l’utilisateur concerné. C’est génial, mais partant du constat que beaucoup de (mes) utilisateurs ne lisent pas leurs mails dès que ça ressemble de près comme de très loin à de l’informatique, je me suis concocté un petit script en Perl me permettant d’avoir un visu sur les utilisateurs ayant leur messagerie saturée. Continue Reading

Comments (0)

Tags: , ,

Recess Framework: traitement avant insertion ou update

Posted on 06 May 2010 by adrien

Dans un de mes projets, j’utilise le framework Recess pour créer une API REST en php. Ce framework est intéressant mais jeune et il peut être long de trouver une information simple.

Ici mon besoin était de faire un traitement sur le model avant son insertion en base. On peut facilement faire ceci en utilisant l’annotation !Before dans l’objet. Voici un exemple:

class user extends Model {
/** !Column PrimaryKey, Integer, AutoIncrement */
public $id;

/** !Column DateTime */
public $creation_date;

/** !Column String */
public $name;

/** !Before insert */
public function beforeInsert() {
$this->creation_date = time();
}

/** !Before update */
public function beforeUpdate() {
//we block update of creation date
unset($this->creation_date);

}

}

On remarque en passant que les champs qui sont en datetime en base de donnée sont traités en timestamp sous Recess.
Lors de l’update on fait un unset sur la variable $creation_date, ainsi elle ne sera pas traitée par le framework.

Comments (1)