PROJET AUTOBLOG


le hollandais volant

Site original : le hollandais volant

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Linux : changer de sortie audio en un clic

samedi 10 juin 2017 à 23:37

Sur mon ordi, il m’arrive d’avoir à basculer d’une sortie audio à une autre : entre la sortie casque et les hauts parleurs du PC, par exemple. Généralement, quand on veut que le son sorte par les haut-parleurs, on doit débrancher le casque.
Sauf que si vous êtes un fainéant comme moi, vous préférez le laisser brancher tout le temps et pouvoir tout de même recevoir le son des hauts parleurs. Perso j’ai également un écran branché en HDMI où sont branchés d’autres écouteurs.

Sous Linux Mint ou Ubuntu, on peut choisir la sortie manuellement dans les paramètres audio :

paramètres audio sous linux mint
Il faut chercher un peu. Il faut choisir la carte son (intégrée ou HDMI) en premier puis la sortie (principale ou casque pour la carte intégrée ; sortie écran pour HDMI). C’est donc un peu le bordel.

L’idée de ce post est de créer un petit bouton sur la barre de bureau, ouvrant une fenêtre qui permet de choisir la sortie audio en un clic :

mon applet audio

Le bouton ne fait que lancer un script, et c’est l’écriture de ce script que l’on va faire ici.

Fonctionnement de l’audio sous Linux

Le fonctionnement de l’audio sous Linux a toujours été un peu bordélique : entre Pulse audio, Alsa, OSS, OpenAL et différentes bibliothèques un peu partout. Le fonctionnement sous Mint se fait comme suit :

  1. le système sélectionne une des sorties d’une carte audio
  2. le système envoie le flux audio sur cette sortie

Chaque combinaison (carte+sortie) correspond à un « profile » audio.

Principe du script

À l’aide de la ligne de commande, on peut manuellement diriger un flux audio sur une sortie précise. Ceci se fait au moyen de la commande pacmd.
Dans notre script, en fonction du choix de l’utilisateur, on va activer la sortie sélectionnée et y envoyer l’audio.

Listage des sorties audio sur l’ordi

Dans le cas présent, seules les sorties des hauts parleurs et celui du casque sont importantes. En premier lieu, il faut lister les sorties audio présentes sur le système et repérer celles qui nous intéressent.

Ceci se fait au moyen de trois commandes, qui listent chacune une information dont on aura besoin pour notre script :

pacmd list | grep "active profile"
pacmd list | grep "active port" | grep "output"
pacmd list-sinks | grep "name:"

On va exécuter ces commandes et en noter le retour pour chaque configuration qui nous intéresse : sortie haut-parleurs, sortie casque, …

Pour les haut-parleurs

Jouez une musique ou une vidéo et assurez-vous que le son sorte par les haut parleurs.
Lancez ensuite les trois commandes précédentes. Le retour devrait être respectivement quelque chose dans ce format là :

Cela vous retourne le profile, le port et le flux audio correspondant au haut-parleurs.

Pour le casque audio

Branchez maintenant un casque. et refaites la même manip.
Les trois commandes retournent maintenant ça :

Le seul changement ici est celui du port. Ceci vient du fait que le même profile gère à la fois la sortie des haut-parleurs et celui du casque. Si vous aviez branché votre casque ailleurs (sur un écran HDMI, sur le port Jack d’un haut-parleur, ou sur une sortie bluetooth), ça serait différent.

Pour ma sortie HDMI

Tester les commandes

Maintenant on a les informations qu’il faut pour modifier, en ligne de commandes, la sortie audio.

Lancez successivement les commandes dans le format suivant :

pacmd set-card-profile 0 off
pacmd set-card-profile 0 PROFILE
pacmd set-sink-port SINK PORT

Ainsi, pour envoyer le son sur la sortie casque avec les informations de l’exemple précédent :

pacmd set-card-profile 0 off
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones

Pour l’envoyer sur la sortie haut-parleurs :

pacmd set-card-profile 0 off
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-speaker

Dans mon cas, pour l’envoyer sur la sortie HDMI :

pacmd set-card-profile 0 off
pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo
pacmd set-sink-port alsa_output.pci-0000_00_1f.3.hdmi-stereo hdmi-output-0

