mardi 20 mars 2012

Faire du HTTP server PUSH avec QT en C++

Je continue avec ma série sur le server PUSH. En effet, j'ai du tester plusieurs solutions afin de trouver celle qui me convenait le mieux. En voici, donc une autre basé sur QT.

Voici d'abord l'implémentation du serveur:

Server.h



Server.cpp




Puis voici le code permettant de démarrer le service.

main.cpp



Enfin comme tout projet QT, voici le fichier du projet, nécessaire pour compiler le server.

TestServerQt.pro



Il ne vous reste alors plus qu'a lancer les commandes:
  • qmake TestServerQt.pro
  • make
  • ./TestServerQt
On peut alors attaquer le serveur depuis le navigateur en pointant l'adresse : http://localhost:8081/

samedi 24 décembre 2011

Logging en Java suivant la convention

Le SDK Java dispose d'une quantité astronomique de classe et package qui peuvent être réutilisé pour gagner un temps considérable en développement.

C'est le cas du package java.util.logging. Ce paquet est une bibliothèque qui contient toute les classes de base nécessaire à l'écriture de log (journaux) en Java.

Pour cela on dispose de :
  • la classe java.util.logging.Logger : c'est sur une instance de cette classe permet que l'on va envoyer nos logs. Un Logger peut exporter les logs qu'il reçoit vers une ou plusieurs sorties simultanées, appelé Handler.
  • les java.util.logging.Handler : Java fourni déjà de base différents Handler (Console, Fichier, XML, Socket....). Par défaut, la classe Logger possède un seul Handler vers la sortie Console. Mais il est possible de rajouter des Handler au Logger.
  • les java.util.logging.Formatter : les formatter sont des classes qui définissent la présentation des logs. Clairement, on définit via ces classes l'affichage qu'aura un java.util.logging.LogRecord (un enregistrement de log) à la sortie d'un Handler. Java fourni la classe SimpleFormatter par défaut pour la présentation des logs.
  • java.util.logging.LogManager : une application possède une seul instance d'un LogManager (gestionnaire). Cette classe est utilisé notamment pour modifier la configuration des Logger de l'application, par exemple en chargeant la configuration depuis un fichier logging.properties.
  • Fichier de configuration : l'un des point fort de l'API de logging de Java est qu'elle offre la possibilité de paramétrer simplement via un fichier de "properties", les Formatter et les Handler à utiliser, mais aussi le niveau de log à qui doit être exporté au niveau de chaque classe.
Classe métier rapportant des logs :

Voici un exemple de classe rapportant des logs. Dans la convention Java, on déclare un Logger statique pour chaque classe de l'application. Mais rien, n'oblige à suivre cette convention.



Exemple de Formatter :

Admettons maintenant que l'on désire afficher nos logs avec uniquement le niveau de log et le texte de celui-ci.

On créé donc un formatter qu'on ajoutera à notre logger.



Fichier de configuration :

On créé alors un fichier de configuration "logging.properties" :



Il existe plusieurs façon de spécifier au programme l'utilisation d'un fichier de configuration.
  • Passer une option à Java : "java -Djava.util.logging.config.file=/path/to/logging.properties ..."
  • Utiliser le LogManager pour lire la configuration.
Lancement de l'application :

Et voici donc enfin la classe qui permet l'exécution du programme. Toutes les classes ainsi que le fichier de configuration sont placés dans un package "org.rikutips.logger".
On utilise donc le LogManager pour charger le fichier de configuration installer dans le package.



Voici alors ce qu'on obtient en sortie :



Notez que la première ligne est affichée selon le format de la classe SimpleFormatter. Ceci est normal, du fait que au début du programme, la configuration n'est pas encore chargée.

Voilà, j'espère que ce tuto vous aura aidé à mieux comprendre la gestion des logs en Java.

vendredi 23 décembre 2011

Faire du HTTP server PUSH en PHP

Voici un bout de code utile en PHP qui permet d'envoyer une réponse HTTP suivant la méthode Push. En résumé, cette méthode permet d'envoyé des réponse HTTP à intervalle régulier au sein de la même requête. Ceci est notamment utilisé par les caméra IP qui possède un serveur HTTP desservant un flux Motion JPEG.

Voici donc un bout de code permettant d'envoyer la valeur d'une variable à un intervalle régulier. La valeur sera donc mis à jour automatiquement dans le navigateur sans émettre une nouvelle requête HTTP.



Le code d'origine provient du blog cité ci-dessous.

Source : http://ben-collins.blogspot.com/2010/06/php-sending-motion-jpeg.html

Faire du HTTP Server Push en Java

Voici un bout de code utile qui permet de créer un serveur HTTP en Java et envoyant une réponse suivant la méthode Push. En résumé, cette méthode permet d'envoyé des réponse HTTP à intervalle régulier au sein de la même requête. Ceci est notamment utilisé par les caméra IP qui possède un serveur HTTP desservant un flux Motion JPEG.

Voici donc un bout de code permettant d'envoyer la valeur d'une variable à un intervalle régulier. La valeur sera donc mis à jour automatiquement dans le navigateur sans émettre une nouvelle requête HTTP.

Ouverture

Bonjour à tous et bienvenu sur mon blog.

Entre mon travail et mes hobbies liés à l'informatique je suis souvent (comme tous le monde) confronté à des nouveaux problèmes plus ou moins difficile à résoudre.

Cela peut aller de comment configurer ou installer un logiciel pour répondre à son besoin, comment réaliser un bout de code remplissant une fonctionnalité bien spécifique, ou encore que signifie tel ou tel notion issue du jargon informatique.

Pouvant généralement passer un temps conséquent à résoudre ces problèmes souvent un épluchant les messages des forums, j'ai décidé de créer ce blog afin de partager les solutions que j'ai trouvé en tâchant de les expliquer de façon clair.

Le but étant que mon travail de recherche puisse être réutilisé plus rapidement pas vous autres.

Voilà, j'espère que mes conseils vous seront utiles.