Aller au contenu

Messages recommandés

Bonjour Toutes et Tous,

Je suis ravie de vous annoncer ( enfin !! ) ( en ce qui me concerne ;) ) la publication de FmDynamix et du premier module fmx_FunctionCalls.fmp12.

Certain(e)s en connaissent l'historique ( L'importance de l'imbrication & la conférence en Avignon ) et d'autres le découvriront peut être.

=> Je vous laisse télécharger et visionner ma Vidéomonstration et regarder la page FmDynamix de mon Coin FileMaker
le fichier à télécharger est en haut de la page  (il est mieux de le regarder avant de voir les 2 autres !)

Voilà, j'espère que tout fonctionnera correctement chez vous, et qu'il explique suffisamment l'histoire pour ne surtout pas le refaire !

J'espère une bonne découverte à vous, cela peut faire peut être germer des idées de modularité supplémentaire
De mon coté, j'ai adopté ;)

et ça à le mérite d'exister.

Agnès

FmDynamixGo.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon :)

A priori, certain(e)s osent, d'autres non.

Donc, je préfère me répéter : Le fichier de démonstration est à télécharger ici : fmx_FmDynamix_Presentation.fmp12
L'accès aux fichiers fmx_ est sur la page FmDynamix, ici

Je n'ai pas voulu faire d'ouverture automatique car il faut un nom de compte pour pouvoir gérer les fonctions et ne pas casser celles des autres ! ( et si vous cassez tout, c'est donc à corriger pour moi et j'ai une sauvegarde ;) )

Vous envoyez un mail pour votre première connexion via le bouton adéquat, et vous me laissez le temps de vous ouvrir le compte dans les 2 fichiers et vous préparer votre petit fichier DataDemo que je vous envoie normalement dans la foulée.

L’intérêt pour vous, je pense qu'il y en a.
Pour moi, il est évident. En dehors de partager des calculs, je veux voir le comportement de cfCall() & #load() avec un max de type de fonction, vous allez bien m'écrire un jour une fonction qui fait dérailler la chose !

L'autre intérêt, les traductions, elles sont également sur le principe du partage.
Pour toutes celles déjà entrées en anglais et en français, n'importe qui peut y ajouter d'autres langues.
Les Allemands peuvent ajouter la langue allemande, L'Italien peut y mettre la sienne également !

N'hésitez pas surtout à me dire si vous avez le moindre souci, de connexion ou d'utilisation !

Merci !

Agnès

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

hello,

j'aime bien le  " ...j'espère ne pas vous perdre..."

J'ai pas les compétences  pour aller dans la stratosphère :lol: Mais bon, ça doit servir à quelque chose...la modularité est nécessaire, je pense...un jour peut être ! B)

Peut être une introduction vulgarisée me permettrait de rentrer dans le sujet.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de regarder la démo... et ça donne envie.
Si l'intérêt est évidement, la mise en œuvre nécessite une nouvelle façon de penser.

Bravo Agnes !

ps : après il faut trouver le temps pour s'y plonger

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello !

Il y a 4 heures, EGC a dit :

Peut être une introduction vulgarisée me permettrait de rentrer dans le sujet.

Là, il va falloir que je passe la main !! je suis définitivement très mauvaise en explication de texte :rolleyes:
Mais je fais preuve de bonne volonté

Et j'échoue ( on me le dit hein, ( mais trop tard... ) )

 

Il y a 4 heures, EGC a dit :

j'aime bien le  " ...j'espère ne pas vous perdre..."

Je crois que j'ai souri en le disant

 

il y a 13 minutes, kurtz le pirate a dit :

ps : après il faut trouver le temps pour s'y plonger

Clair :)

Oui, c'est une autre façon de faire, et je n'ai pas dit d'adopter, mais éventuellement d'essayer et tester,
ça peut ouvrir d'autres portes pas forcément inintéressantes.


Merci d'avoir déjà pris du temps et à bientôt dans les fichiers fmx_ !

Agnès

....la stratosphère, c'est le cloud hein....  j'ai envoyé mes fonctions sur le cloud ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je continue dans la Technique++

le nombre de paramètres variables était l'un des buts, je viens de m'y frotter pour voir.
Nous pouvons donc écrire des fonctions avec un nombre de paramètres variables :

Un exemple "simple" : compter un nombre d'occurrences de mots dans un texte, le nombre de mots est variable d'une requête à l'autre.

// cfCall ( CalcCountWord ; #load ( TheText ) & #load ( Word ) { & #load ( Word_2 ) & … & #load ( Word_n ) } )
les paramètres en vert sont donc facultatifs, et leur nombre variable, ce que ne nous permet FileMaker dans la gestion native des fonctions personnalisées.

Le code est mis directement dans ExpressionCode de cfCall() et les #load() sont ajoutés, autant que l'on veut. ( max, 400 )

