Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

Streaming audio pour écouter des réunions ou conférence par internet

Date d'édition 2020-01-14 à 14:45

Il peut être intéressant de diffuser des réunions à des personnes absentes.

Voici comment faire sur le poste de régie ou de sonorisation :

Sur windows 10 (je pense que ça fonctionne avec windows 7 et 8).

Télécharger vlc en version portable (ça évite d'interférer avec un éventuel VLC installé et configuré pour afficher des vidéos sur des moniteurs externes), la version que j'utilise et la 3.0.4.

Dans le dossier de VLC portable mettre ce script : streaming.bat avec ce contenu (il faudra certainement changer le chemin C:\... en fonction du nom de l'utilisateur).

cd C:\Users\SDRUtilisateur\Desktop\vlc-3.0.4-win32\vlc-3.0.4\
.\vlc.exe -vvv dshow:// :dshow-vdev="none" :dshow-adev="Sterep Mix (Realtek(R) Audio)"  :live-caching="300" :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=mp3,dst=:3000/} :no-sout-all :sout-keep

Il faudra aussi modifier le script pour qu'il fonctionne avec votre matériel:

Périphériques d'enregistrement

Voici une capture des périphériques d'enregistrement.

Il faut (rigoureusement) mettre le nom du périphérique avec le constructeur entre parenthèse (pour moi ici : "Stereo Mix" est votre périphérique et "Realtek(R) Audio" est le constructeur).

Si vous souhaitez diffuser le son d'une sono (micros HF et micros sur pied) il faudra penser à relier votre sono (au niveau de la table de mixage sur une sortie noté OUT généralement) sur votre entrée ligne ou micro.

Comment tester ? Lancer VLC sur smartphone android par exemple et mettez flux réseau, écouter l'adresse sur PC de la régie : http://x.x.x.x:3000/ ou x.x.x.x est l'ip locale du PC de la régie (attention vous devez être sur le même réseau local.

Si ça fonctionne félicitation, il faut passer à l'étape d'après : mettre un baux DHCP pour que la livebox donne toujours la même IP au PC de la régie. Ensuite rediriger les ports sur la livebox pour que de l'extérieur le port 3000 soit rediriger vers le PC de la régie sur le même port 3000.

Enfin il faut tester : Lancer VLC sur smartphone android par exemple et mettez flux réseau, écouter l'adresse IP publique de la livebox : http://x.x.x.x:3000/ (pour connaitre l'ip il faut aller sur des sites comme mon-ip.com).

Problèmes courants

VLC dit impossible d'ouvrir le périphérique

Vérifier que le périphérique n'est pas désactivé (grisé).

Périphériques d'enregistrement désactivés

Interpréter une sequence unicode en ruby

Date d'édition 2019-10-15 à 15:30

Il peut être nécessaire d'interpréter une séquence unicode en ruby.

Voici un exemple :

puts 's\u00E9par\u00E9'
# Affiche "s\u00E9par\u00E9"

Là vous pourriez dire qu'il suffit de double-quoter pour que les séquences unicodes soient interprétées :

puts "s\u00E9par\u00E9"
# Affiche "séparé"

C'est vrai, mais nous ne maitrisons pas les données qui arrivent (par exemple dans le cadre d'une API REST avec un client qui ne sait pas envoyer des caractères unicodes d'une autre manière. Voici une solution :

str = 's\u00E9par\u00E9'
eval('"' + str + '"')
# Affiche "séparé"

Utiliser Visual Studio Code pour développeur rubyonrails

Date d'édition 2018-07-05 à 10:30

Je regarde de temps en temps les alternatives à rubymine (J'ai eu pas mal de problème de lenteur avec le debuggeur sur MacOSX...). J'avais testé VS Code il y a quelques temps mais je suis vite revenu sur rubymine. Un article intéressant sur lequel je suis tombé explique comment mettre en place le débuggeur : https://lankydanblog.com/2017/05/12/debugging-a-rails-server-in-visual-studio-code/

Ça n'a pas suffit chez moi malgré ruby 2.4, j'avais une erreur : "invalid byte sequence in US-ASCII", en spécifiant la section "env" dans le fichier de conf ça rentre dans l'ordre (le fichier de conf c'est le fichier launch.json en cliquant sur la roue crantée dans la zone debug de VS Code) :

... },
{
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/rails",
"args": [
"server"
],
"env": {
"LANG": "en_US.UTF-8",
"LC_COLLATE": "en_US.UTF-8",
"LC_CTYPE": "en_US.UTF-8",
"LC_MESSAGES": "en_US.UTF-8",
"LC_MONETARY": "en_US.UTF-8",
"LC_NUMERIC": "en_US.UTF-8",
"LC_TIME": "en_US.UTF-8",
"LC_ALL": "en_US.UTF-8"
}
},
{ ...

Source :

https://lankydanblog.com/2017/05/12/debugging-a-rails-server-in-visual-studio-code/

https://github.com/rubyide/vscode-ruby/issues/43

Mettre Firefox en plein écran au démarrage par code

Date d'édition 2018-05-09 à 14:32

Attention ne fonctionnera que si :

- Vous avez la main sur la machine sur laquelle est lancée firefox

- Si vous avez le contrôle du code-source du site à afficher

Si ce n'est pas le cas, retournez sur votre moteur de recherche préféré...

Il n'est pas prévu de lancer firefox en plein écran au démarrage (même en ligne de commande).

Me souvenant de la fullscreen api je décide de l'utiliser. Le but étant qu'au chargement de la page le navigateur se lance en plein écran. Je fais mon POC et là c'est le drame :

"Request for fullscreen was denied because Element.requestFullscreen() was not called from inside a short running user-generated event handler.".

Après avoir pleuré à chaudes larmes pendant 15 min, je me souviens avoir vu des trucs dans "about:config" de firefox. Et je trouve l'option miracle : "full-screen-api.allow-trusted-requests-only". En passant ce flag à false on peut mettre le navigateur en plein écran programmatiquement !

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Ceci est un exemple</title>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script>
function toggleFullScreen() {
document.querySelector("body").mozRequestFullScreen();
}
// Nécessite full-screen-api.allow-trusted-requests-only = false (dans about:config)
$(document).on('ready', function(){
toggleFullScreen();
});
</script>
</head>
<body allowfullscreen="true">
<p>Ceci est un texte !</p>
</body>
</html>

Je n'aime pas la syntaxe Hash ruby 1.9+

Date d'édition 2017-07-11 à 07:15

Bon à chaque fois que je dis ça, je m'attire des enemies, voici un cas pénible en syntaxe 1.9 :

# Clé integer
2.3.3 :054 > { 4 => 'truc' }
=> {4=>"truc"}
2.3.3 :055 > { 4: 'truc' }
SyntaxError: (irb):55: syntax error
# Clé string
2.3.3 :061 > { 'cle': 'truc' }['cle']
=> nil
2.3.3 :062 > { 'cle' => 'truc' }['cle']
=> "truc"

Si vous n'êtes pas d'accord, pas de souci mais argumentez le débat sera plus intéressant (sur twitter, trop de spam ici :/) !

EDIT : Il s'agit uniquement d'une syntaxe simplifiée pour les clés symboles. Merci Bob (https://twitter.com/bobmaerten/status/888473343589982208).

Développement ruby et geekeries - rivsc