Si ces commandes ont le résultat souhaité, on a fait 90 % du travail. Il nous reste à créer un script qui lance automatiquement ces commandes. Pour faire un truc plus cool, on va utiliser Zenity, qui permet de lancer des fenêtres popup pour Gnome/Mate, avec un menu.

Le menu Zenity

Si zenity n’est pas installé, installez-le.
Le fonctionnement est très simple : pour faire une liste avec des choix, on utilise la commande zenity --list à laquelle on spécifie lesdits choix. Dans notre cas, ça donne ça :

zenity --list \
    --title="Sortie Audio" --text "Quelle sortie Audio ?" \
    --column="Id" --column="Nom" \
       1 "Laptop Speakers" \
       2 "Laptop Jack" \
       3 "Screen Jack"

Vous pouvez essayer cette commande dans le terminal : ça ouvre une petite fenêtre où vous pouvez choisir une ligne. La commande retournera un numéro 1, 2 ou 3 en fonction de votre choix.

Si l’envie vous prend, vous pouvez étudier un peu plus en profondeur Zenity : il permet de faire des scripts interactifs. Ici l’on a une liste de choix, mais on peut aussi faire des curseurs (je fais ça pour mon script de compression JPEG : je choisis la compression au curseur), des confirmations, des notifications…

Le script final

Dans notre script, on demande le choix à l’aide Zenity et on fait simplement un test sur la valeur de retour. Ensuite, on exécute les commandes avec pacmd précédentes qui corresponde au choix :

CHOICE=$(zenity --list --title="Sortie Audio" --text "Quelle sortie Audio ?" --column="Id" --column="Nom" 1 "Laptop Speakers" 2 "Laptop Jack" 3 "Screen Jack");

if [ $CHOICE -eq 1 ]
then
    # activer sortie haut-parleurs
elif [ $CHOICE -eq 2 ]
then
    # activer sortie casque
else
    # activer sortie HDMI
fi

Le script final, dans mon cas donne ceci :

#!/bin/sh

CHOICE=$(zenity --list --title="Sortie Audio" --text "Quelle sortie Audio ?" --column="Id" --column="Nom" 1 "Laptop Speakers" 2 "Laptop Jack" 3 "Screen Jack");

# LAPTOP SPEAKERS
if [ $CHOICE -eq 1 ]
then
	pacmd set-card-profile 0 off # turn off
	pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo # laptop
	pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-speaker # laptop speaker

# LAPTOP JACK
elif [ $CHOICE -eq 2 ]
then
	pacmd set-card-profile 0 off
	pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
	pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones

# HDMI / SCREEN JACK
else
	pacmd set-card-profile 0 off
	pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo
	pacmd set-sink-port alsa_output.pci-0000_00_1f.3.hdmi-stereo hdmi-output-0
fi

Placez ce code dans un fichier .sh que vous enregistrez quelque part, par exemple ~/Documents/scripts/audio-picker.sh.

Ensuite, sur la barre de bureau Mate/Gnome, faites un clic droit puis « ajouter au tableau de bord ». Choisissez « lanceur d’application personnalisé ». Dans la fenêtre pour le créer, donnez un nom (« choisir une sortie audio », par exemple), mettez le chemin vers votre fichier dans le champ de la commande. Si vous cliquez sur l’icône (en haut à gauche) vous pouvez lui donner une icône personnalisée. Enfin, cliquez sur « Valider » :

add a new applet

C’est chiant, les libertés, les droits de l’homme, toussa©…

mercredi 7 juin 2017 à 17:06

Journée noire pour les libertés…

En Grande-Bretagne, Thérésa May déclare qu’ils n’hésiteront pas à sacrifier les droits de l’homme pour instaurer la sécurité.

Je ne sais pas vous, mais moi, ce genre de déclarations me fait penser à ça :

i
Ben ouais : si vous voulez vivre là où la sécurité est renforcée, où il y a caméras, des agents de sécurité, de flics armés, où vous êtes fouillés à toutes les portes et qu’en plus vous êtes prêts à sacrifier votre liberté pour ça, la meilleur solution reste encore d’aller vivre en prison..

