Un captcha, ça ne s’improvise pas !

Ou une raison supplémentaire de questionner la légitimité de la consultation pour le nom de la région Alsace Champagne-Ardenne Lorraine.

J’ai pris la décision de ne publier cette analyse qu’une fois la consultation terminée, afin que celle-ci ne puisse être utilisée pour en fausser les résultats (qui ont déjà suffisamment de raisons de ne pas être représentatifs de grand chose).

Commençant par aborder les premières incohérences de cette consultation. Pas de restriction géographique, pas de limitation IP. Comme l’ont relevé bien des internautes, une même IP peut donc voter plusieurs fois, tant que celle-ci est capable de fournir plusieurs adresses mails différentes (il semble tout de même y avoir une limitation sur les adresses mails. Ouf !). Le manque de limitation sur l’IP peut se comprendre, il faut que tous les personnes d’un foyer soit en mesure de participer. Pas de limitation géographique ou de « coupon » de vote pour les citoyens concernés, les internautes du monde entier pouvaient donc venir donner leur avis. Intrigué par ces manquements, j’ai donc décidé d’aller jeter un œil au site (Outre le fait d’être un peu concerné puisque résidant à Strasbourg).

Consultation Nom Région ACAL

Voici donc à quoi ressemblait le site. La présentation est aérée, ça semble plutôt fonctionnel. Pourtant, mon regard est attiré par le bas de page, son message « (afin de lutter contre les robots et de prouver que vous êtes une personne) » et son captcha. A première vue, le captcha semble relativement simple, pas de texte compliqué et quasi illisible, juste un calcul à effectuer. Par ailleurs, cette petite phrase invite au défi. J’aime m’interroger sur la possibilité technique d’écrire des programmes idiots arrivant à résoudre ces types de captcha. Captchas sensés démontrer l’humanité de la personne derrière son écran. Je me plonge donc dans le code HTML de la page.

Continuer la lecture de « Un captcha, ça ne s’improvise pas ! »

Échec de sauvegarde Gitlab et objets LFS

Lors d’une récente sauvegarde du contenu de mon Gitlab en vue d’une mise à jour, j’ai vu apparaître une erreur déjà rencontrée lors d’une précédente sauvegarde.

rake aborted!
Errno::ENOENT: No such file or directory @ realpath_rec - /home/git/gitlab/shared/lfs-objects

N’ayant pas à ma connaissance d’objets LFS à sauvegarder, j’ai donc ajouter un paramètre pour éviter la tentative de sauvegarde de ces objets avec SKIP=lfs. On obtient donc la commande suivante :

sudo -u git -H bundle exec rake gitlab:backup:create SKIP=lfs RAILS_ENV=production

Maj : Ce problème est résolu à partir de Gitlab 8.3.

[SQL] DROP CREATE « pattern » (MSSQL)

Simple reminder for a working drop-create pattern in SQL (Successfully used with MSSQL).

Log modification in table _chgLog first.

INSERT INTO _chgLog ([Date], [Version], [txt], [Type])
    VALUES (GETDATE(), '0.0.1', 'Update example', 0)
GO

If object exists, we drop it before doing anything (But do not drop table unless you don’t care about data).

IF OBJECTPROPERTY(object_id('example'), N'IsProcedure') = 1
    DROP PROCEDURE [dbo].[example]
GO

Other interesting parameters for function objectproperty are the following (more to be found here) :

  • IsInlineFunction
  • IsProcedure
  • IsScalarFunction
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsView

Then, we create the object.

-- =============================================
-- Author: vvision
-- Create date: 22/03/2016
-- Description: <Description>
-- =============================================

CREATE PROCEDURE [dbo].[example]
  @id INT,
AS
  SELECT *
  FROM [dbo].[example]
  WHERE id = @id
GO

Finally, we give permissions to users if needed.

GRANT EXECUTE ON [dbo].[example] TO [user] AS [dbo]
GO

 

On another subject, to alter a table, we can use:

IF COL_LENGTH('table','newField') IS NULL
BEGIN
  ALTER TABLE [dbo].[table] ADD newField VARCHAR(128) NULL
END

Citations [3] – Arthur C. Clarke

Dès la fin de l’année 2133, des observateurs lucides acquirent la conviction que le « Boom raméen » conduirait à un désastre. Ils firent de sombres prédictions sur l’effondrement imminent du système économique, au milieu des cris d’enthousiasme des multitudes euphoriques qui découvraient l’abondance. Nul ne tint compte de leurs suggestions d’équilibrer les budgets et de limiter les crédits à tous les niveaux. On ne songeait au contraire qu’à élargir les possibilités d’achat d’une population qui ne savait plus attendre, et encore moins se priver.

Rama II, Arthur C. Clarke

Modules Firefox pour 2016

J’ai effectué récemment un nettoyage de mon navigateur Firefox, vérifié les paramètres et surtout, revu les modules installés. Voici donc ma sélection en ce début d’année.

  • HTTPS-Everywhere : Redirige automatiquement les requêtes vers HTTPS pour de nombreux sites. Proposé par l’EFF.
  • uBlock Origin : Bloqueur de nuisance et de pisteurs. Son empreinte mémoire est plus légère que les autres modules du même type.
  • Ghostery : Blocage supplémentaire de script. GhostRank désactivé. Plutôt efficace et clair en ce qui concerne les éléments bloqués. Pas encore trouvé d’autres alternatives satisfaisantes.
  • KeeFox : Pour interfaçage avec Keepass. Facilite la gestion des mots de passe.
  • FlagFox : Indique la localisation du serveur au niveau de la barre d’adresse. Recherche par base de données interne d’IP avec mise à jour mensuelle de la base. Pas de requête externe à chaque site visité. Permet d’avoir une vague idée des lois qui concerne le serveur auquel on accède.
  • Dark Youtube Theme : Un thème noir pour Youtube c’est tellement plus agréable.
  • FT DeepDark : Un thème noir pour Firefox.