jean-phi's

Aller au contenu | Aller au menu | Aller à la recherche
Me contacter

jeudi, décembre 3 2009

installation complète d'un serveur web sous centos5.4 | jour 2 - installation de symfony et configuration d'un virtual host

Parmi les applications à migrer sur notre serveur, certaines requièrent le framework PHP symfony. Nous allons donc installer les différentes versions de symfony nécessaires et les faire cohabiter sur notre serveur. Il va être intéressant de voir quels sont les configurations à apporter à notre lighttpd installé hier.

Lire la suite...

mercredi, décembre 2 2009

installation complète d'un serveur web sous centos5.4 | jour 1 - installation du serveur web (lighttpd) et du serveur de données (mysql)

Tout au long de cette série de billets, nous verrons comment installer un serveur autonome sur la distribution centOS 5.4 64bit. Nous aurons besoin d'un serveur web (lighttpd ici), d'un serveur de mail (Postfix) ainsi que d'un serveur de données (mysql).

Lire la suite...

lundi, novembre 30 2009

symfony android client

Voici deux petites classes permettant de faire des requêtes sur une application symfony depuis android tout en respectant l'architecture REST des modules.

Le client (singleton pour conserver la session) :

package org.me.sfBackendClient;
 
import org.apache.http.impl.client.DefaultHttpClient;
 
/**
 * symfony application client singleton
 * thanks to Cansin http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/
 * @author jean-philippe serafin <jean-philippe.serafin@dev-solutions.fr>
 */
public class sfClient{
  private static sfClient instance;
  protected DefaultHttpClient httpClient;
  /**
   * constructor
   */
  private sfClient(){
    this.httpClient = new DefaultHttpClient();
  }
  /**
   * instance accessor
   */
  public static sfClient getInstance(){
    if(null == instance){
      instance = new sfClient();
    }
    return instance;
  }
  /**
   * creating new request
   */
  public sfRequest createRequest(){
    sfRequest request = new sfRequest(this.httpClient);
    return request;
  }
}

Les requêtes :

package org.me.sfBackendClient;
//IO
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
//utils
import java.util.List;
import java.util.ArrayList;
//apache
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.impl.client.DefaultHttpClient;
 
/**
 * symfony request
 * thanks to Cansin http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/
 * @author jean-philippe serafin <jean-philippe.serafin@dev-solutions.fr>
 */
public class sfRequest{
  protected String url;
  protected String method;
  protected List<NameValuePair> params;
  protected HttpGet getRequest;
  protected HttpPost postRequest;
  protected HttpResponse response;
  protected String result;
  protected DefaultHttpClient httpClient;
 
  /**
   * constructor
   */
  public sfRequest(DefaultHttpClient client){
    this.httpClient = client;
    this.params = new ArrayList<NameValuePair>(2);
  }
  public void setUrl(String url){
    this.url = url;
  }
  public String getUrl(){
    return this.url;
  }
  public void setMethod(String method){
    this.method = method;
  }
  public String getMethod(){
    return this.method;
  }
  /**
   * Adding parameter
   * @param key
   * @param value
   */
  public void addParam(String key, String value){
    this.params.add(new BasicNameValuePair(key, value));
  }
  /**
   * getting response text
   * @return String response
   */
  public String getResult(){
    return this.result;
  }
  /**
   * executing request
   */
  public void execute(){
    try {
        if(this.method.compareToIgnoreCase("GET") == 0){
        this.getRequest = new HttpGet(this.getUrl());
        this.response = this.httpClient.execute(this.getRequest);
      }else if(this.method.compareToIgnoreCase("POST") == 0
                || this.method.compareToIgnoreCase("PUT") == 0
                || this.method.compareToIgnoreCase("DELETE") == 0){
        this.addParam("sf_method", this.getMethod());
        this.postRequest = new HttpPost(this.getUrl());
        this.postRequest.setEntity(new UrlEncodedFormEntity(this.params));
        this.response = this.httpClient.execute(this.postRequest);
      }
      HttpEntity entity = response.getEntity();
      if(entity != null){
        InputStream inputStream = entity.getContent();
        this.result = convertStreamToString(inputStream);
      }
    } catch (ClientProtocolException e) {
        //e.printStackTrace();
        this.result = e.getMessage();
    } catch (IOException e) {
        this.result = e.getMessage();
    }
  }
  /**
   * converting stream reader to string
   * @return String
   */
  private static String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder stringBuilder = new StringBuilder();
 