Oh et au passage, en France, on va dans le mur aussi : les lois actuellement en préparation (celles qu’ils vont passer, en silence, pendant que tout le peuple sera captivé par le massacre du code du travail) prévoient grosso-modo une normalisation de l’État d’Urgence (dans lequel on est depuis bientôt 2 ans) : les assignations à résidence seront prononcées par un arrêté (parce que la justice, c’est comme les droits de l’homme, c’est trop chiant). Idem pour les autres mesures :

Assignations à résidence, perquisitions administratives, fermeture de lieux de culte, zones de protection et de sécurité, toutes ces mesures emblématiques du régime d’exception créé en 1955 pendant la guerre d’Algérie et perfectionné par touches successives depuis les attentats du 13 novembre 2015, devraient se retrouver dans le droit commun avec quelques modifications marginales.

La marque de fabrique de cette transposition est que l’autorité judiciaire est maintenue à l’écart. Toutes ces mesures resteront l’apanage du ministère de l’intérieur et des préfets, sans l’intervention d’un juge judiciaire. Jusque-là, cette disposition était l’essence même de l’état d’urgence, pendant lequel, en raison de risques terroristes imminents, des pouvoirs exceptionnels et provisoires sont confiés à la police sous le contrôle du juge administratif et du Conseil d’Etat.

(source)

Ce que ça dit, c’est simplement que les forces de l’ordre et le préfet pourront vous assigner chez vous ou défoncer votre porte sans réellement motivation ou raison légal.
Si ce genre de mesures peuvent à la limite présenter une certaine raison d’être dans les heures suivant une attaque (obtenir des autorisation prends plus de temps qu’il n’en faut pour permettre à des terroristes de s’enfuir), mettre ça dans le droit commun transforme tout simplement ce pays dans un état où le gouvernement et les autorités ont un pouvoir absolu et totalement déconnecté de la loi et du pouvoir judiciaire.

Vous appelez ça comme vous voulez, chez moi ça s’appelle un régime autoritaire.

Le plus difficile à imaginer dans tout ça, c’est que si l’état d’urgence (le régime « d’exception » d’hier) devient un régime « normal » aujourd’hui, comment donc sera le régime d’exception de demain ?

Est-ce qu’ils vont ressortir les pelotons d’exécution ? Est-ce qu’ils vont ré-autoriser la torture ; et appeler ça « torture administrative » pour faire passer ça ? Est-ce qu’ils vont construire des camps d’emprisonnement « fabriqué en France » (c’est à la mode ce logo) ?

Parce qu’après tout, si la police peut entrer chez toi ou t’interdire de sortir de chez toi comme elle le veut, on peut imaginer ce qu’on veut…

Retour sur le BQ Aquaris X

lundi 5 juin 2017 à 21:32

Mes smartphones ont depuis que j’en utilise toujours été des Wiko (même si j’ai eu un Elephone à un moment). Mon téléphone précédent était un Wiko Ridge 4G qui m’a tenu pendant plus de deux ans et que je considère comme le téléphone parfait (design, autonomie, fluidité, dimensions, poids, photos, hardware…).

Le Ridge commence néanmoins à dater un peu, les applications devenant de plus en plus lourdes. Même s’il reste parfaitement utilisable (il pourrait tenir au moins deux ans de plus, ce qu’il va faire avec quelqu’un d’autre d’ailleurs), il n’est plus tout aussi réactif pour un œil averti. Android Lolipop commence également à dater.

J’ai donc décidé d’investir dans un autre téléphone.

Le cahier des charges

Comme pour le choix de mon ordi, je deviens assez vite très pointilleux pour le choix du matériel (pour ça que je suis resté plus de deux ans avec mon Ridge : aucun autre appareil ne me convenait, ne serait-ce que visuellement). Le design du Ridge est assez carré et c’est quelque chose qui me plaît. Les téléphones ovales façon Samsung, je trouve ça moche, j’en ai déjà parlé, même si ils sont un peu calmés depuis ~2 ans.

Malheureusement, les arrondis semblent être devenus la norme face au carré. Wiko n’ayant pas réellement de nouveaux téléphones avec ce design (sauf le Highway Star, mais sous Lolipop…), je suis allé voir ailleurs.

