Recherche sur le blog

jeudi 11 juillet 2019

[Jeux vidéo] Now playing... #2

Vous jouez à la console ou sur PC ? Parce que moi oui, et même si je n'y consacre pas ma vie entière, c'est tout de même l'un de mes principaux hobbies. Alors si vous cherchez de l'inspiration vous êtes tombés au bon endroit. Un petit conseil... attachez vos ceintures, ça pourrait vous être utile pour la suite !


Après la réédition des trois premiers titres de Crash Bandicoot, le marsupial fait son retour avec son kart. Le jeu est actuellement disponible sur Nintendo Switch, PS4 et Xbox One. Rappelez-vous le bon vieux temps où vous jetiez missiles, bombes et fioles sur vos adversaires pour gagner la course. Et ce fameux Nitros Oxide qui explosait tous les records du Contre-la-montre... Et bien, tout est là et c'est tant mieux. Le jeu remis au goût du jour, propose du challenge et trois modes de difficulté de l'IA pour permettre à tout public de le prendre en main.

Il n'empêche qu'il faudra s'entrainer à maitriser la poussée turbo pour gagner l'ensemble des épreuves, notamment pour débloquer N.Tropy. Visuellement parlant, le jeu est coloré, vivant, les graphismes plutôt soignés même si on regrette l'absence des 60 images par seconde, vraiment un plus dans un jeu où la vitesse est présente... et surtout que l'ensemble des consoles actuelles le permettraient très facilement. On apprécie évidemment les suppléments tels que le Grand Prix ou le multijoueur (même si le mode en ligne a eu quelques débuts difficiles). Beenox cherche à s'assurer que les joueurs ne s'ennuieront pas trop vite ! Et selon moi le pari est plutôt réussi. Les nostalgiques aimeront !


S'il y a bien un jeu qu'il n'est plus trop nécessaire de présenter, c'est bien Assassin's Creed. Dans ce nouvel opus, nommé "Odyssey", vous explorerez la Grèce antique. Vous choisissez votre héro, homme ou femme, et partez donc à l'aventure pour faire tomber les plus grands mercenaires mais aussi les adeptes du Culte de Kosmos. Il vous faudra affronter toutes sortes de dangers, que ce soit sur la terre ou en mer, puisque les navires font leur grand retour.

On pourrait reprocher énormément de choses à Ubisoft par rapport aux précédents opus, mais le travail réalisé sur ce dernier épisode est plutôt incroyable. Le jeu ne manque pas de contenu, et les zones à explorer sont nombreuses. Le système d'évolution du personnage est plutôt bien pensé et permet au joueur d'adapter son style de combat en diversifiant les aptitudes. Tir de 3 flèches, percée de bouclier, les attaques peuvent être variées que ce soit au corps-à-corps ou à distance. Il faudra également penser à bien faire évoluer son armure. Différents sets peuvent être trouvés et ceux-ci apportent des bonus supplémentaires lorsqu'ils sont complets et/ou utilisés avec certaines aptitudes.

Bref, ce n'est pas le fun qui manque et les accros de l'exploration n'hésiteront pas à visiter tous les points d'intérêt, ne serait-ce que pour découvrir les différentes régions "redessinées" par le studio. Ce qui est sûr, c'est que l'on s'y croirait...

[Java] Gestion des erreurs à l'aide d'une servlet

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.

On va donc créer une classe qui hérite de HttpServlet. Celle-ci devra implémenter des fonctions pour gérer les différentes méthodes HTTP (exemple : PUT, GET, POST...).
@WebServlet("/maServletHttp")
public class MaServletHttp extends HttpServlet 
{
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) throws IOException 
    {
        // On gère l'erreur...
    }
}
Comme on peut le constater on a donc créé une fonction qui sera exécutée lorsque la méthode GET est utilisée. Typiquement lorsqu'on appelle une URL et qu'on spécifie un ensemble de paramètres dans celle-ci. Il faudra donc ajouter les autres fonctions comme doPost() - généralement appelée lors d'un envoi de formulaire - ou doPut().

