Archive

Archive for the ‘Uncategorized’ Category

Why I hate Oracle DB so much? Because it’s unable to do simple things in a simple way

It’s not the first time I complain about Oracle DB doing things in a complicated way. But here is an extreme example of its stupidness:

SELECT bug_id, assigned_to, assigned_to FROM bugs ORDER BY assigned_to;

All this query does is to select the bug ID and the assignee ID twice, and display the list ordered by the assignee ID. This query works correctly in MySQL, MariaDB and PostgreSQL, but fails miserably in Oracle with this error message:

ORA-00960: ambiguous column naming in select list

It complains that we want to sort the list based on the assigned_to column, but this column is mentioned twice in the SELECT part of the query and so it doesn’t know which one to choose to sort the list. As it’s twice the same column, this doesn’t matter!! But Oracle is unable to realize this! If I write:

SELECT bug_id, assigned_to, assigned_to FROM bugs ORDER BY bugs.assigned_to;

then Oracle is happy.

I really wonder why people pay thousands of dollars for such a buggy and heavy software when MySQL/MariaDB and PostgreSQL are way better.

Catégories:Uncategorized

Mais où va le monde?

Cet article de 24 Heures décrit les pratiques inacceptables de certains recruteurs américains exigeant l’accès total au compte Facebook des demandeurs d’emploi. Alors que cela me semble être une évidente violation de la vie privée, certains experts arrivent à ne pas partager cet avis. Bientôt, les recruteurs demanderont à venir fouiller votre maison, à vérifier vos relations amicales et amoureuses (et au besoin de vous demander de changer d’amis ou de femme?), ou encore à pouvoir contrôler le contenu de vos bulletins de vote (et à les censurer si nécessaire?) et je ne sais quoi d’autre. Il serait temps que ces recruteurs (et les entreprises qui les embauchent) arrêtent de se prendre pour des dieux avec des droits sans limites. Vous êtes juste pathétiques; je vous plains.

Catégories:Uncategorized

Google+ est maintenant accessible aux moins de 18 ans

L’âge minimum pour posséder un compte sur Google+ a été abaissé par Google! Alors qu’il fallait auparavant être âgé d’au moins 18 ans, cette limite a été abaissée à 13 ans (sauf pour l’Espagne et la Corée du Sud: 14 ans, ainsi que les Pays-Bas: 16 ans). Cette limite d’âge est donc maintenant la même que pour Facebook et Twitter. Il y a fort à parier que cela va faire exploser le nombre de comptes Google+ dans les semaines à venir. Reste à savoir si cela sera suffisant pour concurrencer Facebook et ses 800 millions d’utilisateurs.

Catégories:Uncategorized

Comment mal protéger son site web? Il suffit d’inclure le nom d’utilisateur et le mot de passe dans la page elle-même!

En allant visiter le site web d’une compagnie de sapeurs-pompiers dont je faisais partie il y a plusieurs années, j’ai constaté qu’une partie du site était désormais protégée par un nom d’utilisateur et un mot de passe. Me demandant ce qu’un tel site pouvait bien avoir à cacher, j’ai décidé d’investiguer un peu.

En arrivant sur la partie protégée, j’ai constaté que la page me demandant mon nom d’utilisateur et mon mot de passe avait l’URL suivante:

lmpasswdlg.html?l='14159490828c4a1e...',p='14159496828c4a19...'

(J’ai tronqué ces deux variables pour qu’elles tiennent dans la largeur de cette page.) En regardant le code source de la page, et en particulier son code JavaScript, j’ai constaté que ces variables correspondaient respectivement au nom d’utilisateur du site et à son mot de passe, mais en version encryptée. À ce stade, je m’attendais à ce que le script prenne les données entrées par l’utilisateur, les encrypte et les compare aux valeurs ci-dessus. Dans ce cas, il n’y aurait pas eu moyen d’obtenir facilement le nom d’utilisateur et le mot de passe. Or, et c’est là que ça devient intéressant, le script fait exactement l’inverse. Il décrypte ces valeurs pour les comparer en clair aux valeurs entrées par l’utilisateur! Il ne me restait plus qu’à exécuter ce code moi-même avec les valeurs ci-dessus, et regarder les valeurs ainsi retournées:
login = ‘cdists’, password = ‘eca0665′. Wow! Et me voilà dans la partie "protégée" du site. Vous parlez d’une protection!

Donc tout ce code ne sert strictement à rien:

function HexToDec(c) {
  var alpha="aA";
  if (c>='a' && c<='f')
    return c.charCodeAt(0)-alpha.charCodeAt(0)+10;
  if (c>='A' && c<='F')
    return c.charCodeAt(0)-alpha.charCodeAt(1)+10;
  else
    return eval(c);
}