Il me fallait donc un téléphone :

Déjà avec ça, on élimine 95% des téléphones.

J’ai regardé du côté des marques moins connues, comme le NextBit Robin, au look stylé mais sans port µSD (et la boîte a coulée…). Les Xiaomi et leur écrans « borderless » me plaisaient également beaucoup, mais ils sont encore rares, et les Xiaomi ne sont pas officiellement disponibles en France. Quant aux OnePlus, ils m’avaient intéressés à un moment, mais ils sont tous si graaaands et le support logiciel ne semble finalement pas aussi top que ça.

J’avais entendu parler de BQ quand ils avaient fait des téléphones sous Ubuntu. Ils se situent sur la même gamme que Wiko : les prix sont de moitié ceux des téléphones de « grandes marques » (Samsung, Sony…), mais leurs appareils semblent tout de même bien tenir la route et le design s’est nettement amélioré avec le temps.

BQ semble également réputé pour la mise à jour des OS. Je pense donc pouvoir profiter d’Android O, voire P un de ces jours sur leur appareils actuels. Je note également que BQ propose des outils pour flasher le firmware, ce que je n’ai encore vu nul part ailleurs.

Mon choix s’est donc porté sur le Aquaris X, tout juste sorti (fiche de présentation).
Il y a aussi le Aquaris X pro, légèrement plus performant (plus de Rom, plus de Ram, un appareil photo avec une techno différente et une carcasse en alu), mais pour un prix un peu trop élevé pour moi.

L’Aquaris X a une dalle de 5,2", soit plus grand que ma limite de 5". Cependant, les dimensions du téléphone sont (à 1 mm près) identiques à celui du Ridge. Il pèse également ~25% plus lourd (157 au lieu de 125), ce qui ne m’étonne pas vu que le Ridge était réellement un poids plume, mais ça se ressent tout de même.

Le Aquaris X

i
Un des trucs qui m’a directement plu sur ce téléphone, c’est l’absence de l’excroissance de l’appareil photo sur le dos.
Les autres téléphones ont tous l’appareil qui ressort du dos, faute de place pour les optiques. Ceci fait que le dos n’est jamais à plat sur une table et que l’objectif est toujours la première partie du téléphone à se rayer. BQ semble avoir réussi à comprimer l’appareil photo dans le téléphone de sorte que rien ne dépasse. C’est un bon point.

Les photos, puisqu’on en parle, restent très largement potables (en tout cas pour moi qui ne suis pas photographe). Les 16 MPx font leur boulot, et même dans le noir, les clichés sont bien meilleurs que les autres téléphones que j’ai pu avoir. Le logiciel de traitement HDR donne également de très bon résultats !

Les bloatwares.

Il faut le dire, ce téléphone a très peu de logiciels tiers. Seul quelques trucs système de BQ (suffisamment pour que ça soit chiant, tout de même), mais aucune surcouche. Toute la suite de programme de Google que je n’utilise pas (Drive, Maps, GMail, Talkback…) sont là, mais je les ai désactivés. À part ça il n’y a rien : pas de GPS tiers, ni de clavier en 15 langues, ni d’optimiseur de batterie ou de ram…

La connectique.

Le Aquaris X dispose d’une prise Jack et d’une prise USB-C. Le cable USB/USB-C est fourni, donc vous pouvez recharger le téléphone normalement out-of-the-box, mais perso j’avais acheté tout un tas de chargeurs muraux Samsung avec une prise mini-USB (plus rapides que les prises murales-USB, et surtout disposant d’un cordon de 1,5 m). En avoir plein me permet de charger plein d’appareils à la fois et d’avoir un chargeur chez moi, un travail et un dans un sac de voyage par exemple. Pour continuer à les utiliser, j’utilise des adaptateurs mini-USB/USB-C (comme ceux-ci).

Les petits plus.

