jeudi 26 août 2010

HackerSpaces parisiens

Les Hacker Space sont des lieux de rencontre et de partage de matériel permettant de mutualiser l'expérience en montages électronique&autres, philosophie & éthique de l'informatique et des "nouvelles technologies" et domaines adjacents.

On en trouve quelques-uns à Paris et en région parisienne :

http://www.phack.fr/

INSEE sources...

Déjà eu envie de se refaire les stats de l'INSEE à la pogne ?
Non ? moi non plus, mais on trouve quand même leurs fichiers en ligne pour exploitation éventuelle :-P


Fichier INDIVIDU, MENAGE et KISH


Il y aurait surement des utilisations intéressantes à en faire.


Pour ce qui est de leur analyse, c'est du dBase, je cite ci dessous l'article de Bodman publié ici (lien).


Base de donnée de l’INSEE
janvier 24, 2010

Un peu de Datamining aujourd’hui, quelque chose de très court, mais qui sera sans doute utile à certain.

Cela concerne la lecture de fichier dBase, car sachons le l’INSEE met à disposition un certain nombre de données au format dBase.

Le premier réflexe face à ce genre de fichier serait de l’ouvrir avec un tableur et d’en sortir directement les valeurs nécessaires. Malheureusement, deux problèmes se posent, la lenteur du programme face à des fichiers de très grande taille, et la limite des tableurs en nombre de lignes.

Pourtant, il existe une méthode bien plus rapide (et bien plus fun !), l’utilisation d’un script, pour lire ces fichiers volumineux comme on l’entend.

Pour cela j’ai choisi le langage PHP. Cela faisait longtemps que je n’avais pas joué avec et puis en plus il dispose déjà de fonctions adaptées à la lecture de fichier dbase.

Voici donc un petit script qui va extraire les catégories socioprofessionnelles (niveau 1) pour un échantillon de 130 000 valeurs :

$CODE[1] = "Agriculteurs exploitants";
$CODE[2] = "Artisans, commerçants et chefs d'entreprise";
$CODE[3] = "Cadres et professions intellectuelles supérieures";
$CODE[4] = "Professions Intermédiaires";
$CODE[5] = "Employés";
$CODE[6] = "Ouvriers";
$CODE[7] = "Retraités";
$CODE[8] = "Autres personnes sans activité professionnelle";

function percent($v,$t) {
return round((( $v / $t ) * 100),2);
}


$db = dbase_open('epcvhf10_in109604.dbf', 0);
if ($db) {
echo("lecture des données possible\n");
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
$cs = trim($row['CS']);
$occupation = trim($row['OCCUPA']);
$age = trim($row['AGE']);
if ( ($occupation == 5 ) or ( $occupation == 6 ) ) $cs = 7;
if ( $age > 14 )
if ($cs != 99 && $cs != '' )
{
$vn1 = substr($cs, 0 , 1 );
if (!isset($n1[$vn1])) $n1[$vn1] = 0;
$n1[$vn1[0]]++;
$population++;
}
}
dbase_close($db);
foreach ( $n1 as $clef => $nombre )
{
echo percent($nombre ,$population) . " : " . $CODE[$clef] . "\n";
}

Une autre fonction interessant dbase_get_header_info($db), permet de récupérer les champs disponibles dans la base.

vendredi 20 août 2010

Dummynet interfaces

The dummy modules in Linux allow you to have multiple "fake" network interfaces on your computer.

It's useful to test distributed programs locally.

Test if dummy is loaded :

lsmod | grep dummy



insmod dummy



Create a first dummy interface :

ifconfig dummy0 10.0.0.1


Create another one :

ifconfig dummy0:1 10.0.0.2


Destroy a dummy interface :

ifconfig dummyX:Y down

mardi 22 juin 2010

snippets latex beamer (by Tom P.)


\mode
% Par opposition au mode article qui permet de faire des notes de lectures à
partir d'une présentation



\usepackage{comment}
% Purpose:
% selectively in/exclude pieces of text: the user can define new
% comment versions, and each is controlled separately.
% Special comments can be defined where the user specifies the
% action that is to be taken with each comment line.



