
Windows Serveur 2012 : Active Directory et DNS
Windows Serveur 2012 : Active Directory et DNS Contrairement à Windows 2008 R2, il faut débord installer le rôle avant de créer L'active Directory. Pré-requis: - Une adresse IP statique doit être configuré. I - Installation du service Active directory et DNS Dans la console "Server Manager", rendez-vous dan[...]

Les types de comptes d’utilisateurs windows
Les types de comptes d’utilisateurs Windows Il existe plusieurs types de comptes d’utilisateurs dans Windows : Comptes Administrateur : Ils permettent aux utilisateurs d’ouvrir une session en tant qu’administrateurs. Ce compte peut exécuter n'importe quelle instruction sur le[...]

Comment tester un login Windows sans ouvrir de session
Comment tester un login Windows sans ouvrir de session. Voici un utilitaire qui me rend de grand service. testADLogin permet de tester la validité d’un compte dans une architecture Active Directory sans ouvrir de session. En plus le programme est hyper simple. Tout est dit dans le titre, vous allez pouvoir t[...]

Gérer Windows Server en ligne de commande
Pourquoi installer Windows Server Core ? Lorsque l’on installe Windows Server, deux options s’offrent à nous : une installation complète comprenant l’interface graphique, et une installation minimale – presque – sans interface graphique (core). Installer Windows Server en mode « core » ne signi[...]

Windows Serveur 2012 : DHCP
Windows Serveur 2012 : DHCP Ce tutoriel traitera des options de base du rôle DHCP, les configurations avancée sera traité dans un autre tutoriel. I) Installation du service DHCP Dans la console "Server Manager", rendez-vous dans la partie "Dashboard" puis cliquer sur "Add roles and features", La fenêtre ci-[...]

Simuler un réseau WAN entre deux réseaux LAN
Simuler un réseau WAN entre deux réseaux LAN A partir de sa version 2.6, le noyau Linux dispose d'une fonction permettant de simuler certaines caractéristiques comme un délais de transit, une perte de paquets ou même un débit maximal sur une simple interface réseau locale. J'avais déjà parlé de ce s[...]

Simuler un lien WAN sous Linux
Simuler un lien WAN sous Linux Il peut être utile, dans le cadre de tests applicatifs, de simuler sur votre réseau local (LAN), les caractéristiques d'une liaison distante (WAN). En effet, vos applications peuvent très bien fonctionner sur un réseau LAN et devenir inexploitable sur des liaisons WAN. Nous allons [...]

surveiller un réseau informatique, de nombreuses commandes
Normal 0 21 false false false FR X-NONE AR-SA [...]

Découpage d'une plage d'adresses
Découpage d'une plage d'adresses Ce chapitre va vous demander beaucoup d'attention et de réflexion. Il va y avoir pas mal de calculs et de notions à maîtriser. Ne les négligez pas, car la compréhension des notions abordées sera nécessaire pour la suite du cours ! Les découpages que nous allons aborde[...]

Scanner les adresses IP utilisées sur un réseau sans aucun
Si vous souhaitez scanner une plage d’adresse IP sur votre réseau afin de vérifier la disponibilité d’une ou plusieurs adresses ou inventorier vos machines, voici une astuce toute simple pour le faire sans outils spécifiques,depuis une invite de commande Windows. Pour cela nous allons utiliser [...]

Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bi
Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bits Dans ce premier tutoriel consacré à Zimbra vous allez voir comment installer une machine virtuelle sous Ubuntu 10.04 LTS pour accueillir notre serveur Zimbra. Environnement de test: Comme je l’ai dit dans mon premier article consacré à Zimbr[...]

Serveur DHCP sous Linux
Serveur DHCP sous Linux I. Présentation Un serveur DHCP permet de fournir automatiquement une configuration IP à une machine, par exemple à des ordinateurs, des smartphones, des imprimantes réseau, en gros tous ceux qui peut être connecté à un réseau. Cette configuration IP est composée : d’une adresse IP d’[...]

Configuration d'un serveur dédié de A à Z
Installation d'un serveur dédié de A à Z Installation, configuration et administration d'un serveur dédié Ces tutoriaux ont été réalisés sous Debian (versions Etch 4.0 et Lenny 5.0) mais peuvent être transposés à d'autres distributions Linux, notamment Ubuntu. Ils sont applicables aux serveurs dédiés 1&[...]

Installation pas à pas de Xen sous Debian
Installation pas à pas de Xen sous Debian Le but de ce billet est d'installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c'est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre [...]

Simuler un réseau WAN entre deux réseaux LAN
Simuler un réseau WAN entre deux réseaux LAN A partir de sa version 2.6, le noyau Linux dispose d'une fonction permettant de simuler certaines caractéristiques comme un délais de transit, une perte de paquets ou même un débit maximal sur une simple interface réseau locale. J'avais déjà parlé de ce s[...]

Installation pas à pas de Xen sous Debian
Installation pas à pas de Xen sous Debian Le but de ce billet est d'installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c'est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre [...]