On remarque aussi l'annotation @WebServlet qui permet de définir tout un ensemble d'informations utiles, notamment l' "URL pattern". On peut soit spécifier cette valeur directement comme dans l'exemple ci-dessus, soit en spécifiant les attributs de la manière suivante.
@WebServlet(
        name = "maBelleServlet",
        description = "Gestion d'exceptions",
        urlPatterns = "/maServletHttp"
)
public class MaServletHttp extends HttpServlet 
{
    // Code de la servlet...
}
Certains attributs de la servlet ne sont utiles que pour les outils utilisés lors du développement (par exemple, description ou encore smallIcon). Ces attributs sont décrits dans la documentation de JavaEE 7.

Il faut ensuite modifier le fichier web.xml pour spécifier dans quels cas la servlet doit être appelée pour gérer les exceptions ou les différents code d'erreur. Dans l'exemple ci-dessous on va faire en sorte que la servlet soit appelée en cas d'erreur HTTP 500.
<web-app ... >
    <error-page> 
        <error-code>500</error-code> 
        <location>/maServletHttp</location> 
    </error-page>
</web-app>
On a donc ajouté un élément "error-page" dans le fichier descriptif de l'application. Pour cet élément on a spécifié le code d'erreur grâce à l'élément "error-code" et l'emplacement de la servlet (qui correspond au URL pattern défini précédemment dans l'annotation de la classe Java) représenté par l'élément "location". 

A la place de l'élément "error-code" on peut aussi spécifier "exception-type" et indiquer les erreurs que la servlet devra intercepter. On y spécifie alors le canonical name de la classe d'exception visée (ex : java.lang.NullPointerException).

Une fois le fichier de configuration XML modifié, on peut s'attaquer au code de la servlet. Aussi bien lorsqu'on redirige vers une JSP qu'une servlet, des attributs contenant des informations à propos de l'erreur qui se produit, sont définis au niveau de la requête et peuvent donc être rapatriés dans le code.
@WebServlet("/maServletHttp")
public class MaServletHttp extends HttpServlet 
{
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) throws IOException 
    {
        Integer li_st = (Integer) request.getAttribute(
                "javax.servlet.error.status_code"
        );

        Throwable lo_e = (Throwable) request.getAttribute(
                "javax.servlet.error.exception"
        );

        String ls_svlt = (String) request.getAttribute(
                "javax.servlet.error.servlet_name"
        );
        
        // Envoi de la réponse après.
        // Voir ci-dessous.
    }
}
Voici le tableau des attributs disponibles (source : tutorialspoint).


L'attribut qui contient le nom de la servlet est intéressant car il s'agit de la source, là où l'erreur s'est produite. Cela signifie qu'en fonction du nom on peut imaginer un traitement différent en retour.

