Progressive Web Apps, Partie 3: Comment l’application Web App est l’application

Si des applications Web peuvent continuer à être aussi puissants que leurs homologues autochtones, comment pouvez-vous les distinguer d'autres sites alors? Il y a Manifeste Web App, qui précise également l'apparence de l'application sur l'écran d'accueil ou dans le sélecteur d'application.

La semaine dernière, nous avons vu que les sites Web peuvent être améliorés avec des fonctionnalités qui étaient auparavant réservées aux applications natives. Si les sites Web deviennent maintenant des applications à part entière, se pose la question de savoir comment ils partent parce que différent des autres sites. La réponse est: Manifeste Utilisation du Web App, qui est également utilisé pour définir l'apparence de l'application sur l'écran d'accueil ou dans le sélecteur d'application. En appuyant sur le doigt est si l'application Web sur l'appareil installé sur App App - sans changer une ligne de code.

Le concept à la broche sites comme signets dans le menu Démarrer ou l'écran d'accueil n'est pas nouvelle: La fonction iOS "Ajouter à l'écran d'accueil" a été présenté dans la première partie de cette série. Peut-être le lecteur se rappeler également les sites épinglés pour Internet Explorer 9 ou 8. Pour spécifier les sites épinglés de Windows dans ces cas, l'icône affichée sur l'écran d'accueil, les métadonnées sont stockées dans l'en-tête du document HTML. En fonction de la plate-forme, les différentes balises meta sont à définir. Dans le cas de Progressive Web Apps, cependant, le Manifeste Web App est utilisé. Ceci est un format de fichier JSON qui contient des informations sur l'application Web. Il est référencé comme suit:

En présence de ces balises lien, le navigateur Web peut charger le fichier référencé. Encore une fois, la propriété de l'amélioration progressive est visible à nouveau les navigateurs que la relation "manifeste" et ne peut rien faire du Manifeste Web App, cette définition juste aller.

{
"short_name": "KA City Guide".
"nom": "Karlsruhe City Guide".
"icônes": [
{
"src": "actifs / lance-icon-3x.png".
"tailles": "144x144".
"qualité": "image / jpeg"
}
]
"theme_color": "# 303F9F".
"START_URL": "/".
"afficher": "autonome".
"gcm_sender_id": "482941778795"
}

La liste présentée ci-dessus montre un tel manifeste Web App minimale

application Web progressif sur l'écran d'accueil application Web progressif sur l'écran d'accueil

Il est également possible de se référer aux applications natives connexes dans un magasin, pour déposer une description ou configurer un écran de démarrage. "installations" Web Apps progressives sont la façon dont nous le connaissons des signets Safari sur iOS: Avec Google Chrome sur Android, l'utilisateur a tapé dans le site mMnü sur l'élément de menu Ajouter à l'écran d'accueil.

Une bannière dit à installer

App Installer bannières en action App Installer bannières en action

De plus, les navigateurs peuvent un "App Installer bannières" Montrer que invite à installer l'application Web présente sur l'appareil. Pour de bonnes raisons, cet affichage bannière est contrôlé par le navigateur: fournisseur de site Web, il ne peut pas afficher explicitement, ils peuvent le supprimer au plus. Google Chrome exige actuellement que les sites que l'installation de l'application veulent afficher des bannières Web minimum doit mettre en œuvre Manifeste App, un travailleur de service doit être enregistré (sur le site à livrer via HTTPS) et l'utilisateur visite le site au moins deux fois - en une distance d'au moins cinq minutes.

switcher onglet Web App progressive switcher onglet Web App progressive

Il est important de noter qu'il ne soit pas techniquement une installation réelle. Toutes les fonctions telles que le soutien à la capacité hors-ligne ou les notifications push fonctionneront dans le navigateur, sans ajouter l'application à l'écran d'accueil. Pour cette applications ajoutées, cependant, exécuter à la demande sans fenêtre du pansement du navigateur Web sont appelés "propre application" commencé et apparaissent ainsi séparément dans l'App Switcher.

Populaire Apps se termine automatiquement dans le Windows Store

Les moteurs de recherche comme Google peuvent Manifeste Web App, toutefois, être utilisés pour introduire une telle recherche spéciale pour les applications Web. Bing recherche sur le web aussi par Progressive Web Apps: applications particulièrement populaires stockera automatiquement sont disponibles dans Windows. Bien sûr, parce que les applications Web sont bien sûr de la plate-forme indépendante.

Comment un développeur peut déterminer à quel point il a battu dans le développement d'une application Web progressive? , Google propose l'extension du navigateur Chrome Phare. Ces contrôles service pour les travailleurs, l'application Web manifeste et le comportement du site. A propos de lui-même progressif Web Apps doit adapter à la taille de l'écran disponible en fonction de la propriété sensible.

Avec une capacité hors-ligne, les notifications push et d'installation certaines des caractéristiques techniques les plus importantes décrites dans cette série. Ne serait-il pas un problème commercial: Parce que si les magasins d'applications disparaissent en tant que plate-forme, les développeurs ont besoin pour obtenir une application commerciale à une autre façon de son argent. Une façon de le faire, nous discuterons la semaine prochaine.

Les communautés de développeurs dans Portrait # 1: myCSharp.de

contenu
  1. Les communautés de développeurs dans Portrait # 1: myCSharp.de
  2. Netiquette a vécu
  3. lire sur un côté
Golo Roden est un auteur, conférencier et formateur pour les technologies .NET et connexes en mettant l'accent sur le Web, l'architecture et les méthodes agiles.

myCSharp.de est l'un des principaux points focaux pour les programmeurs qui traitent des questions de C # et .NET. et fonctionnalités ont parlé avec Golo Roden, ancien administrateur et maintenant une page communauté des utilisateurs d'énergie sur les offres et les objectifs du Forum et de ses visiteurs.

et Caractéristiques: Golo, ce qui est derrière myCSharp.de?

Golo Roden: myCSharp.de est d'abord l'un des plus grands forums allemands sur C # et .NET. En principe, on trouve de l'aide pour toutes les questions relatives au développement de logiciels utilisant C #, .NET Framework aux bibliothèques supplémentaires, des outils tels que Visual Studio ou IIS - bref, tout ce qu'un développeur travaillant avec C # et .NET, aux questions et peut être d'intérêt pour répondre.

Communautés en Portrait

Des techniques innovantes ou établies de développement de logiciels vivent aujourd'hui plus que par le soutien de l'industrie ou par l'ingéniosité de son inventeur, des communautés de développeurs dynamiques et motivés assurant la pénétration du marché à long terme et l'autre avec les mots et les actes. développeur Heise reconnaît les importantes communautés de langue allemande dans une séquence lâche.

Je trouve remarquable que myCSharp.de est une communauté extrêmement amicale. insultes du désert et des remarques désobligeantes, comme pratique courante, en particulier dans certains open source sont entièrement liés newsgroups absents heureusement. Au fond, il se sent comme une grande famille où (presque) tout le monde aide tout le monde.

et Caractéristiques: Ce que les visiteurs trouveront sur le site?

Roden: Principalement le forum. Il y a, cependant, intégré dans la structure du forum, de nombreux autres domaines: Ainsi on trouve, par exemple, par les membres de la communauté a écrit des articles, une zone Snippets privée et devenir FAQ assez vaste. Il y a aussi la scène de nouvelles et un site d'emploi au sein du forum.

et Caractéristiques: Comment il est venu à la création du Forum?

Roden: L'ancien Alexander Schüler Steireif fondée myCSharp.de en Juillet 2003. A cette époque, je travaillais surtout sur mon guide de projet C #. D'une certaine façon, Alexander a pris conscience de moi et m'a demandé si nous ne voulons pas que nos pages un lien vers l'autre - que je me suis ensuite rejeté. Mes antennes ne sont pas dirigées au moment vers la communauté.

Quelques mois plus tard, je suis tombé sur myCSharp.de - sans me Alexander demande de rappeler -, me enregistrée et était très sympathique pris. Avec le recul, il a été constaté que Alexander et j'ai jamais eu un contact, et je me sentais tout cela très embarrassant. Cependant, bien, mal, il n'a pas, parce que Alexandre et moi avons commencé bientôt travailler plus étroitement ensemble. Finalement, je suis devenu administrateur adjoint même - l'honneur d'avoir fait myCSharp.de grand, mais en raison Alexandre. Ce fut une grande réussite, pour que je l'admire encore.

Après quelques années - pour être exact, en Avril 2006 - Alexander a malheureusement décidé myCSharp.de à tourner le dos pour faire face à de nouveaux défis, ce qui est pourquoi j'ai pris les devants. Après avoir ensuite révélé quelques changements de famille en moi, je devais malheureusement pour donner l'avance en raison des contraintes de temps. Je suis retourné, mais toujours aussi "Power User" actif.

et Caractéristiques: Combien de personnes font actifs de la communauté, ou combien d'utilisateurs sont-ils réunis au fil des ans au total?

Roden: À l'heure actuelle - qui est, en Mars 2010 - a myCSharp.de plus de 17.000 membres inscrits. Combien sont actifs, il est difficile de dire. Bien sûr, il y a une poignée d'affiche haut, herbivore tête.

Il a pris en charge une grande partie de l'administration et est un IT-LER incroyablement talentueux et complet: Bien qu'il soit seulement depuis Janvier 2005, il a déjà plus de 40 000 messages écrits - même les cinq du nombre de postes après que les membres suivants (!) le nombre ne peut pas battre ensemble. La particularité des contributions est herbivores qu'il sait ce dont il parle, et a très souvent prête un détail non divulgué auparavant avec laquelle il a enrichi les discussions.