Administration et utilisation d'Hyper-V R2
Administration et utilisation d'Hyper-V R2 Nous allons voir dans ce guide comment administrer Hyper-V R2. Une fois connecté sur votre console d'administration (Hyper-V Manager), toutes les actions disponibles se trouvent dans la partie droite de votre MMC (partie « Actions »). [...]
Installation et configuration de VMware Vcenter Server 5.0
Installation et configuration de VMware Vcenter Server 5.0 I - Pré-requis Le .NET Framework 3.5 ou plus doit etre installé sur le serveur, comme le montre l'image ci-dessous, II - Installation de la partie serveur Inséré le DVD ou monté l'image ISO sur le serveur, la fenêtre ci-dessous s'ouvre, cliquer su[...]

installer un hyperviseur VMware ESXi 5.5
Vmware est pour moi la meilleur solution de Virtualisation. Je profite justement d’une install d’un Hyperviseur Vmware Esxi 5.5 pour vous rédiger un petit tutoriel sur son installation. 1) Installation d’un hyperviseur ESXI -Tous d’abord inscrivez vous sur le site de Vmware est téléchargez gratuitement l’I[...]

mise en place du rôle Hyper-V sous Windows Serveur 2012 R2
mise en place du rôle Hyper-V sous Windows Serveur 2012 R2 ainsi que la configuration d’une machine virtuel. Rappel : Hyper-V, également connu sous le nom de Windows Server Virtualisation, est un système de virtualisation basé sur un rôle de Windows Server. Hyper-V vous permet de consolider les charges de[...]

Windows Serveur 2012 : Active Directory et DNS
Windows Serveur 2012 : Active Directory et DNS Contrairement à Windows 2008 R2, il faut débord installer le rôle avant de créer L'active Directory. Pré-requis: - Une adresse IP statique doit être configuré. I - Installation du service Active directory et DNS Dans la console "Server Manager", rendez-vous dan[...]

Lister les comptes ordinateurs inactifs de votre domaine av
Lister les comptes ordinateurs inactifs de votre domaine avec la commande DSQUERY Lister les comptes ordinateurs inactifs de votre domaine avec la commande DSQUERY. Dans ce tutoriel, nous utiliserons la commande dsquery, pour effectuer quelques tâches d’administrations sur notre domaine Acti[...]

Les types de comptes d’utilisateurs windows
Les types de comptes d’utilisateurs Windows Il existe plusieurs types de comptes d’utilisateurs dans Windows : Comptes Administrateur : Ils permettent aux utilisateurs d’ouvrir une session en tant qu’administrateurs. Ce compte peut exécuter n'importe quelle instruction sur le[...]

Comment tester un login Windows sans ouvrir de session
Comment tester un login Windows sans ouvrir de session. Voici un utilitaire qui me rend de grand service. testADLogin permet de tester la validité d’un compte dans une architecture Active Directory sans ouvrir de session. En plus le programme est hyper simple. Tout est dit dans le titre, vous allez pouvoir t[...]

Active Directory
Active Directory I. L’Active Directory L’Active Directory est un annuaire LDAP pour les systèmes d’exploitation Windows, le tout étant créé par Microsoft. Cet annuaire contient différents objets, de différents types (utilisateurs, ordinateurs, etc.), l’objectif étant de centraliser deux fonctionnalit[...]

la mise en place de MDT pour réaliser des déploiements d'OS
la mise en place de MDT pour réaliser des déploiements d'OS Ce qu’il vous faut Windows ADK http://www.microsoft.com/fr-fr/download/details.aspx?id=39982 Une ISO Windows 8.1 http://technet.microsoft.com/fr-fr/evalcenter/hh699156.aspx Plus d’info sur le choix de l’ISO : choix-iso-creation-mas[...]

Masquer la connexion Wifi au déploiement de Windows 8.1 ave
Masquer la connexion Wifi au déploiement de Windows 8.1 avec MDT 2013 Il y a un bug dans MDT 2013 à la création de la séquence de tâches pour déployer Windows 8.1. En effet la séquence de tâches utilise le mauvais modèle de fichier de réponse où il manque plusieurs propriétés dans la section <OOBE>, com[...]

Migration Windows XP vers Windows 8.1 avec MDT 2013
Migration Windows XP vers Windows 8.1 avec MDT 2013 Vous souhaitez réaliser une migration Windows XP vers Windows 8.1 avec MDT 2013? C’est possible, mais pas si simple. Avant d’entrer dans le vif du sujet, il faut voir les nouveautés de Windows ADK pour Windows 8.1 et les nouveautés MDT 2013. Étant donné qu’USMT[...]

Créer l’image de référence Windows 8.1 avec MDT 2013
Précédemment j’ai écrit comment déployer Windows 8.1 avec MDT 2013. Mais qu’en est-il de l’image de référence? Cette méthode consiste à déployer Windows 8.1, installer vos logiciels, configurer certains options puis exécuter sysprep et capturer l’image. C’est cette image que vous utiliserez par la suite en produc[...]

