Je n’ai jamais eu de projet ou de besoin qui me pousse à maîtriser Perl ou Python. Je pense qu’ils sont encore plus puissants que bash.
Le script tzsauv.bash a beau être OpenSource et j'ai quelques notions de Bash (quelques scripts à mon compte), mais là pour comprendre le code ou le maintenir, il faut être sacrément persévérant. On dirait du "code obfuscation" (utilisé surtout par les malwares).
Ceci est bien sûr une critique, qui se veut constructive, voir ci-dessous.
Je ne peux que recommander l'apprentissage de Python, qui est une pépite, en termes de facilité d'apprentissage, de beauté de code, d'efficacité, et de puissance de l'outil.(Certes ce n'est pas aussi rapide que du code compilé.)
Le développement du langage Python est très sérieux (sauf le passage de Python2 à Python3), via les PEP. (pas comme PHP qui part dans tous les sens, en utilisant des rustines sur des rustines, sans aucunes logiques ou réflexions, je programme en PHP depuis PHP3, soit plus de 20 ans sans discontinuer)
Python, c'est un peu le nouveau BASIC. (en beaucoup mieux, mais tout aussi facile)
Il vaut vraiment le coup, d'ailleurs beaucoup d'écoles l'enseignent maintenant (c'était le cas de Java à l'époque également, --troll inside--).
Perl est moins lisible.
En langage compilé, équivalent C/C++ (je pense à Badblocks 2), Rust est à la mode.
Il a une très grande communauté, et a une nouvelle approche de programmation. (moins facile à apprendre)
Il est très strict, a une gestion des scopes très restrictive, mais ces efforts sont récompensés, par normalement, aucune fuite de mémoire ou autre buffer overflow.
Il y a moyen de passer les sécurités interne (en utilisant unsafe), mais ce n'est pas conseillé évidement.
Si vous construisez des (premières versions de) programmes communicants qui fonctionneront sur un réseau local (sûr), et pour lesquels les messages échangés sont connus et simples, alors j'ai une bonne nouvelle : vous n'avez pas besoin d'utiliser des services web (ou tout autre type de middleware).
Je pense que plus aucun réseau local n'est sûr.
Vu le nombre d'objets connectés et smartphone sans mise à jour disponible, il faut partir du principe que le réseau local n'est pas sûr malheureusement.
Même en utilisant des pares-feux, on n'est pas à l'abri d'une adresse IP spoofé.
Personnellement, je n'utiliserai les Named Pipes que pour des processus au sein d'une même machine.
Ce qui ralenti surtout Rsync (sur du Gbits ou supérieur), c'est le chiffrement utilisé.
En changeant de système de chiffrement, il est accéléré considérablement. Il devient aussi rapide que "scp" (voir plus rapide).
Attention, il faut que le chiffrement choisi soit disponible sur les 2 pc.
Dans le code, uniquement les hashes sont utilisés pour détecter les fichiers dupliqués.
Or on sait très bien que les hashes ont des collisions, elles sont rares, mais elles existent. (Forcément, sinon pourquoi perdrait-on des milliers de Mo pour stocker des fichiers alors que quelques octets (les hashes) suffisent…)
Pour trouver des fichiers dupliqués voici une approche:
1. On vérifie les tailles (c'est la plus rapide vérification)
2. Si les tailles sont identiques, on vérifie les hashes (complet sur les fichiers) (on stock les hashes pour ne pas les recalculer à chaque fois)
3. Si les hashes sont identiques, on compare les contenus en entier.
J'ai déjà eu des dizaines de fichiers effacés par erreur par un outil qui faisait de la dé-duplication. Liten (https://code.google.com/archive/p/liten/), il y a un également Liten2 (https://code.google.com/archive/p/liten2/) Tous les 2 sont à proscrire. Ils utilisent (enfin utilisaient, je n'ai plus regardé le code source) un hash basé sur les premiers 16Ko des fichiers. Pour aller plus vite…
Pour les doublons le fait de ne vérifier que les hash n'est pas suffisant, les hash peuvent avoir des collisions.
J'en ai déjà fait les frais, des fichiers effacés par erreur lors d'une déduplication,
merci liten2, https://code.google.com/p/liten2/
En effet, chez liten2 c'est encore pire que de comparer les hash complets, il ne compare que les hash des 16 premiers Ko du chaque fichier.
Je pense que le mieux est:
1. Vérification de la taille des fichiers
2. Si même taille, vérification du hash
3. Si même hash faire une vraie comparaison bit à bit.
Merci beaucoup pour ce programme. Il fonctionne vraiment pas mal.
Je l'ai testé avec une liste de prix fournisseur, PDF 2,1MB, 77 pages, 760 lignes x 5 colonnes de tableaux.
Il est juste un peu lent (7min34 preview + 20sec export CSV), mais ce n'est pas là le plus important pour moi, c'est toujours beaucoup plus rapide que de le faire à la main.
Un peu consommateur de ressource. 700MB de RAM pour un pdf de 2,1MB (avec Ruby sur Java c'est normal)
L'interface utilisateur est très bien faite et facile. L'auto-détection de tableau a parfaitement fonctionné sur mon test. Il devait y avoir +-300 petits tableaux.
L'installation est "plug and play", je redoutais le pire avec Ruby. (expérience passée) Mais le fait qu'il soit packagé dans du Java aide sur ce point.
Il n'est pas compatible avec les processeurs multi-coeur (multiprocessing). Je n'en ai qu'un seul thread à 100% avec 4 cores.
Il doit y avoir des fuites mémoires, après plusieurs itérations la mémoire RAM augmente. Après 2 itérations et on en est à 780MB de RAM total.
Pour le problème de la sécurité du wget, rien n'empêche de mettre la domotique sur un réseau wifi exclusivement dédié à cet usage. Pour rappel le ESP8266 peut lui même être un point d'accès.
Il existe également un autre système de communication plus ancien et moins chère que ZigBee, mais il faut s'occuper soit même de la sécurité, le NRF24L01. Mais ce dernier nécessite un microcontrôleur (Arduino par exemple).
Petit comparaison:
- NRF24L01 (2,4ghz mais autre que wifi), 3,3v et TTL en 3.3-5v, Serial, nécessite un microcontrôleur, non chiffré, 0,60€/piece si on en prend 10
- ESP8266 (wifi), 3,3v et TTL en 3,3v, SPI, peut-être tout a fait autonome, chiffré, 2,24€/piece si on en prend 5
- Xbee (zigbee), 3,3v et TTL en 3,3v, Serial, nécessite un microcontrôleur, chiffré, 17 €/piece
Le SDK du ESP8266 n'est pas complètement open source.
Pour la tension d'alimentation du ESP8266 c'est maximum 3,6v (voir TDS). Mais normalement c'est 3,3v et TTL 3,3v, mais l'auteur de cet article a apparement utilisé directement le TTL de l'arduino à 5v alors que certains préconisent un logic level converter (shifter), personnellement j'utilise un arduino en 3,3v.
Pour ceux d'entre-vous qui voudraient également tester le code ou développer sur un STM32F103RCBT6,
il y a ce module, pas cher, pour commencer le développement:
Avec connectique Mini-USB, c'est assez rapide pour la programmation (upload) et très peu onéreux.
Ce qui est bien c'est qu'il peut se faire programmer comme un Arduino (avec un GUI, presque le même).
On peut tester directement le programme en RAM (sans écrire sur la mémoire flash), pratique pour les petits tests.
Mais attention beaucoup des GPIO ne sont pas compatible 5v. C'est presque du 3,3v partout.
Ce qui est bizarre avec inotify, c'est que le l'ajout de répertoire fonctionne parfaitement, mais dès que vous en déplacez un hors du scope (répertoires surveillés) de inotify, et que plus tard vous le re-déplacez dans le scope, il se passe des choses bizarres:
L'ancien watch nommé nodurépertoire devient nodurépertoire-unknown-path
Un nouveau watch est automatiquement créé.
Bref il faut retirer les watch à la main.
ex:
répertoire surveillé: /tmp/inotify/
# mkdir /tmp/inotify/aze
Event IN_CREATE|IN_ISDIR on /tmp/inotify/aze
Event IN_OPEN|IN_ISDIR on /tmp/inotify/aze
Event IN_OPEN|IN_ISDIR on /tmp/inotify/aze
Event IN_CLOSE_NOWRITE|IN_ISDIR on /tmp/inotify/aze
Event IN_CLOSE_NOWRITE|IN_ISDIR on /tmp/inotify/aze
# touch /tmp/inotify/aze/k
Event IN_CREATE on /tmp/inotify/aze/k
Event IN_OPEN on /tmp/inotify/aze/k
Event IN_ATTRIB on /tmp/inotify/aze/k
Event IN_CLOSE_WRITE on /tmp/inotify/aze/k
# mv /tmp/inotify/aze /tmp/
Event IN_MOVED_FROM|IN_ISDIR on /tmp/inotify/aze
[2014-11-25 08:59:08,714 pyinotify ERROR] The pathname '/tmp/inotify/aze' of this watch <Watch wd=3 path=/tmp/inotify/aze mask=4095 proc_fun=None auto_add=True exclude_filter=<function <lambda> at 0x9dfd454> dir=True > has probably changed and couldn't be updated, so it cannot be trusted anymore. To fix this error move directories/files only between watched parents directories, in this case e.g. put a watch on '/tmp/inotify'.
Event IN_MOVE_SELF on /tmp/inotify/aze-unknown-path
# mv /tmp/aze /tmp/inotify/
Event IN_MOVED_TO|IN_ISDIR on /tmp/inotify/aze
[2014-11-25 09:00:15,900 pyinotify ERROR] The pathname '/tmp/inotify/aze' of this watch <Watch wd=3 path=/tmp/inotify/aze mask=4095 proc_fun=None auto_add=True exclude_filter=<function <lambda> at 0x9dfd454> dir=True > has probably changed and couldn't be updated, so it cannot be trusted anymore. To fix this error move directories/files only between watched parents directories, in this case e.g. put a watch on '/tmp/inotify'.
Event IN_MOVE_SELF on /tmp/inotify/aze-unknown-path
Event IN_OPEN|IN_ISDIR on /tmp/inotify/aze
Event IN_OPEN|IN_ISDIR on /tmp/inotify/aze-unknown-path
Event IN_CLOSE_NOWRITE|IN_ISDIR on /tmp/inotify/aze
Event IN_CLOSE_NOWRITE|IN_ISDIR on /tmp/inotify/aze-unknown-path
Rapsberry Pi B = 2,3W (mesuré avec Carte SD et Raspbian)
Raspberry Pi B+ = 1W (non mesuré) normalement d'après l'annonce.
En Belgique, 1 appareil 24h/24, 1W = +-1,5€/an
Il faut quand même nuancer.
Ce n'est pas parce qu'Odoo est utilisé par des grands noms que ces grands noms utilisent le module que vous compter utiliser.
Par exemple, je ne pense pas que Danone utilise le module compta d'OpenERP.
Mais bon c'est clair qu'il faut commencer quelque part.
c'est le seul point négatif avec OpenERP, c'est qu'on ne peut pas savoir si un module a déjà été utilisé en production, et donc fiable à 100%.
Je pense évidement à la compta.
La question a peut-être déjà été posée, mais pourquoi pas avoir utilisé un Rasberry PI ?
Il est déjà très bien équipé, il ne consomme presque rien. (2W) Il n'est pas très cher.
Il possède un bus I2C, un bus 1-Wire, 1 serial, 2 USB, 1 Ethernet, quelques GPIO.
Il y a toujours un problème de vie privée avec les concours mais là c'est un peu bizarre, ils ne sont pas très clairs: http://www.codingame.com/cg/#!challenge:8 (bas de page à droite)
Aucune de vos données n'est transmise à quiconque
sans votre autorisation.
À l'issue du concours, si une entreprise que vous avez sélectionnée souhaite vous contacter et que vous acceptez son invitation, alors nous lui transmettrons vos données personnelles.
Sinon, elle ne saura jamais qui se cache derrière votre code…
Article 7: Publicité
Une fois la mise en relation établie entre le Candidat et l’Employeur intéressé, et le contrat entre les parties signé, Cartser se réserve le droit de publier, sur quelque support que ce soit, aux fins de communication publicitaire ou autre, sur le réseau internet ou non, pour le monde entier, la photo et le nom des Candidats ayant trouvé un poste grâce au Concours CodinGame.
Et cela, sans que les gagnants puissent exiger une contrepartie quelconque ou s'y opposer.
Les critiques permettent d'avoir des avis objectifs et constructifs surtout sur ton produit. C'est comme ça qu'on avance.
Après avoir regardé le code de plus près, il est dommage d'utiliser du français avec de l'anglais.
Par exemple:
/class/admin/class.candidaturemodels.php
@line 63: public function get(){
@line 71: public function voir($id)
@line 103: public function listing($par=20){
@line 160: public function formSupprimer($id)
Il faut choisir une langue. Je te conseillerais quand même l'anglais.
Pour les requêtes SQL pour te faire gagner du temps et en lisibilité, tu peux utiliser des alias.
Ex:
/class/admin/class.gensitemapxml.php
$sqlT = "
SELECT _categories_traduction.uri, _categories_traduction.id,_categories.uri_module , _categories.id, _categories_traduction.nom
FROM _categories, _categories_traduction
WHERE _categories_traduction.langue = '$lgActu'
AND _categories.id = _categories_traduction.id_cat
AND _categories.uri_module = '$name'
ORDER BY _categories.ordre ASC
LIMIT 0 , 30";
devient:
$sqlT = "
SELECT c.uri, t.id, c.uri_module , c.id, t.nom
FROM _categories AS c, _categories_traduction AS t
WHERE t.langue = '$lgActu'
AND c.id = t.id_cat
AND c.uri_module = '$name'
ORDER BY c.ordre ASC
LIMIT 0 , 30";
Attention sur ton site est vulnérable aux injections SQL, il n'y a aucun contrôle sur les données injectées.
/class/core/CRUD.php
@line 196
public function dbQI($data,$table){
$d = "INSERT INTO ".$table." (";
foreach($data as $k=>$v){
$d .= $k.',';
}
$d = substr($d,0,-1);
$d .= ") VALUES (";
foreach($data as $k=>$v){
$d .= '\''.$v.'\',';
}
$d = substr($d,0,-1);
$d .= ")";
$this->dbpdo->query($d);
$id = $this->dbpdo->lastInsertId();
return $id;
}
Pour les langues, au lieu de créer plein de répertoires et fichiers /lang/index.php utilises plutôt ceci:
1- un fichier /.htaccess avec ceci:
RewriteEngine on
RewriteRule ^t/([a-z]{2})/$ t/index.php?lang=$1 [QSA]
2- un fichier /t/index.php avec le contenu de /t/fr/index.php modifié comme ceci:
@line 34 $isLgForce = 'fr';
à remplacer par:
@line 34 $isLgForce = $_GET['lang'];
Pour la détection automatique de la langue voici un petit coup de pouce, il faut utiliser dans l'ordre si disponible:
1. $_GET['lang']
2. $_SESSION['lang']
3. $_COOKIE['lang']
4. $_SERVER['HTTP_ACCEPT_LANGUAGE']
5. langue par défaut.
Voici une implémentation (libre de droit ;)):
$default_language = 'en';
$languages = array('fr','en','de','ru','nl');
function get_array_true_lang($array){
global $languages;
if (!array_key_exists('lang', $array)) return false;
$lang = strtolower($array['lang']);
if (in_array($lang, $languages)) return $lang;
return false;
}
function get_lang(){
global $default_language;
foreach (array($_GET, $_SESSION, $_COOKIE) as $array){
$lang = get_array_true_lang($_GET);
if ($lang) return $lang;
}
//il faut créer une fonction pour analyser $_SERVER['HTTP_ACCEPT_LANGUAGE']
return $default_language;
}
Pas oublier de sauver la valeur après avoir identifié la langue.
Encore un CMS qui ne tient pas compte des préférences des utilisateurs.
Il est multilingue, mais ne détecte pas la langue préférée de l'utilisateur. Comme à mon avis 99% des sites. (Pour testé j'ai changé ma langue préféré en Anglais, détruit les cookies et relancé le site)
Habitant dans un pays multilingue, je déteste à avoir à chercher pour trouver le lien permettant d'avoir le site dans ma langue préférée.
Ici c'est facile, les langues sont visibles au-dessus. Mais prenez par exemple, http://www.samsung.be. Essayez d'avoir le site en Français. Le pire est le message de confirmation qui est dans la langue non choisie.
C'est payant. Il n'y a pas de migration automatique gratuite.
OpenERP a développé les outils de mise à jour, mais ils les gardent secrets, c'est leur gagne pain.
Il faut payer leurs services pour migrer.
Comme cité par Alexis:
L'éditeur ne publie pas de scripts de migration pour les modules officiels ; il le fait payer sous forme de service.
Oui c'est une bonne solution, le seul problème c'est qu'il faut réécrire les fichiers.
Je ne pense pas que tout le monde a accès, ou le droit de modifier les fichiers.
De plus cela pose problème lors de mise à jour de framework externe, d'expérience, un jour on oubliera de modifier à nouveau le code licence.
Ou lorsqu'il y a beaucoup de fichier a traiter.
Une simple détection de certains mots comme 'license', 'copyright',… dans le commentaire serait suffisante. Mais demanderait un peu plus de ressources.
# Code obfuscation
Posté par zyphos . En réponse à la dépêche Sauvegardes (encore !) et restitution. Évalué à 2.
Merci pour l'outil et l'article.
Le script tzsauv.bash a beau être OpenSource et j'ai quelques notions de Bash (quelques scripts à mon compte), mais là pour comprendre le code ou le maintenir, il faut être sacrément persévérant. On dirait du "code obfuscation" (utilisé surtout par les malwares).
Ceci est bien sûr une critique, qui se veut constructive, voir ci-dessous.
Je ne peux que recommander l'apprentissage de Python, qui est une pépite, en termes de facilité d'apprentissage, de beauté de code, d'efficacité, et de puissance de l'outil.(Certes ce n'est pas aussi rapide que du code compilé.)
Le développement du langage Python est très sérieux (sauf le passage de Python2 à Python3), via les PEP. (pas comme PHP qui part dans tous les sens, en utilisant des rustines sur des rustines, sans aucunes logiques ou réflexions, je programme en PHP depuis PHP3, soit plus de 20 ans sans discontinuer)
Python, c'est un peu le nouveau BASIC. (en beaucoup mieux, mais tout aussi facile)
Il vaut vraiment le coup, d'ailleurs beaucoup d'écoles l'enseignent maintenant (c'était le cas de Java à l'époque également, --troll inside--).
Perl est moins lisible.
En langage compilé, équivalent C/C++ (je pense à Badblocks 2), Rust est à la mode.
Il a une très grande communauté, et a une nouvelle approche de programmation. (moins facile à apprendre)
Il est très strict, a une gestion des scopes très restrictive, mais ces efforts sont récompensés, par normalement, aucune fuite de mémoire ou autre buffer overflow.
Il y a moyen de passer les sécurités interne (en utilisant unsafe), mais ce n'est pas conseillé évidement.
Les gros problèmes de Rust:
Plus difficile à apprendre
il n'y a aucune vérification des "Crates" (bibliothèques publiques), et cela point de vue sécurité, c'est un peu compliqué.
voir entre-autres:
https://internals.rust-lang.org/t/crates-io-is-at-risk-of-wormable-malware/18873
il faut le recompiler pour chaque plateforme, c'est compliqué de faire un binaire qui fonctionne partout et qui est léger (< 1MB).
[^] # Re: Typo dans le premier bloc de code
Posté par zyphos . En réponse à la dépêche PHP sort en version 8.2. Évalué à 1. Dernière modification le 06 décembre 2022 à 08:56.
La fin de ligne devrait même être vide en fait.
# Réseau local sûr
Posté par zyphos . En réponse à la dépêche Oubliez les web services, utilisez des tubes nommés. Évalué à 10.
Je pense que plus aucun réseau local n'est sûr.
Vu le nombre d'objets connectés et smartphone sans mise à jour disponible, il faut partir du principe que le réseau local n'est pas sûr malheureusement.
Même en utilisant des pares-feux, on n'est pas à l'abri d'une adresse IP spoofé.
Personnellement, je n'utiliserai les Named Pipes que pour des processus au sein d'une même machine.
[^] # Re: Le poids des images, le choc des photos
Posté par zyphos . En réponse à la dépêche Student Demo Cup 2017 : résultats. Évalué à 2.
Il y a un tout petit peu plus d'informations sur les projets gagnants, via cette page:
http://student.opensourcesummit.paris/edition/
Mais c'est toujours très édulcoré.
[^] # Re: copie efficace vers/de une machine distante
Posté par zyphos . En réponse à la dépêche Sortie de gfast-copy et de fast-copy sur www.open-source-projects.net. Évalué à 3.
Ce qui ralenti surtout Rsync (sur du Gbits ou supérieur), c'est le chiffrement utilisé.
En changeant de système de chiffrement, il est accéléré considérablement. Il devient aussi rapide que "scp" (voir plus rapide).
Attention, il faut que le chiffrement choisi soit disponible sur les 2 pc.
Source:
https://gist.github.com/KartikTalwar/4393116
# Attention à la dé-duplication
Posté par zyphos . En réponse à la dépêche Optimisations et corrections pour Fim 1.2.3. Évalué à 5.
Dans le code, uniquement les hashes sont utilisés pour détecter les fichiers dupliqués.
Or on sait très bien que les hashes ont des collisions, elles sont rares, mais elles existent. (Forcément, sinon pourquoi perdrait-on des milliers de Mo pour stocker des fichiers alors que quelques octets (les hashes) suffisent…)
Pour trouver des fichiers dupliqués voici une approche:
1. On vérifie les tailles (c'est la plus rapide vérification)
2. Si les tailles sont identiques, on vérifie les hashes (complet sur les fichiers) (on stock les hashes pour ne pas les recalculer à chaque fois)
3. Si les hashes sont identiques, on compare les contenus en entier.
J'ai déjà eu des dizaines de fichiers effacés par erreur par un outil qui faisait de la dé-duplication. Liten (https://code.google.com/archive/p/liten/), il y a un également Liten2 (https://code.google.com/archive/p/liten2/) Tous les 2 sont à proscrire. Ils utilisent (enfin utilisaient, je n'ai plus regardé le code source) un hash basé sur les premiers 16Ko des fichiers. Pour aller plus vite…
# Conversion données -> CSV
Posté par zyphos . En réponse à la dépêche Oui, Illico !. Évalué à 2.
Pour la conversion des données en CSV, avant traitement avec Illico, il peut être utile d'utiliser Pentaho Kettle.
Bon ok, ça fait un peu usine à gaz juste pour convertir.
Il y a aussi quelques fonctions redondantes avec Illico.
[^] # Re: Questions
Posté par zyphos . En réponse à la dépêche Katal, catalogue de fichiers. Évalué à 3.
On parle de données (ex: photos de famille), je pense qu'un risque, même très faible, n'est pas acceptable pour des données.
De plus la comparaison bit à bit ne se ferait qu'en cas très rare d'hash identique. Donc, la perte de performance sera très faible et justifiée.
Par contre vérifier la taille des fichiers me semble être vraiment le strict minimum. Bien avant de calculer et comparer un hash.
Pour optimiser le tout, je ne calculerais les "hash"s que si au moins 2 fichiers ont la même taille. Puis évidement ils seraient stockés dans la DB.
[^] # Re: Questions
Posté par zyphos . En réponse à la dépêche Katal, catalogue de fichiers. Évalué à 3.
Pour les doublons le fait de ne vérifier que les hash n'est pas suffisant, les hash peuvent avoir des collisions.
J'en ai déjà fait les frais, des fichiers effacés par erreur lors d'une déduplication,
merci liten2, https://code.google.com/p/liten2/
En effet, chez liten2 c'est encore pire que de comparer les hash complets, il ne compare que les hash des 16 premiers Ko du chaque fichier.
Je pense que le mieux est:
1. Vérification de la taille des fichiers
2. Si même taille, vérification du hash
3. Si même hash faire une vraie comparaison bit à bit.
# Extraordinaire
Posté par zyphos . En réponse à la dépêche Sortie de Tabula 1.0.1 - Extraction de données tabulaires dans des pdfs. Évalué à 10.
Merci beaucoup pour ce programme. Il fonctionne vraiment pas mal.
Je l'ai testé avec une liste de prix fournisseur, PDF 2,1MB, 77 pages, 760 lignes x 5 colonnes de tableaux.
[^] # Re: more on that...
Posté par zyphos . En réponse à la dépêche Internet des objets l'ESP8266 et ma porte de garage. Évalué à 3.
Auto upload sur l'IDE arduino, c'est possible.
http://www.arduinesp.com/
Il y a deux méthodes:
1. Avec 2 transistors NPN + 2 résistances
http://www.arduinesp.com/blink
2. Liens en direct, mais on perd le moniteur série. (l'accès au port série pour le débuguer)
http://www.arduinesp.com/blink_no-serial-monitor
Pour installer l'IDE arduino:
http://www.arduinesp.com/getting-started Section
Apparemment l'upload est basé sur esptool-ck:
https://github.com/igrr/esptool-ck
[^] # Re: more on that...
Posté par zyphos . En réponse à la dépêche Internet des objets l'ESP8266 et ma porte de garage. Évalué à 7. Dernière modification le 11 septembre 2015 à 11:14.
Pour le problème de la sécurité du wget, rien n'empêche de mettre la domotique sur un réseau wifi exclusivement dédié à cet usage. Pour rappel le ESP8266 peut lui même être un point d'accès.
Il existe également un autre système de communication plus ancien et moins chère que ZigBee, mais il faut s'occuper soit même de la sécurité, le NRF24L01. Mais ce dernier nécessite un microcontrôleur (Arduino par exemple).
Petit comparaison:
- NRF24L01 (2,4ghz mais autre que wifi), 3,3v et TTL en 3.3-5v, Serial, nécessite un microcontrôleur, non chiffré, 0,60€/piece si on en prend 10
- ESP8266 (wifi), 3,3v et TTL en 3,3v, SPI, peut-être tout a fait autonome, chiffré, 2,24€/piece si on en prend 5
- Xbee (zigbee), 3,3v et TTL en 3,3v, Serial, nécessite un microcontrôleur, chiffré, 17 €/piece
Le SDK du ESP8266 n'est pas complètement open source.
Pour la tension d'alimentation du ESP8266 c'est maximum 3,6v (voir TDS). Mais normalement c'est 3,3v et TTL 3,3v, mais l'auteur de cet article a apparement utilisé directement le TTL de l'arduino à 5v alors que certains préconisent un logic level converter (shifter), personnellement j'utilise un arduino en 3,3v.
Selon certain site on peut l'alimenter jusqu'à 4,5V, mais il consomme 100x plus en veille que en dessous de 3,8V
http://forum.makehackvoid.com/t/esp8266-operating-voltage-range-and-sleep-current/286
Un livre gratuit a été écrit sur le ESP8266, mais il est en anglais.
http://neilkolban.com/tech/esp8266/
Un wiki est disponible:
https://github.com/esp8266/esp8266-wiki/wiki
Ainsi que des forums:
http://www.esp8266.com/
Et enfin la technical datasheet (TDS):
https://drive.google.com/file/d/0B_ctPy0pJuW6Y0FHcDlVY09Xdjg/view
# Carte de dev alternative basé sur le STM32F10xxx à bas coût, le Leaf Maple Mini
Posté par zyphos . En réponse à la dépêche Écrire son système d'exploitation - Partie 1 : préparer le terrain. Évalué à 1.
Pour ceux d'entre-vous qui voudraient également tester le code ou développer sur un STM32F103RCBT6,
il y a ce module, pas cher, pour commencer le développement:
Leaf Maple Mini
Wiki: http://leaflabs.com/docs/hardware/maple-mini.html
Prix: environs 4€ (chez Ali…)
Avec connectique Mini-USB, c'est assez rapide pour la programmation (upload) et très peu onéreux.
Ce qui est bien c'est qu'il peut se faire programmer comme un Arduino (avec un GUI, presque le même).
On peut tester directement le programme en RAM (sans écrire sur la mémoire flash), pratique pour les petits tests.
Mais attention beaucoup des GPIO ne sont pas compatible 5v. C'est presque du 3,3v partout.
[^] # Re: Race conditions
Posté par zyphos . En réponse à la dépêche Exploiter inotify, c’est simple. Évalué à 1.
Ce qui est bizarre avec inotify, c'est que le l'ajout de répertoire fonctionne parfaitement, mais dès que vous en déplacez un hors du scope (répertoires surveillés) de inotify, et que plus tard vous le re-déplacez dans le scope, il se passe des choses bizarres:
ex:
répertoire surveillé: /tmp/inotify/
[^] # Re: Wordpress = + de perfs?
Posté par zyphos . En réponse à la dépêche Votre blogue à la maison sur Raspberry Pi. Évalué à 2.
Rapsberry Pi B = 2,3W (mesuré avec Carte SD et Raspbian)
Raspberry Pi B+ = 1W (non mesuré) normalement d'après l'annonce.
En Belgique, 1 appareil 24h/24, 1W = +-1,5€/an
[^] # Re: encore du travail pour être reconnu
Posté par zyphos . En réponse à la dépêche Sortie de Odoo 8 (anciennement OpenERP). Évalué à 3. Dernière modification le 23 septembre 2014 à 15:34.
Justement, pour Odoo et Opencencerto il y a un support Entreprise.
Et pour Odoo, il y a les intégrateurs qui font également le support.
Donc cet argument est tout à fait caduc.
[^] # Re: J'ai trop la flemme de vérifier...
Posté par zyphos . En réponse à la dépêche Sortie de Odoo 8 (anciennement OpenERP). Évalué à 3.
Il faut quand même nuancer.
Ce n'est pas parce qu'Odoo est utilisé par des grands noms que ces grands noms utilisent le module que vous compter utiliser.
Par exemple, je ne pense pas que Danone utilise le module compta d'OpenERP.
Mais bon c'est clair qu'il faut commencer quelque part.
c'est le seul point négatif avec OpenERP, c'est qu'on ne peut pas savoir si un module a déjà été utilisé en production, et donc fiable à 100%.
Je pense évidement à la compta.
[^] # Re: Où est ce qu'on achète
Posté par zyphos . En réponse à la dépêche L’arrivée du BananaPi. Évalué à 1.
Il est déjà en vente sur un site chinois très connu (il faut compter 2 semaines pour la livraison)
€38,65/piece, livraison gratuite.
C'est le premier lien si on cherche "buy banana pi" sur G..gle (attention les versions moins chères ont 20€ de frais de port)
# Dialogues
Posté par zyphos . En réponse à la dépêche Je crée mon jeu vidéo E08 : fiche de lecture de «L'Art du game design» par Jesse Schell. Évalué à 3.
Pour les dialogues, voici un petit exemple dans un autre jeux libre (Andors' trail). Ce n'est pas du YAML mais du JSON (JSON est compatible YAML il me semble), la structure en YAML serait presque la même:
http://code.google.com/p/andors-trail/source/browse/#git%2FAndorsTrail%2Fres%2Fraw
# Pourquoi pas un Raspberry Pi ?
Posté par zyphos . En réponse à la dépêche Jeudi du libre le 5 décembre à Lyon : la domotique. Évalué à 1.
La question a peut-être déjà été posée, mais pourquoi pas avoir utilisé un Rasberry PI ?
Il est déjà très bien équipé, il ne consomme presque rien. (2W) Il n'est pas très cher.
Il possède un bus I2C, un bus 1-Wire, 1 serial, 2 USB, 1 Ethernet, quelques GPIO.
# Concours et vie privée
Posté par zyphos . En réponse à la dépêche Concours de programmation CodinGame le 28 mai 2013. Évalué à 2.
Il y a toujours un problème de vie privée avec les concours mais là c'est un peu bizarre, ils ne sont pas très clairs:
http://www.codingame.com/cg/#!challenge:8 (bas de page à droite)
Et puis dans le règlement:
http://www.codingame.com/cg/#!rules
[^] # Re: Merci pour vos critiques
Posté par zyphos . En réponse à la dépêche doorGets CMS, très jeune CMS Open Source français. Évalué à 10.
Les critiques permettent d'avoir des avis objectifs et constructifs surtout sur ton produit. C'est comme ça qu'on avance.
Après avoir regardé le code de plus près, il est dommage d'utiliser du français avec de l'anglais.
Par exemple:
/class/admin/class.candidaturemodels.php
@line 63:
public function get(){
@line 71:
public function voir($id)
@line 103:
public function listing($par=20){
@line 160:
public function formSupprimer($id)
Il faut choisir une langue. Je te conseillerais quand même l'anglais.
Pour les requêtes SQL pour te faire gagner du temps et en lisibilité, tu peux utiliser des alias.
Ex:
/class/admin/class.gensitemapxml.php
devient:
Attention sur ton site est vulnérable aux injections SQL, il n'y a aucun contrôle sur les données injectées.
/class/core/CRUD.php
@line 196
à remplacer par:
Il y en a sûrement d'autres, je n'ai pas tout lu.
Pour les langues, au lieu de créer plein de répertoires et fichiers /lang/index.php utilises plutôt ceci:
1- un fichier /.htaccess avec ceci:
2- un fichier /t/index.php avec le contenu de /t/fr/index.php modifié comme ceci:
@line 34
$isLgForce = 'fr';
à remplacer par:
@line 34
$isLgForce = $_GET['lang'];
Pour la détection automatique de la langue voici un petit coup de pouce, il faut utiliser dans l'ordre si disponible:
1.
$_GET['lang']
2.
$_SESSION['lang']
3.
$_COOKIE['lang']
4.
$_SERVER['HTTP_ACCEPT_LANGUAGE']
5. langue par défaut.
Voici une implémentation (libre de droit ;)):
Pas oublier de sauver la valeur après avoir identifié la langue.
PS: c'est inutilisable la syntaxe Wiki de LinuxFR. Ils auraient dû prendre la syntaxe Wiki de wikimedia (ça bug non stop).
# Multilingue c'est bien, dans la bonne langue c'est mieux.
Posté par zyphos . En réponse à la dépêche doorGets CMS, très jeune CMS Open Source français. Évalué à 3.
Encore un CMS qui ne tient pas compte des préférences des utilisateurs.
Il est multilingue, mais ne détecte pas la langue préférée de l'utilisateur. Comme à mon avis 99% des sites. (Pour testé j'ai changé ma langue préféré en Anglais, détruit les cookies et relancé le site)
Habitant dans un pays multilingue, je déteste à avoir à chercher pour trouver le lien permettant d'avoir le site dans ma langue préférée.
Ici c'est facile, les langues sont visibles au-dessus. Mais prenez par exemple, http://www.samsung.be. Essayez d'avoir le site en Français. Le pire est le message de confirmation qui est dans la langue non choisie.
[^] # Re: Rabat joie
Posté par zyphos . En réponse à la dépêche Expérience de déploiements d’OpenERP dans des entreprises françaises. Évalué à 2.
C'est payant. Il n'y a pas de migration automatique gratuite.
OpenERP a développé les outils de mise à jour, mais ils les gardent secrets, c'est leur gagne pain.
Il faut payer leurs services pour migrer.
Comme cité par Alexis:
[^] # Re: Est-ce compatible avec les licences d'utilisation ? (Minifying)
Posté par zyphos . En réponse à la dépêche Mod_pagespeed : un accélérateur de pages Web. Évalué à 1.
Oui c'est une bonne solution, le seul problème c'est qu'il faut réécrire les fichiers.
Je ne pense pas que tout le monde a accès, ou le droit de modifier les fichiers.
De plus cela pose problème lors de mise à jour de framework externe, d'expérience, un jour on oubliera de modifier à nouveau le code licence.
Ou lorsqu'il y a beaucoup de fichier a traiter.
Une simple détection de certains mots comme 'license', 'copyright',… dans le commentaire serait suffisante. Mais demanderait un peu plus de ressources.