function EnDecrypStr(sSecret) {
  var sSecretTodo=sSecret;
  var sPassword="$%¢£²¼|*°«¢@%)-¾?";
  var strOut="";
  var l=sPassword.length;
  var l2=sSecretTodo.length/2;
  for (var x=1; x<=l2; x++) {
    var g=((x-1) % l);
    var iChar=sPassword.charCodeAt(g);
    var c1=HexToDec(sSecretTodo.charAt((x-1)*2));
    var c2=HexToDec(sSecretTodo.charAt((x-1)*2+1));
    var c=c1*16+c2;
    iChar=c^iChar;
    strOut=strOut+String.fromCharCode(iChar);
  }
  return strOut;
}

function HexToUnicode(str) {
  var strOut="";
  var s1=16;
  var s2=16*16;
  var s3=16*16*16;
  var l2=str.length/4;
  for (var x=1; x<=l2; x++) {
    var c1=HexToDec(str.charAt((x-1)*4));
    var c2=HexToDec(str.charAt((x-1)*4+1));
    var c3=HexToDec(str.charAt((x-1)*4+2));
    var c4=HexToDec(str.charAt((x-1)*4+3));
    var c=c1*s3+c2*s2+c3*s1+c4;
    strOut=strOut+String.fromCharCode(c);
  }
  return strOut;
}

// proviennent de l'URL ci-dessus
var l = '14159490828c4a1e809b947915191a8d0f14129693828b4f';
var p = '14159496828c4a19809b947115191e8e0f14169493828f4a1a809897';

var login = EnDecrypStr(l);
login = HexToUnicode(login);
var passwd = EnDecrypStr(p);
passwd = HexToUnicode(passwd);

if (CompareUnicodeString(my_Login, login)
    && CompareUnicodeString(my_Password, password)) {
 .... // success
}

Je ne me suis même pas donné la peine de regarder ce que pouvais bien faire la fonction CompareUnicodeString(), bien que son nom soit suffisamment explicite. :) J’avais déjà les informations dont j’avais besoin. Ou comment écrire du code compliqué pour rien et faire croire aux webmasters que leur site sera protégé….

Catégories:Uncategorized

Your PC doesn’t shutdown correctly anymore? Uninstall VirtualBox 4.1.0

Earlier this week, I upgraded VirtualBox from 4.0.12 to 4.1.0, being excited to read in the changelog that it finally supports Direct3D in Windows guests (I was hoping to see my Windows Experience Index to become higher than 1.0). Unfortunately, not only VirtualBox now crashes when asking Windows 7 to calculate the Windows Experience Index, but my PC is no longer able to shutdown. It freezes very close to shutdown, after the "halt" command is called for all processes. What I get is a kernel panic, as you can see in this screenshot.

VirtualBox 4.1.0 triggers a kernel panic on shutdown

The keyboard is totally unresponsive, and you have to reboot the PC by pressing the reboot button. When I do that, the PC first seems to reboot correctly, but suddenly decides to reboot again a few tens of seconds later, sometimes even after I’m already logged in. After the second reboot, everything goes fine again… till I try to shutdown my PC again. Hum! So I uninstalled VirtualBox 4.1.0, as this version seems broken, as reported in the VirtualBox bugtracker too.

These days, I’m pretty irritated with all these new releases which break stuff. Mageia 1 and KDE 4.6 (also here and here) come to mind. Instead of new releases with new features, I would prefer stable releases with bugfixes only.

Update: VirtualBox 4.1.2 has this problem fixed.

Catégories:Blogroll, Uncategorized

Mageia 1 est arrivée

Mageia, clone de Mandriva Linux, a atteint hier la version 1, marquant ainsi la première version stable de cette nouvelle distribution Linux. Pour l’avoir testée pendant plusieurs mois dans ma machine virtuelle durant les phases beta et RC, Mageia 1 me semble être un système d’exploitation très stable, fonctionnel et surtout convivial et rapide (par exemple, Mageia démarre bien plus rapidement que Ubuntu et Fedora, et l’écran de démarrage est bien plus convivial également). Si vous cherchez à vous échapper de Mandriva Linux 2010.1 ou 2010.2, n’hésitez pas, essayez Mageia 1!

PS: Je ne contribue en aucun cas au projet Mageia, mais je me permets de faire de la pub pour des applications/OS/initiatives qui en valent la peine. Et Mageia en fait définitivement partie. Je souhaite plein de succès à cette nouvelle et courageuse équipe. :)

Catégories:Uncategorized

Pour/contre qui sont faites les lois?

"J’ai 33 ans, je suis micromécanicien, je suis pompier volontaire et bien intégré. La population dans ma commune m’apprécie. Mon pays, la côte d’Ivoire, est au bord de la guerre civile." Verdict du tribunal administratif fédéral? Expulsion!

