Une WebApp pour gérer une liste de courses basée sur Sinatra

5/05/2018
Auteur : De Emmanuel Grandadam

Un projet perso pour la gestion d’une liste de courses au format WebApp.

-> L’objectif était d’avoir une application mobile de gestion des courses adaptée à mon environnement

Du Ruby ! sans Rails, avec Sinatra

Tous mes outils perso sont en Ruby, j’affectionne ce language élégant et souple.

La solution par défaut avec Ruby est Rails, le Framework Web. J’utilise Rails pour des projets lourds et compliqués. Dans le cas de cette petite appli perso, j’avais besoin d’un système plus léger : Sinatra !

Sinatra est un Langage dédié qui permet de faire tourner une appli Web basée sur du Ruby.

 

Un petit contrôleur, une grosse couche de JS

Le projet est basé sur la version 2.4.0 de Ruby.

Le contrôleur écrit en Ruby est ridicule, il me permet juste d’interroger une base de données et d’alimenter une vue.

La base de données (MySQL) contient une liste d’articles classés en catégories.

Le stockage local de la liste ainsi composée à partir d’une selection d’articles est au format Web SQL.

 

La couche Javascript basée sur jQuery est assez lourde car c’est elle qui s’occupe des mouvements des enregistrements dans la base locale du navigateur.

db.transaction(function (tx) {
tx.executeSql(‘INSERT INTO bdd (article_id, article, description, categorie_id) VALUES (?,?,?,?)’, [id,product,description,category]);
});

La couche CSS est écrite en Sass et pilote les swipe d’écran.

Les images…

   

Quelques pièges quand même…

La version du gem pour l’accès à la base de données MySQL du serveur doit être spécifiée dans le gemfile pour que cela fonctionne. (Un bug de ruby 2.4.0 avec la dernière version du gem mysql2…

gem ‘mysql2’, ‘~> 0.3.18’

 

Pour obtenir une navigation fluide entre les écrans, j’ai du ‘tricher’ en repositionnant les écrans vers la gauche pour les masquer du body et ainsi éviter que le scroll ne les affiches.

@keyframes move-d {
0% { transform: translateX(0); }
99% { transform: translateX(100%); animation-duration: 500ms; }
100% { transform: translateX(-100%); animation-duration: 0s; }
}

Commentaires :

Git : Utiliser le Deamon Git pour gérer un dépôt distant

2/02/2018
Auteur : De Emmanuel Grandadam

Travail collaboratif ou simple système de sauvegarde, j’utilise Git pour le suivi de mes projets.

-> L’astuce consiste à mettre en oeuvre un dépôt distant en plus du local créé par Git.

1. Création d’un dossier pour le projet

Sur le serveur, dans un dossier prévu au stockage des projets
« chemin » -> chemin relatif ou absolu vers le dossier principal,
« projet » -> comme nom du projet.
« serveur » -> pour identifier le serveur (ip ou nom)

mkdir /chemin/projet

chmod -R 777 /chemin/projet

cd /chemin/projet

git –bare init –shared=true

(bare pour la création d’un archive, shared pour autoriser le partage)

touch /chemin/projet/.git/git-daemon-export-ok

(Le projet doit contenir le fichier git-daemon-export-ok pour autoriser l’export distant)

 

2. Lancer le daemon pour la gestion distante

git daemon –reuseaddr –base-path=/chemin –export-all –enable=receive-pack

(–enable=receive-pack pour autoriser l’écriture)

 

-> On obtient alors l’url suivante l’accès au projet : git://serveur/projet

3. Sur le client

git init

git add ./

git status

git commit -m « Message »

(Cette première étape ne change pas, c’est un commit local normal)

git remote add « Nom identifiant le dépôt distant » git://serveur/projet

(On ajoute un dépôt distant)

git push « Nom identifiant le dépôt distant » master

(On pousse les changement sur le serveur)

 

En cadeau : mon script bash qui permet la création des projets et qui pilote le serveur :

#!/bin/bash

create(){

if [ -z "$REP" ]
 then
 printf "[Création du dépôt] Nom du dépôt : "
 read REP
 fi
 
 mkdir $FOLDER/$REP
 chmod -R 777 $FOLDER/$REP
 cd $FOLDER/$REP
 
 git --bare init --shared=true
 
 touch $FOLDER/$REP/.git/git-daemon-export-ok


}

start(){

git daemon --reuseaddr --base-path=$FOLDER --export-all --enable=receive-pack &
 echo $! > /tmp/git.pid
}



stop(){
 
 PID=$(cat /tmp/git.pid)
 kill -15 $PID 2> /dev/null
 rm /tmp/git.pid 2> /dev/null
}



# DEMARRAGE
#---------------------------------------

REP=$2
FOLDER="/chemin_archives/Git"

case $1 in
 'start')
 start 2> /dev/null;;
 'stop')
 stop 2> /dev/null;;
 'create')
 create 2> /dev/null;; 
 *)
 echo "usage $0 start|stop" ;;
esac
Commentaires :

Une signature dans Mail (Apple) avec une image mais sans pièce jointe….

8/05/2017
Auteur : De Emmanuel Grandadam

Marre de recevoir des mails avec des pièces jointes qui ne sont que des images dans les signatures… impossible de déterminer si le mail contient un objet intéressant ou juste une ‘pauvre’ image dans la signature…

Voici comment procéder pour créer une signature avec un image SANS pièce jointe pour le client Mail d’Apple…

Cette méthode fonctionne a conditions de forcer Mail pour la rédaction des messages à utiliser le format « Format texte enrichi » depuis l’onglet « Rédaction » des Préférences de Mail

  1. On transforme (encode) une image en son équivalent en BASE64
    Utiliser le site  -> https://www.base64-image.de/
    Envoyer l’image
    Utiliser la commande copy image
  1. On fabrique une page web avec l’image encodée (image.html)
    <img src= »></body>
    -> Avec dans la définition de ‘src‘ le code copier juste avant.
  2. Ouvrir avec un navigateur
    Testé avec Chrome !
  3. Copier l’image ! Attention il faut faire :
    Sélectionner avec Cmd+A puis
    Copier avec Cmd+C 

  4. Créer une signature dans Mail et coller l’image

  1. Créer un mail et vérifier que le mail n’indique pas de poids (Taille du message : –Ko) ni de gestion d’image (Petite, Moyenne, Grande…)

Version OK !

Pas OK 🙁

Done !

 

Commentaires :