Le passage de la suite à l'équation est ici clairement présenté.
Quelques passages très intéressants, que je renote ici :
Les banquiers donnent souvent le total des intérêts payés, c’est-à-dire le montant, en euros, que la banque va encaisser sur la durée du prêt. Il s’agit de I=I1+...+IN.
Cette information doit être utilisée avec précaution et ne permet pas de comparer deux prêts s’ils ont des durées différentes. En effet cette information dit certes combien on va donner à la banque, mais pas à quel moment ! Or un banquier sait bien (c’est son cœur de métier) qu’à cause de l’inflation et des placements sûrs, une même somme en euros n’a pas vraiment la même valeur selon la date à laquelle on la reçoit.
Si l’on vous propose de payer 10 000€ aujourd’hui ou 11 000€ dans 10 ans, il vaut mieux la seconde solution. Par exemple, si vous mettez ces 10 000€ sur un livret A et en supposant que celui-ci rapporte 2% par an, au bout de 10 ans, vous aurez 10000×(1,02)10 = 12 189,94€, car les intérêts sont versés chaque année et portent à leur tour intérêt : ce sont les fameux intérêts composés, qui se traduisent par des puissances (et les formules plus haut comportent des puissances). Vous paierez alors les 11 000€ et il vous restera encore 1189,94€.
Donc attention, la donnée qui traduit vraiment l’effort de la banque, c’est le taux d’intérêt. C’est pour cela que c’est ce que l’on négocie âprement avec son banquier, ou que les informations données dans les sites Internet sur les prêts sont exprimées en taux.
Bien sur dans le cas ou l'on a vraiment l'intention de payer son crédit sur les N années, dans le cas ou l'on envisage de payer par anticipation, le raisonnement change.
Remarque 2 : Le principe qu’une même somme en euros vaut plus aujourd’hui que demain, est fondamental et se traduit même dans la loi. Savez-vous que lorsqu’un commerçant vous propose un crédit gratuit supérieur à 3 mois, ceux qui payent comptant doivent se voir proposer un escompte ? [2] Le taux de cet escompte est défini par une formule fixée réglementairement et calculé régulièrement en fonction de taux pratiqués le semestre précédent. (Voir l’article L. 311-7 du Code de la consommation ou les tous petits caractères des publicités proposant un crédit gratuit. Voir également ici et là) Sauriez-vous calculer l’escompte naturel pour un crédit gratuit sur 12 mois à un moment où le taux de référence est de 0,5% par mois ?
AHAAAA !
Nan, vraiment, l'article est super. Bien détaillé, complet. J'aime !
Je ne comprend toujours pas pourquoi tu continues à lire ce genre de truc -____-
This guy demonstrate how to override a component behavior through directives.
Usefull.
Je trouve l'exercice tres sympa ! On devrait subventionner des gars pour faire ce travail, c'est d'intérêt public !
Je dois encore le travailler mais c'est un début de réflexion.
Objectif : utiliser la classe de cette manière :
RomanNumber toto = new RomanNumber(5);
System.out.println(toto.toString());
Dans le cas ou l'on souhaite une représentation textuelle, bien sûr.
import java.util.LinkedList;
import java.util.List;
public class RomanNumber {
private List<RomanCharacter> characters;
public RomanNumber(int arabicNumber) {
this.characters = new LinkedList<>();
this.convertArabicNumberToRomanNumber(arabicNumber);
}
private void convertArabicNumberToRomanNumber(int arabicNumber) {
int remains = arabicNumber;
for (RomanCharacter currentCharacter : RomanCharacter.getOrderedRomanNumbers()) {
while (this.arabicNumberIsGreaterThanRomanNumber(remains, currentCharacter)) {
this.characters.add(currentCharacter);
remains = remains - currentCharacter.toInt();
}
if (remains == 0) {
break;
}
}
}
private boolean arabicNumberIsGreaterThanRomanNumber(int arabicNumber, RomanCharacter romanNumber) {
return arabicNumber > 0 && arabicNumber >= romanNumber.toInt();
}
public String toString() {
StringBuilder textualVersion = new StringBuilder(this.characters.size());
for (RomanCharacter character : this.characters) {
textualVersion.append(character.toString());
}
return textualVersion.toString();
}
}
import java.util.*;
public enum RomanCharacter {
M(1000), CM(900), D(500), CD(400), C(100), XC(90), L(50), XL(40), X(10), IX(9), V(5), IV(4), I(1);
private final int correspondingArabicNumber;
RomanCharacter(int arabicNumber) {
this.correspondingArabicNumber = arabicNumber;
}
public int toInt() {
return this.correspondingArabicNumber;
}
public String toString() {
return this.name();
}
public static List<RomanCharacter> getOrderedRomanNumbers() {
return Arrays.asList(RomanCharacter.values());
}
}
Omg... se faire réduire des dents saines pour se faire poser de fausses dents...
Le tout probablement dans un but purement esthétique, c'est affreux...
Un article, qui j'espère, sera le premier d'une longue série.
Il aborde un ou deux sujets qui sont vraiment des pain points mais ne remet pas du tout en question le fondement de la presse française : la presse française est une presse d'opinion, et l'opinion véhiculée n'est pas celle des gilets jaunes (je parle des gilets jaunes parce qu'ils le disent, les autres, je ne sais pas).
Donc on remet en question le process mais pas la culture.
Si je devais prendre une image, ça serait celle du gars en train de mourir sur son lit d'hôpital qui commence à dire "si je survis, je changerai ça et Ca..." et une fois rétabli, terminé les bonnes intentions.
C'est un article de pub ?
Je reprend les points :
1) No build step required
Hum... Le cli te setup un build complet en mode boîte noire, comme tous les concurrents.
Apparemment, tu n'es pas obligé d'en dépendre, ca peut être intéressant. Pas vraiment d'avis ! Mais Cest un aspect intéressant.
2) World-class CLI
Donc la, le gars dit que le cli vue à rattrapé la concurrence. Ok, cest cool.
3) Friendly learning curve
Je trouve vue tres proche de Angular par rapport au paradigme, donc je dirai que la différence vient des habitudes de langage de l'utilisateur. Peut être que le gars qui a écrit l'article n'est pas à l'aise avec le typescript et la programme orientée objet ?
À mon sens, tu sais faire l'un, tu sais faire l'autre.
4) A solid écosystem
Alors la, le gars m'a perdue. Dans tous les frameworks SPA, le routing et compagnie est inclus.
Le seul ou Ca n'était pas le cas, c'était angular 1.5 où il fallait passer par angular-Universal.
Mais Ca fait quelques années que ca n'est plus le cas.
On dirait le discours Scala vs Java 5 XD
5) the vue instance
Pour créer un un composant angular, Cest une annotation au dessus de ta classe pour linker le html et le css et ton composant est déclaré.
Même features des deux côtés.
6) vue3 lands this year
Les correctifs vue.js rejoignent ceux de Aurélie avec le binding des listes. Good for vue.
Je vais m'arrêter la, le reste ce sont des arguments tres subjectifs.
À mon avis, le gars exprime exactement la raison pour laquelle vue.js ne m'intéresse pas : il propose la même chose que les leaders.
La seule distinction c'est la gestion par module pour Angular.
Aurélia, toujours premier dans mon cœur <3
Je met ça ici afin de garder une note de navigateurs libres spécialisés
Pourquoi quand Cest moi qui le fait, cest pas vegan ? 😢
Depuis la mise en place de la Flat Tax en 2018, le taux d'imposition des dividendes en SA** est le même pour tous : 30% (12,8% d'impôt sur le revenu et 17,2% de cotisations sociales).
"Sachez que vous pouvez décider de ne pas profiter de ce prélèvement de 30% et choisir que vos dividendes soient imposés à l'IR après un abattement de 40%. Vous resterez pour autant redevables des 17,2% de cotisations sociales."
Donc l’impôt sur les dividendes sort de l'impôt par pallier pour être imposé forfaitairement à 17,2%.
Cela a permis l'impôt à la source, mais à quel coût ?
Ce gars est intéressant dans le sens où il s'exprime clairement et calmement.
À suivre.
Certes, je comprend le problème de fond, mais la réalité est simple :
Les développeurs sont les ouvriers de demain. Mieux vaux un code pourri que pas de code du tout. Du moins, pour les entreprises.
Un site web moche est toujours plus rassurant/visible que pas de site web du tout.
L'explosion de l'informatique augmente la demande... Cela dit, je connais quelques banques qui ne s'approvisionnent presque plus en developpeurs français.
Si on augmente la quantité de devs, on anticipe les demandes (et on fait un peu baisser les prix en passant).
Ce petit jeu permet de réfléchir à plusieurs son organisation d'équipe.
Hi hi ! J'adore ce genre de truc !
Tandis que je regarde un peu ce que propose VueJs, je vais mettre ici mes notes :
Pb de set-up avec VueJS:
- Nécessite une connexion avec GitHub pour récupérer le format de templating :/
- Notion de templating à approfondir ??? On ne sait pas trop quel template propose quoi...
Contournement sur Windows (sigh) :
- Récuperer le template sur Github (téléchargement direct)
- Le mettre dans un dossier C:/Users/****/.vue-template/NOMDUTEMPLATE
- Relancer la création de l'application : vue init NOMDUTEMPLATE NOMDUPROJET --offline
- Entrer dans le dossier contenant l'application
- npm install
- npm run dev
Du côté du build, on a deux commandes disponibles :
- dev : pour tester en live
- build : pour builder le tintouin.
Ca a l'avantage d'être déjà configuré. Le reload est rapide. Je pouce en l'air !
<a href="?addtag=Gestion" title="Hashtag Gestion">#Gestion</a> des composants :
Coupler les trois couches : js - css - html
Ou les séparer et les importer au besoin :
<template>
<div>This will be pre-compiled</div>
</template>
<script src="./my-component.js"></script>
<style src="./my-component.css"></style>
C'est bien de laisser le choix. La gestion des composants est très proche d'Aurélia : on peut importer n'importe quel composant dans n'importe quel autre sauf que l'import a lieu coté model, là ou Aurélia le met par défaut côté template (pas d'avis sur le sujet pour le moment).
Ça créé des problèmes si la personne n'est pas très propre sur son code (on ne sait pas quel composant est appelé où). Mais c'est plus un pb côté éditeur.
Je ne suis pas fan du côté module d'Angular : a voir si cette façon de faire est encore présente dans Angular 6 (Je connais très bien Angular 4 mais pas encore bien le 6 ni le 7)
Pré-requis : Component template should contain exactly one root element : un seul div racine <= pourquoi pas ! C'est pas plus mal :)
Le binding de class css est un peu foireux (plus proche de la logique angular) :
VueJS :
v-bind:class="{ active: isActive, 'text-danger': hasError }"
Aurelia :
class="${isActive ? 'active' : ''}"
Angular :
[class.active]="isActive"
Le binding de style est tout aussi dégueulasse :
VueJs :
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
Aurelia :
<div style="width: ${width}px; height: ${height}px;"></div>
Angular :
[style.color]="isSpecial ? 'red' : 'green'"
Conditional rendering : Pareil que la concurrence
VueJS :
<h1 v-if="ok">Yes</h1>
<h1 v-else>No</h1>
Aurelia :
<div if.bind="greet">
Hello, World!
</div>
Angular :
<div *ngIf="show">
Text to show
</div>
C'est la même merde que les autres. Tout va bien :)
CELA DIT : SI TU FOIRES TA GESTION DU IF, T'AS QUAND MÊME GRAVE L'AIR D'UN CON !
V-if et v-for marchent pas ensemble. Comme partout ailleurs. RAS.
Et ils ont tellement merdé la conditionnelle de class et style qu'ils proposent v-show, qui ressemblerait globalement à
<div style="display:${mustbeshown}"></div>
chez Aurelia
Boucle dans le template : RAS
VueJS :
<ul id="example-1">
<li v-for="item in items">
{{ item.message }}
</li>
</ul>
Aurelia :
<template>
<template repeat.for="friend of friends">
<p>Hello, ${friend}!</p>
</template>
</template>
Angular :
<li *ngFor="let user of userObservable">
{{user}}
</li>
Pas de choses fofolles côté event management ou forms.
Côté binding, on retrouve les bonnes idées Aurelia :
<blog-post
v-for="post in posts"
v-bind:key="post.id"
v-bind:title="post.title"
></blog-post>
Aurelia :
<blog-post
repeat.for="post in posts"
key.bind="post.id"
title.bind="post.title"
></blog-post>
Quand on aborde la question des events, là, je grince un peu des dents...
Appeler une méthode du model depuis la vue (via un boutton par exemple) :
VUEJS :
<template>
<div>
<button v-on:click="clickTest()">trololo pouet pouet click me</button>
</div>
</template>
<script>
module.exports= {
data: function () {
return {
clickTest: function () {
console.log("THIS SIS DGKMGHKGLKLK");
}
}
},
//OU :
methods: {
clickTest: function () {
console.log("THIS SIS DGKMGHKGLKLK");
toto="texte4"
}
}
}
</script>
AURELIA :
<template>
<button click.trigger="clickTest()">Cancel</button>
</template>
export class MYCOMPONENT {
public void clickTest() {
console.log("THIS SIS DGKMGHKGLKLK");
}
}
Angular :
<template>
<button (click)="clickTest()">Cancel</button>
</template>
export class MYCOMPONENT {
public void clickTest() {
console.log("THIS SIS DGKMGHKGLKLK");
}
}
On peut considérer la fonction comme étant une data... OK. Ou alors,y a un petit espace privatif pour les méthodes....
Cétait pas possible de définir un endroit pour tout mettre ? Il faut mettre les pommes dans le tiroir à pommes et les couteaux dans le bac à couteaux...
OUI MAIS ! pourquoi ? On distingue de manière physique les constantes, les variables bindées et les méthodes... on ne sait pas le faire sans distinguer ? Je ne veux pas être tributaire de votre synthaxe alambiquée, je veux pouvoir choisir d'encapsuler mes objets, de faire contenir mes méthodes dans des classes extérieures... et votre framework n'encourage pas du tout à penser le code de manière testable et autonome sans le framework...
Je ne comprend pas l'expérience utilisateur que vous avez pensée....
Le summum du cocobongo : Le data binding entre composants
Alors là, les gars de vueJs nous l'ont bien géré à l'antipattern angular :
To update the parent property, what you should do is $emit the updated value and listen for the change in the parent.
Vue.component("navigation-form",{
template: '#navigation-form',
props: ['propRoomSelected'],
data: function () {
return {
roomSelected: this.propRoomSelected,
}
},
methods:{
updateCoachStatus: function(event){
this.$emit("update-room-selected", 67) ;
}
}
})
Nan les gars, là je vous suis pas... Pourquoi ne pas faire comme Aurelia :
<component toto.bind="tata"></component>
export class Toto {
public toto: String;
public void changeToto() {
this.toto = "titi";
}
}
LE DOUBLE DATA BINDING DOIT ÊTRE NATIF ! PAS REIMPLEMENTE A CHAQUE VARIABLE AVEC DES RE-EMISSIONS A GOGO !
C'est chiant et lourd à lire, sans déconner...
CONCLUSION
Mon avis pour le moment :
1) La synthaxe VueJS est quand même très invasive côté "corporate".
ON SAIT QUE C'EST VUEJS !!! TOUS LES FICHIERS S'APPELLENT VUE BON SANG ! POURQUOI VOUS NOUS METTEZ DES PETITS V PARTOUT, BON SANG DE BOIS !
Note à postériori : Bon, ok, plutôt que v-bind:toto, on peut écrire :toto (OUF !)
2) Une vision très orienté JS
3) Un usage qui n'est pas très instinctif pour un dev
Un dev, pour déclencher l'usage d'une class de style, va naturellement penser conditionnelle et
class="{{isOK ? 'class1': 'class2'}}"
me semble plus instinctif à écrire que
v-bind:class="{ class1: isOK, class2: !isOk}"
4) La gestion du double data binding, ça m'a tuer (sans faute de frappe). C'est super moche.
Aurélia, tu as toujours la première place dans mon coeur <3 (udabest)
<(>_<)>
À suivre...
Ca m'embête ce que je lis de ce shaarliste en lien (riff?), parce qu'il m'arrive d'utiliser des expressions sans vraiment savoir leur origine ni leur signification...
J'ai appris que "cordialement" veut dire "avec le cœur" cette année.
Je connais l'expression "mettre une quenelle" mais je ne savais pas qu'elle était rattachée à Dieudonne. J'aurais tendance à penser que dieudonne a utilisé une expression populaire ?
Parce que je ne connais pas son travail et que je n'ai jamais vu un seul de ses spectacles... donc on va m'assimiler a l'avis de quelqu'un dont je ne connais même pas... l'avis ?
(Note a posteriori : j'ai retrouvé l'expression que je cherchais : "mettre une olive" ! Beaucoup employé par mes camarades d'école. Comme quoi : qui invite ? Et qui réinvente ?)
Il y a un mot pour ca : un procès d'intention.
Et en justice, vous ne rendrez pas coupable un individu présumé innocent avec ce genre d'approche. Sauf si vous avez déjà un biais concernant sa culpabilité.
Je ne débattrais pas du fond parce que je n'ai pas suivi Ruffin, et que je n'ai pas envie de le faire pour le moment.
N'empêche, si demain, on m'enlève toutes les idées et les mots parce que quelqu'un de "mal" les a utilisés, je vais devenir bien pauvre et je vais avoir du mal à exprimer mes idées...
Si demain, Marine le Pen est pour le mariage gay, est-ce qu'il faudra interdire le mariage gay ?
(Je met un disclaimer en mode YouTube : je ne soutiens pas Marine Le Pen et je suis pour le fait que tous les citoyens aient les mêmes droits et cela passe par la liberté de se marier avec qui on veut)
Nous en parlions récemment : le devoir de réserve des enseignants passe par la loyauté absolue à l'institution éducative. On ne critique pas la hiérarchie.