Planet Libre

Tuxicoman : Windows 10, ce n’est pas gratuit

windows

Windows 10 c’est 135€ en version Famille et 279€ pour la version Professionnelle (nécessaire pour joindre un domaine réseau ou faire du bureau à distance) sur le Windows Store officiel de Microsoft.
Seule la mise à jour depuis un ordinateur ayant un Windows 7, 8 ou 8.1 fonctionnel est gratuite. Si vous pensiez réinstaller votre ordinateur boiteux avec simplement votre clé de Windows 8.1 en main, c’est raté. Il faut obligatoirement faire tout le processus de mise à jour logicielle sur l’ordinateur et ensuite seulement Microsoft vous donnera une clé pour réinstaller Windows 10 from scratch. Pénible à souhait.
Si votre PC était livré avec Windows préinstallé, vous pouvez le mettre à jour gratuitement à Windows 10. Mais attention, ça restera une version OEM, c’est à dire non transférable à un autre ordinateur. Or je doute que vous comptiez mettre à jour un PC de 2009 (année de sortie de Windows 7) Au cas où vous l’envisagiez, sachez que selon les tests de QueChoisir: Windows 10 dégrade les performances et l’autonomie ordinateurs par rapport à Windows 8.1.

Bref, si vous changer d’ordinateur, il y a de fortes chances que Windows 10 ne soit pas plus gratuit qu’avant. Au mieux vous n’en verrez pas le prix car il sera compris dans le prix global de l’ordinateur (Sachez que vous pouvez demander à vous le faire rembourser)

office

Office 2016 c’est (Word, Excel, Powerpoint et Note) c’est 149€ pour 1 PC, et directement 279€ si vous voulez Outlook en plus.
Microsoft propose la suite Office complète en location pour 69€/an (1 ordinateur) ou 99€/an (5 ordinateurs). Comme d’habitude avec la location, c’est moins cher au début mais plus cher à la fin.

Donc pour une personne qui voudrait faire de la bureautique sur son PC fixe et son PC portable, il lui faudra débourser sur 3 ans:

  • Win 10: 2×135€ = 270€
  • Office: 2×149€ ou 3×99€ = 297€

Soit 567€ !

Mais vous pouvez aussi regarder des logiciels libres qui sont à prix …libres et sans limites de temps ou de copie.

Related Posts: J'aime !(13)Je n'aime pas !(6)

Gravatar de Tuxicoman
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.

Thuban : Configuration de dwm sous OpenBSD

Voilà un article un peu plus geek, où vous trouverez la configuration permettant de configurer le gestionnaire de fenêtres dwm sur openbsd.

Tout d'abord, la capture d'écran obligatoire :

[center][img]http://yeuxdelibad.net/Blog/img/77/dwm_openbsd.png[/img][/center]

Une fois ceci fait, voici le fichier de configuration pour dwm. C'est une configuration très épurée, qui permet entre autres les choses suivantes :

* Fermeture d'une fenêtre avec un clic-milieu sur le titre de celle-ci
* Augmentation/réduction du volume sonore en actionnant la molette sur la barre de status
* Plusieurs raccourcis clavier bien pratiques (pour mpd, firefox, lanceur dmenu...)

/* See LICENSE file for copyright and license details. */ /* appearance */ static const char *fonts[] = { "LiberationMono:size=9" }; static const char dmenufont[] = "LiberationMono:size=9"; static const char normbordercolor[] = "#08090a"; static const char normbgcolor[] = "#08090a"; static const char normfgcolor[] = "#606c78"; static const char selbordercolor[] = "#606c78"; static const char selbgcolor[] = "#606c78"; static const char selfgcolor[] = "#08090a"; static const unsigned int borderpx = 2; /* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ /* tagging */ static const char *tags[] = { "*", "w", "@", ";", "+" }; static const Rule rules[] = { /* xprop(1): * WM_CLASS(STRING) = instance, class * WM_NAME(STRING) = title */ /* class instance title tags mask isfloating monitor */ { "Crawl-tiles", NULL, NULL, 0, True, -1 }, { NULL, NULL, "Jabber", 1<<2, False, -1 }, { NULL, NULL, "Mutt", 1<<2, False, -1 }, { "Firefox", NULL, NULL, 1<<1, False, -1 }, { "surf", NULL, NULL, 1<<1, False, -1 }, { "Surf", NULL, NULL, 1<<1, False, -1 }, { "tabbed-surf", NULL, NULL, 1<<1, False, -1 }, { "tabbed", NULL, NULL, 1<<1, False, -1 }, { "Gimp", NULL, NULL, 1<<4 , False, -1 }, { "stalonetray", NULL, NULL, 0, True, -1 }, { "menu", NULL, NULL, 0, True, -1 }, }; /* layout(s) */ static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ static const int nmaster = 1; /* number of clients in master area */ static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ static const Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, }; /* key definitions */ #define MODKEY Mod1Mask #define TAGKEYS(KEY,TAG) \\ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \\ { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \\ { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \\ { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, /* helper for spawning shell commands in the pre dwm-5.0 fashion */ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; static const char *termcmd[] = { "st", NULL }; static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, { MODKEY, XK_i, incnmaster, {.i = +1 } }, { MODKEY, XK_d, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY, XK_Return, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY|ShiftMask, XK_c, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY, XK_agrave, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_agrave, tag, {.ui = ~0 } }, { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, TAGKEYS( XK_ampersand, 0) TAGKEYS( XK_eacute, 1) TAGKEYS( XK_quotedbl, 2) TAGKEYS( XK_apostrophe, 3) TAGKEYS( XK_parenleft, 4) TAGKEYS( XK_minus, 5) TAGKEYS( XK_egrave, 6) TAGKEYS( XK_underscore, 7) TAGKEYS( XK_ccedilla, 8) { MODKEY, XK_w, spawn, SHCMD("firefox") }, { MODKEY, XK_a, spawn, SHCMD("~/.dmenu/actions") }, { MODKEY, XK_s, spawn, SHCMD("sch") }, { MODKEY, XK_x, spawn, SHCMD("~/.dmenu/dmlaunch") }, { MODKEY, XK_z, spawn, SHCMD("~/.dmenu/dmpc") }, { MODKEY|ShiftMask, XK_l, spawn, SHCMD("mpc next") }, { MODKEY|ShiftMask, XK_h, spawn, SHCMD("mpc prev") }, { MODKEY|ShiftMask, XK_n, spawn, SHCMD("mpc toggle") }, { 0, 0x1008ff13, spawn, SHCMD("mixerctl outputs.master=+10") }, { 0, 0x1008ff11, spawn, SHCMD("mixerctl outputs.master=-10") }, { 0, 0x1008ff12, spawn, SHCMD("mixerctl outputs.master.mute=toggle") }, { MODKEY|ShiftMask, XK_q, quit, {0} }, }; /* button definitions */ /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ static Button buttons[] = { /* click event mask button function argument */ { ClkLtSymbol, 0, Button1, setlayout, {0} }, { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, { ClkWinTitle, 0, Button2, killclient, {0} }, { ClkWinTitle, 0, Button4, focusstack, {.i = +1 } }, { ClkWinTitle, 0, Button5, focusstack, {.i = -1 } }, { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, { ClkClientWin, MODKEY, Button1, movemouse, {0} }, { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, { ClkTagBar, 0, Button1, view, {0} }, { ClkTagBar, 0, Button3, toggleview, {0} }, { ClkTagBar, MODKEY, Button1, tag, {0} }, { ClkTagBar, MODKEY, Button3, toggletag, {0} }, { ClkStatusText, 0, Button3, spawn, SHCMD("~/.dmenu/dwm_menu/dwm_menu.sh") }, { ClkRootWin, 0, Button3, spawn, SHCMD("~/.dmenu/dwm_menu/dwm_menu.sh") }, { ClkStatusText, 0, Button4, spawn, SHCMD("mixerctl outputs.master=+10") }, { ClkStatusText, 0, Button5, spawn, SHCMD("mixerctl outputs.master=-12") }, };

Ensuite, si vous avez bien observé, vous aurez remarqué que la barre de status est un peu spéciale. Il y a à l'intérieur des barres de niveau par exemple. Le tout est en plus entièrement codé en C, c'est très léger et rapide! Je me suis nettement inspiré de dstat, que l'on trouve sur la page de dwmstatus. Parmis ses fonctionnalités :

* Informartions sur la musique jouée par le lecteur MPD
* Affichage du nombre de messages dans vos dossiers Maildir
* Utilisation CPU
* Status de la batterie
* Volume sonore
* Date et heure


Voici donc le code pour le compiler :

config.mk
NAME = dwmstatus VERSION = 1.2 # Customize below to fit your system # paths PREFIX = /usr/local MANPREFIX = ${PREFIX}/share/man X11INC = /usr/X11R6/include X11LIB = /usr/X11R6/lib # mpd + openbsd MPDFLAG = -DMPD LOCALINCLUDE = /usr/local/include LOCALLIB = /usr/local/lib # includes and libs INCS = -I. -I/usr/include -I${LOCALINCLUDE} -I${X11INC} LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -L${LOCALLIB} -lmpdclient # flags CPPFLAGS = ${MPDFLAG} -DVERSION=\\"${VERSION}\\" CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} #CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} LDFLAGS = -g ${LIBS} #LDFLAGS = -s ${LIBS} # Solaris #CFLAGS = -fast ${INCS} -DVERSION=\\"${VERSION}\\" #LDFLAGS = ${LIBS} # compiler and linker CC = cc

