Publié le 25 Février 2015

Si vous utilisez la ligne de commande assez fréquemment vous savez surement que la commande cd (change directory) permet de retourner dans le répertoire précédent avec :

cd -

Très pratique mais on ne peut retourner que dans le repertoire précédent il n'y a pas d'historique des répertoires visités.

Heureusement il y a une autre commande qui permet de changer de repertoire tout en maintenant un historique de navigation. Il s'agit de pushd

pushd ~
pushd ~/Downloads
pushd ~/var/log

Ensuite pour remonter dans l'historique on utilise popd

popd

pushd ajoute les répertoires dans une pile et popd les dépile.

Voir les commentaires

Rédigé par Bliz

Publié dans #Linux

Repost 0

Publié le 20 Février 2015

Si vous placez un bouton dans un formulaire HTML le comportement par défaut est que lorsqu'on clique sur le bouton le formulaire est envoyé.

<form>
   <button>Cliquer ici pour envoyer le formulaire</button>
</form>

Un clic sur le bouton entraine l'envoi du formulaire. C'est presque équivalent à :

<input type="submit" value="Cliquer ici pour envoyer le formulaire">

Maintenant on peut avoir besoin d'un bouton qui se trouve à l'intérieur d'un formulaire mais qui ne doit pas envoyer le formulaire (il peut déclencher un action en javascript par exemple).

Il suffit dans ce cas d'ajouter un attribut type="button":

<form>
   <button type="button">Cliquer ici sans rien envoyer</button>
</form>

Voir les commentaires

Rédigé par Bliz

Repost 0

Publié le 17 Février 2015

La commande grep est très pratique pour rechercher une chaine de caractères dans des fichiers.

En retour grep affiche toutes les lignes contenant le motif recherché.

Parfois il peut être intéressant d'avoir un peu de contexte dans lequel la ligne apparaît.

Par exemple si vous faîtes une recherche dans du code source il peut être intéressant de rechercher une fonction et d'afficher les premières lignes de l'implémentation de la fonction.

grep propose deux option -A (after) et -B (before) qui prennent un nombre de ligne en paramètres et affiche les X lignes avant ou après la ligne trouvée.

Par exemple:

grep "function" -A5 *.php

Voir les commentaires

Rédigé par Bliz

Repost 0

Publié le 9 Février 2015

Actuellement mongodb ne permet pas de renommer directement une base de données : https://jira.mongodb.org/browse/SERVER-701

 

On peut tout de même renommer une base en la dupliquant puis en supprimer l'ancienne:

db.copyDatabase('ancienne_base', 'nouvelle_base');
use ancienne_base
db.dropDatabase();

 

Voir les commentaires

Rédigé par Bliz

Publié dans #mongo

Repost 0

Publié le 6 Février 2015

Voyons comment utiliser un peu de magie avec angularJS en réalisant le filtrage d'une liste en temps réel.

Je dis "magie" car il suffit de peu de code pour développer cette fonctionnalité.

Tout d'abord partons d'une liste toute simple en HTML:

<ul>
   <li>Banane: Jaune</li>
   <li>Pomme: Rouge</li>
   <li>Prune: Vert<li>
   <li>Framboise: Rose<li>
   <li>Fraise: Rouge</li>
</ul>

Maintenant mettons un peu d'angular pour générer la liste:

angular.module('demoListe', [])
   .controller('listeController', function () {
      // la liste des fruits qu'on souhaite afficher
      this.fruits = [{
          nom: 'banane',
          couleur: 'jaune'
        },{
          nom: 'pomme',
          couleur: 'rouge'
        },{
          nom: 'prune',
          couleur: 'vert'
        },{
          nom: 'framboise',
          couleur: 'rose'
        },{
          nom: 'fraise',
          couleur:'rouge'
      }];
   });

et le HTML devient

<ul ng-controller="listeController as ctrl">
   <li ng-repeat="fruit in ctrl.fruits">{{fruit.nom}}: {{fruit.couleur}}</li>
</ul>

Bien sûr il faut ajouter un input text pour saisir le texte pour filtrer la liste:

<div ng-controller="listeController as ctrl">
   <input type="text" ng-model="filtre">
   <ul>
      <li ng-repeat="fruit in ctrl.fruits | filter: {'$': filtre}">
         {{fruit.nom}}: {{fruit.couleur}}
     </li>
   </ul>
</div>

Et comme on a utilisé $ dans le filtre le filtrage prend en compte tous les champs donc nom et couleur. On peut chercher tous les fruit 'rouge' ou tous ceux commençant par p.

Le tout en à peine 10 lignes de codes. Magique!

Voir les commentaires

Rédigé par Bliz

Repost 0

Publié le 1 Février 2015

Depuis la version 5.3 de PHP il est possible d'écrire des fonctions anonymes ou lambda.

Par exemple imaginons le calcul "simplifié" du montant d'un panier:

$panier = array(
   "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5" => 35.50,
   "PHP and MySQL Web Development (4th Edition)" => 25.50,
   "PHP and MySQL for Dynamic Web Sites" => 30.00
);

function total() {
   $total = 0.0;
   array_walk($panier, function ($prix, $produit) use (&$total) {
      $total += $price;
   });
   return $total;
}

Ce qu'il faut remarquer ici c'est que la closure sur les variables présentes dans le scope où est déclarée la fonction ne se fait pas automatiquement.

Il faut spécifier explicitement les variables que l'on veut utiliser à l'aide du mot-clé 'use'.

Ensuite comme en PHP toute les valeurs sont passées par copies par défaut il faut spécifier explicitement que $total doit être passer par référence pour pouvoir la modifier depuis la lambda.

Voir les commentaires

Rédigé par Bliz

Publié dans #Php

Repost 0