www.DigitalSpirit.org

Politique d'accessiblité | Aller au contenu | Aller au menu | Aller à la recherche

Keyword - tutoriel

Fil des billets - Fil des commentaires

Manipulez des vidéos en Php avec ffmpeg-php

Le projet ffmpeg-php est, comme son l'indique, une interface Php au projet ffmpeg, une application conçue pour manipuler les flux audios et vidéos et basé sur libavcodec, ce qui lui permet de gérer un grand nombre de format de compression dont : MPEG-1, MPEG-2, MPEG-4 Part 2, H.264, WMV, MJPEG, Theora, FLAC, MP2, MP3, RealAudio 1.0, RealAudio 2.0, Vorbis, Windows Media Audio...
ffmpeg-php est notamment utilisé par Vimeo pour la création des vignettes lors du téléchargement des vidéos, c'est le gage d'une application stable et optimisée.

L'installation

L'installation est très simple puisque c'est une simple extension Php qu'il suffit de déclarer dans le php.ini...

Sous Gentoo, l'installation peut se résumer à cette ligne de commande :

 $ sudo emerge -v ffmpeg-php

Ensuite, il suffit d'éditer le fichier php.ini et de déclarer la nouvelle extension afin que Php la charge au démarrage :

extension=ffmpeg.so

Recharger la configuration de votre serveur web, et voilà, nous sommes prêt à jouer avec ffmpeg-php...

Lire la suite...

Css3 en action avec Firefox 3.1b1pre

Voici une petite vidéo de ce qu'il sera possible de faire avec les CSS3, et, notamment, les transformations proposés par WebKit et border-image.

Css3 in action with Firefox 3.1b1pre


Css3 in action with Firefox 3.1b1pre from hugo on Vimeo.

Pour le déplacement des post-it, j'ai utilisé jquery-ui, j'aurai tout à fait pû utiliser -moz-transform: translate() mais le but était, évidemment, de montrer quelque chose qu'on a pas l'habitude de voir : la rotation et le redimensionnement d'objet en CSS...

Actuellement, la spécification n'est encore qu'un brouillon (ce qui explique l'utilisation du préfixe "-moz-") mais il existe un comportement, qui me semble gênant, ainsi, si on souhaite appliquer une transformation de type rotation ou redimensionnement, il faut passer par le mot-clef Css -moz-transform, édudiez l'exemple suivant :

p {
-moz-transform: rotate(15deg);
-moz-transform: scale(2);
}

Que va-t-il se passer ?
Les élements paragraphes vont subir une transformation de type scale, c'est tout, pas de rotation, le problème est qu'on ne peut pas, pour le moment, définir une transformation sans modifier les autres, ainsi, si une feuille de style externe veut appliquer une rotation à tous les élements p de la page, elle pourra le faire mais en "écrasant" aussi les autres transformations...cela est tout à fait normal à vrai dire, c'est écrit dans la spécification... 

Ne serait-il pas judicieux de créer des propriétés transform-rotate, transform-scale, transform-skew...?

Vie de merde dans vos scripts Php ...simplement

Pour afficher aléatoirement les fortunes de Vie de merde en Php de la manière la plus simple qu'il soit, vous pouvez faire comme ci dessous...ou pas...

<?php

header('Content-type: text/html; charset=UTF-8');

$xml = simplexml_load_file('http://api.viedemerde.fr/1.2/view/random?key=readonly');

echo <<<EOD
<html>
<body>
<h1>{$xml->vdms->vdm->categorie}</h1>

<p>
<a href="http://www.viedemerde.fr/{$xml->vdms->vdm['id']}">#</a>
{$xml->vdms->vdm->texte}
</p>
</body>
</html>
EOD;

?>

Voilà, rien de bien sorcier, donc, pas d'explication, vous pouvez retourner à vos occupations, je vais en faire de même !

Connection ssh sans mot de passe

Billet pense-bête, ça m'évitera de chercher si j'ai un trou de mémoire :)

Il est possible de se connecter sans saisir de mot de passe sur une machine distante en SSH, chose très pratique lors de l'administration de plusieurs machines...

