Bonjour,
nous avons produit une nouvelle version disponible ici : https://gitlab.nuiton.org/codelutin/mjol/builds/artifacts/mjol-1.1.21/download?job=build-java https://gitlab.nuiton.org/codelutin/mjol/builds/artifacts/mjol-1.1.21/download?job=build-js Elle apporte : - ajout de la modification du mot de passe admin - corrections des 2 défauts graphiques remontés - modification d'une chaîne de caractères.
Merci pour
les modifications. Nous voyons biens la partie profil
désormais pour la partie
admin, néanmoins l'update de mot de passe ne fonctionne pas.
Avez-vous
une idée ? Voici la trace complète :
10-Apr-2017 17:17:30.490 SEVERE
[ajp-nio-8009-exec-7] org.nuiton.spgeed.Query.executeUpdate
Can't execute query 'UPDATE person SET password = ? WHERE
email = 'admin')'
with args: [mjol4ever]
10-Apr-2017 17:17:30.491 SEVERE
[ajp-nio-8009-exec-7]
com.mjol.backend.SQLExceptionMapper.toResponse Error SQL
org.postgresql.util.PSQLException:
ERROR: syntax error at or near "RETURNING"
Position:
71
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2284)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2003)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200)
at
org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
at
org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161)
at
org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
at
org.nuiton.spgeed.Query.getResult(Query.java:167)
at
org.nuiton.spgeed.Query.executeUpdate(Query.java:295)
at
org.nuiton.spgeed.ClassCreator.lambda$generate$1(ClassCreator.java:100)
at
com.mjol.backend.dao.DatabaseDao_$$_jvst360_0.updatePasswordAdmin(DatabaseDao_$$_jvst360_0.java)
at
com.mjol.backend.service.AdminService.updateProfile(AdminService.java:96)
at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
java.lang.reflect.Method.invoke(Method.java:498)
at
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
at
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402)
at
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209)
at
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at
org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:478)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at
java.lang.Thread.run(Thread.java:745)
Le Fri, 7 Apr 2017 16:41:18 +0200, Monjardinieronline® <monjardinieronline@gmail.com> a écrit :=> Nous sommes effectivement d’accord avec vous sur la restriction ip de la partie administration, ceci nous parait tout de même moins critique que de continuer a utiliser le mot de passe par défaut que vous aviez établit durant le développement. Le hic c’est que la partie administration est tellement réfléchi au niveau fonctionnel que nous n’avons même pas possibilité de le changer via l’interface.Nous avons rajouté un onglet dans la partie administration pour changer le mot de passe administrateur.2)"Avez-vous pu tester la version livrée hier ?" => Nous avons recenser quelques bugs graphiques suite au déploiement : - sur le formulaire d’édition des prestataire (assez gênant pour rendre actif/inactif un prestataire) https://www.dropbox.com/s/udg8pdy8doavvqt/bug%20admin%206.png?dl=0 - sur la popin des commentaires prestataires https://www.dropbox.com/s/665zismenmxy7f4/bug%20admin%207.png?dl=0Nous avons corrigé ces défauts.Ce qui est fait est fait, nous ne reviendrons pas dessus, mais admettez à minima que votre solution n'est certainement pas la plus adaptée à un site ou le référencement reste un des enjeux cruciaux. Donc quand on est professionnel du web, ne pas se soucier des ces problématiques relève de l'hérésie. En lisant cet article toutefois, cela nous permet d'envisager une solution à ces soucis. Nous maitrisons les headless browser tel que phantomJS ou casperJS. Nous devons encore étudier la faisabilité de la chose mais dans les grosses lignes, il nous suffirait d'identifier les user agent correspondants aux bots d'indexation, pour leur servir un contenu prégénéré par phantomJS, qui aura été préalablement mis en cache sur le serveur afin de conserver un temps de réponse optimal.Le fait d'utiliser phantomJS ou casperJS n'amélioreront pas les choses pour le référencement Google car c'est exactement ce qu'il fait déjà et il déconseille donc d'utiliser ces pratiques pour du SEO depuis 2015 (cela peut-être réalisé pour les autres moteurs de recherche qui représentent moins de 6% du marché (chiffres de novembre 2016 - Google : 94,1% – Bing : 3,4%, Yahoo! : 1,8%.) De plus, nous venons de voir que Google indexe bien le contenu des pages. Par exemple sur la capture d'écran en pièce jointe, c'est bien le contenu de la page (et non les meta) qui est affiché. Preuve que Google indexe bien le contenu. Le site est très récent et il lui faudra du temps pour remonter dans les recherches, mais il est correctement indexé. Un des meilleurs moyens pour améliorer le référencement sont les rétro-liens provenant de sites connus. Si nous reprenons le contenu de votre article, rédigé par un étudiant, nous pouvons voir que nous mettons déjà en place les bonnes pratiques, à savoir l'utilisation de l'API pushState, recommandée par Google. Les autres bonnes pratiques énoncées dans l'article sont obsolètes pour Google depuis 2015, comme annoncé par Google lui-même.
Rédigé par
un étudiant en fin de master qui fait son alternance dans une
boite de SEO
effectivement, donc nous supposons qu'il en connais un minimum
sur le sujet. Nous
cherchions un contenu très récent, nous aurions dû
effectivement vous partager
d'autres sources.
Il y a des
boites qui font des plugins de pré-rendu pour les site en full
js comme
http://www.brombone.com/ ou encore https://prerender.io, ça ne
doit pas être
pour rien. Cela semble être une querelle sans fin de toute
façon, il suffit de
voir ici (les commentaires aussi sont intéressants) :
https://www.grobmeier.de/seo-and-angular-20012016.html
Ce que nous
en retenons à date, c'est que si ça passe le fetch as google,
ça devrais aller
effectivement. Votre screenshot prouve bien l'indexation du
contenu du DOM
après modification de celui-ci par du javascript, nous
attendrons quelques
temps pour nous faire un vrai avis sur la réalité de la bonne
indexation par
google et consort.
Dans la
version actuelle du site, qui a peu de contenu texte indexable
et de fonctions
destinées aux end users, cela semble effectivement moins
critique que nous le
pensions d'un point de vue indexation sur google (uniquement).
Nous ne
pouvons que continuer de vous recommander de rester très
vigilant tout de même
sur ces notions. Tout ne semble pas rose que ce soit d'un côté
ou de l'autre.
Google étant
une boite noire, personne ne peut avoir d'affirmation trop
poussée sur le
sujet.
Il est de
plus en plus compliqué de bien se faire référencer par google,
et ça n'ira pas
en s'améliorant puisque google a tout intérêt a rendre son
page rank le plus
opaque et pertinent possible.
Donc autant
vous simplifier la vie au maximum, quitte à faire du java,
l'utilisation de JSP
éviterais ces soucis la et d'autres contraintes d'un site full
js :
compatibilité, nécessité de recompiler et mettre à jour tout
le site même pour
un simple texte, indexation sur des fonctions ou sites plus
complexe.
Très
sincèrement même après de nombreuses lectures (pour et
contre), toutes en
reviennent au même principe : à utiliser avec parcimonie voir
à proscrire pour
de très gros sites. Maintenant à vous de voir pour vos futurs
projets, même si
les recommandations de google sur le sujet on changées depuis
2 ans, cela reste
assez frais et les perfs SEO de ces site la même si indexable
doivent rester
bien moindre qu'un site au rendu plus classique qui ont déjà
pas mal de soucis
à se faire correctement référencer.
Merci pour la modification.5) Nos clients ont des difficultés à créer un compte client : après édition du formulaire client, ils ne comprennent pas qu'ils doivent se rendre sur leur boite mail pour valider leur compte via le lien envoyer. Pour une meilleur compréhension de leur part serez t'il possible sur la prochaine version de modifier le texte par celui ci : "Veuillez confirmer votre compte en cliquant sur le lien reçu dans votre boite mail"Nous avons modifié le texte.
Très bien à Jeudi.7) "Nous pouvons être disponibles le 13 de 9h à 14h dans vos locaux ou bien le 27." => Ok pour le 13 avril 2017 dans nos locaux : 102 avenue henry cheron - 14000 Caen