Déployer Windows 8.1 avec MDT 2013
Si vous êtes nouveau dans le déploiement de Windows, je recommande toujours Microsoft Deployment Toolkit (MDT) aux professionnels de l’informatique qui souhaitent personnaliser et déployer Windows dans leurs petites et moyennes organisations. Cet outil fournit une interface utilisateur facile à utiliser et automa[...]

Configurer et vérifier NTP dans le mode client et le mode s
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]

ROUTAGE STATIQUE
ROUTAGE STATIQUE Normal 0 21 false false false FR X-NONE AR-SA [...]

Configurer un tunnel IPSec Cisco entre deux réseaux locaux
Configurer un tunnel IPSec Cisco entre deux réseaux locaux Un petit poste "pense-bête" pour configurer un tunnel IPSec avec "pre-share key" (c'est à dire une clés secrète seulement connue par les deux sites) et cryptage AES 256 bits entre deux LAN connectés à Internet par des routeurs Cisco (compatible avec I[...]

Installer un serveur TFTP pour vos Cisco
Installer un serveur TFTP pour vos Cisco Un rapide billet pour rappeler les étapes nécessaires à la mise en place d'un serveur TFTP sur un système GNU/Linux (Debian Squeeze) afin de sauvegarder les configurations de vos routeurs Cisco. Installation du serveur TFTPD On utilise le paquet tftpd qui se trouve dan[...]

Cisco et le routage inter VLAN
Cisco et le routage inter VLAN Nous allons dans ce billet mettre en place une architecture réseau basée sur des équipements Cisco (un routeur 1841 et un switch 2960). Deux réseaux LAN différents (un pour les chefs, un autre pour le peuple) seront disponibles sur le même switch (en utilisant les fonctions VLAN). L[...]
Installation pas à pas de Nagios
Installation pas à pas de Nagios Trêve de blabla, entrons directement dans le vif du sujet avec l'installation du système d'exploitation et des pré-requis systèmes qui vont servir de base à notre serveur de supervision. Avant de commencer L’installation de Nagios est à ré[...]

Installation Opsview sur Ubuntu 8.04 LTS
Installation Opsview sur Ubuntu 8.04 LTS Pré-Requis L’installation Opsview demande quelques pré-requis, mais il s’avère qu’il est très simple de les satisfaire. Entrer le dépôt d’Opsview dans la source.list de APT Java est obligatoire (mais pas d’inquiétude, il sera installé avec les autres dépendances) [...]

Installation de Cacti sous Debian
Installation de Cacti sous Debian Les systèmes informatiques d'entreprise associent une diversité de services proposés (routage, proxy, serveur web...), à plusieurs types de réseaux (LAN, Intranet, DMZ, Internet...). La disponibilité et le bon fonctionnement de chaque machine participant à cet ensemble[...]

Le serveur de supervision libre – PART 4
Le serveur de supervision libre – PART 4 Nous arrivons bientôt à la fin de l'installation de notre serveur de supervision. Avec Nagios et Centreon il est parfaitement opérationnel. Je trouve cependant qu'il manque encore à Centreon des fonctions de graphes évoluées. C'est pour cela que je propose d'ajouter s[...]

Le serveur de supervision libre – PART 1
Le serveur de supervision libre – PART 1 Cela fait maintenant un petit moment que ce blog existe. Il aborde bien des sujets autours des logiciels libres mais il y en a un qui suscite plus d'intérêt que les autres: la supervision système et réseau. La complexité de ces logiciels et la faible docum[...]

Configurer pas-à-pas un Windows 2008 en version CORE
Configurer pas-à-pas un Windows 2008 en version CORE La nouvelle version du système d’exploitation serveur de Microsoft est vraiment géniale, à mon sens ! Pleins de nouveautés font leurs apparitions, comme le mode CORE, par exemple. Mais tout «indowsien/ne » que n[...]

Basculer entre les modes Graphique et Core sur Windows Serv
Basculer entre les modes Graphique et Core sur Windows Server 2012 Un serveur Windows Server 2008 ou Windows Server 2012 peut être installé dans un mode appelé mode Core ou Minimale. Il s’agit d’un mode d’installation épuré ou le Shell graphique n’est pas installé. Autrement dit il n’y a ni bu[...]

Windows Server 2012 : Activer l’interface graphique après u
Windows Server 2012 : Activer l’interface graphique après une installation en mode Core Si vous avez installé Windows Server 2012 en mode « Core » et que vous souhaitez finalement activer l’interface graphique, pas de panique, vous n’aurez pas à tout réinstaller ! Ce petit tutoriel vous explique [...]

Installer Windows Server en mode « core »
Installer Windows Server en mode « core » I. Les options d’installation Il existe deux manières d’utiliser en mode « core » : Windows Server Core « standard » Il s’agit tout simplement d’une installation minimale qui donne lieu à un système sans interface graphique et allégé tel [...]

Modifier la résolution de l’écran
Modifier la résolution de l’écran Pour changer la résolution d’écran, nous utiliserons la commande Set-DisplayResolution. En fait, c’est simple d’utilisation puisqu’il suffit de préciser la largeur et la hauteur de l’écran qui définiront la résolution. Par exemple, si l’on veut définir une résol[...]

Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]

