$('.col2').each(function () {
var item = $(this).text();
var num = Number(item).toLocaleString('fr-FR', { style: 'currency', currency: 'EUR' });
$(this).text(num);
});
toLocaleString : 123456.23 -> 123 456,23 €
Access internet Guadeloupe
Comparatif de deux lignes même et unique PC, même heure, dans la journée, puis le soir.
A Numéricable « la fibre » 30 Mb qui est en fait du câble coaxial
B Orange ADSL 20 Mb
| ping | Descendant | Montant | |
| Guadeloupe-Guadeloupe | |||
| Numéricable / SFR | 106 ms / 145 |
2.92 mb / 1.17 le soir |
0.92 mb / 0.94 |
| Orange | 122 ms / 18 ms |
7.01 mb / 6.98 le soir |
0.80 mb / 0.84 |
| Guadeloupe-USA | |||
| Numéricable /SFR | 111 ms / 112 |
2.08 ms / 1.37 le soir |
0.91 mb / 0.90 |
| Orange | 101 ms / 110 |
7,11 Mb / 6.58 le soir |
0.82 Mb / 0.86 |
| Guadeloupe-Europe | |||
| Numéricable / SFR | 124 Ms / 153 |
2.36 Mb / 1.20 le soir |
0.92 Mb / 0.93 |
| Orange | 140 Ms / 133 |
5.98 Mb / 6.82 le soir |
0.82 Mb / 0.73 |
A la ligne est vendue pour du 30 Mb en réalité c’est du 3 mb Le débit pour joindre des sites hors Guadeloupe reste à 3Mb, contrairement à Mediaserv qui ne dispose pas d’assez de bande passante pour servir tous ces clients. Le soir par contre c’est limite utilisable, ne comptez regarder un film en streaming. Ce qui est étonnant, c’est la stabilité du ping malgré la baisse de débit. Reste utilisable en SSH mais plusen RDP
B La ligne 20M n’en fait que 8, ce qui globalement est deux à trois fois mieux que Numéricable, l’accès au reste du monde est très correct. Cette ligne est régulièrement en panne, coupure, micro-coupure… comme souvent pour L’ADSL mal entretenu en climat tropical
J’ai fait d’autres mesures comme la gigue qui est plus critique que le débit en utilisation pro. Numéricable et Orange donnent des résultats similaires tout à fait acceptables.
Numéricable ne livre pas ce qui est vendu (débit / 10, cuivre au lieu de fibre) mais le résultat reste tout à fait convainquant pour une utilisation en entreprise. Voire un poil mieux pour le ping et la gigue. Le câble coaxial utilisé (rien à voir avec la fibre optique annoncée) est moins sensible à l’humidité. Comme le réseau est plus récent, la maintenance est plus simple.
L’infrastructure Orange est nettement un cran au dessus. Malheureusement « le dernier kilomètre » est en très mauvais état. Avoir un internet performant ne sert à rien s’il est coupé régulièrement. Pour ceux dont la ligne téléphonique cuivre est en bon état, Orange est la meilleure solution. Mais le réseau vieillissant et les interventions bâclées n’arrangent rien. Une petite réorganisation du service technique Orange pourrait changer la donne.
Javascript table
var arrayLignes = document.getElementById("monTableau").rows;
var longueur = arrayLignes.length;
var i=2 // 2eme ligne
var arrayColonnes = arrayLignes[i].cells;
var j=3;
var cellule=arrayColonnes[j];
cellule.style.backgroundColor = "red"; // change la couleur de la 3eme celulle de la 2eme ligne
rowIndex
sectionRowIndex
// numéro de ligne 0 en bas nbligne-1 en haut
var nouvelleLigne = document.getElementById("monBody").insertRow(-1); // insère une ligne en bas du tableau
// clique sur une cellule récupère le col_num et row_num et modifie le contenu
$(document).ready(function(){
$("#client_table td").click(function() {
var col_num = parseInt( $(this).index() ) ;
var row_num = parseInt( $(this).parent().index() + 1);
$("#result").html( "Row_num =" + row_num + " , Rolumn_num ="+ col_num );
document.getElementById("client_table").rows[row_num].cells[col_num].innerHTML='yyyy';
});
});
Javascript sélection modification de contenu
Sélectionner un objet
<div id="message" class="maclass"&gt; contenu du div</div>
var monobjet= document.getElementById('message');
var monobjet= document.getElementByClassName('maclass');
var monobjet= document.querySelector('message');
var monobjet= $('#message'); // jquery
var monobjet= $('.maclass'); // jquery
var myElements = document.querySelectorAll(".bar"); // plusieurs
monobjet.innerHTML='test123';
document.getElementById('message').innerHTML='test123';
$('#message').html('test123');
$(monobjet).html('test123');
insertAdjacentHTML() inserre un contenu, avant ou après, dans un DIV par exemple
<script>
var log = document.getElementById('message');
message.insertAdjacentHTML('beforeend', 'message ajouté à la fin du contenu');
message.insertAdjacentHTML('afterBegin', 'message ajouté au début du contenu');
message.insertAdjacentHTML('beforeBegin', 'message ajouté avant le DIV (ou objet)');
message.insertAdjacentHTML('afterEnd', 'message ajouté après le DIV (ou objet)');
</script>
infos ICI
querySelector innerHTML et textContent
document.querySelector('#message').innerHTML='test123';
document.querySelector('#message').textContent='test123';
// en jquery
$('#monchamps').html('32132');
$('#monchamps').text('32132');
$('#monchamps').append('32132'); // pour ajouter
Windows utilitaires
sysinternals Suite d’utilitaires indispensables pour Windows
Javascript array
var voiture = ['Saab', 'Volvo', 'BMW'];
var cars = new Array('Saab', 'Volvo', 'BMW'); // même chose syntaxe trop lourde
//plus lisible pour les longues listes
var voiture = [
'Saab',
'Volvo',
'BMW'
];
voiture[0] // contient Saab
var mesvoiture[1] = voiture; // on peut tout stocker dans une ligne de tableau, un autre tableau, un objet, une fonction ...
var mesvoiture[3] = ['Saab','Peugeot', 'Fiat'] ; // un tableau stocké dans un tableau
typeof voiture; // returns object et pas array utiliser plutôt :
Array.isArray(voiture); // true
var camion = []; // -> création du tableau camion vide
// ne pas utiliser si on veut un tableau -> voir objets
var person = {firstName:'John', lastName:'Doe', age:46}; // un peu comme un tableau, mais un objet -> les propriétés tableau ne s'y appliquent pas
voiture['marque']='peugeot'' // voiture est devenu un objet -> ne pas faire
/********************************************************/
var x = voiture.length; // x -> 3
var voiture_tri = voiture.sort(); // une copie de voiture triée par ordre alpha
voiture.push('Renault'); // ajoute à la fin du tableau et retourne la longeur du tableau
unshift() // idem début du tableau
var tt=voiture.pop(); // enlève le dernier élément du tableau et le met dans tt
var tt=voiture.shift(); // idem premier element
voiture.splice(2, 0, 'Fiat', 'Citroen'); // se positionne en 2 dans voiture, enlève 0 élement et insère Fiat, Citroen
var a = voiture.indexOf('Volvo'); // 1 voiture[1] = 'Volvo' permet de tester si une valeur est dans un tableau -1 si pas trouvé
var a = voiture.lastIndexOf('Volvo'); // comme indexOf mais parcours le tableau en partant de la fin
/***********************************************************/
// parcourir le tableau
var index;
for (index = 0; index < voiture.length; index++) {
console.log(voiture[index]);
}
// la même chose
function aff(item, index){ console.log(item);}
voiture.forEach(aff);
// parcour tout le tableau applique une fonction et retourne le résultat dans un tableau
var v2 = voiture.map(
function(valeur, index){return valeur + 'tt';}
); //v2 -> ["Saabtt", "Volvott", "BMWtt"]
// idem mais retourne une seule valeur
var v2 = voiture.reduce(
function(total, valeur){return total + '--' + valeur;} // total est le return du calcul précedent
); //v2 -> "Saab--Volvo--BMW"
reduceRight() ; // la même chose mais parcour le tableau de droie à gauche
voiture.reverse(); //['Saab', 'Volvo', 'BMW'] -- > ['BMW', 'Volvo', 'Saab'];
/************************************************************/
var voiture_txt = voiture.join(); // -> "Saab,Volvo,BMW" toutes les valeur du tableau dans une chaîne
var vehicule = voiture.concat(camion); // faire un tableu avec deux
// recherche le premier sur critère (saute les valeurs vides)
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
var adult = ages.find(checkAdult); // retourne 18 : la première réponse true de la fonction checkAdult
var adult ages.findIndex(checkAdult); // même chose mais retourne l'index : 2
les array sont aussi des objets -> voir les possibilité des object
liens
CSS sélecteur
<link rel="stylesheet" type="text/css" href="style.css">
* {font-size: 14px;color:orange;} /* selectionne tout ne sert à rien seul */
h1 { color: navy; } /* une balise*/
li a {font-size: 10px;} /* espace -> sélectionne tous les a contenu dans un li, ne sélectionne pas le li */
p > img {text-align: center;} /* La même chose, mais ne prends img que si tout de suite après p, pas d'autres balises sur le chemin */
h1, h2, h3 {background-color: red;} /* sélectionne toutes les h1 et h2 et h3*/
.message{
border: 1px solid black;
background: white;
}
<div id="prix" class="message"> ... </div> /* affecte la class message au div*/
<div id="qte" class="message"> ... </div> /* même class sur un autre div*/
#msg2{ border: 1px solid black; } /* comme une classe mais doit être unique */
<div id="mesg2"> ... </div> /* affecte le style mesg2 au div*/
div[tarif] { color: blue; } /* tous les div qui ont un attribut tarif*/
<div id="mesg3" tarif="3.20"> ... </div> /* affecte le style mesg3 au div*/
div[code_postal="38500"] { color: red; } /* tous les div dont l'attribut code_postal vaut 38500*/
<div id="mesg3" code_postal="38500"> ... </div> /* affecte le style mesg3 au div*/
div[code_postal=^"38"] { color: pink; } /* tous les div dont l'attribut code_postal commence pas 38*/
div[code_postal=~"38"] { color: pink; } /* tous les div dont l'attribut code_postal contient 38*/
<div id="mesg3" code_postal="38 75 33 01"> ... </div> /* affecte le style mesg3 au div*/
a {} a:hover {} a:visited a:active .menu a:hover {} div:hover
p:first-child /* premier sous-element*/
p i:first-child /* premier sous-truc des i qui sont dans des p */
/* si plusieurs règles s'appliquent à un même élément c'est la moins générale, la plus précise, qui l'emporte*/
p{color:red;}
.message{color:green;}
<p class="message"></p> /* sera green*/
/* */
PHPExcel
Lecture ecriture de fichiers Excel en PHP
<?php
require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel.php");
require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel/IOFactory.php");
$modele = $_SERVER[DOCUMENT_ROOT]."/monchemin//modele/excel_modele.xls";
$excelReader = PHPExcel_IOFactory::load($modele); //charge le fichier excel
$excelReader->setActiveSheetIndex(1); // sélection deuxième onglet (1) facultatif
$excelReader->getActiveSheet()->SetCellValue("C2", "test"); // Mets "test" dans la cellule C2
// acces aux cellule en numérique pratique pour des boucles
$excelReader->getActiveSheet()->setCellValueByColumnAndRow(1, 3, "test"); // Mets "test" dans la cellule B3
// mets une date MySQL dans la cellule C4
$bidon=faire_date($row["DATE"],$excelReader, "C4" );
// force le format texte pour afficher par exemple un code barre
$excelReader->getActiveSheet()->setCellValueExplicit("F5", $row[GENCOD], PHPExcel_Cell_DataType::TYPE_STRING);
// envoi le fichier excel au navigateur
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=mon_nouveau_fichier.xls");
header("Cache-Control: max-age=0");
$objWriter = PHPExcel_IOFactory::createWriter($excelReader, "Excel5");
$objWriter->save("php://output");
// ou pour sauver dans un fichier sur le disque (sans les header)
$objWriter->save("monfichier.xls");
function faire_date($dt,&$excelReader, $cel ){
$date1 = explode("-",$dt);
$time1 = PHPExcel_Shared_Date::FormattedPHPToExcel($date1[0], $date1[1], $date1[2]);
$excelReader->getActiveSheet()->getStyle($cel)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
$excelReader->getActiveSheet()->SetCellValue($cel, $time1);
}
?>
Microsoft excel affiche parfois des messages concernant l’intégrité ou la sécurité des fichiers produits. Préparer les modèles avec Libreoffice évite ce problème
quelques liens
Redshift luminosité ecran
Règle la luminosité et la couleur de l’écran en fonction de l’heure, pour Linux
Script d’installation, fichier de config, et icone dans la barre d’état.
Très bien pour limiter la fatigue visuelle le soir.
SVG dessin vectoriel utilisable sur le web
https://www.animatron.com pour faire des animations directement en ligne, mixe son vidéos, objets vectoriels, export divers format dont le svg, ou pack HTML5
http://svgcircus.com/ création d’animations SGV en ligne le source est dispo
https://jakearchibald.com/2013/animated-line-drawing-svg/ animation de SGV en javascript, explications
http://tympanus.net/codrops/2014/12/15/elastic-svg-elements/ menu animés en SGV et javascript