Suite

Filtrer (pas d'affichage) les couches dans GeoExt.LegendPanel avec des noms COMME certains motifs

Filtrer (pas d'affichage) les couches dans GeoExt.LegendPanel avec des noms COMME certains motifs


Cela fonctionne pour éviter que les couches de fond de carte telles que Google Maps et les superpositions telles que WMS n'apparaissent dans le panneau de légende GeoExt :

var legendPanel = new GeoExt.LegendPanel({ border: false, filter: function(record){ if(!(record.getLayer().isBaseLayer) && (record.getLayer() instanceof OpenLayers.Layer.WMS)){ return true ; } } });

Le problème est que j'ai besoin de filtrer (c'est-à-dire pas d'affichage) les calques avec des noms ayant "faisceau" dans leurs noms, j'ai essayé sans succès ceci:

return record.getLayer().displayInLayerSwitcher == false && record.getLayer().name == '%beam%'; return record.getLayer().displayInLayerSwitcher == false && record.get("layer").name.indexOf("%beam%") == -1; return record.get("layer").name.indexOf("%beam%") == -1;

Supprimez simplement le "%". Utilisation

return record.getLayer().name.indexOf("beam") == -1;

à la place de

return record.getLayer().name.indexOf("%beam%") == -1;

Étant donné que ma question a été beaucoup consultée au cours de la dernière année et qu'il n'y a pas de réponse solide à ma connaissance, j'ai décidé de fournir une réponse aussi complète que possible. Cette réponse est basée sur une expérience réelle de projets et avec peu de consultations d'experts :

  1. Tout d'abord, il est important de noter que dans le processus de conception de logiciels, il n'y a rien de tel que le bien et le mal. Tant qu'une approche fonctionne pour votre projet et s'adapte bien, elle est bonne et si ce n'est pas le cas, elle est mauvaise. Il n'y a pas de principes rigides dans la conception de logiciels. Il existe des besoins et des spécifications du projet. Mais généralement, il a été accepté que l'utilisation de modèles et de principes de conception rend le projet plus robuste, fiable et facile à entretenir et rend votre code faiblement couplé et hautement cohérent.
  2. Toute l'histoire de la conception et de l'architecture logicielles concerne la façon dont vous pourriez gérer votre projet facilement et comment vous pourriez maintenir vos futurs changements. Réfléchissez à l'approche qui vous donne la meilleure réponse. Ce sera le mieux pour vous. Ne pensez pas trop au Professionnalisme ! .Votre projet grandit avec le temps et gagne en maturité. Alors pensez à votre projet !
  3. Dans un premier temps et pour l'architecture d'application au niveau de l'entreprise, essayez toujours de suivre la séparation des préoccupations ou SoC . Cela signifie que vous devriez avoir différents niveaux pour différentes couches de votre projet. Il est fortement recommandé d'utiliser différents projet dans ton Solution pour la couche d'accès aux données, les entités de domaine, la couche métier et la couche de présentation. Dans le projet MVC5, il est préférable d'utiliser Class Library Project pour Data Access Layer , Domain Entities , Business Layer et un projet MVC pour Presentation Layer .
  4. La couche d'accès aux données est le projet qui fait face aux interactions de base de données et de base de données. Vous pourriez avoir tous vos Entity Framework ou entités similaires dans ce projet. Avoir une couche séparée pour la couche de base de données signifie que dans le cas du changement de votre entrepôt de données de projet, la seule chose que vous devez changer est de changer ce projet et quelques modifications mineures sur votre couche de gestion. Tous les autres projets de votre solution restent intacts. Ainsi, vous pouvez facilement passer de MS Sql à Oracle ou d'Entity Framework à NHibernate .
  5. Domain Entities est le projet que j'utilise pour définir toutes mes interfaces, classes, énumérations et variables au niveau de la solution. Ce projet garde l'intégrité tout au long de ma solution sur mes classes et mes méthodes. Toutes mes classes dans la solution entière sont héritées des interfaces de ce projet. Donc j'ai une place pour changer mes classes ou variables globales et cela signifie facile à maintenir pour l'avenir dans ma solution et facile à comprendre pour les développeurs nouvellement joints au projet.
  6. Business Layer est l'endroit où je place toute ma logique métier, y compris les entités commerciales et les services commerciaux. L'idée de cette couche est d'avoir un seul endroit pour conserver toutes vos méthodes et interactions commerciales. Tous les calculs, les modifications d'objets et toute la logique concernant les données, y compris la sauvegarde, la récupération, la modification, etc. doivent se dérouler dans cette section. En ayant cette couche dans votre projet, vous pourriez avoir différents consommateurs en même temps, par exemple une couche MVC native et une couche API Web. Ou vous pouvez fournir une alimentation différente en fonction des spécifications des consommateurs de services commerciaux. Il est fortement recommandé d'éviter de mettre une logique métier dans la section contrôleur de la couche MVC. Avoir une logique métier à l'intérieur des contrôleurs signifie que vous utilisez votre couche de présentation comme couche de logique métier et cela viole la séparation des préoccupations. Ensuite, il ne sera pas facile de passer d'une couche de présentation à une autre ou d'avoir différents types de consommateurs pour votre solution. Il est préférable de garder la section du contrôleur dans MVC aussi mince que possible. Les contrôleurs ne doivent avoir que la logique et les méthodes directement liées aux modèles de vue. Pour plus d' informations sur les modèles de vue , reportez - vous à la section 7 . Une chose à retenir, il est préférable d'avoir différentes classes de services métier en fonction de vos objets de solution ou entités métier.
  7. La couche de présentation dans la solution MVC sera un projet MVC. Mais la solution peut avoir un autre type ou plusieurs couches de présentation pour différents consommateurs ou technologies. Par exemple, vous pourriez avoir une couche MVC et une API Web dans une seule solution. Utilisez généralement la couche de présentation pour y conserver toute la logique de présentation. La logique de présentation ne doit avoir aucun lien avec la logique métier ou la logique des données. Alors la question est qu'est-ce que la logique de présentation ? La logique de présentation est une logique liée aux modèles de vue. Les modèles de vue sont des objets personnalisés pour les vues ou les pages. Dans la plupart des cas, les objets métier ne sont pas adaptés à une utilisation dans les vues. D'un autre côté, les vues de présentation nécessitent généralement une logique de validation ou une logique de présentation, par exemple un nom d'affichage différent des noms d'objet d'origine. Dans ces cas, il est préférable de séparer la logique de présentation de la logique métier pour faciliter le changement de logique de présentation ou de logique métier indépendamment et même de changer facilement de couche de présentation pour une conception d'interface utilisateur différente ou de changer la logique métier pour avoir plus de fonctionnalités sans crainte d'interruption avec logique de présentation. Dans le cas de l'utilisation du projet MVC comme couche de présentation pour la solution, tous les modèles de vue doivent être placés dans la section Modèles du projet MVC et toute la logique de présentation doit être placée dans la section Contrôleurs du projet.
  8. La dernière chose à dire est que pour chaque solution multi-niveaux, vous avez besoin de frameworks pour le mappage objet à objet, par exemple pour convertir votre entité commerciale en modèle de vue. Il existe des outils à cette fin comme AutoMapper , BLToolkit et EmitMapper .

Dernier mot : veuillez commenter et noter la question et ma réponse pour l'améliorer !


Il existe une méthode qui vous permet à peu près de le faire sans y penser du tout :

  1. Si nécessaire, Ctrl+L et amener la flèche blanche supérieure suffisamment au centre, pour que vous obteniez un fond blanc (De plus, vous voudrez peut-être amener la flèche noire du haut vers le centre pour rendre les couleurs noires noires) (Cette étape n'est pas nécessaire dans ce cas).
  2. Sélectionnez l'outil Pinceau.
  3. Depuis le menu du haut : Editer > Définir le préréglage du pinceau ( Puisque l'outil Pinceau a été sélectionné ), le pinceau créé sera immédiatement sélectionné.
  4. Créez un nouveau document Ctr+N sans la couleur d'arrière-plan (rendez-le plus grand que l'image d'origine, vous n'avez donc pas à viser beaucoup).
  5. Cliquez sur D ( pour que la couleur de premier plan soit par défaut le noir ).
  6. Cliquez une fois dans le document pour placer l'image dans le pinceau.
  7. Dans le menu du haut : Image > Découper > Base sur : Pixels transparents

Il peut sembler que cela comporte un grand nombre d'étapes, mais vous pouvez le faire très, très rapidement.


4 réponses 4

Ce n'est pas une idée brillante. L'URI n'est pas vraiment un bon endroit pour les données de longueur imprévisible, et bien qu'il n'y ait pas de longueur maximale « officielle », de nombreux serveurs Web appliquent leur propre limite (IIS est de 2083 caractères, par exemple). Certains serveurs Web ont également des restrictions sur les caractères acceptables dans les URI.

Il existe également d'autres considérations qui sont génériques pour les URI. Le contenu de la requête est-il sensible de quelque manière que ce soit ? De nombreux serveurs enregistrent les URI et les paramètres de chaîne de requête, ce qui peut laisser des données sensibles dans des endroits où vous ne le souhaitez pas.

Pour ce type de données de longueur variable, l'utilisation de HTTP Post serait la meilleure solution.

Si vous souhaitez toujours utiliser la chaîne de requête, une autre option consiste à utiliser la chaîne JSON en base64, ce qui signifie que vous n'aurez pas à vous soucier d'échapper les espaces et les caractères spéciaux. Cela signifierait que l'URI n'était pas « lisible par l'homme », mais je dirais que le JSON codé par URI n'est pas particulièrement facile à lire non plus.

Ce qui est mauvais, c'est de transmettre des quantités massives de données dans l'URI, donc un POST serait mieux à mon avis. En raison de limitations possibles de taille, de problèmes de transmission de données arbitraires, de problèmes de sécurité. C'est bien sûr un simple changement. Vous générez le JSON, puis vous décidez comment l'envoyer.

Vérifiez auprès des responsables de la base de données qu'il n'est pas difficile de générer des requêtes efficaces à partir des données de votre JSON. Je suppose que non. Et générer le JSON ne devrait pas être difficile. JSON vous donne la possibilité de créer des requêtes plus complexes si vous en ressentez le besoin.

J'ai vécu presque la même analyse avec un ancien collègue. Il ajoutait un nouveau point de terminaison d'API et souhaitait transmettre un objet JSON complexe dans la chaîne de requête au lieu de paramètres séparés.

Comme vous, j'avais des réserves.

Les avantages et les inconvénients dépendront des besoins spécifiques de votre produit, de l'architecture, de la structure de l'équipe et d'autres facteurs.

Dans notre cas, j'ai trouvé que les compromis étaient simplement :

Pro : Enregistré une demi-ligne de code dans l'implémentation de l'API

  • Swagger (notre outil de documentation de l'API) n'aurait aucun moyen intuitif de documenter la structure de cette API. La documentation de l'API, l'accessibilité et la découvrabilité étaient importantes pour nous.
  • Incohérent avec le reste du monde. Adhérer aux conventions et aux attentes communes simplifie les choses et permet d'éviter les erreurs.

Cela dit, je ne pense pas que ce modèle soit nécessairement mauvais. Dans certains cas, comme la création d'un ensemble dynamique de filtres de recherche, cela peut avoir du sens. Votre cas d'utilisation pourrait être un bon candidat pour cela.

Je ne suis pas tout à fait d'accord avec le recul contre GET que vous avez reçu dans d'autres réponses. GET est le verbe HTTP sémantiquement correct car vous obtenez des données. Vous ne faites muter aucun état. Il est idempotent et cacheable. POST ne l'est pas.

Les requêtes GET peuvent accepter un corps, tout comme les requêtes POST et les requêtes POST peuvent accepter une chaîne de requête. Il existe une idée fausse selon laquelle GET signifie chaîne de requête et POST signifie corps. Ils sont orthogonaux.

Facteurs que je considérerais dans votre situation :

  • La documentabilité, si cela est important pour votre organisation et/ou produit
  • Outillage - La plupart des frameworks de routage HTTP ont un middleware pour analyser automatiquement les paramètres de chaîne de requête et les exposer sous forme de carte. Par exemple, dans une application express node.js, je peux vérifier req.query.filters pour obtenir les filtres. Vous devrez faire votre propre analyse si vous utilisez la route JSON, mais ce n'est pas difficile. C'est un simple appel JSON.parse.
  • Validation - Il existe des modules qui peuvent valider automatiquement une demande en fonction d'un schéma que vous fournissez. Déplacer vos entrées vers un objet JSON peut créer une boîte noire, vous obligeant à valider vous-même les entrées (et nous savons tous qu'une validation d'entrée inadéquate est l'une des principales causes de vulnérabilités de sécurité)
  • Complexité - Avez-vous vraiment besoin de prendre en charge des filtres infinis ou même une liste dynamique de filtres ? Est-ce que les opérateurs doivent être configurables comme ça ? Cette conception d'objet JSON est hautement extensible. S'il n'y a que 4 éléments à filtrer et qu'ils fonctionnent toujours de la même manière, le codage en dur vous fera gagner beaucoup de temps.
  • Frais généraux de test - à partir du point de complexité ci-dessus, chaque combinaison de critères doit être testée. Si votre API autorise n'importe quel opérateur dans n'importe quel domaine, vous devez tester chacun de ces cas. Si vos clients n'utilisent l'API que d'une seule manière, vous avez alors un tas de cas d'utilisation inutilisés que vous êtes bloqué. Par exemple, si l'interface effectue toujours une recherche générique, alors tester la casse = pour le nom est un gaspillage car il n'est jamais vraiment utilisé, mais votre API le prend en charge, donc cela fonctionne mieux.

Malgré toutes mes inquiétudes concernant cette approche, Elasticsearch utilise le modèle JSON et cela fonctionne assez bien pour eux. Mais Elasticsearch est un moteur de recherche. L'ensemble de filtres transmis, les opérateurs, etc. doivent être dynamiques car la structure JSON est en fait destinée à être une requête de recherche. Elasticsearch prend en charge tout type de schéma défini par l'utilisateur, de sorte qu'il expose un langage de requête général en tant que JSON.

Si vous avez quelques entrées sur une page Web et qu'elles correspondent directement à des prédicats SQL connus, vous risquez d'exagérer avec le modèle JSON.

C'est pourquoi il est vraiment important de savoir ce qu'est réellement votre produit.

Résoudre le problème que vous avez, pas un problème qui tu auras peut-être un jour.


A. suggérer le texte de recherche

Les suggestions descendent: Une liste déroulante avec suggéré texte de recherche alternatives à ce que vous avez écrit, correspondant plus ou moins à quelque chose que vous étiez sur le point de taper.

Saisie du texte: La case étant remplie de texte marqué, vous permettant de continuer à taper. Généralement combiné avec des suggestions. (Le terme « achèvement de texte » est utilisé dans WPF et Silverlight.)


12 réponses 12

Pour les personnes qui ont un problème aimer ce:

Modifiez le délai dans le coin supérieur droit.

Par défaut, il affiche les données seulement pour les 15 dernières minutes.

Je voulais mettre cela en commentaire mais malheureusement, je ne suis pas en mesure de donner mon repo déficient pour le faire. Ainsi, comme @Ngeunpo l'a suggéré, voici comment ajouter un champ de temps à un index lors de sa création :. Si vous ne l'avez pas fait lors de la création de votre index, je vous suggère de supprimer cet index et de le recréer. Le nom de l'index logstash-* dans le gif est analogue à votre index applogs. Dans ce cas, le champ @timestamp est ajouté comme champ de temps. Laissez-moi savoir si cela fonctionne.

Kibana ne comprend pas le horodatage champ, si son format est incorrect.Horodatage, que vous avez sélectionné en cliquant sur Nom du champ de temps lors de la configuration d'un modèle d'index, doit être :

alors vous devez mettre à jour votre mappage d'index comme ceci :

Si vous utilisez ES 2.X, vous pouvez définir le "format" sur "epoch_millis" comme ceci :

Essayez ceci : décochez la case « L'index contient des événements basés sur le temps », puis indiquez le nom de votre index, puis cochez « Découvrir » s'il contient des données ou non

J'ai eu le même problème et cela a fonctionné pour moi:

  1. Supprimez l'index de l'onglet Paramètres.
  2. redémarrer Kibana
  3. puis rajouter dans les paramètres

Je suis sûr que les problèmes avec Time-Series peuvent également être un problème, mais si aucun champ ne s'affiche réellement dans l'onglet Découvrir, vous pourriez avoir le même problème que le journaliste d'origine et ce que j'avais.

J'ai probablement eu le même problème - je vois des données dans le tableau de bord mais 0 résultat en découverte. Aller à Gestion> Modèle d'index> bouton Actualiser la liste des fichiers (un bouton avec une icône d'actualisation uniquement) l'a résolu pour moi.

J'ai eu le même problème et le commentaire de @tAn- m'a aidé à le résoudre. Changer le champ de date en @timestamp a fait l'affaire. Merci !

La prochaine étape devrait être de découvrir ce qui n'allait pas avec ma champ de date personnalisé.

J'ai eu le même problème, mais maintenant tout fonctionne bien. Le problème était avec le @timestamp. En fait, j'ai téléchargé le fichier sur elasticsearch à l'aide de logstash, il génère donc automatiquement un champ @timestamp. Kibana compare la plage de temps avec ce @timestamp, c'est-à-dire le moment où l'événement réel s'est produit. Même si je désélectionne l'option "L'index contient des événements basés sur le temps" dans la page d'ajout d'un nouveau modèle d'index, kibana considérera automatiquement le champ @timestamp.Alors basculez avec le délai sur kibana basé sur le champ @timestamp a fonctionné pour moi. Vous pouvez également vérifier en ajoutant un modèle d'index sans horodatage et désélectionnez l'option "L'index contient des événements basés sur le temps". aboutir à la page de découverte. Ce sont toutes mes observations, pas sûr, cette solution correspond à votre cas .. vous pouvez essayer .. J'utilise ES 1.5x, logstash 1.5.1 et kibana 4.1.0

J'ai également connu la même erreur. Cela se produit principalement à cause du format de l'heure. Fondamentalement, assurez-vous d'avoir une période de temps valide pour vos données (filtre en haut à droite). Quoi qu'il en soit, dans mon cas, j'ai utilisé le format d'heure d'époque pour l'horodatage mais cela n'a pas fonctionné. Alors j'ai changé pour époque_millisec au lieu de cela et cela a fonctionné comme un charme.

En résumé, assurez-vous que Kibana peut comprendre le format de votre date et heure. C'est requis époque_millisec par défaut pas seulement époque.

Dans ma situation, tout fonctionnait auparavant et je ne pouvais pas voir les dernières données à partir du 1er février (en fait, je le pouvais si je regardais un mois en arrière). Il s'avère que le format de mappage de mon champ de temps personnalisé était incorrect. Mon format de mappage était AAAA-MM-JJ'T'HH:mm:ss.SSSZ . Le problème était que DD est interprété comme le jour de l'année et je voulais le jour du mois qui est jj . La modification du mappage et la réindexation ont résolu le problème.

Dans mon cas, j'ai réglé l'heure à partir du journal du serveur. et l'heure était différente avec UTC (l'heure du journal était future par rapport à l'heure UTC), donc, lorsque je recherche des journaux avec un filtre de jours/mois/années. il n'y avait pas de journal car c'était l'heure future. donc, quand j'utilise le filtre Aujourd'hui. ou avec le temps futur. Il a montré les journaux. après, changer le fuseau horaire. c'est réparé

J'ai eu le même problème, donc, comme indiqué dans l'une des solutions ci-dessus, je suis allé dans les paramètres, j'ai supprimé l'index précédent et j'en ai créé un nouveau avec @timestamp.

Mais cela n'a pas résolu le problème. Alors, je me suis penché sur la question et j'ai vu qu'après un déploiement, il n'y avait rien qui arrivait à Kibana.

Alors, je suis allé dans le serveur et j'ai vu que les index étaient corrompus. J'ai donc juste arrêté le logstash et l'elasticsearch sur l'instance/le serveur et redémarré le service. Et voilà, il a redémarré avec succès le service et kibana était de retour.

POURQUOI C'EST ARRIVÉ ?

Quelqu'un a peut-être arrêté brutalement le serveur, ce qui a entraîné la corruption des index.


Contenu

La technologie DPI bénéficie d'une longue histoire technologiquement avancée, qui a commencé dans les années 1990, avant que la technologie n'entre dans ce qui est aujourd'hui considéré comme des déploiements courants et grand public. La technologie remonte à plus de 30 ans, lorsque de nombreux pionniers ont apporté leurs inventions à des participants de l'industrie, notamment par le biais de normes communes et d'innovations précoces, telles que les suivantes :

La fonctionnalité DPI essentielle comprend l'analyse des en-têtes de paquets et des champs de protocole. Par exemple, Wireshark offre des fonctionnalités DPI essentielles grâce à ses nombreux dissecteurs qui affichent les noms et le contenu des champs et, dans certains cas, offrent une interprétation des valeurs des champs.

Certaines solutions de sécurité qui offrent DPI combinent les fonctionnalités d'un système de détection d'intrusion (IDS) et d'un système de prévention d'intrusion (IPS) avec un pare-feu traditionnel avec état. [5] Cette combinaison permet de détecter certaines attaques que ni l'IDS/IPS ni le pare-feu avec état ne peuvent intercepter seuls. Les pare-feux avec état, bien qu'ils soient capables de voir le début et la fin d'un flux de paquets, ne peuvent pas détecter par eux-mêmes des événements qui seraient hors limites pour une application particulière. Alors que les IDS sont capables de détecter les intrusions, ils ont très peu de capacités pour bloquer une telle attaque. Les DPI sont utilisés pour empêcher les attaques de virus et de vers à des vitesses filaires. Plus précisément, DPI peut être efficace contre les attaques par débordement de tampon, les attaques par déni de service (DoS), les intrusions sophistiquées et un petit pourcentage de vers qui tiennent dans un seul paquet. [6]

Les appareils compatibles DPI ont la possibilité de regarder la couche 2 et au-delà de la couche 3 du modèle OSI. Dans certains cas, DPI peut être invoqué pour parcourir les couches 2 à 7 du modèle OSI. Cela inclut les en-têtes et les structures de protocole de données ainsi que la charge utile du message. La fonctionnalité DPI est invoquée lorsqu'un appareil regarde ou prend d'autres mesures en fonction d'informations au-delà de la couche 3 du modèle OSI. DPI peut identifier et classer le trafic sur la base d'une base de données de signatures qui comprend des informations extraites de la partie données d'un paquet, permettant un contrôle plus fin que la classification basée uniquement sur les informations d'en-tête. Les points d'extrémité peuvent utiliser des techniques de cryptage et d'obscurcissement pour échapper aux actions DPI dans de nombreux cas.

Un paquet classifié peut être redirigé, marqué/étiqueté (voir qualité de service), bloqué, limité en débit et, bien entendu, signalé à un agent déclarant dans le réseau. De cette manière, les erreurs HTTP de différentes classifications peuvent être identifiées et transmises pour analyse. De nombreux périphériques DPI peuvent identifier les flux de paquets (plutôt que l'analyse paquet par paquet), permettant des actions de contrôle basées sur les informations de flux accumulées. [7]

Initialement, la sécurité au niveau de l'entreprise n'était qu'une discipline de périmètre, avec une philosophie dominante consistant à empêcher les utilisateurs non autorisés d'entrer et à protéger les utilisateurs autorisés du monde extérieur. L'outil le plus fréquemment utilisé pour accomplir cela a été un pare-feu avec état. Il peut permettre un contrôle précis de l'accès depuis le monde extérieur vers des destinations prédéfinies sur le réseau interne, ainsi qu'autoriser l'accès en retour à d'autres hôtes uniquement si une demande au monde extérieur a été faite précédemment. [8]

Des vulnérabilités existent au niveau des couches réseau, cependant, qui ne sont pas visibles par un pare-feu avec état. En outre, une augmentation de l'utilisation des ordinateurs portables en entreprise rend plus difficile la prévention des menaces telles que les virus, les vers et les logiciels espions de pénétrer dans le réseau de l'entreprise, car de nombreux utilisateurs connecteront l'ordinateur portable à des réseaux moins sécurisés tels que les connexions haut débit à domicile ou réseaux sans fil dans les lieux publics. Les pare-feu ne font pas non plus la distinction entre les utilisations autorisées et interdites des applications auxquelles l'accès est légitime. DPI permet aux administrateurs informatiques et aux responsables de la sécurité de définir des politiques et de les appliquer à toutes les couches, y compris la couche application et utilisateur pour aider à lutter contre ces menaces. [9] [10]

Deep Packet Inspection est capable de détecter quelques types d'attaques par débordement de tampon.

DPI peut être utilisé par l'entreprise pour la prévention des fuites de données (DLP). Lorsqu'un utilisateur de messagerie essaie d'envoyer un fichier protégé, l'utilisateur peut recevoir des informations sur la manière d'obtenir l'autorisation appropriée pour envoyer le fichier. [11] [ exemple nécessaire ] [ éclaircissements nécessaires ]

En plus d'utiliser le DPI pour sécuriser leurs réseaux internes, les fournisseurs d'accès Internet l'appliquent également sur les réseaux publics mis à disposition des clients. Les utilisations courantes du DPI par les FAI sont l'interception légale, la définition et l'application des politiques, la publicité ciblée, la qualité de service, l'offre de services à plusieurs niveaux et l'application des droits d'auteur.

Interception légale Modifier

Les fournisseurs de services sont tenus par presque tous les gouvernements du monde entier de permettre des capacités d'interception légales. Il y a des décennies, dans un ancien environnement téléphonique, cela a été atteint en créant un point d'accès au trafic (TAP) à l'aide d'un serveur proxy d'interception qui se connecte à l'équipement de surveillance du gouvernement. Le composant d'acquisition de cette fonctionnalité peut être fourni de plusieurs manières, y compris DPI, les produits compatibles DPI qui sont « compatibles LI ou CALEA » peuvent être utilisés – lorsqu'ils sont ordonnés par une ordonnance du tribunal – pour accéder au flux de données d'un utilisateur. [12]

Définition et application de la politique Modifier

Les fournisseurs de services tenus par l'accord de niveau de service avec leurs clients de fournir un certain niveau de service et en même temps, d'appliquer une politique d'utilisation acceptable, peuvent utiliser DPI pour mettre en œuvre certaines politiques qui couvrent les violations du droit d'auteur, les matériaux illégaux et injustes. utilisation de la bande passante. Dans certains pays, les FAI sont tenus d'effectuer un filtrage, en fonction des lois du pays. DPI permet aux fournisseurs de services de « connaître facilement les paquets d'informations que vous recevez en ligne, des e-mails aux sites Web, en passant par le partage de musique, de vidéos et de téléchargements de logiciels ». [13] Des politiques peuvent être définies pour autoriser ou interdire la connexion vers ou depuis une adresse IP, certains protocoles ou même des heuristiques qui identifient une certaine application ou un certain comportement.

Publicité ciblée Modifier

Parce que les FAI acheminent le trafic de tous leurs clients, ils sont en mesure de surveiller les habitudes de navigation sur le Web de manière très détaillée, ce qui leur permet d'obtenir des informations sur les intérêts de leurs clients, qui peuvent être utilisées par les entreprises spécialisées dans la publicité ciblée. Au moins 100 000 clients américains sont suivis de cette manière, et jusqu'à 10 % des clients américains ont été suivis de cette manière. [14] Les fournisseurs de technologie incluent NebuAd, Front Porch et Phorm. Les FAI américains surveillant leurs clients incluent Knology [15] et Wide Open West. En outre, le FAI britannique British Telecom a admis avoir testé les solutions de Phorm à l'insu de ses clients ou sans leur consentement. [14]

Qualité de service Modifier

Les applications telles que le trafic peer-to-peer (P2P) posent des problèmes croissants aux fournisseurs de services à large bande. En règle générale, le trafic P2P est utilisé par les applications qui partagent des fichiers. Il peut s'agir de n'importe quel type de fichiers (c'est-à-dire des documents, de la musique, des vidéos ou des applications). En raison de la taille souvent importante des fichiers multimédias transférés, le P2P entraîne des charges de trafic croissantes, nécessitant une capacité réseau supplémentaire. Les fournisseurs de services affirment qu'une minorité d'utilisateurs génèrent de grandes quantités de trafic P2P et dégradent les performances de la majorité des abonnés haut débit utilisant des applications telles que la messagerie électronique ou la navigation Web qui utilisent moins de bande passante. [16] Les mauvaises performances du réseau augmentent l'insatisfaction des clients et entraînent une baisse des revenus des services.

Le DPI permet aux opérateurs de survendre leur bande passante disponible tout en assurant une distribution équitable de la bande passante à tous les utilisateurs en évitant la congestion du réseau. De plus, une priorité plus élevée peut être attribuée à un appel VoIP ou de vidéoconférence qui nécessite une faible latence par rapport à la navigation Web qui n'en nécessite pas. [17] C'est l'approche que les fournisseurs de services utilisent pour allouer dynamiquement la bande passante en fonction du trafic qui transite par leurs réseaux.

Services à plusieurs niveaux Modifier

Les fournisseurs de services mobiles et à large bande utilisent le DPI comme moyen de mettre en œuvre des plans de services à plusieurs niveaux, pour différencier les services de « jardin clos » des services de données « à valeur ajoutée », « à volonté » et « taille unique » . [18] En pouvant facturer un « jardin clos », par application, par service ou « à volonté » plutôt qu'un forfait « taille unique », l'exploitant peut adapter son offre à l'abonné individuel et augmenter son revenu moyen par utilisateur (ARPU). Une politique est créée par utilisateur ou groupe d'utilisateurs, et le système DPI applique à son tour cette politique, permettant à l'utilisateur d'accéder à différents services et applications.

Application du droit d'auteur Modifier

Les FAI sont parfois demandés par les titulaires de droits d'auteur ou requis par les tribunaux ou la politique officielle pour aider à faire respecter les droits d'auteur. En 2006, l'un des plus grands FAI du Danemark, Tele2, a reçu une injonction du tribunal et lui a dit qu'il devait empêcher ses clients d'accéder à The Pirate Bay, un point de lancement pour BitTorrent. [19] Au lieu de poursuivre les partageurs de fichiers un par un, [20] la Fédération internationale de l'industrie phonographique (IFPI) et les quatre grandes maisons de disques EMI, Sony BMG, Universal Music et Warner Music ont commencé à poursuivre les FAI comme Eircom pour ne pas en faire assez pour protéger leurs droits d'auteur. [21] L'IFPI souhaite que les FAI filtrent le trafic pour supprimer de leur réseau le matériel protégé par le droit d'auteur téléchargé et téléchargé de manière illicite, malgré la directive européenne 2000/31/CE indiquant clairement que les FAI ne peuvent être soumis à une obligation générale de surveiller les informations qu'ils transmettent, et directive 2002/58/CE accordant aux citoyens européens un droit au secret des communications. La Motion Picture Association of America (MPAA), qui applique les droits d'auteur sur les films, a pris position avec la Federal Communications Commission (FCC) selon laquelle la neutralité du réseau pourrait nuire aux techniques anti-piratage telles que l'inspection approfondie des paquets et d'autres formes de filtrage. [22]

Statistiques Modifier

DPI permet aux FAI de collecter des informations statistiques sur les modèles d'utilisation par groupe d'utilisateurs. Par exemple, il peut être intéressant de savoir si les utilisateurs avec une connexion 2Mbit utilisent le réseau d'une manière différente des utilisateurs avec une connexion 5Mbit. L'accès aux données de tendance facilite également la planification du réseau. [ éclaircissements nécessaires ]

En plus d'utiliser le DPI pour la sécurité de leurs propres réseaux, les gouvernements d'Amérique du Nord, d'Europe et d'Asie utilisent le DPI à diverses fins telles que la surveillance et la censure. Beaucoup de ces programmes sont classifiés. [23]

États-Unis Modifier

La FCC adopte les exigences Internet CALEA : la FCC, conformément à son mandat du Congrès américain et conformément aux politiques de la plupart des pays du monde, a exigé que tous les fournisseurs de télécommunications, y compris les services Internet, soient capables de prendre en charge l'exécution d'une ordonnance du tribunal pour fournir des analyses de communication en temps réel d'utilisateurs spécifiés. En 2006, la FCC a adopté de nouvelles règles du titre 47, sous-partie Z, exigeant des fournisseurs d'accès Internet qu'ils satisfassent à ces exigences. DPI était l'une des plates-formes essentielles pour répondre à cette exigence et a été déployée à cette fin aux États-Unis.

La National Security Agency (NSA), en coopération avec AT&T Inc., a utilisé l'inspection approfondie des paquets pour rendre la surveillance, le tri et le transfert du trafic Internet plus intelligents. Le DPI est utilisé pour trouver quels paquets transportent un e-mail ou un appel téléphonique Voice over Internet Protocol (VoIP). [24] Le trafic associé à la dorsale commune d'AT&T était « divisé » entre deux fibres, divisant le signal de sorte que 50 pour cent de la force du signal aille à chaque fibre de sortie. L'une des fibres de sortie a été détournée vers une pièce sécurisée, l'autre a acheminé les communications vers l'équipement de commutation d'AT&T. La salle sécurisée contenait des analyseurs de trafic et des serveurs logiques Narus. Narus déclare que ces appareils sont capables de collecter des données en temps réel (enregistrer des données pour examen) et de capturer à 10 gigabits par seconde. Certains trafics ont été sélectionnés et envoyés sur une ligne dédiée à un « emplacement central » pour analyse. Selon un affidavit du témoin expert J. Scott Marcus, ancien conseiller principal pour la technologie Internet à la Commission fédérale des communications des États-Unis, le trafic détourné « représentait tout ou presque tout le trafic de peering d'AT&T dans la région de la baie de San Francisco », et ainsi, "les concepteurs de la configuration . n'ont fait aucune tentative, en termes d'emplacement ou de position de la division de la fibre, pour exclure les sources de données composées principalement de données nationales". [25] Le logiciel Semantic Traffic Analyzer de Narus, qui s'exécute sur des serveurs IBM ou Dell Linux à l'aide de DPI, trie le trafic IP à 10 Gbit/s pour sélectionner des messages spécifiques en fonction d'une adresse e-mail ciblée, d'une adresse IP ou, dans le cas de VoIP, numéro de téléphone. [26] Le président George W. Bush et le procureur général Alberto R. Gonzales ont affirmé qu'ils pensaient que le président avait le pouvoir d'ordonner des interceptions secrètes d'échanges téléphoniques et de courrier électronique entre des personnes à l'intérieur des États-Unis et leurs contacts à l'étranger sans obtenir de FISA. garantir. [27]

La Defense Information Systems Agency a développé une plate-forme de capteurs qui utilise Deep Packet Inspection. [28]

Chine Modifier

Le gouvernement chinois utilise Deep Packet Inspection pour surveiller et censurer le trafic réseau et le contenu qui, selon lui, est préjudiciable aux citoyens chinois ou aux intérêts de l'État. Ce matériel comprend de la pornographie, des informations sur la religion et la dissidence politique. [29] Les FAI du réseau chinois utilisent DPI pour voir s'il y a un mot-clé sensible passant par leur réseau. Si c'est le cas, la connexion sera coupée. People within China often find themselves blocked while accessing Web sites containing content related to Taiwanese and Tibetan independence, Falun Gong, the Dalai Lama, the Tiananmen Square protests and massacre of 1989, political parties that oppose that of the ruling Communist party, or a variety of anti-Communist movements [30] as those materials were signed as DPI sensitive keywords already. China previously blocked all VoIP traffic in and out of their country [31] but many available VOIP applications now function in China. Voice traffic in Skype is unaffected, although text messages are subject to filtering, and messages containing sensitive material, such as curse-words, are simply not delivered, with no notification provided to either participant in the conversation. China also blocks visual media sites such as YouTube.com and various photography and blogging sites. [32]

High-ranking websites blocked in mainland China using Deep Packet Inspection
Alexa rank Site Internet Domain URL Catégorie Primary language
6 Wikipédia wikipedia.org www.wikipedia.org Censorship-free encyclopedia Anglais
1 Google google.com www.google.com Worldwide Internet search engine Anglais
1 Google Encrypted google.com encrypted.google.com Search Anglais
2 Facebook facebook.com www.facebook.com Social network Anglais
3 Youtube youtube.com www.youtube.com Vidéo Anglais
557 JW.ORG jw.org www.jw.org Spiritual, Christianity Multilingual
24693 OpenVPN openvpn.net www.openvpn.net Avoidance of political internet censorship Anglais
33553 Strong VPN strongvpn.com www.strongvpn.com Avoidance of political internet censorship Anglais
78873 Falun Dafa falundafa.org www.falundafa.org Spiritual Anglais
1413995 VPN Coupons vpncoupons.com www.vpncoupons.com Avoidance of political internet censorship Anglais
2761652 ElephantVPN elephantvpn.com www.elephantvpn.com Avoidance of political internet censorship Anglais

Iran Edit

The Iranian government purchased a system, reportedly for deep packet inspection, in 2008 from Nokia Siemens Networks (NSN) (a joint venture Siemens AG, the German conglomerate, and Nokia Corp., the Finnish cell telephone company), now NSN is Nokia Solutions and Networks, according to a report in the le journal Wall Street in June, 2009, quoting NSN spokesperson Ben Roome. According to unnamed experts cited in the article, the system "enables authorities to not only block communication but to monitor it to gather information about individuals, as well as alter it for disinformation purposes".

The system was purchased by the Telecommunication Infrastructure Co., part of the Iranian government's telecom monopoly. Selon le Journal, NSN "provided equipment to Iran last year under the internationally recognized concept of 'lawful intercept,' said Mr. Roome. [ citation needed ] That relates to intercepting data for the purposes of combating terrorism, child pornography, drug trafficking, and other criminal activities carried out online, a capability that most if not all telecom companies have, he said. The monitoring center that Nokia Siemens Networks sold to Iran was described in a company brochure as allowing 'the monitoring and interception of all types of voice and data communication on all networks.' The joint venture exited the business that included the monitoring equipment, what it called 'intelligence solution,' at the end of March, by selling it to Perusa [33] Partners Fund 1 LP, a Munich-based investment firm, Mr. Roome said. He said the company determined it was no longer part of its core business. [ citation needed ]

The NSN system followed on purchases by Iran from Secure Computing Corp. earlier in the decade. [34]

Questions have been raised about the reporting reliability of the Journal report by David Isenberg, an independent Washington, D.C.-based analyst and Cato Institute Adjunct Scholar, specifically saying that Mr. Roome is denying the quotes attributed to him and that he, Isenberg, also had similar complaints with one of the same Journal reporters in an earlier story. [35] NSN has issued the following denial: NSN "has not provided any deep packet inspection, web censorship or Internet filtering capability to Iran". [36] A concurrent article in The New York Times stated the NSN sale had been covered in a "spate of news reports in April [2009], including The Washington Times," and reviewed censorship of the Internet and other media in the country, but did not mention DPI. [37]

According to Walid Al-Saqaf, the developer of the internet censorship circumventor Alkasir, Iran was using deep packet inspection in February 2012, bringing internet speeds in the entire country to a near standstill. This briefly eliminated access to tools such as Tor and Alkasir. [38]

Russian Federation Edit

DPI is not yet mandated in Russia. Federal Law No.139 enforces blocking websites on the Russian Internet blacklist using IP filtering, but does not force ISPs into analyzing the data part of packets. Yet some ISPs still use different DPI solutions to implement blacklisting. For 2019, the governmental agency Roskomnadzor is planning a nationwide rollout of DPI after the pilot project in one of the country's regions, at an estimated cost of 20 billion roubles (US$300M). [39]

Some human rights activists [ qui? ] consider Deep Packet inspection contrary to Article 23 of the Constitution of the Russian Federation, though a legal process to prove or refute that has never taken place. [ citation needed ] [40]

Singapore Edit

The city state reportedly employs deep packet inspection of Internet traffic. [41]

Syria Edit

The state reportedly employs deep packet inspection of Internet traffic, to analyze and block forbidden transit.

Malaysia Edit

The incumbent Malaysian Government, headed by Barisan Nasional, was said to be using DPI against a political opponent during the run-up to the 13th general elections held on 5 May 2013.

The purpose of DPI, in this instance, was to block and/or hinder access to selected websites, e.g. Facebook accounts, blogs and news portals. [42] [43]

Egypte Modifier

Since 2015, Egypt reportedly started to join the list which was constantly being denied by the Egyptian National Telecom Regulatory Authority (NTRA) officials. However, it came to news when the country decided to block the encrypted messaging app Signal as announced by the application's developer. [44]

In April 2017, all VOIP applications including FaceTime, Facebook Messenger, Viber, Whatsapp calls and Skype have been all blocked in the country. [45]

Vietnam Edit

Vietnam launched its network security center and required ISPs to upgrade their hardware systems to use deep packet inspection to block Internet traffic. [46] [47]

People and organizations concerned about privacy or network neutrality find inspection of the content layers of the Internet protocol to be offensive, [12] saying for example, "the 'Net was built on open access and non-discrimination of packets!" [48] Critics of network neutrality rules, meanwhile, call them "a solution in search of a problem" and say that net neutrality rules would reduce incentives to upgrade networks and launch next-generation network services. [49]

Deep packet inspection is considered by many to undermine the infrastructure of the internet. [50]

With increased use of HTTPS and privacy tunneling using VPNs, the effectiveness of DPI is coming into question. [51] In response, many web application firewalls now offer HTTPS inspection, where they decrypt HTTPS traffic to analyse it. [52] The WAF can either terminate the encryption, so the connection between WAF and client browser uses plain HTTP, or re-encrypt the data using its own HTTPS certificate, which must be distributed to clients beforehand. [53] The techniques used in HTTPS / SSL Inspection (also known as HTTPS / SSL Interception) are the same used by man-in-the-middle (MiTM) attacks [54]

  1. Client wants to connect to https://www.targetwebsite.com
  2. Traffic goes through Firewall or Security Product
  3. Firewall works as transparent Proxy
  4. Firewall Creates SSL Certificate signed by its own "CompanyFirewall CA"
  5. Firewall presents this "CompanyFirewall CA" Signed Certificate to Client (not the targetwebsite.com Certificate)
  6. At the same time the Firewall on its own connects to https://www.targetwebsite.com
  7. targetwebsite.com Presents its Officially Signed Certificate (Signed by a Trusted CA)
  8. Firewall checks Certificate Trust chain on its own
  9. Firewall now works as Man-in-the-middle.
  10. Traffic from Client will be decrypted (with Key Exchange Information from Client), analysed (for harmful traffic, policy violation or viruses), encrypted (with Key Exchange Information from targetwebsite.com) and sent to targetwebsite.com
  11. Traffic from targetwebsite.com will also be decrypted (with Key Exchange Information from targetwebsite.com), analysed (like above), encrypted (with Key Exchange Information from Client) and sent to Client.
  12. The Firewall Product can read all information exchanged between SSL-Client and SSL-Server (targetwebsite.com)

This can be done with any TLS-Terminated connection (not only HTTPS) as long as the firewall product can modify the TrustStore of the SSL-Client

Traditionally the mantra which has served ISP well has been to only operate at layer 4 and below of the OSI model. This is because simply deciding where packets go and routing them is comparably very easy to handle securely. This traditional model still allows ISPs to accomplish required tasks safely such as restricting bandwidth depending on the amount of bandwidth that is used (layer 4 and below) rather than per protocol or application type (layer 7). There is a very strong and often ignored argument that ISP action above layer 4 of the OSI model provides what are known in the security community as 'stepping stones' or platforms to conduct man in the middle attacks from. This problem is exacerbated by ISP's often choosing cheaper hardware with poor security track records for the very difficult and arguably impossible to secure task of Deep Packet Inspection.

OpenBSD's packet filter specifically avoids DPI for the very reason that it cannot be done securely with confidence.

This means that DPI dependent security services such as TalkTalk's former HomeSafe implementation are actually trading the security of a few (protectable and often already protectable in many more effective ways) at a cost of decreased security for all where users also have a far less possibility of mitigating the risk. The HomeSafe service in particular is opt in for blocking but its DPI cannot be opted out of, even for business users [ citation needed ] .

nDPI (a fork from OpenDPI [55] which is EoL by the developers of ntop) [56] [57] is the open source version for non-obfuscated protocols. PACE, another such engine, includes obfuscated and encrypted protocols, which are the types associated with Skype or encrypted BitTorrent. [58] As OpenDPI is no longer maintained, an OpenDPI-fork named nDPI [59] has been created, actively maintained and extended with new protocols including Skype, Webex, Citrix and many others.

L7-Filter is a classifier for Linux's Netfilter that identifies packets based on application layer data. [60] It can classify packets such as Kazaa, HTTP, Jabber, Citrix, Bittorrent, FTP, Gnucleus, eDonkey2000, and others. It classifies streaming, mailing, P2P, VOIP, protocols, and gaming applications. The software has been retired and replaced by the open source Netify DPI Engine . [61]

Hippie (Hi-Performance Protocol Identification Engine) is an open source project which was developed as Linux kernel module. [62] It was developed by Josh Ballard. It supports both DPI as well as firewall functionality. [63]

SPID (Statistical Protocol IDentification) project is based on statistical analysis of network flows to identify application traffic. [64] The SPID algorithm can detect the application layer protocol (layer 7) by signatures (a sequence of bytes at a particular offset in the handshake), by analyzing flow information (packet sizes, etc.) and payload statistics (how frequently the byte value occurs in order to measure entropy) from pcap files. It is just a proof of concept application and currently supports approximately 15 application/protocols such as eDonkey Obfuscation traffic, Skype UDP and TCP, BitTorrent, IMAP, IRC, MSN, and others.

Tstat (TCP STatistic and Analysis Tool) provides insight into traffic patterns and gives details and statistics for numerous applications and protocols. [65]

Libprotoident introduces Lightweight Packet Inspection (LPI), which examines only the first four bytes of payload in each direction. That allows to minimize privacy concerns, while decreasing the disk space needed to store the packet traces necessary for the classification. Libprotoident supports over 200 different protocols and the classification is based on a combined approach using payload pattern matching, payload size, port numbers, and IP matching. [66]

A French company called Amesys, designed and sold an intrusive and massive internet monitoring system Eagle to Muammar Gaddafi. [67]

Comparison Edit

A comprehensive comparison of various network traffic classifiers, which depend on Deep Packet Inspection (PACE, OpenDPI, 4 different configurations of L7-filter, NDPI, Libprotoident, and Cisco NBAR), is shown in the Independent Comparison of Popular DPI Tools for Traffic Classification. [68]

There is a greater emphasis being placed on deep packet inspection - this comes in light [ éclaircissements nécessaires ] after the rejection of both the SOPA and PIPA bills. Many current DPI methods are slow and costly, especially for high bandwidth applications. More efficient methods of DPI are being developed. Specialized routers are now able to perform DPI routers armed with a dictionary of programs will help identify the purposes behind the LAN and internet traffic they are routing. Cisco Systems is now on their second iteration of DPI enabled routers, with their announcement of the CISCO ISR G2 router. [69]


Primary Navigation Patterns, Transient

Le terme transient means staying a short time, which is exactly how the following navigation menus work. They are hidden until we reveal them then we make a selection and they disappear again. The three patterns we’ll look at here are Side Drawers, Toggle Menus, and Pie Menus.

Side Drawer

There are two styles of Side Drawers. The first is an recouvrir , meaning a swipe or tap gesture will reveal a drawer that partially covers or overlaps the original screen content, as in RetailMeNot. The second style is an inlay , in which a swipe, pan, or tap will open a drawer that pushes the original screen content partially off-canvas, as in Path.

What is the best way to let users know that there is a Side Drawer?

The Android design guidelines ( http://bit.ly/1iKuQV5 ) recommend having the drawer open on first use so the user can see the menu and learn how to close the drawer:

Upon first launch of your app, introduce the user to the navigation drawer by automatically opening it. This ensures that users know about the navigation drawer and prompts them to learn about the structure of your app by exploring its content. Continue showing the drawer upon subsequent launches until the user actively expands the navigation drawer manually. Once you know that the user understands how to open the drawer, launch the app with the navigation drawer closed.

Sounds good, right? However, this suggestion has not performed well in the user testing I’ve conducted for clients. Instead, I recommend a design like Allthecooks, where the drawer “bumps” open just the first time the app is opened.

The most popular orientation for the Side Drawer is on the left, but it can be on the right instead, as with IfThisThenThat, or there can be drawers on the right and the left, as with the Facebook Beta for Windows Phone.

But don’t position the drawer on the bottom, as in the om finder and Frost apps. This positioning conflicts with the swipe-up gesture that reveals the Control Center in iOS 7.

Side Drawer content need not be limited to only navigation options. Zillow’s Mortgage Marketplace drawer has a real-time chart of mortgage rates, and social apps like LinkedIn frequently include profile information.

The Side Drawer can be more than one level deep. In Fancy, for instance, you can tap-tap-tap down the path until you reach the lowest-level category. As you drill down through the categories, the content on the right updates. In Wish, the Side Drawer path for Categories is only two levels deep categories are selected Springboard-style.

The Side Drawer can also let users switch high-level context. With the Side Drawer in Gmail for iOS, tapping the arrow by my name opens a panel that slides down over the menu options. There I can switch between email accounts, or add a new one.

The Side Drawer can be versatile, but be careful not to overload it with too many features. It should show the primary navigation options first and foremost.

Emerging Pattern

In response to iOS 7 guidelines, the designers of Luvocracy have been experimenting with a variation of the inlay Side Drawer ( http://uxmag.com/articles/adapting-ui-to-ios-7-the-side-menu ).

Tapping the navicon (or the “hamburger”) reveals the Side Drawer, but instead of the drawer inlay simply pushing the parent screen to the right, it also uses a 3D effect to push it back.

Luvocracy is simple to navigate and the transitions are smooth. However, a similar-style menu in Airbnb for iOS constitutes an anti-pattern. The new design creates three high-level menu categories: Travel, Host, and Log In. The Travel title is positioned across the top (with the actual travel menu options disconnected down below), while Host and Log In are next to each other on the bottom edge. Tapping on Host or swiping vertically switches Host to the top and Travel to the bottom (Log In stays static). Swiping again switches them back. This design is impractical and inefficient for users. I don’t always agree with everything in the iOS Design Guide ( http://bit.ly/1iK1juP ), but substitute the word swipe pour scroll in the following and it’s on point in this case:

Don’t make users scroll to see all their choices. This causes a disconcerting experience for users, because they must spend extra time to distinguish the choices. Also, it can be very difficult for users to scroll without inadvertently tapping an option.

The Navigation Drawer in the Android version of Airbnb, by comparison, is crystal-clear—no guesswork required.

A better implementation for iOS is American Airlines, where the Side Drawer reveals a well-designed grouped menu. I wish the parent screen weren’t translucent, though, since it is still a touch target.

Before you choose Side Drawer navigation, map out the information architecture for the app and validate it with users. Then, if a Side Drawer seems to make sense, you should prototype and test a couple of variations to see which one works best.

Toggle Menu

In this book’s first edition, I labeled this pattern the Mega Menu, after its web equivalent. Since then, mobile web and responsive web design have pushed this design further, and it is now more commonly known as the Toggle Menu.

Like the Side Drawer, the Toggle Menu can be an inlay that pushes the content down below the menu, as with Pocket or Qwiki, or an overlay that appears as a layer above the content, as with Walmart and Home Depot. The overlay design is the more common option in native mobile apps. In Ultravisual, the overlay Toggle Menu comes up from the bottom.

A key convention of the Toggle Menu is that whatever gesture reveals the menu—tapping an icon, swiping, or panning, for example—should also hide it.

The menu shouldn’t cover the whole screen, but instead let the background peek through. Tapping anywhere in the background should also hide the menu.

Android provides a specific control, the Spinner, for this type of primary navigation. But keep in mind the Spinner should be reserved for navigating between views in a category, as opposed to jumping between completely different categories.

For example, both the NPR and the NYTimes apps serve up news, and the Spinner offers different ways to slice and dice the massive amount of news content they offer. But if, say, NPR needed to offer other options in this menu, like Music or Weather, Android guidelines would dictate using a Tab Bar or Navigation Drawer instead.

For Android, use the Spinner control where the Toggle Menu is intended to show the views within a category. For iOS and Windows, bear in mind that the Toggle Menu is a custom control, which could take more time to implement, test, and maintain.

Pie Menu

Pie Menus—also known as wheels, circular menus, or radial menus—have been around since the ’90s in desktop software, and more recently in web applications. They are also very popular in game design. So I was excited to play with PIE, a Pie Menu interface in the open source Paranoid Android OS, and was surprised at how well it works.

If the Pie Menu option ever becomes a standard part of the stock Android OS, though, I think that will disqualify it for use as primary navigation within apps—it would create too many conflicts between the OS and the apps.

Looking at the other operating systems, I discovered only a handful of apps experimenting with this pattern for primary navigation. The examples I did find were discouraging. PortalWebBrowser, for instance, has a multitier wheel that requires psychic powers and surgeon-like precision to navigate.

The primary design differences between Paranoid Android’s PIE and the Pie Menu in PortalWebBrowser are the latter’s multiple tiers and tiny touch targets. Having to tap, hold, and then slide across tiers to variably sized wedges is not a simple or natural gesture. There are some good examples of Pie Menus for selecting actions, though see Chapter 5.

This is probably the weakest pattern for primary navigation and should be avoided for any menu with multiple tiers. If you have an application with flat information architecture, consider the Tab Menu—familiar to all users—instead.


Where should it happen?

Views might contain UI elements (widgets, buttons, menus etc.) that need to be displayed or not for some users, based on their permissions. This could be a responsibility of the view engine, since you don't want every view to handle this on its own. Depending on the type of elements you're doing authorization on you cold move this responsibility in another place. For example, think of a menu in which some items have to be displayed and some don't. The items can be implemented as a list somewhere and filter that list based on permissions then forward it to the view.

Controllers respond to requests, so if a user doesn't have the permission to execute an action it should be checked before the action is invoked, moving the responsibility to the action invoker instead of keeping it in the controller. This has the advantage of keeping your controller clean and if something changes in the permissions you don't have to sift through your controllers to apply those changes.

Ressources are displayed based on permissions. This is normally done at database level, since you don't want to pull everything from the database and then apply permissions.

As you can see, depending on what you want to authorize there are different places where this should be done. The goal is to be as unobtrusive as possible, so that when your security policy changes you can easily apply it, preferably without altering your application's code. This might not be valid for small applications, where the permission set is fairly small and doesn't change very often. In enterprise applications though, the story is quite different.


Utilisez les données cartographiques en direct HERE HD pour vérifier les configurations de voies

Cet exemple montre comment lire et visualiser les configurations de voies pour un itinéraire de conduite enregistré à partir du service HERE HD Live Map (HERE HDLM). Cette visualisation peut être utilisée pour vérifier les configurations de voies détectées par le système de perception d'un capteur embarqué, tel qu'une caméra monoculaire.

Dans cet exemple, vous apprenez à accéder aux couches tuilées à partir du service HDLM et à identifier la topologie, la géométrie et les attributs pertinents au niveau de la route et de la voie.

Pour lire les données, vous utilisez un objet hereHDLMReader. L'utilisation du service HERE HD Live Map nécessite des identifiants HERE HDLM valides. Vous devez conclure un accord séparé avec HERE afin d'accéder aux services HDLM et d'obtenir les informations d'identification requises (access_key_id et access_key_secret) pour utiliser le service HERE.

Aperçu

Les cartes haute définition (HD) font référence aux services de cartographie développés spécifiquement pour les applications de conduite automatisée. La géométrie précise de ces cartes (avec une résolution allant jusqu'à 1 cm près de l'équateur) les rend adaptées aux flux de travail de conduite automatisés au-delà des applications de planification d'itinéraire des cartes routières traditionnelles. Ces flux de travail incluent la vérification au niveau des voies, la localisation et la planification des chemins. Cet exemple vous montre comment vérifier les performances d'un système de détection de voie à l'aide des informations au niveau de la voie à partir des données cartographiques HD.

La précision des données cartographiques HD permet leur utilisation comme source de données de vérité terrain pour la vérification des systèmes de perception des capteurs embarqués. Cette haute précision permet une vérification plus rapide et plus précise des algorithmes déployés existants.

HERE HD Live Map (HERE HDLM) est un service de cartographie HD basé sur le cloud développé par HERE Technologies pour prendre en charge la conduite hautement automatisée. Les données sont composées de couches cartographiques en mosaïque qui donnent accès à une géométrie précise et à des attributs robustes d'un réseau routier. Les couches sont regroupées dans les modèles suivants :

Modèle d'axe de route : Fournit la topologie de la route (spécifiée en tant que nœuds et liens dans un graphique), la géométrie de la forme et d'autres attributs au niveau de la route.

Modèle de voie HD : Fournit une topologie de voies (sous forme de groupes de voies et de connecteurs de groupes de voies), une géométrie très précise et des attributs au niveau des voies.

Modèle de localisation HD : Fournit des fonctionnalités pour prendre en charge les stratégies de localisation des véhicules.

Pour un aperçu des couches HERE HDLM, voir HERE HD Live Map Layers.

Les caméras sont utilisées dans la conduite automatisée pour recueillir des informations sémantiques sur la topologie de la route autour du véhicule. Les algorithmes de détection des limites de voies, de classification des types de voies et de détection des panneaux de signalisation constituent le cœur d'un tel pipeline de traitement de caméras. Vous pouvez utiliser le service HERE HDLM, ainsi qu'un GPS de haute précision monté sur le véhicule, pour évaluer la précision de ces algorithmes et vérifier leurs performances.

Dans cet exemple, vous apprenez à :

Lisez les informations sur les routes et les voies du service HERE HDLM pour une séquence GPS enregistrée.

Appliquez une approche de correspondance d'itinéraire heuristique aux données GPS enregistrées. Les données GPS étant souvent imprécises, il est nécessaire de résoudre le problème de la mise en correspondance des coordonnées géographiques enregistrées avec une représentation du réseau routier.

Identifier les attributs environnementaux pertinents pour le véhicule. Une fois qu'un véhicule est localisé avec succès dans le contexte de la carte, vous pouvez utiliser les attributs de route et de voie pertinents pour le véhicule pour vérifier les données enregistrées par le capteur de la caméra embarquée du véhicule.

Charger et afficher les données de la caméra et du GPS

Commencez par charger les données du lecteur enregistré. Les données enregistrées dans cet exemple proviennent d'un ensemble de données de conduite collectées par l'équipe Udacity® Self-Driving Car. Ces données comprennent une vidéo capturée par une caméra monoculaire frontale et les positions et vitesses du véhicule enregistrées par un GPS.


Famille

Texte en format libre: CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND INVENTOR'S NAME PREVIOUSLY RECORDED ON REEL 016521 FRAME 0716. ASSIGNOR(S) HEREBY CONFIRMS THE KILLIAN, FRANKASSIGNORS:DOSTERT, JANKILIAN, FRANKREEL/FRAME:024925/0990

Date effective: 20050414

Texte en format libre: BOÎTIER BREVETÉ

Année de paiement des frais: 4

Le nom du propriétaire: SAP SE, GERMANY

Texte en format libre: CHANGE OF NAMEASSIGNOR:SAP AGREEL/FRAME:033625/0334

Date effective: 20140707

Texte en format libre: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)