le dwmstatus.c
#define _BSD_SOURCE #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define D_BUF 64 char *tzparis = "Europe/Paris"; static Display *dpy; char * smprintf(char *fmt, ...) { va_list fmtargs; char *buf = NULL; va_start(fmtargs, fmt); if (vasprintf(&buf, fmt, fmtargs) == -1){ fprintf(stderr, "malloc vasprintf\\n"); exit(1); } va_end(fmtargs); return buf; } int runevery(time_t *ltime, int sec){ /* return 1 if sec elapsed since last run * else return 0 */ time_t now = time(NULL); if ( difftime(now, *ltime ) >= sec) { *ltime = now; return(1); } else return(0); } void setstatus(char *str) { XStoreName(dpy, DefaultRootWindow(dpy), str); XSync(dpy, False); } void settz(char *tzname) { setenv("TZ", tzname, 1); } char * mktimes(char *fmt, char *tzname) { char buf[129]; time_t tim; struct tm *timtm; memset(buf, 0, sizeof(buf)); settz(tzname); tim = time(NULL); timtm = localtime(&tim); if (timtm == NULL) { perror("localtime"); exit(1); } if (!strftime(buf, sizeof(buf)-1, fmt, timtm)) { fprintf(stderr, "strftime == 0\\n"); exit(1); } return smprintf(buf); } char *get_nmail(char *directory, char *label) { /* directory : Maildir path * return label : number_of_new_mails */ int n = 0; DIR* dir = NULL; struct dirent* rf = NULL; dir = opendir(directory); /* try to open directory */ if (dir == NULL) perror(""); while ((rf = readdir(dir)) != NULL) /*count number of file*/ { if (strcmp(rf->d_name, ".") != 0 && strcmp(rf->d_name, "..") != 0) n++; } closedir(dir); if (n == 0) return smprintf(""); else return smprintf("%s%d",label, n); } static const char *d_bar(unsigned char p) { const char *s[] = { "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "█" }; return s[((8 * p) / 100)]; } static char *d_cpu(void) { static long cpu[CPUSTATES]; int mib[2] = { CTL_KERN, KERN_CPTIME }, p; long c[CPUSTATES]; size_t sz = sizeof(c); if (sysctl(mib, 2, &c, &sz, NULL, 0) == -1) return smprintf("sysctl failed"); p = (c[CP_USER] - cpu[CP_USER] + c[CP_SYS] - cpu[CP_SYS] + c[CP_NICE] - cpu[CP_NICE]) / (double) (c[CP_USER] - cpu[CP_USER] + c[CP_SYS] - cpu[CP_SYS] + c[CP_NICE] - cpu[CP_NICE] + c[CP_IDLE] - cpu[CP_IDLE]) * 100; memmove(cpu, c, sizeof(cpu)); return smprintf("CPU %d%% %s", p, d_bar(p)); } static char *d_bat(int fd) { struct apm_power_info api; if (ioctl(fd, APM_IOC_GETPOWER, &api) == -1) return smprintf("ioctl failed"); return (api.ac_state == APM_AC_ON) ? smprintf("⚡ %d%% %s A/C", api.battery_life, d_bar(api.battery_life)) : smprintf("⚡ %d%% %s %u:%02u", api.battery_life, d_bar(api.battery_life), api.minutes_left / 60, api.minutes_left % 60); } static char *d_vol(int fd) { static int cls = -1; struct mixer_devinfo mdi; struct mixer_ctrl mc; int v = -1, p; for (mdi.index = 0; cls == -1; mdi.index++) { if (ioctl(fd, AUDIO_MIXER_DEVINFO, &mdi) == -1) return smprintf("ioctl failed"); if (mdi.type == AUDIO_MIXER_CLASS && !strcmp(mdi.label.name, AudioCoutputs)) cls = mdi.index; } for (mdi.index = 0; v == -1; mdi.index++) { if (ioctl(fd, AUDIO_MIXER_DEVINFO, &mdi) == -1) return smprintf("ioctl failed"); if (mdi.type == AUDIO_MIXER_VALUE && mdi.prev == AUDIO_MIXER_LAST && mdi.mixer_class == cls && !strcmp(mdi.label.name, AudioNmaster)) { mc.dev = mdi.index; if (ioctl(fd, AUDIO_MIXER_READ, &mc) == -1) return smprintf("ioctl failed"); v = mc.un.value.num_channels == 1 ? mc.un.value.level[AUDIO_MIXER_LEVEL_MONO] : (mc.un.value.level[AUDIO_MIXER_LEVEL_LEFT] > mc.un.value.level[AUDIO_MIXER_LEVEL_RIGHT] ? mc.un.value.level[AUDIO_MIXER_LEVEL_LEFT] : mc.un.value.level[AUDIO_MIXER_LEVEL_RIGHT]); } /* todo: handle mute */ } return v == -1 ? "volume failed" : (p = (v * 100) / 255, smprintf("♫ %d%% %s", p, d_bar(p))); } /* simple function to retrieve mpd status */ char * getmpdstat() { struct mpd_song * song = NULL; const char * title = NULL; const char * artist = NULL; char * retstr = NULL; int elapsed = 0, total = 0; struct mpd_connection * conn ; if (!(conn = mpd_connection_new("localhost", 0, 30000)) || mpd_connection_get_error(conn)){ return smprintf(""); } mpd_command_list_begin(conn, true); mpd_send_status(conn); mpd_send_current_song(conn); mpd_command_list_end(conn); struct mpd_status* theStatus = mpd_recv_status(conn); if ((theStatus) && (mpd_status_get_state(theStatus) == MPD_STATE_PLAY)) { mpd_response_next(conn); song = mpd_recv_song(conn); title = smprintf("%s",mpd_song_get_tag(song, MPD_TAG_TITLE, 0)); artist = smprintf("%s",mpd_song_get_tag(song, MPD_TAG_ARTIST, 0)); elapsed = mpd_status_get_elapsed_time(theStatus); total = mpd_status_get_total_time(theStatus); mpd_song_free(song); retstr = smprintf("[♪ %s - %s - %.2d:%.2d/%.2d:%.2d ♪]", artist, title, elapsed/60, elapsed%60, total/60, total%60); free((char*)title); free((char*)artist); } else retstr = smprintf(""); mpd_response_finish(conn); mpd_connection_free(conn); return retstr; } int main(void) { int a = -1, m = -1; char *status; char *tmprs = NULL; char *mail_laposte = NULL; char *mail_educ = NULL; char *mail_yt = NULL; char *mail_y = NULL; char *mail_p = NULL; char *cpu = NULL; char *bat = NULL; char *vol = NULL; char *mpd = NULL; time_t count5min = 0; time_t count60 = 0; if (!(dpy = XOpenDisplay(NULL))) { fprintf(stderr, "dwmstatus: cannot open display.\\n"); return 1; } if ((a = open("/dev/apm", O_RDONLY)) == -1 || (m = open("/dev/mixer", O_RDONLY)) == -1) err(1, "open failed"); for (;;sleep(1)) { /* checks every minutes */ if ( runevery(&count60, 60) ) { free(tmprs); free(bat); tmprs = mktimes("%d/%m/%y %H:%M", tzparis); bat = d_bat(a); } /* checks mail every 5 minutes */ if (runevery(&count5min, 300) ) { free(mail_laposte); free(mail_educ); free(mail_yt); free(mail_y); free(mail_p); mail_laposte = get_nmail("/home/thuban/Maildir/laposte/new", " LP:"); mail_educ = get_nmail("/home/thuban/Maildir/educ/new", " LP:"); mail_yt = get_nmail("/home/thuban/Maildir/ythuban/new", " LP:"); mail_y = get_nmail("/home/thuban/Maildir/y/new", " LP:"); mail_p = get_nmail("/home/thuban/Maildir/physique/new", " LP:"); } /* checks every second */ free(cpu); free(vol); free(mpd); cpu = d_cpu(); vol = d_vol(m); mpd = getmpdstat(); status = smprintf("%s [✉ :%s%s%s%s%s] [%s | %s | %s] [%s]", mpd, mail_laposte, mail_educ, mail_yt, mail_y, mail_p, cpu, bat, vol, tmprs); setstatus(status); free(status); } XCloseDisplay(dpy); return 0; }

La commande "make" vous donnera l'éxécutable dwmstatus à lancer en début de session.

Que c'est bon d'avoir un vrai environnement de travail!
— (permalink)

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Angristan : Mettre à jour Ubuntu 14.x ou 15.x vers la 16.04 LTS

ubuntu-16.04-xenial-xerus

C'est hier,  2 ans après la dernière version LTS qu'est sortie la dernière mouture d'Ubuntu : la 16.04 LTS Xenial Xerus.

Qulques nouveautés sont présentes dans cette version qui sera supporté 5 ans :

  • Noyau Linux 4.4 avec support des processeurs Intel Skylake
  • Support de ZFS
  • Python 3.5 est la version de python par défaut, Python 2 est toujours disponible
  • Support du nouveau type de paquets : Snappy
  • Unity 7.4, avec la possiblité de mettre le Dash en bas
  • Nouvelle app calendrier et nouvelle logithèque
  • Les logiciels GNOME en version 3.18
  • LibreOffice 5.1
  • Un nouveau fond d'écran ! :D

Fond d'écran Ubuntu 16.04 Xenial Xerus

 

Je vous conseille de faire des sauvegardes de vos données, et si possible d'attendre quelques jours avant de faire la mise à jour, histoire d'être sûr que votre PC va tenir le coup.

Sachez que vous pouvez mettre à jour depuis le logiciel graphique de mises à jour dans Ubuntu. Mais personnellement je préfère le terminal pour bien savoir ce que je fais :)

Mise à jour depuis Ubuntu 15.04 ou 15.10

On fait d'abord une petite mise à jour pour avoir les paquets les plus récents possibles :

sudo apt update sudo apt full-upgrade

Puis on met à jour vers Ubuntu 16.04 :

sudo do-release-upgrade

Attendez un peu, et il vous fera un résumé de paquets qui seront mis à jour. Généralement c'est plusieurs centaines de Mo.

Mise à jour depuis Ubuntu 14.04

On fait d'abord une petite mise à jour pour avoir les paquets les plus récents possibles :

sudo apt update sudo apt full-upgrade

Sous Ubuntu 14.04, il va falloir jour un tout petit peu plus pour pouvoir mettre à jour. En effet par défaut il ira chercher la dernière version non-LTS, donc il va falloir aller modifier ça :

Dans le terminal :

sudo nano /etc/update-manager/release-upgrades

Dans un éditeur de texte :

sudo gedit /etc/update-manager/release-upgrades

Et remplacez, dans la dernière ligne, normal par lts, comme ceci :

Prompt=lts

Mettre à jour Ubuntu 14.x ou 15.x vers la 16.04 LTS

 