L'exemple ci-dessous renvoie simplement du JSON au client après une erreur dans un Web Service.
@WebServlet("/maServletHttp")
public class MaServletHttp extends HttpServlet 
{
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) throws IOException 
    {
        // Récupération des attributs avant.
        // Voir ci-dessus.
        if (ls_svlt.equals("webserviceServlet"))
        {
            response.setContentType("application/json");
            response.getWriter().print(
                "{ key1: 'val1', key2: 'val2' }"
            );

            response.getWriter().flush();
        }
    }
}
On peut également modifier le code de retour (par exemple, si le code était 500, on peut le redéfinir au niveau de l'objet HttpServletResponse).

Sources

Baeldung
CodeJava.net
LogicBig
Oracle 
Tutorialspoint

vendredi 15 février 2019

[Info] Nouveautés du blog

J'avoue être assez inactif en ce moment. J'en ai donc profité pour enfin mettre à jour la section "Utilitaires" en corrigeant les numéros de version là où il y en avait, mais aussi en rajoutant de nouveaux logiciels. La section "Contact" est aussi mise à jour avec la nouvelle configuration de mon desktop. Il y a eu du neuf : un petit i9-9900K a donc fièrement pris place dans mon boitier, sur une toute nouvelle carte mère de chez Gigabyte. On repart sur de bonnes bases !

[Utilitaires] KeePass et saisie auto dans Firefox

Ayant décidé de repasser à l'antivirus de Windows plutôt que d'utiliser Bitdefender qui déçoit malheureusement par sa cuvée 2019, il a fallu chercher un moyen de remplacer la fonctionnalité du Wallet. Pour ceux qui ne connaissent pas, la suite Bitdefender intègre un gestionnaire de mots de passe qui permet donc de sauvegarder les identifiants dans une base de données locale et/ou stockée sur le cloud et synchronisée avec les appareils protégés. La particularité supplémentaire de ce gestionnaire de mots de passe, c'est qu'il est possible de l'intégrer aux différents navigateurs pour profiter de la saisie automatique dans les formulaires utilisateur/mot de passe.

Malheureusement il existe énormément de concurrents qui proposent de... payer à l'année ou au mois pour disposer d'un gestionnaire et de la synchronisation. Leurs versions gratuites permettent généralement de stocker une dizaine voire une cinquantaine de mots de passe. En 2019 il est difficile de s'en tenir à ce genre de nombre. Sachez qu'il existe une alternative qui ne coute pas un sou !


Il s'agit de KeePass, un logiciel open-source ultra-léger qui fonctionne lui aussi avec une base de données qui est protégée par un mot de passe et cryptée avec des algorithmes robustes. Il se contente de l'essentiel et propose diverses fonctionnalités comme la création de groupes, le copier-coller d'un mot de passe avec expiration du contenu du presse-papiers, etc. Et ce qui fait aussi sa force, c'est la multitude de plugins qui peuvent être rajoutés.

Vous trouverez le logiciel sur la page suivante : Keepass.info. Téléchargez l'exécutable de la version 2 et installez l'utilitaire sur votre machine, dans le répertoire de votre choix. Lancez le logiciel et créez une nouvelle base de données avec les options par défaut.

Il existe donc une extension très intéressante qui peut être installée dans Firefox : il s'agit de Kee. Vous devez tout d'abord télécharger l'extension et l'installer. Une fois que cela est fait, il faut télécharger le plugin KeePass RPC depuis le Github officiel. Téléchargez le fichier "plgx" et placez-le dans le sous-répertoire "plugins" de l'installation de KeePass. Fermez et rouvrez KeePass.

A cet instant le navigateur va souhaiter communiquer avec KeePass via le plugin fraichement installé. Le logiciel va vous demander un code que vous devrez copier dans le champ de saisie normalement automatiquement affiché à l'écran. Un peu à l'image d'un code PIN Bluetooth qu'il faut entrer des deux côtés pour valider l'échange de données. Ce fameux code pourra expirer après un temps que vous personnaliserez.

C'est prêt ! Lorsque vous introduirez des identifiants dans les champs utilisateur/mot de passe d'un site web, il vous sera proposé de les enregistrer dans la base de données de KeePass. Lors d'une prochaine visite du site, les champs seront automatiquement complétés, à l'image de ce qui se fait avec Bitdefender Wallet ou d'autres solutions également payantes. Vous pouvez également fouiller dans les options de l'extension (donc au niveau du navigateur) pour par exemple soumettre automatiquement un formulaire une fois rempli... Bref, j'aime !

Ci-dessous les liens utiles :

samedi 2 février 2019

[Windows 10] La mise à niveau s'arrête à 52%

...au second redémarrage et affiche également un message d'erreur plus qu'étrange : "Windows could not configure one or more system components (...)". Lorsque vous cliquez sur OK, l'ordinateur redémarre et annule les modifications qui ont été apportées pour ainsi revenir à la build 1803. Inutile d'analyser les fichiers systèmes pour une éventuelle corruption, cette piste a été envisagée et n'a rien donné.

Cela semble dû à la présence de IIS ("Internet Information Services") sur l'ordinateur. Il s'agit d'un ensemble d'outils web (FTP, SMTP, HTTP) pour Windows. Impossible de dire si la mise à jour échoue à cause d'une installation incomplète ou corrompue de ces outils. La première chose à faire est donc de supprimer totalement la fonctionnalité. Pour ce faire:
  • Cliquez sur le menu Démarrer ou sur l'icône de recherche dans la barre de tâches.
  • Saisissez directement le texte "Panneau de configuration". Cliquez sur le premier résultat (Panneau de configuration - Application de bureau) qui apparait.
  • En haut à droite de la fenêtre qui s'ouvre, - si cela n'est pas encore fait, - cochez "Afficher par: grandes icônes" pour afficher tous les éléments.
  • Cliquez sur "Programmes et fonctionnalités". Cela ouvre une autre fenêtre qui liste l'ensemble des applications installées sur votre ordinateur.
  • Dans les liens à gauche, cliquez sur "Activer ou désactiver des fonctionnalités Windows".
  • Attendez quelques secondes que la liste soit chargée, puis localisez "Internet Information Services" et cochez-le. S'il est partiellement coché la case est normalement remplie de noir sinon cochée. 
  • Une fois la case décochée, cliquez sur OK. Un processus de désinstallation va se lancer et devrait durer quelques minutes. 
  • Assurez-vous que le service "Application Host Helper Service" a bien été supprimé.  Pour vous en assurer, cliquez sur le menu Démarrer - ou l'icône de recherche -, saisissez "services.msc", appuyez sur Entrée puis cherchez le-dit service dans la liste qui s'affiche.
Pour poursuivre le nettoyage, il faut procéder au nettoyage de certains dossiers supplémentaires:
  • Ouvrez le répertoire C:\Windows\System32\ et localisez le dossier "inetsrv".
  • Effectuez un clic droit sur ce dossier, choisissez l'élément "Propriétés", et allez ensuite dans l'onglet "Sécurité".
  • En bas à droite de la fenêtre cliquez sur le bouton "Avancé".
  • Modifiez le propriétaire, appliquez, ensuite modifiez les droits pour bénéficier du contrôle total sur le dossier.
  • Renommez-le en "inetsrv.old" ou si vous aimez vivre dangereusement, supprimez-le directement (ce que j'ai fait).
  • Ensuite, ouvrez le dossier C:\Windows\WinSxS.
  • Localisez tous les dossiers répondant au masque *windows-iis*.*
  • Sauvegardez-les sur un disque puis supprimez-les (ou supprimez-les directement). Pour pouvoir déplacer ces dossiers, il faudra en devenir le propriétaire et en avoir le contrôle.
Malheureusement il n'est pas possible de devenir propriétaire de plusieurs dossiers en les sélectionnant tous et en tentant d'en changer la sécurité. Il existe cependant des commandes bien pratiques pour effectuer ces opérations plus rapidement.

Exemples :
takeown /F *windows-iis*.* /R /D Y
La commande permettra de devenir le propriétaire de tous les dossiers dont le nom contient "windows-iis". L'option /R permet d'indiquer que la commande doit se faire de manière récursive sur les sous-dossiers.
icacls *windows-iis*.* /grant USERNAME:(OI)(CI)F /T
La commande permet de donner le contrôle total (F) sur tous les dossiers qui contiennent le texte "windows-iis". L'option /T permet d'indiquer que la commande doit se faire de manière récursive. OI et CI permettent d'activer l'héritage. 
  • Une fois ces dossiers supprimés, et le dossier "inetsrv" renommé ou supprimé également, relancez l'installation de la mise à jour d'octobre (1809).
  • Lors du second redémarrage vous constaterez qu'une fois à 52% l'installateur va faire un bond en arrière pour ensuite continuer le processus.
La mise à jour devrait se poursuivre sans encombres.

Sources

Microsoft Answers

lundi 8 octobre 2018

[Jeux vidéo] Now Playing...

Je ne suis pas un grand joueur en multi : la compétition, ce n'est clairement pas mon truc. Cependant j'ai toujours plaisir à lancer un jeu vidéo après le boulot ou pendant quelques heures le week-end. En ce moment, ce sont trois jeux sur lesquels je suis plutôt occupé. D'autres suivront tels que Assassin's Creed Odyssey ou Shadow of the Tomb Raider... Voyons plutôt ce sur quoi je m'attarde actuellement...

Two Point Hospital - Plateforme : PC

Ce n'est pas réellement le sauveur du jeu de gestion, car pour ça Les Sims 4 se plaçait plutôt bien. Two Point Hospital est "le" remake tant attendu par les joueurs ayant connu Theme Hospital. Mais oui, souvenez-vous quand vous construisiez vos salles et que de nombreuses maladies complètement loufoques faisaient leur apparition. Rappelez-vous des patients qui vomissaient dans les couloirs, ou qui se transformaient en fantôme après leur mort afin de hanter l’hôpital. Tout cet esprit a été conservé dans ce titre, avec énormément de clins d’œil. Sorti en aout, le titre continue sur sa lancée et une prochaine mise à jour apportera quelques nouveautés dont le fait de pouvoir modifier les tenues vestimentaires du personnel pour faciliter leur repérage.  


Detroit : Become Human - Plateforme : PS4

Développé par Quantic Dreams, ce jeu vidéo propose un système de jeu relativement simple où le joueur doit choisir parmi plusieurs actions / dialogues afin de déterminer la suite des événements. L'intrigue prend place dans le futur dans lequel les humains ont à leur service des androïdes. Le cours du jeu sera modifié selon les choix et le succès ou l'échec des scènes où l'on doit enchainer une série de touches spécifiques (Quick Time Events, ou QTE). Bien sûr tout a été prévu et pour chaque chapitre, plusieurs fins ont été définies. Quant au casting on peut dire qu'il est plutôt sympa !


Divinity : Original Sin 2 - Plateforme : PC

S'il y a bien un jeu dont les belges peuvent être fiers, c'est Divinity! Développé par Larian Studios, ce jeu est un format action-RPG tour par tour. L'histoire se déroule des siècles après celle du précédent opus, et débute réellement dans la ville de Fort Joie où vous commencerez à chercher des réponses sur le pourquoi des colliers anti-Source. Au fur et à mesure, vous découvrirez que de nombreux acteurs sont à l'origine de tout ça et vous les défierez pour tenter de mettre un terme aux diverses injustices auxquelles vous ferez face. Tout cela en incarnant un personne que vous pourrez personnaliser dès les premières minutes de jeu. Tout comme dans Divinity Original Sin I, vous pourrez recruter jusqu'à trois compagnons pour vous aider dans votre quête, chacun possédant ses propres pouvoirs et auxquels vous assignerez différentes armes magiques ou non. Le tout est d'adopter la bonne tactique. Vous pourrez aussi vous jeter dans l'édition Definitive, gratuite pour tout possesseur du jeu original, qui apporte équilibrage dans les combats, nouveaux dialogues et divers changements dans l'intrigue.


Bon amusement !

[Divers] Bitdefender lit infiniment sur vos disques

Il n'y a pas que Microsoft qui semble avoir du mal en ce moment. En effet, l'antivirus Bitdefender 2019, dans sa version 23.0.10.31, contient quelques bugs gênants (impression impossible avec certaines imprimantes Canon, options de profils non sauvegardées, logiciels Battle.Net bloqués pour l'installation des mises à jour de jeux Blizzard, etc), dont l'un provoque une lecture infinie sur tous les disques connectés à l'ordinateur, aussi bien internes qu'externes. Dans le gestionnaire de tâches, on peut voir pour chacun des disques une lecture à environ 24,5 Ko/s. De ce fait les disques externes étant également impactés, ne peuvent être éjectés.


Le problème, qui a déjà été remonté sur les forums de la suite antivirus, semble en partie liée à un service Windows - nommé Infrasturcture de gestion Windows (WMI). En effet, un utilisateur sur le forum a constaté qu'en redémarrant ce service (arrêter puis démarrer), le phénomène s'arrêtait. Plusieurs utilisateurs ont créé des scripts maison pour effectuer cette tâche au lancement de l'ordinateur pour corriger temporairement le souci. D'autres ont constaté que malgré cette opération, le problème persistait. 

Dans une ligne de commandes avec les droits administrateur, il suffit de saisir les lignes suivantes :
net stop winmgmt
net start winmgmt
Attention que d'autres services peuvent dépendre de WMI et donc ceux-ci devront également être arrêtés et redémarrés.

Pour en revenir à ce problème le processus principal de Bitdefender semble en fait verrouiller les fichiers qu'il lit, et l'opération de relance du fameux service WMI semble relâcher ces "verrous". Bien sûr le bug est sans doute plus complexe qu'on peut le croire car cela fait près d'un mois que cela a été signalé aux développeurs. Il n'y a plus qu'à croiser les doigts pour qu'un patch soit vite déployé.

[Système] Windows 10 October Update suspendue

Si vous n'avez pas encore installé la dernière mise à jour de Windows 10, vous ne pourrez certainement pas le faire avant un certain temps, le temps que Microsoft trouve une solution au bug assez gênant constaté par plusieurs utilisateurs. En effet, comme on peut le lire sur la page reprenant l'historique des mises à jour, le déploiement a été suspendu suite au signalement de la part de plusieurs utilisateurs, d'un problème de fichiers manquants après l'installation. Cela concernerait les documents, images et même les fichiers sur le bureau.


En plus de ces problèmes, la page d'historique affichait déjà un message concernant les possesseurs de plateformes Intel, expliquant que la batterie de leur PC portable pouvait se décharger bien plus vite à cause de pilotes audio Intel HD de version spécifique.  

D'autres utilisateurs quant à eux semblent rencontrer des problèmes liés à leur connexion internet ainsi qu'aux applications du Windows Store.

On peut aussi lire sur le Twitter de Dona Sarkar, responsable du programme Windows Insider, que le support de Microsoft possède les outils nécessaires pour vous aider à récupérer (partiellement ?) les fichiers. Contactez-les si cette problématique vous touche.

En ce qui me concerne, j'ai effectué la mise à jour dès sa sortie sur mes deux PC et je n'ai constaté aucune perte. C'était plutôt bien parti, surtout vu la rapidité du processus d'installation. Pour rappel, l'April Update avait également été reportée à cause de bugs bloquants qui entrainaient parfois l'apparition de BSOD.

Édition du 10 octobre 2018 : de nombreuses sources indiquent qu'une nouvelle build est disponible pour les Insiders et celle-ci corrigerait le problème, qui serait lié à un paramètre de stratégie de groupe destiné à supprimer les profils après un certain nombre de jours. Une erreur de calcul aurait donc entrainé la suppression. Microsoft compte bien poursuivre les tests afin de pouvoir à nouveau déployer la mise à jour au grand public.

Sources

mardi 11 septembre 2018

[Jeux vidéo] Des bandes noires dans God of War?

Pour ceux qui commenceraient God of War sur PS4 après la majorité des personnes sur cette planète, vous aurez peut-être eu le même "problème" que moi, à savoir l'apparition de bandes noires en haut, en bas, mais également sur les côtés. Au début, je pensais que c'était pour donner un effet mais après quelques recherches sur internet, c'est en fait une option à modifier dans les paramètres de la console...


En effet, si vous vous rendez dans Paramètres -> Son et écran -> Paramètres de la zone d'affichage, vous pourrez constater que, par défaut, la zone n'est pas étendue à tout l'écran. Il suffit d'utiliser les flèches haut ou bas pour modifier cela, ensuite valider avec X. Mais pourquoi le jeu se fie-t-il à ce paramètre... très bonne question !

[Utilitaires] DDU supprime aussi les pilotes audio

...mais uniquement les pilotes Realtek et Creative ! Jusqu'à présent l'outil DDU (pour Display Driver Uninstaller) était limité à la suppression des pilotes graphiques - d'où son joli nom -, mais la nouvelle version 18.0 est capable de faire le ménage pour les deux constructeurs cités précédemment. Attention que pour les pilotes Creative, l'outil se contente de procéder à la désinstallation classique sans vérifier si les clés de registre et les fichiers sont bien tous supprimés. A noter aussi que deux nouvelles lignes de commande sont disponibles pour réaliser ces deux nouvelles opérations.


Voir la nouvelle sur le site officiel.

Sources