En dehors de lui, il y a beaucoup d'autres membres très actifs dans la communauté, ils jouent chacun leur précieuse contribution. Ils vont des experts sur des sujets spécifiques tels que Visual Studio Team System (VSTS) et ASP.NET pour les personnes qui traitent de l'architecture ou le développement en général. Combien d'utilisateurs actifs sont vraiment actifs sur une base régulière, il est difficile à dire. En 2006, il y avait quelques statistiques, parce que la question était pour la communauté d'intérêts - les chiffres ont changé depuis, mais il montre une tendance à la hausse.

Il y a aussi herbivore encore une équipe de modérateurs qui prennent soin ensemble pour assurer le bon fonctionnement de myCSharp.de. Ici, le Forum a des modérateurs qui connaît parfaitement exactement un champ, mais aussi sur ceux qui sont plus généralistes. À mon avis, plutôt les compétences générales sont en demande parmi les présentateurs - qu'ils peuvent engager matériellement et diplomatiquement, par exemple, lors d'une discussion hors de propos tentaculaire - l'expertise technique dans les moindres détails sur les techniques spécifiques.

Avantages et inconvénients du serveur d’applications

contenu
  1. Sens et non-sens de la Windows Communication Foundation
  2. services Web WCF & pour le couplage d'applications .NET
  3. Avantages et inconvénients du serveur d'applications
  4. conclusion

Avantages et inconvénients du serveur d'applications

Dans de nombreux cas, en utilisant disputant WCF, ce n'est pas sur le couplage de deux applications indépendantes. , Il est plutôt de la question de savoir si une application de deux couches physiques (client - alias de base de données "2-Tier") ou trois couches physiques (client - serveur d'applications - alias de base de données "3-Tier"veulent construire). Seulement dans le second cas vous avez besoin WCF, car avec deux couches physiques du client peuvent parler directement avec les journaux de base de données natives au serveur de base de données, par exemple via Tabular Data Stream (TDS) avec Microsoft SQL Server. La communication est encapsulé dans les fournisseurs de base de données ADO.NET.

Surtout dans le monde germanophone tombe experts en informatique dans le domaine souvent difficile de trouver un langage commun, parce que "couche" est ambigu. Certains moyenne par "couche" une séparation purement logique (en anglais "couche"), D'autres entendent par une séparation physique ("animal"), Voir la figure 2. L'auteur de l'article a été récemment refinis (et victimes) le témoignage d'un "stratégique" qui a annoncé consultant IT: "De nos jours, les applications 3 couches sont le devoir absolu que l'échelle mieux." Bien que l'auteur ne veut pas remettre en cause la séparation de la couche logique, il est sceptique quant à une telle approbation générale de la séparation physique simplement parce qu'ils "moderne" est. Avant de chercher que pour le modèle 3 niveaux avec le modèle serveur d'application "niveau intermédiaire" vous devriez réfléchir à décide les avantages et les inconvénients.

couches physiques par rapport logiques (fig. 2)

Un serveur d'application peut sous-traiter les opérations intensives et en calcul de longue durée qui serait autrement bloquer le client. Il est également le stockage intermédiaire (cache) de données afin de réduire le nombre d'accès à la base de données. Lorsque la puissance ne suffit plus, il vous suffit de créer un nouveau serveur d'applications.

Il y a un certain désaccord sur le nombre "Tiers" a une application Web côté serveur classique avec des serveurs Web et base de données. Pour certains, c'est à trois niveaux, pour d'autres, il ne le fera que si le serveur Web et la base de données sépare encore un serveur d'application. Sans lui, vous pouvez faire évoluer dans le scénario avec le serveur Web supplémentaire. Avec un serveur d'applications, mais la flexibilité est plus grande, car il est évolutif que le goulot d'étranglement est le rendu des pages web ou le traitement d'arrière-plan en fonction.

Serveur d'applications constituent également une limite de sécurité entre le client et la base de données. Cela concerne non seulement dans les scénarios Internet où un serveur d'application forme une paroi de protection supplémentaire devant la base de données en cas de compromission du serveur Web. Dans les applications de bureau classiques peuvent mieux isoler la base de données avec un serveur d'application d'un accès direct à la clientèle.

Mesure de la perte de puissance

Du côté négatif se trouve à côté d'un frais de développement beaucoup plus élevés principalement en terme de communication supplémentaire, l'utilisation du serveur d'applications en premier lieu déclenche. Une surcharge importante est nécessaire pour tous les systèmes distribués, peu importe quel cadre et quel protocole est utilisé. Dans ce cas précis, l'ampleur des frais généraux pour WCF est de montrer.

Pour les mesures qui vient développées par l'auteur "baromètre WCF" utilisé. 100 accès de base de données, dans lequel 1000 ensembles de données (chacune avec 12 colonnes, seuls les types de données élémentaires) peuvent choisir à partir d'une table de base de données avec 10,000 enregistrements, prendre environ une seconde, si le client peut accéder directement au système de base de données (figure 3).

Accès direct à la base de données d'une application à deux niveaux (Fig. 3)

Si vous passez un serveur d'application entre le client et la base de données, prend onze fois la même communication (!) Plus (voir la figure 4).

L'accès à la base de données via un serveur d'applications WCF via TCP (Fig. 4)

Ceci est la surcharge du trafic réseau supplémentaire. Le facteur augmente à nouveau, si vous n'êtes pas TCP, mais HTTP comme protocole de transport utilisé (voir le tableau 3).

tousProcessus sur un systèmemodèle de distribution1modèle de distribution2modèle de distribution3
clientordinateur 1ordinateur 1ordinateur 1ordinateur 1
serveurordinateur 1ordinateur 1ordinateur 2ordinateur 2
base de donnéesordinateur 1ordinateur 2ordinateur 2ordinateur 3
2-Tier(TDS)1033108210821082
WCFNamed Pipes / binaire96039732n / a(*)n / a(*)
WCFTCP / binaire961297151158612476
WCF HTTP / SOAP11080111921398114099

Tableau 3: Temps d'exécution pour la lecture 100 fois 1000 enregistrements dans différents scénarios.
(*) Avec les pipes nommés, vous pouvez appeler uniquement les processus sur le même système dans WCF.

Le facteur de retard ne peut pas récupérer un serveur d'application. La figure 5 montre que la durée est de 9,5 secondes lorsque le serveur d'application récupère uniquement la première fois les données du serveur de base de données et ne laisse passer que les données de son cache dans la RAM 99 dans les appels suivants. Il peut marquer le cas échéant, lorsqu'un traitement de calcul intensif est ajouté et peut être stocker temporairement une grande quantité de données, la collecte de la base de données prend du temps (environ en raison de nombreuses jointures). L'examen est également une architecture hybride qui ne pas accéder à des données entre les commutateurs du serveur d'applications en général, mais est utilisé uniquement lors de certaines opérations, de longue durée.

L'accès à la base de données via un serveur d'applications WCF via TCP lorsque vous utilisez la mise en cache des données sur le serveur d'application (Fig. 5)


filtre de Bloom, comparativement

contenu
  1. Parcourir plus grandes quantités de données en utilisant JavaScript performant
  2. AngularJS, fuse.js
  3. filtre de Bloom, comparativement
  4. conclusion
  5. lire sur un côté

Bloom filtre un coup d'oeil

Le filtre Bloom remonte à Burton H. Bloom et est une structure de données utilisée pour la recherche efficace dans de grands volumes de données. L'opération Bill Mill a décrit très clairement dans un tutoriel.

En résumé, les filtres Bloom présentent les avantages et les inconvénients suivants:

avantagesinconvénients
très performantaucune recherche de similitude, aucune tolérance de panne
Hit précision de la taille de l'index configurable, il n'y a aucun risque qu'un coup ne se trouve pasRésultats de la recherche ne sont pas triés
stockage compact des données (souvent le débit de données de sortie est seulement 8.1 requis)pour obtenir un risque, soi-disant faux positifs, ce qui signifie qu'il peut être enregistrements renvoyés qui ne contiennent pas le terme de recherche
Implémentations disponibles dans toutes les langues pertinentes
facilement parallélisables (par division de l'index de recherche sur plusieurs serveurs / noyaux CPU)

Bloom filtres sont utilisés principalement dans la zone de base de données et comme mandataires calmar pour déterminer si une valeur particulière dans un ensemble de résultats (large) est présent. En général, le temps d'exécution est nettement inférieur au temps qui serait nécessaire pour une requête de base de données complète. De plus, le navigateur Chrome utilise en interne filtre Bloom pour vérifier si une URL saisie correspond à la signature d'un site dangereux.

Dans l'exemple pratique de l'index de recherche est en fin de compte un large éventail, qui inclut toutes les valeurs d'un ensemble de données dans un filtre Bloom:

var réseau de filtres de fleur = [];

var = nouveau filtre à fleur de floraison (bits, 6);
bloom.add (nom de famille);
bloom.add (prénom); // etc.

bloomFilterArray.push (Bloom);

À travers le réseau, l'application itère complètement pour chaque requête:

for (var i = 0; i < bloomFilterArray.length; i ++) {
if (.test réseau de filtres de fleur [i] (terme)) {
// Objets trouvés
}
}

devrait également être examinée sur la base du filtre Bloom dans quelle mesure la parallélisation de la recherche peut avoir un impact positif sur la performance. En fin de compte, pour diviser le tableau généré et transmis à plusieurs threads, à la suite de WebWorker. Un WebWorker est un script qui effectue la recherche dans un sous-ensemble dans son propre thread et passe au script appelant à la fin. L'initialisation et l'assemblage des résultats prennent quelques millisecondes.

Avec une petite quantité le résultat est moins important que plusieurs milliers de visites de recherche. Dans l'exemple être utilisé statique quatre WebWorker lorsque l'utilisateur active la case appropriée. Dans des conditions de production, il est utile d'abord déterminer le nombre de cœurs de processeur disponibles (par exemple., Via navigator.hardwareConcurrency) et distribuer les données en conséquence.

Comparaison des mesures

Pour les petites quantités de données (< 10.000 dossiers), il n'y a que des différences mineures entre les trois processus. Chacune des approches a un objectif différent. Ainsi, une comparaison entre un (tolérance) recherche de similarité et un simple et plutôt rigide filtre Bloom est pas vraiment significatif. Selon le cas d'utilisation cependant, il est important de connaître les alternatives et les avantages et les inconvénients associés ainsi que leurs limites. Par conséquent, toutes les mesures ont été effectuées sur la même base de données aux fins de comparaison, en fin de compte.

Les résultats comparatifs sont résumés dans le tableau suivant. Chaque recherche a été effectuée trois fois et la valeur moyenne en millisecondes notée. La mesure a toujours été maintenu en mode privé, le navigateur pour éviter les biais dus aux plug-ins et add-ons. Comme les systèmes de test et un air iPhone iPad iOS 5 s 8 et un PC avec processeur Core i7 et 12 Go de RAM sous Windows 7 ont été utilisés.

ordinateur personnel
archivesmot-cléprocessusvisitesChrome (v40)Firefox (v35)IE11IE9
1000Sachsangulaire20416341933
1000Sachsflou365125340110144
1000Sachsfleur131321
1000SachsBloom (4 fils)1334-
10000route Edvard Munchangulaire19814189126
10000route Edvard Munchflou1934231671130607429
10000route Edvard Munchfleur1161139156
10000route Edvard MunchBloom (4 fils)1181230-
10000011/05/1985angulaire64136906201266
10000011/05/1985fleur67470128898
10000011/05/1985Bloom (4 fils)6604684-
250000Berlinangulaire127741012203817103155
250000Berlinfleur12484157982411590
250000BerlinBloom (4 fils)12484234154220-
500000Neukirch / Lausitzangulaire342148439040327382
500000Neukirch / Lausitzfleur342802746525643
500000Neukirch / LausitzBloom (4 fils)34180165--
iPhone 5siPad Air
archivesmot-cléprocessusvisitessafarisafari
1000Sachsangulaire2041820
1000Sachsflou365131119
1000Sachsfleur182
1000SachsBloom (4 fils)1410
10000route Edvard Munchangulaire1177202
10000route Edvard Munchflou1947735384
10000route Edvard Munchfleur13129
10000route Edvard MunchBloom (4 fils)14221
10000011/05/1985angulaire615261200
10000011/05/1985fleur6149190
10000011/05/1985Bloom (4 fils)69685
250000Berlinangulaire1277440733897
250000Berlinfleur12484207150
250000BerlinBloom (4 fils)12484619395
500000Neukirch / Lausitzangulaire34--
500000Neukirch / Lausitzfleur34--
500000Neukirch / LausitzBloom (4 fils)34--

Cela implique les principales conclusions suivantes se posent:

  • Le filtre AngularJS fonctionne avec jusqu'à 50 000 dossiers dans tous les navigateurs bien, il est généralement (ce qui est pas surprenant puisque AngularJS est largement développé par Google) dans Chrome le plus rapide.
  • La recherche de similarité est la plus rapide IE11, IE9 et Firefox de manière significative à l'automne particulier. Rechercher dans plus de 1000 enregistrements sont généralement trop lent (pour l'amélioration).
  • Exact (filtre Bloom) sont dans tous les navigateurs performants actuels avec un maximum de 100 000 enregistrements, avec des données plus fixe Firefox est le plus rapide.
  • Plusieurs threads sur WebWorker pour que la peine de grandes quantités de données, mais sont avec <200ms fonctionnent très bien (au moins dans Firefox et Chrome).
  • WebWorker sont pris en charge par tous les navigateurs modernes, qui ont fourni IE11 500.000 dossiers, mais seulement un quart des résultats de retour
  • Safari sur iPad et iPhone est généralement plus rapide que IE9 et a travaillé jusqu'à 250.000 dossiers, écrasé à 500.000 dossiers, mais de (probablement en raison du manque de mémoire).
Il ne faut pas oublier que le chargement et le traitement des données source est assez de temps. Mais le traitement de l'objet JSON et l'initialisation du filtre Bloom (et éventuellement le WebWorker) nécessitent plusieurs secondes à 500.000 dossiers. Cet effort, cependant, est unique.

Comme déjà mentionné, chaque recherche a toujours courir sur l'ensemble de données complète, qui serait adaptée à la pratique, car il n'a pas de sens, par exemple, pour rechercher tous les champs de nom pour une date. Avec le traitement et la recherche appropriée dans les millions sont alors possibles.

Vagrant et Docker: un environnement de développement moderne

Probablement presque tous les développeurs connaît le dicton "cela fonctionne sur ma machine", Toute personne qui est à la recherche de la cause d'une application qui ne fonctionne pas, le désespoir rapidement aux différentes installations et versions. Alors pourquoi ne pas offrir un environnement de développement unifié en tant que machine virtuelle pour toute l'équipe?

Le plus gros problème des machines virtuelles est leur taille, ce qui est habituellement dans la gamme de giga-octets moins chiffres. Cela complique non seulement la portabilité de la machine virtuelle au sein de l'équipe, mais aussi leur développement à l'aide d'un système de contrôle de version.

Remède l'outil disponible Vagrant open source, les machines virtuelles peuvent générer automatiquement sur la base d'un fichier de script. Comme la machine virtuelle peut être reproduit ainsi à portée de main à tout moment, il suffit simplement de distribuer le fichier de script et versioning.

générer le Vagrantfile

En tant que cadre pour le fichier Vagrantfile le code suivant qui définit Ubuntu 4.14 comme base pour être généré machine virtuelle est utilisable:

VAGRANTFILE_API_VERSION = "2"

Vagrant.require_version ">= 1.6.5"

Vagrant.configure (VAGRANTFILE_API_VERSION) do | config |
config.vm.box = "chef / ubuntu-04.14"
config.vm.box_check_update = true
fin

Par défaut dirigé Vagrant dans chaque machine virtuelle générée dans le répertoire / errante qui est automatiquement synchronisé avec le répertoire de l'hôte contenant le fichier Vagrantfile. En outre, cependant, d'autres répertoires peuvent être divisés. Pour cela, un répertoire de l'hôte est de monter un répertoire de la machine virtuelle.

Ensembles à l'Vagrantfile dans un répertoire à partir duquel se trouve sur le même niveau que les autres projets qui répond à la ligne suivante à tous les projets dans le répertoire / home / errante / projets offrent. Par exemple, les projets au sein de la machine virtuelle pour traduire et exécuter, mais le travail sur l'hôte avec l'éditeur de choix:

config.vm.synced_folder "../". "/ Accueil / vagabondes / projets"

Par la suite, la machine virtuelle peut être créé et géré par l'exécution de l'instruction errante sur la ligne de commande. Ces frais, sinon fait, vers le bas, puis l'image d'Ubuntu 14.04 produit sur la base d'une nouvelle machine virtuelle comme vous le souhaitez:

Vagrant $ en

Pour que cela fonctionne, un logiciel de virtualisation comme VirtualBox ou VMware doit être installé à l'exception Vagrant. Vous trouverez des détails dans la documentation de Vagrant.

Mise en place SSH

Par défaut démarre la machine virtuelle Vagrant sans interface utilisateur graphique. L'accès est via SSH au lieu, avec les touches correspondantes sont automatiquement mis en place. Par conséquent, l'entrée de l'instruction est suffisante

ssh $ Vagrant

sur la ligne de commande pour basculer sur la machine virtuelle. Cela peut ensuite être utilisé au besoin. Si elles ne sont plus nécessaires, vous pouvez utiliser l'instruction

arrêt $ Vagrant

arrêter et de les conserver pour une utilisation ultérieure ou

$ Vagrant détruire

supprimer complètement. Dans les deux cas, la machine virtuelle peut en entrant la commande

Vagrant $ en

Commencez à un moment ultérieur. Bien que l'accès SSH fonctionne facilement, mais utilise clé différente que celle du système hôte. Ce serait souhaitable d'accéder à partir de la machine virtuelle, par exemple sur GitHub. Une solution simple consiste à activer le transfert Agent SSH. Cela vous oblige à Vagrantfile la ligne

config.ssh.forward_agent = true

Ajouter. Après avoir détruit et recréant l'accès SSH machine virtuelle est désormais possible, par exemple sur GitHub aussi de la machine virtuelle.

ports vers l'avant

Conduit à des applications dans la machine virtuelle, l'espace occupé par les ports eux sont d'abord accessibles que dans la machine virtuelle. Pour y parvenir par l'hôte, vous devez activer la redirection des ports. Sert une autre ligne dans le fichier Vagrantfile qui doit cependant être spécifié individuellement pour chaque port:

config.vm.network "forwarded_port", Invité: 80, hôte: 80

Si le protocole utilisé est pas TCP, UDP mais, il faut aussi préciser:

config.vm.network "forwarded_port", Invité: 80, hôte: 80 Protocole: "udp"

La documentation de Vagrant décrit de nombreuses options de configuration du réseau, dans le cas normal, cependant, la mise en place est tout à fait suffisant réoriente.

installer des applications

