Avant de rentrer dans le vif du sujet, laissez-moi introduire le contexte. Il y déjà plusieurs années de cela, j’ai configuré ma première adresse mail FAI en tant qu’adresse bis de contact administratif pour la gestion de la connexion internet de mes parents. Cela n’a pas été plus utile que ça, à part pour suivre l’évolution du montant de la facture de l’abonnement et vérifier l’absence de problème. Je n’avais en revanche jamais pris la peine de remarquer que cette opération avait eu pour effet d’inscrire mon adresse sur la liste publicité pour les nouvelles offres de SFR en matière d’abonnement, etc. Jusqu’à présent, les mails que je recevais finissaient à la corbeille et leur fréquence n’était pas suffisamment haute pour être réellement dérangeante. Jusqu’au mardi 17 mai 2016…
Redis-server 2.8 sur Debian 7 Wheezy
La version 8.3 de Gitlab nécessite une mise à jour de redis car celle-ci se base sur redis-server en version 2.8. Problème, ce composant n’est pas disponible par défaut pour Debian Wheezy. Deux solutions possibles, mettre à jour Debian vers Debian Jessie avec tous les risques que cela comporte (init.d -> systemd, apache2.2 -> apache2.4, etc…) ou compiler le composant à partir des sources. Pour ma part, j’ai donc choisi la troisième solution : utiliser le dépôt backport wheezy qui par chance propose redis-server dans la version qui m’intéresse !
Pour commencer, on ajoute la ligne suivante dans le fichiers /etc/apt/sources.list du système :
deb http://ftp.debian.org/debian wheezy-backports main
On met à jour les dépôts :
apt-get update
On peux ensuite passer à l’installation :
apt-get -t jessie-backports install redis-server
Il sera nécessaire de faire un choix entre votre configuration locale et la configuration en provenance du paquet. Ici, pas le choix en regardant le diff entre les deux fichiers, il faut absolument prendre la nouvelle version.
Cela nécessite néanmoins de ré-appliquer la configuration de redis pour Gitlab comme décrit dans le paragraphe redis de la doc d’installation à partir de « Configure redis to use sockets« .
Pour vérifier la version de redis installée, on aura utilisé au préalable la commande :
redis-cli info | grep redis_version
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).
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