Subclipse + JavaHL + Ubuntu Edgy Eft

Une erreur de ce type ?

# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0xae0f7acb, pid=7090, tid=2963884960
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_08-b03 mixed mode, sharing)
# Problematic frame:
# C [libsvnjavahl-1.so.0.0.0+0xdacb] _ZN7JNIUtil18setExceptionThrownEv+0x2b

Si vous êtes sous Edgy Eft, la solution vient du paquet libapr0 qui provoque une erreur au niveau de la librairie javahl utile à subversion.

Pour que tout fonctionne, suivre le guide :

  1. ouvrir le gestionnaire de paquet
  2. chercher libapr0
  3. suppression complète (il va vous demander de supprimer également les paquets javahl, pas de souci)
  4. installation manuelle du paquet libapr0 suivant (version qui, elle, est non bugguée) : http://packages.ubuntulinux.org/dapper/net/libapr0
  5. retour dans le gestionnaire de paquet, vous rechercher javahl et vous installez
  6. il vous reste éventuellement à modifier votre LD_LIBRARY_PATH. Dans /etc/environment, rajouter :
    1. LD_LIBRARY_PATH=/usr/lib/jni:.
    2. export LD_LIBRARY_PATH

Il est conseillé d’utiliser le mode de connexion JavaHL pour subclipse (le plugin subversion d’eclipse).

Si ça ne vous aide pas, il vous reste la FAQ : Où trouver JavaHL selon son OS ?

http://subclipse.tigris.org/faq.html#get-javahl

XAMPP : déporter la base de données mysql sur un serveur de fichiers

Voici la démarche pour déporter la base de données sur un serveur de fichiers (NAS) dans le cadre de l’utilisation de XAMPP (alias LAMPP).

Tout d’abord, il faut que les fichiers des différentes bases soient accessibles via samba.

  1. Installer XAMPP (tar xzvf xamp-??? -C /opt)
  2. Editer le script de démarrage de mysql de XAMPP (sudo gedit /opt/lampp/bin/mysql.server)
    • ajouter après le bloc if / else / fi (vers ligne 70) la ligne suivante :
    • datadir=/tmp/NAS/mysql/
  3. Creer un fichier de lancement de lampp (sudo gedit /usr/bin/lampp)
    • Ajouter :
    • #!/bin/bash#montage samba ou nfs ou fuse… ici exemple avec samba
      mkdir /tmp/NAS
      umount /tmp/NAS
      mount -t smbfs -o fmask=777,dmask=777,username=votre_login,password=votre_pass //ip_du_serveur_de_fichiers/repertoire_partagé /tmp/NAS

      #demarrage de xampp
      /opt/lampp/lampp $1

  4. Attention, au niveau sécurité et droits d’accès, ce n’est pas génial du tout, mais dans le cadre d’un accès monoposte monoutilisateur, c’est parfait.

Autre approche de la gestion / conception de projet

Business traditionnel

Plan à 3 ans (voire plus …), business plan de (beaucoup trop de) pages, super-équipe de techniciens, marketeurs, administratifs (etc.), et de conseils extérieurs, entraînant un impressionnant burn rate (rythme de consommation des capitaux apportés par les investisseurs), le moment venu super-conférence de presse avec le hype (exagération) de rigueur, voici enfin le lancement officiel du produit (ou service).

Beaucoup de temps (pendant ce temps, des concurrents s’agitent, la demande du marché a évolué, de nouvelles solutions techniques sont apparues)

Beaucoup d’argent

Beaucoup de risque : on n’a toujours pas, à ce stade, de jugement réaliste sur les usages, les utilisateurs, le marché, etc.

De nombreuses start-up, encore aujourd’hui, fonctionnent de cette façon. Le découpage de l’arrivée des capitaux en “tranches conditionnelles” ne change rien au fond de l’affaire : on pilote une jeune pousse comme si c’était un pétrolier géant, alors qu’il faudrait la manier comme un dériveur en régate.

Projet moderne

En reprenant la méthode appliquée par l’ouvre-boîte :

