Commit a177466247245605732478a9678283f31f49e0ad

Authored by Geoffrey PREUD'HOMME
1 parent 4ab50938

Rajout des antiquités

_crs/2015-04-15-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +---
  2 +author: "Geoffrey Preud'homme"
  3 +tags: ci
  4 +date: 2015-04-15 12:53:09+02:00
  5 +---
  6 +
  7 +À l'ordre du jour :
  8 +
  9 +* Présentation de ce superbe site
  10 +* Paperasserie
  11 +* Vote du logo à utiliser (Human evolution ou Fractales)
  12 +* Reflexions sur la vidéo de présentation et des dates de tournage
  13 +* Retour chaleureux d'Erwan
_crs/2015-04-22-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +---
  2 +author: "Geoffrey Preud'homme"
  3 +tags: ci
  4 +date: 2015-04-22 12:50:52+02:00
  5 +---
  6 +
  7 +* Présentation nouveau logo et de l'avancement du site
  8 +* Réflexion sur le sujet de la vidéo de présentation
_crs/2015-05-13-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +---
  2 +title: Absence de réunion
  3 +author: "Geoffrey Preud'homme"
  4 +tags: ci
  5 +date: 2015-05-13 10:52:30+02:00
  6 +---
  7 +Pour cause de DS pour un peu tout le monde ;-)
_crs/2015-11-18-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +---
  2 +author: "Geoffrey Preud'homme"
  3 +tags: ci
  4 +date: 2015-11-18
  5 +---
  6 +
  7 +[Tuto introduction au SSH]({{ '/tutos/introduction-ssh.html' | relative_link }})
  8 +
