Cardane Posté(e) le 23 novembre 2017 Signaler Posté(e) le 23 novembre 2017 suis d'accord avec @BenjyNet... une bonne entête de fonction, bien claire et obligatoire, et ca doit être suffisant. On prend le bout de code, on sait ce qu'il fait, ce qu'il retourne, ce qu'il veut en entrée, et à la rigueur on s'en fout de savoir comment il le fait. Et si on veut malgré tout le savoir, ben , on l'analyse et on essaie de comprendre, c'est comme ca que tout le monde pourra progresser en LUA Bon, après, fait pas comparer ca avec GEA ... entre GEA et un snippet de 20 lignes, il y a de la marge, et je comprends que le sujet Support GEA soit des plus utiles....
BenjyNet Posté(e) le 13 décembre 2017 Auteur Signaler Posté(e) le 13 décembre 2017 Alors, on en est où de cette idée ?? On fait quelque chose ou on abandonne ?
Lazer Posté(e) le 13 décembre 2017 Signaler Posté(e) le 13 décembre 2017 C'est toujours une bonne idée, il faut le faire, mais la grand question, c'est "on fait quoi" ? Parce que c'est pas super clair pour l'instant.
pepite Posté(e) le 13 décembre 2017 Signaler Posté(e) le 13 décembre 2017 J'en étais resté à : - Nom de la section : Snippet Place (j'aime ma box jusqu'au bout..) - 1 post = 1 snippet - formatage Sujet/Entête du snippet/Code du snippet/Exemples - approbation par les modérateurs du post avant publication pour vérification du formatage
Lazer Posté(e) le 13 décembre 2017 Signaler Posté(e) le 13 décembre 2017 Là ça devient tordu, ou alors je n'ai pas compris ce que tu voulais dire ? On ne peut pas approuver chaque post, c'est le sujet entier qui est approuvé. Si on créer autant de sujet que de code snipet, ça va être la jungle et impossible à parcourir et rechercher des exemples. Il me semble plus réaliste de s'inspirer du Showroom GEA : - Un sujet - chaque message = 1 code snipet A la limite, on peut subdiviser pour que chaque personne possède son propre sujet. Mais pas plus, sinon comme je disais plus haut, l'info sera totalement diluée.
pepite Posté(e) le 13 décembre 2017 Signaler Posté(e) le 13 décembre 2017 je pensais que chaque post pouvait être modéré. ,-) Dans ce cas : - 1 message : 1 code snippet formaté avec : -> entête : Fonction du snippet, à quoi il sert en résumé -> Code du snippet -> Exemples il y a une heure, Lazer a dit : chaque personne possède son propre sujet. Trop difficile de retrouver un snippet si on en a besoin ultérieurement non ?
Lazer Posté(e) le 13 décembre 2017 Signaler Posté(e) le 13 décembre 2017 OK, donc un sujet unique, ça me va. Du coup, pas besoin de créer de section (une section pour 1 sujet, ça serait overkill), il suffit d'épingler le sujet unique en haut de la section HC2. @Pepite tu nous donnes un exemple de message avec le template que tu as donné ?
pepite Posté(e) le 2 janvier 2018 Signaler Posté(e) le 2 janvier 2018 (modifié) @Lazer Désolé pour la réponse tardive, je suis reparti de l'idée de @BenjyNet. Généralité : ------------------------------------------ -- Utilité : A quoi sert le code -- Fonction : fonction à appeler -- Données en Entrée : ce qui est attendu -- Données en Sortie : ce qui est retourné -- Auteur : le nom du codeur ------------------------------------------ -- Exemples - En voila un que j'ai sous la main ;-) ------------------------------------------ -- Utilité : Encodage login:password en base 64 -- Fonction : encode() ou decode() -- Données en Entrée : Ce qui doit être encodé ou décodé -- Données en Sortie : Ce qui a été encodé ou ce qui a été décodé -- Auteur : Trouvé sur le web (nom des fonctions adaptées pour plus de lisibilité) ------------------------------------------ -- Code ----- -- character table string local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -- encoding function encode(data) return ((data:gsub('.', function(x) local r,b='',x:byte() for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end return r; end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) if (#x < 6) then return '' end local c=0 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end return b:sub(c+1,c+1) end)..({ '', '==', '=' })[#data%3+1]) end -- decoding function decode(data) data = string.gsub(data, '[^'..b..'=]', '') return (data:gsub('.', function(x) if (x == '=') then return '' end local r,f='',(b:find(x)-1) for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end return r; end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) if (#x ~= 8) then return '' end local c=0 for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end return string.char(c) end)) end -- command line if not called as library if (arg ~= nil) then local func = 'encode' for n,v in ipairs(arg) do if (n > 0) then if (v == "-h") then print "base64.lua [-e] [-d] text/data" break elseif (v == "-e") then func = 'encode' elseif (v == "-d") then func = 'decode' else print(_G[func](v)) end end end end -- Exemple print(encode('domotique.fibaro@gmail.com:motdepasse')) print(decode('ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ==')) ------------------------------------------------------------- -- Résultat dans le Debug [DEBUG] 17:02:52: ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ== [DEBUG] 17:02:52: domotique.fibaro@gmail.com:motdepasse Modifié le 2 janvier 2018 par pepite 2
Lazer Posté(e) le 2 janvier 2018 Signaler Posté(e) le 2 janvier 2018 Ca me plait bien ça, vous en pensez quoi ? @Steven ?
Steven Posté(e) le 2 janvier 2018 Signaler Posté(e) le 2 janvier 2018 Moi aussi ça me va très bien. Je rajouterais juste dans les commentaires de chaque méthode la description des valeurRs attendues (data dans l'exemple) ainsi que le retour de chaque méthode. Sinon c'est parfait pour moi. Bien joué. 2
pepite Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 Bonjour messieurs, Heuuu @Steven tu commences à me connaitre ;-) tu crois vraiment que je suis capable de comprendre tous les return des methodes de l'exemple ? Certains sont du chinois pour moi Il y a 16 heures, pepite a dit : return b:sub(c+1,c+1) La j'ai compris : b:sub, le c+1, C+1..heuuuu ben voila quoi ;-)
Steven Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 , dans ton cas, on s'en fiche. Si je reprend ton exemple, je mettrais uniquement ceci : Au lieu de -- encoding function encode(data) Je noterais pour plus de clareté ------------------------------------------- -- function : encode ------------------------------------------- -- paramètres : -- data : chaîne à encodé -- retour : chaîne encodée en base64 ------------------------------------------- function encode(data) Dans ton cas, c'est pas vraiment utile mais s'il y a plusieurs paramètres ou plusieurs retours cela peux s'avérer nécessaire. Reprenons un exemple que tu connais bien : function getLabelValue(value, jour, date) ... return message:match("(%d+):(%d+)%s(%d+):(%d+)"), jour end Pour un utilisateur qui regarde le code, il ne comprendra pas facilement, voir pas du tout, qu'est-ce que value, jour et date et encore moins les valeurs retournées. C'est pour cela que je pense que de documenter les functions est aussi utiles (quand cela se justifie bien évidement). Donc perso, je ferais ainsi .. mais c'est vraiment personnel ... voir post suivant. 2
Steven Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 --[[ ================================================================== Encodage / Décodage en base 64 ================================================================== Description : Utilitaire pour l'encodage / décodage en base 64 Utilisé fréquement pour encoder les login:password ================================================================== Support : [X] Scénario [ ] VD Firmware requis : 4.x Auteur : Trouvé sur le web (nom des fonctions adaptées pour plus de lisibilité) ------------------------------------------------------------------ Functions : encode : encode une chaîne de caractère en base64 decode : décode une chaîne de caractère précédement encodée ================================================================== --]] -- --------------------------------------------------------------- -- function : encode -- --------------------------------------------------------------- -- paramètres : -- data : chaîne à encodé -- retour : chaîne encodée en base64 -- --------------------------------------------------------------- function encode(data) -- ... end -- --------------------------------------------------------------- -- function : decode -- --------------------------------------------------------------- -- paramètres : -- data : chaîne encodée -- retour : chaîne en claire -- --------------------------------------------------------------- function decode(data) -- ... end Exemples : -- Exemple d'encodage print(encode('domotique.fibaro@gmail.com:motdepasse')) -- Résuitat [DEBUG] 17:02:52: ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ== -- Exemple de décodage print(decode('ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ==')) -- Résultat dans le Debug [DEBUG] 17:02:52: domotique.fibaro@gmail.com:motdepasse 4
pepite Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 Parfait, c'est effectivement très clair comme cela. Je valide ;-) mais je ne decide pas ;-)
BenjyNet Posté(e) le 5 janvier 2018 Auteur Signaler Posté(e) le 5 janvier 2018 Bon, on en est où ? C'est mis en place quelque part ? J'ai zappé l'info ?
yoim Posté(e) le 5 janvier 2018 Signaler Posté(e) le 5 janvier 2018 (modifié) Très bien ca. En plus bien commenté. Merci. J'irais même encore plus loin pour les commentaires : -- Exemple d'encodage print("Encode Base64") print(encode('domotique.fibaro@gmail.com:motdepasse')) -- Exemple de décodage print("Decode Base64") print(decode('ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ==')) Dans le debug : [DEBUG] 19:48:51: Encode Base64 [DEBUG] 19:48:51: ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ== [DEBUG] 19:48:51: Decode Base64 [DEBUG] 19:48:51: domotique.fibaro@gmail.com:motdepasse Modifié le 5 janvier 2018 par yoim
Lazer Posté(e) le 7 janvier 2018 Signaler Posté(e) le 7 janvier 2018 Il existe déjà un sujet ici, on l'utilise ou on en fait un nouveau ?
BenjyNet Posté(e) le 7 janvier 2018 Auteur Signaler Posté(e) le 7 janvier 2018 Pour moi c'est pas la même chose. Un script ou scénario est quelque chose de complet et fonctionnel qu'un quidam peut installer et utiliser. Le snippetplace est plus pour le développeur, du bout de code qui a lui seul ne fait quasi rien.
MAM78 Posté(e) le 7 janvier 2018 Signaler Posté(e) le 7 janvier 2018 Il me semble qu'il manque la notion de version du code. Il conviendrait d'ajouter ceci dans l'entête : Version : 1.00 Date Update : 07 janv. 2018 Comment vous voyez, les évolutions/corrections/optimisations des codes en question ? MAJ du post par l'auteur ? Nouveau post ? Est-ce tout ça ne devrait pas être écrit en anglais afin que ce soit ouvert aux autres utilisateurs que ceux de la langue de Molière ?
Steven Posté(e) le 7 janvier 2018 Signaler Posté(e) le 7 janvier 2018 C'est la première fois que je suis fatigué de lire un topic ... qui n'existe pas encore 1
yoim Posté(e) le 9 janvier 2018 Signaler Posté(e) le 9 janvier 2018 @Lazer Il est très bien ce sujet. Mais je ne l'avais pas vu épinglé. Je trouverais interessant d'avoir directement une sous-section dédié à la prog Lua / Scripts / Scénarios ... dans Home Center 2 & Lite parfois c'est pas simple de retrouver des infos sur des sujets qui ont déja été traités...
Lazer Posté(e) le 9 janvier 2018 Signaler Posté(e) le 9 janvier 2018 Voilà, sujet créé : Pas de discussion là bas, on conserve ce topic pour le blah blah
Messages recommandés