– Environnement créatif de concurrence / génération d’idées ==> maturation rapide
– Des maquetteurs se saisissent d’une idée ==> maquettage rapide (et peu coûteux)
– Maquettes d’usages : Observer “en vrai” usages, utilisateurs. Dialoguer avec utilisateurs et commentateurs (la maquette est d’origine pourvue des outils de dialogue comme ceux des blogs) sur usages, fonctionnalités …, susciter et accueillir suggestions commerciales, marketing, RP, techniques. Observer les réactions sur le Web, et réagir (la maquette est d’origine pourvue de RSS et trackback comme ceux des blogs, ou elle est bâtie autour d’un blog).

Parmi les utilisateurs ou commentateurs (locaux ou repérés sur le Net) se trouvent de futurs partenaires pour l’écosystème [*] du projet. A noter que l’écosystème peut croître dès le lancement de la maquette si elle est pourvue de RSS, API … et accélérer encore l’utilité de la maquette. Parmi ces utilisateurs ou commentateurs, se trouvent aussi de futurs collaborateurs, distributeurs, financiers …

Toute “bonne” maquette est dès l’origine dotée de RSS et d’API.

[*] Ecosystème : thème abordé à de nombreuses reprises sur ce blog ou sur l’ouvre-boîte (par ex. ici). En bref : un produit ou service bénéficie de l’existence d’autres produits ou services. Les services utilisant le Net peuvent de plus collaborer entre eux (RSS, API, etc.) pour produire plus de valeur et une meilleure existence. En ce qui concerne une maquette, la multiplication et croissance de services “liés”, dès la naissance de la maquette, fournit aux initiateurs du projet, et à des investisseurs, une excellente indication de potentiels (d’usages, techniques, commerciaux, financiers) et de la “valeur du projet.

Il est très important de noter qu’une maquette n’a pas besoin d’être parfaite. Par exemple, elle ne présente pas (pas toujours) toutes les fonctionnalités qui seraient jugées intéressantes. Les seuls juges des fonctionnalités, ce sont les utilisateurs. Il vaut mieux présenter moins de fonctionnalités que plus, parce que plus de fonctionnalités :

– c’est plus lent et coûteux à mettre en place
– plus il y a de fonctionnalités, plus il y a de bugs, à court et à long terme
– plus il y a de fonctionnalités, plus le design est difficile
– plus il y en a, plus l’utilisateur s’y perd (bad user experience, dommageable pour le projet) … et moins il en utilise (cf. l’usage réel des traitements de texte)
– il est beaucoup plus facile pour un utilisateur de réclamer une fonctionnalité (la maquette est d’ailleurs là pour écouter ses suggestions) que de proposer sa suppression (et on peut difficilement compter sur l’équipe maquette pour supprimer une fonctionnalité dont elle est si fière)

La “mécanique” derrière la maquette n’a pas non plus besoin d’être parfaite à la date de lancement de la maquette. Par exemple, pas besoin d’algorithmes ultraperformants. Tant mieux s’ils sont là. L’optimisation (ou le remplacement par une mécanique flambant neuve) viendra ensuite. Et les signaux pour indiquer la nécessité d’améliorer ou changer la mécanique sont déclenchés par l’usage de la maquette. Par exemple, par une montée continue et rapide du nombre d’utilisateurs. Tout ce qu’on demande à une maquette, c’est de “marcher”.

Idéation rapide, Maquette rapide, Synthèse rapide : En peu de temps, en ayant peu dépensé, on a tous les éléments de décision pour “la suite” :

– Usages et marchés
– Concurrence
– Fonctionnalités : lesquelles améliorer, créer. Avec, éventuellement, quels outils ou services proposés par les utilisateurs et commentateurs
– Partenaires de l’écosystème, distributeurs, …
– Etc.

Un projet ayant démontré :
– sa capacité à produire “beaucoup” avec des ressources limitées
– sa validité “en vrai”
– son potentiel d’usages, de marchés, de partenariat
– sa réactivité
… a une valeur intrinsèque importante. Les initiateurs du projet sont en bonne position pour inspirer confiance à des investisseurs, et négocier la valorisation du projet.

Open Business ?

