Overblog
Suivre ce blog Administration + Créer mon blog
23 août 2016 2 23 /08 /août /2016 14:39
Skara : gérez votre magasin au quotidien !
Skara : gérez votre magasin au quotidien !

Dans une entreprise le logiciel de gestion commerciale est l'élément centrale le plus important. il sera non seulement la mémoire et l'outil principal de gestion de votre entreprise mais il vous donnera aussi des indicateurs de performances qui vous permettront de piloter efficacement votre entreprise. Ces outils logiciels permettent d’accéder à de nombreuses statistiques sur vos marges, vos commandes, vos ventes, les zones de chalandises les performances de vos produits, votre stock, votre chiffre d’affaires. Ils vous permettent d'anticiper car il vous livrent une vision globale de votre activité.

Actuellement de nombreux logiciels existent sur le marché. Afin de faire le bon choix, nous vous conseillons de définir vos besoins pour écarter les fonctionnalités qui ne vous seront pas utiles. Au contraire, il est important de pouvoir gérer au minimum :

  • Des informations sur les clients et prospects,
  • La gestion des commandes devis et factures
  • La gestion des stocks
Partager cet article
Repost0
28 juin 2016 2 28 /06 /juin /2016 11:29

La société EMOTA Construction vous accompagne pour la réalisation de vos travaux dans le domaine du neuf ou de la rénovation de votre maison ou appartement. Vous pourrez ainsi économiser votre temps et votre argent le tout en respectant vos objectifs !

La société Emota travail en collaboration avec différents prestataires spécialisés et expérimentés qu'elle a l'habitude de faire travailler en totale efficacité.

Cette société travail dans le secteur de Lyon, Givors, Saint etienne.

Pour plus de renseignement consultez le site Emota

Partager cet article
Repost0
11 mars 2016 5 11 /03 /mars /2016 09:30

Il est possible à partir d'une webapplication d'ouvrir directement Redmine en ayant auparavant authentifié l'utilisateur.
Pour ce faire il faut activer l'autologin sur redmine en suivant les étapes :
- activer les connexions automatiques dans configuration/authentification "durée maximale de connexion automatique" => 7 jours


- dans le fichier config/configuration.yml activer l'autologin :
autologin_cookie_name: autologin
autologin_cookie_path: /
autologin_cookie_s
ecure: false


- ensuite pour faire un test il convient d'insérer un tokens de la façon suivante :

insert into tokens (user_id, action, value, created_on) values (57,'autologin','4277e87755e03ca3ad3b343ede51971dec52852b',now());
ou 57 sera l'i de la table user
Dans le script php plus bas le token sera créé automatiquement après avoir vérifier l'utilisateur ce qui sera plus pratique en cas de changement de configuration

- puis il vous faudra setter le cookie pour connecter automatiquement l'utilisateur le cookie devra évidement avoir la valeur du token dans la table
en php
setcookie('autologin', '4277e87755e03ca3ad3b343ede51971dec52852b', time()+60*60*4, '/', '.yourdomain.be');

Le problème c'est que votre application devra être un sous domaine de votre redmine sinon le cookie sera invalide ...

Heureusement vous pouvez contourner cette action en créant une page php d'autologin (autologin.php) directement sur le répertoire redmine. Redmine étant en ruby le php sera simplment exécuter par apache sans déranger redmine.


Mais attention pour que cette page soit sécurisée il faut prendre quelques précautions.

Cette page php doit dans l'idéal :
- recevoir en variable REQUEST le login de l'utilisateur et un verrou codé avec un mot de passe que les deux serveurs connaissent (= >qui permette à coup sûr de s'assurer de la bonne personne). Par exemple nous vous proposons de coder le login de l'utilisateur avec un password par type :

$cle=hash_hmac('ripemd160', 'login_user', 'mot_de_passe_secret');

Puis le php autologin.php à poser dans redmine/public
<?php

