- Licence Fondamentale d'Informatique
samedi 16 novembre 2013

Comment faire pour vérifier s'il est connecté à l'Internet en C #


Comment faire pour vérifier s'il est connecté à l'Internet en C #

Il ya plusieurs  façons de vérifier si la connexion Internet est disponible en C #. Étrangement, la solution la plus optimale qui a fonctionné pour moi était celui que je m'y attendais le moins. Permettez-moi de vous présenter les trois principales approches et décrire les avantages et les inconvénients de chacun d'eux. Vous pouvez ensuite tirer vos propres conclusions quant à ce qui fonctionne le mieux pour votre tâche.

#1 – GetIsNetworkAvailable
La première solution est aussi la plus simple de tous. Il suffit d'appeler la fonction GetIsNetworkAvailable et la valeur  booléenne vous dira si l'ordinateur est connecté à un réseau. Et là réside le problème! Il reviendra vrai même si vous êtes connecté qu'à un réseau domestique et la connexion internet réelle est en panne. Il revient aussi vrai lorsque vous avez VMware ou autre logiciel de visualisation installé en raison des connexions réseau associées à VMware sont toujours.
using System.Net.NetworkInformation;

public static bool NetStatus()
{
    return NetworkInterface.GetIsNetworkAvailable();
}

#2 – NetworkAvailabilityChangedEventHandler

La deuxième solution fait usage de l'espace de noms System.Net.NetworkInformation qui donne accès aux données du réseau de trafic, des informations d'adresse réseau, et la notification des changements d'adresse pour l'ordinateur local. Le framework. NET nous informer via un rappel lorsqu'un réseau des changements de disponibilité. Bien que cette méthode est mieux que contrôler en permanence l'état en appelant la méthode GetIsNetworkAvailable, il souffre toujours des mêmes inconvénients. Il ne retourne false lorsque toutes les connexions réseau descendent et qui est un problème majeur pour les utilisateurs du logiciel de visualisation tels que VMware et des ordinateurs connectés à plusieurs réseaux, car le gestionnaire d'événement ne fournit aucune information quant au statut de la connexion réseau a changé.

using System.Net.NetworkInformation;

private void Form_Load(object sender, EventArgs e)
{
    NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
}

private void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
    if (e.IsAvailable)
    {
        MessageBox.Show("Available");
    }
    else
    {
        MessageBox.Show("Not available");
    }
}


#3 – NetworkAvailabilityChangedEventHandler

La troisième approche est la plus compliquée, mais vous obtenez une image complète de ce qui se passe avec les connexions réseau sur l'ordinateur. La principale fonctionnalité est fournie par la fonction GetAllNetworkInterfaces qui retourne exactement ce que son nom l'indique - un tableau de toutes les interfaces réseau. C'est à vous de les trier et de trouver l'information que vous cherchez. Le seul inconvénient de cette méthode est qu'elle semble utiliser un peu de bande passante de l'UC (environ 8% en moyenne, ce qui est beaucoup compte tenu que la minuterie est réglée à 500 ms). L'augmentation de l'utilisation du processeur était aussi la principale raison pour laquelle j'ai décidé de ne pas utiliser cette approche.

using System;
using System.Net.NetworkInformation;
using Timer=System.Threading.Timer;

namespace NetworkCheckApp
{
    public class NetworkStatusObserver
    {
        public event EventHandler<EventArgs> NetworkChanged;

        private NetworkInterface[] oldInterfaces;
        private Timer timer;

        public void Start()
        {
            timer = new Timer(UpdateNetworkStatus, null, new TimeSpan(0, 0, 0, 0, 500), new TimeSpan(0, 0, 0, 0, 500));

            oldInterfaces = NetworkInterface.GetAllNetworkInterfaces();
        }

        private void UpdateNetworkStatus(object o)
        {
            var newInterfaces = NetworkInterface.GetAllNetworkInterfaces();
            bool hasChanges = false;
            if (newInterfaces.Length != oldInterfaces.Length)
            {
                hasChanges = true;
            }
            if (!hasChanges)
            {
                for (int i = 0; i < oldInterfaces.Length; i++)
                {
                    if (oldInterfaces[i].Name != newInterfaces[i].Name || oldInterfaces[i].OperationalStatus != newInterfaces[i].OperationalStatus)
                    {
                        hasChanges = true;
                        break;
                    }
                }
            }

            oldInterfaces = newInterfaces;

            if (hasChanges)
            {
                RaiseNetworkChanged();
            }
        }