C'est bon, on peut mettre à jour vers Ubuntu 16.04 :

sudo do-release-upgrade

Attendez un peu, et il vous fera un résumé de paquets qui seront mis à jour. Généralement c'est plusieurs centaines de paquets à mettre à jour, alors soyez patients !

 

Mettre à jour Ubuntu 14.x ou 15.x vers la 16.04 LTS

 

Une fois que la mise est terminée, vous pouvez redémarrer votre ordinateur.

 

On vérifie à nouveau que tout est bien à jour

sudo apt update sudo apt full-upgrade

On nettoie le cache, là où se trouves tous les paquets que l'on a téléchargé, ce qui doit représenter 1 ou 2Go :

sudo apt-get clean sudo apt-get autoclean sudo apt-get autoremove

Et on vérifie qu'on est bien sous Ubuntu 16.04 LTS Xenial Xerius !

lsb_release -a

Mettre à jour Ubuntu 14.x ou 15.x vers la 16.04 LTS

 

Voilà, j'espère que tout s'est bien passé pour vous :)

 

Sources :

L'article Mettre à jour Ubuntu 14.x ou 15.x vers la 16.04 LTS a été publié sur Angristan

Gravatar de Angristan
Original post of Angristan.Votez pour ce billet sur Planet Libre.

Articles similaires

Thuban : Mise à jour de dontpanic en version 1.3

Depuis le temps, je me replonge dans le code de dontpanic bien qu'il n'y ait plus grand chose à y faire en réalité :)

Il passe donc en version 1.3, avec les changements suivants :

- Correction du bug pour recherche sur tous les moteurs même avec traduction activée,
- Correction d'un bug lors du téléchargement des sous-titres,
- Le même dossier temporaire est utilisé entre deux sessions. Cela évite le surpeuplement de /tmp,
- Dontpanic affiche un petit message s'il peut être mis à jour,
- L'apparence légèrement améliorée.

Je vous invite donc à mettre à jour dontpanic en téléchargeant la dernière version.

Si vous avez ajouté mon dépôt debian, alors un simple "apt update && apt upgrade" sera suffisant.

N'hésitez pas à commenter si vous avez des suggestions à faire ;)
— (permalink)

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Nicolas Lœuillet : Un dépôt monolithique pour wallabag ?

Un dépôt monolithique, kézaco ? C'est un dépôt global, qui regroupe tous les applications de votre projet.

Par exemple, un dépôt monolithique pour wallabag, ça serait un dépôt qui recense le code source de l'application web, de la documentation, du site web, de l'appli android, de l'image Docker, etc.

Mais t'es fou ? Tout dans un seul dépôt ?

Oui. Tout.

Quelques exemples de projets qui font ça ? Google, Facebook ou plus proche de wallabag, Symfony.

Dans le projet Symfony, il y a un dépôt qui regroupe tout le code source du framework et un dépôt par composant.
Par exemple, le composant Console a son propre dépôt ici : https://github.com/symfony/Console et se trouve aussi dans le dépôt global : https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Console

Tout est synchronisé automatiquement (via un outil développé par Fabien Potencier pour remplacer git subtree, pas assez performant pour un projet comme Symfony).

L'intérêt ? La personne qui souhaite récupérer tout le projet Symfony peut récupérer le framework complet. La personne qui ne souhaite que le composant Console le peut également.

Quels intérêts pour wallabag ?

Prenons le cas de notre dépôt pour l'image Docker : https://github.com/wallabag/docker/blob/master/Dockerfile

Dans ce fichier se trouve la dernière version stable de wallabag en dur.

Dans le projet wallabag/wallabag, on a aussi des fichiers où cette version est stockée (la documentation, le README, etc.).

Si nous n'avions qu'un seul dépôt, une seule pull request serait nécessaire. Là, il en faut une par dépôt. Donc autant de revues de code nécessaires.

