-
Compteur de contenus
2 523 -
Inscription
-
Dernière visite
-
Jours gagnés
23
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Fraid
-
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
Comme promis (defun encodeURI (str / ind ret pre) (setq ret "" pre "") (if (and str (> (strlen str) 0)) (progn (if (and (> (strlen str) 6)(= (substr str 1 6)) "https:") (setq pre (substr str 1 (1+ (vl-string-position (ascii "/") str nil T))) str (substr str (1+(strlen pre)) (strlen str)) ) ) (foreach cod (vl-string->list str) (cond ( (or (and (>= cod 48)(<= cod 57)) (and (>= cod 65)(<= cod 90)) (and (>= cod 97)(<= cod 122)) (member cod (vl-string->list "-_.!~*'()")) ) (setq ret (strcat ret (chr cod))) ) ((< cod 128) (setq ret (strcat ret "%"(dec2hex cod)))) ((> cod 127) (setq ind (/ (- cod 128) 64) ret (strcat ret "%C" (itoa(+ ind 2)) "%" (dec2hex (- cod (* ind 64)))) ) ) ) ) ) (setq ret nil) ) (if ret (strcat pre ret) ret) ) (defun decodeURI (str / ret pre hex flag ind) (setq ret "" pre "" hex "") (if (and str (> (strlen str) 0)) (progn (if (and (> (strlen str) 6)(= (substr str 1 6)) "https:") (setq pre (substr str 1 (1+ (vl-string-position (ascii "/") str nil T))) str (substr str (1+(strlen pre)) (strlen str)) ) ) (foreach char (mapcar 'chr (vl-string->list str)) (cond ((and (null flag)(/= char "%")) (setq ret (strcat ret char))) ((and (null flag)(= char "%"))(setq flag 0)) ((and (= flag 0)(= char "C"))(setq flag 1)) ((and (= flag 0)(null ind)) (setq hex (strcat hex char)) (if (= (strlen hex) 2) (setq ret (strcat ret (chr (hex2dec hex))) flag nil hex "") ) ) ((= flag 0) (setq hex (strcat hex char)) (if (= (strlen hex) 2) (setq ret (strcat ret (chr (+ (hex2dec hex) (* 64 ind)))) flag nil hex "" ind nil) ) ) ((= flag 1)(setq ind (-(atoi char)2) flag nil)) ) ) ) (setq ret nil) ) (if ret (strcat pre ret) ret) ) ;cadxp (defun hex2dec (str / n s) (setq n (strlen str)) (if (zerop n) n (+ (* (if (numberp (read (setq s (substr str 1 1)))) (atoi s) (- (ascii (strcase s)) 55) ) (expt 16 (1- n)) ) (hex2dec (substr str 2)) ) ) ) (defun dec2hex (nb / sub) (defun sub (nb n / r d) (if (= 0 (/ nb (expt 16 n))) "" (progn (setq r (rem nb (expt 16 (1+ n)))) (strcat (sub (- nb r) (1+ n)) (if (< (setq d (/ r (expt 16 n))) 10) (itoa d) (chr (+ 55 d)) ) ) ) ) ) (sub nb 0) ) je comprend que cela ne passionne pas grand monde... -
[Challenge] Fonction "d'ordre supérieur"
Fraid a répondu à un(e) sujet de VDH-Bruno dans Pour aller plus loin en LISP
bon, j'avais pourtant essayé avec apply, j'avais du m’emmêler les parenthèses. Maintenant que cela fonctionne, je posterais du propre demain. -
Petit problème de lecture et de tri...
Fraid a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci Gile pour ce lien cela fait pourtant longtemps que je cherche, jamais tombé sur cette page... super ce n'est pas toujours évident de trouver les bonnes requêtes. -
[Challenge] Fonction "d'ordre supérieur"
Fraid a répondu à un(e) sujet de VDH-Bruno dans Pour aller plus loin en LISP
Bonjour, Depuis ce matin que je suis la dessus. J'ai bien réussi avec '= en argument mais pas la fonction lambda... sans chercher à optimiser (defun coup-if-not (fct lst / posl ret ltmp) (setq posl 0) (repeat (length lst) (if (not ltmp)(setq ltmp (append ltmp (list (nth posl lst))))) (if ((eval fct) (nth posl lst) (nth (1+ posl) lst)) (setq ltmp (append ltmp (list (nth (1+ posl) lst)))) (setq ret (append ret (list ltmp)) ltmp nil) ) (setq posl (1+ posl)) ) ret ) (defun coup-if (fct lst / posl ret ltmp) (setq posl 0) (repeat (length lst) (if (not ltmp)(setq ltmp (append ltmp (list (nth posl lst))))) (if (not((eval fct) (nth posl lst) (nth (1+ posl) lst))) (if (nth (1+ posl) lst)(setq ltmp (append ltmp (list (nth (1+ posl) lst))))) (setq ret (append ret (list ltmp)) ltmp nil) ) (setq posl (1+ posl)) ) (if ltmp (append ret (list ltmp)) ret) ) Cela doit être eval qui n'est pas adapté... je ne sait plus quoi testé une petite piste? -
Petit problème de lecture et de tri...
Fraid a répondu à un(e) sujet de DenisHen dans Débuter en LISP
(logior (lsh r 16) (lsh g 8) b) Bonjour Gile, J'ai toujours du mal avec les fonctions "bitiennes" Sur ta page d'intro au lisp et celle de Didier, ce n'est pas super clair et surtout pas dans l'aide. J'arrive à m'en passé avec des pirouettes mathématiques, mais j'aimerais bien comprendre. y a t'il une page consacrées que je n'aurais pas trouvée. Merci -
Petit problème de lecture et de tri...
Fraid a répondu à un(e) sujet de DenisHen dans Débuter en LISP
allez, pour une fois je vais prendre du temps pour t'aider, d'habitude je suis bien trop court dans mes post... C'est une étape importante de "maîtriser" ENTMAKE, même si on le lâche une fois qu'on connais le vla. voici l'exemple mini pour créer un calque. (defun addlay (nom) (if (null (tblsearch "LAYER" nom)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 nom) (cons 70 1);état du calque ) ) ) nom ) Pour l'instant oublie ton rvb, inutile car tu peux trouver une couleurs avoisinante en ACI avec le carnet de couleur. Le RVB est intéressant quant on fait des rendus, ou que l'on a plus de 225 calques avec une couleurs différentes. Sinon, pour un plan ???? Certain préconise l'utilisation de ENTMAKEX pour les calques, je n'ai jamais compris pourquoi... Sinon, je vais revenir à ton code. Tu n'as pas du tester avec un csv de plus de 2 lignes, car la variable ListLine n'est pas remis à nil donc cumule les lignes. De plus tu n'ignore pas la 1er lignes qui contient la description. Tu ne teste pas l’existence du calque avant de la créer. et il me semble que tu peut tout faire dans la première boucle au fur et à mesure de la lecture. avec tous ça, tu as déjà de bonne piste. aller, courage, tu vas finir par la montée cette marche, cela fait des années que tu essaye... -
Petit problème de lecture et de tri...
Fraid a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour, Je vais me permettre de te donner quelques conseils. Tu n'as pas déclaré de variables après ton defun tu devrais avoir (/ FichLstCalq LstCalqLine nomCalque ...) Sinon elle deviennent globales. (on te l'a déjà dit plusieurs fois) Tu fait 2 fois (findfile "ECPS_Calques.csv") une fois suffit, tu place le chemin dans une variable plutôt que de faire un (exit) tu devrais parcourir le disque et dans une boucle foreach, j' évite la fonction command, je pense qu'il faudrait mieux utiliser entmake ou vla-add de toute façon essayer de se passer de command, ce n'est pas qu'un simple sport de programmeur, car cette fonction simule l'entrée utilisateur d'Autocad, c'est donc très lourd. mais vraiment lourd au point de contribuer au réchauffement !!!! de plus, si ton csv contient 50 lignes, je doute que ton lisp arrive jusqu'au bout. amicalement -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
t'est vraiment super rapide gile, impressionnant !!!! cela fonctionne très bien. j'avais mis 3 jours... étrangement j'ai plus galéré avec le décode que l'encode. -
Vous aimez les challenges ? ? ?
Fraid a répondu à un(e) sujet de DenisHen dans Programmer en s'amusant
oui, en utilisant un objet ADODB Il y a des exemples sur theswamp.org mais par injection d'url (dans ce cas la on dit injection SQL) c'est plus facile. il y a des tutos, tape injection SQL dans google -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
Ok, tu t'éloigne un petit peu. On s’occupe que de la partie injection. (après le dernier / ) dans l'absolue, si on encode tous les caractères, c'est évidement accepté par le serveur. Mais la, le but, est de garder une lisibilité par un être humain de l'injection. Je vais reformuler le challenge en oubliant le javascript. Convertir les caractères spéciaux excepté "- _ . ! ~ * ' ( )" en caractères hexadécimal pour UTF-8 voir lien donné à Luna + haut. -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
-
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
-
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
bonjour Luna un petit lien pour comprendre caracteres et oui, ce challenge demande un peu de recherche -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
non, c'est bien encodeURIComponent, encodeURI converti tout les caractères. -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
et j'ai oublié de préciser que l'espace peut etre "%20" ou "+", les 2 fonctionnent -
[challenge] String pour injection
Fraid a répondu à un(e) sujet de Fraid dans Programmer en s'amusant
Bonjour, Malheureusement, il n'y a pas de consensus, et il y a quelque différence, selon les langages. C'est pourquoi j'ai donné en exemple celle du Javascript, pour qu'on partent sur la même chose. si tu vas voir le lien fournis, les caractères spéciaux ignorés sont "- _ . ! ~ * ' ( )" -
Lenteur avec panneau "propriétés rapides" voir "propriétés"
Fraid a répondu à un(e) sujet de La Lozère dans AutoCAD 2018
si ton pc fait cela, c'est que ta RAM est pleine ou inaccessible. Quand tu fait un ctrl+alt+suppr/gestionnaire des taches/performances tu vois l’occupation de la RAM. et dans l'onglet processus, tu vois qui l'occupe -
Lenteur avec panneau "propriétés rapides" voir "propriétés"
Fraid a répondu à un(e) sujet de La Lozère dans AutoCAD 2018
Bonjour, Je pense que ce n'est pas sur ton disque, mais dans ta RAM. Redémarre ta machine, et tout iras mieux. Si ce n'est pas la cas, verifie si tu n'as pas une appli en tache de fond, genre antivirus qui tourne. -
Bonjour, Oui c'est possible dans tous les langage (ligne de commande compris), mais rien de générique, car on a tous une organisation différente et ainsi que les fichiers à fournir.
-
Bonjour, Je viens de me souvenir d'un challenge perso qui m'avais bien tordu l'esprit. Convertir un texte pour injection d'URL. (ou requete HTML). Lorsque nous tapons une adresse internet dans la barre d'adresse d'un navigateur, c'est une injection. Exemple simple "https://www.openstreetmap.org/#map=16/48.4674/-2.5486" Ici nous arrivons directement au coordonnées injectées. Mais lorsque nous utilisons une URL en programmation, nous utilisons pas la barre du navigateur, cela va directement au serveur. Si l'injection contient des caractères spéciaux il faut les convertir en Caractères hexadécimales. Exemple "https://fr.wikipedia.org/wiki/Saint-Barthélemy-d'Anjou" doit devenir "https://fr.wikipedia.org/wiki/Saint-Barth%C3%A9lemy-d'Anjou" ou "aB 09_éùl'o @£" -> "aB%2009_%C3%A9%C3%B9l'o%20%40%C2%A3" Il existe des fonctions ou méthodes dans beaucoup de langage qui s'occupe très bien de cela, mais pas en Autolisp. Je me permet donc de vous proposer d'écrire l'équivalent de ces 2 fonctions Javascript encodeURIComponent decodeURIComponent Évidement sans énumération telle que '(("é" . "%C3%A9") ...) Je poste mes fonctions Dimanche soir. bonne exploration et à bientôt.
-
Vous aimez les challenges ? ? ?
Fraid a répondu à un(e) sujet de DenisHen dans Programmer en s'amusant
Bonjour, Je ne comprend pas le sens de ta question? Pourquoi t'imposes tu une limite? Pour ma part, mon but est de contourner les limites du langage utilisé, si j'arrive à les atteindre... Peut être parle tu de SQL? Je ne pense pas que nous soyons nombreux à utiliser cette technologie. J'ai fait quelque essais, plutôt bancals, de modification de base SQL en Autolisp, cela fonctionne. Mais, la plus rapide est d’écrire une page html temporaire, ou par injection d'URL. dommage je ne retrouve pas mes essais. -
Valider une commande sans appuyer sur "entrée" ?
Fraid a répondu à un(e) sujet de rrobert dans AutoCAD 2020-2024
Bonjour, Et non, il faut qu' Autocad sache quand tu as finis de taper ta commande ou raccourci, puisqu'on est pas limité en nombre de caractères. -
Oui, mais je trouvais cela rigolo en peux de fonctions. et pas tant que cela si on nettoie la liste des redondances.
-
Un essai qui produit un groupe par point (defun groupt (lstpt tol / ret l di) (foreach pt1 lstpt (setq l (list pt1)) (foreach pt2 lstpt (setq di (distance pt1 pt2)) (if (and (/= di 0)(< di tol)) (setq l (append l (list pt2))) ) ) (setq ret (append ret (list l))) ) ret ) (GROUPT pts 10.0) -> (((14.4 4.7) (8.0 0.9) (9.3 4.7)) ((4.8 0.7) (8.0 0.9) (9.3 4.7) (-1.9 -3.2) (2.4 -4.9)) ((8.0 0.9) (14.4 4.7) (4.8 0.7) (9.3 4.7) (2.4 -4.9)) ((9.3 4.7) (14.4 4.7) (4.8 0.7) (8.0 0.9) (6.6 11.2)) ((-14.3 14.3) (-6.3 14.2) (-13.6 7.5)) ((-6.3 14.2) (-14.3 14.3) (-13.6 7.5) (-6.6 4.7)) ((-13.6 7.5) (-14.3 14.3) (-6.3 14.2) (-6.6 4.7)) ((-1.9 -3.2) (4.8 0.7) (2.4 -4.9) (-6.6 4.7)) ((2.4 -4.9) (4.8 0.7) (8.0 0.9) (-1.9 -3.2)) ((6.6 11.2) (9.3 4.7)) ((-6.6 4.7) (-6.3 14.2) (-13.6 7.5) (-1.9 -3.2)))
-
