vendredi 7 mars 2014

PostgreSQL : configuration de l'environnement psql

Quand il s'agit de configurer et manipuler une base de données, rien de mieux que d'utiliser le client sql en mode texte qui permet de manipuler directement les objets de la base dans tous les sens. Concernant PostgreSQL, le client psql est aussi complet qu'un client SQL*Plus pour Oracle Database par exemple.

Il s'agit de configurer correctement psql pour être plus productif. Pour cela, on stockera dans ~/.psqlrc la configuration de base qui sera chargée à chaque lancement de psql.

Voici mon fichier de configuration ~/.psqlrc que j'utilise tous les jours:

\set QUIET ON

\set PROMPT1 '%n@%M %~%R%# '
\set PAGER OFF
\set HISTFILE ~/.psql_history- :HOST - :DBNAME
\set HISTSIZE 2000
\set ECHO_HIDDEN ON
\set COMP_KEYWORD_CASE upper
\timing on
\encoding unicode
\pset null 'NULL'
\pset border 1

\set QUIET OFF

\echo 'Predefined queries:\n'
\echo '\t\t\t:settings\t-- Server Settings'
\echo '\t\t\t:dbsize\t\t-- Database Size'
\echo '\t\t\t:tablesize\t-- Tables Size'
\echo '\t\t\t:uptime\t\t-- Server uptime'

\set settings 'select name, setting,unit,context from pg_settings;'

\set dbsize 'SELECT datname, pg_size_pretty(pg_database_size(datname)) db_size FROM pg_database ORDER BY db_size;'

\set tablesize 'SELECT nspname || \'.\' || relname AS \"relation\", pg_size_pretty(pg_relation_size(C.oid)) AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN (\'pg_catalog\', \'information_schema\') ORDER BY pg_relation_size(C.oid) DESC LIMIT 40;'

\set uptime 'select now() - pg_postmaster_start_time() AS uptime;'


Faites \? sous psql pour voir quel est le sens de chaque instruction. A noter le moyen bien pratique pour enregistrer des requêtes prédéfinies dans des variables.

Sous windows, ce fichier n'est pas dans %HOME%\.psqlrc mais à %APPDATA%\postgresql\psqlrc.conf On peut aussi indiquer explicitement où se trouve le fichier .psqlrc en mettant son chemin complet dans la variable d'environnement PSQLRC.

Une autre configuration intéressante est l'instruction \x qui permet d'indiquer vouloir afficher les lignes de données en colonne plutôt qu'en ligne : pratique quand on est en présence de lignes assez longues.

samedi 21 septembre 2013

Blender : mes débuts dans le monde de la 3D

La 3D, pour un informaticien, a toujours quelque chose d'attirant en soi : produire des images virtuelle par la simple entremise de la puissance de calcul d'un ordinateur et des algorithmes de rendu de plus en plus réalistes.

Quand j'étais un gamin, je jouais avec Sculpt4D sur Amiga, et je trouvais vraiment génial de pouvoir produire des images à partir d'une modélisation d'une scène.

Dans le monde de la source ouverte, un logiciel tient la dragée haute à nombre d'autres produits commerciaux. Il s'agit de Blender. Cet outil est magnifique pour créer des modèles en trois dimensions, créer des rendus de toute beauté, et va même jusqu'à permettre de faire de l'animation et du montage vidéo, et ce, avec une qualité digne de tous les autres produits professionnels.

Entrer dans le monde de Blender n'est pas chose aisée. L'interface utilisateur est très riche, et s'organise en fenêtres qui ne se chevauchent pas. De nombreuses touches de raccourcie existent et permettent d'être productif. Blender offre en standard, la capacité d'enregistrer des "screencasts", des enregistrements vidéos de ce que vous faites dans Blender. Grâce à ça, de nombreux tutoriels vidéos existent et sont maintenant la manière privilégiée d'apprendre à utiliser Blender.


Je viens de finir un tutoriel du site suisse kopilot.ch : Faire une pile de DVD avec projection d'ombre sur fond transparent et canal alpha de l'ombrage.

 

Voici le rendu que j'ai réalisé en suivant ce tutoriel :


Blender est un monde à lui tout seul et vaut vraiment le coup qu'on s'y attache.

samedi 6 juillet 2013

Mort de Douglas Engelbart, l’inventeur de la souris d’ordinateur

"Le monde virtuel pleure Doug Engelbart, l’inventeur de la souris d’ordinateur décédé mardi à son domicile de la Silicon Valley. A l’origine, la souris était une boîte en bois avec deux roues de métal. Ce dispositif de pointage pour ordinateur a été amélioré par l’informaticien suisse Jean-Daniel Nicoud de l’École polytechnique fédérale de Lausanne (EPFL)." [...]


La première souris au monde !

CI News


The Mother of all Demos

samedi 8 juin 2013

Rich Hickey, créateur de Clojure : l'orienté objet est très surfait

Écoutons ce que Rich Hickey, créateur du langage Clojure nous dit de l'orienté objet dans un article donnant les raisons qui l'ont poussées à construire Clojure:

L'orienté objet est surfait:
  • né de la simulation : maintenant utilisé pour tout, même quand cela est inapproprié : cela est encouragé par Java/C# dans toutes les situations du à leur manque de support (idiomatic) pour n'importe quoi d'autre
  • Les objets à état mutables sont maintenant les nouveaux codes spaghetti: difficiles à comprendre, tester et à raisonner dessus, un désastre pour gérer la concurrence.
  • L'héritage n'est pas la seule manière de faire du polymorphisme,
  • "C'est mieux d'avoir 100 fonctions autour d'une seule structure de données que 10 fonctions opérant autour de 10 structures de données", Alan J. Perlis
  • Clojure modèle ses structures de données autour d'objets immutables représentés par des interfaces, et pas son propre système de classes
  • Plusieurs fonctions définies sur peu de structures de données (seq, map, vector, set)
  • Ecrivez du Java avec Java, consommez et étendez Java à partir de Clojure.

Pour un besoin de programmation concurrente, clojure a de nombreux atouts, mais combien de programmeurs sont capable de produire du lisp aujourd'hui ? Le Lisp est pourtant une très bonne école pour comprendre l'ensemble des paradigmes de programmation, comme on peut le lire dans le magnifique livre Structure and Interpretation of Computer Programs.

L'emacsien codant déjà avec un dialecte de lisp (Emacs Lisp) ira plus facilement vers clojure. Et puis, ce n'est pas un certain Gosling qui a créé une première version de Emacs, et plus tard un autre language ... appelé Java ? Le monde est petit...

mardi 4 juin 2013

Nous entrons dans une nouvelle ère dont la sécurité sera l'enjeu

Nous entrons définitivement dans une nouvelle ère car des ordinateurs quantiques sont maintenant disponibles à l'achat (pas pour tout le monde quand même, prix d'entrée : 10M$). Cela va rendre complètement obsolète toutes nos technologies de cryptage et sécurité associées que nous utilisons aujourd'hui. Bien que tout cela soit "en cours" de déploiement chez Google et à la Nasa, cela augure de nouvelles menaces et failles de sécurité si nous ne prenons pas pleinement conscience du saut technologique que représente un ordinateur quantique (suite).