Certains changements (typiquement, des changements dans l'API) pourraient également impacter les applications pour smartphone par exemple. Là encore, un seul dépôt pour gérer tout ça apporterait de la flexibilité pour faire évoluer les projets.

La documentation de tous nos projets se trouverait à un seul endroit.
Il n'y aurait qu'un seul endroit pour rapporter des bugs : bien plus pratique pour les utilisateurs qui n'auraient pas à se demander si c'est dans tel ou tel dépôt.

Quelles contraintes ?

C'est là le souci : il faudrait mettre ça en place et j'ai une crainte de tout casser.

Il faudrait aussi mettre en place la synchronisation automatique entre tous les dépôts, pour éviter de devoir ça manuellement à chaque merge.

Quelques inconnues sur la mise en place, mais je compte bien me lancer.
Je vais surement ouvrir un ticket sur wallabag/wallabag pour avoir l'avis des principaux contributeurs à wallabag.

À suivre donc, car je compte avancer là-dessus dans les semaines à venir.

Gravatar de Nicolas Lœuillet
Original post of Nicolas Lœuillet.Votez pour ce billet sur Planet Libre.

Framablog : Allumons les réverbères du Libre

Dans son communiqué de presse du 07 avril 2016, la Commission des lois du Sénat français déclare approuver le projet de loi pour une République Numérique porté par la secrétaire d’État au numérique Axelle Lemaire. Néanmoins, le Sénat a tenu à renommer ce projet de loi :

La commission a adopté le projet de loi en le modifiant : sans constituer la révolution que suggérait son premier intitulé, il contient un certain nombre de dispositions utiles pour assurer une meilleure régulation de la société numérique et améliorer la protection des droits des individus. C’est pourquoi la commission a modifié le titre du projet de loi, désormais intitulé : « projet de loi pour une société numérique ».

L’argument est limpide : nul ne saurait transformer les prérogatives de la puissance publique en place. C’est à la société de se transformer (se numériser) et c’est à la République (et ses institutions) qu’il revient de réguler les usages numériques. Tel est l’ordre des choses, et il est fort compréhensible que la Commission des lois ne laisse pas passer un texte qui transformerait une République dont elle est garante de l’intégrité.

Pourtant, cette rigidité est-elle bien conforme à l’air du temps ? Cette société numérique n’est-elle pas justement en train de montrer que ces usages sont précisément ceux d’une démocratie en train de se faire, mobilisant les attentions et renouvelant les pratiques politiques y compris debout à la place de la République. Peut-être est-ce justement à cause de cela et de ce qu’il cristallise comme besoin de transparence, de démocratie et de coopération, que le logiciel libre peine tant à être compris et assimilé par les institutions.

Ce texte de Véronique Bonnet, administratrice de l’April, synthétise ces questionnements. Un peu d’espoir peut-être en usant nous-mêmes, de plus en plus, du logiciel libre pour s’émanciper enfin ?

Sympathy for the Free Software

Par Véronique Bonnet, administratrice de l’April

Indésirable, le logiciel libre (free software) ? Un amendement de la commission des lois du Sénat vient de faire disparaître, pour l’instant, avant l’examen en séance prévu fin avril, l’encouragement au logiciel libre. Certes, il s’agissait bien d’un amendement de repli, non juridiquement contraignant, que l’Assemblée avait voté comme pis-aller, vu les tirs de barrage contre la priorisation. Le simple encouragement est-il déjà tabou ? Caillou dans la chaussure ? Loup dans la bergerie ? Disons ici notre sympathie irréductible, notre attachement citoyen au logiciel libre, n’en déplaise aux frilosités qui se drapent dans des habits bien improbables.

Du diable, on dit qu’il est dans les détails.

Un détail, justement. Le projet de loi numérique a changé de nom, la semaine dernière, en cours de route. Initialement, il s’appelait « Projet de loi pour une république numérique ». Le Conseil d’État, en décembre dernier, s’était étonné du décalage entre un tel intitulé et le contenu du projet de loi.

Dans le second volet d’un article publié le 15 avril par la revue EpiNet, intitulé « Bienheureuse panne d’imprimante, encore », j’ai essayé de montrer que si on prenait au sérieux la notion de république, alors on ne pouvait pas faire l’économie d’une priorisation de l’informatique libre dans le domaine public, « dans la tâche de protéger des regards ce qui doit l’être, et celle de rendre visible et accessible ce qui doit l’être, dans une république. »

J’avais dans mon argumentaire fait état de deux axes, esquissés, mais non assumés par le texte soumis à l’examen des parlementaires. Un premier axe qui disait vouloir découvrir et laisser à découvert ce qui devait l’être, dans une république, soit les traitements algorithmiques des paramètres qui débouchent sur des décisions et influent sur les existences. Un second axe qui disait vouloir couvrir et garder couvert ce qui devait le rester dans une république, soit le contrôle des données personnelles.

La semaine dernière, le gouvernement a remplacé le terme de « république », peut être trop contraignant, par le terme de « société ». Société numérique en lieu et place de la république numérique ? En rabattre sur les exigences de fraternité, d’égalité et de liberté vers une loi a minima peu conforme aux exigences de la république, mais bien suffisante pour la société. On ne peut s’empêcher de faire le lien avec la très thatcherienne et libérale exclamation : « such a thing as society ! », dans un contexte où il était demandé à cette responsable britannique de prendre au sérieux le traitement social de la pauvreté.

Remplacer « république » par « société », est-ce donner congé à bon compte à la juste revendication d’une interopérabilité, d’une auditabilité, soit, en un mot, de choix numériques qui garantissent une dimension publique vraiment publique et une dimension privée vraiment privée, purement et simplement ? La république oblige. La société, tout autant.

À ce moment de croisée des chemins pour le Libre, puisque c’est maintenant l’ensemble des Sénateurs qui doit examiner le projet de loi, esquissons en quelques traits de quelle liberté heureuse ce combat pour la priorité au logiciel libre est fait.

En tant que libristes, nous sommes, en quelque sorte, des allumeurs de réverbères. Une variante des lanceurs d’alerte. Un peu ce que les lucioles sont aux colibris. Nous essayons de sensibiliser sur le non auditable, le non interopérable, l’obscurantisme des verrous logiciels, des chausse-trappes, des rentes de situation. Allumeur de réverbère, c’est un beau métier.

 

allumeur de réverbère dessin de saint exupéry pour le Petit Prince

Copyright © 2016 Le Petit Prince – Eh non, l’ouvrage n’est toujours pas dans le domaine public en France.

 

Celui du Petit Prince, dans l’accélération folle de la succession des jours et des nuits, réduits chacun à une minute, suivait néanmoins la consigne : éclairer quand il le fallait, éteindre quand il le fallait. Saint-Exupéry suggère de celui-là qu’il est un peu lampiste. La consigne lui a été donnée quand le jour durait un jour, et la nuit une nuit. Mais lampiste encore au sens d’autrefois : celui qui veille à l’allumage des lampes.

Ma main au feu que la régie lumière du projet de loi « pour une république numérique », puis « pour une société numérique » soit plus proche du Prince de Machiavel, régulateur et opératoire, que de la philosophie des Lumières, émancipatrice. Le pire est de faire croire que le logiciel libre peut porter atteinte aux appels d’offre, un vilain petit canard juridique, monstre mal bâti. Démon ? Seulement au sens du démon de Socrate, cette voix intérieure qui est médiation entre les situations et les concepts. Free Software, doux démon. Loin des tentations de la Pomme et autres gaffes à âmes.

reguler-internet

Faut-il, pourtant, se résoudre, abjurer ? « Eppure, si muove », aurait dit, ou en tous cas pensé, Galilée. Que l’on traduit d’ordinaire par « et pourtant, elle tourne ». Il parlait de la Terre, dans la perspective de l’héliocentrisme honni par les potentats d’alors. Aller contre l’évidence de la logique des êtres parlants d’étudier, utiliser, améliorer, redistribuer, en sécurisant leurs échanges et en ayant une visibilité sur ce qu’il veulent partager ou garder pour eux ?

Ceux qui prennent les libristes pour de joyeux lampistes — pas au sens d’autrefois —, et les vessies pour les lanternes, et les enfants du bon dieu pour des canards sauvages, feraient bien de s’aviser que le bon sens finit toujours pas prévaloir sur les mauvais prétextes.

Il y a quelque chose comme une raison dans l’histoire. Si ce n’est pas sous cette législature, tôt ou tard, le free software finira par s’imposer. Mais ce serait mieux maintenant.

Devil-Girl-300px

Devil girl by GDJ,  Public Domain

Pour ma part, c’est tout vu. Je roule en GNU/Linux. Je m’habille en Debian. Je n’ai pas encore de RoLeX pour réussir ma vie, mais je suis, j’eXisTe en LaTeX. Je priorise avec l’April. Je dégooglise avec Framasoft. Je neutralise avec LQDN. J’ai jeté aux orties mes menottes numériques. Contre les portes dérobées, je mets en garde les autres, avec d’autres. Et à toi, Free Software, je dis ma sympathie, que diable !

 

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

Articles similaires

genma : Yunohost, Autohébergement, Let's Encrypt

Installer Let's Encrypt

Pour installer Let's Encrypt sur Yunohost (et remplacer le certificat autosigné généré par défaut), j'ai suivi le tutoriel suivant How to : install letsencrypt certificates disponible en anglais et en français. Le tutoriel est bien fait, je n'ai pas de remarque particulière.

Let's Encrypt et Freebox

Comme je l'évoquais dans mon article Yunohost, Freebox OS, Let's Encrypt, la Freebox propose un accès https qui repose sur l'usage d'un certificat TLS fourni via Let's encrypt.

Le soucis est que l'on peut se retrouver dans le cas ou pour une même adresse, avec le port 80, si on a consulté cette adresse (associé au FreeboxOS), on a chargé un premier certificat Let's Encrypt. Et si on redirige ensuite le port 80 sur Yunohost, on charge un second certificat.

On a un conflit entre les deux certificats vu qu'ils pointent au final sur une même IP... On a le message d'erreur qui s'affiche.

Seule solution que je vois pour l'instant : créer différents profils dans Firefox (via la commande Firefox -p). Dans l'un des profils, je peux aller sur la partie administration de la Freebox, son certificat est associée à l'adresse Ip publique de la box. Dans l'autre profil, je vais sur l'adresse de mon cloud personnel et le certificat Let's Encrypt.

Une autre solution : désactiver l'accès à la partie administration à distance de la Freebox, passer par le réseau local (accessible à distance via le VPN fournit par la Freebox, un VPN installé sur son instance Yunohost ou via SSH...).

Let's Encrypt et Pseudonymat

Autre problématique, au moment de le création du certificat de Let'S Encrypt, on doit saisir un email. Je n'y avais pas prêté attention. Mais il y a peu de temps, j'ai reçu un mail m'indiquant que mon certificat (qui a une durée de validité de 90 jours) allait arrivé prochainement à expiration. Mon mail se retrouve donc associé à mon nom de domaine.

Dans mon cas, ce n'est pas un soucis. Mais cela veut dire qu'un organisme externe, en l'occurence ceux qui sont derrière Let's encrypt ont le lien entre un nom de domaine et un mail. A voir si c'est génant ou pas et faire attention en conséquence lors de la saisie à bien indiquer le bon mail ;-)

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Articles similaires

System Linux : Commande rpm

Un résumé de quelques options bien pratique de la commande phare de RedHat, Centos et Fedora : RPM

La commande rpm :

rpm : RPM Package Manager,

Voici les commandes de base :

Installer ou mettre à jour un paquet

rpm -Uhv *.rpm

Installer un paquet

rpm -ihv *.rpm

Désinstaller un paquet

rpm -e * (sans '.rpm')

La recherche

Rechercher si le paquet truc est installé

rpm -q truc (nom complet, sans '.rpm')

Recherche dans tous les paquets installés si gcc est présent

rpm -qa | grep gcc

Liste de tous les paquets installés

rpm -qa

Renvoie quel paquet rpm a installé un certain fichier : permet ainsi de déterminer le nom du paquet ayant installé tel programme ou telle librairie

rpm -q --whatprovides /usr/bin/ogg123

Renvoie tous les fichiers installés par un paquet

rpm -q --fileprovide vorbis-tools rpm -ql vorbis-tools

Description du paquet installé

rpm -qi paquet

Si un paquet fait sa maline et veut pas s'installer pour x ou y raison

rpm -ivh --nodeps --force nom du package

Lister les fichiers d’un paquet rpm

rpm –ql « nom du package »

Connaître le paquet d’un fichier

rpm -qf /etc/openldap/ldap.conf

Connaître le contenu d’un rpm

rpm -pql package.rpm

Afficher les changes logs

rpm -q truc --changelog

Affiche plus d'information ainsi que l'architecture d'un paquet, exemple avec libxml2

rpm --query --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH}) " libxml2

Connaitre la date d'installation d'un paquet

rpm -qa --last | grep truc

Gravatar de System Linux
Original post of System Linux.Votez pour ce billet sur Planet Libre.

Articles similaires

TheLinuxFr : Let’s Encrypt et acme.sh sous Debian avec Nginx

Maintenant que Let’s Encrypt est sorti de bêta, nous allons pouvoir commencer à jouer un peu plus sérieusement. Depuis l’annonce de la bêta privé j’utilise Let’s Encrypt, ça fait le job sans problème. J’ai commencé avec le client officiel, mais j’ai vite cherché une solution plus light, sans dépendances et simple à mettre en place. Je suis donc tombé sur acme.sh (anciennement le.sh). Je vais vous présenter ici ma configuration. Je pars d’une Debian Jessie fonctionnelle (c’est mieux) avec Nginx faisant tourner mes divers services (Owncloud, FreshRSS, Kanboard…).

Installation de acme.sh

Rien de plus simple, je vous laisse parcourir le readme du projet, en gros l’installation se résume à :

wget -O - https://get.acme.sh | sh

Il s’agit ni plus ni moins que de script en sh, ce qui est plutôt cool, pas de dépendances, une installation en quelques secondes et cerise sur le gâteau, une tâche cron est mise en place pour vérifier si un certificat expire.

Configuration de Nginx

Je vais utiliser un webroot pour l’identification et la certification auprès de Let’s Encrypt. Le fichier généré pour le challenge à donc besoin d’être accessible via HTTP. Voici un exemple de configuration de mes hôtes virtuels :