Le téléphone a un flash frontal et dorsal. Je fais pas tellement de selfies, mais ça peut être important pour certains (mon précédent Wiko n’avait pas ça, pas que ça m’a manqué).
Les boutons de navigation Android ne sont pas sur l’écran (on n’empiète donc pas sur l’affichage).
La led de notification est programmable : il s’agit d’une led RVB qui permet de constituer la couleur que l’on veut. J’ai ainsi mis du vert par défaut, du rouge pour les SMS et du bleu pour les email. On peut assigner une couleur par application, ce que je trouve relativement pratique. Il y a un outil dans les paramètres pour assigner une couleur à une app (je ne sais pas si c’est standard sur Android aujourd’hui, mais j’aime le concept et c’est un petit truc donc je ne me passerai plus).

Quelques notes rapides.

Le son est correct.
L’écran est magnifique. Sur un 5 pouces, je pense qu’un écran HD (1280×720) suffit. Un full-HD (1920×1080) pompe plus de batterie (il y a plus du double de pixels à animer), ce qui est un inconvénient plus important que l’avantage apporté. Le différence se voit néanmoins : l’affichage est plus lisse, plus beau.
L’autonomie, d’ailleurs, est bonne. Je tiens facilement la journée si je ne joue pas constamment à Pokémon Go (qui pompe la batterie à mort). La 4G semble également bouffer énormément la batterie (bien plus que sur le Ridge, mais c’est que sur le Ridge j’avais bloqué à 3/4 des applications leur accès réseau). Le Wifi est plutôt économe en revanche.
La recharge est rapide, l’interface est super fluide.

Un truc qui me manque par contre, c’est la texture « peau de pèche » qu’avait le Ridge.
Sur l’Aquaris, j’ai toujours l’impression que le téléphone va glisser. L’écran est super lisse, c’est cool, mais le dos l’est également et ce n’est pas un bon point.

Android 7

Je suis resté trois ans sous Android 4.1, puis deux ans sur 4.4 et récemment j’ai utilisé 5.0. C’est la première fois que j’ai un système Android au delà de la version 5.

Je n’ai pas encore percé tous les secrets, mais il y a beaucoup d’améliorations dans cet Android stock.

Citons :

Il y a également des choses dont je me serais bien passé ou qui manquent :

BQ

Deux petits mots sur la marque.

En plus d’avoir déjà fait des téléphones sous Ubuntu (ce qui montre un peu l’intérêt pour l’ouverture et le libre), j’ai vu que la marque proposait des outils pour flasher le téléphone, c’est à dire permettre de le rooter et/ou d’installer une rom alternative, en plus de proposer les sources du systèmes. C’est assez rare qu’une marque propose de tels outils (généralement elles font justement tout pour empêcher le flashage et/ou laisser traîner leur code source).

Aussi, et je n’ai essayé qu’une seule fois, mais la marque semble réceptive aux questions.
Le site officiel dispose d’un formulaire de contact (pour le service client, je pense, vu qu’il faille donner le numéro de série de son téléphone), mais vu qu’ils proposent uniquement de téléphoner (or j’ai horreur de ça et je préfère l’email), je suis passé par Twitter pour poser quelques questions. Ils m’ont dit que mes remarques avaient été entendues et que mes demandes allaient être étudiées lors des prochaines mises à jour. Donc même si ça s’arrêtait là, je note que BQ ne reste pas opaque et muette face à ses clients, et ça c’est vraiment quelque chose d’appréciable.

Fuck america up again

lundi 5 juin 2017 à 18:24

Il y a quelques jours, Donald Trump décida de sortir de l’accord de Paris. Au delà du peu de foi que j’ai en cet accord, l’action de Donald Fuck reste symboliquement assez représentative de sa politique de la connerie.

En fait, ça va beaucoup plus loin que simplement refuser de se réguler pour moins détruire le monde.
Ce que Donald Dump vient de foutre en l’air, là, c’est tout simplement l’un des plus gros points où les USA pouvaient encore être « great again » et se placer en position de leader dans le monde.

Aujourd’hui, l'avenir de la planète est sûrement le plus gros enjeu politique, sociétaire et économique du monde actuel (avant même d’être écologique, donc).

Les USA sont à ce jour le pays le puissant du monde sur tous les plans nécessaires à la sauvegarde de l’écologie.
Ils ont la puissance intellectuelle (17 des 20 meilleures universités du monde sont américaines et ce n’est pas prêt de changer), les ressources financières et la capacité technologique pour se placer en leader mondial, comme ils été pionniers et leaders dans l'informatique et l'exploration spatiale.