"Je suis dealer, je n’ai pas d’emploi, j’agresse les gens et ne suis pas du tout intégré. J’ai brûlé mes papiers d’identité et prétends avoir moins de 18 ans (donc mineur)." Résultat? Pas expulsable, car le pays d’origine ne peut être établi.

Cherchez l’erreur!! En résumé, si vous êtes malhonnête, vous ne risquez pas grand chose: pas expulsable, car le pays d’origine ne peut être identifié; pas de peine de prison ferme, car elles sont déjà pleines; pas ammendable, encore faudrait-il avoir de l’argent; à peine inquiété, car soi-disant mineur (mais bien sûr!). Mais si vous êtes honnête, vous vous passez vous-même la corde autour du coup, et attendez que l’administration donne un coup de pied dans la chaise sur laquelle vous vous trouvez. C’est ça, la défense des droits de l’homme!

Catégories:Mozilla, Uncategorized

"Exporter au format PDF" ne fonctionne plus dans OpenOffice 3.3.0 RC3 -> OOo Later!

Suite à un email d’une collègue de travail qui vient de me dire que le PDF que je lui avais envoyé était totalement illisible, je me suis empressé d’aller vérifier si les développeurs d’OpenOffice était au courant de cette régression que je qualifie de majeure (OOo 3.2.1 fonctionne bien, seul OOo 3.3.0 est affecté). Résultat: ce problème est connu depuis un long mois (issue 114901), et le bug a été marqué avec l’échéance (target milestone) "OOo Later", ce qui signifie qu’il n’est pas prévu de résoudre ce problème ni dans la version à venir de OpenOffice 3.3.0, ni dans la suivante, c’est-à-dire la 3.4.0.

Je trouve détestable de voir que de nouvelles versions puissent sortir avec des régressions pareilles. Cela veut dire que si je modifie un de mes centaines de documents .odt utilisant l’ancienne police par défaut Nimbus Roman No9 L et sauve les modifications dans un fichier PDF pour être ensuite envoyé à mes collègues, tout ce qu’ils verront sera une suite de points noirs comme dans la capture d’écran ci-dessus. Et ils espèrent vraiment concurrencer Microsoft Office, et promouvoir le logiciel libre après ça? C’est typiquement le genre de problèmes qui suffit à convaincre n’importe quel utilisateur lambda à désinstaller OpenOffice et à revenir sur Microsoft Office.

J’utilise OpenOffice depuis sa version 1.0 alpha au début des années 2000, mais là, il y a de quoi réussir à m’énerver.

Catégories:Uncategorized

Aller sur Mars, mais pour quoi faire?

Ce n’est pas la première fois que je me pose la question, mais c’est la première fois que je la pose ici: "À quoi sert-il d’envoyer des humains sur Mars?" Je viens de recevoir un email de la NASA (NASA Science News) et cette phrase me fait (de nouveau) bondir:

"[...] how much of a threat severe solar flares
pose to astronauts en route to the Moon and Mars."

J’ai beau discuter avec des scientifiques et notamment des astrophysiciens, et personne ne peut me donner un argument en faveur d’une expédition vers Mars. Il n’y a rien qu’un humain puisse faire qu’un robot ne pourrait faire (si ce n’est d’éviter de s’enliser). Le seul argument que je vois, c’est le "prestige" d’avoir posé le pied sur une autre planète. En d’autres termes, c’est purement politique, et nullement scientifique. Sans compter les milliards de $$$ que cela va coûter, ni les conséquences sur le mental des astronautes qui vont passer près de 2 ans dans l’espace, dont plusieurs mois consécutifs enfermés dans leur module spatial, une sorte de cage à lapins volante.

Catégories:Uncategorized

La politique? Une bataille de cour de récréation

Je n’ai jamais beaucoup aimé la politique, car je n’ai jamais trouvé les gens de ce milieu sincères. Je n’en connais pas personnellement exerçant à un haut niveau, et je ne me base que sur mes impressions en regardant la TV et les journaux, mais voilà, c’est comme ça que je perçois les politiciens. De même, derrière de beaux sourires et franches poignées de mains, je me demande lesquels sont vraiment sincères; probablement pas beaucoup. Bref…