Si ce n'est pas encore fait, il vous faut générer votre paire de clef publique / privée, pour cela, entrez la commande suivante :

$ ssh-keygen

Il vous demandera :

  • L'endroit oû stocker les clefs, (~/.ssh/id_dsa par défaut)
  • Une phrase faisant office de mot de passe, laissez cette dernière vide

Ensuite, il faut copier la clef publique dans le fichier ~/.ssh/authorized_keys du pc distant, vous pouvez le faire manuellement avec la commande scp, mais il existe plus simple :

$ ssh-copy-id user@domain.tld

Voilà, vous pouvez dorénavant vous connecter à votre machine sans mot de passe.

Prenez garde à n'utilisez cette méthode qu'à partir d'une machine "de confiance"...

Onglets dans la même instance de GVim

Voilà une petite astuce pour les utilisateurs de GVim qui vous permettra d'ouvrir tous vos documents dans la même instance grâce aux onglets.

La page Vim documentation : remote nous apprend qu'il est possible de faire fonctionner Vim comme un serveur recevant des messages de clients et exécutant les commandes demandées par ces derniers.
Une de ces commandes nous intéresse et va justement nous permettre d'ouvrir des documents dans la même instance de Vim, il s'agit de remote-tab-silent.

Testons cette commande :

 $ gvim -p --remote-tab-silent toto

Une instance de GVim s'ouvre avec toto dans un onglet (le paramètre p permet d'ouvrir un onglet par fichier).
Gardons GVim ouvert et testons de nouveau :

 $ gvim -p --remote-tab-silent foo

Le fichier foo s'affiche maintenant dans un nouvel onglet de la même instance GVim, nous avons donc 2 fichiers ouvert dans GVim : toto et foo.

J'ai fait un petit script bash qui permet de s'affranchir des problèmes rencontrés à l'ouverture avec Nautilus (qui tente d'ouvrir les documents avec le paramètre "-f") et qui évite surtout de devoir saisir les paramètres à chaque fois, il suffit alors de remplacer le fichier binaire de gvim par le script :

 $ mv /usr/bin/gvim /usr/bin/gvim-bin

Ensuite, il vous suffit de déposer le script ci joint dans le dossier /usr/bin et de lui attribuer les droits d'exécution.

Bon Gvim !

Installation de Hyla 0.8.2

Axlcorp à mis en ligne un petit tutorial sur l'installation de Hyla 0.8.2 réalisé avec Wink, vous pourrez y voir des captures d'écran du processus d'installation.

Ça se passe par ici, chez Axlcorp !

Écriture dans les fichiers Tomtom Ov2 et Garmin Asc

Pour faire suite au billet précédent concernant la lecture de fichiers au format Tomtom Ov2 et Garmin Asc, voici la même librairie avec en plus le support de l'écriture.

Voici un petit exemple du fonctionnement :

<?php
/* Ov2 and Asc reader / writer
hugo arobase digitalspirit dot org
c.rincheval, 2007
*/

require 'geo.class.php';

$content = array(0 => array(
'lon' => -3.22,
'lat' => 49.19,
'label' => 'poi 0'
),
1 => array(
'lon' => -5.45,
'lat' => 52.12,
'label' => 'poi 1'
)
);

$file = 'test.ov2';

$format = 'ov2'; // 'asc';

// Writing data to file !
geo::writeData($file, $format, $content);

// Read file
$data = geo::getData($file, $format);

print_r($data);

?>

L'exemple ci dessus se contente d'écrire dans un fichier (test.ov2) les 2 poi du tableau et ainsi la fonctione getData lit ce fichier et l'affiche.

Log Watcher

Introduction

Surveiller des logs dans une console est quelque chose de laborieux et toute solution permettant de simplifier cette tâche ingrate est bonne...

Et c'est justement là qu'intervient Log Watcher, une application qui va vous améliorer grandement la vie lorsque vous aurez besoin de surveiller d'ininterrompu log...

Description

Traduction libre du manuel lwatch :

