Mensuel Shaarli
May, 2017
D'où vient l'appellation en anglais. Chlouchloutte te connaissant comme je te connais, tu risques de t'en fiche, par Animal, ça peut l'intéresser de comprendre d'où vient l'expression uppercase et lowercase en anglais... Des imprimeurs qui utilisaient des lettres en plomb pardi !
Comment sécuriser son serveur avec SSL et TLS (surtout TLS 1.2)
J'adore le commentaire de Neko : "La surprise est totale."
Ce n'est pas faute d'avoir prévnu (T_T).
I loled.
Bien joué
De mon côté j'ai trouvé cette réponse à ce lien:
if you browse the hg repository you find that the organization is the following one: there are different repositories for different versions and there is one repository for the "dev
version" at http://hg.openjdk.java.net/jdk8u/jdk8u you find the current stable version that is tagged jdk8u60-b12 so every new commit in this branch represent the current
jdk8u60 stable version. if you want to grab the dev version of the same jdk you have to clone the repository at http://hg.openjdk.java.net/jdk8u/jdk8u-dev/
Il semble donc que le répo jdk8u soit un répo de DEV mais rien ne dit que le jdk8 ne soit pas lui non plus un répo de DEV. Bref, une gestion de conf gérée avec les pieds. Du grand Oracle !
Edit : Je suis tombé sur cet autre post de Stack Overflow contenant ce commentaire :
The latest JDK8 OpenJDK Java Class Library source code can be found here: http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/
For JDK8 updates, see the jdk8u Mercurial project (thanks to Eric Wang for pointing this out).
Mais j'ai du mal de comprendre le principe qui dit que pour la version d'origine on a un répo, mais qu'il existe un autre répo pour les updates uniquement !?
(o_Ô) dafuq ?
Le problème vient du power management de la carte (me concernant), en effet l'énergumène s'attelait à passer la carte en mode économie d'énergie - ce qui est une très bonne chose pour la batterie de mon ordinateur portable - sauf que le power management exécute cette opération aussitôt que la connexion wifi est inactive et met plusieurs minutes à renvoyer le courant électrique dans la carte wifi de telle sorte qu'il faille redémarrer la bête (ou a minima les modules network-manager & co). Bref inutilisable.
Voici la solution qui réduit le temps d'usage sur batterie mais corrige le problème :
sudo iwconfig wlp2s0 power off
Voilà
Mais qui s'appuie sur Google.
JavaScript, a cause notamment ses nombreuses erreurs de conception, permet de coder dans une syntaxe turing complète avec 6 caractères seulement : ( ) [ ] + et !
Ou comment uglifer votre code de manière extraordinaire.
Oh tiens... Sans le vote utile c'est Mélenchon qui aurait gagné... Tiens tiens tiens
Le "vrai" programme de Macron... Tiens ça me rappelle la stratégie de la Blitzkrieg de Fillon...
Pour toi Animal
Le groupe fait du Kawaï-Metal... Voilà que je vire otak' moi.
Mistigune est sympa, je vais écouter les autres chansons.
La liste complète des mots-clefs de NetBeans pour fabriquer vos macros :
abbrev-debug-line Debug Filename and Line Number
adjust-caret-bottom Move Insertion Point to Bottom
adjust-caret-center Move Insertion Point to Center
adjust-caret-top Move Insertion Point to Top
adjust-window-bottom Scroll Insertion Point to Bottom
adjust-window-center Scroll Insertion Point to Center
adjust-window-top Scroll Insertion Point to Top
all-completion-show Show All Code Completion Popup
annotations-cycling Annotations Cycling
beep Beep
build-popup-menu Build Popup Menu
build-tool-tip Build Tool Tip
caret-backward Insertion Point Backward
caret-begin Insertion Point to Beginning of Document
caret-begin-line Insertion Point to Beginning of Text on Line
caret-begin-word Insertion Point to Beginning of Word
caret-down Insertion Point Down
caret-end Insertion Point to End of Document
caret-end-line Insertion Point to End of Line
caret-end-word Insertion Point to End of Word
caret-forward Insertion Point Forward
caret-line-first-column Insertion Point to Beginning of Line
caret-next-word caret-next-word
caret-previous-word caret-previous-word
caret-up Insertion Point Up
collapse-all-code-block-folds Collapse All Java Code
collapse-all-folds Collapse All
collapse-all-javadoc-folds Collapse All Javadoc
collapse-fold Collapse Fold
comment Comment
complete-line Complete Line
complete-line-newline Complete Line and Create New Line
completion-show Show Code Completion Popup
copy-selection-else-line-down Copy Selection else Line down
copy-selection-else-line-up Copy Selection else Line up
copy-to-clipboard Copy
cut-to-clipboard Cut
cut-to-line-begin Cut from Insertion Point to Line Begining
cut-to-line-end Cut from Insertion Point to Line End
default-typed Default Typed
delete-next Delete Next Character
delete-previous Delete Previous Character
documentation-show Show Documentation Popup
dump-view-hierarchy Dump View Hierarchy
expand-all-code-block-folds Expand All Java Code
expand-all-folds Expand All
expand-all-javadoc-folds Expand All Javadoc
expand-fold Expand Fold
fast-import Fast Import
find-next Find Next Occurrence
find-previous Find Previous Occurrence
find-selection Find Selection
first-non-white Go to First Non-whitespace Char
fix-imports Fix Imports
format Format
generate-code Insert Code
generate-fold-popup Generate Fold Popup
generate-goto-popup Generate Goto Popup
generate-gutter-popup Margin
goto Go to Line...
goto-declaration Go to Declaration
goto-help Go to Javadoc
goto-implementation Go to Implementation
goto-source Go to Source
goto-super-implementation Go to Super Implementation
in-place-refactoring Instant Rename
incremental-search-backward Incremental Search Backward
incremental-search-forward Incremental Search Forward
insert-break Insert Newline
insert-date-time Insert Current Date and Time
insert-tab Insert Tab
introduce-constant Introduce Constant...
introduce-field Introduce Field...
introduce-method Introduce Method...
introduce-variable Introduce Variable...
java-next-marked-occurrence Navigate to Next Occurrence
java-prev-marked-occurrence Navigate to Previous Occurrence
jump-list-last-edit Last edit
jump-list-next Forward
jump-list-prev Back
last-non-white Go to Last Non-whitespace Char
make-getter Replace Variable With its Getter
make-is Replace Variable With its is* Method
make-setter Replace Variable With its Setter
match-brace Insertion Point to Matching Brace
move-selection-else-line-down Move Selection else Line down
move-selection-else-line-up Move Selection else Line up
org.openide.actions.PopupAction Show Popup Menu
page-down Page Down
page-up Page Up
paste-formated Paste Formatted
paste-from-clipboard Paste
redo Redo
reindent-line Re-indent Current Line or Selection
remove-line Delete Line
remove-line-begin Delete Preceding Characters in Line
remove-selection Delete Selection
remove-tab Delete Tab
remove-trailing-spaces Remove Trailing Spaces
remove-word-next remove-word-next
remove-word-previous remove-word-previous
replace Replace
run-macro Run Macro
scroll-down Scroll Down
scroll-up Scroll Up
select-all Select All
select-element-next Select Next Element
select-element-previous Select Previous Element
select-identifier Select Identifier
select-line Select Line
select-next-parameter Select Next Parameter
select-word Select Word
selection-backward Extend Selection Backward
selection-begin Extend Selection to Beginning of Document
selection-begin-line Extend Selection to Beginning of Text on Line
selection-begin-word Extend Selection to Beginning of Word
selection-down Extend Selection Down
selection-end Extend Selection to End of Document
selection-end-line Extend Selection to End of Line
selection-end-word Extend Selection to End of Word
selection-first-non-white Extend Selection to First Non-whitespace Char
selection-forward Extend Selection Forward
selection-last-non-white Extend Selection to Last Non-whitespace Char
selection-line-first-column Extend Selection to Beginning of Line
selection-match-brace Extend Selection to Matching Brace
selection-next-word selection-next-word
selection-page-down Extend Selection to Next Page
selection-page-up Extend Selection to Previous Page
selection-previous-word selection-previous-word
selection-up Extend Selection Up
shift-line-left Shift Line Left
shift-line-right Shift Line Right
split-line Split Line
start-macro-recording Start Macro Recording
start-new-line Start New Line
stop-macro-recording Stop Macro Recording
switch-case Switch Case
to-lower-case To Lowercase
to-upper-case To Uppercase
toggle-case-identifier-begin Switch Capitalization of Identifier
toggle-comment Toggle Comment
toggle-highlight-search Toggle Highlight Search
toggle-line-numbers Toggle Line Numbers
toggle-non-printable-characters Toggle Non-printable Characters
toggle-toolbar Toggle Toolbar
toggle-typing-mode Toggle Typing Mode
tooltip-show Show Code Completion Tip Popup
uncomment Uncomment
undo Undo
word-match-next Next Matching Word
word-match-prev Previous Matching WordJe résume : en quoi les micro-services sont peut-être de la brave merde. Autrement dit, une architecture micro-service est-elle nécessaire à tous et s'applique-t-elle pour tous ?
J'adore la phrase de fin :
Dans tous les cas, nous sommes baisés. Ce sera soit Idiocracy, soit Demolition Man.
Un bien belle citation d'un PDG milliardaire sur ce qu'est, pour lui entendons-nous, la mondialisation :
Je définirais la mondialisation comme la liberté pour mon groupe d’investir où il veut, le temps qu’il veut, pour produire ce qu’il veut, en s’approvisionnant et en vendant où il veut, et en ayant à supporter le moins de contraintes possibles en matière de droit du travail et de conventions sociales.
Percy Barnevick ancien P-DG de ABB
Rappelez-vous :
- L'argent liquide protège votre vie privée.
- L'argent liquide limite l'activité spéculative à cause du principe de montant de réserve.
- Sans argent liquide, plus de risque de bankrun puis de bankrout pour les banques, donc activités open-bar pour elles.
- Sans argent liquide, la saisie de 10% à 15% de votre argent sur vos comptes devient possible (comme le suggère le FMI et la Commission Européenne pour faire rembourser la dette française de force - alors que celle-ci ne devrait pas exister sans la perte de la création monétaire ex-nihilo que détenait l'État).
L'article traitant du sujet sur LME
Merci Animal, c'était mon lol du jour
Bon, je dois refaire du Webpack pour mettre à jour le build d'un tool de la boite. Comme j'ai eu beaucoup de peine à retrouver comment et quoi faire, voici un bref résumé des trucs et astuces à connaître sur Webpack.
Comment concaténer des fichiers JS inter-dépendants ?
Principe : mon fichier JS (Main.js) importe d'autres fichiers JS (cf. le mot-clef require de TypeScript / ES6). Et ces fichiers JS importent également d'autres fichiers. L'idée ici est d'avoir un Webpack qui parcours le graphe des dépendances en analysant le code afin de produire un et un seul fichier JS qui n'inclut que ce dont mon application se sert.
Contenu du fichier webpack.conf.js :
module.exports = {
entry: {
Car : './src/Main.js' // Charge ce fichier ainsi que tous ceux dont il dépend via le mot-clef 'require'.
},
output: {
path: './target',
filename: 'merged-file.js'
}
};
Comment créer un bundle de fichiers JS qui n'ont aucune dépendance entre-eux ?
Principe : j'ai plein de libs écrites en JavaScript avec mes petites mimines (ou pas), ces librairies n'ont aucune dépendance entre-elles, cependant je souhaiterais les concaténer dans un gros bundle de sorte à minimiser le nombre de requêtes réseau.
Contenu du fichier webpack.conf.js :
module.exports = {
entry: [
'./src/Car.js', // La liste des fichiers à concaténer
'./src/Vehicule.js'
],
output: {
path: './target',
filename: 'merged-file.js'
}
};
Comment créer plusieurs bundles de fichiers JS qui n'ont aucune dépendance entre-eux ?
Principe : je reprends les fichiers JS du point précédent à ceci près que je souhaite créer plusieurs bundles, un pour chaque types de véhicules par exemple.
Contenu du fichier webpack.conf.js :
module.exports = {
entry: {
four-wheels : [
'./src/Car.js',
'./src/Vehicule.js'
],
two-wheels : [
'./src/Bike.js',
'./src/Vehicule.js'
]
},
output: {
path: './target',
filename: '[name].bundle.js',
chunkFilename : '[id].bundle.js'
}
};
Comment minifier mes bundles JS ?
Principe : mes fichiers JS sont gros et je souhaite supprimer le maximum d'espace, les commentaires, réduire le nom des fonctions, variables & Co de sorte à fournir le plus petit fichier possible.
Contenu du fichier webpack.conf.js :
var webpack = require("webpack");
module.exports = {
entry: [
'./src/Car.js',
'./src/Vehicule.js'
],
output: {
path: './target',
filename: 'app.minified.js'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({minimize: true})
]
};Moi j'aurai donné en exemple cette commande :
sudo yum install nano
Enfin je dis ça, ne dit rien...
Exécuter un script à travers SSH :
# N'affichera aucune couleur
ssh user@host "ls --color=auto"
Exécuter un script à travers SSH avec les couleurs :
# Tout joli et coloré
ssh -t user@host "ls --color=auto"Et ce lien vers le même site qui parle aussi des changements apportés par Java 8 au niveau de la JVM.
Un tuto de build fournit par LinuxFromScratch
Il faut que j'étudie les sources. Même si je pense que les Conventions entre l'état et les différents organismes et collectivités lui permettait de créer de la monnaie non pas pour lui même mais au moins pour un autre et à taux zéro.
Copyright : Il s'agit de la trouvaille de Lapinferoce
Pour comprendre
Quand votre Maven doit se connecter un à Nexus vous devez modifier son fichier settings.xml en lui ajoutant les infos qui vont bien. Plus précisément celles-ci :
<server>
<id>my-wunder-nexus</id>
<username>my-login</username>
<password>my-password</password>
</server>
Quel est le problème ?
Il est triple :
1) Vous êtes une feignasse qui a la flemme de chiffrer ses mots de passe.
2) Le XML de Maven interdit le caractère '&' qu'il interprète comme le & de HTML (c'est-à-dire celui pour faire des é, è etc)
3) Ce n'est pas vous qui avez choisi ce mot de passe, il s'agit d'un compte de service et donc, il est très difficilement modifiable.
C'est quoi donc la solution ?
Prenons le mot de passe fictif : TastyPie&43. On remarque clairement l’esperluette qui ne passera pas... Sauf si l'on écrit ceci :
<server>
<id>my-wunder-nexus</id>
<username>my-login</username>
<password><![CDATA[TastyPie&43]]></password>
</server>
Vous avez compris ? En réalité, le fichier settings.xml de Maven est interprété comme un fichier HTML, en conséquence il est possible d'y injecter des data brutes contenant n'importe quoi.
#BeauGoss Lapinferoce
Et l'on nous parlera de Démocratie ! Et ce graphique n'intègre pas ceux qui n'ont pas pu voté, les inscrits en double et les fraudes...
Pour Animal parce que c'est dans l'ère du temps !
Après je demeure réservée quant à l'orthographe, je m'explique, la bonne orthographe d'un mot consiste en l'apprentissage parfait de la composition des lettres de ce mot + l'apprentissage des diverses exceptions de notre belle langue (de merde ?). Exemple avec le mot œuf ou encore haricots qui se prononce a-ri-ko mais qui s'écrit hâ-ri-cote m'voyez...
Aussi, je suis plus tournée vers la défense de la grammaire qui implique une logique claire, réfléchie et compréhensible ainsi qu'un vocabulaire basé sur des syllabes (comme l'Espéranto) et pour lequel il n'y a pas d'exception ou encore l'absence de "plusieurs manières de faire le même truc".
Ah oui j'oubliais, il s'agit du français... Une langue pensée avec les pieds et bâtie sur des exceptions, des cas particuliers, bardée d'expressions grecques ou latines ou encore modifiée a posteriori au regard des erreurs des "grands auteurs" parce que c'est plus hype quand une connerie vient d'un homme célèbre.
Et l'on s'étonnera ensuite que les français sont pris pour des cons à l'étranger.
Ou comment le pouvoir vainqueur a-t-il réécrit l'histoire. Édifiant ? Navrant ? Non pas étonnant en fait.
Je copie-colle :
Petit tuto de ce que j'ai fait l'autre jour :) https://framapiaf.org/@mitsu/550072
Comme vous le savez, la DHT (Distributed Hash Table) est le mécanisme décentralisé utilisé par les logiciels Bittorrent pour échanger les informations sur les torrents, ainsi que les sources et pairs.
Ainsi lorsqu'on lance son logiciel Bittorrent, celui-ci va servir de relais pour une "branche" de la DHT. Ce qui permet donc de collecter des infohash qui circulent (rattachés ou non à un torrent authentique), et avoir un aperçu de ce qui est échangé sur le réseau.Étape 1: la collecte. Pour ce faire, j'ai configuré qBittorrent pour qu'il utilise le port UDP 51515 pour les connexions DHT. Peu importe le port, c'est juste pour ne pas avoir trop de pollution par la suite.
Étape 2: lancer Wireshark et le faire écouter la carte réseau, avec un filtre de capture: "port 51515"Laisser tourner quelques temps :) En 10 minutes vous aurez déjà pas mal de données à vous mettre sous la dent.
Étape 3: dans Wireshark appliquer un filtre d'affichage pour ne garder que les paquets contenant des infohash: "udp contains 5f:68:61:73:68:32:30:3a"
(5f:68:61:73:68:32:30:3a étant la valeur hexa pour le texte UTF-8 "_hash", on aurait pu faire un filtre sur le tag entier "info_hash" mais c'est pas nécessaire)
Ensuite, cliquez sur Edit > mark all displayed packets.
Et enfin: File > Save as (en ne sélectionnant que les paquets marqués)Étape 4: exporter la payload des paquets en hexadécimal brut. Simple ligne de commande: tshark -r fichier.pcapng -Tfields -e data >> fichier.txt
Étape 5: extraire les infohash. Voilà la commande: cat fichier.txt | grep -o -P "5f6861736832303a.{0,40}" | sed 's/5f6861736832303a/magnet:?xt=urn:btih:/' | sort -u >> infohash.txt
(détail: on prend le contenu brut, on vise la séquence hexa correspondante à "_hash" et on inclut les 40 chiffres hexadécimaux suivants, puis on remplace la séquence par le schéma pour avoir des liens magnet, que l'on trie pour supprimer les doublons, et on sort le résultat)Étape 6: récupérer les .torrent correspondants aux infohash, sachant qu'il y a beaucoup de spam sur le réseau: vous n'aurez peut-être qu'une poignée de fichiers .torrent. Pas grave. Commande:
aria2c --bt-save-metadata --bt-metadata-only --enable-dht6=true --dht-entry-point='dht.transmissionbt.com:6881' --dht-entry-point6='dht.transmissionbt.com:6881' --max-concurrent-downloads=3 --timeout=40 --bt-stop-timeout=30 --dht-file-path=dht.dat --dht-file-path6=dht6.dat --input-file=infohash.txtDétail: Aria2 est un puissant logiciel de téléchargement. Ici, on indique en paramètre que l'on ne veut que les .torrent (pas les fichiers partagés eux-même), maxi 3 simultanés pour ne pas être rejetés par les liens DHT, en utilisant les fichiers de relais DHT du répertoire courant (vous voudrez peut-être utiliser Aria2 pour télécharger un torrent populaire, de sorte à créer ces fichiers de "voisins" dans la DHT).
Et voilà ! Vous obtiendrez des fichiers .torrent, dont vous pourrez afficher le contenu avec aria2c -S *.torrent
Libre à vous de les utiliser ensuite pour créer votre propre The Pirate Bay, de manière complètement autonome, avec uniquement des torrents effectivement échangés sur le réseau ^^Merci Mitsu
Tout est dans le titre. Voici comment l'union européenne est en train de nous manger via la privatisation des services publics
Vous avez cru jusqu'à ce jour qu'il y avait des tyrans ?
Et bien vous vous êtes trompés !
Il n'y a que des escalves : là ou nul n'obëit, personne ne commande.
Anselme BELLEGARRIGUE
Comment ajouter une icône "Afficher le Bureau" sous Windows 7. Voici le [lien direct}(https://www.sevenforums.com/attachments/tutorials/57574d1269652692-show-desktop-shortcut-create-show_desktop.zip)
Une info complémentaire, si tous tes répos Git sont accessibles avec le même mot de passe, tu peux taper ceci à la place :
git config --global credential.helper storeTout est dans le titre.
Animal... Ce post est tristement pour toi (il parle des panneaux publicitaires vidéos en plein rue).
Télécharger depuis le slave Jenkins, l'agent présent sur le master Jenkins :
wget http ://yourserver:port/jnlpJars/slave.jar
La commande à exécuter pour lancer l'agent sur la machine Slave :
java -jar slave.jar -jnlpUrl http ://yourserver:port/computer/slave-name/slave-agent.jnlpOptimisez votre site avec le balisage Article, NewsArticle, Blogposting, Organization, Website de Schema.org pour exploiter les données structurées.
Prenons un exemple : vous souhaitez lancer un JAR avec la commande javaw (rappel = la commande javaw fait la même chose que la commande java mais sans afficher de console).
Il faut créer un fichier contenant ci :
Attention, la commande invoquée (ici javaw) DOIT ÊTRE DANS VOTRE PATH !
[Nemo Action]
Name=Lancer le JAR
Comment=Execute un fichier JAR/WAR avec javaw
Exec=javaw -jar %F
Icon-Name=bug-buddy
Selection=Any
Extensions=jar;war;
Où mettre ce fichier ?
Pour qu'il soit accessible à tous les utilisateurs (il vous faudra les droits root) :
## Placez votre fichier ici :
/usr/share/nemo/actions/
Pour qu'il ne soit accessible qu'à vous-même (pas d'élévation de privilèges) :
## Placez votre fichier ici :
$HOME/.local/share/nemo/actions/
Un dernière contrainte ?
Oui, votre fichier DOIT AVOIR L'EXTENSION :
Tout est dans le titre. L'idée est d'arriver aux choses suivantes :
1) Automatiser le build de OpenJDK 1.8 pour architecture linux x64
2) Arriver à produire de manière automatique trois JVM compactées à partir des profiles 1, 2 et 3 à partir du build d'OpenJDK 1.8 fournit ci-dessus.
Ce répo GitHub montre comment faire.
Cette vidéo n'a jamais été filmée, ça ne se passe pas en France, il ne s'agit pas de la police française, ce ne sont pas des adolescents qui sont agressés et ce n'est pas la police française qui fait ça.
Voilà, je ne parlerai même pas de l'impunité #EtatPolicier vs #EtatDeDroit
Pour faire simple voici les deux commandes à utiliser au sein de votre répo.
Pull only :
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
Pull / Push :
git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose
Pour Utiliser le répo :
git clone git://127.0.0.1/
Rappel : Le port part défaut du protocol