        private void RaiseNetworkChanged()
        {
            if (NetworkChanged != null)
            {
                NetworkChanged.Invoke(this, null);
            }
        }
    }
}












#4 – GetHostAddresses

La quatrième et dernière solution, que j'ai effectivement utilisé dans un de mes projets est basé sur Dns.GetHostAddresses () appel de fonction. L'appel est très rapide et je n'ai pas été en mesure de détecter toute utilisation de l'UC significative quand il a été utilisé sur une minuterie avec un intervalle de 500ms.
Quelqu'un peut faire valoir que, en utilisant un site Web existant, nous nous exposons à une situation où le site peut être en panne et nos diagnostics de connexion internet sera faux. Mais vraiment, quelles sont les chances de Google étant bas toute quantité importante de temps au cours des 10 prochaines années?


try
{
    string myAddress = "www.google.com";
    IPAddress[] addresslist = Dns.GetHostAddresses(myAddress);

    if (addresslist[0].ToString().Length > 6)
    {
        if (!ConnectionOnline)
        {
            ConnectionOnline = true;
        }
    }
    else
        if (ConnectionOnline)
        {
            ConnectionOnline = false;
        }
}
catch
{
groupe    {
        ConnectionOnline = false;
    }
}

jeudi 17 octobre 2013

HTML5 : Nouveaux éléments de section, article, header, footer, aside, nav


Les éléments de section HTML5, une nouvelle façon de penser