Une machine virtuelle est seulement utile pour le développement si le nécessaire pour le développement d'applications installés. Cela se fait dans Vagrant par ce qu'on appelle Provisioner, dans le cas le plus simple un script shell. Vous pouvez également Vagrant soutient Provisionierungswerkzeuge comme chef et de marionnettes, mais cet effort est souvent nécessaire.

Pour effectuer l'installation d'applications à l'aide d'un script shell, tel doit être créé et enregistré dans Vagrantfile. Par défaut, le script est exécuté avec des privilèges d'administration, le cas échéant, cependant, rend le bouton d'arrêt en donnant le paramètre privilégié:

config.vm.provision "coquille", Chemin: "provision.sh", Privileged: false

Le fichier est provision.sh un script shell régulier. Au minimum, il faut définir le fuseau horaire correctement mise à jour de la base de données de package et dev libssl installer des paquets de base tels que l'accumulation essentielle et:

#! / Bin / bash

écho sudo "Europe / Berlin" | tee sudo / etc / fuseau horaire
sudo dpkg-reconfigure noninteractive de tzdata

sudo apt-get update -y
sudo apt-get install build-essential -y git boucle libssl-dev vous

En outre, bien entendu, les instructions peuvent être exécutées. GitHub est utilisé, les adresses IP entrant automatique de serveur GitHub dans le fichier ~ / .ssh / known_hosts sens. Qui fait la déclaration suivante:

ssh-keyscan github.com >> ~ / .ssh / known_hosts

Même le changement automatisé dans le répertoire ~ / projets après la connexion est un défaut sensible. Il suffit, / entrez la commande cd ~ .profile:

écho "cd ~ / projets" >> ~ / .profile

installer Docker

Cependant, il n'a pas de sens d'installer toutes les applications sur ce chemin. Dans le serveur particulier devrait facilement activer et désactiver ou permet de redémarrer. L'isolement de chaque serveur serait à portée de main, parce que leur configuration alors vous ne pouvez pas obtenir de la manière.

Exactement ce qui peut être mis en œuvre avec la mise à disposition aussi comme un outil open source Docker. En plus de nombreux conteneurs préfabriqués, vous pouvez emballer vos propres applications dans un contenant léger et portable.

juste besoin d'être installé dans la machine virtuelle Docker. Heureusement soutenu Vagrant déjà naturellement, déjà aussi peut être téléchargé ubuntu au cours des conteneurs de base fréquemment utilisés Provisionierens:

config.vm.provision "docker", Version: "1.2" faire | docker |
docker.pull_images "ubuntu"
fin

La réalisation d'un conteneur Docker et envoie cependant, un port forwarder une, doit être observé, que cela s'applique entre Dockers et la machine virtuelle. Si le port est également accessible à partir de l'hôte, un autre avant dans Vagrantfile à enregistrer.

haché fin

Enfin est logique d'affecter certaines ressources du système de la machine virtuelle, tels que le nombre de processeurs à utiliser ou la quantité de mémoire provisionné. Cela peut être réglée individuellement pour chaque solution de virtualisation dans Vagrant pourquoi un seul Vagrantfile peut bien contenir plusieurs de ces blocs de configuration:

config.vm.provider "VirtualBox" faire | vm |
vm.memory = 2048
vm.cpus = 2
fin

config.vm.provider "vmware_fusion" faire | vm |
vm.memory = 2048
vm.cpus = 2
fin

Node.js comme un exemple concret

Afin de travailler de façon productive avec la machine virtuelle, maintenant manquante est une pile de la technologie du béton. Ceci est en dehors de tout transfert de port, provision.sh installé exclusivement dans le fichier et configuré. En compagnie de l'auteur, le web natif, développé avec JavaScript et Node.js, est Node.js offre un exemple concret.

Il est conseillé de ne pas installer Node.js directement, mais d'utiliser un outil comme NVM. Ainsi, plusieurs versions de Node.js peuvent être installés en parallèle et facilement passer. L'installation du NVM se fait par le clonage d'un dépôt GitHub et l'exécution d'un script shell:

git clone https://github.com/creationix/nvm.git ~ / .nvm ↵
&& cd ~ / .nvm ↵
&& caisse git `git décrire --abbrev = 0 --tags`
écho "la source ~ / .nvm / nvm.sh" >> ~ / .profile
la source ~ / .profile

Ensuite, la version actuelle de 0,10 Node.js peut être installé avec l'aide de NVM:

NVM installer 12:10
NVM alias par défaut 12:10

Maintenant, les applications exécutables sont disponibles nœud et NPM de sorte que ne manque encore des outils à l'échelle mondiale installés pour le développement productif, cependant, peut être installé aussi facilement:

NPM installer -g browserify
NPM installer -g eslint
NPM installer -g grunt-cli
NPM installer la harpe -g
NPM installer -g serveur http
NPM installer -g moins
NPM installer -g mocha
NPM installer -g enlaidir-js

Si ces vues dans le fichier provision.sh celui qui répond suite à l'appel de la commande

Vagrant $ en

Pour créer une machine virtuelle qui contient tout ce dont vous avez besoin pour travailler avec Node.js. Ceux qui ne se soucient pas d'écrire les fichiers Vagrantfile et provision.sh lui-même les fichiers préfabriqués en même temps que la documentation associée dans le référentiel GitHub thenativeweb / errante-nœud.

conclusion

Vagrant et Docker sont d'excellents outils pour simplifier le développement de logiciels de façon spectaculaire. l'automatisation réalisable et reproductibilité économiser un temps précieux et en particulier aider à se concentrer sur l'essentiel.

Cependant, l'utilisation de Mac OS X ou Linux comme système d'exploitation sur l'hôte est sage: Bien que fonctionne Vagrant sous Windows, mais beaucoup se sent après un support de deuxième classe.

tl; dr: Vagrant permet aux automatisées et reproductibles créer des machines virtuelles, Docker, cependant, les applications d'emballage dans des récipients isolés. La combinaison des deux constitue la base d'un environnement de développement moderne.

Assistant goutte comme serveur d’applications REST

contenu
  1. Assistant goutte comme serveur d'applications REST
  2. Bonjour tout le monde
  3. Surveillance, configuration
  4. Gestion et REST
  5. Interface Web, surveillance
  6. Performance, Conclusion
  7. lire sur un côté
Assistant goutte comme serveur d'applications REST

La goutte Java Framework Assistant pour faire face beaucoup mieux avec les exigences du monde en ligne par rapport aux serveurs d'applications établis de longue date. Il tire sur une foule de projets open source.

Les systèmes et les cadres qui utilisent les développeurs dans leur travail, sont fortement influencées par leur environnement de travail. Common Server Application comme wildfly (anciennement JBoss), Tomcat ou GlassFish ont été conçus comme un conteneur pour les grandes applications Java EE à base de composants à l'origine. Le conteneur a pour mission de fournir ainsi toute l'infrastructure exploitée dans sa demande: à partir de connexions de base de données et transactions distribuées jusqu'à la mise au point des systèmes de cluster haute disponibilité.

Les systèmes logiciels doivent être composés par la vigueur dans les années 90 de la vue du siècle dernier, des composants séparément développables, dans lequel a été demandé et haute modularisé réutilisabilité. Matériel était des options coûteuses et de virtualisation pour de nombreux systèmes ne sont pas aussi disponibles aujourd'hui, ce qui est pourquoi il est apparu nécessaire de pouvoir exécuter plusieurs applications dans une instance de serveur d'applications, bien que souvent une seule application par serveur a été exploité. Soit pour éviter les applications en ressources de chacun en litige, ou à cause de la simplicité, toutes les fonctions ont été combinées en une seule application. Développement de l'application et le fonctionnement du serveur d'applications, y compris l'application ont été considérées comme des tâches universellement comme distinctes effectuées par les différents groupes. Alors la séparation généralisée des activités en forme de l'architecture du serveur d'applications et se reflète également dans la spécification Java EE avec sept rôles différents vers le bas (Java Platform, Enterprise Edition [Java EE] Spécification, v7, rôles EE.2.11 plate-forme). Une telle division pourrait se permettre en particulier les grandes entreprises.

Avec le changement de l'environnement informatique grâce à la demande Internet sur le serveur d'applications est venu, pour lequel elles étaient initialement destinées, comme avant tout à la livraison rapide des pages Web ou avec un degré croissant était sur le point de répondre à des demandes REST dans de nombreuses applications. Exigences telles que la sécurité des transactions maximale ou plusieurs normes jouent un rôle mineur dans cet environnement. Le reste fait l'émergence du mouvement DevOps, qui mettra fin à la séparation du développement et de l'exploitation et les tentatives pour résoudre la séparation du développement et de l'application serveur de gestion.

En bref, le serveur d'applications classiques, les exigences du monde en ligne aussi bien, mais pas répondre au mieux parce qu'ils ont été conçus pour d'autres besoins. En outre, beaucoup de ses caractéristiques telles que l'évolutivité et le regroupement peut également atteindre architecturalement différents aujourd'hui.

Pour cette raison, de nombreux nouveaux, le serveur d'applications léger comme Netty, Play, Akka, Grizzly, bateau printemps ou vert.x sont apparus ces dernières années, que ce soit un modèle plus simple de développement ou de secours en termes de configuration, le déploiement et le fonctionnement ainsi que l'objectif principal offrir de la communication via HTTP. L'auteur a délibérément le terme Application Server, choisi à ce stade parce que tous ces projets sont caractérisés en ce qu'ils fournissent l'infrastructure pour le développement et l'exploitation des applications et les développeurs peuvent se concentrer principalement sur la logique applicative.

Assistant baisse se produit

L'une de ces alternatives serveur d'applications est spécialement conçu pour les services Web RESTful Assistant goutte. Il a ses origines dans le réseau social américain Yammer. De même pour la bibliothèque de paramètres bien connus qui peuvent collecter des mesures spécifiques à l'application.