$token=substr(hash_hmac('ripemd160', $_REQUEST[''login_user'], 'mot_de_passe_secret'),0,20);
// si mauvais verrou alors on vire l'uti
if ($_REQUEST['verrou']!=$tok
en) return ;


$link = mysql_connect('localhost', 'redmine', 'redmine');
if (!$link) {
die('Connexion impossible : ' . mysql_error());
}
$db_selected = mysql_select_db('redmine_bd', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
//on cherche l'id_user
$query="select * from users where login='".$_
REQUEST['user_login']."'";
$result = mysql_query($query);

exec requete ";
while ($row = mysql_fetch_assoc($result)) {
//echo $row['id'];
$id=$row['id'];
//echo $row['login'];
}

if ($id>2) {
//on delete le token actuel si il en existe un
$rq="delete from tokens where user_id='".$id."'";
$result = mysql_query($rq);
//on re cré un token ici on pourrait mettre n'importe quel token et le créé à la volé
$rq="INSERT INTO `tokens` (`id`, `user_id`, `action`, `value`, `created_on`) VALUES (NULL, '$id', 'autologin', '$token', now
());";
$result = mysql_query($rq);

setcookie('autologin', $token, time()+60*60*4, '/', 'mredmine.monnomdedomaine.fr');

}
header('Location:
/');
?>

Explication : ce script posé sur le serveur Redmine va créer le cookie d'autologin avec la bonne valeur du token utilisé par redmine. Plutôt que de chercher la valeur du token redmine on le fixe déjà en supprimant l'ancien dans la table token et en le récréant "delete ... puis insert". C'est un tantinet violent mais ca marche !

évidement avant on s'assure que l'utilisateur ai le droit de faire cela pour ceci on utilise une astuce qui est le chiffrement du login avec une clé privée 'mot_de_passe_secret' que les deux serveur doivent connaître.

Partager cet article
Repost0
28 février 2014 5 28 /02 /février /2014 11:50

Si vous êtes hébergeur web vous pouvez être confronté au problème des acces logs d'apache qui deviennent illisibles et trop lourds ( sauf à utiliser aiwstats! ).

Dans ce cas vous pouvez, grâce à la directive env, du custom log ne logger que les fichier php et html par exemple.

Cela  vous permettra de réduire le poids des fichiers de logs tout en gardant des logs lisibles en cas de problème.

 

 

Pour ce faire dans les virtualhost de vos sites vous devez rajouter les commandes suivantes :

 

        SetEnvIf Request_URI "\.html$" dolog
        SetEnvIf Request_URI "\.php$" dolog
        CustomLog /var/log/apache2/monsite-access.log combined env=dolog
       

Partager cet article
Repost0
3 juillet 2013 3 03 /07 /juillet /2013 09:40

accueil.pnge-Obs editeur de logiciel à façon propulse sa suite logicielle Skara en la dotant d'un site internet.

La suite logiciel Skara est utilisée dans les magasins de meubles comme outil complet de gestion de magasin (stock gamme catalogue, fousnisseur, comptabilité, ....)

 

Fort d'une interface web, paramètrable et sans installation le logiciel skara est en passe de  devenir un des leaders du marché.

 

Découvrez skara.

Partager cet article
Repost0
12 juin 2013 3 12 /06 /juin /2013 14:25

pinguin

 

Sauvegarde automatisé en script des bases de données et sources de vos sites internet et application.

 

Rien de plus simple qu'un petit script de backup de différents répertoires dans un shell script sous linux.

 

Le principe un shell script lancé via la commande crontab -e va sauvegarder tous les répertoires contenu dans un micro fichier de conf (ici : /root/liste_rep.conf).

 

L'interêt d'un fichier de conf : quand vous ajoutez un répertoire vous ne modifiez pas le script.

 

Etape 1 : le fichier de conf des répertoires

Créez un nouveau fichier texte /root/liste_rep.conf et saisissez tous les répertoire que vous souhaitez sauvegardé ligne par ligne.

 

Etape 2 : copiez et adaptez le script ci-dessous /root/script_backup_source.sh

a savoir que les backups sont dans ce cas copiés en tar.gz dans /home/backup ils seront supprimés après transfert ( option enlever le rm)

paramètrez les accès ftp pour votre serveur et n'oubliez pas de donner les droits d'execution à votre script ( chmod ug+x script_backup_source)

#!/bin/bash

 

LC_TIME=fr_FR

today=`date +%d`

day=`date +%u`

month=`date +%b`

 

CHEMIN_BASE='/home'

CHEMIN_BACKUP='/home/backup'

FTP_HOTE='monadresseftp.com'

FTP_LOGIN='backup'

FTP_PASS='backup'

 

 

for i in `cat /root/liste_rep.conf`;

do

tar -czf /home/backup/$i$day.tar.gz /home/$i

echo " Sauvegarde de $i effectue ";

ftp -in <<EOF

open ${FTP_HOTE}

user ${FTP_LOGIN} ${FTP_PASS}

bin

verbose

prompt

lcd ${CHEMIN_BACKUP}

cd local_rep

mput $i$day.tar.gz

bye

EOF

 

rm /home/backup/$i$day.tar.gz

 

done

 

 

Etape 3: le crontab

éditez le fichier crontab et ajoutez la ligne

 

9 2 * * * /root/script_backup_source.sh

Pour plus d'info sur la commande crontab : cliquez-ici

Partager cet article
Repost0
24 août 2012 5 24 /08 /août /2012 15:51

Ergonomie d’application vs cohérence des écrans ;

Arriverons-nous un jour à mettre d’accord les développeurs d’application et les utilisateurs de ces dernières ? C’est très souvent une question d’ergonomie mais ce n’est jamais simple.

En effet le premier, l’informaticien ne voit que les actions Creation, Modification et Suppression et toutes les fonctionnalités qui composent l’application. Il aura tendance à trier ses fonctionnalités par thèmes avec une cohérence et une structure forte.  Le deuxième lui ne voit que son usage et les processus qui l’intéressent.  Ces processus sont très souvent directifs et ils n’intègrent souvent que 20% des fonctionnalités totales de cette application.

 

Pour réussir une bonne ergonomie le technicien doit se rapprocher de l’usage donc de l’utilisateur via des ‘Personas’ et surtout il doit s’éloigner et c’est le plus difficile de ses habitudes et de son rangement thèmatique en négligeant la cohérence de l’application au profit de la fluidité des processus. En appliquant la règle du 80/20 il apparait que 20% des fonctionnalité sont utilisées dans 80% des cas :  Il paraitrait donc logique pour l’utilisateur de minimiser les étapes ( donc les clics) pour les fonctions les plus utilisées quitte à casser la cohérence des écrans.

Imaginez un e-commerce ou le bouton pour supprimer un produit soit de la même taille que le bouton pour en commander un !

La taille des boutons dans une application et leurs places n’ont pas simplement pour fonction d’être agréable à la vue mais surtout d’attirer l’attention dans un processus plus global.

En terme de développement, il faudra évidement différencier deux cas, le développement d’un produit et l’informatisation d’un processus. Dans le premier cas l’utilisateur devra s’adapter à l’application (et non l’inverse) ou alors il pourra la paramétrer  un minimum. Dans le second cas, si le processus est connu il faudra se caler sur ce processus au détriment de la cohérence produit, quitte à doubler les entrés fonctionnelles, autrement dit pouvoir faire la même action à deux endroits dans le logiciel directement dans un processus ou bien rangé dans un menu ordonné.

 

 

Partager cet article
Repost0
26 juin 2012 2 26 /06 /juin /2012 15:32

robert

 

Inimaginable aujourd’hui la vie sans le web a bel et bien existé. Il fut un temps ou l’accès au savoir et à la connaissance était long et fastidieux. A tel point que l’accumulation d’information dans notre mémoire avait un intérêt évident. Il paraissait à l’époque utile de connaître la liste des départements par cœur, de pouvoir citer quelques ministres de la cinquième république, tant la difficulté d’avoir ces informations le moment venu était laborieuse : Qui se souvient d’avoir cherché un numéro de département dans l’annuaire, un mot dans le dictionnaire . Aujourd’hui le caractère instantané d’accès à l’information rend ce savoir quasi inutile et, par extension les objets physiques de ce savoir futiles. L’encyclopédie papier, l’annuaire et le dictionnaire ont souffert de la progression d’internet.

Mais, si la conséquence sur les objets utilisés est anodine, qu’en est-il de notre mémoire, de notre mode de vie ?

L’enregistrement en mémoire du savoir a-t-elle été remplacé par celui de simples méthodes d’accès ? Notre cerveau sera-t-il amené à devenir un méta enregistreur de favoris, un méta moteur de recherche ! Quels seront les conséquences de ce changement au niveau évolutionniste ? Depuis des milliers d’année le mode de vie de l’homme a changé et a entraîné des changements sur sa morphologie.  Il ne fait aucun doute que l’accès au savoir aura lui aussi des conséquences fortes. Combien de fois nous est-il arrivé de chercher, de faire travailler nos neurones pendant quelques minutes alors qu’aujourd’hui une  vingtaines de secondes suffiraient sur wikipédia.  Cette facilité, accompagné d’une certaine paresse ne peut être sans conséquence. Qu’en est-t-il aussi de notre faculté d’apprentissage ? Certaines personnes c’est connu ont une mémoire visuelle : ils ont besoin de voir. D’autres une mémoire écrite : Ils ont besoin d’écrire pour apprendre. Et si certain avait une mémoire de recherche, si je cherche quelque chose pendant des heures m’en rappellerai-je plus facilement que si je l’avais trouvé instantanément ? Si le processus même de recherche d’une information dans nos neurones avait une incidence sur nos capacités cognitives ? Le web entraînerait donc un reclassement des élites ! Les meilleurs seront ceux qui pourront s’adapter le plus facilement, dont le cerveau réagirai le mieux et saurait utiliser au mieux tout ce que l’informatique en général et le web en particulier peut nous apporter.

Ce problème n'est évidement pas nouveau éjà l'avènement de la calculatrice avait interrogé nosgrand parents et plus lointain : Platon dans Phèdre prétait à Socrate la phrase suivante :

 
« Et c'est ainsi que toi, père de l'écriture, tu lui attribues, par bienveillance, tout le contraire de ce qu'elle peut apporter. Elle ne peut produire dans les âmes, en effet, que l'oubli de ce qu'elles savent en leur faisant négliger la mémoire. Parce qu'ils auront foi dans l'écriture» 
 

à méditer ...

Partager cet article
Repost0
20 juin 2012 3 20 /06 /juin /2012 11:46

Pour un projet de développement il est courant  d'avoir deux plate-formes, une de Test et une de Prod. Il est alors souvent galère de gérer les mises à jour de chacune des bases de données. Pour ce faire évidement un fichier de maj SQL dans le gestionnaire de version s'impose !

Cependant il est souvent pratique en cas d'erreur d'avoir rapidement le dif structurel d'une base de donnée à une autre.

 

Voici donc un petit script à mettre dans un sh exécutable ( chmod u+x nom_du_script). bd1 est le nom de la base1, bd2 le nom de la deuxième. Ce script peut se contenter de la structure de la base mais vous pouvez aussirajouter le contenu de certaines tables contenant par exemple des metat données ( paramètrage de l'application) Ceci peut vous permettre de comparer le paramètrage de vos applications

 

 

mysqldump -ulogin1 -ppass1 bd1 --no_data > bd1_fc.sql
mysqldump -ulogin1 -ppass1 --extended_insert=false bd1 --tables ici_mettez_les_tables_contenant_des_meta_donnees >> bd1_fc.sql


mysqldump -ulogin2 -ppass2 jdm --no_data > bd2_fc.sql
mysqldump -ulogin2 -ppass2 jdm --extended_inser=false --tables
ici_mettez_les_tables_contenant_des_meta_donnees >> bd2_fc.sql


diff bd1_fc.sql bd2_fc.sql | grep -v AUTO_INCREMENT | grep -v database > diff_bd1_bd2.sql
rm bd1_fc.sql
rm bd2_fc.sql
cat diff_bd1_bd2.sql

 

 

pour le diff nous enlevons les auto increment qui n'ont pas à ressortir en tant que différence de  structure.

en savoir plus sur la commande diff : cliquez-ici

Partager cet article
Repost0
29 février 2012 3 29 /02 /février /2012 13:16

Une base de donnée est le modèle global d'enregistrement des données. Il doit être utilisé dans les règles de l'art et dans la plupart des cas il est amplemant suffisant  !!

 

Cependant dans certains cas particuliers il faut tout de même préférer l'enregistrement en XML plutôt qu' en base de donnée.

Par exemple dans le cas d'une plate forme documentaire le document s'il est mal défini peut-être enregistré directement en XML. Mais dans des cas plus complexes certaines fois il peut aussi être utile d'utiliser XML.

 

Ces cas de modélisation se retrouvent lorsque l'on a beaucoup de mal à définir le modèle de données.

 

Par exemple si nous arrivons sur la définition d'un modèle avec beaucoup trop de choix possibles sans aucune contrainte.

 

Exemple : un compte rendu de ruénion se défini avec un texte,  un titre,  plusieurs sous titre ou pas de sous titre  un menu ou pas, un paragraphe ou pas ... un deuxième paragraphe ou pas .... dans ce cas l'enregistrement en base de données structuré n'est pas possible car trop fastidieux il faut donc penser à un enregistrement en XML !

 

Il m'est arrivé par exemple sur des gros moteurs de recherches d'enregistrer des critères de recherches saisi par l'utilisateur en XML car ma définition contenait trop de ou qui se traduisait par autant de table croisée 1,N ... 1,N !

 

Voici une tableau comparatif

 

types Base de données Fichier Xml
caractèristiques

Structuré

Cardinalité prévisible

peu évolutivité

export peu probable

Non structuré

cardinalité non prévisible

usage du "ou" multiple pour définir

fortement changeant

export multi plate forme

 

Exemples

Tous logiciel de gestion de gestion

besoin éventuel de statistiques

 

Fichier de configuration

plate forme documentaire

HTML

enregistrement de traces données

statistiques n'ayant aucun sens

enregistrement de critère de recherche

 

 

A noter que très souvent j'ai combiné l'utilisation des deux la base de données manipulant dans certains cas des fichiers XML.

Partager cet article
Repost0