Les éléments de section (sectionarticlenavasideheaderfooter) segmentent des portions du document ou de l'application web, qui possèdent une valeur sémantique particulière ; contrairement à des éléments génériques commespan ou div qui ont un rôle totalement neutre, et ne servent qu'à regrouper d'autres éléments HTML pour leur affecter un style CSS commun, voire pour interagir avec eux via le DOM... Il ne s'agit donc pas de nouveaux éléments avec des noms génériques : c'est bien plus que ça !
HTML5 inclut la majorité des éléments HTML4 pour assurer une rétro-compatibilité avec les navigateurs. Au-delà de ce critère, les groupes de travail qui ont élaboré HTML5 ont su analyser les usages courants et s'adapter aux tendances du web avec (entre autres) les nouvelles façons de trier l'information sur une page web. Des statistiques ont été élaborées sur les attributs id les plus fréquemment attribués aux grands découpages de pages HTML.
Par exemple, une majorité des sites contiennent des informations supplémentaires relatives ou non au contenu principal (que l'on nomme sidebar ou barre latérale). Cette information est alors placée dans un élément <div class="aside">dédié - qui permet d'affecter des propriétés de styles CSS - mais n'a aucune signification particulière pour un navigateur ou un moteur d'indexation. C'est le cas de tous les autres <div>. Le même principe peut être appliqué pour baliser les différents articles d'un site d'information : pourquoi ne pas prévoir un élément <article> plutôt que de segmenter tout le contenu avec des <div class="article"> ? Ceci en facilitera autant l'extraction d'information, la syndication de contenu, et la structuration du code source.

Liste récapitulative des éléments de section HTML5

Le tableau suivant récapitule les nouveaux éléments de section et leur usage le plus commun, tel que décrit par la spécification.
NomDétails
<section>Section générique regroupant un même sujet, une même fonctionnalité, de préférence avec un en-tête, ou bien section d'application web
<article>Section de contenu indépendante, pouvant être extraite individuellement du document ou syndiquée (flux RSS ou équivalent), sans pénaliser sa compréhension
<nav>Section possédant des liens de navigation principaux (au sein du document ou vers d'autres pages)
<aside>Section dont le contenu est un complément par rapport à ce qui l'entoure, qui n'est pas forcément en lien direct avec le contenu mais qui peut apporter des informations supplémentaires.
<header>Section d'introduction d'un article, d'une autre section ou du document entier (en-tête de page).
<footer>Section de conclusion d'une section ou d'un article, voire du document entier (pied de page).

Un cas particulier : Internet Explorer <9

Avertissement Pour les versions antérieures à Internet Explorer 9, ces nouveaux éléments ne sont pas reconnus par l'analyseur syntaxique. C'est-à-dire qu'ils ne sont non seulement pas stylés en bloc par défaut, mais également qu'on ne peut leur appliquer aucun style de quelque manière que ce soit.
Une technique alternative consiste à déclarer ces éléments au préalable en JavaScript. Un script (nommé html5shim ou html5shiv) est prévu à cet effet et mis à disposition à cette adresse :
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Étant muni d'un commentaire conditionel, il ne sera chargé que pour ces versions spécifiques (Internet Explorer 6 à 8 inclus).
Pour tous les autres moteurs de navigateurs récents, il ne sera pas nécessaire d'appliquer une telle astuce : même si ces éléments n'auront pas de signification particulière pour le moteur de rendu, il sera possible de leur appliquer des styles CSS s'ils ne sont pas affichés en bloc par défaut.
Si vous utilisez déjà une bibliothèque telle que Modernizr, il ne sera pas nécessaire d'appliquer un autre script (tel que html5shim) car celle-ci embarque déjà une déclaration équivalente.

Exemples de documents

Exemple minimal

Voici un schéma basique d'un découpage d'une page HTML5. Précisons bien qu'il ne s'agit pas d'une règle fixe à appliquer à tout document mais juste d'un exemple.
L'en-tête <header>
Plutôt que de se cantonner à un simple <div id="header"> le nouvel élément<header> convient parfaitement à l'introduction d'un document. Tout comme l'élément <nav> qui remplace avantageusement <div id="menu">.
Le contenu principal et annexe
L'élément aside revêt le rôle de barre latérale, et l'élément section est appelé pour regrouper le contenu principal.
Le <footer>
Sans suprise l'élément footer est destiné au pied-de-page. Il peut accueillir des mentions spécifiques, un rappel du titre et du logo, des liens de navigation, etc.
Remarque
Finalement, il suffit de considérer qu'il s'agit d'un remplacement pragmatique de certains éléments, ayant eu un identifiant proche (id="header", id="navigation", id="content"...). Mais ce n'est qu'une impression. Se limiter à ce constat serait incomplet. L'usage de ces nouveaux éléments doit se faire à bon escient.

Exemple détaillé

Le schéma suivant est plus précis et se concentre sur chaque <article>. Il démontre que éléments de section ne se limitent pas à un simple découpage et à une application de styles graphiques mais bien à une meilleure classification sémantiquede l'information.
On retrouve ici headerasidefooter alors qu'ils sont déjà utilisés dans d'autres parties du document. C'est un critère important : l'utilisation de ces éléments n'est pas limitée à une occurence par page. Ils peuvent très bien s'appliquer à des contenus locaux, par exemple dans <article> qui représente déjà une portion de contenu. Il peut donc possèder (entre autres) : un en-tête header (avec des titres, des informations sur la date de publication et l'auteur), un pied d'article footer, des infos complémentaires dans un ou plusieurs aside etc.

Les balises en détail

<section>

C'est la plus générique : elle est utilisée lorsqu'aucun autre élément de section n'a pu lui être préféré. Il ne faut cependant pas la confondre avec l'élément div qui n'a aucune valeur sémantique. Les deux ne sont pas interchangeables. La section regroupe un ensemble de contenu d'une même thématique, ou bien un ensemble d'éléments offrant une fonctionnalité spécifique dans une application web.
Pour résumer, on utilise l'élément <section> généralement quand :
  • Ce n'est pas une balise employée uniquement pour styler un élément voire plusieurs éléments
  • D'autres éléments de section ne sont pas appropriées (article, aside ou nav)
  • Il contient naturellement un titre d'introduction
<section>
  <h1>Articles</h1>
    
  <article>
       ...
  </article>
</section>

<article>

L'élément <article> est une spécialisation de section autosuffisante, possédant une plus forte valeure sémantique. Il vise à baliser des blocs de contenu utiles que l'on pourrait extraire du document tout en conservant leur sens et leurs informations. Pour déterminer si son usage est approprié, il faut se demander si son contenu pourrait être réutilisable tel quel pour de la syndication (par exemple en le reprenant dans un flux RSS ou en le copiant-collant dans un e-mail). Il est fréquent qu'il soit présent au côté d'autres frères dans un même document.
Des éléments <article> dans un parent <article> sont censés représenter des blocs de commentaires relatifs à cet élément parent.
Dans le cadre d'un site axé sur le cinéma, on pourra se servir d'<article> pour les fiches d'identité de chaque film, pour les biographies des acteurs, pour les produits à acheter, pour chaque actualité ou encore pour chaque contribution d'un utilisateur.
<article>
  <h1>Titre de l'article</h1>
  <p>Contenu de l'article</p>
</article>

<aside>

L'élément aside est destiné au contenu indirectement lié à l'article lui-même : il représente ce qui l'entoure, de façon annexe. Par exemple, on pourra s'en servir pour proposer la définition d'un terme, une biographie de l'auteur de l'article, un glossaire, préciser des sources, une liste d'articles en relation... aside n'est donc pas forcément dédié au seul usage d'une barre de contenu latérale.
<aside>
  <h4>Sources de l'article</h4>
  <ul>
    <li><a href="#">Lien 1</a></li>
    <li><a href="#">Lien 2</a></li>
    <li><a href="#">Lien 3</a></li>
  </ul>
</aside>  

<header>

L'élément <header> représente l'en-tête d'une section (section, article...) ou d'une page entière. Il peut contenir un logo, un ou plusieurs titres, d'autres informations d'introduction, une navigation, un formulaire de recherche général.
<article>
  <header>
    <h1>Titre de l'article</h1>
    <p>Auteur : bidule</p>
  </header>
    
  <p>Contenu de l'article</p>
</article>

<footer>

L'élément footer représente le pied de page, ou bien la conclusion d'une section. On y place des informations concernant l'auteur, des mentions légales, une navigation ou une pagination (en combinaison avec <nav>), un logo de rappel, des coordonnées, des dates de publication.
<article>
  ...
  <footer>
    <p>Posté par Simon, le 
      <time datetime="2012-02-02">2 février 2012</time>
    </p>
  </footer>
</article>

<nav>

L'élément <nav> est une section de liens de navigation. On peut l'utiliser pour la navigation principale, mais également pour d'autres parties du document devant lister des liens de navigation interne.
<nav>
  <ul>
    <li><a href="index.html">Page d'accueil</a></li>
    <li><a href="contact.html">Contact</a></li>
  </ul>
</nav>

Conclusion

HTML5 dispose d'éléments bien pensés pour un meilleur balisage sémantique de l'information. Le plus difficile n'est pas d'écrire ces nouvelles balises, mais bien de comprendre leur usage. Les confusions qui peuvent survenir (section dansarticle ou vice-versa par exemple) risquent de créer de longs débats quant à leur emploi : il faudra être vigilant.
samedi 5 octobre 2013

Microsoft Windows 8 Professional x86/x64 + Direct Download + (Resume Support)

Download Links Are Updated !!! 

BUILD: 6.2.9200.16394.WIN8_RTM.120725-1247

FILE :- Windows_8_Pro_EN US_x64.ISO-

SIZE :-  3,581,853,696 byte

SHA-1 :-  E63C1D3733532ABC7AB28F3D61526E361E80271A

MD5 :-  7A10316A79A543F2BF4953A4332B4323

CRC :-  5D7BB5F4

NOTE :-  this is original M $ Image.
 Windows 8 Professional
* Windows 8 Pro succeeds Windows 7 Professional and Ultimate and is targeted towards enthusiasts and business users; it includes all the features of Windows 8. Additional features include operating as a Remote Desktop server, the ability to participate in a Windows Server domain, Encrypting File System, Hyper-V, and Virtual Hard Disk Booting, Group Policy as well as BitLocker and BitLocker To Go. Windows Media Center functionality will be available only for Windows 8 Pro, as a free "add-on."



<<<<System requirements>>>>


Processor (CPU): 1 GHz or Higher.
RAM: 1 GB for 32-bit version or 2 GB for 64-bit version.
Free HDD space: 16 GB for the 32-bit version or 20 GB for 64-bit version.
Graphics: the graphics device Microsoft DirectX 9 or later.
Date of Release: 28 October, 2012
Developer: Microsoft Corporation

Note :- For successful Activation, you have to use US Time Zone during Windows 8 installation, no matter what your country is. I suggest you to use a local account instead of your Microsoft account , if you want to activate Windows 8 RTM successfully
 Windows 8 Professional x86 Bit

http://109.70.186.35/USER/Programms/Windows/Windows%208%20Pro/Windows_8_Pro_EN-US_x86.ISO
 or

ftp://ru-board:ru-board@ftp2.interlink.com.ua/Apps/MICROSOFT.WINDOWS.8/en_windows_8_pro_vl_x86_dvd_917830.iso

Windows 8 Professional x64 Bit
  
http://109.70.186.35/USER/Programms/Windows/Windows%208%20Pro/Windows_8_Pro_EN-US_x64.ISO

or

ftp://ru-board:ru-board@ftp2.interlink.com.ua/Apps/MICROSOFT.WINDOWS.8/en_windows_8_pro_vl_x64_dvd_917699.iso


 
Windows 8 Professional Activation/Serial Key
XKY4K-2NRWR-8F6P2-448RF-CRYQH
 Windows 8 Professional Activator 
http://rapidshare.com/files/626951714/Microsoft%20Windows%208%20PERMANENT%20Activator%20Activation.rar


!!!! Don't Forget To Say Thanks Guys !!!! 
 
-