Log Watcher est un "log colorizer", c'est à dire un programme capable de mettre en couleur des logs en fonction d'une syntaxe, en l'occurrence, en fonction de mots rencontrés.
Il lit le contenu de syslog/syslog-ng depuis des tubes nommées (named fifo) ou depuis l'entrée standard (stdin) et affiche les données colorées dans la sortie standard (stdout).

Lwatch est hautement configurable. Il lit sa configuration depuis /etc/lwatch/lwatch.cond ou depuis un fichier grâce à l'option -C.

Son fonctionnement est simple. il lit une ligne depuis l'entrée courante (par défaut, /var/lib/lwatch/syslog.fifo), la divise en 4 parties : date, nom d'hôte, nom du service (avec le PID si disponible) et le message associé.
Chaque partie possède sa propre couleur qu'il est possible de définir grâce au fichier de configuration, les couleurs par défaut sont les mêmes que pour loco.

Mais lwatch n'est pas seulement un simple log colorizer, il est capable de colorer les logs de la manière qu'on le souhaite. Il est possible de choisir une nouvelle couleur pour chaque partie (date, nom d'hôte, service, message) en utilisant des expressions régulières.

Lire la suite...

Lecture de fichiers Tomtom Ov2 et Garmin Asc

Pour les besoins de Hyla 0.8.1 et, plus particulièrement, de son plugin Géo, j'ai créé une librairie d'accès aux fichiers Ov2 de Tomtom et Asc de Garmin, ces derniers contiennent des informations géographiques, et notamment, des POI.

Cette librairie vous permet d'extraire les données contenues dans les fichiers sus-cités sous forme de tableaux directement exploitables dans votre application.

Voici le contenu du fichier test fourni qui se contente de lire un fichier au format Ov2 et fait un "dump" du contenu du tableau renvoyé :

<?php
/*  Ov2 and Asc reader
    hugo arobase digitalspirit dot org
    c.rincheval, 2007
 */

require 'geo.class.php';

$data = geo::getData('FON_FR.ov2', 'ov2');

print_r($data);

?>

Comme vous le voyez, l'utilisation est très simple...

En annexe, une archive contenant la classe, un fichier de test et un fichier au format ov2.

Librairie Php simple pour l'Api Flickr

J'ai écrit une librairie pour accéder à l'API Flickr (pour ceux qui sorte du fin fond de la jungle et qui n'en ont jamais entendu parler, je vous laisse y jeter un oeil) qui vous permettra d'accéder à l'ensemble des fonctionnalités distantes qu'offre le service.

Certain me diront qu'ils en existent une multitude sur le net et ils auront raison, enfin, presque, car, aucune de celles que j'ai trouvée ne me convenaient, bien trop complexe pour certaines, plutôt sales pour d'autres, j'ai donc décidé d'écrire la mienne avec comme seules contraintes, faire quelque chose de simple et qui fonctionne...proprement.

L'archive contient un fichier test.php, en voici le contenu :

<?php

/* Minimalist class for accessing Flickr web services
hugo arobase digitalspirit dot org
c.rincheval, 2007
*/

require 'flickr.class.php';

define('FLICKR_KEY', 'YOUR_FLICKR_KEY');
define('FLICKR_SECRET', 'YOUR_FLICKR_SECRET');

$flk = new flickr(FLICKR_KEY, FLICKR_SECRET);

$args = array();
$rsp = $flk->request('flickr.photos.getRecent', $args);

if ($rsp['stat'] == 'ok') {
$url_img = 'http://farm%s.static.flickr.com/%s/%s_%s%s.jpg';
foreach ($rsp['photos']['photo'] as $photo) {
echo '<img src="'.sprintf($url_img, $photo['farm'], $photo['server'], $photo['id'], $photo['secret'], '_s').'" alt="" />';
}
}

?>

Cet exemple va chercher sur le site de Flickr les photos les plus récentes et les affichent directement sur la page.

Comme vous pouvez le voir, c'est relativement simple et vous pouvez, comme je l'ai fait, étendre ces fonctionnalités en dérivant de cette classe.

Vous trouverez ci-joint l'archive contenant les sources de la classe, le fichier d'exemple et le fichier de license GNU/GPL.

- page 1 de 3