Assistant goutte se caractérise par un mélange de pragmatisme et de haute performance. Ainsi, il permet un développement efficace et apporte des solutions aux problèmes les plus importants dans le cycle de vie d'une application, à partir du développement et de déploiement pour configurer et à utiliser. Au lieu de développer tous les composants eux-mêmes, les développeurs Assistant drop construire régulièrement sur des projets open source éprouvées, qui bénéficient d'une marge élevée. Comme moteur de servlets Jetty est utilisé, les services Web RESTful sont mis en œuvre en utilisant l'implémentation de référence JAX-RS Jersey et Jackson pour la sérialisation. Google goyave est un complément général JDK. Cette liste pourrait se poursuivre pour le calcul de la date et l'heure et continuer sur Liquibase pour la gestion de base de données avec Joda-Time.

Une telle utilisation de composants communs réduit à la fois le temps de développement et le temps de formation, des réponses à de nombreuses questions standard sur Internet sont faciles à trouver. En dispensant de vastes développements internes, l'équipe peut se concentrer derrière chute Assistant sur l'intégration optimale de tous les composants.

Le déploiement d'une application Assistant goutte prend la forme d'un Jars Fat qui est produit lors de la construction de toutes les bibliothèques requises. Cette disposition essentiellement en copiant les Jars Fat sur le serveur cible est possible. Au démarrage, le menu déroulant Main-Class Wizard lance une instance Jetty intégrée, de sorte que l'application est prête à l'emploi.

Une application de l'assistant de goutte peut être configuré avec un fichier YAML qui mappe Jackson au début d'une classe POJO, qui peut encore être validée par Bean Validation. Si cela échoue, l'application Assistant de goutte ne démarre pas. Pour surveiller l'application, l'utilisateur peut intégrer la bibliothèque Metrics mentionnée, avec laquelle il est possible pour lui de réaliser des contrôles de santé et diverses mesures de performance.

Versioning: GitHub bureau vient rechapé basé sur Electron

GitHub bureau vient rechapés basé sur Electron

La nouvelle application remplace les deux versions distinctes pour Windows et Mac OS et fournit une interface utilisateur unifiée. Dans le même GitHub a publié un package pour l'Atom éditeur pour l'intégration de Git et GitHub.

GitHub a complètement réécrit le logiciel client pour le Webversionsverwaltung. Le logiciel unifié remplace les pays développés précédemment séparément pour les versions Windows et Mac OS. GitHub Desktop est actuellement disponible en version bêta et est basée sur le également fourni par GitHub framework open source électronique, qui vient avec une combinaison de Node.js pour le serveur et le chrome pour la partie client. En tant que langue, les responsables ont décidé de Tapuscrit.

Les anciennes versions des clients de bureau GitHub avaient deux bases de code complètement séparés pour Windows et Mac OS, ce qui porte deux équipes différentes ont dû mettre en œuvre les mêmes caractéristiques séparément. Sur la base de code uniforme, ils espèrent maintenant obtenir un moyen facile pour les nouvelles fonctionnalités. Un obstacle est la surface qui est aussi intuitif à utiliser, en dépit des techniques de tissage sur chaque plate-forme. Selon un article de blog pour changer la mise en œuvre du menu a été un défi dans Windows.

l'intégration git pour le nucléaire

En même temps, les opérateurs de Webversionsverwaltung ont annoncé que la future version du également fourni par GitHub éditeur de code source d'intégration nucléaire pour Git et GitHub est inclus, en engageant au développement de l'outil directement sous tout autre code, déplacer Branches ou résoudre les conflits de fusion peuvent , À l'heure actuelle, il est 1/18 nucléaire, qui offre l'intégration dans la phase bêta. Cependant, le paquet d'intégration Git est également disponible séparément.

Propre volet permet d'accéder aux différentes fonctions Git directement de sortir du nucléaire. Propre volet permet d'accéder aux différentes fonctions Git directement de sortir du nucléaire.(Photo: GitHub)

Le nouveau client Destkop est actuellement disponible en version bêta pour Windows et Mac OS. Le code source est disponible en tant que dépôt GitHub sous la licence MIT. Le billet de blog pour la conversion suggère une prochaine distribution Linux entre les lignes. L'ancien client est toujours disponible au moins pendant la phase bêta.(RME)

Une interface utilisateur pour Docker

peut être, en principe, toutes les tâches qui se posent dans le cadre de Docker, faire sur son outil de ligne de commande. Pour un aperçu rapide, une interface utilisateur graphique serait cependant parfois pratique. Portainer remède.

Ceux qui travaillent régulièrement avec Docker, connaît les commandes en cours par cœur pour commencer et à la fin du conteneur ou pour la liste des conteneurs et des images, par exemple. Bien que les commandes docker ps et la fonction Co. fiable, en regardant de temps en temps à un tableau de bord encore serait commode qui résume toutes les informations importantes en un coup d'oeil.

C'est exactement ce que le projet open-source Portainer, qui fournit une interface de gestion graphique pour Docker disponible. Cela fonctionne non seulement pour un seul hôte, mais même pour les clusters qui fonctionnent sur Docker Swarm.

commencer Portainer

Portainer se tient comme une image Docker disponible comme d'habitude pour le logiciel dans le cadre de Docker. Ceci élimine l'installation complexe mai. Pour exécuter Portainer, la commande suivante suffit:

exécuter $ Docker \
-d \
-p 9000: 9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
Portainer / Portainer

L'accès à Docker permet Portainer par l'intérieur gereichten comme chemin de volume /var/run/docker.sock. Si vous voulez utiliser Portainer en permanence, il est conseillé d'étiqueter en outre le récipient et la définition de la politique de redémarrage comme toujours.

est pratique que les travaux sur la route, non seulement sur Linux directement, mais aussi lorsqu'une virtualisation VMware a la est utilisée, par exemple, en liaison avec la machine Docker.

Configuration de l'accès à distance

Sinon, on peut accéder avec Portainer sur un hôte distant. Ensuite omis l'indication du volume au lieu de l'hôte doit être passée en paramètre:

exécuter $ Docker \
-d \
-p 9000: 9000 \
Portainer / Portainer \
-H tcp: //: 2375

Docker également basé sur Windows est pris en charge. Pour cela, l'image alt est simplement Portainer / Portainer: fenêtres à utiliser. Complétant l'un des appels présentés par le paramètre --swarm et sont au lieu de Docker accueille à l'adresse d'un cluster peut également gérer cette Portainer.

La documentation de Portainer explique également comment accéder via TLS est configuré et comment Portainer peut être adapté à vos besoins, par exemple avec un logo personnalisé.

tl; dr: Portainer est une interface graphique pour Docker, avec laquelle on peut obtenir un aperçu rapide de l'état d'un hôte ou un cluster.

mettre en œuvre les bibliothèques elles-mêmes – Arduino / IdO supplémentaire

Dans cette édition spéciale du blog est sur le sujet des bibliothèques Arduino. Les lecteurs apprennent à créer leurs propres bibliothèques. Avec quelques connaissances de base de C ++ Pas de problème.

Dans presque tous les effets de la série IdO / Arduino, nous avons utilisé dans les projets présentés bibliothèques. Bibliothèques pour les conducteurs automobiles, de communiquer ou de capteurs d'accès permettent aux développeurs de se concentrer sur l'essentiel. Ils se cachent la plupart des détails derrière une façade API générique.

nous nous avons fait peu de réflexion sur les bibliothèques elles-mêmes ou par leur conception. Parfois, il serait utile de fournir une ou l'autre bibliothèque elle-même. Ce n'est pas la sorcellerie ou la magie noire. Le document illustrera comment peut être mis en place leurs propres bibliothèques pour l'Arduino.

En tant que condition sine qua non, au moins des connaissances de base de C ++ sont en demande, d'autant plus que les bibliothèques sont basées sur C et C ++.

exemple

À titre d'exemple, je voudrais mettre en œuvre un cube électronique qui se compose de trois LED. Le nombre obtenu à partir de {1, 2, 3, 4, 5, 6} désigne la matrice comme un nombre binaire à trois chiffres, qui est aussi un élément de l'ensemble {001, 010, 011, 100, 101, 110}.

Une bibliothèque n'a de sens que si elle offre des fonctions souvent réutilisables. Comme un cube peut être utilisé comme base pour les jeux, il semble vaut la peine d'offrir sa mise en œuvre en tant que bibliothèque.

Les cubes électroniques avec 3 LEDs Les cubes électroniques avec 3 LEDs

La classe dés dans la liste des ultérieure représente les dés. Les trois paramètres du constructeur correspondant aux broches de connexion numériques des LEDs. LED4 est la 22 position de la valeur binaire, LED2 pour la position 21 et LED1 à la position 20.

L'accord de classe dans le fichier en-tête Dice.h selon un C ++ - langage intégré dans une directive #ifndef pour éviter plusieurs inclure ce fichier.

Procédé rouleau commun () représente les matrices réelles. La méthode privée contrôlée (int conduit, bool e) sur les paramètres spécifiés dans la première LED en fonction de la valeur du second paramètre activé ou désactivé. Dans ce procédé rouleau () accède uniquement. Voici le code complet:

#ifndef Dice_h
#define Dice_h

// classe simple a définit un dé binaire en utilisant 3 bits
// avec chacun des bits représentant un chiffre des nombres binaires
// avec une valeur décimale de 1..6
classe dés {
public:
Jeu de dés (int LED4 LED2 int, int LED1); // initialisé avec broches
rouleau vide (); // lancer les dés
privé:
int _led4; // LED représentant le bit 2
int _led2; // LED représentant un bit
int _led1; // LED représentant le bit 0
vide contrôlé (int conduit, bool on); // procédé interne à son tour conduit on / off
};
#endif