En somme, tout ceci une application aux processus d’innovation et de business de l’adage release early, release often, titre d’un chapitre de The Cathedral and the Bazaar (Eric S. Raymond, technicien, écrivain, prophète et … parfois provocateur). Dans ce chapitre d’un ouvrage synthétisant une “anatomie du développement d’un logiciel”, l’auteur écrivait d’ailleurs aussi : Release early. Release often. And listen to your customers.

Eric S. Raymond défend ardemment les avantages du Open Source, notamment l’incroyable efficacité des boucles cybernétiques (rétroactions) entre développeurs, entre développeurs et utilisateurs, entre utilisateurs. Un business moderne, à ses débuts comme ensuite, devrait sans arrêt installer, entretenir, favoriser toutes sortes de rétroactions. Et les analyser.

Le côté “Open” du business moderne, où pourrait on le trouver ? Dans le processus collectif d’idéation à l’origine d’une maquette. Dans l’ouverture d’esprit et le dialogue public permanent avec les utilisateurs et tous partenaires. Dans la création et le développement de l’écosystème du projet. Dans l’ouverture des usages : foisonnement combinatoire. Dans les processus de matching entre personnes, projets, investisseurs, fournisseurs et autres partenaires. Open Business ?

Le côté Open, on le trouve encore dans les implications stratégiques d’une démarche de projet en environnement ouvert (écosystème). La combinaison de valeurs des services permet un effet long tail : couvrir les besoins personnalisés de la plus petite niche de marché, sans que cela augmente le dimensionnement de la logistique générale.

Nota : cet article aura une suite, traitant des financements rapides pour des projets rapides

Cela ferait-il un slogan pertinent et enthousiasmant, ou bien son côté provocateur pourrait il provoquer des rejets ?source

Installation et configuration de PostgreSQL

Un autre tuto très bien écrit :

Ce document me sert de mémo pour installer la base de données PostgreSQL sur une Debian Testing (Etch). Ce mémo a été testé sous Debian Testing, mais il doit être possible de l’adapter facilement aux autres distributions Linux.

PostgreSQL est moins connue et moins utilisée que MySQL, pourtant cette base à des fonctionnalités très intéressantes qui la rend comparable aux bases de données commerciales comme Oracle ou DB2.

Pré-requis

Pour installer PostgreSQL, il faut installer une Debian Testing de base :
–  http://www.coagul.org/article.php3 ?id_article=158

Installation

Paquets à installer :

# aptitude install postgresql-8.1

Lors de l’installation, l’utilisateur «  postgres  » est créé automatiquement. Par défaut, le mot de passe de cet utilisateur n’est pas connu. Je conseil de lui en affecter un car cela permet de passer sous l’utilisateur « postgres » sans passer par l’utilisateur « root » :

# passwd postgres

Pour travailler sur la base de données, il faut commencer par se connecter sous le compte de ce nouvel utilisateur :

# su postgres

psql : Interface en ligne de commande pour accéder à PostgreSQL

La commande «  psql  » est une interface en ligne de commandes permettant d’accéder et de manipuler une base de données PostgreSQL.

La commande suivante, qu’il faut toujours saisir sous le compte «  postgres  », permet de se connecter à la base de données «  template1  » installée par défaut :

$ psql template1

Une fois dans l’interface, voici quelques commandes utiles :
–  \ ? : Donne la liste des commandes
–  \h : Donne la liste des commandes SQL
–  \h SELECT : Donne une aide sur la commande SQL SELECT
–  \l : Donne la liste des bases de données.
–  \q : Pour sortir de l’interface.

La commande suivante, permet par exemple de connaître la liste des bases de données :

$ psql -l

Gestion des droits d’accès à PostgreSQL

Par défaut, pour accéder à PostgreSQL, il faut se connecter sous l’utilisateur «  postgres  ». Pour créer un nouvel utilisateur, il faudrait commencer par lui créer un compte sur le système, ce qui n’est peut-être pas souhaitable. Pour changer cette configuration, il faut modifier le fichier « /etc/postgresql/pg_hba.conf » et mettre «  password  » à la place de «  ident sameuser  » sur les deux lignes suivantes :
local  all     all                                        ident sameuser
host   all     all    127.0.0.1         255.255.255.255   ident sameuser

