Comme nous le rapporte le magazine Programmez! VMWare signale la présence d’une faille de sécurité critique dans son produit Spring, permettant l’exécution de code à distance (RCE). Cela touche les versions de Spring Framework 5.2.0 à 5.2.19 et 5.3.0 à 5.3.17, ainsi que des versions plus anciennes. Reprise sous l’identifiant CVE-2022-22965 et baptisée Spring4Shell, cette faille ne peut être exploitée que si certaines conditions sont réunies.
Java propose l’API Stream, qui permet de manipuler et effectuer des opérations sur un ensemble de données, telles qu’une collection, un tableau ou même un flux I/O. Elle offre diverses possibilités : tri, parcours de collections, extraction d’éléments à l’aide de filtres, etc.
Dans cet article nous allons voir comment effectuer un tri basique pour retourner une nouvelle liste mais également comment retourner une liste d’objets d’un type spécifique.
Si vous ne connaissez pas encore tinyMCE, il s’agit d’un éditeur WYSIWYG que vous pouvez intégrer à vos sites. Il est notamment très connu grâce à son utilisation dans WordPress. L’édition Community est gratuite mais il existe également des offres avec support et plugins premium.
Pour une raison ou une autre vous souhaitez peut-être récupérer le contenu d’un éditeur initialisé avant de l’envoyer au serveur. Cela est évidemment possible ! Bien que cet article serve avant tout de mémo il va également vous aider à ne pas plonger dans les méandres de l’énorme documentation de la librairie. Voyons ensemble comment procéder.
Il y a déjà un moment nous abordions le fait de pouvoir afficher une page de PDF sous forme d’image grâce à la librairie PDF.js. Les différentes mises à jour de celle-ci ont conduit à ce que certains appels soient désormais dépréciés, bien que toujours fonctionnels. Dès lors, comment modifier votre code ?
L’une des grosses améliorations de Java 8, c’est ce qu’on appelle les streams. C’est un nouveau pattern de manipulation de données et cela permet de se passer notamment des itérateurs que l’on connait. On peut les utiliser sur des collections ou même des tableaux.
En Java, il est possible d’utiliser la validation de beans pour permettre d’en valider son contenu, donc les différents membres de la classe. Par exemple, si on a une classe Personne, qui contient un nom et un prénom, on voudrait valider que ceux-ci ne dépassent pas une certaine taille ou même qu’ils respectent une expression régulière.
Plutôt que de créer des méthodes visant à vérifier chaque élément un à un, on va se baser sur des annotations.
Si vous cherchez un plugin de comparaison pour la version 64 bits de Notepad++, vous pouvez télécharger Compare proposé par le développeur Pavel Nedev. Il vous permettra de mettre en évidence les différences dans deux fichiers texte, et si ceux-ci correspondent vous serez directement notifié par l’outil.
En SQL il est possible de rechercher du texte dans une colonne de type BLOB. Attention que cette méthode s’applique à la base de données Oracle. On utilise des méthodes internes qui permettent de convertir le terme cherché en données brutes et effectuer une recherche de caractères dans la colonne.
En guise d’alternative au très bon SyntaxHighlighter développé par Alex Gorbatchev (voir le site ici) mais qui n’est malheureusement plus mis à jour, on peut utiliser Prism.js.
Il offre la coloration syntaxique pour afficher du code de manière à ce qu’il soit lisible par les utilisateurs. Il se veut intuitif et extensible car il est possible d’ajouter assez facilement des langages à ceux déjà pris en charge. On peut même basculer entre différents thèmes. La librairie est utilisée par de nombreux sites tels que React ou même Drupal.
Dans votre application web, il est possible de réaliser une gestion d’exceptions – notamment pour intercepter ServletException – en passant par une servlet. Par défaut, les erreurs telles que le code HTTP 500 sont gérées par le serveur et renvoient vers une page par défaut. L’idée est donc de changer ce comportement en renvoyant par exemple une information en JSON ou en redirigeant vers une JSP.
Ce site web utilise des cookies pour améliorer votre expérience. Par conséquent nous déterminons que vous êtes d'accord avec cela mais vous pouvez refuser certains cookies tiers en cliquant sur le lien suivant. Paramètres des cookiesTout autoriser
Vie privée & Cookies
Réglages de confidentialité
Ce site web utilise des cookies pour améliorer votre expérience de navigation. Parmi ceux-ci on retrouve des cookies qui sont considérés comme nécessaires et qui sont stockés dans votre navigateur. Ils sont essentiels pour les fonctionnalités de base et la sécurité. Nous utilisons également des cookies tiers qui peuvent aider à analyser et comprendre la façon dont vous utilisez notre ce site. Ils seront stockés avec votre consentement. Vous avez également la possibilité de ne pas accepter ceux-ci mais cela peut avoir un effet négatif sur votre expérience de navigation.
Tout cookie qui est absolument nécessaire pour le bon fonctionnement du site. Il s'agit de cookies qui concernent les fonctionnalités basiques et de sécurité du site. Ils ne stockent pas d'informations personnelles.
Cookie
Description
cookielawinfo-checkbox-advertisement
Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Advertisement" category.
cookielawinfo-checkbox-analytics
Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Analytics" category.
cookielawinfo-checkbox-necessary
Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Necessary" category.
cookielawinfo-checkbox-others
Set by the GDPR Cookie Consent plugin, this cookie stores user consent for cookies in the category "Others".
CookieLawInfoConsent
CookieYes sets this cookie to record the default button state of the corresponding category and the status of CCPA. It works only in coordination with the primary cookie.
Les cookies publicitaires (ex: Google DoubleClick) sont utilisés pour fournir aux visiteurs des publicités ou campagnes publicitaires pertinentes, notamment dans des vidéos YouTube intégrées au site. Ces cookies collectent donc des informations pour fournir du contenu personnalisé.
Cookie
Description
VISITOR_INFO1_LIVE
YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface.
YSC
Youtube sets this cookie to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt-remote-device-id
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.