J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5200 links
Aujourd'hui nous n'allons pas forcément voir quelque chose de très complexe mais nous allons essayer de réfléchir à un problème simple en CSS. Comment espacer plusieurs éléments au sain d'une section ?
Approche1 : Marge sur l’élément
La première approche, qui semble la plus naturelle, serait d'utiliser une marge directement sur les éléments que l'on souhaite espacer.
.card { … margin: 1.5rem 0; }Cette méthode va avoir plusieurs inconvénients :
- Les marges de l'élément vont créer un espace non désirable si le conteneur a des marges intérieures.
- Si l'élément parent est en
display:flex, dans ce cas-là la fusion des marges ne s'opère plus.- Si on souhaite utiliser cet élément dans une grille il faudra retirer les marges pour éviter (ce qui implique de rajouter des styles supplémentaires).
- On mélange ici apparence et structure, ce qui nuit à la réutilisation du style.
Approche 2 : Des classes utilitaires
Le problème de la première approche est qu'elle n'est pas assez spécifique, elle va appliquer des marges sur tous les éléments
.cardpar défaut.
Pour remédier à ce problème on pourrait être tenté d'utiliser une approche utilitaire qui consiste à utiliser une règle CSS spécifique pour l'ajout de marges..mt { margin-top: 2rem; }Il sera alors possible de réutiliser cette classe dès que l'on aura besoin de rajouter une marge entre plusieurs éléments (et ce quelque soit l'élément).
<div class="card">...</div> <div class="card mt">...</div> <div class="alert mt">...</div>Cette approche est plus intéressante parce qu'elle permet de séparer l'apparence et structure mais apporte aussi son lot de problèmes :
- Lorsque vous construisez votre structure HTML vous devez penser à l'apparence qu'auront vos éléments (Par exemple vous devrez ajouter de la logique dans les boucles de vos templates pour ajouter ou non la classe utilitaire).
- Pour des éléments responsive vous allez devoir peut-être rajouter différentes classes pour gérer les différents positionnements ce qui va rendre le code difficile à écrire.
<div class="card">...</div> <div class="card small-mt large-mt0 medium-mt2">...</div> <div class="card small-mt large-mt0 medium-mt2">...</div>Approche 3 : Grid
Le système de grille CSS nous permet de résoudre le problème d'espacement grâce à la propriété
grid-gapqui permet d'insérer un espace régulier entre chaque élément. On commencera alors par entourer nos éléments :<div class="stack"> <div class="card"></div> <div class="card"></div> <div class="card"></div> <div class="card"></div> </div>Et ensuite on utilisera le système de grille pour générer l'espace et l'empilement.
.stack { display: grid; grid-template-columns: 1fr; grid-gap: 1.5rem; }Avec ce système, c'est l'élément parent qui est chargé de contrôler la disposition des enfants ce qui offre beaucoup plus de contrôle et permet de ne plus avoir à s'occuper de la structure au niveau des éléments enfants. En revanche le système de grille ne permet pas de gérer simplement des variations au niveau des espacements (il n'est pas possible de diminuer ou augmenter facilement la marge entre 2 éléments).
Approche 4 : Le sélecteur > et +
La précédente approche nous a permis de comprendre que piloter l'espacement par le parent est une très bonne solution à adopter. En revanche on veut pouvoir piloter facilement l'espace entre 2 éléments si nécessaire.
.stack > * + * { margin-top: 1.5rem; }Cette approche permet d'insérer automatiquement une marge en haut des éléments adjacents à un autre élément et qui sont des enfants direct de l'élément
.stack. L'inconvénient est qu'il est alors nécessaire de retirer la marge dès que l'on change de disposition ce qui complique la gestion du responsive.@media only screen and (min-width: 500px) { .stack { display:grid; } .stack > * + * { margin-top: 0; } }Pour se sortir de cette situation il est possible de se reposer sur l'utilisation des variables CSS qui permettent, grâce au système de cascade, de changer dynamiquement l'espace qu'il y a entre les différents éléments depuis le parent.
.stack { --space: 1.5rem; } .stack > * + * { margin-top: var(--space); } @media only screen and (min-width: 500px) { .stack { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 30px; --spacce: 0; } }Cette variable permet aussi à un élément de contrôler son espacement par rapport aux éléments adjacents. Par exemple si une alerte a besoin d'être plus espacée que le reste :
.alert, .alert + * { --space: 3rem; }ou même de gérer simplement des déclinaisons
.stack.large { --space: 3rem; }Cette méthode est intéressante car elle permet de contrôler simplement la structure des espaces d'une section avec peu de sélecteurs. En revanche, elle implique d'avoir un code HTML simple où tous les blocs sont au même niveau.
Conclusion
A travers cet article nous avons vu différentes manières de gérer l'espacement et les inconvénients de chacune de ces méthodes. Il faut voir ces différentes approches comme des outils que vous pourrez utiliser suivant la situation.
- L'approche 1 (margin) conviendra pour des éléments qui ne sont pas réutilisé et qui ont un espacement constant sur tout le site
- L'approche 2 (utilitaire) conviendra si vous voulez gérer les espacements au cas par cas.
- L'approche 3 & 4 conviendra pour créer des sections où les enfants doivent tous être espacés et qui doivent pouvoir changer de structure dans le cadre du responsive.
Ces lignes utilisent le protocole SIP. Or il n’est jamais indiqué que ces lignes ne sont pas sécurisées… ce qui est problématique quand les communications passent par le Wifi et Internet.
En effet le protocole SIP ne chiffre ni l’authentification au service, ni les communications.
PS : j'ai oublié de préciser que c'est les communications par SIP chez OVH...
Tout n'est pas bon à prendre mais ça donne quand même plusieurs pistes à explorer.
Excellent !
Via l'ami Bronco
Conformément à un amendement du groupe LREM adopté au Sénat, l'article 50 du projet de loi prévoit l'ouverture automatique du dossier médical partagé (DMP), sauf opposition de l'usager.
Pour moi, ce sera niet. Pas de DMP.
Ils sont en train de tout centraliser et tout ficher. L'histoire nous a montré pourtant que les conséquences peuvent être fâcheuses...
Nous refuserions certainement une loi qui oblige notre boulanger à nous demander notre carte d’identité et à noter qui achète quoi sur un carnet à destination des autorités.
Et pourtant aujourd’hui nous payons tout par carte bancaire. L’État diminue peu à peu les plafonds qui nous autorisent à payer en monnaie et supprime en même temps tous les moyens de paiement un minimum anonymes. Les paiements en ligne sont eux tous explicitement nominatif sous prétexte d’établir des factures systématiques.
Nous refuserions un fonctionnaire qui nous connait dans notre rue, qui note systématiquement qui entre ou sort de chez nous et à quelle heure, au cas où un jour il y a un vol ou une agression.
Et pourtant nous acceptons les caméras de surveillance et la majorité voit d’un bon œil l’arrivée de la reconnaissance faciale sur ces caméras.
Il y a encore quelques années nous aurions été horrifiés de devoir donner notre identité pour voyager autrement qu’à pieds.
Et pourtant aujourd’hui nous avons un contrôle d’identité fort pour prendre l’avion. Il est prévu que les billets de TGV ne soient plus anonymes. Même l’autostop est devenu nominatif via son remplacement par le covoiturage sur des plateformes en ligne.
Désormais l’espace public est devenu une terre de surveillance. La vie privée se réduit au domicile, et à condition de ne pas interagir par téléphone ou par internet.
On en est au point où nos élus trouvent dangereux qu’on puisse communiquer entre nous de façon sécurisée sans qu’ils ne puissent intercepter nos messages en clair.
On en est au point où on nous a fait acter que montrer son visage dans l’espace public était une mesure de vivre ensemble et pas de surveillance.
Tout ce que nous lisons, tous les gens que nous rencontrons, tout ce que nous achetons ou échangeons, toutes les conversations que nous avons en dehors de chez nous, tous les trajets que nous faisons, … tout ça est enregistré, nominativement, et peut être accessible à un État.
De l’autre côté du globe, on voit des piles de vêtements à différents endroits de la ville et des photos de manifestations bardées de lasers verts comme un spectacle de discothèque. Les lasers mettent en défaite la reconnaissance faciale. Les piles de vêtements permettent de se changer pour mettre en défaite le suivi et l’identification par vidéosurveillance après les manifestations.
De quoi donner à réfléchir.
Alors quand je vois San Francisco — ville probablement la plus à la pointe et composée des gens les plus au fait de ces technologies — s’interdire d’utiliser la reconnaissance faciale, ça fait peut-être sourire certains mais pour moi ça veut encore dire quelque chose.
Il serait peut-être temps de se rappeler pourquoi donner trop de pouvoir à l’État est dangereux, pourquoi c’est au citoyen de contrôler son État et pas l’opposé, pourquoi la vie privée et le secret des correspondances sont essentiels à la vie démocratique.
560€/mois pour 35 heures par semaine ! Soit 4€ de l'heure. On n'a plus rien à envier aux petits chinois...
Alors cette histoire de points, déjà, je tiens à rassurer nos téléspectateurs, c'est qu'il ne s'agit pas de capitalisation. Il s'agit bien de... Nous allons, comme le système actuel...d'ailleurs, être un système qui, qui permet une... heu, heu transition complète heu yé heu yeuue....
Le point sera fixé à 10 euros. Il aura une... dans... dans toute sa fonction...heu... tout au long de la carrière, ce point sera revalorisé en fonction de...la l'inflation, lorsque la pension sera liquidée... et elle sera, il sera revalorisé en fonction des salaires tout au long de la période de votre carrière.
Et avec ça, c'est sûr qu'on est rassurés.
Ceci montre que si on ne pratique pas la langue de bois couramment, on est vite mis dos au mur. Même si elle a le trac devant la journaliste, on voit rapidement qu'elle ne maîtrise pas la novlangue.
Il y a 200 ans, ils auraient finis au bout d'une pique...
À quand le retour de bâton ???
Pour fabriquer un projecteur à base de RPI
En le couplant à un RPI, on a une tablette pour pas cher...
Un manuel en français pour la prise en main de Debian
A very usefull function in js for downsizing images client side. You can accept big images without fear, this will downsize them before you send them to your server.
The interesting bit of code is in dowsize-image.js, the rest is just for testing. It was tested with 35MB images on chrome, firefox and edge desktop. It was also tested with chrome, firefox and safari on mobile.
John Gruber’s canonical description of Markdown’s syntax does not specify the syntax unambiguously.
In the absence of a spec, early implementers consulted the original Markdown.pl code to resolve these ambiguities. But Markdown.pl was quite buggy, and gave manifestly bad results in many cases, so it was not a satisfactory replacement for a spec. Markdown.pl was last updated December 17th, 2004.
Because there is no unambiguous spec, implementations have diverged considerably over the last 10 years. As a result, users are often surprised to find that a document that renders one way on one system (say, a GitHub wiki) renders differently on another (say, converting to docbook using Pandoc). To make matters worse, because nothing in Markdown counts as a “syntax error,” the divergence often isn’t discovered right away.
There’s no standard test suite for Markdown; MDTest is the closest thing we have. The only way to resolve Markdown ambiguities and inconsistencies is Babelmark, which compares the output of 20+ implementations of Markdown against each other to see if a consensus emerges.
We propose a standard, unambiguous syntax specification for Markdown, along with a suite of comprehensive tests to validate Markdown implementations against this specification. We believe this is necessary, even essential, for the future of Markdown.
That’s what we call CommonMark