server { listen 80; listen [::]:80; server_name MON_DOMAINE; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location / { return 301 https://$server_name$request_uri; } }

Les fichiers de challenges vont être générés dans /var/www/letsencrypt, assurez-vous d’avoir créé le dossier et autorisé Nginx (www-data). On peut aussi voir que je redirige toutes les requêtes HTTP vers HTTPS pour le reste. J’applique cette configuration pour les hôtes virtuels que je veux certifier. N’oubliez pas de recharger la configuration de Nginx et on va pouvoir demander nos certificats.

Création des certificats

Nous allons maintenant demander nos certificats. Une simple commande permets cela, vous pouvez spécifier un ou plusieurs domaines :

acme.sh --issue -d mon_domaine.fr -w /var/www/letsencrypt/

Avec plusieurs domaines :

acme.sh --issue -d mon_domaine.fr -d mon_domaine2.fr -d mon_domaine3.fr -w /var/www/letsencrypt/

Patienter quelques secondes, les certificats devraient être générés.

On installe les certificats dans /etc/ssl/private :

acme.sh --installcert -d mon_domaine.fr \\ --keypath /etc/ssl/private/mon_domaine.fr-key.pem \\ --capath /etc/ssl/private/mon_domaine.fr-ca.pem \\ --fullchainpath /etc/ssl/private/mon_domaine.fr.pem \\ --reloadcmd "service nginx reload"

Vous devriez trouver un fichier de configuration dans votre $HOME/.acme.sh/mon_domaine.fr/mon_domaine.fr.conf pour modifier à volontés les variables :

Le_Domain=mon_domaine.fr Le_Alt=mon_domaine2.fr,mon_domaine3.fr Le_Webroot=/var/www/letsencrypt/ Le_Keylength=no Le_RealCertPath="" Le_RealCACertPath="/etc/ssl/private/mon_domaine.fr-ca.pem" Le_RealKeyPath="/etc/ssl/private/mon_domaine.fr-key.pem" Le_ReloadCmd="service nginx reload" Le_RealFullChainPath="/etc/ssl/private/mon_domaine.fr.pem" ... Activation du SSL dans Nginx

Il nous reste à configurer les certificats dans les hôtes virtuels Nginx :

ssl on; ssl_certificate /etc/ssl/private/mon_domaine.fr.pem; ssl_certificate_key /etc/ssl/private/mon_domaine.fr.pem;

Recharger ensuite Nginx et vous devriez avoir un beau petit certificat.

Tester la configuration

Vous pouvez relancer une certification pour tester :

acme.sh --renew -d mon_domaine.fr -d mon_domaine2.fr -d mon_domaine3.fr -w /var/www/letsencrypt/ --force

Si tous se passe pour le mieux, vous devriez obtenir de nouveau certificats et Nginx devrait redémarrer tous seul comme un grand.

Cet article Let’s Encrypt et acme.sh sous Debian avec Nginx est apparu en premier sur TheLinuxFr.

Gravatar de TheLinuxFr
Original post of TheLinuxFr.Votez pour ce billet sur Planet Libre.

Articles similaires

nIQnutn : Galerie d'images: afficher une image contenu dans un zip sur votre site

J'ai précédemment expliqué comment Afficher aléatoirement une citation sur votre site et cela marche également parfaitement avec des images.
Je propose un autre petit script, assez similaire mais qui servira à afficher des images à partir d'une archive .zip.

J'ai effectué plusieurs modifications pour aller un peu plus loin et être capable d'afficher un plus grand nombre d'images ( >1000 fichiers). L'objectif principal restait toujours de se simplifier la tâche:

  • plus besoin de lister les images que l'on souhaite afficher (comme dans le fichier random.txt).
  • on ne gère qu'un seul fichier contenant l'ensemble des images (plus simple à transférer sur le serveur et sans le polluer avec un nombre important de fichiers)
  • pas de doublon entre les images à afficher et l'archive qui peut être téléchargé

Il suffit de recopier le code PHP ci-dessous en modifiant le nom de l'archive et l'URL de la galerie.

galerie.php <?php $file="tux.zip"; // A MODIFIER >> URL du fichier zip $urlPage="galerie.php"; // A MODIFIER >> URL de la page // navigation $start= 0 ; // index de départ $end= getNbImages($file)-1 ; // index de fin $urlVar=preg_replace('/(^.*?)\\?/', '', $urlPage."?id") ; // variable à récupérer $urlGet=$urlPage."?id"; // URL pour la navigation $id = isset($_GET[$urlVar])?intval($_GET[$urlVar]):intval(mt_rand($start, $end)); // on récupère l'ID // Afficher l'image X $image=getImageX($file, $id); echo ''.$image.''; // A MODIFIER >> Mise en page de l'image // Fonction pour retourner l'image correspondant à l'ID function getImageX ($zipFile, $id) { $zip = new ZipArchive; $res = $zip->open($zipFile); if ($res === TRUE) { $src = $zip->getFromIndex($id); $result = 'Image'; return $result; } else { echo 'échec, code:' . $res; } $zip->close(); } // Fonction pour retourner le nombre d'images contenu dans l'archive function getNbImages ($zipFile) { $date_file=filemtime($zipFile); $file_cache=$zipFile.'.cache'; $date_cache=filemtime($file_cache); if ( (file_exists($file_cache)) && ($date_file <= $date_cache) ) { $nb_items_cache = file_get_contents( $file_cache ); } else { $zip = new ZipArchive; $res = $zip->open($zipFile); if ($res === TRUE) { $nb_items_cache=$zip->numFiles; } $zip->close(); file_put_contents($file_cache, $nb_items_cache); } return $nb_items_cache; } ?> <?php $previous=( $id > $start) ? " Précédent | " : "" ; echo $previous; $rand=" Aléatoire " ; echo $rand; $next=( $id != $end ) ? " | Suivant " : "" ; echo $next; ?>

Les variables à modifier:

  • $file: URL du fichier zip
  • $urlPage: URL de la page

Puis de l'envoyer sur votre serveur avec l'archive contenant vos images.
En recopiant correctement le code correctement, vous devriez afficher une galerie avec des boutons de navigation.

Le fichier .zip contenant l'ensemble des images ne doit pas comporter d'autres types de fichiers ou de dossiers.

Je n'ai pas de recul concernant les performances de ce script, donc à utiliser avec modération. Avec un fichier comportant plusieurs centaines d'images, cela ne semble pas poser de difficultés.

Ressources
2016 nIQnutn CC-BY

Gravatar de nIQnutn
Original post of nIQnutn.Votez pour ce billet sur Planet Libre.

Framablog : Notre gitlab évolue en Framagit. C’est très efficace !

Warning : cet article parle de forge logicielle qui sert à développer collaborativement du code. Il est donc un peu velu et technique, mais il fera plaisir aux plus « barbu-e-s » d’entre vous !

Préviousselaid, chez Framasoft : nous avions besoin d’une forge logicielle comme outil interne à l’asso… parce que même si nous ne développons pas (ou exceptionnellement) de logiciel libre ; les mettre en avant, les améliorer (parfois), les promouvoir et ouvrir des services au monde, ben ça demande de créer, maintenir, échanger et améliorer du code !

Nous nous étions donc installé Gitlab à la main, sur un coin de serveur, juste pour nous…  Étant les seuls utilisateurs, on s’est dit que ce ne serait pas grave s’il n’était pas toujours à jour, à traquer la dernière version… (oui : nous sommes moins exigeants sur nos outils internes que pour les services que nous ouvrons au grand public ^^).

Franchement, merci Google !

Merci, parce qu’à chaque fois que vous prenez des décisions unilatérales aux dépens de vos utilisateurs-produits, vous nous offrez l’occasion de prouver que le Libre offre des alternatives bien plus respectueuses des personnes qui vous ont confié leur vie numérique (et leur code).

Le jour où nous avons appris que Google Code fermait ses portes, nous avons donc décidé d’ouvrir les nôtres. Cela nous a aussi permis de sensibiliser au fait que, dans le mode des codeurs et développeuses, GitHub est devenu un point central et monopolistique assez inquiétant.

 « GitHub est en panne » — Hé, au boulot les gars ! — Github est en panne ! — Ah bon, continuez alors.

L’excuse n°1 des programmeurs pour se lâcher sans scrupules :
« GitHub est en panne »

— Hé, au boulot les gars ! — Github est en panne !
— Ah bon, continuez alors.

 

Forcément, l’ouverture à tous de notre git et les nouvelles fonctionnalités des nouvelles versions de Gitlab (une nouvelle version tous les 22 du mois) nous ont incités à mettre à jour plus régulièrement, ce qui prend plusieurs heures à chaque fois… et plusieurs fois par mois, car des versions correctives sont régulièrement publiées.

Améliorer le Framagit… une priorité

Ceci, ajouté à l’utilisation grandissante de notre forge qui allait bientôt poser des problèmes de taille de disques, nous a amenés à migrer (le 17 mars dernier) notre Gitlab vers une machine avec plus de disque et surtout avec une installation utilisant les paquets dits « omnibus ».

Ces paquets omnibus nous ont permis d’installer Gitlab à l’aide d’un simple apt-get install gitlab-ce plutôt que de suivre la longue procédure d’installation manuelle. Non seulement l’installation est simplifiée, mais — et c’est surtout là la plus-value que nous en attendions — mettre à jour Gitlab devient tout aussi simple avec une seule commande apt-get dist-upgrade.

Résultat : notre Gitlab suit scrupuleusement la publication des nouvelles versions, avec leur lot de nouvelles fonctionnalités !

GitPourTous

Pour fêter cela, nous avons étrenné un nouveau nom de domaine… inspiré par vous ! Avouons-le, «Git point Framasoft point orrrrrrrgueh », ça accroche un peu en bouche. De partout, nous avons entendu parler du « Framagit » : alors tant qu’à faire, autant l’appeler comme vous le faites déjà. Bien entendu, il n’est nul besoin de modifier vos URL, elles restent valides… mais la nouvelle est à votre disposition !

Et si on ajoutait de l’intégration continue ?

Derrière ce terme barbare se cache une fonctionnalité très pratique : on crée une « recette » qui sera exécutée dans une machine virtuelle à chaque push. Cela peut par exemple permettre de lancer une suite de tests pour vérifier que l’on n’a rien cassé. :-)

Pour utiliser cette fonctionnalité, il faut disposer de ce que l’on appelle un runner, c’est à dire un logiciel qui va récupérer la recette et l’exécuter. Il est possible d’installer un runner sur n’importe quel ordinateur, même votre ordinateur de bureau.

Pour ceux qui ne souhaitent pas gérer leur runner eux-mêmes, Framasoft met à disposition deux runners partagés entre tous les utilisateurs de Framagit, que vous pouvez utiliser comme bon vous semble. Notez toutefois que Gitlab indique que quiconque utilise un runner partagé peut accéder aux informations des projets utilisant ce runner : il vaut mieux monter votre propre runner pour vos projets sensibles.

De plus, en utilisant les runners partagés de Framasoft, il est possible que votre projet soit mis en file d’attente, en attendant que les recettes précédentes aient fini de s’exécuter… à vous de voir !

Pouhiou-le-moldu-du-code lisant cet article, allégorie.

Pouhiou-le-moldu-du-code lisant cet article, allégorie.

Vous voulez des pages Gitlab ? Nous aussi !

Github permet à tout un chacun d’héberger un site statique. Gitlab propose une fonctionnalité similaire mais hélas, uniquement dans sa version entreprise… Nous utilisons pour notre part la version communautaire qui est la version libre de Gitlab… donc sans les pages Gitlab.

Nous avons donc ouvert un ticket pour demander que cette fonctionnalité soit incluse dans la version communautaire. Si vous aussi vous aimeriez voir cela arriver, aidez-nous tout simplement en votant sur https://gitlab.com/gitlab-org/gitlab-ce/issues/14605.

En attendant, profitez d’une forge logicielle à jour et libre sur Framagit.org !

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

Articles similaires

Tuxicoman : Comment le FBI pourrait accéder à un appareil Android

Les journaux ont beaucoup médiatisé l’affaire du FBI voulant forcer Apple a créer un outil déverrouillant facilement les iPhone 5. Mais qu’en est-il de la sécurité des appareils Android ?

Je vois 3 cas de figure :

1

L’appareil n’a pas de partition /data chiffrée. Pas de challenge. Le FBI peut tout lire sans souci en branchant l’appareil à un port USB d’un ordinateur. C’est le cas par défaut des appareil sous Android < 6.0 (95% des appareils actifs aujourd’hui)

2

Si l’appareil a les GoogleApps installés (pour faire simple, si l’application GooglePlayStore est installée) et qu’il est connecté à Internet, le FBI a juste à demander à Google de réinitialiser le mot de passe ou d’installer en douce l’application du FBI qui leur permettrait de rentrer de contrôler le téléphone a distance avec les droits root. Le chiffrement de la partition /data est inutile contre cette attaque.

En effet, à travers les GoogleApps, Google a les droits root sur votre appareil. Et par l’application GooglePlay Services, il entretient une communication constante avec votre appareil. Ce privilège permanent de Google sur plus d’un milliard d’appareil personnel est alarmant mais peu s’en préoccupent.

Google a déjà par le passé fait usage de cette position privilégiée pour supprimer et installer des applications sur votre appareil sans votre consentement ni notification.
Avant de vous plaindre, sachez que c’est écrit dans les conditions d’usage du PlayStore (vous savez les conditions que vous passez quand vous démarrez la première fois votre appareil tout neuf et qu’il faut un compte Google pour l’utiliser….)

2.4 From time to time, Google may discover a Product on Google Play that violates the Developer Distribution Agreement or other legal agreements, laws, regulations or policies. You agree that in such an instance Google retains the right to remotely remove those applications from your Device at its sole discretion.

L’utilisateur profite également de ce super pouvoir de Google pour installer des application depuis un autre appareil en utilisant simplement l’interface web du PlayStore (vous croyiez que c’était magique?) ou remplacer les applications (mise à jour) sans notification.

Google peut réinitialiser le mot de passe de verrouillage de l’appareil. Et permet également à l’utilisateur de le faire depuis l’interface web de son compte Google.

Google peut également effacer la mémoire du téléphone à distance. Si un pirate trouve le kill switch et qu’il le lance sur le petit milliard d’appareil, on va rigoler :D

Si l’appareil est éteint, il suffit de lui mettre une carte SIM 3G sans PIN et les GoogleApps vont se connecter automatiquement aux serveurs de Google au démarrage.

Je pense qu’on rentre là dans les 99% des cas.

3

Dans les 0.001% restant de geeks n’ayant pas les GoogleApps installés et une partition chiffrée, il faudrait, sauf exploitation d’une vulnérabilité, casser le chiffrement de la partition /data.

Sur Android pré-4.4, PBKDF2 est utilisé pour dériver la clé de chiffrement à partir du mot de passe utilisateur. Le nombre d’itération étant fixé 2000. On peut retrouver facilement le mot de passe utilsateur avec des GPU :

Even when run on the GPU of a mobile computer (NVIDIA GeForce 730M), hashcat can achieve more than 20,000 PBKDF2 hashes per second, and recovering a 6 digit PIN takes less than 10 seconds. On the same hardware, a 6-letter (lowercase only) password takes about 4 hours.

Sur Android 4.4 et suivant, scrypt est utilisé. Il est plus résistant aux attaques par GPU et FPGA.

Sur Android 6, une clé de chiffrement inscrite en dur dans une puce matérielle de l’appareil peut intervenir dans la génération de la clé, ce qui complique la recherche de mot de passe depuis un autre appareil. Ceci présuppose toutefois qu’il n’y ait pas de faille dans la puce matérielle et que le fabricant n’ait pas de backdoor pour le FBI ou une copie de la clé de chiffrement… (d’où l’intérêt de la NSA d’aller fouiller chez GEMALTO pour récupérer les clés de chiffrement contenues dans les cartes SIM. Qu’en est il de Qualcomm?)

Dans ce cas, ça me parait très similaire à la technique utilisée par Apple dans ses Iphone avec iOS 9.

Note au passage :

PBKDF2 est aussi utilisé pour le chiffrement de disque sous GNU/Linux avec LUKS. Cependant le nombre d’itérations est prévu pour prendre 2 secondes sur votre machine. (1 sec si cryptsetup < 1.7)
Il y a un rapport de bug pour passer à une fonction plus resistante aux GPU ouvert depuis 2012. Le projet répond à sa manière à cette critique :

There is some discussion that a hash-function should have a « large memory » property, i.e. that it should require a lot of memory to be computed. This serves to prevent attacks using special programmable circuits, like FPGAs, and attacks using graphics cards. PBKDF2 does not need a lot of memory and is vulnerable to these attacks. However, the publication usually referred in these discussions is not very convincing in proving that the presented hash really is « large memory » (that may change, email the FAQ maintainer when it does) and it is of limited usefulness anyways. Attackers that use clusters of normal PCs will not be affected at all by a « large memory » property. For example the US Secret Service is known to use the off-hour time of all the office PCs of the Treasury for password breaking. The Treasury has about 110’000 employees. Assuming every one has an office PC, that is significant computing power, all of it with plenty of memory for computing « large memory » hashes. Bot-net operators also have all the memory they want.

Related Posts: J'aime!(2)Tu dis de la merde!(0)

Gravatar de Tuxicoman
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.

Articles similaires

genma : Yunohost - Trop d'applications ?

C'est sous ce titre un peu racoleur que je voudrais évoquer deux problèmes qui peuvent se présenter si on installe trop d'applications sur son instance Yunohost. Le catalogue d'applications disponibles sur Yunohost est riche et ne cesse de s'enrichir chaque mois et il est tentant d'installer plein d'applications, pour les tester.

Consommation mémoire et processeur

La première chose à laquelle on pense est le fait que toutes ces applications tournant plus ou moins en continue (si ce n'est pas l'application en elle-même, il y a les ressources prises par PHP, MySQL etc.) et que tout cela consomme de la mémoire, du processeur... Surtout si on est plusieurs personnes à utiliser au même moment la même instance à travers différentes appplications. Plus il y a d'applications, plus il y a de ressources consommées.

Si vous trouvez votre machine Yunohost lente, c'est peut être là une piste : il y a trop d'applications de lancer en même temps. Deux solutions s'offrent alors à vous : ajouter de la mémoire ou réduire le nombre d'applications actives.

Failles de sécurité

Multiplier les applications multiplient la surface d'attaque potentielle. Les petits (et mêmes les grands) projets sont peu ou pas audités, ne sont pas forcément codés dans les règles de l'art de la sécurité. Il faut maintenir tous ces projets et applications à jour - ce que Yunohost fait très bien, de façon graphique quand on demande à mettre à jour le système et les applications. Encore faut-il que le mainteneur du paquet de l'application pour Yunohost est prise en compte la recherche de mise à jour de l'application sur le site officiel, que le site officiel fournisse régulièrement des mises à jour et des correctifs de sécurité (c'est le cas avec SPIP par exemple. A ce sujet, voir Yunohost - Comment installer Spip).

Conclusion

Il faut penser à mettre Yunohost et les applications régulièrement à jour via l'interface d'administration. Et surtout vérifier que les dernières versions des différentes applications sont bien les dernières versions disponibles sur les sites officiels de chacune d'elles. Cela demande du temps et de l'energie, mais c'est là le prix à payer pour avoir un peu plus de sécurité et limiter les risques.

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Renault : Journée de test de Fedora 24 sur liveusb-creator

Aujourd'hui, ce mardi 19 avril, est une journée dédiée à un test sur une "nouveauté de Fedora 24, liveusb-creator. En effet, durant le cycle de développement, l'équipe d'assurance qualité dédie quelques journées autours de certains composants afin de remonter un maximum de problèmes sur le sujet.

Elle fournit en plus une liste de tests précis à effectuer. Il vous suffit de les suivre, comparer votre résultat au résultat attendu et le notifier.

Capture_du_2016-04-18_23-41-52.png

Qu'est-ce que le liveusb-creator ?

Liveusb-creator permet de créer des images USB de Fedora pour l'essayer puis l'installer. Ce programme n'est pas nouveau, mais cette fois il sera largement mis en avant par le projet pour effectuer l'installation de Fedora. En effet, la procédure actuelle est centrée autour des images ISOs pour ensuite graver le résultat sur un CD ou DVD. La procédure est complexe, en plusieurs étapes et pénible car il requiert un DVD gravable sous la main.

Ici Liveusb-creator s'occupera de tout, télécharger l'image et l'installer sur la clé USB dans une interface simple. En plus, Liveusb-creator sera également disponible sous Windows et Mac OS X.

Typiquement les tests du jour couvrent :

  • La bonne exécution depuis une Fedora 24 ;
  • La bonne exécution depuis Windows ;

La version pour Mac OS X n'est aps encore prête pour le moment.

Comment y participer ?

Vous pouvez vous rendre sur la page des tests pour lister les tests disponibles et rapporter vos résultats. La page wiki récapitule les modalités de la journée.

En cas de bogue, il est nécessaire de le rapporter sur le BugZilla. Si vous ne savez pas faire, n'hésitez pas à consulter la documentation correspondante.

De plus, si une journée est dédiée à ces tests, il reste possible de les effectuer quelques jours plus tard sans problème ! Les résultats seront globalement d'actualité.

Gravatar de Renault
Original post of Renault.Votez pour ce billet sur Planet Libre.

Articles similaires

Raphaël Hertzog : Debian 8 Jessie publié chez Eyrolles

Ca y est, une nouvelle édition de mon Cahier de l’Admin Debian vient de paraître aux éditions Eyrolles… couvrant cette fois-ci Debian 8 Jessie et quittant la collection « Cahier de l’Admin » pour intégrer la « Collection Blanche » des livres de référence.

Couverture Debian 8 Jessie

Le livre est disponible chez tous les bons libraires et sa version électronique est toujours disponible gratuitement sur le site officiel du livre. Rappelons que le livre est publié sous licence libre (au choix CC-BY-SA 3.0 ou GPL 2+) et qu’il est co-écrit par deux développeurs Debian (moi même et Roland Mas).

Aucun commentaire pour le moment | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

Gravatar de Raphaël Hertzog
Original post of Raphaël Hertzog.Votez pour ce billet sur Planet Libre.

Articles similaires

Raphaël Hertzog : Mes activités libres en février et mars 2016

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

J’ai fait l’impasse sur le rapport mensuel de mes activités du mois de février, celui-ci couvrira donc les mois de février et mars. Pour ne pas faire trop long, je vais tâcher de ne lister que les points les plus importants :-).

Cahiers de l’Admin Debian

J’ai travaillé avec Ryuunosuke Ayanokouzi à la préparation d’une version papier de la traduction japonaise de mon livre. Grâce aux efforts de chacun, il est maintenant disponible. Lulu a malheureusement décliné sa prise en charge dans le programme « distribution »; il ne sera donc pas disponible dans les librairies « habituelles » (telles qu’Amazon). La raison étant qu’ils ne supportent pas les ensembles de caractères non-latin dans les métadonnées.

J’ai essayé de feinter le système en entrant la description en anglais (tout en expliquant que le livre était écrit en japonais), mais ils l’ont quand même refusé, arguant que le titre en anglais pouvait induire les gens en erreur. lulu.com est donc la seule option pour se procurer le livre. Les frais de ports restent heureusement raisonnables, en choisissant l’option la plus économique.

A la suite de quoi j’ai enjoint les traducteurs espagnols, brésiliens, italiens et portugais à finir leurs traductions, afin que nous puissions publier des versions papier pour ces langues également. Ils étaient déjà proches du but, toutes les chaînes de caractères étant traduites. Manquaient principalement la localisation des captures d’écran et quelques contenus des première et quatrième de couverture. On y est presque maintenant, j’espère que cela sera fini le mois prochain.

Distro Tracker

Début févier j’ai modifié la configuration, de sorte que les exceptions générées par les emails entrants et les tâches de routine soient maintenant envoyées par email. Elles étaient auparavant simplement enregistrées, mais sans que je prenne le temps de les analyser. Cela a rapidement mis en lumière plusieurs problèmes, que j’ai corrigés au fur et à mesure de leurs apparitions. Par exemple, la gestion des rebonds était défaillante lorsque la casse n’était pas respectée, et il est apparu que certains emails nous revenaient après avoir été passés en minuscule. Le code de contrôle des emails entrants était également défaillant lorsque le champ « References » utilisait plus d’une ligne.

Cela a également fait apparaître tout un ensemble de problèmes liés à la base de données stockant deux fois le même email avec des casses différentes. J’ai du effectuer un nettoyage de la base pour rassembler toutes les entrées en doublon derrière un seul email.

Plus tard les fichiers Source expérimentaux ont changé, ce qui m’a amené à modifier le code pour gérer la suppression du champ « Files » (en me basant à la place sur Checksums-* pour trouver les divers fichiers liés à l’entrée concernée).

J’ai également corrigé le formulaire de connexion, afin qu’il ne génère pas d’exception lorsque l’utilisateur soumet un formulaire vide.

De plus, j’ai décidé de ne plus supporter Django 1.7 dans distro tracker, car Django 1.8 est la version long-terme supportée. J’ai demandé aux administrateurs système Debian de mettre à jour le paquet sur tracker.debian.org avec la version disponible dans jessie-backports. Cela m’a permis de me débarrasser des avertissements qui étaient déclenchés par le code Django 1.7.

Un de ces avertissements était généré par django-jsonfield, et je n’ai pas pu le corriger immédiatement. J’ai préparé à la place une demande de pull que j’ai soumise à l’auteur amont.

Dernière chose : j’ai modifié la feuille CSS pour densifier la mise en page de la page présentant le paquet. C’était l’une des évolutions les plus demandées par les personnes préférant encore packages.qa.debian.org à tracker.debian.org.

Kali et la nouvelle équipe pkg-security

Parmi les différentes tâches effectuées pour Kali, je corrige les bogues critiques pour la publication affectant les paquets Debian que nous utilisons dans Kali. Mais dans la plupart des cas, je suis confronté à des paquets dont les mainteneurs sont aux abonnés absents (MIA, missing in action). Jusqu’à présent, nous n’effectuions que des uploads en tant que non-mainteneur (NMU, non-maintainer upload), mais je souhaite pouvoir maintenir ces paquets de manière plus efficace. C’est pourquoi nous avons créé l’équipe pkg-security . Nous ne sommes que deux à l’heure actuelle, et n’avons aucune documentation disponible. Mais vous êtes les bienvenus si vous souhaitez participer, tout particulièrement si vous maintenez un paquet utilisé dans le domaine de la sécurité.

Travaux liés à l’architecture arm64 Les trois premiers paquets que nous avons pris en charge (ssldump, sucrack, xprobe) ne disposaient pas de binaires compilés pour arm64. Nous venons juste de lancer notre portage Kali sur arm64, et nous avons donc corrigé cela pour cette architecture. Dans la mesure où ces paquets n’étaient plus maintenus correctement, la correction s’est résumée à l’utilisation de dh_autoreconf afin d’obtenir des fichiers config.{sub,guess} à jour.

Quelques paquets sont encore manquants sur arm64 : vboot-utils (que nous récupèrerons très certainement bientôt, puisqu’il est proposé à l’adoption), ruby-libv8 et ruby-therubyracer, ntopng (nous devons attendre le nouveau luajit, qui n’est présent que dans experimental pour l’instant). Nous avons également constaté que dh-make-golang n’était pas disponible pour arm64 et, après quelques discussions sur #debian-buildd, j’ai créé deux rapports de bogue : le n°819472 concernant dh-make-golang et le n°819473 concernant dh-golang.

Corrections de bogues critiques pour la publication De multiples bogues critiques pour la publication affectaient hdparm, et les responsables de la publication ont essayé de le retirer de testing. Ce qui a provoqué le retrait de nombreux paquets utilisés par Kali et ses utilisateurs. J’ai donc analysé la situation dans laquelle se trouvait ce paquet, convaincu les mainteneurs actuels de le déclarer orphelin, ai lancé un appel à de nouveaux mainteneurs sur debian-devel, passé en revue des mises à jours préparées par les volontaires et parrainé leurs travaux. hdparm est maintenant de nouveau exempt de bogues critiques, et au niveau de la dernière version amont. Nous avons également mis à jour jsonpickle vers la version 0.9.3-1 pour corriger le bogue critique n°812114 (que j’avais en premier lieu rapporté à l’auteur).

Support de préréglages Systemd dans init-system-helpers J’ai essayé de trouver quelqu’un pour implémenter (moyennant rémunération) la fonctionnalité de préréglages système que j’avais demandée dans le n°772555, sans y parvenir. Andreas Henriksson a eu l’amabilité de s’y essayer et d’envoyer un premier patch. Je l’ai essayé et trouvé quelques erreurs. Je l’ai donc amélioré et continué à le simplifier… J’ai soumis une mise à jour du patch et fais signe à Martin Pitt. Il m’a renvoyé vers les erreurs que mon patch créait dans la suite de tests DEP-8, que j’ai rapidement corrigés après coup. Ce patch est utilisé dans Kali et nous permet de désactiver les services réseaux par défaut. Je souhaiterais le voir intégrer dans Debian, de sorte que tout-un-chacun puisse configurer de tels préréglages systemd, et qu’ils soient respectés au moment de l’installation.

Rapports de bogues divers J’ai créé le rapport n°813801 pour demander une nouvelle version amont de kismet. De même que pour masscan dans le n°816644 et wkhtmltopdf dans le n°816714. Nous avons empaqueté (avant Debian) une nouvelle version amont de ruby-msgpack, et nous sommes aperçus que la compilation échouait pour armel/armhf. En conséquence de quoi nous avons créé deux tickets amont (avec une proposition de correction). Dans le n°814805, nous avons demandé au mainteneur de pyscard de réintégrer python-pyscard. Seule la version Python3 avait été conservée, la version python2 ayant été abandonnée. C’est pourtant cette dernière que nous utilisons dans Kali.

Et ce n’est pas fini : j’ai créé les rapports n°816553 (erreur de segmentation) et n°816554 concernant cdebootstrap. J’ai demandé que dh-python voit son comportement amélioré, après avoir été induit en erreur par le résultat de « dh –with python3 », qui n’avait pas fait ce que j’attendais (cf. le n°818175). J’ai également rapporté le n°818907 concernant live-build, qui ne gère pas les paquets dont le nom comporte une majuscule (ce qui est effectivement contraire à la règle, mais que dpkg supporte toutefois).

Empaquetages divers

J’ai poussé Django 1.9.2 vers unstable et 1.8.9 vers jessie-backports. J’ai fourni les informations supplémentaires qui m’avaient été demandées par Julien Cristau dans le rapport de bogue n°807654 mais, malgré cela, cette version a été ignorée pour la deuxième mise à jour de Jessie consécutive. Elle est maintenant obsolète jusqu’à ce que j’incorpore les correctifs de sécurité qui ont été publiés entretemps, mais je ne suis pas sûr de le faire…le manque de coopération dont fait preuve l’équipe responsable de la publication pour ce type de requête est décourageant.

J’ai parrainé plusieurs uploads de dolibarr (concernant des mises à jour de sécurité notablement) et tcpdf (correction d’un bogue critique pour la publication).

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in February and March 2016 contribuée par Weierstrass01.

Aucun commentaire pour le moment | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

Gravatar de Raphaël Hertzog
Original post of Raphaël Hertzog.Votez pour ce billet sur Planet Libre.

Articles similaires

Monitoring-FR : Ne dites plus « ELK » mais « The Elastic Stack »

Il y a quelques temps déjà, nous vous avions présenté ce qu’on appelle « la pile ELK », dans un article dont le titre est « ELK : Trio de charme ElasticSearch, Logstash & Kibana ». Aujourd’hui, cette pile ELK n’existe plus! Elle a évolué pour devenir « Elastic Stack ». Analysons ce changement au travers des dernières nouveautés annoncées par les développeurs d’Elastic Stack.

Petits rappels

ELK signifie ElasticSearch, Logstash et Kibana. Il s’agit de coupler les 3 logiciels pour obtenir une solution d’analyse de log performante et complète. Les outils sont:

  • ElasticSearch : moteur de stockage et d’indexation de documents et moteur de requête/d’analyse de ceux-ci
  • Logstash : analyse, filtrage et découpage des logs pour les transformer en documents, parfaitement formatés notamment pour ElasticSearch
  • Kibana : dashboard interactif et paramétrable permettant de visualiser les données stockées dans ElasticSearch

Ces outils libres sont développés par la même structure, la société Elastic, qui encadre le développement communautaire et propose des services complémentaires (support, formation, intégration et hébergement cloud).

« ELK », jusqu’à il y a peu, n’avait un sens qu’uniquement parce que ces outils s’associent parfaitement et l’on parlait de « pile ELK » par commodité : en réalité, il n’y avait pas de « produit ELK ».

Un(?) nouveau venu

Pour répondre à de nouveaux besoins, un (un seul?) nouvel outil développé par Elastic est apparu : Beats. Beats regroupe en fait plusieurs outils différents :

  • PacketBeat : moniteur réseau
  • TopBeat : moniteur des « tops » (les processus ayant consommé le plus de mémoire vive, de CPU, …)
  • FileBeat : moniteur temps-réel des fichiers
  • WinlogBeat : moniteur temps-réel des eventlog Windows
  • LibBeat : une bibliothèque de fonctions (lib en anglais) spécialisée pour Beats

Les outils se marient parfaitement avec « la pile ELK » : les données collectées par Beats sont stockées dans ElasticSearch, peuvent être enrichies par LogStash et sont visualisées par Kibana. Ils méritent d’être liés à « la pile ELK ».

Un renommage d’abord pragmatique…

Un problème apparaît : ELK est déjà trop connoté et peu pensent à Beats lorsqu’ils parlent de « ELK » ou de « pile ELK ». Beats pourrait pâtir de ce point. Quelques questions se posent :

  • comment intégrer le B de Beats dans ELK? Doit-on parler de BELK? Il n’est pas sûr que ce point est joué mais en français, cela sonne plutôt comme quelque chose de négatif (BELK? BEULK? beurk!). Sinon, on pourrait utiliser aussi ELKB… Un peu long non?
  • comment intégrer les futurs produits? Elastic devra-t-elle trouver une lettre s’intégrant parfaitement avec ELKB ou BELK avant de trouver un nom commençant par cette lettre et représentant l’outil? Le département Marketing va avoir du boulot!

Non, il fallait trouver autre chose. Un nouveau nom pouvant intégrer tous les outils actuels et les prochains aussi. Et le nom de « The Elastic Stack » fut choisi.

… mais d’un véritable intérêt stratégique

« The Elastic Stack » sonne plutôt bien et à l’avantage de rappeler à la fois la base (ElasticSearch) mais aussi l’entreprise (Elastic) et indique qu’il s’agit d’une composition d’outils (le terme Stack). Le nom décrit parfaitement le produit tout en ouvrant la possibilité d’intégrer de futurs produits à cette stack.

Un autre intérêt stratégique est lié à ce changement de nom. Lorsqu’on compose des outils pour en faire une solution complète, un problème apparaît : la gestion des numéros de version et des incompatibilités entre les composants de cette sollution. Aujourd’hui, si l’on prend la « pile ELKB/BELK », nous avons :

  • ElasticSearch 2.3.x
  • Logstash 2.3.x
  • Kibana 4.5.x
  • Beats 1.2.x composé de :
    • Winlogbeat 1.2.x
    • Filebeat 1.2.x
    • Topbeat 1.2.x
    • Packetbeat 1.2.x
    • LibBeats 1.2.x

Comment s’assurer que tous les produits sont compatibles entre-eux? D’un point de vue technique, c’est compliqué : il faut gérer une matrice de compatibilité qui doit être fournie par l’éditeur. L’éditeur doit faire des tests en faisant varier les versions de chaque composant. Les mises à jour doivent être bien documentées pour éviter qu’un utilisateur perde des données. La matrice de compatibilité doit être claire et compréhensible, sans erreur d’interprétation possible.

D’un point de vue marketing, c’est compliqué aussi! Toute la communication doit aussi être mise en œuvre pour que les utilisateurs et les clients suivent (correctement!) la matrice de compatibilité. Lorsqu’un client ou un utilisateur mettra à jour un composant qui sera incompatible avec tous les autres, c’est l’image des développeurs et de l’entreprise qui va en pâtir par les retours sur les forums utilisateurs, les articles de blog négatifs, les présentations lors des événements communautaires (salons, forums) et les bugs ouverts. Et ces retours négatifs risquent d’être très nombreux : les outils sont jeunes et évoluent très vite et le succès est grandissant.

D’où l’idée d’Elastic de coordonner les numéros de version : désormais il y aura un produit « The Elastic Stack » dans une version donnée et intégrant tous les outils, chaque outil ayant la même version majeure. La première version de « The Elastic Stack » sera la prochaine version, la version 5.0.0 et intégrera tous les produits dans la version 5.0.0. Ce qui sera plus simple pour tout le monde : clients, utilisateurs mais aussi développeurs et ingénieurs support d’Elastic!

Refonte graphique

Pour communiquer plus efficacement sur « The Elastic stack », la charte graphique des outils a été refondue lentement. Dorénavant, il y a une unicité graphique entre les outils concernant les logos :

 the elastic stack

Auparavant, les logos pouvaient être très différents :

 ELK

Première version disponible

La première version alpha de « The Elastic Stack » est disponible en version 5.0.0 alpha 1. Bienvenu à « The Elastic Stack » et merci à « la pile ELK » pour les services rendus.

Gravatar de Monitoring-FR
Original post of Monitoring-FR.Votez pour ce billet sur Planet Libre.

Articles similaires

Thuban : Installer un nouveau logiciel sur OpenBSD

OpenBSD dispose de nombreux paquets, tous vérifiés et donc sécurisés.

Pour installer un paquet, on doit utiliser la commande "pkg_add". Par exemple, pour installer firefox :

# pkg_add ftp://ftp.fr.openbsd.org/pub/OpenBSD/5.9/packages/amd64/firefox

Avouez que ce n'est pas pratique de taper tout ça. On peut se simplifier la vie une bonne fois pour toute. Dans le fichier ~/.profile, ajoutez la ligne suivante :

export PKG_PATH=ftp://your.ftp.mirror/pub/OpenBSD/5.9/packages/`machine -a`/

Ou alors, on peut mettre la ligne suivante dans le fichier /etc/pkg.conf (merci fred):

installpath = http://ftp.fr.openbsd.org/pub/OpenBSD/%v/packages/%a

Maintenant, il suffit de lancer :

# pkg_add firefox

Et c'est tout, il saura trouver le paquet tout seul

Chercher et trouver un paquet
Vous pouvez consulter dans un navigateur la liste des paquets : http://ftp.fr.openbsd.org/pub/OpenBSD/5.9/packages/amd64/ .

Cependant, ce n'est pas très pratique. Je vous propose alors le script pkg_sch, qui va récupérer une fois pour toute la liste des paquets (mise à jour régulièrement). Il s'utilise ainsi :

pkg_sch paquet à trouver

#!/bin/sh #Search packages for openBSD HOSTNAME="ftp.openbsd.org" LOCATION="pub/OpenBSD/5.8/packages/amd64" PKGLIST=~/.pkg_list update_list() { echo "update package list" ftp -n $HOSTNAME > $PKGLIST << EOF user anonymous " " cd $LOCATION nlist bye EOF sed -i "s/.tgz//g" $PKGLIST } # update if necessary if [ ! -e $PKGLIST ]; then update_list elif [ $(($(date +%s) - $(stat --format=%Z ~/.pkg_list))) -gt 604800 ]; then update_list fi egrep "$@" $PKGLIST

Mon programme préféré n'est pas empaqueté
L'équipe d'OpenBSD n'a peut-être pas eu le temps d'empaqueter et vérifier la fiabilité de ce logiciel. Cela ne vous empêchera pas de l'installer, grâce aux système des ports. Il s'agit en réalité d'instructions simples qu'un programme va lire pour compiler et installer votre programme favori.

Si un port est en réalité déjà empaqueté, vous pouvez faire en sorte de le sélectionner directement en ajoutant la ligne suivante au fichier /etc/mk.conf :
FETCH_PACKAGES=yes

Pour récupérer la liste de ports, il faut lancer une fois pour toute les commande suivantes :

$ cd /tmp $ ftp http://ftp.openbsd.org/pub/OpenBSD/$(uname -r)/ports.tar.gz $ ftp http://ftp.openbsd.org/pub/OpenBSD/$(uname -r)/SHA256.sig $ signify -Cp /etc/signify/openbsd-$(uname -r | cut -c 1,3)-base.pub -x SHA256.sig ports.tar.gz # cd /usr # tar xzf /tmp/ports.tar.gz

Pour chercher un port, on se déplace dans /usr/ports, puis on cherche le dossier du port souhaité. On peut utiliser "make search" ainsi :

$ cd /usr/ports $ make search key=rsnapshot

Une fois le port trouvé, déplacez-vous dans son dossier puis lancez "make install".


Référence
— (permalink)

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #15

Pour la 15ème semaine de 2016, voici 5 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Planet Libre : Brèves du Planet Libre - lundi 18, avril 2016

Linus Torvalds : « Le desktop n’a pas été vraiment conquis » - Next INpact Linux distributions GNOME KDE Xfce Mate Cinnamon

antistress : "Cest un sujet récurrent : quand Linux lancera-t-il vraiment une invasion sur les machines de bureau ? Beaucoup ont l’impression que l’ensemble du projet – qui n’était au départ qu’une création de Linus Torvalds pour ses propres besoins – n’a jamais dépassé le succès d’estime puisqu’on ne le voit presque « nulle part ». Tout dépend en fait où on regarde, et surtout ce que l’on appelle Linux."

Initiation GIMP : la retouche photo - Formation logiciel libre GIMP logiciel tutoriel

antistress : Un tutoriel pour GIMP sous licence libre.

Gravatar de Planet Libre
Original post of Planet Libre.Votez pour ce billet sur Planet Libre.

Articles similaires

Pages