    String line = null;
    try {
      while ((line = reader.readLine()) != null) {
        stringBuilder.append(line + "\n");
      }
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        is.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return stringBuilder.toString();
  }
}

L'utilisation est très simple :

sfRequest request = sfClient.getInstance().createRequest();
request.setUrl("http://xxxxxxxxx/androidConnect/connect");
request.setMethod("POST");
request.addParam("login", loginField.getText().toString());
request.addParam("password", passwordField.getText().toString());
request.execute();
String message = request.getResult();

Merci à Cansin

samedi, octobre 17 2009

Premiers pas sur fedora 11 - installation d'apache2, mysql, php

installation d'apache (httpd) et php

on installe httpd via yum :

yum install httpd

on démarre le serveur

service httpd start

on vérifie la présence de la page de test sur http://localhost/ on installe php

yum install php

on créé un dossier pour ranger les configs de nos futures virtualHost

mkdir /etc/httpd/sites-available   #dossier qui contiendra les hosts
mkdir /etc/httpd/sites-enabled    #dossier qui contiendra des liens symboliques vers les hosts pour les mettre en ligne

on édite le fichier de config apache

nano /etc/httpd/conf/httpd.conf

et on y ajoute tout au bout la ligne

Include /etc/httpd/sites-enabled/

pour inclure notre dossier de sites actifs.

On teste le tout en créant le dossier qui va contenir notre premier site (remplacer jean-philippe par votre user :) :

mkdir /var/www/html/www.test.loc

on crée un fichier index.php

nano /home/jean-philippe/www/www.test.loc/index.php

on y met les lignes :

<?php
phpinfo();

on créé notre premier host :

nano /etc/httpd/sites-available/www.test.loc
<VirtualHost *>
	ServerName www.test.loc
        DocumentRoot /var/www/html/www.test.loc
        <Directory /var/www/html/www.test.loc>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

on le met en ligne :

ln -s /etc/httpd/sites-available/www.test.loc /etc/httpd/sites-enabled/www.test.loc

on surcharge la résolution du nom :

nano /etc/hosts

en ajoutant la ligne :

127.0.0.1 www.test.loc

on redémarre apache :

service httpd restart

on prend possession du dossier

chown jean-philippe /var/www/ -R

et on test http://www.test.loc

un petit lien symbolique pratique :

ln -s /var/www/html /home/jean-philippe/www

si on souhaite qu'apache se lance automatiquement au démarage de la machine :

chkconfig httpd on

Installation de mysql

on installe les paquets :

yum install mysql-server mysql

on démarre le serveur fraichement installé :

service mysqld start

on change le mot de passe root

mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('pass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

si on souhaite que mysql server se lance automatiquement au démarage de la machine :

chkconfig mysqld on

mardi, décembre 2 2008

Partager des sessions Symfony et SMF

Pour le besoin d'un de nos projets, j'avais besoin de partager des sessions entre symfony et SMF (simple machine forum).

J'ai donc écrit une petite classe afin de pouvoir instantier une session SMF directement depuis symfony.

Lire la suite...

mercredi, octobre 8 2008

Reverse engineering PHP vers UML avec PHP_UML

Après plusieurs recherches, j'ai enfin trouvé l'outil Open Source permettant de faire un reverse engineering d'une application php afin d'obtenir un diagramme de classe éditable via notre éditeur UML préféré. Le tout compatible avec les namespaces (php 5.3 / php 6) !

Lire la suite...

mardi, septembre 30 2008

Debug php pas à pas et profiling de scripts avec XDebug, Vim et KCacheGrind

Afin d'optimiser et d'accelérer le développement de vos scripts PHP, la mise en place d'un environement de debug et de profiling s'impose.

Lire la suite...

mercredi, septembre 17 2008

Amélioration de dotclear 2.0.2 - installation des plugins OpenPlanet et Contact

Quelques petites améliorations pour dotclear 2.0.2, ainsi que les adaptations nécessaires à l'installation des plugins OpenPlanet (syndicalisation de flux) et Contact (formulaire de contact).

Lire la suite...

dimanche, septembre 14 2008

mySql error 1059 : Contourner l'erreur 1059

Dans le cadre du développement de nano, nous avons créé un générateur dynamique de précédures stockées mySql.

Lire la suite...

mercredi, août 27 2008

Gedit Class Browser. Un explorateur de classes pour gedit.

Procédure d'installation d'un plugin bien pratique pour gedit pour explorer des classes php : CLass Browser.

Lire la suite...

- page 1 de 2