Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

Est-il possible d'avoir conscience de rêver ?

Date d'édition 2010-11-29 à 10:53

Article très intéressant sur le rêve (d'un point de vue scientifique et expérimental).

Inception : peut-on être conscient que l'on rêve ? Lisez l'article !

https://www.slate.fr/story/25883/inception-reve-science-manipulation-neurologie

Pas de rapport avec l'informatique mais l'article est tellement intéressant !

Serveur et client Websocket en ruby et client javascript

Date d'édition 2010-11-24 à 16:17

Les websockets (protocole : ws) permettent d'avoir une communication en mode connecté avec le serveur (alors que http est déconnecté)

La lib websocket se trouve ici avec les exemples : https://github.com/gimite/web-socket-ruby

Téléchargons-les fichiers :

wget https://blog.escarworld.com/assets/images/rubyws.tar.gz

tar xzvf rubyws.tar.gz

Démarrer le serveur websocket ruby : 

ruby websocket/samples/chat_server.rb localhost 10081

Démarrer le client websocket ruby (dans une autre fenetre) :

ruby websocket/samples/stdio_client.rb ws://localhost:10081

Le client et le serveur communique !

Maintenant, télécharger le fichier d'exemple html / js

wget https://blog.escarworld.com/assets/images/htmlws.tar.gz

tar xzvf htmlws.tar.gz

Mettez les fichier html-ws.html et jquery-1.4.4.min.js dans votre apache (par défaut dans /var/www), nginx (par défaut dans /opt/nginx/html ) ou autre serveur web sur localhost (port 80).

Ouvrer firefox ou chrome (assez récent pour intégrer les websockets) à l'adresse https://localhost/html-ws.html

Taper du texte dans le champ edit, le serveur ruby et l'autre client reçoivent le message ! Le serveur pourrait ainsi décider d'accomplir des taches par les clients connectés (calcul partagé).

Les applications des websockets sont nombreuses et intéressantes (La vidéo de parisWeb 2010 sur les websockets est terrible) !

Rotation des logs - Configuration de logrotate sur ubuntu

Date d'édition 2010-11-24 à 12:52

Logrotate permet de faire une rotation des logs ! C'est certainement déjà utiliser sur votre système. Le but est ici de l'utiliser pour ses logs perso.

Exemple pratique d'utilisation

Actuellement :

Vous avez un fichier de log qui fait 2 Go parce que ça fait 6 mois que vous avez installé votre serveur. Mais l'espace disque vous le payez et ça commence à être lourd de vider les logs tous les matins.

Avec log rotate vous avez ceci

10 fichiers de log (1 par mois) quand on passe au mois n+1 le fichier log n-9 est supprimé et le mois n-8 et renommé en n-9. L'avantage c'est que le nombre de fichier de log ne change pas logrotate peut compresser tous les logs des mois passés. Et quand vous cherchez les logs du mois dernier pas besoin de parser le log de 2 Go. Le découpage des fichiers n'est pas forcément horaire. Ca peut être un découpage par taille (rotation des logs quand le log courant atteint 10 Mo)

Dans la configuration de logrotate ( /etc/logrotate.conf ) il y a :

include /etc/logrotate.d

Donc logrotate charge les fichiers dans /etc/logrotate.d . Donc si vous avez besoin d'un logrotate vous créez un nouveau fichier dans /etc/logrotate.d :

Exemple du fichier /etc/logrotate.d/nginx :

/opt/nginx/logs/error.log {

        daily

        rotate 10

        compress

        delaycompress

        missingok

        notifempty

        create 644 root root

}

/opt/nginx/logs/access.log {

        daily

        rotate 10

        compress

        delaycompress

        missingok

        notifempty

        create 644 root root

}

Rotation journalière avec 10 jours de log (compression) je vous encourage à lire la documentation francaise de logrotate : https://www.delafond.org/traducmanfr/man/man8/logrotate.8.html

Source : https://www.croc-informatique.fr/2009/06/rotation-des-logs-avec-logrotate/

Ascenseur ou scrollbar en html css javascript jquery

Date d'édition 2010-11-23 à 08:32

Bon je n'ai pas l'habitude de faire des billets sur mes flux rss mais bon. De nombreuses personnes cherchent comment personnaliser les scrollbars (ascenseur) en html css. Bon en fait le principe c'est de refaire une barre d'ascenseur complétement géré par javascript avec jquery.

Si vous cherchez en anglais : cherchez "scroll pane".

Voici un article qui en présente 18.

https://www.webdeveloperjuice.com/2010/11/22/18-customizable-scroll-panes-using-javascript-including-jquery/

ssh et capistrano sur un long traitement (Connection reset by peer)

Date d'édition 2010-11-19 à 09:27

Avec capistrano il est fréquent que le déploiement prenne du temps, si le traitement est trop lourd capistrano "freeze".

Exemple : cap deploy:cleanup (quand on a 50 releases sur le serveur :-p)

Il faut régler sur le serveur dans /etc/ssh/sshd_config deux paramètres pour ne pas avoir de "freeze" :

ClientAliveInterval 5 

ClientAliveCountMax 1000

Issu de la documentation :

ClientAliveInterval
Règle un intervalle de temporisation en secondes après lequel, si aucune donnée n'est reçue de la part du client, sshd envoie un message dans le canal crypté pour demander une réponse du client. Par défaut 0, ce qui signifie que ces messages ne sont pas envoyés au client. Cette option ne s'applique qu'à la version 2 du protocole.
ClientAliveCountMax
Règle le nombre de messages de maintien de la connexion (voir ci-dessus) à envoyer sans réponse de la part du client pour sshd Si ce seuil est atteint tandis que les messages de maintien de la connexion ont été envoyés, sshd déconnecte le client et termine la session. Il est important de noter que ces messages de maintien de la connexion sont très différents de l'option KeepAlive (ci-dessous). Les messages de maintien de la connexion sont envoyés par le tunnel crypté, et par conséquent ne sont pas falsifiables. Le maintien de la connexion au niveau TCP activé par l'optionKeepAlive est falsifiable. Le mécanisme de maintien de la connexion est intéressant quand le client ou le serveur ont besoin de savoir si la connexion est inactive.

Par défaut 3. Si l'option ClientAliveInterval (ci-dessus) est réglée à 15, et ClientAliveCountMax est réglée à sa valeur par défaut, les clients ssh qui ne répondent pas sont déconnectés après environ 45 secondes.

Développement ruby et geekeries - rivsc