JS : Slider d'images progressives


1 mars 2011

Cette fois on veut une transition un peu plus travaillée : l'image suivante recouvre progressivement l'image courante sans mouvement apparent d'aucune des deux. D'abord la démo :

Le fonctionnement est un peu plus brutal : énormément de DIV sont créés pour représenter chacun une ligne de l'image qui apparaît et ces DIVs sont placés par-dessus l'image courante à l'aide de la propriété CSS z-index. Rien de complexe au niveau de la technique mais le DOM est surpeuplé pendant une transition :)

Simulation d'emprunt


20 juin 2010

Présentation & démonstration

Etant à la recherche d'un bon outil de simulation d'emprunt bancaire et n'en trouvant pas, je me suis dit que le mieux était de faire ce dont j'avais besoin. (Expliquer les paramètres)... Voici donc le résultat (j'explique les calculs après la démo).

Capital à emprunter : Mensualité maximale : Assurance : % Annuités et coûts

Notes de calculs

Quand on parle d'un emprunt à 4%, on exprime le fait que chaque année le client doit payer au prêteur 4% de la somme restant dûe à ce moment là. Ainsi, si on note les intérêts dûs pour l'année n et le capital restant dû au début de l'année n, on a : avec t le taux de l'emprunt, ici 4%, soit 0.04. La somme totale empruntée se notera K, avec .

La plupart des prêts souscrits aujourd'hui se font à "annuités fixes", ce qui se traduit par le fait que l'emprunteur remboursera chaque année (et donc chaque mois) la même somme, ce qui est bien pratique pour se projeter quand on acquiert un bien. Ce qui est également bien pratique quand on est du côté du prêteur, on sait à l'avance ce qu'il va gagner. Qui a dit "sans rien faire" ?

On déduit de ce qui précède que la somme des intérêts payés pour une année et du capital remboursé pendant cette même année est constante. Si on note le capital remboursé durant l'année n et A l'annuité fixe : .

Ainsi :

Supposons que la formule soit valide et démontrons qu'elle reste valide pour le rang n.

Les intérêts de l'emprunt pour l'année n sont : ce qui permet d'écrire que le capital remboursé pour la même année est :

De proche en proche on peut simplifier cette expression :

CQFD

Ayant exprimé et à partir des données K, A, t et p (la durée d'emprunt), chacune de ces données peut donner lieu à une question intéressante :

  • Quelle est la durée optimale pour rembourser K, connaissant t et A ?
  • Quelle est l'annuité/mensualité connaissant K, t et la durée ?
  • Quelle est le capital empruntable connaissant A, t et la durée ?
  • Etc.

Durée optimale de remboursement

On cherche à connaître p tel que .

Pour cela on a besoin de transformer la somme en formule simple, nous allons donc faire une petite digression. Or, puisque on a affaire à une suite de raison 1+t.

Si on note la somme précédente s'écrit :
On va utiliser une petite astuce :
Pour écrire :
Et au final :

La digression étant terminée, reprenons notre calcul :

Donc :

Donc, si on connait la mensualité que peut se permettre l'emprunteur, le capital dont il a besoin et le taux en vigueur pour la banque, on peut en déduire la durée d'emprunt idéale. En utilisant la formule précédente, on peut donc faire le petit outil de calcul ci-dessous :

ParamètresDurée idéale
Capital emprunté : �
Taux usuraire : %
Mensualité idéale : �

C'est l'outil idéal pour optimiser son emprunt en faisant varier légèrement les paramètres de la banque, i.e. c'est avec ça que l'on négocie !

Calcul de l'annuité

Si on fixe le capital emprunté K, ainsi que le taux et la durée on peut calculer l'annuité et donc la mensualité d'un emprunt. C'est typiquement ce qu'imprime une banque à son client en appelant ça une "simulation".

Pour calculer cela on reprend le calcul et on écrit :

ParamètresAnnuité / mensualité
Capital emprunté : �
Taux usuraire : %
Durée en années : %

Capital empruntable

Pour terminer avec ces mini-outils, si on fixe la durée, le taux et la mensualité, on peut calculer le capital empruntable par le client à l'aide du calcul suivant (en se souvenant bien que ) :

Et pour finir :

ParamètresCapital empruntable
Durée en années : %
Taux usuraire : %
Mensualité idéale : �

Cotisations sociales françaises


10 mars 2010

Dans le but d'apprendre un peu ce que contiennent les fiches de paies en France, j'ai décidé de m'attaquer à leurs décompositions : qu'est-ce que le plafond de la sécurité sociale ? Qu'entend-t'on par charges salariales et patronales ? etc. En m'informant je me suis rendu compte qu'il ne fallait pas énormément de code pour simuler une fiche de paie qui convient dans la majorité des cas. J'en ai donc fait le mini-outil ci-dessous que vous pouvez nourrir avec vos paramètres : le salaire brut souhaité, l'effectif de la société etc.

Ceci permet de constater qu'il y a une énorme différence entre l'argent décaissé par un employeur et ce que reçoit effectivement le salarié en bout de chaîne : la sécurité sociale, les caisses de retraites, les impôts et tout un tas d'autres organismes se servent au passage. C'est sublime...

Pour info, ce que j'appelle le salaire "patronal" est parfois appelé "superbrut".

Bien évidemment, ce code datant de 2010, il y a sûrement quelques dispositions qui ont dû changer mais c'est plus que suffisant pour se rendre compte de l'environnement économique et politique dans lequel toutes les entreprises et tous les salariés évoluent, souvent sans même en avoir conscience. De plus, ça va sans dire mais ça va toujours mieux en le disant : n'utilisez pas ces tableaux dans votre comptabilité officielle, ou alors à vos risques et périls : si ces fiches de paies sont valables pour comprendre le mécanisme et faire un prévisionnel, les quelques points manquants pourraient vous attirer des ennuis avec le bien-aimé fisc !

A noter que j'en ai profité pour calculer le montant de l'impôt sur le revenu basique (salarié, non-rentier, célibataire) et un calculateur de "salaire inverse" : on indique le salaire net souhaité et l'outil calcule automatiquement le salaire brut qui correspond :)

Le poste L'entreprise Impôts Calcul inverse
Salaire brut :
Brut annuel _
Nb d'heures :
Prix d'une heure : 000
Heures supp. :
Cadre ? CDD ?
Effectif :
Salaire patronal : _
Patronal annuel : _
Net / brut : _
Net / Patronal : _
Net mensuel : _
Net annuel : _
IR : _
Taux marginal de _
Net :
Brut : _
_
_
_

Pour réaliser ce module, j'ai dû consulter les sources suivantes :

Titre de l'article


1 janvier 2010
Une ombre au dessous du ruban bleu du menu
Une petite anim sur la première ligne ? Peut-être un dégradé ?
Site de design et de CSS : http://www.maxdesign.com.au/

Sous-Titre 1

On examine tout d'abord la notion d'image panoramique : collage ou fish-eye.
On se sentira plus concerné par le collage de plusieurs images.
On devra, à partir de là, découper cette gigantesque image en une série de triangles/quads que l'on va mapper sur la surface équivalente d'une sphère.
Pour tester le code run-time, il suffit de faire une applic Flash qui réalise la chose : on affiche les faces d'une sphère vues de l'intérieur.
Etape 1 : générer les faces d'une sphère et afficher l'objet tel quel.
http://www.geeks3d.com/hacklab/20100319/webgl-demo-bluffante/ http://www.khronos.org/webgl/wiki/Demo_Repository http://webuser.hs-furtwangen.de/~dersch/PTViewerNG/PTViewerNG.html http://3d.zhaiduo.com/category-5/webgl/webglfloatarray-is-not-defined

Les différents JOINs du standard SQL démystifiés


15 mai 2009

Introduction

Les jointures SQL, représentées par la clause JOIN, sont une façon standardisée de combiner les éléments de deux ou plusieurs tables en leur demandant de suivre une condition. Ces jointures, ces combinaisons, peuvent parfois s'appliquer sur la même table plusieurs fois (par exemple pour les classements sportifs). Grossièrement, il existe deux types de jointures : les internes, représentées par la clause INNER JOIN, et les externes, par OUTER JOIN.

Ces notes sont tirées du chapitre 9 de SQL Bible, A. Kriegel & B. Trukhnov, Wiley 2003 et ne représentent certainement pas un tutorial mais un pense-bête personnel.

Les jointures internes

Les clauses INNER JOIN combinent donc deux tables, ou plus, et renvoient les lignes pour lesquelles la condition de jointure se vérifie, à l'exclusion de toutes les autres.

...FROM <table1>
    [INNER | NATURAL | CROSS] JOIN <table2>
    [ON <condition> | USING <col_name>, ...]...
Syntaxe d'un INNER JOIN

Les jointures internes naturelles et libres

L'option NATURAL est appliquée quand les tables à joindre possède des noms de colonnes en commun et que l'on veut que la jointure les suivent. L'intérêt est que la requête est simple à écrire (mais pas forcément à comprendre) mais ceci impose que les colonnes liées aient les même noms.

Si NATURAL ne peut pas être utilisé (par exemple si les colonnes liées n'ont pas le même nom ou si on ne veut pas qu'elles soient TOUTES concernées par la jointure), on va utiliser les options INNER (le plus souvent) ou CROSS (dans des cas rares).

Ces deux options s'utilisent avec des conditions de jointures : les clauses USING et ON. USING est suivi d'une série de noms de colonnes qui doivent être les mêmes dans les deux tables, cette clause permettant de réaliser une jointure interne comme NATURAL mais sur un sous-ensemble de colonnes communes. La clause ON quand à elle permet de spécifier une série de conditions comme WHERE peut le faire, on est donc cette fois totalement libre de définir la jointure. Par contre la requête se complexifie d'autant (on n'a rien sans rien).

NATURAL : toutes les colonnes de même noms
INNER/CROSS avec USING : les colonnes de même noms que l'on choisit
INNER/CROSS avec ON : jointure que l'on peut définir librement
simplicité d'écriture vs liberté de jointure

Donc pour résumer : on utilisera soit NATURAL sans conditions de jointures, soit INNER/CROSS avec des conditions de jointures.

Le CROSS JOIN

Un CROSS JOIN est le produit cartésien des tenseurs en algèbre : pour chacune des lignes de la table A on associe toutes les lignes de la table B.

On peut se servir de ce type de jointure pour l'élaboration de données de test car on a immédiatement un grand nombre d'éléments après son application.

Les jointures externes

OUTER JOIN : les jointures externes car les INNER JOIN ignorent par définition les colonnes contenant des NULLs dans une seule des deux tables et que ces lignes peuvent tout de même nous intéresser. Une jointure externe renvoie TOUTES les entrées de la table A (à la clause WHERE près évidemment) et celles de la table B qui leur correspondent SI elles existent.

...FROM <table1>
((LEFT | RIGHT | FULL) [OUTER] | UNION) JOIN <table2>
[ON <condition>] | [USING <col_name>, ...], ...
Syntaxe d'une jointure externe

Les jointures externes gauche et droite

Les jointures externes complètes

Un FULL OUTER JOIN renverra la combinaison des deux A LEFT OUTER JOIN B et A RIGHT OUTER JOIN B.

Les UNION JOINs

Les UNION JOINs représentent l'intersection des deux JOINs suivants : (A FULL OUTER JOIN B) et (A INNER JOIN B) On extrait donc les lignes jointées qui correspondent entre les deux tables ou celles qui ont un NULL parmi les champs considérés, on extrait d'autre part les lignes dont les éléments correspondent entre les deux tables et on prend l'intersection de ces deux résultats. On obtient donc toutes les lignes jointées qui ont un NULL dans une des deux tables.

Ex : on doit donc pouvoir avoir les matches non joués de toutes les équipes.

Les jointures à l'ancienne, i.e. sans JOIN explicites mais avec une clause WHERE

On peut effectivement facilement trouver une correspondance entre les INNER JOINs et la "l'ancienne notation" qui n'utilise que la clause WHERE. Mais qu'en est-il des OUTER JOINs, ça a l'air bien plus compliqué de trouver une équivalence de ce type ? Ceci sans utiliser les notations batardes d'Oracle ou MS...

/* Ex : les matches de foot joués par une équipe. Un INNER JOIN ne renverra pas les matches non joués, i.e. ceux qui ont NULL dans les scores. Ex : on peut prendre comme exemple les matches de foot que j'ai déjà fait pour expliquer les LEFT et RIGHT OUTER JOINs. On aura tous les matches d'une équipe, joués ou pas. Pour les FULL OUTER JOINs >On peut peut-être séparer la notion de score à domicile et à l'extérieur pour illustrer les LEFT, RIGHT et FULL OUTER JOINs ! */ //OUTER JOINs simplification : http://dev.mysql.com/doc/refman/5.1/en/outer-join-simplification.html //LEFT and RIGHT JOINs optimization : http://dev.mysql.com/doc/refman/5.1/en/left-join-optimization.html //JOINs syntax : http://dev.mysql.com/doc/refman/5.1/en/join.html
1 2 3...... 10 11 12 13 14... 18 19 20