Symfony2

FunstaffTikaBundle: Wrapper pour Tika

0

Aujourd’hui, je vous propose un petit bundle Symfony2 de ma création. Celui-ci permet d’extraire du contenu et des metadatas sur vos fichiers. Vous avez la liste des fichiers supportés à cette adresse.

Installation

Clone:

git clone https://github.com/Funstaff/FunstaffTikaBundle vendor/bundles/Funstaff/TikaBundle

Ajout en submodule:

git submodule add https://github.com/Funstaff/FunstaffTikaBundle vendor/bundles/Funstaff/TikaBundle

Télécharger le binaire Tika (runnable jar) à cette adresse et déplacer le dans le path de votre choix que vous renseignerez dans votre configuration.

Nous allons ajouter le namespace « Funstaff » dans le fichier autoload.php

$loader->registerNamespaces(array(
    ...
    'Funstaff' => __DIR__.'/../vendor/bundles',
));

Activons maintenant le bundle:

public function registerBundles()
{
    $bundles = array(
        ...
        new Funstaff\TikaBundle\FunstaffTikaBundle(),
    );
}

Sa configuration est très simple. Il vous suffit de déclarer ces éléments dans votre fichier config.yml:

funstaff_tika:
    tika_path:      /path/to/tika-app-1.0.jar
    output_format:  ~
    logging:        ~

Options possibles pour ces paramètres:
tika_path: Chemin sur le binaire Tika
output_format: xml, html ou text (défaut: xml)
jogging: true ou false (si non défini, utilise le paramètres jogging du Symfony2)

Utilisation

Dès maintenant, vous avez accès au service « funstaff.tika ». Voici comment l’utiliser.

$tika = $this->get('funstaff.tika')
        ->setOutputFormat('text')
        ->addDocument('foo', '/path/to/foo')
        ->extractContent();

Dans l’exemple ci-dessus, nous avons fixé le format de sortie au format texte, ajouté le document foo et lancer l’extraction. Nous allons maintenant pouvoir récupérer les informations:

foreach ($tika->getDocuments() as $document) {
    $content = $document->getContent();
}

Vous pouvez ajouter plusieurs documents en rajoutant plusieurs lignes « addDocument ».

Fonctions existantes pour l’extraction:
extractContent: Uniquement le texte
extractMetadata: Uniquement les metadata
extractAll: Texte et métadata

Exemple avec la récupération du texte et des metadatas:

foreach ($tika->getDocuments() as $document) {
    $content = $document->getContent();
    $metadata = $document->getMetadata();
    $author = $metadata->get('Author');
}

Voilà, nous avons effectué le tour du propriétaire. Si ce bundle vous intéresse, vous le trouverez sur github à l’adresse suivante: FunstaffTikaBundle

Si vous désirez me laisser votre feedback: Github issue

Share

Symfony2, Assetic, less et yui compressor: Installation sur Mac

2

Après un petit moment de silence, voici une petite publication concernant l’installation de LESS pour pouvoir l’utiliser avec Symfony2 et Assetic. Pour cela, nous allons utiliser MacPorts. Vous devez posséder les droits administrateur pour le faire.

L’utilisation de LESS demande une installation de Node.js ainsi que Node Package Manager.

sudo port install nodejs
sudo port install npm

Nous allons contrôler que nos 2 éléments ci-dessous soient bien installés.

$ node --version
v0.4.11
$ npm --version
1.0.26

Avec les deux commandes ci-dessous, vous avez maintenant la base. Il nous reste à installer LESS:

sudo npm install -g less

Vous avez la possibilité de voir les packages installés avec la commande suivante:

npm list -g

Il nous reste à installer YUI-Compressor. Vous pouvez télécharger la dernière version chez yahoo. Copier le fichier « yuicompressor-2.4.6.jar » du dossier build dans le dossier app/Resources/java.

Passons maintenant à la configuration d’assetic. Nous allons ajouter quelques lignes dans le fichier se trouvant dans app/config/config.yml:

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    filters:
        cssrewrite: ~
        less:
            node:       /opt/local/bin/node
            node_paths: [/opt/local/lib/node, /opt/local/lib/node_modules]
        yui_css:
            jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar
        yui_js:
            jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar

Il nous reste à ajouter quelques lignes dans notre layout de base dans la partie head:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        {% stylesheets
            '@FunstaffCoreBundle/Resources/assets/less/foo.less'
             filter='less,?yui_css'
             output='css/foot.css'
             %}
            <link href="{{ asset_url }}" rel="stylesheet" media="screen" />
        {% endstylesheets %}
        ...
    </head>
    <body>
        ...
    </body>
</html>

Vous nouvelle configuration est prête à être utilisé.

Encore une dernière chose, si vous voulez générer votre css pour votre site en production, il suffit d’exécuter cette commande:

./app/console assetic:dump --no-debug