Lister les alias Powershell
Lister les alias Powershell Il est possible d’utiliser des Alias pour appeler les CmdLets de Powershell. Autrement dit il est possible d’utiliser un raccourcis plutôt qu’une commande parfois fastidieuse à taper ou à se souvenir. Voici comment obtenir la liste des Aliaspro[...]

exécuter un script PowerShell
Comment exécuter un script PowerShell Dans l’article comment installer et vérifier le bon fonctionnement de PowerShell, nous avions ouvert l’interpréteur de commande PowerShell et exécuté quelques instructions. Si l’utilisation de l’interpréteur suffit pour lancer quelques commandes occasionnelles,[...]

PowerShell : Arbre de processus
PowerShell : Arbre de processus Depuis quelques temps, je travaille avec PowerShell, le langage de scripts de Microsoft. C'est un langage que j'ai eu beaucoup de mal à prendre en main. En avançant dans l'apprentissage, on se rend compte que cet outil peut se révéler très puis[...]

Empêcher les mises à jour Adobe Reader DC
Empêcher les mises à jour Adobe Reader DC Un problème qui se pose lorsqu'on administre un parc informatique est celui des droits utilisateurs. Ne pas leur laisser les droits administrateurs est une règle de base. Cependant, cela peut parfois bloquer les mises à jour de c[...]

Zimbra OSE
Zimbra OSE Dans cette série de tutoriel consacré à Zimbra, nous allons voir comment intégrér un serveur mail Zimbra dans une infrastructure système déja existante et comment l’intégrer dans un domaine Active Directory. Cela va se passer en plusieurs étapes: Configuration du serveur pour installer Zi[...]

Zimbra: Installation et configuration de Zpush 2
Zimbra: Installation et configuration de Zpush 2 Bonjour, cela faisait longtemps que je n’avais pas fait de tutoriel pour Zimbra. Dans ce tuto je vais vous expliquer la configuration de Zpush 2 pour Zimbra 8 sous Ubuntu 12.04 LTS Qu’est-ce que ZPush? La version payante de Zimbra (NE) permet la synch[...]

Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bi
Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bits Dans ce premier tutoriel consacré à Zimbra vous allez voir comment installer une machine virtuelle sous Ubuntu 10.04 LTS pour accueillir notre serveur Zimbra. Environnement de test: Comme je l’ai dit dans mon premier article consacré à Zimbr[...]

la messagerie électronique
NOTIONS DE BASE RÉSEAU INFORMATIQUE réseau informatique Le réseau la reconnaissance des machines entre elles, le transport de l'information. L'adresse IP Les serveurs : à votre service ! Serveur / Client Les protocoles Exemple : Les serveurs mails 1. L'expéditeur écrit le courrier. 2. Il le post[...]

Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]

De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]

Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]

Installer Asterisk 13 sur Debian 7
Installer Asterisk 13 sur Debian 7 Bonjour à tous Nous allons voir dans ce tutoriel comment installer Asterisk 13 sur une machine virtuelle sous Debian 7. Installation d’ Asterisk Préparation à l’installation On commence par mettre à jour notre distribution et installer les dépendances nécéssair[...]