\usepackage{colortbl}
% The colortbl package:
% Add colour to LaTeX tables. Requires array and color packages.
% Process colortbl.ins to produce the package file colortbl.sty.
% Process colortbl.dtx to get the documentation (this requires
% longtable hhline and dcolumn from the standard `tools'
% distribution.)



\selectcolormodel{gray}
% Mettre les slides en nuances de gris
\usepackage{pgfpages}
% package nécessaire pour mettre plusieurs slides par pages
\pgfpagesuselayout{8 on 1}[a4paper,border shrink=5mm]
% Combien de slides par page
\pgfpageslogicalpageoptions{1}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{2}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{3}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{4}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{5}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{6}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{7}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
\pgfpageslogicalpageoptions{8}{border
code=\pgfsetlinewidth{1.5bp}\pgfusepath{stroke},corner width=4mm}
% Mettre des cadres autour des slides et un petit coin noir



\PrerenderUnicode{é}
\PrerenderUnicode{à}
\PrerenderUnicode{œ}
% Pour avoir ces caractères unicode dans les titres des slides sans refaire
une passe latex supplémentaire



\bsc
%babel propose la commande \bsc pour placer un bout de texte en petites
%capitales. Cela peut être pratique pour les acronymes, siglaisons et les noms
%propres.



% Macro de A. Kassi (alain.kessi@psi.ch)
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline
}
\makeatother
% modifie l'épaisseur d'un trait dans un tableau
%Exemple :
%\begin{tabular}{|l|r|} \hline
% premier & 1 \\ \hline
% second & 2 \\ \hlinewd{5pt}
% total & 3 \\ \hline
%\end{tabular}
%%%% fin exemple %%%%




Enjoy :)

Tom

mercredi 9 juin 2010

Aspect Programming

FROM : http://www.aspectprogramming.com/aosd


What is Aspect-Oriented Software Development?

Aspect-Oriented Software Development (AOSD), sometimes just called Aspect-Oriented Programming (AOP), is a new approach to software design that addresses modularity problems that are not handled well by other approaches, including Structured Programming and Object-Oriented Programming (OOP). AOSD complements, but doesn't replace those approaches.

mardi 25 mai 2010

Perl One-liner

Un des atouts de perl est la facilité avec laquelle il est possible d'écrire des scripts très compacts.

Un des défauts de perl est que rapidement quand le script devient un peu long.

Un bon compromis : faire des scripts très courts :-)


La page suivante présente un certain nombre d'exemple d'utilisation de perl sans passer par un script indépendant dans un fichier, et en utilisant plutôt une simple ligne ("One Liner") de code directement sur la ligne de commande :

http://sial.org/howto/perl/one-liner/

lundi 17 mai 2010

PDF merge & reduce size

Merge PDF with pdftk


pdftk 00-page1.pdf 01-page2.pdf 03-page3.pdf cat output OUT.pdf 


Reduce the size of the PDF


gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

(source : http://www.mnt-tech.fr/blog/gnulinux/comment-reduire-la-taille-dun-fichier-pdf-en-ligne-de-commande-sous-linux/ )

lundi 26 avril 2010

OpenOffice / oocalc : protect specific cells

The problem :

I've got a calc sheet for calculating some grades.
Hence, after setting all the formulas (you may want to have a look at the SUMPRODUCT(notes*percent) function ;-) ), I want to actually enter the grades I gave.

What I want to do is not to mess around with the cell containing formulas while I am entering data.

How to (un)-lock specific cells



  1. Select the cell you want to still modify.

  2. right-click: Format-Cells -> "Cell Protection" tab => uncheck "protected".

  3. Tools -> Protect Document -> sheet

  4. Uncheck "select locked cells" and check "select unlocked cells".



Now only the cells selected in step 1) should be the only ones you can select and modify !

vendredi 23 avril 2010

LaTeX et .bib (fichiers de bibliographie)

Le code LaTeX à utiliser


Dans l'entête :




% \usepackage{natbib} % pour changer l'affichage des citations
% \usepackage[fixlanguage]{babelbib} % biblio FR
% \selectbiblanguage{french} % biblio FR


Là où l'on souhaite intégrer la bibliographie



Dans le document (note que comme d'hab en LaTeX tu n'as pas besoin de
mettre l'exention du fichier, en l'occurence tu auras typiquement
"fichier.bib" à la place de "bibtexfile"


% \bibliographystyle{unsrt} % biblio style classique
% \bibliographystyle{babplain-lf} % Biblio FR
% \bibliography{bibtexfile} % Chemin vers la base de citations


Un peu de doc (entre autre) :
http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/



Logiciels pour gérer la biblio



Il y en a de nombreux dont un en java qui marche pas trop mal mais dont le nom m'échappe.

J'utilise pybliographer / pybliographic , qui a le mérite de permettre l'édition native des .bib directement.

mercredi 24 mars 2010

Around an Arduino

Jeudi dernier au salon Solution Linux (ex Linux Expo) à Paris, je suis
tombé sur le stand de H:D (Hackable Devices) [1,2] , qui visent à
promouvoir
le hardware libre.

Entre un freerunner (sous openmoko), quelques autres kits de
développement de niveau plus ou moins bas, une petite plateforme avec
un chip, une vingtaine d'entrées-sorties, et une connectique USB ont
attiré mon attention en particulier.

Il s'agissait d'Arduino. Apparemment c'est une plateforme libre à base
d'ATMega328, je cite [2] :


"Arduino Duemilanove
Duemilanove ATMega328 serie

The Arduino Duemilanove ("2009") is a microcontroller board based on
the ATmega168 or ATmega328. It has 14 digital input/output pins (of
which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz crystal
oscillator, a USB connection, a power jack, an ICSP header, and a
reset button."

En cherchant un peu plus sur le web on trouve en particulier des infos
sur comment installer les outils de développement [3].


Par contre, je cherche encore des infos sur comment réaliser les
circuits que l'on peut mettre en sortie (bon, ok, ça tape plus dans
l'électronique, mais il n'empêche). Par exemple si je veux y mettre un
moteur quelconque, une matrice de led, ou bien même, plus intéressant,
un interrupteur qui pourrait me permettre d'allumer l'alimentation
d'un disque dur externe. Ce ne sont que quelques idées qui pourraient
me permettre d'expérimenter avec cette plateforme, mais je ne sais pas
encore comment les réaliser. Toute information est donc la bienvenue.


Cherchant ce type d'informations, l'on vient de me conseiller d'aller
également voir du côté des adaptateurs USB-port parallèle, qui sont en
soit plus simple à programmer. Mais en fin de compte je trouve ça
moins marrant, et surtout ça ne règle aucunement le problème de
l'électronique à mettre derrière.


J'ai trouvé quelques projets utilisant des arduino sur hackaday [4].


Pour le prix, ça à l'air de tourner dans les 25 à 30 euros, donc assez
raisonnalble [2, 5, 6]

Références :


[1] http://hackable-devices.com/

[2]
http://hackable-devices.org/products/product/ArduinoDuemilanove-atmega328/

[3] http://www.arduino.cc/playground/Learning/Linux


[4] http://hackaday.com/page/2/?s=arduino

[5] http://microcontrollershop.com/product_info.php?products_id=2193
[6] http://www.lextronic.fr/P4133-platine-arduino-usb-board.html