Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Calendrier des clavardages «  

Files
Stay tuned
Podcasted files

L'architecture MVC et YACS

Commented by N1ckR yesterday at 09:58 pm GMT

Tags: clavardage MVC fonctionnalités

De 21h à 23h, heure de Paris.

May 8 2008

Tof
toc toc yesterday at 07:07 pm GMT
Agnès
Bonsoir yesterday at 07:07 pm GMT
Lasares
Allô ! quelle heure est-il chez vous ? yesterday at 07:07 pm GMT
N1ckR
Hi !
http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur http://en.wikipedia.org/wiki/Model-view-controller yesterday at 07:08 pm GMT
Agnès
yesterday at 07:09 pm GMT
Tof
Bonsoir Alain, bonsoir Nick, il est 21h10 ici. yesterday at 07:10 pm GMT
Bernard
hello everybody - sorry for being late
Allez-vous bien ? Pouvons-nous commencer ? yesterday at 07:12 pm GMT
Tof
Bonsoir Bernard yesterday at 07:14 pm GMT
N1ckR
Hi Bernard. yesterday at 07:14 pm GMT
Agnès
C'est parti ! yesterday at 07:15 pm GMT
Lasares
OK yesterday at 07:15 pm GMT
Bernard
Alors ce soir, nous allons parler d'architecture logicielle, en partant du modèle d'architecture standard MVC.
Avez-vous une certaine connaissance de ce modèle ? L'utilisez-vous ? yesterday at 07:16 pm GMT
Lasares
Non, rien, nada. yesterday at 07:18 pm GMT
Agnès
Pour ma part, je viens apprendre des choses ce soir, et mettre un peu de théorie sur mes pratiques yesterday at 07:18 pm GMT
N1ckR
I have good knowledge. We do not use MVC, its too much hassle... yesterday at 07:20 pm GMT
Bernard
321px-ModelViewControllerDiagram-svg.png yesterday at 07:20 pm GMT
Tof
en résumé, oui. yesterday at 07:20 pm GMT
N1ckR
better trying to stick to good quality code standards yesterday at 07:20 pm GMT
Bernard
Le modèle MVC est assez ancien en fait. Il a été introduit à peu près en même temps que les interfaces graphiques sur les ordinateurs, comme une recommendation pour les développeurs.
Le but du modèle est d'inciter les développeurs à distinguer, dans des modules différents, ce qui relève des données (le Modèle), ce qui relève de la logique applicative (le Controleur) et ce qui est purement visuel (la Vue).
A l'époque, les premiers logiciels graphiques étaient un vrai fatras de choses mélangées, ce qui rendait leur structure à peu près non maintenable...
Donc le MVC a été un vrai progrès, qui s'est développé ensuite dans tout un tas d'ateliers logiciels ou de frameworks très utilisés dans l'industrie du logiciel. C'est donc un standard incontournable, comme nous l'a rappelé Nuxwin il y a quelques semaines.
Bon, depuis l'introduction des interfaces graphiques, le monde de l'informatique a pas mal évolué, il faut bien le reconnaitre. Les développements incrémentaux ont remplacé les grands projets pharaoniques, le web a pas mal relativisé les interfaces complexes (quoique, avec AJAX et les RIA, faut voir), la distribution des traitements a changé aussi. yesterday at 07:21 pm GMT
N1ckR
Bernard, more accurately, model is business logic as well yesterday at 07:28 pm GMT
Bernard
Nick, you are right.
More specifically, the Model is referring to data and to business rules used to handle data.
The business logic may be implemented partly in the Model and partly in the Controller.
YACS, dans sa version 8.4, dispose de 577 scripts PHP de référence, ordonnée d'une certaine façon, et c'est cette architecture logicielle que je voudrais présenter ce soir.
Pour cela, autant s'appuyer sur les concepts MVC, même si l'architecture de YACS dispose de sa logique, qui lui est propre.
Ca vous va comme agenda pour ce soir ? Vous avez peut-être des questions à ce stade ?
Pour ceux qui connaissent MVC et YACS, diriez-vous que les deux sont très différents ? Ou très proches ? yesterday at 07:29 pm GMT
Tof
l'organisation est différente mais les principes sont les mêmes yesterday at 07:38 pm GMT
Bernard
Tof, tu m'enlèves les mots de la bouche...
Bon, alors commençons par le Modèle.
Dans Yacs, comme vous le savez, l'interface de bas niveau avec la base de données est gérée dans le script shared/sql.php. C'est le seul script qui utilise la librairie d'appel MySQL de PHP. yesterday at 07:38 pm GMT
Lasares
Les principes de MVC, j'imagine que c'est un peu comme la prose du Bourgeois gentilhomme, je les connaissais sans le savoir : c'est un peu comme le HTML (modèle) et le CSS (vue). Alors Yacs, c'est le contrôleur ? yesterday at 07:41 pm GMT
Bernard
Alain, tu ne crois pas si bien dire.
Au début du web, il n'y avait que le HTML, et puis on a tenté de séparer les données de leur présentation, en inventant XML et CSS. yesterday at 07:41 pm GMT
Lasares
Confirmation, SVP : sql.php est le SEUL script qui modifie la base de données ? yesterday at 07:43 pm GMT
Bernard
Le PHP, conçu au départ comme une extension de HTML, est soumis à la même logique de segmentation des rôles, sauf que chaque environnement a sa propre architecture.
Alain, je crois bien que oui, en tout cas pour les opérations ordinaires sur la base.
D'un autre côté, les scripts de Yacs sont répartis dans des répertoires appelés modules. Le plus souvent, les modules sont nommés en fonction des éléments qu'ils aident à gérer : articles pour le contenu, sections pour les containeurs, categories pour les listes transverses, etc.
Une convention très importante à connaitre est que, dans yacs, le script qui implémente le M de MVC porte le même nom que le module. yesterday at 07:43 pm GMT
N1ckR
View is the code that generates the html, eg template, skin code. Controller is used to process input logic (eg a url, querystring or form), request data from the model and pass the data to the view for output. The controller and model logic is hidden (like a function call). The model gets data (eg database), it can process the data (eg timezone adjustments). yesterday at 07:47 pm GMT
Bernard
Par exemple, articles/articles.php est le script utilisé par tous les autres pour accèder ou manipuler des articles. yesterday at 07:47 pm GMT
ThierryP
Coucou, ah, le fameux articles/articles.php ! J'arrive pile poil on dirais yesterday at 07:48 pm GMT
Bernard
De la même façon, users/users.php contient tout le code, et les ordres SQL, pour manipuler un ou plusieurs profils de membres.
Salut Thierry yesterday at 07:48 pm GMT
ThierryP
(Je vous suis d'un oeil, quelques invités à la maison) yesterday at 07:50 pm GMT
Bernard
Grâce à cette convention, l'accès au modèle de données de Yacs est très simple. Par exemple, pour lire l'article numéro 123 en mémoire, il faut taper Articles::get(123). Et pour avoir la liste des articles récents dans la section 456, il faut taper Articles::list_by_date_for_anchor('section:456').
Bien sûr, ces scripts participant au modèle de données font eux-mêmes appel à shared/sql.php pour envoyer les requêtes à la base de données.
Toute règle a ses exceptions, bien sûr, et quelques autres scripts utilisent la base de données pour leur propre usage, notamment dans le module agents des traitements d'arrière-plan, ou dans le module shared des librairies partagées.
Liste des scripts de référence qui appartiennent au modèle de données :
  • actions/actions.php
  • agents/browsers.php
  • agents/messages.php
  • agents/profiles.php
  • agents/referrals.php
  • articles/articles.php
  • categories/categories.php
  • comments/comments.php
  • dates/dates.php
  • decisions/decisions.php
  • files/files.php
  • forms/forms.php
  • images/images.php
  • links/links.php
  • locations/locations.php
  • scripts/phpdoc.php
  • sections/sections.php
  • servers/servers.php
  • shared/cache.php
  • shared/mailer.php
  • shared/members.php
  • shared/values.php
  • tables/tables.php
  • users/notifications.php
  • users/users.php
  • users/visits.php
  • versions/versions.php

Soit à peu près 28 scripts sur un total de 577, soit 4% des scripts.
Ca va jusque là ? Des questions sur le Modèle de données de Yacs ? yesterday at 07:52 pm GMT
ThierryP
Moi non, ni mes invités yesterday at 08:03 pm GMT
Lasares
En pratique, ça peut servir à quoi de savoir quels scripts font partie du modèle de données ? yesterday at 08:03 pm GMT
Bernard
tchin tchin Thierry...
Alain, ça sert par exemple dans les overlays, ou dans tout code que tu pourrais écrire, pour aller chercher des informations dans la base de données. yesterday at 08:03 pm GMT
ThierryP
(entrainement pour le 22 ) ---> je repasse vous lire un peu plus tard. yesterday at 08:04 pm GMT
Lasares
Si je comprends bien, ces 25 scripts sont les SEULS qui, à travers sql.php, modifient la base de données, c'est ça ?
Et qui la consultent ? yesterday at 08:05 pm GMT
Christian
(salut à tous. z'avais oublié ! ... je relis) yesterday at 08:06 pm GMT
Bernard
Alain, oui, c'est le principe de MVC. Le code qui est dédié à certaines actions (ici, l'accès aux données) est regroupé dans des scripts bien identifiés, et en nombre limité.
Salut Christian. yesterday at 08:07 pm GMT
Lasares
Merci, je vois donc l'utilité pratique de cette liste.

Un détail, peut-être : shared/cache.php interragit avec la base de données ? yesterday at 08:08 pm GMT
Bernard
Oui, le cache est géré dans la base de données, et donc une table lui est réservée. yesterday at 08:10 pm GMT
Lasares
OK yesterday at 08:11 pm GMT
Bernard
Beaucoup de systèmes de gestion web s'aident de fichiers SQL annexes pour installer ou mettre à jour un serveur. Ce n'est pas le cas de Yacs, qui fait ça très bien tout seul. Cherchez la fonction setup() dans l'un des scripts listés plus haut pour accèder à la structure des tables et des index correspondants. Vous pouvez réutiliser le même principe dans un overlay de votre cru pour créer et faire évoluer une ou plusieurs tables particulières. Voir la fonction setup() dans overlays/issue.php pour un exemple concret.
Les fonctions setup() sont appelées lors de l'installation ou de la mise à jour par le script de maintenance, control/setup.php. Ce dernier devrait aussi donc être considéré comme participant au modèle de données, tout comme control/backup.php.
Enfin, il ne vous a pas échappé que le panneau de contrôle fournit un résumé du modèle de données, c'est le script control/index.php.
Soit, en fait, une trentaine de scripts avec les "annexes".
Passons au deuxième élément de MVC, la Vue. Ce terme désigne tout ce qui relève de l'interface avec l'utilisateur.
Dans l'architecture de Yacs, ceci est implémenté avec les skins bien sûr.
Souhaitez-vous revenir ici sur la structure des skins ? yesterday at 08:13 pm GMT
Agnès
Une mise au point a toujours du bon Bernard yesterday at 08:23 pm GMT
Lasares
Pas de façon générale, on a déjà fait ça dans un autre clavardage. Mais j'aimerais avoir un peu plus de précision sur la façon d'appeler ou de nommer des éléments de la base de données dans le template. yesterday at 08:24 pm GMT
Bernard
Ok, alors quelques éléments, sans trop rentrer dans les détails...
Dans le modèle MVC, il y a une flèche pleine du V vers le M, et une flèche en pointillé du M vers le V. Qu'est-ce que cela veut dire ?
Pour construire l'interface visuelle, il faut des informations, qui proviennent de la base de données (la flèche pleine). Dans Yacs, ceci se traduit par des appels vers les scripts de gestion des données.
Mais ces derniers ont aussi besoin de s'adapter aux règles particulières de construction de l'interface (d'où la flèche en pointillé). Dans yacs, ceci se fait à partir des skins et des layouts. yesterday at 08:24 pm GMT
Lasares
Compris. yesterday at 08:29 pm GMT
Bernard
A l'arrivée, les éléments en XHTML sont placés dans différentes variables du tableau $context. La liste des variables utilisés par Yacs est décrite dans le code du script skins/index.php.
Ce sont ces variables qui sont, au final, assemblées par le script template.php, le résultat étant transmis au navigateur pour affichage.
Donc on peut dire que, dans Yacs, les fichiers contribuant à la Vue du modèle MVC sont :
  • l'intégralité du répertoire skins (environ 41 scripts PHP)
  • les scripts dont le nom commence par layout_ (une centaine de fichiers)

Pour être complètement puriste, il faudrait rajouter tous les scripts qui génèrent du contenu XML pur, comme les fils d'information RSS ou similaires :
  • l'intégralité du répertoire feeds (12 scripts)
  • les scripts de codage/decodage XML dans services (notamment services/rss_codec.php)
  • agents/feed.php
  • articles/describe.php
  • articles/feed.php
  • actegories/describe.php
  • categories/feed.php
  • comments/feed.php
  • decisions/feed.php
  • files/feed.php
  • sections/describe.php
  • sections/feed.php
  • users/describe.php
  • users/feed.php
yesterday at 08:31 pm GMT
Lasares
Parfois, certains scripts écrivent du HTML. Je me souviens que ça a déjà été "critiqué" sur les forums. Moi-même je trouve parfois des instances où un script a écrit du HTML oùy je préférerais avoir seulement des données. Par exemple, un < br/ > de trop. N'est-ce pas contraire au MVC ? yesterday at 08:42 pm GMT
Bernard
Oui, et ce genre de chose est supprimé progressivement, au fur et à mesure des versions. yesterday at 08:44 pm GMT
Lasares
Retour sur un truc où j'ai bloqué récemment, si tu permets...

Ça n'a peut-être rien à voir avec notre discussion car ce que je cherchais n'est vraisemblablement pas dans la base de données. Mais si ça ne concerne pas le M, c'est au moins dans le V : comment fait-on, dans le template, pour "appeller" l'anchor qui a le focus ? (voir : comment 23724)


Pour ce qui est de la suppression progressive du HTML dans les scripts qui n'en ont pas besoin, est-ce que je pourrais aider, malgré ma faiblesse en programmation ? yesterday at 08:48 pm GMT
Bernard
Alain, j'ai lu le fil de discussion, mais ca mériterait qu'on en parle séparément je pense, le sujet serait un peu lourd pour ce soir. Et bien sûr, la chasse aux balises parasites est ouverte à tous, comme celle des bogues ou des liens non-SEO d'ailleurs... yesterday at 08:53 pm GMT
N1ckR
Bernard, as I do like MVC (but not 100% stict), something else I would like to see in YACS is DRY http://en.wikipedia.org/wiki/Don%27t_repeat_yourself, makes for easier to maintain code yesterday at 08:54 pm GMT
Bernard
De façon générale, si je me réfère à d'autres plates-formes web dynamiques, je trouve que Yacs fait plutôt mieux que les autres pour la séparation du HTML et du CSS. En particulier, les modules d'extension de Joomla et de Drupal mélangent allègrement données, balises HTML et contrôles d'accès, à l'opposé du modèle MVC. Est-ce aussi votre avis ? yesterday at 08:55 pm GMT
Lasares
Moi, j'ai toujours dit et je maintiens qu'une des principales forces de Yacs, c'est son respect des standards. Plus familièrement, je dis que Yacs, c'est "clean". Et c'est un avantage stratégique majeur, dans ce monde de bidouilleurs.

Alors, oui, je suis d'accord. yesterday at 08:57 pm GMT
N1ckR
Joomla has bad html/css modularity. Even drupal is a pain as you end up with lots of seperate css and html template files. YACS may not be designer friendly but IMHO has a good approach to html and css. yesterday at 08:58 pm GMT
Bernard
Nick, we are trying to streamline the code as much as possible, and the list of scripts included in other scripts is still growing just to avoid repetitions. This being said, I prefer code regularity over code compacity. My own experience of software development maybe...
Ok, il est 23 heures, donc largement temps de passer au Controleur du modèle MVC... yesterday at 08:59 pm GMT
N1ckR
Agreed, like MVC, its not always best to be 100% perfect... yesterday at 09:01 pm GMT
Bernard
Certains gestionnaires de web présentent une interface unique au navigateur, et les arguments présentés sont exploités pour exécuter un script ou un autre.
L'architecture de Yacs est beaucoup plus simple, puisque la plupart des scripts peuvent être appelés directement.
Pour lire une page, il faut charger articles/view.php, pour le modifier, c'est articles/edit.php, et pour le supprimer c'est articles/delete.php.
Donc tous les scripts qui ont un nom d'action participent à la fonction de Controleur du modèle MVC.
Et il y en a pas mal...
Chaque script est donc libre d'accepter ou pas une requête en fonction du statut du demandeur, des parmètres de configuration du serveur, etc.
Très souvent, la fonction de contrôle de Yacs est plus subtile, puisqu'elle affiche plus ou moins de choses en fonction des droits du surfeur.
Ainsi, une section affichera les articles publics aux surfeurs anonymes, et rajoutera les pages cachées pour les associés.
Cette logique de souplesse a été poussée jusqu'au bout puisqu'on peut dire que Yacs ne distingue pas la vitrine de l'arrière-boutique, au contraire de beaucoup d'autres gestionnaires web.
Le prix à payer pour cette architecture distribuée des fonctions de contrôle, c'est que chaque script doit impérativement être "bétonné" pour éviter les failles de sécurité.
Le script shared/surfer.php regroupe la plupart du code de contrôle relatif à un surfeur. Il est appelé par les autres scripts pour simplifier les tests de contrôle effectués un peu partout.
Cette description de l'architecture de Yacs ne saurait être complète sans parler un peu d'AJAX, qui chamboule tout le tableau...
Jusqu'à présent, nous avons regardé ce qui se passait côté serveur, dans les scripts PHP exécutés pour construire une page dynamique ou réagir aux clics.
Dans cette architecture, le navigateur est cantonné au rôle d'afficheur du contenu envoyé par le serveur.
Avec AJAX c'est différent, parce que du code Javascript va être envoyé par le serveur vers le navigateur, et ce dernier va être capable d'effectuer ses propres traitements.
Que dit le modèle MVC sur les traitements distribués entre plusieurs machines ? Ben, pas grand-chose justement...
Dans Yacs, les librairies Javascript sont concentrées dans le répertoire included/browser, et la librairie AJAX intégrée dans yacs est dans le fichier shared/yacs.js. yesterday at 09:02 pm GMT
Lasares
Je ne comprends pas : "Yacs ne distingue pas la vitrine de l'arrière-boutique". Peux-tu préciser ? yesterday at 09:19 pm GMT
Bernard
Alain, il n'y a pas de "page d'admin" dans YACS...
Du code Javascript peut-être généré directement par PHP, les scripts correspondant gardant le contrôle de ce qui est exécuté côté navigateur. Par exemple, cette page de clavardage génère dynamiquement le code Javascript qui permet de contribuer ou de rafraichir la page en arrière-plan. yesterday at 09:20 pm GMT
Lasares
Tu dis aussi : "chaque script doit impérativement être "bétonné" pour éviter les failles de sécurité". Je me posais justement la question de sécurité, sur un de mes sites. J'aimerais y mettre des mots de passe pour certains clients. Puis-je me fier à la sécurité de Yacs ? yesterday at 09:22 pm GMT
Bernard
Alain, je crois bien que oui... Nous avons eu quelques alertes début 2006 il me semble, mais c'est calme depuis.
Les autres, qu'en pensez-vous ? yesterday at 09:24 pm GMT
Christian
Sur un nouvel hébergeur que je suis en train d'utiliser, il n'a pas confiance envers les CMS. Je peux même pas uploader des images. Je voudrais bien avoir des arguments pour lui prouver le contraire yesterday at 09:25 pm GMT
Bernard
Dans l'absolu, toute introduction de programme quelque part est potentiellement dangereuse. Après, tout est question de mesure du risque, etc... yesterday at 09:27 pm GMT
Lasares
Et les codes [ hidden ] et [ restricted ], c'est sécure ? yesterday at 09:28 pm GMT
Bernard
Ceci étant, un hébergeur qui interdit les uploads risque de ne pas durer bien longtemps...
Alain, ces codes vérifient le statut de l'internaute avant d'afficher leur contenu. Oui, c'est assez sécurisé, à condition de ne pas se faire piquer son cookie...
L'authentification de PHP, qui est aussi celle de yacs, s'appuie sur les cookies. yesterday at 09:28 pm GMT
Lasares
Y a pas que sur Sesame Street qu'on trouve des cookie monsters ? yesterday at 09:30 pm GMT
Bernard
Le cookie est envoyé par le navigateur à chaque requête, et c'est ce qui permet à Yacs de déterminer qui est "au bout du fil". En environnement "normal", ce niveau de sécurisation suffit très largement. Pour se protéger encore plus, il faut passer de HTTP à HTTPS, avec des dialogues réseaux chiffrés qui protégerons le cookie de toute interception. Mais c'est plus cher bien sûr... yesterday at 09:31 pm GMT
N1ckR
Bernard, what changes to the php did you need to make for AJAX, I know you have to be careful about controlling what is reloaded... yesterday at 09:31 pm GMT
Bernard
Nick, can you be more specific please? yesterday at 09:33 pm GMT
Tof
plus cher ? yesterday at 09:34 pm GMT
Bernard
Tof, oui, le bon hébergement HTTPS coûte généralement plus cher que celui en HTTP, à cause des certificats numériques, etc. yesterday at 09:34 pm GMT
Lasares
Yacs fonctionne aussi en HTTPS ? qu'est-ce qui est pluis cher ?
Bluehost offre l'option HTTPS avec le forfait de base. yesterday at 09:34 pm GMT
N1ckR
ajax requests only small piece of data at a time, not a whole page, you dont want to process a php page and generate ALL the output, only to use just one part, did you need to add extra logic to handle this ? yesterday at 09:35 pm GMT
Bernard
Alain, HTTPS, c'est HTTP par-dessus du SSL. Donc oui, Yacs fonctionne en HTTP ou en SSL. Et je n'ai pas encore eu l'occasion de tester ça chez BlueHost, donc je peux me tromper sur les prix... yesterday at 09:36 pm GMT
Lasares
Ok, merci. yesterday at 09:37 pm GMT
Tof
par contre un certificat coute effectivement très cher yesterday at 09:38 pm GMT
Lasares
En passant, pour la partie V (Vue), un petit commentaire : j'adore le graphisme des nouvelles étiquettes ! yesterday at 09:39 pm GMT
Bernard
Nick, this is what is done at the page you are viewing right now, isn't it? To achieve this, small portions of Javascript are making AJAX calls in the background, of new PHP scripts that compute page fragments instead of full pages. yesterday at 09:39 pm GMT
Christian
pour les certificats : non pas forcément. Je crois que chez Ovh les prix sont plus que correct. yesterday at 09:39 pm GMT
Bernard
Merci Alain pour le feed-back...
Christian, ok, je vais remettre mes tablettes à jour. Tant mieux si le marché a progressé, il y aura de plus en plus de HTTPS/SSL dans le futur à cause du commerce électronique, alors si l'hébergement n'est pas plus cher c'est super. yesterday at 09:39 pm GMT
Christian
40 euros HT / an yesterday at 09:40 pm GMT
Bernard
Nick, the proliferation of PHP scripts introduced to answer AJAX requests is putting the architecture of Yacs at risk on the long run. Therefore at the moment most such scripts are moving to the services directory. Moreover, i am working on a new interface to consolidate several of these scripts into one. Keep posted...
Nous avons largement dépassé le temps imparti, et je m'en excuse auprès de vous. le sujet est assez vaste et important, et j'espère avoir pu donner un éclairage à peu près compréhensible de l'architecture de Yacs. Au moins, que vous ayez quelques points de repères parmi tous ces fichiers...
Il nous reste à finaliser cette discussion, puis à demander à nuxwin de nous dire ce qu'il en pense. Après tout, c'est pour lui qu'on a fait tout ça à l'origine non ? yesterday at 09:43 pm GMT
N1ckR
Nice idea. IF you follow MVC, this means creating a new controller(s). yesterday at 09:46 pm GMT
Bernard
Nick, yes, and it will be placed in directory services... yesterday at 09:47 pm GMT
Lasares
Avant de clore, j'aurais une question totalement hors-sujet, mais puisque tu es en ligne...

L'affichage du bureau à distance avec VNC, est-ce que ça marche ou pas ? yesterday at 09:48 pm GMT
Bernard
Un grand merci à tous pour votre participation à cette soirée.
Alain, oui, ça marche avec VNC, et même avec Netmeeting à partir de la 8.4. On en fera une soirée spéciale aussi si tu le souhaites ?
Je te conseille d'installer UltraVNC ou TightVNC pour le faire. Manque encore le mode d'emploi, bien sûr... yesterday at 09:48 pm GMT
Lasares
Oui, j'aimerais beaucoup, SVP ! yesterday at 09:50 pm GMT
Bernard
Allez ouste, tous au lit, pour ceux chez qui le soleil est parti à l'Ouest depuis longtemps. Alain, désolé, nous allons dormir ce ce côté-çi... sleep yesterday at 09:51 pm GMT
Lasares
J'ai déjà VNC server personal edition (j'ai acheté). Ce n'est pas suffisant ?
OK, bon dodo à tous ! yesterday at 09:51 pm GMT
Bernard
Si, ce devrait l'être...
Dans une minute, cette discussion sera transformée non pas en citrouille, mais en transcript permanent pour édifier les générations futures... yesterday at 09:52 pm GMT
Christian
en passant j'ai fait du ménage des les "soupçons de bogues". Bonne nuit à tous et toute yesterday at 09:53 pm GMT
Agnès
Merci pour toutes ces explications Bernard, qui parlent même à l'utilisatrice que je suis chinese

Bonne nuit à tous, et à bientôt yesterday at 09:53 pm GMT
Lasares
Je vous laisse prendre un repos bien mérité et je vais de ce pas prendre l'apéro en votre honneur ! yesterday at 09:53 pm GMT
Bernard
Merci Christian. A bientôt tout le monde, faites de beaux rêves de MVC...
A+ yesterday at 09:54 pm GMT
N1ckR
OK I have to go. Been a good talk yesterday at 09:58 pm GMT