mettre en place sa téléphonie grâce à Asterisk
la ligne téléphonique d'une freebox (et sûrement des autres "box") à Skype en passant par les très nombreuses offres disponibles sur le Net, la VoIP (Voice over IP) est partout. Pris dans le contexte d'une architecture domestique ou d'entreprise, la VoIP (Voice over IP ou Voix sur IP) est un nouveau faisc[...]
Fortinet VPN SSL Vous souhaitez que vos utilisateurs nomades aient toujours accès aux applications présentes au sein de votre entreprise au travers d’un navigateur web? Dans ce tutoriel, je vais vous montrer comment configurer un Firewall Fortinet (Fortigate) [...]
Configurer et vérifier NTP dans le mode client et le mode server
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]
Création d’une règle de pare-feu avec un Fortigate
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier article, je voudrais vous montrer comment mettre en place une règle de Firewall avec quelques-unes des options de sécurité les plus utilisées pour la sécurité ou l’optimisation de n[...]
Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]
Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]
De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]
Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]
Quelques astuces pour assurer la sécurité de vos données informatiques
Quelques astuces pour assurer la sécurité de vos données informatiques Sécurité informatique Chaque année, de nombreux utilisateurs et entreprises se font malheureusement piratés leurs données informatiques qu’elles soient personnelles ou professionnelles. Pour éviter e[...]
Installer une VM Linux sur ESXi
VMware vSphere ESXi Hypervisor comment configurer ESXi, le plus célèbre des virtualiseurs dit "barre métal" ou encore "hyperviseur type 1" (système dédié à la virtualisation) qui à une version gratuite limitée, mais largement utilisable pour un usage perso. Il a la particularité d'être extrêmement fiab[...]
VMware vSphere ESXi Hypervisor
VMware vSphere ESXi Hypervisor comment configurer ESXi, le plus célèbre des virtualiseurs dit "barre métal" ou encore "hyperviseur type 1" (système dédié à la virtualisation) qui à une version gratuite limitée, mais largement utilisable pour un usage perso. Il a la particularité d'être extrêmement fiable, [...]
Le JavaScript++
Cet article présentera de façon succincte les principaux ajouts de TypeScript par rapport à JavaScript comme le typage, les classes, et la modularité, sachant que pour ceux connaissant déjà JavaScript, l'apprentissage de TypeScript ne devrait être qu'une simple formalité.
Puis, après la brève mention des principaux outils de développement utilisables avec TypeScript, nous comparerons l'approche de TypeScript avec deux autres langages similaires, CoffeeScript et Dart, et tenterons de montrer en quoi l'approche de TypeScript semble la plus viable à l'avenir.
2. Typage
2-1. Variables
var
pi
:
number
;
var
message
:
string
;
var
flag
:
boolean
;
var
joker
:
any
;
- La variable pi a pour type number, un nombre entier ou flottant.
- La variable message a pour type string, une chaîne de caractères.
- La variable flag a pour type boolean, un booléen qui peut prendre la valeur true ou false.
- La variable joker a pour type any, qui est le type par défaut qu'attribue TypeScript à une variable globale s'il ne parvient pas à déterminer son type lors de sa déclaration.
var
pi =
3
.
14
;
//
number
var
message =
"
Bonjour
!
"
;
//
string
var
flag =
true
;
//
boolean
var
joker =
null
;
//
any
Ainsi, TypeScript, contrairement à JavaScript, peut être considéré comme un langage à typage statique.
2-2. Fonctions
Par défaut et en l'absence d'instruction return, le type du résultat d'une fonction est void, c'est-à-dire aucun résultat.
function
triple
(
n
:
number
):
number
{
return
3
*
n;
}
3. Classe
class
Animal {
name
:
string
;
constructor
(
name
:
string
) {
this
.
name =
name;
}
shout
(
):
string
{
return
"
...
"
;
}
}
La classe Animal possède ici un attribut (name), elle définit un constructeur (constructor) et une méthode (shout). Son instanciation se fait à l'aide de l'opérateur new comme ceci :
var
animal =
new
Animal
(
"
pokemon
"
);
L'extension de la classe Animal de l'exemple précédent pourrait se faire ainsi :
class
Lion extends
Animal {
sex
:
string
;
constructor
(
name
:
string
,
sex
:
string
) {
super
(
name);
this
.
sex =
sex;
}
shout
(
):
string
{
return
"
Rooooaarrr!
"
}
}
Puisque toutes les classes définies dans TypeScript sont considérées comme de nouveaux types, la classe Lion est du type Lion, et en vertu de l'héritage est aussi du type Animal.
En remarque, malgré cet apport orienté objet à la syntaxe initiale de JavaScript, il faut avoir conscience que les limitations intrinsèques de JavaScript se reflètent également dans TypeScript. Par exemple, la notion d'attribut privé (private) d'une classe qui existe dans la plupart des langages orientés objet, bien que syntaxiquement présente dans TypeScript, n'est pas véritablement restrictive dans la mesure où un attribut privé pourra malgré tout être utilisé en dehors de sa classe avec une approche dynamique.
4. Interface
interface
I1 {
a
:
number
;
}
interface
I2 {
b
:
string
;
}
Une interface est considérée comme un type à part entière, ce qui signifie qu'il est possible de définir une fonction qui prendrait un paramètre de type I1 comme l'exemple ci-dessous :
function
fct
(
x
:
I1) {
alert
(
x.
a);
}
fct
(
{
a
:
20
,
z
:
-
1
}
);
class
C implements
I1,
I2 {
a
:
number
;
b
:
string
;
constructor
(
a
:
number
,
b
:
string
) {
this
.
a =
a;
this
.
b =
b;
}
}
var
c =
new
C
(
15
,
"
bonjour
"
);
fct
(
c);
interface
I3 extends
I2 {
c
:
boolean
;
}
5. Fonction anonyme fléchée
function
alertMsg
(
msg
:
string
) {
this
.
msg =
msg;
this
.
timer =
setInterval
(
(
) =
>
{
alert
(
this
.
msg);
}
,
500
);
}
L'avantage par rapport à l'actuelle norme de JavaScript (ECMAScript 5), est que la notation fléchée ne change pas la valeur de contexte du mot-clé this à l'intérieur de la fonction anonyme. Cela évite donc l'utilisation d'une variable intermédiaire servant à propager la valeur de this à l'intérieur de la fonction anonyme. Par exemple, la ligne de code précédente aurait pu être transcrite ainsi en JavaScript actuel :
function
alertMsg
(
msg
:
string
) {
this
.
msg =
msg;
var
_this =
this
;
this
.
timer =
setInterval
(
function
(
) {
alert
(
_this.
msg);
}
,
500
);
}
Il convient aussi de noter que la norme ECMAScript 6, si elle est approuvée, reprendra cette notation ; TypeScript permettant ainsi de se familiariser en avance avec ces fonctions anonymes fléchées.
6. Modularité
6-1. Référencement de fichiers
Elle consiste à inclure de façon statique en tout début de fichier, un autre fichier source TypeScript contenant des déclarations nécessaires au compilateur afin qu'il en déduise entre autres les types et les héritages.
//
/
<reference
path="module.ts"/>
C'est cette approche qui est en général adoptée pour utiliser des bibliothèques JavaScript déjà existantes via les fichiers de déclaration .d.ts.
Sur certains environnements intégrés de développement comme Visual Studio, le référencement peut se faire implicitement, sans avoir besoin de mentionner le fichier contenant les dépendances de déclarations, même si un référencement explicite peut faciliter la documentation des dépendances entre fichiers sources.
Ce référencement permet très simplement de bénéficier à l'intérieur du fichier source appelant, partageant le même espace de nommage, des déclarations de variables, de fonctions ou de classes présentes dans le fichier référencé.
L'utilisation du référencement de fichiers se fait généralement pour les applications côté client où dans la page HTML il sera nécessaire soit de référencer via la balise <script> l'ensemble des fichiers JavaScript générés (c.f. index1.htm), soit de référencer le fichier issu de la concaténation éventuellement minifiée (.min.js) de ces fichiers JavaScript (c.f. index2.htm).
<!
DOCTYPE
html
>
<
html
lang
=
"
fr
"
>
<
head>
<script src
=
"
module.js
"
>
</
script>
<script src
=
"
source.js
"
>
</
script>
<
/
head>
<
body>
...
<
/
body>
<
/
html>
<!
DOCTYPE
html
>
<
html
lang
=
"
fr
"
>
<
head>
<script src
=
"
source-module.min.js
"
>
</
script>
<
/
head>
<
body>
...
<
/
body>
<
/
html>
L'inconvénient de cette approche est que cela peut engendrer des conflits de nommage entre deux variables globales, fonctions ou classes pouvant porter la même appellation. Pour remédier à ce problème, TypeScript propose la notion de module explicite.
6-2. Module explicite
Il est possible de déclarer explicitement un module, ce qui basiquement créera un espace de nommage permettant de spécifier les variables, fonctions, interfaces ou classes pouvant être importées dans un autre fichier, par exemple via référencement. Un module explicite est introduit par le mot-clé module.
module
M {
var
temp =
"
bonjour
"
;
export
var
id =
0
;
export
function
fct
(
) {
… }
export
interface
I {
a
:
number
;
}
export
class
C implements
I {
a
:
number
;
}
}
- la variable id ;
- la fonction fct ;
- l'interface I ;
- et la classe C.
Par exemple, dans ce même fichier source, l'instruction suivante utilisant la variable id est valide :
alert
(
M.
id);
alert
(
M.
temp);
//
erreur
6-3. Importation de modules externes
Reprenons l'exemple de la section précédente, mais cette fois sans créer d'espace de nommage via le mot-clé module :
export
var
id =
0
;
export
function
fct
(
) {
… }
export
interface
I {
a
:
number
;
}
export
class
C implements
I {
a
:
number
;
}
import
m =
require
(
"
./module2
"
);
m.
id+
+
;
Cette technique de modularisation est surtout pratiquée pour des applications côté serveur (e.g. Node.js) où les différents fichiers n'ont pas vocation à être combinés en un seul fichier final JavaScript. C'est la raison pour laquelle on peut parler de modules externes dans ce cas.
7. Typage générique
Le typage générique est surtout utile en TypeScript lorsqu'il s'agit d'assurer la cohérence du typage entre différents éléments. Par exemple, si on considère un tableau de nombres, on pourrait souhaiter disposer d'une fonction de concaténation assurant de concaténer ce tableau de nombres avec un autre tableau de nombres et non avec un tableau de chaînes de caractères ou d'autres choses. Par contre, on pourrait souhaiter que cette même fonction de concaténation puisse s'appliquer sur deux tableaux de chaînes de caractères ou autres, sans avoir besoin de réécrire une nouvelle fonction pour chaque type traité. C'est à ce moment-là qu'intervient le typage générique.
function
concatenate<
T>
(
a1:
T[
]
,
a2:
T[
]
):
T[
]
{
return
a1.
concat
(
a2);
}
resultNumbers =
concatenate<
number
>
(
[
1
,
2
]
,
[
3
,
4
]
);
//
[1,
2,
3,
4]
resultStrings =
concatenate<
string
>
(
[
"
a
"
,
"
b
"
]
,
[
"
c
"
,
"
d
"
]
);
//
["a",
"b",
"c",
"d"]
resultError1 =
concatenate<
number
>
(
[
1
,
2
]
,
[
"
a
"
,
"
b
"
]
);
//
erreur
resultError2 =
concatenate<
string
>
(
[
1
,
2
]
,
[
"
a
"
,
"
b
"
]
);
//
erreur
resultAny =
concatenate<
any
>
(
[
1
,
2
]
,
[
"
a
"
,
"
b
"
]
);
//
[1,
2,
"a",
"b"]
L'exemple montre la concaténation de deux tableaux de nombres (resultNumbers) et de deux tableaux de chaînes de caractères (resultStrings), et montre aussi qu'il n'est pas possible de concaténer un tableau de nombres avec un tableau de chaînes de caractères (resultError1 et resultError2) sous peine de lever une erreur.
Le typage générique est donc différent du type any puisqu'une fonction de concaténation entre deux tableaux de type any[] n'aurait pas levé d'erreur au niveau de la compilation comme l'indique le quatrième résultat de l'exemple (resultAny).
8. Outils
Pour tester de petits morceaux de codes (snippets), il peut être intéressant d'utiliser le site TypeScript.io fonctionnant de façon similaire à JsFiddle.
Aussi, la page de test mise à disposition par Microsoft peut également être utile pour voir immédiatement la transcription en JavaScript d'un code TypeScript.
9. TypeScript et les autres
9-1. Maturité
9-2. Code source▲
9-3. Correspondance JavaScript
Ce n'est pas forcément le cas des deux autres langages. La syntaxe de CoffeeScript inspirée du langage Haskell peut parfois être absconse et en tous les cas significativement différente de JavaScript pouvant rendre le débogage, l'identification entre code source et le code traduit et l'importation de codes en JavaScript natifs non triviaux. Et cela est encore plus vrai pour Dart qui emploie une syntaxe différente à celle de JavaScript en s'inspirant davantage de Java et du C++. D'autant plus que les optimisations réalisées par Dart lors de la conversion en code JavaScript peuvent significativement changer la structure du code et l'ordre des instructions.
En fin de document, on trouvera en annexe le résultat de la conversion en JavaScript d'un programme simple rédigé en trois versions : CoffeeScript, Dart et TypeScript. Le lecteur se convaincra facilement que TypeScript est syntaxiquement le langage le plus proche de JavaScript, le code source étant très similaire au code cible, tandis que dans le cas de Dart avec son code cible interminable, on peut se poser la question de son lien avec JavaScript.
9-4. Portabilité
Cependant, pour bénéficier pleinement des performances promises par Dart, il est nécessaire que le navigateur dispose d'une machine virtuelle DartVM, ce qui n'est le cas actuellement que pour Chrome, évidemment. Dans la mesure où il est peu probable que Microsoft et Apple implémentent une DartVM dans Internet Explorer et dans Safari, il est raisonnable de considérer que ce qui est souvent vendu comme l'avantage décisif de Dart, ne soit finalement réservé qu'à une fraction des navigateurs. Par conséquent, Dart, à terme, devrait vraisemblablement rester marginal. Un peu comme Google Web Toolkit (2006) dont on retrouve beaucoup de caractéristiques avec Dart, et qui n'a pas vraiment eu de succès comme on peut le constater aujourd'hui.
C'est pourquoi JavaScript, en tant que langage natif de tous les navigateurs, devrait rester le seul standard pendant encore de nombreuses années.
Et l'approche de TypeScript se voulant la plus respectueuse des normes de JavaScript a de grandes chances d'être la bonne.
9-5. Popularité
Si nous nous basons sur la plate-forme d'hébergement de codes source GitHub qui est très prisée des développeurs Web comme l'indique la position dominante de JavaScript sur les autres langages, nous devrions avoir une tendance objective relativement proche des usages dans ce domaine.
Langage | 2012-2013 | 2013-2014 | +/- |
JavaScript | 531 482 | 702 596 | 32 % |
CoffeeScript | 26 362 | 42 094 | 60 % |
Dart | 3 120 | 3 393 | 9 % |
TypeScript | 2 150 | 6 558 | 205 % |
On peut constater que la croissance de Dart (9 %) reste assez stable et en deçà de ses concurrents, y compris JavaScript lui-même (32 %). CoffeeScript continue quant à lui de connaître une belle dynamique avec une croissance des créations de +60 %. TypeScript qui comptabilisait en 2012-2013 moins de créations de repositories que Dart, vient de le dépasser en 2013-2014 avec un nombre de créations deux fois plus fort et une croissance annuelle qui explose à +205 %.
Ceci est un indicateur laissant à penser que TypeScript a un grand potentiel d'adoption parmi la communauté des développeurs Web malgré sa jeunesse. On peut signaler à titre d'exemple que le framework graphique babylon.js a annoncé récemment la migration de son code de JavaScript vers TypeScript. Gageons qu'avec la récente mise à disposition d'une version de production et donc stable du compilateur TypeScript, d'autres migrations d'ampleur vers ce langage voient le jour dans les mois qui viennent.
9-6. Récapitulatif
CoffeeScript | Dart | TypeScript | |
Maturité | 5 ans | 4 ans | 3 ans |
Code source | Open source | Open source | Open source |
Correspondance | Moyenne | Faible | Forte |
Portabilité | JavaScript | JavaScript sans DartVM | JavaScript |
Popularité | Restreinte, forte croissance |
Confidentielle, faible croissance |
Confidentielle, très forte croissance |
10. Conclusion
En dépit de sa courte existence, TypeScript est un langage en pleine croissance tant sur le plan de ses spécifications que sur le plan de sa popularité. Il n'est pas parfait du fait de sa volonté de coller au plus près des normes de JavaScript, mais l'évolution de ces normes pour enrichir la syntaxe de JavaScript ainsi que des approches parallèles pour améliorer les performances comme asm.js permettent de penser que TypeScript pourrait à terme au mieux devenir lui-même un standard, au pire, inspirer les futures normes ECMAScript.
Toute proportion gardée, c'est une démarche similaire qu'avait eue à son époque Bjarne Stroustrup en concevant le C++ en tant que sur-ensemble du langage C. Et le succès jamais démenti du C++ depuis plusieurs décennies laisse à penser que TypeScript pourrait suivre le même chemin et devenir une sorte de JavaScript++.
11. Annexe : conversion en JavaScript
11-1. CoffeeScript 1.8.0
class
Simple
constructor
:
(
@name =
"
default
"
) -
>
greet
:
(
who) -
>
"
Greetings
#{
who
},
I'm
#{
@name
}!
"
@main
:
-
>
s=
new
Simple "
Flynn
"
console.
log s.
greet "
Program
"
Simple.
main
(
);
(
function
(
) {
var Simple;
Simple =
(
function
(
) {
function Simple
(
name
) {
this.
name
=
name
!
=
null ?
name
:
"
default
"
;
}
Simple.
prototype.
greet =
function
(
who) {
return "
Greetings
"
+
who +
"
,
I'm
"
+
this.
name
+
"
!
"
;
}
;
Simple.
main =
function
(
) {
var s;
s =
new Simple
(
"
Flynn
"
);
return console.log
(
s.greet
(
"
Program
"
));
}
;
return Simple;
}
)(
);
Simple.main
(
);
}
).call
(
this);
11-2. Dart 1.7.2
class
Simple {
String
name;
Simple
(
this
.
name);
greet
(
who) =
>
"
Greetings
$who,
I'm
$name!
"
;
}
main
(
) {
var
s=
new
Simple
(
'
Flyn
'
);
print
(
s.
greet
(
'
Program
'
));
}
11-3. TypeScript 1.1
class
Simple {
constructor
(
public
name
:
string
) {
}
greet
(
who
:
string
) {
return
"
Greetings
"
+
who +
"
,
I'm
"
+
this
.
name +
"
!
"
;
}
static
main
(
) {
var
s =
new
Simple
(
'
Flynn
'
);
console.
log
(
s.
greet
(
"
Program
"
));
}
}
Simple.
main
(
)
var Simple =
(
function
(
) {
function Simple
(
name
) {
this.
name
=
name
;
}
Simple.
prototype.
greet =
function
(
who) {
return "
Greetings
"
+
who +
"
,
I'm
"
+
this.
name
+
"
!
"
;
}
;
Simple.
main =
function
(
) {
var s =
new Simple
(
'
Flynn
'
);
console.log
(
s.greet
(
"
Program
"
));
}
;
return Simple;
}
)(
);
Simple.main
(
);
Related posts:
Si vous avez apprécié cet article , abonnez-vous pour recevoir plus grand contenu tout comme il
-
Installation pas à pas de Nagios Trêve de blabla, entrons directement dans le vif du sujet avec l'installation d...
-
Si vous souhaitez scanner une plage d’adresse IP sur votre réseau afin de vérifier la disponibilité d’une ou plusieurs...
-
Installation de Cacti sous Debian Les systèmes informatiques d'entreprise associent une diversité de services proposés (rout...
-
C’est quoi le DFS ? I. Présentation Ce premier article a pour but d’expliquer ce qu’est le DFS, accessible dans u...
-
Qu’est-ce que le NAT ? Commençons par la signification du NAT, Network Address Translation (en Français Translation d’Adresse Réseau)...
-
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier ...
-
Active Directory I. L’Active Directory L’Active Directory est un annuaire LDAP pour les systèmes d’exploitation Windows, l...
-
IPerf: des exemples… Nous commençons l'année 2008 avec un billet regroupant des exemples d'utilisation d'IPerf, l'...
-
Comment exécuter un script PowerShell Dans l’article comment installer et vérifier le bon fonctionnement de PowerShell , nous av...
-
Routage RIP Définitions Avant de parler de routage RIP, il faut que j’explique qu’est-ce qu’un routeur et quel est son but. Le ...
pobular post

Configurer et vérifier NTP dans le mode client et le mode s
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]
Création d’une règle de pare-feu avec un Fortigate
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier article, je voudrais vous montrer comment mettre en place une règle de Firewall avec quelques-unes des options de sécurité les plus utilisées pour la sécurité ou l’optimisation de n[...]

Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]

Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]

De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]

Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]

Quelques astuces pour assurer la sécurité de vos données in
Quelques astuces pour assurer la sécurité de vos données informatiques Sécurité informatique Chaque année, de nombreux utilisateurs et entreprises se font malheureusement piratés leurs données informatiques qu’elles soient personnelles ou professionnelles. Pour éviter e[...]
0 commentaires pour ce poste
Leave a reply