Estimation à la louche des offres d'emploi du secteur informatique, en Bretagne, par niveau d'étude 
Je suis sur un CDD non reconductible qui se termine en Février 2010, je suis donc en recherche active, je me pose la question suivante : "serait il opportun de reprendre mes études ?"

Alors j'ai codé un petit script python pour me donner des éléments de réponse ...



#!/usr/bin/python
#-*- coding: utf-8 -*-

import urllib


def GetWhatsBetween(myString, S1, S2):
return myString[myString.find(S1)+len(S1):myString.find(S2, myString.find(S1)+len(S1))]

def WipeNonNumeric(myString):
return ''.join([x for x in myString if x in '0123456789'])

class MyOpener(urllib.FancyURLopener):
#version = 'Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14'
version ='Lynx/2.8.7dev.11 libwww-FM/2.14 SSL-MM/1.4.1'

myopener = MyOpener()

Diplomes=['Bac +2', 'Bac +3', 'Bac +4', 'Bac +5', 'BTS', 'Licence', 'Master', u'Ingénieur']

for Diplome in Diplomes:
url = 'http://www.google.fr/search'
params = '?' + urllib.urlencode({'hl': 'fr', 'v': '1.0', 'q': '"offre emploi" +' + Diplome.encode('utf8') + ' +informatique +bretagne'})
page=myopener.open(url+params)
result = WipeNonNumeric(GetWhatsBetween(page.read(), "sur un total d'environ <b>", "</b> pour "))

print Diplome + ' : ' + result




Résultat (total des pages par requete) :


fred@bug ~ % python ./jobs.py
Bac +2 : 27700
Bac +3 : 20100
Bac +4 : 18500
Bac +5 : 20800
BTS : 11500
Licence : 12600
Master : 14100
Ingénieur : 134000




Les ingénieurs sont vernis, je vais déjà Valider ma licence et y réfléchir sérieusement ...

Ce qui pourrait être intéressant serait récolter ces résultats périodiquement pour faire apparaitre des tendances dans le temps, du coup je vais faire un cron :p

[ Ajouter un commentaire ]   |  [ 0 Trackbacks ]   |  Lien permanent
Ubuntu One VS myOne 
"One" est un service "offert" par Ubuntu :

    "Ubuntu One helps you store, sync and share"


Ubuntu One est très pratique lorsque l'on utilise plusieurs ordinateurs (Bureau Pro, Bureau Perso, Salon, Salle de bain :) ...) pour retrouver ses documents d'un ordinateur à l'autre.
Ubuntu One se charge de synchroniser nos documents sur tous nos ordinateurs.

MAIS, ubuntu One est gratuit seulement dans la limite de 2 GB, ensuite il faut payer un abonnement.
MAIS, le fait de déposer des documents perso, voir confidentiels, sur un serveur géré par une entreprise tierce en rebute peut être certains, dont moi.
MAIS, si vous souhaitez accéder à vos documents sur plusieurs ordinateurs de votre réseau domestique, Ubuntu One sera lent car limité par la bande passante de votre accès internet.

Bref, le service rendu par Ubuntu One m'intéresse mais je voudrais gérer mon propre serveur "One", d'où "myOne".

Je vous propose de mettre en oeuvre "myOne", un "Ubuntu One Like" mais rien que pour vous, ce sera certes un peu moins user friendly mais nous aurons la maitrise totale du dispositif. Dans la suite de ce tutoriel remplacez "fred" par votre nom d'utilisateur et "centralisateur" par l'ip ou le fqdn de votre serveur.

Comment ca marche :

Nous aurons besoin d'un serveur ssh (Debian ou Ubuntu par exemple), qui jouera le rôle de "centralisateur", toutes vos autres machines se réfèreront à ce centralisateur pour synchroniser leurs fichiers. Ce centralisateur peut être un serveur dédié chez un hébergeur ou un serveur chez vous visible sur le web via une redirection de port sur votre "xxxxBox".