Mais il y a quand même des choses qui me font bondir au niveau politique: ce sont ces STUPIDES batailles de cour d’école que nous appelons pompeusement des "relations diplomatiques". Un exemple? Les tensions entre la Suisse et la Lybie à cause de l’arrestation de Hannibal Kadhafi il y a quelques mois. Ce serait vous ou moi, tout le monde s’en ficherait, et les journaux n’en parleraient même pas, mais sous prétexte qu’il s’agit de Môsieur Kadhafi, alors là, on en fait toute une histoire… et on mélange joyeusement cet incident avec les échanges économiques entre les deux pays, on retient en "otage" des ressortissants de l’autre pays, etc… etc… bref: je ne vois pas grande différence entre ce genre d’attitude enfantine (des gamineries, pour parler franchement) et des batailles de cour de récréation. Ca fait quand même peur, lorsqu’on y pense un peu. Cela veut dire que certaines personnes n’ont guère évolué entre la puberté et l’âge adulte. La loi du Talion est loin d’être obsolète, ce qui n’est guère flatteur pour l’espèce humaine en ce 21e siècle.

N’y a-t-il pas un darwiniste ou un philosophe dans l’assistance pour m’expliquer en quoi l’espèce humaine est "supérieure" aux autres? Parce que là, franchement, je ne vois pas. Les petits hommes verts venus d’ailleurs doivent bien se marrer en nous voyant; et ils ont raison!

Catégories:Uncategorized

Upgrading to Mandriva Linux 2008.0 is a pain!

So I finally decided to upgrade my Mandriva Linux 2007.1 installation to the new 2008.0 release. I expected the upgrade to be quick and painless, but it was the opposite. Not only the upgrade failed for some unknown reason, but before it started to fail, the "remaining time" field was displaying "07:03". I first thought "7 minutes and 3 seconds", but after an hour or so, I realized it meant "7 hours and 3 minutes". Arghhh!!! So I went back watching TV (fortunately, there were two episodes of NCIS at that time). While giving a quick look at my PC, I realized a message was displayed informing me it couldn’t install cryptsetup. WTF??? I first clicked "try again", but the same error came back. Of course, clicking "pass" didn’t help as many other RPMs couldn’t be installed, probably due to the missing RPM. So I rebooted the system, tried again, but now selecting as few packages as possible, to have at least a minimal installation to work with. Again unsuccessful, but now due to another missing RPM.

So I decided to do a fresh install instead of a 7 hours-long non-working upgrade. Selecting KDE as my default environment, it started installing RPMs again, now with a "remaining time" field of 1 hour only. *Much* better! Unfortunately, it was now complaining that it couldn’t install glibc (despite it installed cryptsetup successfully this time). Again another try, but now selecting as few RPMs as possible (avoiding KDE as it failed in my previous attempt). Same result: a package couldn’t be installed.

Fortunately, I have a dual boot and I started my Windows 2000 partition to download some additional ISO images. OpenSUSE 10.3, Fedora 8 Test 3, and Mandriva Linux 2008.0 mini (instead of the DVD ISO which I burnt for nothing as all my attempts above failed). I first wanted to test them in VirtualBox to decide which one to use to reinstall Linux, but they all failed at some point. Maybe Linux doesn’t like VirtualBox, or my system is so slow trying to run both Windows 2000 and Linux at the same time that it was in fact very slow, much slower than what I could accept. So I gave Mandriva another (and ultimate) chance and burnt the mini CD ISO. The UI let me choose between KDE, GNOME and IceWM. I selected KDE, but after the installation succeeded (finally!), I realized I was seeing IceWM. The reason was that KDE is not available on the mini CD ISO. So why letting me select it??

Well, I could at least configure rpmdrake to download missing packages from the web. But as usual, it first tries to get missing RPMs from your installation disk before downloading them, which is fine. But it was unable to find it! rpmdrake was indeed looking at /media/cdrom2, but this path was invalid. So I edited the path to look at /media/dvd but it was still ignoring my change, still asking for /media/cdrom2. So I edited /etc/fstab itself, and rpmdrake was now happy and could find /media/dvd.

I’m using Linux for 8 years now, among which 4-5 years using Mandrake/Mandriva. I always had problems installing a fresh new copy, and all upgrades failed as far as I can remember. I hoped this time the upgrade would work correctly. Sadness…

Now I understand why end-users still use Windows: it just works! Maybe Windows has many cons, but I never had any problem installing it. And I have never been so happy to have Windows 2000 still installed on my PC. I hesitated a few weeks ago to use the whole HD for Linux only, and keep Windows 2000 in a virtual box. But after this irritating and frustrating experience, I decided I would never do so. Windows 2000 will remain on my PC for a long time, despite I boot my system on Linux 99.9% of the time.

I could also tell you how Mandriva 2008.0 decided to ignore my SoundBlaster 4.1 sound card, falling back to the one installed on my motherboard, how it ate my menu bar, how it slowed down my web experience by waiting 10-15 seconds before starting loading any web page (the fix is to add "install ipv6 /bin/true" to /etc/modprobe.conf, so why not doing it by default?), etc… but I think you got the point.

Catégories:Uncategorized
Suivre

Recevez les nouvelles publications par mail.