cfCall (
"Let([
$sep = \"-\" ; $text = $fmxLoa_P[GetValue ( $fmxCal_P  ; 1 )]
]; Evaluate
( substitute ( \"//\" & $fmxCal_P & \"-\" ; [\"\¶-\" ; \"])\"] ; [\¶ ; \"]) & $sep &\¶PatternCount( $text ; $fmxLoa_P[\" ] ) ) )"
; #load( "Bonjour à vous, j'espère vous faire découvrir la puissance de cfCall, merci pour vos tests"  ) &
#load( "j'" ) & #load( "vous" ) & #load( "test" ) & #load( "merci" )
)

nous pouvons donc écrire :

cfCall ( leCalcul  ; #load( leTexte  ) & #load( Mot_1 ) & #load( Mot_2 ) & #load( Mot_3 ) & #load( Mot_4 ) ) // nous passons 4 mots soit, 5 paramètres

cfCall ( leCalcul  ; #load( leTexte  ) & #load( Mot_1 ) & #load( Mot_2 ) ) // nous passons 2 mots soit, 3 paramètres

Bonne journée ;)

Agnès

// plus d'info, fichier fmx_FunctionCalls, modèle Fonctions Personnalisées, cliquez sur le bouton "Plus", allez à l'onglet "Traitement", section "gérer les paramètres variables" ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 17 heures, Agnès a dit :

....la stratosphère, c'est le cloud hein....  j'ai envoyé mes fonctions sur le cloud ;)

 

C 'est une façon de dire que c 'est du haut vol, et avant de sentir la sensation d’apesanteur (après avoir tout compris) il me faudra du temps. Mais comme je le disais, je m'y pencherai. Alors peut être bien que je pourrais te faire une introduction de "néophite" :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

Je me permet de compléter ou de synthétiser car un code inaccessible a tendance à tuer toute tentative de compréhension ou de réflexion. Je n'ai jamais compris pourquoi Agnès cherche à ce point à expliquer un code incompréhensible par un autre qui l'est tout autant sinon plus, mais on la pardonne toujours ;)

FmDynamix est un projet qui comprend à ce jour 2 modules mais qui sera probablement amené à s’étoffer. L’objectif est de maximiser la ré-utilisabilité en apportant une dose de modularité.

Le premier module, dont il est principalement question ici, concerne les fonctions personnalisées, et permet, pour simplifier, d’appeler une fonction personnalisée sans qu'elle soit stockée dans le fichier, le nombre de fonctions pouvant être appelé étant illimité, qu’elles soient récursives ou pas. Fini donc la pénible gestion des fonctions personnalisées, cette opération n'est conduite qu'une seule fois pour un ensemble de fichiers, sans nécessité de contrôler chaque fichier individuellement.

Le défi consistait donc à trouver un algorithme qui permettait d’exécuter une fonction personnalisée, dont le nombre, mais aussi le type de paramètres, sont variable, au travers une seule fonction qui comprendrait à l'inverse un nombre fixe de paramètres.

Concrètement, comment donc appeler au travers une seule et unique fonction des fonctions aussi différentes que :

  • DateRange ( dStartDate; dEndDate )
  • DateRangeWithLimit ( dStartDate; dEndDate; nRangeLimit )
  • IsDateInRange ( dTestDate ; dLowerDate; dHigherDate )
  • calcEndDate ( dStartDate ; nNumberDays; bWeekendsTrueFalse )

Une fonction par définition comprend une formule et un ensemble de paramètres, et lorsqu’elle est exécutée on transmet les arguments en guise de paramètres. Pour rendre ceci possible il convenait de trouver le moyen d’évaluer le code fonctionnel d’une fonction personnalisée en injectant dynamiquement le nombre et le type d’arguments pour chaque paramètre attendu par ce même code fonctionnel.

C’est à cet objectif que l’exercice l'importance de l'imbrication a servi, puisqu’il a donné lieu à une fonction, #load() qui se charge donc comme l’explique Agnès 

Citation

je passe des infos à ma variable de gauche par mes variables de droite

En effet, la fonction cfCall qui rend cette exécution possible comprend deux paramètres :

  • ExpressionCode - Code fonctionnel/formule à évaluer, structurée selon une convention précise
  • Parameters - Paramètres nécessaires à l'évaluation de la formule, assemblés en exploitant la fonction #load

La fonction #load injecte donc les arguments pour chaque paramètre référencé dans le code d'exécution stocké au format texte dans le paramètre Expression de cfCall

Il n'y a pas grand chose d'autre à comprendre, et surtout comme pour CustomList, pas besoin de comprendre le code de ces deux fonctions personnalisées pour pouvoir les utiliser. Dans la mesure où le code de la fonction doit être structuré selon une convention spécifique, vous trouverez un utilitaire dans le fichier qui se charge de transformer le code que vous aurez copié afin qu'il soit compatible. Il existe quelques exceptions qu'Agnès pourra décrire, mais elles sont rares.

Au final, chaque fonction est chargée en variable et peut donc être appelée avec par exemple pour la fonction DateRange

cfCall ( $$_DateRange ; #load(  /*dStartDate*/  "" ) & #load( /*dEndDate*/  "" ) )

Précisions aussi que rien n'interdit de stocker des fonctions personnalisées tout de même dans votre fichier.

Enfin, dans l'esprit collaboratif du projet FmDynamix, le module fmx_FunctionCalls, au-delà de la fonctionnalité elle-même, permet de stocker vos fonctions et de les partager au travers un outil dédié. C'est aussi en cela que la démarche peut être utile.

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah ben voilà :)

C'est exactement ça ;)

Si à l'occasion tu peux faire quelques chose pour FmForums, car je pense les avoir perdu dès le premier post.... :)
Des mercis !

Agnès

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite piqure de rappel pour celles et ceux qui veulent se sortir de ce cinéma électoral et qui veulent se détendre avec un peu de calcul et de Filemaker ;)

Les fichiers sont toujours ouverts et personne n'a réussi à me plomber le truc ;)

Bonne journée !

Agnès

 

Partager ce message


Lien à poster
Partager sur d’autres sites

:):)

c'est loin ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne pense pas que la distance soit bien plus grande que celle entre le développeur moyen et FmDynamix. Mais dans les deux cas, ça vaut le voyage.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je crois que j'ai compris la phrase ;)

Merci David.

:blush: 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×