Le fichier contient Dice.cpp la mise en œuvre de la classe ci-dessus. Dans le constructeur de la classe, les broches de connexion des diodes électroluminescentes (_led4, _led2, _led1) ont noté. Les broches sont déclarés sur pinMode () et les broches de sortie. Le procédé randomSeed () est utilisée pour initialiser le générateur aléatoire. Les moyens de lecture analogique (A0) se traduit par une valeur de départ initiale.

Dans la mise en œuvre de la méthode de rouleau (), nous laissons le générateur de nombres aléatoires en appelant au hasard () produire un numéro 1 à 6 le procédé rouleau () calcule les emplacements individuels du nombre binaire correspondant par des opérations arithmétiques simples et commute en conséquence, les diodes respectives.

Pour des fins de débogage, nous pouvons définir le début du fichier .cpp DEBUG. Il en résulte des accords

#ifdef DEBUG
...
#endif

une sortie supplémentaire par l'intermédiaire du moniteur de série.

#include
#include

#define DEBUG
Dice Dice :: (int DEL4, int LED2, int LED1) {
_led4 = LED4; // LED a darstellt bitMS
_led2 = LED2; // LED a darstellt bit moyen
_led1 = LED1; // LED a darstellt LSBit
pinMode (_led4, OUTPUT); // toutes les broches sont des broches de sortie
pinMode (_led2, OUTPUT);
pinMode (_led1, OUTPUT);
randomSeed (lecture analogique (A0)); // valeur aléatoire de A0 analogique pour
// semence initiale
}

vide dés :: rouleau () {
int = résultat aléatoire (1,7); // obtenir un nombre aléatoire de 1..6

#ifdef DEBUG
Serial.print ("La valeur dé = ");
Serial.println (résultat);
#endif

Contrôlées (_led4, (1 == entraînent / 4)); // arithmétique simple
#ifdef DEBUG
Serial.print ("LED4 = ");
Serial.println (1 == résultent / 4);
#endif

Résultat = résultat% 4;
Contrôlées (_led2, (1 == entraînent / 2));

#ifdef DEBUG
Serial.print ("LED2 = ");
Serial.println (1 == résultent / 2);
#endif

Résultat = résultat% 2;
Contrôlées (_led1, 1 == résultat);

#ifdef DEBUG
Serial.print ("LED 1 = ");
Serial.println (1 == résultat);
#endif
}

vide Dice :: contrôlée (int led, bool sur) {
si un (e)
écriture numérique (led, HIGH);
d'autre
écriture numérique (led, LOW);
}

Exemple d'une esquisse Arduino

Un simple exemple de programme Arduino qui utilise cette bibliothèque pourrait ressembler à ceci:

#include "Dice.h"

// dés avec des LED sur les repères numériques 9, 10, 11
Dés myDice (9,10,11);

void setup () {
Serial.begin (9600);
}

void loop () {
myDice.roll (); // lancer les dés
retard (2000);
}

Tout d'abord, le fichier d'en-tête de la bibliothèque doit être inclus. accord unique est une instance de matrices de DEL à des broches de connexion numérique 9, 10 et 11. Dans la boucle (boucle) toutes les deux secondes est roulé: myDice.roll ().

Structure des répertoires pour les bibliothèques

Tous les exemples doivent être situés par convention dans un sous-répertoire de la bibliothèque appelée ./examples. tourner chaque exemple xyz.ino situé dans un sous-répertoire du même nom: ./xyz. Le croquis que j'ai donné le nom DiceTest.ino pourquoi il doit apparaître dans le sous-répertoire ./examples/DiceTest.

La mise en œuvre des fichiers de bibliothèque peut être situé ou dans le répertoire du sous-répertoire de la bibliothèque.

métadonnées

En plus des fichiers de mise en œuvre existent des fichiers avec des métadonnées qui doivent être dans le répertoire racine de la bibliothèque. Dans l'ensemble, recherchez l'exemple la structure des répertoires comme suit:

Le répertoire de la bibliothèque d'échantillons sous Mac OS X Le répertoire de la bibliothèque d'échantillons sous Mac OS X

Le fichier contient keywords.txt une liste de mots-clés de la bibliothèque pour rendre la couleur marquée Syntax Editor. Les types de données d'attributs pour les programmeurs avec KEYWORD1, méthodes KEYWORD2:

# Mots-clés pour les types de données:
Dice KEYWORD1
# Mots-clés pour les méthodes: KEYWORD2
rouleau KEYWORD2

Le fichier library.json décrit la bibliothèque au moyen d'une structure de données JSON:

{
"nom": "DiceLibrary".
"cadres": "Arduino".
"mots-clés": "dés, LED".
"description": "Mettre en œuvre un dé binaire".
"auteurs":
[
{
"nom": "Michael.Stal".
"émail": "[email protected]".
"url": "http://www.stal.de".
"mainteneur": true
},
{
"nom": "Hans Hase"
},
{
"nom": "Donald Duck".
"émail": "[email protected]"
}
]
"dépôt":
{
"qualité": "git".
"url": "https://github.com/ms1963/DiceLibArduino"
}
}

Il y a aussi library.properties le fichier qui contient des informations sur la bibliothèque, comme sa version ou les plates-formes prises en charge Arduino:

name = DiceLibrary
version = 1.0.0
auteur = Michael Stal
mainteneur = Michael Stal
phrase = Bibliothèque pour utiliser trois LEDs comme un dé binaires.
paragraphe =
catégorie = Capteur
url = www.stal.de
architectures = *

Dans le fichier README.md écrire une valeur d'information connaître au sujet de la bibliothèque, comme un aperçu de leur fonctionnalité et leur but d'utilisation:

# DiceLibArduino
Juste un exemple de ce qu'il faut pour fournir à la bibliothèque Arduino.
Ce ne vise pas à être une mise en œuvre sérieuse.

Dans le fichier description de licence de la licence open-source, sous les soins dont la bibliothèque devrait être à venir:

La licence MIT (MIT)

Copyright (c) 2016 Michael Stal

L'autorisation est accordée gratuitement, à toute personne
L'obtention d'une copie de ce logiciel et la documentation associée
fichiers (le "logiciel"), Pour traiter sans restriction dans le logiciel,
Y compris, sans s'y limiter, les droits d'utiliser, copier, modifier, fusionner,
publier, distribuer, et / ou vendre des copies du logiciel,
et de permettre aux personnes auxquelles le logiciel est fourni de le faire,
sous réserve des conditions suivantes:

L'avis de copyright et le présent avis d'autorisation doivent être
inclus dans toutes les copies ou parties substantielles du Logiciel.

LE LOGICIEL EST FOURNI "EN L'ETAT", SANS GARANTIE D'AUCUNE SORTE,
EXPLICITE OU IMPLICITE, Y COMPRIS NOTAMMENT LES GARANTIES DE
DE VALEUR MARCHANDE, D'ADEQUATION A UN USAGE PARTICULIER ET ABSENCE DE CONTREFAÇON.
EN AUCUN CAS LES AUTEURS OU LES DETENTEURS DE DROITS D'AUTEUR POUR responsable
TOUTE DEMANDE, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION
CONTRAT, UN TORT OU AUTRE, DECOULANT DE, OU DANS LE CADRE
AVEC LE LOGICIEL OU L'UTILISATION OU AUTRE DANS LE LOGICIEL.

Dépôt sur GitHub

Étant donné que toutes les bibliothèques Arduino sont généralement GitHub, il est logique de créer un compte GitHub séparé, et chaque bibliothèque comme un dépôt public (ou privé) de fournir. Le résultat ressemble à des lunettes de l'utilisateur par exemple comme suit:

mettre en œuvre les bibliothèques elles-mêmes - Special Edition

Développé dans cette bibliothèque d'articles, voir GitHub: https://github.com/ms1963/DiceLibArduino.

Si vous souhaitez utiliser une bibliothèque dans vos propres projets, obtenir le fichier .zip de la page GitHub et les importer dans l'IDE Arduino en choisissant Sketch | Inclure Bibliothèque | Ajouter .ZIP Bibliothèque ... Vous trouverez ensuite l'exemple de projet sous Fichier | Exemples | DiceLibrary l'exemple présenté croquis DiceTest.

conclusion

Dans ce mini-résultat, il est venu à construire vos propres bibliothèques Arduino. Seulement grâce au dévouement de nombreuses personnes un large éventail de bibliothèques disponibles existent pour les développeurs Arduino en tant qu'objets open source qui rendent la vie dans le confortable écosystème Arduino. Si vous avez peur du contact avec C ++, essayez encore une fois à leurs propres bibliothèques. La communauté vous remercie.

Après cette brève incursion dans le monde des bibliothèques que j'utilise la série IdO / Arduino continue comme d'habitude.

L'histoire jusqu'à présent:

  • Plus petit, plus profond, plus court ... le développement d'une station météorologique
  • RESTful avec CoAP
  • Communication via MQTT
  • Pas à pas
  • Applications avec servo-moteurs
  • Bonne motorisé avec des moteurs à courant continu
  • Arduino pour les chauves-souris
  • La détection de mouvement par rayonnement infrarouge
  • Connexion d'écrans LCD sur le bus IIC
  • Écoutez avec capteurs
  • JavaScript pour Arduino Que la lumière soit
  • Connexion de nombreuses LED sur quelques sorties
  • Do-it-yourself projet: iXduino - Arduino sur une planche à pain
  • cours intensif "Electronique pour les applications IdO" (Partie 3 de 3)
  • cours intensif "Electronique pour les applications IdO" (Partie 2 de 3)
  • cours intensif "Electronique pour les applications IdO" (Partie 1 de 3)