Découvrir de nouvelles technologies, inventer de nouvelles méthodes, définir de nouvelles standards, c'est ça qui rend un pays économiquement viable.
Si les USA se plaçaient en leader dans ce domaine, son économie rebondirait. Mais non.

Donald Trump et sa troupe de clowns a décidé de laisser ce pouvoir aux autres pays.
Ça sera donc probablement la Chine, ou l'Inde qui produira tous les panneaux solaires du monde, en plus d'en inventer des plus efficaces. Ce sont déjà eux qui ont la plus grande ferme solaire au monde et de loin le plus gigantesque barrage hydroélectrique de la planète (tellement énorme en fait que l’on mesure une variation de la rotation de la Terre à cause de la retenue d’eau de ce barrage).

Il y a 50 ans, les USA étaient leaders dans l'exploration spatiale. Aujourd'hui, la Nasa compte sur la Russie et la Chine pour envoyer des gens en orbite. Son propre programme spatial n’a plus les fonds pour le faire (d’un autre côté il est bien temps que les entreprises privées s’y mettent, me direz-vous).
Il y a 50 ans, les USA inventaient et produisaient l'électronique du futur. Aujourd'hui, cette économie se fait rattraper par les pays asiatiques aussi.
Même remarque pour l'automobile. Ça fait des années que General Motors n'est plus leader du marché, dépassé par les japonais.

Ce que Donald Dumb laisse filer là, c’est une chance de stimuler la recherche, l’économie et la technologie américaine dans le domaine de l’énergie (oui, on ne parle pas d’un petit marché ultra-spécifique, mais du secteur d’activité le plus important au monde sans qui aucun autre n’existerait). Et en plus de laisser filer ailleurs tous ces bénéfices (tant mieux pour nous hein, mais seulement à court terme), il passe pour un débile (encore plus, je veux dire), son pays avec, et amorce la phase finale de la supériorité technologique et économique des USA vers un exemple à ne pas suivre pour tous les pays du monde.

Fillon et son réveil à 6h30

jeudi 6 avril 2017 à 18:54

Mais t’as fini oui ? Tu te prends pour qui là ? Tu penses que t’es le seul à avoir un réveil qui sonne le matin ?

Parce que tu sais quoi ? J’en ai un aussi !
Mieux, moi je met mon réveil à 6h00 du matin ! Parce que je perds mon travail si je ne fais pas ça.
La « travail », tu vois, le truc qui me permet de gagner des sous, avec lequel je dois payer ma bouffe, mon loyer et mes factures.

Parce que si je ne mets pas mon réveil le matin, alors je ne peux plus payer tout ça et je me retrouve à la rue (on n’a pas d’immunité salariale, tu te rappelles ? ou tu as déjà oublié ?).

Toi, tu risques la rue, peut-être ? Toi qui porte des chemises plus chères que ce que je gagne par mois ?

Ouais, tu as merdé avec ton épouse.
Mais c’est pas grave : je pense qu’on a tous merdé à un moment donné dans la vie, à différents niveaux, à différentes échelles.
Il s’agit d’assumer, de se corriger, et éventuellement de payer les pots cassés.

Pas de nier et de se foutre ouvertement de la gueule de ceux qui payent ton salaire démesuré. Est-ce vraiment à moi de t’apprendre ça ?

Alors fous nous la paix un peu. Y en a assez de t’entendre pleurer parce que t’assumes pas ta vie.

En attendant, si un réveil te fais peur, bienvenue dans la vie de ceux qui vont voter dans quelques jours.
Et encore, le réveil c'est seulement un détail. Tu n’as pas la moindre idée de ce qui vient après le réveil à 6h30 (mais j’en parlerai dans un autre post, quand tu te plaindras de devoir bosser pour un autre, ou celui de payer les factures, ou la note du restaurant).

Et #RendslArgent.

Feed is invalid - XML error: --^ Fatal Error 68: StartTag: invalid element name Line: 1 Column: 2 - --^ Fatal Error 5: Extra content at the end of the document Line: 1 Column: 2