Vue.js partie 2

Vue.js partie 2

Allons un peu plus loin en ajoutant un formulaire et une collection de livre.

Commençons par Vue.js. Pour ajouter un livre à une collection, il nous faut donc une collection de livre, un tableau feras l’affaire:

data: {
        livre: {nom: '', commentaire: '', lu: ''},
        livres: []
    }

Afin de commencer avec de livre, nous utilisons la fonction suivante qui est appelé lors de l’instanciation de Vue.js:

ready: function() {
    var livres = [
        { nom: 'Fondation', commentaire: 'Un bon livre de SF', lu: '12-03-2016'}
    ];
    this.$set('livres', livres);
}

Il nous reste une dernière chose a faire en Javascript, l’ajout d’un nouveau livre lors de l’envoie du formulaire. pour cela nous définissons une fonction qui vérifie que le livre que l’on veux ajouter à bien un nom, puis nous l’ajoutons a notre tableau et enfin réinitialisons le formulaire:

methods: {
    ajouterLivre: function() {
        if(this.livre.nom) {
            this.livres.push(this.livre);
            this.livre = {nom: '', commentaire: '', lu: ''};
        }
    }
}

Passons maintenant que html. De côté là, la première chose et d’ajouter un bouton qui va faire appelle a notre fonction Javascript:

<button v-on:click="ajouterLivre">Ajouter</button>

La syntaxe v-on:click= »ajouterLivre »  permet de dire à Vue.js d’invoquer la fonction ajouterLivre lors de l’événement click.

Dernière étape, afficher notre collection de livres. Pour cela nous allons itéré sur notre tableau et afficher chacun de livres en utilisant v-for  :

<div v-for="livre in livres">
    <h2>{{ livre.nom }}</h2>
    <p>{{ livre.commentaire }}</p>
    <p>{{ livre.lu }}</p>
</div>

Et voila, avec un peu de css vous pouvez voir ça ici.

 

Vue.js – partie 1

Vue.js – partie 1

Pour commencer à découvrir Vue.js, voyons avec un exemple simple comment fonctionne le Twoway Binding.

Le code suivant permet de bien comprendre le Two-way Binding en action:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Lumen</title>
</head>
<body>

<div id="livres">
    <h1>Ajouter un livre</h1>
    <input v-model="livre.nom"><br />
    <textarea v-model="livre.commentaire"></textarea><br />
    <input v-model="livre.lu"><br /><br />

    <h2>{{ livre.nom }}</h2>
    <p>{{ livre.commentaire }}</p>
    <p>{{ livre.lu }}</p>
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.17/vue.js"></script>
<script>
    new Vue({
        // Sélecteur pour notre application Vue.js
        el: '#livres',

        // Nos données serons stocké ici
        data: {
            livre: {nom: '', commentaire: '', lu: ''}
        }
    });
</script>
</body>
</html>

Commençons par le javascript, nous instancions Vue.js avec deux options:

  • el: ‘#livres’, fournit a Vue.js sa zone de travail dans le DOM
  • data: { livre: {nom:  », commentaire:  », lu:  »} } décrit les données qui serons accessible par Vue.js dans sa zone de travail

Pour la partie html du code, deux élément aussi:

  • v-model cet attribue permet à Vue.js de faire le lien avec le modèle décris plus haut
  • la syntaxe {{livre.nom}} permet d’afficher la valeur stocké par Vue.js pour cette variable.

Pour voir ce code en action: c’est par ici.

Yosemite PHP APCu xDebug intl

Yosemite PHP APCu xDebug intl

Afin d’utiliser symfony2 avec la version de PHP fournit pas Yosemite, il faut rajouter quelques extensions.

Pour commencer il faut installer Xcode depuis l’App Store et ne pas oublié de l’exécuter afin d’accepter la licence d’utilisation.

Commençons par intl. En premier il nous faut les sources d’ici disponible a cette url : http://sourceforge.net/projects/icu/files/ICU4C/54.1/icu4c-54_1-src.tgz/download

Une fois fait, il faut les extraire, ouvrir un Terminal dans le dossier icu/source puis lancer les commandes suivantes :

./runConfigureICU MacOSXmake
sudo make install
sudo pecl install intl

Passons à APCu et Xdebug. Toujours dans le terminal lançons les commandes suivantes :

sudo pecl install apcu-beta
sudo pecl install xdebug

Dernière étape, la création et la modification du fichier php.ini

En premier lieu, copion le fichier php.ini.default

cp /etc/php.init.default /etc/php.ini

Puis modifions la valeur de « date.timezone »

Pour finir il suffit d’ajouter les lignes suivantes à la fin du fichier :

extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/apcu.so
extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/intl.so
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.max_nesting_level=250
Vagrant et Symfony2