Introduction à la programmation de l’actionneur avec Akka

contenu
  1. Introduction à la programmation de l'actionneur avec Akka
  2. Bonjour, monde
  3. la gestion des erreurs
  4. conclusion
  5. lire sur un côté
Introduction à la programmation de l'actionneur avec Akka

Akka est un utilisable avec la mise en œuvre Scala et Java du modèle acteur pour la machine virtuelle Java (JVM). Il est le plus souvent décrit de la salle de contrôle d'accès concurrentiel. Cela a certainement sa vérité, après tout, il concerne des actionneurs à une forme de base sur la simultanéité des messages-concurrency passage. Au centre de l'article, cependant, est une autre propriété tout aussi important du modèle de l'acteur, à savoir la robustesse, à savoir la capacité d'un système à traiter avec succès avec des erreurs.

Vous pouvez tordre et tourner, les erreurs ne peuvent pas être évités. D'une part, aucun programme est sans erreur, pas testé à tous les tours. Il est donc tenu de se produire tôt ou tard que les exceptions pour les développeurs "sauter", D'autre part, la tendance apporte aux systèmes distribués encore d'autres sources d'erreur avec elle: Qu'advient-il si la panne de courant? Ou l'équipe de nettoyage sur le câble trébuche réseau?

Pour la robustesse d'un système, il est d'abord important qu'il est constitué de composants que les erreurs peuvent affiner localement. Cela empêche un composant défectueux inévitablement l'ensemble du système "tirant vers le bas"Même si cela signifie que le niveau de service est si réduite jusqu'à ce que le composant défectueux peut être utilisé à nouveau ou vous pouvez recourir à une alternative.

couplage lâche par des messages asynchrones

Il devrait être rapidement clair que les composants d'un système robuste doivent être couplés de manière lâche. Enfin, toute connaissance est sur l'état interne d'un autre composant avec une de ces erreurs non valides, de sorte que la composante connexe est sujette à des erreurs des autres. L'orientation de l'objet (original) répond à ce défi par des objets cacher leur état et peut communiquer en échangeant des messages entre eux exclusivement.

Cet échange de messages est mis en œuvre dans les langages de programmation orientés objet comme Scala ou Java sous la forme d'appels de méthode synchrones. Synchrone signifie que le flux de programme de l'appelant est suspendu jusqu'à ce que la méthode appelée retourne ou déclenche une exception. Il est essentiel que ce dernier est responsable de l'appelant. Cela peut en effet arriver un peu commun, mais vous pouvez assimiler cette forme d'erreur de manipulation vivement avec le fait que chaque conducteur doit être en mesure de réparer toute panne lui-même. Cela conduit finalement encore une fois à un fort couplage entre les objets.

Pour réaliser un couplage lâche vraiment, donc la communication asynchrone entre les composants nécessaires. Cela signifie rien d'autre que ce que les messages dans le style de feu et oublier à expédier, le déroulement du programme de l'appelant est donc pas interrompue attendre une réponse. Tel est peut-être plus tard retourné par l'appelé comme un autre message. Ce principe est déjà en "à grande échelle" connu, comme HTTP ou JMS (Java Message Service), mais il peut aussi être "Monde de petits objets" transmis et fait exactement le modèle de l'acteur. des actionneurs qui y sont sont des modules de programme fondamentales qui peuvent communiquer les uns avec les autres seulement par l'intermédiaire de messages asynchrones.

Versioning: prend Gitorious gitlab ce

La société derrière le Repository Manager prend en charge l'alternative GitHub pour promouvoir le développement de gitlab ce.

Gitlab ce a annoncé l'acquisition de son concurrent Gitorious. Les utilisateurs du Gitorious.org libre ont maintenant jusqu'à la fin de mai 2015 le temps de migrer leurs dépôts à gitlab ce. Cependant, les utilisateurs sur site, doivent signaler à l'équipe de vente de la société.

Des Etats à assumer gitlab ce qu'ils voulaient promouvoir l'étape pour développer le projet, aussi les utilisateurs bénéficieraient gitorious d'une meilleure expérience utilisateur. En Gitorious ils avaient d'autre part voir passer à gitlab ce dans les clients des années précédentes. Par la baisse des recettes de l'exploitation continue l'offre gratuite à long terme, aurait été insoutenable.

Gitlab ce permet de gérer les dépôts Git dans le navigateur et fournit également wiki et des fonctionnalités de suivi des problèmes. Contrairement à GitHub cependant, il est possible de stocker le code sur vos propres serveurs.(Dec)

Do-it-yourself projet: iXduino – Arduino sur une planche à pain

Le premier projet est sur le point, un système DiY privé Arduino ("iXduino") Monter sur une planche à pain. En raison du prix, il ne vaut pas tout - compatible cartes Arduino existent déjà pour quelques euros sur eBay ou Amazon -, mais il est amusant et donne des connaissances de plus importantes.

La construction d'un contre-propre Arduino est pas difficile, car le microcontrôleur ATmega328 SoC (système sur puce) apporte déjà des caractéristiques les plus importantes telles que le travail et la mémoire flash, ainsi que les entrées et les sorties. Pour construire un cartes Arduino manquant seulement l'alimentation, entrée USB, horloge, planche / planche à pain, quelques LED, résistances, condensateurs, un bouton de remise à zéro, et des fils de connexion de cours.