_crs/2015-12-02-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +---
  2 +author: "Geoffrey Preud'homme"
  3 +tags: ci
  4 +date: 2015-11-09
  5 +---
  6 +Oui, ça fait longtemps que j'avais pas fait de compte-rendu useless, et le pire c'est que cette fois-ci je m'y prend en avance parce que j'ai peur d'oublier certains points.
  7 +
  8 +* C'EST LA PHOTOOOO ! PRENEZ DES VÊTEMENTS <del>GIS</del> GRIS !
  9 +* Débrief rapide Nuit de l'Info
  10 +* Polos & Sweats (j'préfère faire en préventif)
  11 +
  12 +**Cours :** Probablement deux-trois trucs avec les PC à Polytech et bash en général (`.bashrc`, `startx`, installer un paquet en local, `cat`, `grep`, réveiller les PC, la syntaxe du bash si on a le temps).
  13 +
  14 +Pour le bureau :
  15 +
  16 +* Faudrait voir à créer une page Facebook. Quand même. Un jour.
  17 +* AW?
_crs/2016-01-06-compte-rendu-reunion.markdown 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +---
  2 +author: "Geoffrey Preud'homme"
  3 +tags: ci
  4 +date: 2016-01-06 11:38:56+01:00
  5 +---
  6 +- Souhaits vêtements polo <https://framacalc.org/0Rc4QxzfHS> (depuis le temps que je le disais)
  7 +- Nouvelle page FB
  8 +- AW probable, donnez des idées si vous en avez !
  9 + - Pac-man IRL
  10 + - Avec Robotech ?
  11 +- Pré-discussions passations
_includes/date.html
@@ -13,5 +13,6 @@ @@ -13,5 +13,6 @@
13 {% when '10' %}octobre 13 {% when '10' %}octobre
14 {% when '11' %}novembre 14 {% when '11' %}novembre
15 {% when '12' %}décembre 15 {% when '12' %}décembre
  16 + {% when '13' %}
16 {% endcase %} 17 {% endcase %}
17 -{{ include.date | date: "%Y" }} 18 + {{ include.date | date: "%Y" }}
_layouts/tuto.html
@@ -11,10 +11,22 @@ layout: default @@ -11,10 +11,22 @@ layout: default
11 <span itemprop="name">{{ page.author }}</span> 11 <span itemprop="name">{{ page.author }}</span>
12 </span> 12 </span>
13 {% endif %} 13 {% endif %}
14 - {% if page.author %} 14 + {% if page.license %}
15 (<a href="{{ page.license_url }}">{{ page.license }}</a>) 15 (<a href="{{ page.license_url }}">{{ page.license }}</a>)
16 {% endif %} 16 {% endif %}
  17 + {% if page.date %}
  18 + <br/>Mis à jour le
  19 + <time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
  20 + {% include date.html date=page.date %}
  21 + </time>
  22 + {% endif %}
17 </p> 23 </p>
  24 + {% if page.tags contains 'archive' %}
  25 + <blockquote>
  26 + <strong>Attention :</strong> Ce tutoriel est archivé car il a été rédigé il y a très longtemps et son contenu n'est plus d'actualité.<br/>
  27 + Regardez dans les <a href="{{ '/tutos.html' | relative_url }}">tutoriels récents</a> pour voir si un tutoriel plus récent est disponible.
  28 + </blockquote>
  29 + {% endif %}
18 30
19 {{content}} 31 {{content}}
20 32
_tutos/alloc_cpp.md 0 → 100644
@@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
  1 +---
  2 +title: "(Ré-)allocations en C++"
  3 +tags: cpp alloc
  4 +author: "Jean Loup Beaussart"
  5 +date: 2016-03-19 14:56
  6 +---
  7 +
  8 +Bonjour à tous les enfants, j'ai réfléchi pour l'histoire du realloc() en C++. Donc la réponse est non, il n'y a pas d'équivalent pour realloc() en C++.
  9 +Ensuite je me suis demandé : "Mais pourquoi Marianne utilise realloc()?" . Et là je me suis dit qu'elle faisait surement un truc du genre:
  10 +
  11 +```c++
  12 +int *tab = (int*)malloc(10 * sizeof(int));
  13 +
  14 +/* Elle remplit ses valeurs */
  15 +
  16 +/* Un peu plus tard elle doit ajouter 5 nouvelles valeurs */
  17 +
  18 +tab = (int*)realloc(tab, 15 * sizeof(int));
  19 +```
  20 +
  21 +
  22 +Et bien bonne nouvelle les enfants, en C++ plus besoin d'utiliser des tableaux classiques ( `int tab[10];` ).
  23 +La bibliothèque standard contient des objets que l'on appelle des conteneurs. En particulier il y a la classe `std::vector< int >` qui est un tableau dynamique.
  24 +Vous pouvez l'utiliser comme un tableau normal mais en plus il gère automatiquement son espace d'allocation.
  25 +
  26 +Pour reprendre l'exemple ci-dessus:
  27 +
  28 +```c++
  29 +std::vector< int> tab;
  30 +
  31 +/* On met des valeurs dedans */
  32 +tab.push_back(42);
  33 +tab.push_back(666);
  34 +
  35 +/* On peut les récupérer comme un tableau classique */
  36 +std::cout << tab[1]; //Ca va afficher 666
  37 +
  38 +/* On peut encore rajouter des valeurs */
  39 +tab.push_back(45645616);
  40 +
  41 +/* On peut compter le nombre d'éléments dans le tableau ou bien vider le tableau */
  42 +std::cout << tab.size();
  43 +tab.clean();
  44 +```
  45 +
  46 +Et encore plein d'autre chose incroyable!!!!!
  47 +
_tutos/github_notifs.md 0 → 100644
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
  1 +---
  2 +title: "Désactiver les notifications GitHub"
  3 +tags: github ci
  4 +author: "Geoffrey Preud'homme"
  5 +date: 2015-04-15 15:05:15
  6 +---
  7 +
  8 +Par défaut, à chaque fois qu'un nouveau dépôt `git` est crée sur GitHub, tous les membres du Club Info sont ajouté comme contributeur.
  9 +Cela permet de ne pas s'embêter avec les droits, et ainsi tout le monde peut contribuer, même s'il n'avait pas émit le souhait de contribuer au préalable !
  10 +
  11 +Par contre, pour ceux qui ne souhaitent pas s'interesser au projet, ces derniers puevent reçoivent quand même des notifications GitHub, qui sont relayées par mail. Il y a deux façons de palier à cela.
  12 +
  13 +* Ne recevoir de mail pour aucun dépôt GitHub
  14 +*(méthode radicale, vous continuerez à recevoir des notifications web sur le site de GitHub)*
  15 +Il suffit d'aller dans les [paramètres de notification GitHub](https://github.com/settings/notifications), et de décocher <input type="checkbox"/> **Email** sous la rangée **Watching**.
  16 +
  17 +* Se désabonner des projets que l'on ne veut pas suivre
  18 +*(permet de garder certains dépôt, et supprimer tous les types de notifications pour les autres)*
  19 +Pour les dépôts que vous ne voulez pas suivre, allez sur leur page (exemple : <https://github.com/ClubInfoPolytechLille/ci-site>), puis cliquez sur **(Un)Watch** en haut à droite et choisissez **Not watching**.
  20 +
  21 +Vous pouvez aussi **ne pas suivre automatiquement les nouveaux projets**, pour cela, rendez-vous dans les [paramètres de notification GitHub](https://github.com/settings/notifications) et décochez **Automatically watch repositories**.
  22 +
  23 +Voilà !
  24 +
_tutos/initiation-javascript-client.md 0 → 100644
@@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
  1 +---
  2 +title: Initiation au Javascipt client
  3 +tags: js
  4 +author: "Geoffrey Preud'homme"
  5 +date: 2015-12-02 21:13:29+01:00
  6 +---
  7 +
  8 +# Initiation au Javascript client
  9 +
  10 +## Mise en place
  11 +
  12 +Nous prendrons ce code HTML de base
  13 +
  14 +```html
  15 +<!DOCTYPE html>
  16 +<html>
  17 + <head>
  18 + <title>Le Club Info c'est cool !</title>
  19 + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  20 + <script type="text/javascript">
  21 + alert('Hello !');
  22 + </script>
  23 + </head>
  24 + <body>
  25 + <h1>Yo !</h1>
  26 + <p class="ci">J'ai la classe du <strong>CI</strong> !</p>
  27 + <p id="carambar">Pas moi, mais au moins je suis <strong>unique</strong> grâce à mon id !</p>
  28 + <p>Moi aussi j'ai la classe du <strong>CI</strong>, qu'est-ce que vous allez tous faire ?</p>
  29 + </body>
  30 +</html>
  31 +````
  32 +
  33 +Le code du Javascript se situe dans la balise `<script>`. Vous pouvez aussi utiliser un outil très puissant de votre navigateur, la console, avec <kbd>Ctrl</kbd>+<kbd>Maj</kbd>+<kbd>J</kbd>. Cela vous permet d'entrer du code Javascript et de le voir s'éxecuter instantanément. Il ne sera cependant pas sauvegardé, ce n'est donc utile que pour du debug (car les messages d'erreurs y apparaissent) ou tester le nom des fonctions que vous allez utiliser avant de les <del>écrire au tableau</del> taper dans votre fichier.
  34 +
  35 +## Bases
  36 +
  37 +Javascript est assez similaire au C++, voire au Java. La différence princiaple situe dans le fait que les variables n'ont pas un type assigné et peuvent en changer à la volée.
  38 +
  39 +Voici quelques exemples usuels :
  40 +```js
  41 +// Un commentaire
  42 +/* Un
  43 +bloc
  44 +de
  45 +commentaire */
  46 +var maVar = 'Le contenu, ici une chaîne de caractères. C\\'est cool non ?'; // Attention les variables sont définies localement, ça veut dire que si vous créez une variable dans une fonction, elle ne sera accessible uniquement à l'interieur de cette fonction.
  47 +var liste = ['fraises', 'bananes', 'merci', 42, 'la réponse D'];
  48 +var dictionnaire = {prez : 'Geoffrey', viceprez : 'Kévin', tresorier : 'Jean', secretaire : 'Pierre'};
  49 +var leSeulGisDuBureau = "VICEPREZ".toLowerCase();
  50 +console.log(liste[2], dictionnaire.tresorier, dictionnaire[leSeulGisDuBureau]) // affiche "merci", "Jean", "Kévin"
  51 +function tartiflette(patates, lardons, fromage) {
  52 + return patates + lardons - fromage^2;
  53 +}
  54 +var couleur = prompt("Quelle est ta couleur préférée ?", "vert")
  55 +```
  56 +
  57 +## Manipuler le HTML, version officielle
  58 +(en vrai on s'en fiche mais comme je suis un puriste je peux pas me passer de vous faire une petite introduction à cette méthode officielle.)
  59 +
  60 +Javascript propose le Document Object Model (ou DOM), qui est un moyen très puissant de manipuler le code HTML de votre page. Par exemple :
  61 +```js
  62 +document.getElementsByTagName('h1')[0].innerText = 'Tadaaaa !';
  63 +```
  64 +
  65 +## Des bibliothèques
  66 +JavaScript possède un nombre incalculable de bibliothèque permettant de se simplifier pas mal la tâche, donc pourquoi ne pas les utiliser pour éviter d'écrire un code imbitable comme celui ci-dessus ?
  67 +
  68 +On va essayer avec [jQuery](http://jquery.com/), qui est probablement la plus populaire. Pour la charger dans votre code, rajoutez ceci à la balise `<head>` :
  69 +```js
  70 +<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
  71 +```
  72 +
  73 +Du coup vous avez une rimbabelle de fonctions qui s'offrent à vous.
  74 +```js
  75 +$('h1').innerText('Tadaaaa !');
  76 +$('.ci').css('background', 'pink'); // Pour référence, ce qui est dans $(...) s'appelle un sélecteur
  77 +$('p').click(function clicSurP() { // Pour référence on appelle ça un évènement (clic, souris qui passe, touche du clavier appuyé...)
  78 + $(this).text('Hihi, ça chatouille !'); // Ici this est une variable spéciale qui contient le contexte, ici l'élément cliqué
  79 +}
  80 +$('#carambar strong').animate({fontSize: "50px"});
  81 +$('body').append($('<p>').text('Je viens de naître !')); // $('<el>') crée l'élément el, ce n'est pas vraiment un sélecteur.
  82 +```
  83 +
  84 +Et j'en passe et des meilleurs. Vous pouvez retrouver toute la doc de jQuery [ici](http://api.jquery.com/). Bien sûr, c'est un peu la décharge, mais faire chercher `jquery savoir si un élément possède une classe` ou `jquery selecteur élement fils unique`sur Google fonctionne très bien (voire même mieux en anglais, puisqu'il y a le site StackOverflow pour ce genre de question et qu'en français vous tomberez sur des forums la plupart du temps).
  85 +
  86 +## Bonus
  87 +```js
  88 +$.getScript('http://www.cornify.com/js/cornify.js', function(){
  89 + cornify_add();
  90 + $(document).keydown(cornify_add);
  91 +});
  92 +```
_tutos/introduction-au-shell.md 0 → 100644
@@ -0,0 +1,76 @@ @@ -0,0 +1,76 @@
  1 +---
  2 +title: Introduction au shell
  3 +tags: shell bash
  4 +author: "Geoffrey Preud'homme"
  5 +date: 2016-01-06 11:33:35+01:00
  6 +---
  7 +# Introduction au shell
  8 +
  9 +Le shell, c'est le programme qui fait le pont entre la console, le truc avec des écritures blanches sur fond noir, et les programmes du systme d'exploitation. Mais ici je vais utiliser (à tort) « shell » comme un mot un peu fourre-tout pour console, shell (le vrai), et les programmes.
  10 +
  11 +Pourquoi manipuler les programmes du système avec un vieux truc pas agréable à regarder et compliqué à utiliser alors qu'on a des belles interfaces graphiques ? Trois raisons :
  12 +
  13 + 1. On peut les éxécuter à distance (avec SSH par exemple) plus simplement et plus facilement qu'avec une solution lourde de partage d'écran (comme VNC par exemple)
  14 + 2. C'est programmable. Vous passerez moins de temps à chercher et construire la commande pour renommer des images selon leur lieu et date de prise de vue qu'à les renommer à la main ou trouver un programme qui fasse exactement ça sur le net, si tenté qu'il existe.
  15 + 3. C'est la classe quoi ! Ok vous passez pour un geek mais vous avez le swag ! (Bon ok, ça fait que deux raisons)
  16 +
  17 +Ah, on me signale dans mon oreillette que j'ai déjà passé trop de temps à blablater sur la théorie, passons tout de suite à la pratique.
  18 +
  19 +## Commandes usuelles
  20 +(garnies avec leurs exemples)
  21 +
  22 + - `cd dossier`, `cd ..` : changer de dossier
  23 + - `pwd`: savoir dans quel dossier on est
  24 + - `ls` : lister le contenu du dossier
  25 + - `cat fichier` afficher le contenu du fichier
  26 + - `less fichier` afficher le contenu du fichier de manière plus pratique (touches : `g` : aller au début du fichier, `G` à la fin, `/` puis du texte puis entrée : chercher dans le fichier, `n` prochaine occurence du texte, `N` précédente occurence, `q` quitter)
  27 + - `grep pattern fichier` cherche la ligne qui contient `pattern`dans `fichier`
  28 + - `touch fichier` : créer un fichier vide (utilité++)
  29 + - `cp a b` copier le fichier `a` vers un fichier `b`
  30 + - `cp -r a b` copier le **dossier** `a` vers un fichier `b`
  31 + - `mv a b` déplacer le fichier `a` vers un fichier `b`
  32 + - `rm fichier` supprimer le fichier
  33 + - `zip`, `unzip` manipuler des fichiers `.zip`
  34 + - `rm -r dossier` supprimer le dossier et son contenu (faites gaffe avec ça)
  35 + - `mkdir dossier` créer un dossier
  36 + - `find Dossier -type f -name lol` trouve tous les fichier qui s'appellent `lol` dans `Dossier`
  37 + - `wget http://leclubinfocestcool.fr` récupérer et enregister une page web
  38 + - `curl http://leclubinfocestcool.fr` récupérer et **afficher** une page web
  39 + - `ssh` se connecter sur une autre machine (voir [le tuto](http://leclubinfocestcool.plil.net/forum/conv/564f17883dd18e6b2c91f06d))
  40 + - `startx -- :1` démarrer une session graphique (aka le saint Graal des PC bloqués car coupés électriquement)
  41 + - `gcc -c main.c -o main` compiler un fichier C
  42 + - `eject` faire sortir une technologie assez agée d'une technologie plus récente
  43 + - `lpstat -a` : lister le nom des imprimantes (bonne chance pour trouver la salle)
  44 + - `lpr -P Gutenberg fichier.pdf` : imprimer sur Gutenberg (méthode non reconnue par le service info :P)
  45 + - `wakeonlan adressemac` : réveiller un PC éteint (la liste des adresses mac des PC de Polytech est sur le Twiki, mais allez pas vous attirer les foudres du service info, surtout que je vous apprend comment faire des boucles après X) )
  46 + - `nano fichier` : éditer un fichier texte, de manière plutôt intuitive
  47 + - `vim fichier` : éditer un fichier texte quand on est barbu (pour ce sortir de ce merdier : <kbd>Échap</kbd>, <kbd>:</kbd>, <kbd>q</kbd>, <kbd>!</kbd>, <kbd>Entrée</kbd>) (vous pouvez aussi utiliser les mêmes touches que dans `less`)
  48 + - `emacs fichier` : éditer un fichier quand on est un autre type de barbu (pour ce sortir de ce merdier : <kbd>Ctrl</kbd>+<kbd>X</kbd>, <kbd>Ctrl</kbd>+<kbd>C</kbd>) (je vous cache pas qu'il y a une petite guéguérre type guerre de religions entre les éditeurs :D)
  49 + - `history` : voir la liste des commandes qu'on a tapé dans le shell
  50 + - `history -c` : effacer son historique de shell-pr0n
  51 + - `exit` ou `logout` : dire bye bye
  52 + - (on en avait dites d'autres à la réu, mais je les ai oubliées)
  53 +
  54 +On terminera par le St-Graal des programmes systèmes, le `man` (vous pouvez aussi utiliser les mêmes touches que dans `less`). Quand on vous dit d'appliquer le protocole RTFM, c'est ici qu'il faut chercher.
  55 +
  56 +## La puissance du bash
  57 +
  58 +Le shell utilisé sur les PC de Poly est bash, et croyez-moi, on peut faire achement de choses avec, même si la syntaxe est assez déroutate pour le moins qu'on puisse dire.
  59 +
  60 +### Les pipes
  61 +Quand un programme sort du texte, vous pouvez le passer au programme suivant pour peu qu'il sache quoi en faire
  62 +
  63 + - `ls Documents | grep banane` donne la liste des fichiers dans le dossier Documents dont le nom contient `banane`
  64 + - `cat fichier | sort | uniq -d` lit le fichier, le trie pour finalement afficher les lignes en double
  65 +
  66 +### Les redirections vers un fichier
  67 +
  68 +- `ls Documents > fichier` enregistre les noms des fichiers dans le dossier Documents dans le fichier `fichier` (s'il n'existe pas, il est crée, s'il existe, il est écrasé)
  69 +- `echo "Hmmm, pastèque" >> fichier` rajoute la ligne « Hmmm, pastèque » dans le fichier `fichier`
  70 +
  71 +### Les variables
  72 +
  73 +- `fruit=orange`, `prefere="le piment"`, `i=0` assigner une variable
  74 +- `find . -name $fruit`, `echo "J'aime $prefere"`
  75 +
  76 +[TO BE CONTINUED]
_tutos/introduction-ssh.md 0 → 100644
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
  1 +---
  2 +title: Introduction au SSH
  3 +tags: ssh
  4 +author: "Geoffrey Preud'homme"
  5 +date: 2015-11-20 14:25:15+01:00
  6 +---
  7 +# Introduction au SSH
  8 +
  9 +## Théorie
  10 +
  11 +SSH est un protocole de communication permettant de se connecter d'une machine à une autre.
  12 +
  13 +Commande principale (pour un environnement Linux, déjà)
  14 +`ssh utilisateur@nom_de_la_machine -p port` (si `-p port` n'est pas spécifié, c'est 22 par défaut, si `utilisateur@` n'est pas spécifié, c'est votre nom de session actuel (`echo $USER`) qui est utilisé)
  15 +
  16 +
  17 +Pour transferer un fichier d'une machine à l'autre : `scp -P port source destination` (notez le `P` majuscule cette fois). On rajoutera l'option `-r` juste après `scp`pour transferer un dossier et son contenu.
  18 +
  19 +Si `source` et/ou `destination`est une machine distante, on utilisera la notation `utilisateur@nom_de_la_machine:emplacement_du_fichier`.
  20 +
  21 +## Pratique
  22 +### Depuis l'exterieur (IPv4)
  23 +Pour se connecter depuis l'exterieur au réseau Polytech Lille :
  24 +
  25 +* **Serveur :** `portier.polytech-lille.fr`
  26 +* **Port :** `2222`
  27 +* **Nom d'utilisateur :** votre identifiant Polytech
  28 +* **Mot de passe :** votre mot de passe Polytech
  29 +
  30 + Vous arriverez sur la machine `weppes`. À partir de là, vous pouvez vous connecter à toutes les machines (par exemple `ssh florine06`) et faire comme si vous étiez à Polytech.
  31 +
  32 +**Note :** Actuellement tout `scp`passant par `weppes` ne fonctionne pas (on obtient un message du type `C0664 50 nomfichier`.
  33 +
  34 +### Depuis l'exterieur (IPv6)
  35 +Si vous avez la chance d'avoir une connectivité IPv6 chez vous (ce que vous pouvez vérifier avec <http://ipv6-test.com/>, vous pourrez vous connecter à N'IMPORTE QUELLE macine du réseau Polytech avec son adresse IPv6.
  36 +Pour connaître une telle adresse, connectez vous à cette machine (via la méthode IPv4 par exemple), et entrez `ip addr show eth0`.
  37 +
  38 +Vous obtiendrez un truc du genre `2001:660:4401:6004:21a:a0ff:fe26:9672`(ici pour Astruc01), que vous pourrez utiliser avec `ssh`.
  39 +
  40 +### Imprimer un fichier
  41 +Sur un ordinateur (et pas un serveur tel que `weppes` ou `houpplin`), entrez la commande suivante `lpr -H Imprimante fichier.pdf`. Les imprimantes possible sont visibles avec `lpstat -a`.
_tutos/serveur-git-chez-soi.md 0 → 100644
@@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
  1 +---
  2 +title: "Se connecter au serveur git du CI depuis chez soi"
  3 +tags: ci git archive
  4 +author: "Geoffrey Preud'homme"
  5 +date: 2014-11-22 17:43
  6 +---
  7 +
  8 +
  9 +J'allais pour la n-ième fois chercher sur internet la commande exacte pour me connecter au serveur git (qui se pronnonce Git et non Jit ^^ [[source]](http://youtu.be/4XpnKHJAok8?t=1m30s)) du Club Info quand je me suis dit : "Faudrait quand même que je la note quelque part cette commande ...". Et puis je me suis dit que vu qu'on a désormais un groupe Google (houra !) j'allais la partager avec vous, parce que c'est quand même bien pratique.
  10 +
  11 +Un peu de théorie :
  12 +
  13 +On peut se connecter au serveur du club info de trois manières différentes :
  14 +
  15 +* Depuis une des machines de Polytech
  16 +* Depuis le Wi-Fi PolytechLille
  17 +* Depuis le l'accès SSH exterieur de Polytech (portier.polytech-lille.fr:2222)
  18 +
  19 +Comme aucune des deux premières méthodes ne nous convient, nous allons utiliser la troisième.
  20 +
  21 +Pour tester, essayez ceci dans un terminal :
  22 +```bash
  23 +ssh [identifiant polytech]@portier.polytech-lille.fr -p 2222
  24 +```
  25 +
  26 +Tapez votre mot de passe Polytech, vous voilà connecté au portier.
  27 +
  28 +Puis depuis le portier, pour le serveur du club info :
  29 +
  30 +```bash
  31 +ssh git@servclubinfo.insecure.deule.net
  32 +```
  33 +
  34 +(si vous avez la variable $CI, rien ne vous empêche de l'utiliser)
  35 +
  36 +Là, vu que le serveur du Club Info fonctionne par un système de clef et non par mot de passe, il y a deux possibilités :
  37 +
  38 +* Soit votre clef publique est dans votre répertoire personnel sur les ordis de Polytech (~/.ssh/id_rsa), ce qui est le cas si vous vous êtes déjà connecté au serveur du Club Info depuis un des ordis de Polytech avec votre session. Vous aurez alors accès à la liste des dépôts git que vous pouvez accéder.
  39 +* Soit vous ne vous êtes connecté que depuis votre ordinateur personnel, dans ce cas il vous demandera votre mot de passe, même si aucun mot de passe ne mènera à rien.
  40 +* Soit vous n'arrivez pas à vous connecter pour une raison X ou Y, la suite risque alors de ne pas fonctionner
  41 +
  42 +Le problème, c'est que pour utiliser git, on ne peut spécifier directement qu'un seul SSH, et pas une composition de plusieurs. On va utiliser alors une technique qui s'appelle le port forwarding.
  43 +Sans trop entrer dans les détails, cette technique va créer un port virtuel sur votre machine qui va être relié directement au serveur du Club Info par l'intermédiaire du portier.
  44 +
  45 +Pour cela, ouvrez un nouveau terminal, et tapez :
  46 +```bash
  47 +ssh -L 1234:servclubinfo.insecure.deule.net:22 [identifiant polytech]@portier.polytech-lille.fr -p 2222
  48 +```
  49 +
  50 +1234 étant un port de libre sur votre machine.
  51 +
  52 +Tapez votre mot de passe Polytech, et vous devrez atterrir sur le portier. Cependant, le port vers le serveur est ouvert, et le sera jusqu'à ce que vous fermiez ce terminal. Laissez-le donc ouvert ! À chaque fois que vous voulez vous connecter au serveur du Club Info depuis l’extérieur, il faudra taper cette commande.
  53 +
  54 +Vous pouvez tester la connexion avec
  55 +
  56 +```
  57 +ssh git@localhost -p 1234
  58 +```
  59 +
  60 +Normalement, la connexion devrait se faire sans encombre, car c'est votre machine qui est utilisée pour l'authentification, et devrait donc utiliser la clef qui se trouve à l'emplacement `~/.ssh/id_rsa`. Si vous avez une fait une configuration custom de ssh (`~/.ssh/config`), vous devriez savoir le modifier (pour ma part, j'utilise [ça](http://pastebin.com/spyMQkrN)). Si ça ne marche pas, ce qui suit ne fonctionnera pas non plus.
  61 +
  62 +
  63 +Puis, déplacez vous dans un répertoire git que vous avez auparavant cloné (si vous n'en avez pas, passez au paragraphe suivant, mais n'oubliez pas de lire celui-ci après). Nous allons ajouter une "remote" au serveur git qui va lui permettre de garder en mémoire le lien vers le serveur. Vous pouvez l'appeler comme vous voulez, moi je penche pour "origine", avec "origin" parce que c'est le nom par défaut pour une "remote" (et la "remote" appelée "origin" de votre répertoire devrait normalement pointer vers le club info directement, et ne fonctionne donc pas depuis chez vous), et "e" pour extérieur.
  64 +
  65 +Tapez donc :
  66 +
  67 +```bash
  68 +git remote add origine ssh://git@localhost:1234/polydex_kernel.git
  69 +```
  70 +
  71 +Voilà, maintenant, vous devriez pouvoir faire un
  72 +
  73 +```bash
  74 +git pull origine master
  75 +```
  76 +
  77 +pour pouvoir récupérer tous les changements depuis le serveur. De la même manière, vous devriez pouvoir faire un
  78 +
  79 +```bash
  80 +git push origine master
  81 +```
  82 +
  83 +pour mettre vos changements sur le serveur.
  84 +
  85 +N'oubliez pas cependant que à Polytech, il faudra continuer à utiliser "git push origin master" (ou "git push" tout court, ce qui revient -normalement- au même) (de même avec "pull")
  86 +
  87 +Et si jamais on veut ajouter un dépôt qu'on a pas encore cloné ? Très simple :
  88 +```
  89 +git clone ssh://git@localhost:1234/polydex_story.git
  90 +```
  91 +Par contre, la remote "origin" sera lié à l'accès au serveur depuis l'exterieur de Polytech, il faut donc rajouter la remote "origine" puis remplacer la remote "origin" par l'accès depuis l’intérieur de Polytech pour garder une cohérence avec les dépôts déjà clonés. Tapez donc :
  92 +
  93 +```
  94 +cd polydex_story
  95 +git remote add origine ssh://git@localhost:1234/polydex_story.git
  96 +git remote remove origin
  97 +git remote add origin ssh://git@servclubinfo.insecure.deule.net/polydex_story.git
  98 +```
  99 +
  100 +Et normalement, tout est bon !
  101 +
  102 +
  103 +N'hésitez pas à mettre un message si ça a marché ou si ça n'a pas marché en indiquant le contenu de l'erreur et l'étape à laquelle vous êtes ;-)
  104 +
@@ -154,3 +154,10 @@ html { @@ -154,3 +154,10 @@ html {
154 fill: $brand-color; 154 fill: $brand-color;
155 } 155 }
156 } 156 }
  157 +
  158 +kbd {
  159 + padding: 2px;
  160 + border: darken($grey-color-light, 20%) 1px solid;
  161 + background: $grey-color-light;
  162 + border-radius: 3px;
  163 +}
tutos-archives.html 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +---
  2 +title: Tutoriels archivés
  3 +---
  4 +
  5 +<p>
  6 + Ici sont gardés les ancien tutoriels écrits par les membres du Club Info pour assurer leur pérénité.<br/>
  7 + Leurs informations sont très probablement obsolètes.
  8 +</p>
  9 +
  10 +<ul class="post-list">
  11 +{% assign tutos = site.tutos | sort: 'title' %}
  12 +{% for my_tuto in tutos %}
  13 +{% if my_tuto.tags contains 'archive' %}
  14 + <li>
  15 + <h2>
  16 + <a class="post-link" href="{{ my_tuto.url | relative_url }}">
  17 + Tutoriel : {{ my_tuto.title | escape }}
  18 + </a>
  19 + </h2>
  20 + </li>
  21 +{% endif %}
  22 +{% endfor %}
  23 +</ul>
@@ -6,7 +6,9 @@ tags: header @@ -6,7 +6,9 @@ tags: header
6 <p>Vous trouverez ici tous les tutoriels rédigés par nos membres. Peut-être y trouverez-vous votre bonheur !</p> 6 <p>Vous trouverez ici tous les tutoriels rédigés par nos membres. Peut-être y trouverez-vous votre bonheur !</p>
7 7
8 <ul class="post-list"> 8 <ul class="post-list">
9 -{% for my_tuto in site.tutos %} 9 +{% assign tutos = site.tutos | sort: 'title' %}
  10 +{% for my_tuto in tutos %}
  11 +{% unless my_tuto.tags contains 'archive' %}
10 <li> 12 <li>
11 <h2> 13 <h2>
12 <a class="post-link" href="{{ my_tuto.url | relative_url }}"> 14 <a class="post-link" href="{{ my_tuto.url | relative_url }}">
@@ -14,5 +16,6 @@ tags: header @@ -14,5 +16,6 @@ tags: header
14 </a> 16 </a>
15 </h2> 17 </h2>
16 </li> 18 </li>
  19 +{% endunless %}
17 {% endfor %} 20 {% endfor %}
18 </ul> 21 </ul>