Vagrant et Symfony2

Suite au formatage de mon Windows et au futur formatage de mon Mac, je me suis dit qu’il serait vraiment temps de regarder du côté de Vagrant pour ne pas avoir à reconfigurer à chaque fois un nouvel environnement de travail.

Vagrant est un outil permettant de gérer facilement des machines virtuelles. Pour l’installation rien de plus simple, il faut installer VirtualBox puis Vagrant.

Afin d’avoir automatiquement la bonne version des VirtuablBox Guest, installe le plugin vagrant-vbguest en ligne de commande avec :

vagrant plugin install vagrant-vbguest

Dans cet article je ne parlerais que de Mac, je ferais un autre article pour Windows.

Afin d’accéder aux sites web rajouter la ligne suivant dans votre fichier hosts :

127.0.0.1       www.pma.local sonata.fr

Afin d’utiliser Vagrant il nous faut créer un fichier Vagrantfile. Ce fichier est écrit en Ruby et fournit à Vagrant les informations nécessaires à la création et au provisionnement de la machine virtuelle.

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos64"
  config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box"

  config.vm.network :forwarded_port, guest: 80, host: 80
  config.vm.network :forwarded_port, guest: 443, host: 443

  config.vm.provider "virtualbox" do |v|
	v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end

  config.vm.network "private_network", ip: "10.11.12.13"
  config.vm.synced_folder ".", "/vagrant", nfs: true
  config.nfs.map_uid = Process.uid
  config.nfs.map_gid = Process.gid

  config.vm.provision "shell", path: "app/config/vagrant.sh"
end

Dans ce fichier Vagrantfile plusieurs choses sont importantes:

  • Les lignes 7 et 8 définissent l’image de machine virtuelle à utiliser et où la télécharger si elle n’est pas disponible sur la machine
  • Les lignes 10 et 11 permettent de rediriger les ports de la machine physique vers la machine virtuelle
  • Les lignes 13 à 16 permettent de changer les paramètres de la machine virtuelle, dans notre cas cela concerne les dns
  • La ligne 18 définit un réseau privé avec l’adresse IP de la VM
  • La ligne 19 monte le répertoire courant de la machine physique dans le répertoire /vagrant le la machine virtuelle en utilisant NFS
  • Les lignes 20 et 21 servent à configurer les droits d’accès aux fichiers
  • La ligne 23 définit quel script sera exécuté lors de l’étape de provisionnement

La ligne 23 fait référence à un fichier vagrant.sh, nous allons le voir en détail. Ce fichier va installer et configurer les différents logiciels pour notre machine virtuelle :

  • Mise à jour des paquets
  • Installation des dépendances pour la compilation d’Apache et de PHP
  • Compilation et configuration d’Apache et PHP (APC, Xdebug)
  • Installation de composer et phpMyAdmin
  • Préconfiguration de l’application Symfony2

Afin de créer la machine virtuelle, ouvrez une ligne de commande dans le dossier ou ce situe le fichier Vagrantfile puis lancez vagrant up .

Une fois la machine virtuelle créée vous pourrez vous rendre sur :

Pour exécuter des lignes de commande, utilisez vagrant ssh afin de vous connectez dans la machine virtuelle.

Et voilà. Le dépôt GitHub est à jour.

Rails 4 et MongoDB part 4 : Heroku

Rails 4 et MongoDB part 4 : Heroku

Heroku est un service paas pour héberger des applications facilement. Afin de s’en servir facilement il faut suivre quelques conseils.

Premièrement, modifiez votre fichier mongoid.yml pour y ajouter :

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true

Une fois fait, ajoutez la gem rails_12factor à votre projet.

Créez-vous ensuite un compte sur Heroku, puis installez la Heroku Toolbelt. Allez alors dans le dossier de votre application et lancez les commandes suivantes :

heroku login
heroku create --region eu
heroku addons:add mongohq:small
git push heroku master

La 3e ligne sert à ajouter une base MongoDB à votre instance Heroku.

Une fois fait vous devriez alors pouvoir accéder à votre application en ligne.

Si vous utilisez Travi-CI vous pouvez le configurer afin qu’après un build réussît, le déploiement se fasse sur Heroku. Pour ce faire installer la gem travis avec la commande suivante :

gem install travis -v 1.5.4 --no-rdoc --no-ri

Toujours dans le dossier de votre application lancez la commande suivante pour mettre à jour votre fichier .travis.yml avec les informations requises pour Heroku :

travis setup heroku

Rajoutez la ligne run: rake assets:precompile dans la section deploy de votre fichier .travis.yml.

Lors de votre prochain push sur GitHub, à la fin du build Travis si vos tests sont tous passés, votre instance d’Heroku sera mise à jour.