ce qui donne :
local  all     all                                        password
host   all     all    127.0.0.1         255.255.255.255   password

Cette modification permet d’éviter de passer par des comptes du système et oblige à fournir un mot de passe à chaque connexion.

Création d’un nouvel utilisateur

La commande «  createuser  » toujours sous le compte « postgres », permet de créer un nouvel utilisateur :
$ createuser toto
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

Par défaut le nouvel utilisateur n’a pas de mot de passe et il n’est donc pas encore possible de l’utiliser. La commande suivante, permet de définir ce mot de passe :

$ psql -d template1 -c “alter user toto with password ‘motdepasse'”

La commande suivante, permet de vérifier que cet utilisateur est correctement reconnu :
$ psql -l -U toto
Mot de passe :
Liste des bases de données
Nom    | Propriétaire | Encodage
———–+————–+———-
template0 | postgres     | LATIN9
template1 | postgres     | LATIN9

Création d’une base de données

La commande suivante, permet de créer la base de données « mabase  » pour l’utilisateur «  toto  » en utilisant l’encodage «  UNICODE  » :
$ createdb -O toto -E UNICODE mabase
CREATE DATABASE

Remarque : Si le test échoue, essayez de redémarrer PostgreSQL :

# /etc/init.d/postgresql-8.1 restart

Affectation d’un mot de passe pour l’utilisateur postgres

L’utilisateur « postgres est le super-utilisateur de la base de données PostgreSQL. Il est donc important de lui donner un mot de passe, car par défaut celui-ci n’en pas.

Pour créer ce mot de passe, nous allons utiliser la commande « psql » présenté au chapitre précédent :

$ psql -d mabase -c “ALTER USER postgres WITH PASSWORD ‘LeMotDePasse'”

Remarque 1 : Le mot de passe de l’utilisateur système de postgres (créé à l’installation) peut-être différent du mot de passe de l’utilisateur postgres de la base de données.

Remarque 2 : Pour faire fonctionner les clients Web ou les clients graphiques présentés aux chapitres suivant, il est obligatoire de définir un mot de passe pour « postgres »

PhpPgAdmin : Interface Web pour accéder à PostgreSQL

Dans le même style que le célèbre «  phpmyadmin  », il existe «  phppgadmin  » pour manipuler une base de données PostgreSQL à partir d’une interface web en php.

Avant d’installer «  phppgadmin  », il est nécessaire d’avoir un serveur Web+PHP opérationnel.

Pour installer apache et php, vous pouvez vous aider de ce mémo :
–  http://www.coagul.org/article_imprime.php3 ?id_article=169

Paquet à installer :

# apt-get install phppgadmin

Remarque 1 : Pour que le site soit accessible, j’ai dû reconfigurer le paquet avant de pouvoir l’utiliser (Lors de cette configuration, il faut lui indiquer le serveur Web à utiliser) :

# dpkg-reconfigure phppgadmin

Remarque 2 : J’ai dû également reconfigurer Apache et le PHP pour qu’ils prennent en compte PostgreSQL :
# dpkg-reconfigure php4-pgsql
# /etc/init.d/apache2 restart

Accès en local

Si vous avez un navigateur Web installé sur le serveur, vous pouvez saisir l’adresse suivante :

http://localhost/phppgadmin/

Accès depuis le réseau

Pour pouvoir accéder à l’interface depuis un autre poste du réseau, il est nécessaire d’autoriser l’accès en modifiant le fichier « /etc/apache2/conf.d/phppgadmin ». Pour cela, il faut ajouter après la ligne « deny from all », une ou plusieurs lignes pour indiquer un masque de sous-réseau ou les adresses des postes autorisés.

Pour autoriser deux postes, il faut ajouter les adresses IP de ceux-ci :
allow from 192.168.0.1
allow from 192.168.0.2

Pour autoriser un sous réseau, il faut ajouter une ligne de ce type :

allow from 192.168.0.0/255.255.255.0

Pour finir, il faut redémarrer le serveur « apache » :

/etc/init.d/apache2 restart