Sur le centralisateur je créer un dossier "myOne" (n'importe quel nom convient) :

# mkdir /home/fred/myOne


Sur chacun de mes autres ordinateurs, je créer aussi un dossier "myOne" (pas forcément au même endroit, peu importe) :

# mkdir /home/fred/Bureau/myOne



Ce seront les deux dossiers qui seront synchronisés, je ne synchronise pas mon home entier : "/home/fred" car cela synchroniserait inutilement tout un tas de documents. Le fait de ne synchroniser qu'un sous dossier permet de choisir ce que l'on souhaite effectivement synchroniser, il suffira de copier dans myOne les documents que vous souhaitez retrouver sur vos autres machines.

La synchronisation sera toujours initiée du côté client, en effet le centralisateur est sencé toujours être allumé et joignable, ce n'est pas forcément le cas des ordinateurs clients.

Nous utiliserons l'excellent programme "unison" pour synchroniser nos dossiers.

Installation d'unison :
# sudo apt-get install unison


Utilisation d'unison, sur un ordinateur client :
# unison /home/fred/Bureau/myOne ssh://fred@centralisateur:port//home/fred/myOne


La première synchronisation sera plus longue car il faut qu'unison copie tous les documents déposés dans le dossier myOne de votre ordinateur sur votre centralisateur. Les synchronisations ultérieures iront beaucoup plus vite car seules les documents modifiés/ajoutés/supprimés seront synchronisés.

On pourrait se contenter de cela et synchroniser à la main nos dossiers quand on le jugerait nécessaire mais ce ne serait tout de même pas très pratique, et selon la loi de Murphy, on oublierait nécessairement de synchroniser lorsque cela aurait vraiment été utile.

Faisons donc en sorte que nos dossiers se synchronisent automatiquement.

Plusieurs "problèmes" à régler pour rendre l'automatisation possible :

- Ne plus avoir à taper de mot de passe SSH tout en conservant la sécurité d'accès :
Sur notre poste client :
On génère un couple de clef publique/privée sans passphrase :
# ssh-keygen


On copie la clef publique générée : id_rsa.pub, vers notre centralisateur
# scp .ssh/id_rsa.pub fred@centralisateur:/home/fred/.ssh/


On ajoute le contenu de id_rsa.pub dans l'authorized_keys du centralisateur pour qu'il puisse authentifier notre poste client :
# ssh fred@centralisateur "cat /home/fred/.ssh/id_rsa.pub >> /home/fred/.ssh/authorized_keys"



- Ne plus avoir à répondre aux questions et confirmations d'unison :
L'argument de commande "-batch" provoque le mutisme d'unison, il ne posera plus de question.

- Planifier l'exécution automatique périodique d'unison sans provoquer le chargements d'instances simultanées :
Lancer unison par cron risquerait de provoquer le chargement parallèle de plusieurs instances en cas de synchronisation longue, si on ne prenait pas de précaution particulière. Avec un petit script python nous allons vérifier qu'unison ne tourne plus avant de redemander une synchronisation.

#### Start Python Code ####

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from __future__ import with_statement
import time, subprocess

LogFilePath="/home/fred/myOne.log"
cmd_myOne = "/usr/bin/unison /home/fred/Bureau/myOne ssh://fred@centralisateur//home/fred/myOne -batch"
cmd_CheckIfRunning = "ps ax|grep /usr/bin/unison"

def TimeNow(): return time.strftime("%Y/%m/%d %H:%M:%S", time.localtime())

def AppendFile(TheFile,Content):
with open(TheFile,"a") as f:
f.write(Content)

CheckIfRunning = subprocess.Popen(cmd_CheckIfRunning, shell=True, stdout=subprocess.PIPE)

if cmd_myOne not in CheckIfRunning.communicate()[0]:
myOne = subprocess.Popen(cmd_myOne, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, errors = myOne.communicate()
if "Nothing to do: replicas have not changed since last sync." not in errors:
AppendFile(LogFilePath, "\n" + TimeNow() +' '+ str(myOne.returncode) +' '+ cmd_myOne + "\n" + str(output))
else:
AppendFile(LogFilePath, "\n" + TimeNow() + " Unison Process Already Running")


#### Stop Python Code ####

Enregistrez ce script sous /home/fred/scripts/myOne

Planifiez l'exécution automatique via cron toutes les 5 minutes :

    # crontab -e 
*/5 * * * * /usr/bin/python /home/fred/scripts/myOne


Et voilà, vous n'avez plus qu'à copier coller des documents dans le dossier myOne de vos ordinateurs, et vous les retrouverez sur tous les autres ordinateurs sur lesquels vous avez planifié la synchronisation.

Astuces :
Lancez la première synchronisation à la main pour voir les éventuels messages d'erreur.
Le fichier /home/fred/myOne.log (Variable LogFilePath) enregistre tous les transferts de fichiers.
Evitez de créer des conflits unison : Ne pas éditer en même temps deux fichiers portant le même nom sur deux clients, ils ne seront pas synchronisés en mode automatique (-batch).
Pour régler les conflits et choisir quelle version synchroniser, lancer unison à la main sans "-batch".


[ 2 Commentaires ] ( ( 4 vues ) )   |  [ 0 Trackbacks ]   |  Lien permanent  |  Lien relatif
Installer une imprimante virtuelle pour créer des PDF sous Ubuntu : cups-pdf 
Testé et approuvé sous Jaunty


sudo apt-get install cups-pdf
sudo chmod +s /usr/lib/cups/backend/cups-pdf
cd
mkdir PDF


Et voilà, il n'y a plus qu'à virtuellement imprimer pour générer des PDF


[ Ajouter un commentaire ]   |  [ 0 Trackbacks ]   |  Lien permanent
Candidature Spontanée 
Cher visiteur,

Vous qui atterrissez sur mon site via Google en cherchant vraisemblablement un renseignement technique d'ordre informatique, j'espère que vous l'avez trouvé, et si vous souhaitez me remercier chaleureusement d'avoir en quelque sorte participé à la résolution de votre problème, sachez que vous êtes peut être en mesure de le faire.

En effet, je suis à la recherche d'un nouvel emploi, idéalement, un poste d'administrateur réseau/système et/ou développeur web PHP et/ou scripting Python. Autour de Rennes, très bien rémunéré, avec tickets restaurant, voiture de fonction hybride, secrétaire, quatorzième mois et douze semaines de vacances. J'ai bien dit "idéalement".

Si vous avez connaissance d'un tel poste, ou à la limite d'un poste approchant vous pouvez, et je vous serai reconnaissant de, me contacter.

Pour plus de détails sur mes nombreuses compétences que la pudeur et le manque de temps m'interdisent de lister ici, vous pouvez consulter mon CV et/ou me contacter.

Cordialement

Fred

[ 1 Commentaire ] ( ( 13 vues ) )   |  [ 0 Trackbacks ]   |  Lien permanent
wolframalpha.com, un moteur de recherche qui comprend vos questions (ou presque) 
Par pure sérendipité je suis tombé sur wolframalpha.com, ce moteur de recherche, cherche à comprendre le sens de votre question avant d'y répondre, il a par exemple répondu très précisément à mes questions :

what is the weight of one cubic meter of air
what is the weight of one cubic meter of helium
what is the weight of one cubic meter of hydrogen
how to convert watts in horse power
what is the distance between the earth and the moon
what is the answer to life, the universe and everything

et beaucoup moins précisément à d'autres questions plus complexes mais
ca promet, quand google aura racheté la technologie ca ira loin

[ Ajouter un commentaire ] ( ( 10 vues ) )   |  [ 0 Trackbacks ]   |  Lien permanent

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | Suivant> >>