Ainsi, sont nécessaires diverses composantes, dont le coût se déplacent dans la gamme de 10 à 15 euros. Il y a sur eBay et Amazon a terminé kits de 4 à 10 euros (sans Breadboard sans fil et sans FTDI carte USB - que vous devez acheter séparément, par exemple ici: http://tinyurl.com/arduinobausatz, ou à l'adresse http : //tinyurl.com/arduinobausatz2). La plupart des kits d'alimentation dans un processeur Arduino Atmega déjà programmé, de sorte que vous pouvez enregistrer la programmation future de la puce.

Liste des pièces (Bill of Material)

Arduino sur une planche à painArduino sur une planche à pain(Photo: arduino.cc)

Le circuit est vu de la figure suivante, dérivée de notesandvolts.com.

notesandvolts.comCircuit pour leur propre Uno(Photo: notesandvolts.com)

Instructions de montage

Sur arduino.cc un mode de construction détaillés trouvés. Néanmoins, je voudrais expliquer les étapes en bref:

Notre circuit en hautNotre circuit en haut

Après avoir vérifié à nouveau le circuit en détail, connectez le port USB de votre ordinateur à l'aide de l'entrée USB de FTDI. Ou encore mettre à la tension d'une batterie. Maintenant, la LED rouge doit allumer.

Vous pouvez voir l'image de la configuration du circuit sans alimentation. Cela devrait être fait le coin supérieur droit au régulateur de tension, en particulier le pilier gauche et du centre.

la programmation du firmware

Malheureusement, contient une "nu" ATmega328 ni le firmware nécessaire encore un chargeur de démarrage approprié. On pourrait acheter un programmeur, ou tirer les ATmega328 par une autre carte Arduino et dans leur propre circuit.

Si vous nommez déjà Arduino Uno leur propre carte, la Uno peut être utilisé en tant que programmeur.

Arduino en tant que programmeurArduino en tant que programmeur

brûler le bootloader

Vous pouvez également programmer en plus même le bootloader dans le nouveau conseil d'administration. Ceci est seulement une fois nécessaire et souhaitable.

  • Dans le menu Outils, vous devez, en plus du type de votre planches originales (Uno) MEGA ... également définir le port série.
  • En tant que programmeur, menu de sélection "Arduino comme fournisseur d'accès Internet",
  • sélectionner "Gravez bootloader" Dans le menu Outils.
  • Maintenant télécharger sur Exemples / Basics l'exemple Blink.
  • Maintenez la touche Maj enfoncée tout dans l'IDE, appuyez sur le bouton Exécuter (une flèche jaune encadrée).
  • Cela rend le programme ne se charge pas sur votre carte d'origine, mais sur votre carte DiY.
  • Si tout va bien, devrait clignoter en secondes, la LED verte.

Sur la route du succès

Félicitations, vous avez construit votre propre Arduino et testé avec succès. Vous pouvez bien étendre bien sûr le conseil aux cavaliers qui ont la même disposition physique de son comme une carte Arduino Uno. Cette même Shields pourrait fonctionner.

Il est conseillé d'étudier un peu le circuit de se familiariser avec la façon dont votre self-made cartes Arduino. Et bien sûr, d'expérimenter.

Dans les prochains épisodes, nous traiterons des projets pertinents.

Oracle fournit Java.net et le projet Kenai, un

Kenai

Oracle tire le cordon de déchirure et rend l'année prochaine pour faire fonctionner la collaboration maintenant sans importance et la plate-forme d'hébergement de projets Kenai. Cela a été commencé à Sun-Times avec de grands objectifs.

Oracle a décidé de fermer sa plate-forme d'hébergement Kenai. le site communautaire Java.net est associée à elle fermée, qui utilise la collaboration et la plate-forme d'hébergement de projets comme l'infrastructure. Java.net avait sa maison sur Kenai depuis 2011. L'adresse Web lui-même Dérives continue maintenant sur un site Web d'Oracle. Pour les développeurs qui utilisent le Kenai, ce qui signifie dans la pratique qu'ils doivent avoir migré leurs projets jusqu'au 28 Avril, 2017 - Le but d'Oracle en annonçant plusieurs indices - et la plate-forme d'hébergement est retiré du réseau.

Déjà en 2010, l'avenir du projet Kenai avait une fois été peu clair. La collaboration et fondée en 2008, projet plateforme d'hébergement devrait être utilisé en interne d'abord que par l'ancien nouveau gouverneur Java Oracle à l'époque, mais était alors continue à fonctionner comme une plate-forme ouverte sur.

Besoin développeurs Java Kenai?

Pendant ce temps, la situation a fondamentalement changé. D'autres plates-formes d'hébergement, en particulier GitHub, dominent la scène, ce qui, par exemple, signifie que même Google avait fermé plus tôt cette année sa propre offre. Le projet Kenai exploité négligé ne peut rivaliser avec la établie de longue date ne GitHub, gitlab ce, BitBucket ou SourceForge, ce qui explique pourquoi de nombreux développeurs ont tourné le dos ressources Oracle.

Sans surprise a trouvé le filet voix une fois de plus qui croient en aucun avenir Java sous l'égide d'Oracle. Mais bien qu'il n'y ait aucune justification pour le retrait par Oracle, plus l'entretien d'une alternative d'hébergement insignifiante en soi ne suffit pas important, même si Oracle aurait certainement assez d'argent pour continuer à fonctionner. Mark Reinhold, ingénieur Oracle responsable du développement Java, a assuré sur Twitter que la fermeture annoncée aujourd'hui n'a pas affecté le développement de OpenJDK.(ANE)

Ember.js 1.1 en action

contenu
  1. Ember.js 1.1 en action
  2. Routage et composants
  3. des applications de performance et conclusion
  4. lire sur un côté
Ember.js 1.1 en action

Selon le site du projet ember.js est le framework JavaScript parfait pour les applications web ambitieux. Ambitieux mais aussi chaque programmeur devrait être le nouveau départ avec Ember. Contrairement à angularjs le seuil d'entrée est relativement élevé.

Comme avec la plupart des problèmes informatiques frameworks JavaScript et applications web certains modes sont soumis. De nouveaux cadres pour le développement d'applications web tirer vers le haut comme des champignons du sol. Cependant, une telle application web est autre chose qu'un statique ou rendu sur la page HTML du serveur. En tant que programmeur, vous devez toujours vous demander ce que la meilleure solution est vraiment pour votre propre application. ne doivent pas ember.js, angularjs et Backbone.js utiliser l'art pour l'art. Qui veut faire une application réelle avec des éléments dynamiques disponibles en ligne, un tel besoin de cadres. mais qui veut publier uniquement une page Web normale avec des informations sur leur propre entreprise est mieux avec HTML classique et la programmation d'éléments dynamiques avec PHP, Python ou Ruby en combinaison avec un framework comme Django et Ruby on Rails.

Ember est un "arrêté dans ses opinions" framework MVC (Model-View-Controller). l'ajout "arrêté dans ses opinions" en langage clair signifie: "Les choses se font de la façon dont nous imaginons ou non." Ceux qui travaillent sur le côté serveur avec le cadre mentionné, est de ember.js profiter. Qui peut faire avec des conventions strictes peu, vous devriez plutôt aller vers angularjs. Pour faciliter le choix quelque peu, les principaux facteurs de décision sont comparés dans le tableau ci-dessous.

Backbone.jsAngularJSember.js
flexibilité+- -- -
apprenabilité+-- -
moteur de routage-+++
Deux liaisons façon- -++++
Les relations de base de données d'image dans le modèle- -- -+
la productivité de la programmation-+++
Taille de la communauté des développeurs++++
vitesse+o+
Sécurité contre les fuites de mémoire-++++
automatiquement testable++++


(++ très bon, + bon, o encore OK, - mauvais, - - très mauvais)

Conseils pour commencer

Si vous voulez traiter ember.js, il est important de faire attention à ne lire des articles récents dans la recherche de tutoriels sur Internet. Seulement en 2013 a fait tellement un article Janvier en Novembre est souvent complètement inutile. Au sein de la communauté est débattue si Ember peut-être trop tôt "visible" est devenu et le fait - inutilement - dissuadé par erreur trop de nouveaux développeurs. Alors que l'équipe de base Ember ne clairement quelle version de Ember et Ember données Bibliothèque en version bêta et ce que de nombreux amateurs apprécient une version bêta mais rapidement "assez fort" un (ce qui est le cas) et sont donc bientôt faire face à des difficultés.

Un bon départ pour les débutants connaissant bien l'anglais, les guides de projet Ember. Sur emberwatch.com vous trouverez des conférences en cours et des tutoriels sur Ember. En Allemagne, il y a meetups aussi des développeurs Ember répertoriés sur la page communautaire.

L'administration d'utilisateur utilisé ci-dessous à titre d'exemple est constitué d'un seul fichier (index.html). Dans un grand projet ember.js serait toutefois sous-traiter les éléments individuels dans des fichiers séparés. Les bibliothèques de base suivantes sont ensuite nécessaires pour le projet:






jQuery peut utiliser dans la version 1.x ou 2.x, alors que ember.js trouve une utilisation dans la version 1.1. Il est, après une épuisante pour les développeurs de ember.js processus normal libération de 2013er, une version stable et haute performance qui vous fait oublier les 1.0 problèmes de démarrage. Ember-Data a actuellement (Novembre 2013) sont toujours impliqués en version bêta. Guidons est en outre utilisé pour écrire les modèles HTML. Soit dit en passant: Dans tous ces projets open source inventeur Ember Yehuda Katz travaille dans l'équipe de développement de base. La montée que les derniers Google Crypto Library md5.js est destiné dans l'exemple, pour créer une somme MD5 de l'adresse e-mail et afficher des photos de personnes par Gravatar.

Bien que Ember-Data est une bibliothèque indépendante, célébrer de nombreux développeurs que la véritable révolution des cadres Ember. Avec elle, peut être utilisé par une application Ember de toute interface RESTful via JSON. Celui qui garde les conventions décrites sur la page du projet sur le côté serveur, avec l'aide de données Ember Les données de l'application JavaScript de manière transparente sur le serveur et écrire. Faits saillants consistent dans les transactions, et rollbacks connues par ActiveRecord Les associations has_many et belongs_to. Il y avait déjà avant ember.js autres frameworks JavaScript, avec lesquels on peut programmer une bonne applications web, mais Ember-Data franchit une nouvelle.

Marques et Modèles

Le modèle de l'utilisateur peut être défini avec le code suivant et enregistrez par FixtureAdapter localement dans la RAM. Dans d'autres adaptateurs peuvent se connecter plus tard dans la LocalStorage de production ou d'un serveur RESTful.

App.ApplicationAdapter = DS.FixtureAdapter;
App.User = DS.Model.extend ({
Prénom: DS.attr ( 'chaîne'),
Nom: DS.attr ( 'chaîne'),
email: DS.attr ( 'string'),
Téléphone: DS.attr ( 'string'),
Nom complet: function () {
retourner this.get ( 'first name') + '' + this.get ( 'nom');
} .property ( 'prénom', 'nom'),
});

le nom complet est recalculé automatiquement calculée propriété à chaque fois que vous modifiez les attributs prenom lastName et mis à disposition. Pour le contenu HTML du site plus tard modèle est utilisé guidon. Tout d'abord, sans un ID défini est attribué automatiquement par Ember par convention l'application ID et est donc utilisé comme modèle principal. Au sein du modèle peut être défini, à quel point peut insérer du contenu sous-modèles via {{}} sortie.

Les données du printemps

contenu
  1. NoSQL: base de données clé-valeur Redis Vue d'ensemble
  2. Les données du printemps
  3. lire sur un côté

connexion recherchée

Les débuts d'une telle approche poursuit le projet de données Spring. Que dans le monde Java créé Spring Framework présente un modèle de programmation qui repose en partie sur l'injection de dépendance et AOP (programmation orientée aspect). Quiconque est familier avec les composants JDBC du cadre, peut bien imaginer que l'est d'être quelque chose comme projet de données du printemps pour les bases de données NoSQL. Les résumés des fonctions de l'API de bas niveau présentés ci-dessus est destiné à programmer des couches d'accès aux données avec l'utilisation du projet selon les idées de base du printemps.

Le projet de données Spring est actuellement divisé entre autres dans les sous-projets suivants dans lesquels vous pouvez voir la division mentionnée ci-dessus des bases de données NoSQL en quatre groupes:

Étant donné que le projet de données Le printemps est encore jeune, il n'y a que quelques implémentations pour bases de données sélectionnées. Redis compte ici - certainement en raison de la commune avec la maison de printemps sous le toit VMware - les premiers paquets disponibles dans le package clé-valeur.

conclusion

Redis est une base de données que ce principe "Keep it simple" met en œuvre de manière cohérente. Toute personne travaillant sur un projet, qui est un modèle de données simple, sont placés en même temps des exigences élevées sur la performance et l'évolutivité devraient regarder Redis de toute façon. Certes, un tel modèle de données simple a ses limites: les requêtes ad hoc, par exemple, difficile et / ou lent à mettre en œuvre, comme le sous-jacent modèle de stockage Redis-valeur de clé est conçue pour un accès via la clé. Le mémoire présenté des données de projet Spring est un exemple que vous ne faites pas sans techniques de programmation avancées lors de l'utilisation Redis. En particulier, l'intégration avec le printemps - en raison de l'intégration étroite des deux projets par la mère commune VMWare - promet un avenir intéressant pour la base de données Redis.

Rudolf Jansen
fonctionne en tant que développeur de logiciels et journaliste freelance à Aachen. Ses principaux intérêts sont dans les domaines de Java, C ++, XML et les bases de données.