Enfin, il est possible avec le navigateur des postes autorisés d’accéder au serveur à l’adresse suivante :

http://AdresseIPduServeur/phppgadmin/

Autoriser le login « postgres »

Pour des raisons de sécurité, le login «  postgres  » n’est pas autorisé à accéder à la base de données via «  phppgadmin  ». Pour l’autoriser, il faut modifier le fichier « /etc/phppgadmin/config.inc.php ». Dans ce fichier, il faut mettre « false » à la ligne suivante :

$conf[‘extra_login_security’]  = false

pgAdmin : Interface graphique pour accéder à PostgreSQL

Installation du paquet :

# aptitude install pgadmin3

La commande «  pgadmin3  » ou le menu « K / Debian / Applications / Base de données /pgAdmin III » permettent de lancer le programme.

Une fois le programme lancé, il faut utiliser le menu « Fichier / Ajouter serveur » pour se connecter au serveur PostgreSQL.

source

Installer PostgreSQL sous Linux

Un très bon tuto que je copie colle.

This is a quick guide to installing PostgreSQL on a Linux based system. We need to get this up and running before we can write PHP scripts to talk to the database.    We need to install PostgreSQL before we can install PHP (since we need the PostgreSQL header files).

This is a little more complicated than installing Apache.

The best bet is to install from packages since this will make things easier, both now and for upgrades.

If you decide to install from source code, you’ll need to create a user and compile the source.

Create a PostgreSQL user (you’ll need root access). This is who owns the system. I use the “postgres” user and group, you can use something different but it’s best to keep it related to the package.

See your system documentation on how to do this (hint – man useradd). Give the user a home directory of /usr/local/pgsql as this is where PostgreSQL defaults to when it installs.

Once all that is done, untar the source:

$ tar -zxf postgresql-.tar.gz (if you got the gzipp’ed version);
or
$ tar -xjf postgresql-.tar.bz2

Jump into the directory:

$ cd postgresql-

(replace with the version you downloaded from the website).

Again, configure has a lot of help:

$ ./configure –help

We’ll just install into /usr/local/pgsql and leave the rest as-is:

$ ./configure –prefix=/usr/local/pgsql

Next we have to make it (this will take a while, it takes longer than Apache):

$ make

You will get a line:
All of PostgreSQL successfully made. Ready to install.

when everything is finished.

You’ll need to log in as root to do the rest:

$ su –

Go back to the postgresql directory and do:

# make install

PostgreSQL doesn’t allow root to start up the server for security reasons, so next you’ll have to change the owner of the files:

# chown -R postgres:postgres /usr/local/pgsql

Change to the postgres user:

# su – postgres

Then, change to /usr/local/pgsql:

$ cd /usr/local/pgsql

We need to initialize a database cluster:

$ bin/initdb -D ./data

This will create a /usr/local/pgsql/data directory and initialize it ready for startup and use.

As usual, you can view options by using the –help switch:

$ bin/initdb –help

Then you can start:

$ bin/pg_ctl -D ./data -l data/logfile start

Now that postgresql is started, we need to create a database and another user before we go any further.

You should use a separate database for each of our projects, it’s not essential though – it just makes things a little cleaner and easier to understand.

You should also use separate users for each database. This keeps everything separate and ‘project a’ won’t be able to modify any of ‘project b’s data.

To create a new user in postgresql, it’s pretty simple:

$ /usr/local/pgsql/bin/createuser

and follow the prompts – pretty simple 🙂

The new user should not be able to create new databases or create new users.

To create a database, it’s a little different.

$ /usr/local/pgsql/bin/createdb –owner=username databasename

We have to set the owner of the database when we create it, otherwise the ‘postgres’ user owns it and then we have to grant access to allow our new user to access it.

Now that that’s all done, log out of the postgres user, so we’re back as root. In the postgres directory, the contrib/start-scripts/ directory has a few system start up scripts.

Follow the instructions in the relevant one to install a start-up script so postgres will start when your system does.

More detailed installation instructions are in the INSTALL file or by going to the PostgreSQL website http://www.postgresql.org/docs/ and going to the right version for you.

source