Voici les sources qui m’ont aidé à écrire cet article:

Share

Symfony2: Génération d’un nouveau projet version 2

0

Bonjour,

Avec un peu de retard, suite à des problèmes de santé, je vous présente brièvement la version 2 du bootstrapper qui vous permet de générer facilement un projet Symfony2. Vous pouvez décharger cette nouvelle version à l’adresse suivante: Symfony2Project. Ce nouveau générateur est basé sur les components de Symfony2.

La première chose à faire est de copier le fichier default.xml.dist et le renommer default.xml. Ce fichier xml renseigne les éléments nécessaire pour le bon fonctionnement du générateur. Vous le trouvez dans le répertoire Resources/Profile.

Pour connaître toutes ces options, vous pouvez taper dans votre terminal:

./symfony2project generate:project

Vous devez au minimum renseigner les éléments suivants:
- Nom du bundle (AppName)
- Le namespace que vous avez choisi (VendorName)
- Et le répertoire ou vous allez générer votre projet (Path)

Ensuite, selon les éléments que vous voulez mettre en place, vous avez des options que voici:
- controller: Permet de renommer le controleur générer lors de l’initialisation du projet
- protocol: Protocole utilisé par git (git, http)
- session-start: Démarrage automatique de la session
- session-name: Nom de la session
- orm: Type d’orm (doctrine ou propel)
- odm: Type d’odm (mongodb)
- assetic: Activation du bundle Assetic
- swiftmailer: Activation du bundle swiftmailer
- doctrine-migration: Activation du bundle de migration
- doctrine-fixtures: Activation du bundle de fixtures
- template-engine: Genérateur de modèle (php ou twig). Le défaut est fixé sur twig
- profile: Nom du fichier profile (dans le cas ou vous avez réaliser un nouveau fichier xml). Le défaut est fixé sur default
- assets-symlink: création du lien symbolique sur les ressources des bundles
- force-delete: Force la suppression d’un ancien projet résidant dans le path

Profile:
Le fichier profile peut-être personnalisé selon vos désirs. Il existe une section User qui vous permet d’ajouter vos éléments. Vous pouvez également déposer ce fichier sur un serveur http et renseigner la directive –profile. Exemple:

./symfony2project generate:project AppName VendorName Path
--profile=http://myserver/profile/default

Attention: Ne pas spécifier l’extension (.xml)

Voici une ligne de commande avec toutes les options:

./symfony2project generate:project Core Funstaff /path/to/your/project
--controller=Main --session-start --session-name=funstaff --orm=doctrine
--assetic --swiftmailer --doctrine-migration --doctrine-fixtures
--assets-symlink --force-delete

J’espère que ce nouvel outil vous facilitera la vie.

Bonne utilisation ;)

Share

Symfony2: Génération d’un nouveau projet

4

ATTENTION: Nouvelle version du script. Un nouvel article en préparation.

Ce soir, juste une petite publication, pour vous annoncer la publication d’un script maison. Symfony2 ne proposant pas une tâche pour générer un nouveau projet, j’ai décidé de réaliser un script de mise en place des éléments. Vous le trouvez sur github en cliquant sur le lien ci-dessous

Symfony2Project

Voici la syntaxe pour son utilisation:

php symfony2project.php –app=AppName –vendor=VendorName [--path=/your/destination/path] [--controller=controllerName] [--protocol=git|http] [--session-start=false|true] [--session-name=sessionName] [--symfony-repository=fabpot|symfony] [--with-db=false|true] [--template-engine=twig|php]

–app: Le nom de votre application (en faite le Bundle principal)
–vendor: Nom du « vendor » (obligatoire)
–path: Destination (Ex: /www/virtualhosts/foo)
–controller: Si vous l’indiquez le script génèrera un controller et un template
–protocol: git ou http (selon le cas d’utilisation)
–session-start: false ou true (démarrage automatique de la session) (défaut: false)
–session-name: Nom de la session (défaut: Nom de l’application)
–symfony-repository: fabpot ou symfony (défaut: symfony)
–with-db: false ou true (défaut: true)
–template-engine: twig ou php (default: twig)

J’ai encore quelques améliorations dans ma ToDo list. Si vous essayez ce script et qu’il vous convient, merci de m’encourager par un petit commentaire :) Vous pouvez également y participer en soumettant un « Pull Request« .

Maintenant, je vais me remettre à la découverte de Symfony2 qui est fondamentalement différent de la version 1.

[MAJ]
27.11.2010: Ajout de l’option auto_start sur la session (réf)
28.11.2010: Ajout de l’option symfony-repository permettant de choisir entre 2 dépôt (fabpot ou symfony)
01.12.2010: Ajout des options session-name et with-db
23.01.2011: Ajout de l’option template-engine
31.01.2011: Ajout de l’option vendor

Share
Haut de page