classement de programmation: TIOBE semble Swift chute libre

classement de programmation: TIOBE semble Swift chute libre

Après Swift a pu atteindre son record en TIOBE rang au début de l'année, le langage de programmation est maintenant de plus en plus impopulaire.

La popularité du langage de programmation d'Apple Swift a fortement diminué, comme indiqué dans le numéro d'Octobre de l'indice des langues mise à jour mensuelle de TIOBE. Alors que Swift était capable de placer dans le top 10 plus tôt cette année, la langue a glissé maintenant classé 16e et est donc seulement un lieu avec son prédécesseur Objective-C.

TIOBE explique cette circonstance par le fait que les développeurs programmés jusqu'à récemment les applications Android dans les applications Java et iOS dans Swift / Objective-C, ce qui est d'autant encombrant, car ils devaient tenir deux bases de code différentes. Avec la popularité croissante de Xamarin, Apache Cordova et ionique il y a, cependant, des solutions de rechange qui permettent de développer mobile hybride. Cela pourrait bien expliquer la perte de popularité de Swift comme responsable des pertes de Java dans l'indice.

Le vainqueur de l'an dernier également sur le chemin vers le bas

Intéressant - et mentionné par TIOBE pas un mot - est aussi la descente du langage de programmation Go. Ce qui était encore couronnées 2016 TIOBE la langue de 2016 et est maintenant bien à une descente Swift. Une explication n'offre pas TIOBE.

Ces analyses sont donc toujours considérés comme, bien sûr, avec un œil critique: Comment TIOBE crée l'index et qui les moteurs de recherche, il sera aussi pris en compte, peut être attribuée à la documentation officielle. (BBO)

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.

Lean UX: Avec les méthodes de démarrage pour mieux produit

contenu
  1. Lean UX: Avec les méthodes de démarrage pour mieux produit
  2. état d'esprit
  3. les méthodes de traitement
  4. conclusion
  5. lire sur un côté

processus de développement Agile permettent de répondre avec souplesse à l'évolution des exigences fonctionnelles et de maîtriser ce puits. Mais comment peut-on entre les histoires utilisateur, les sprints et les réunions stand-up vous assurer que les intérêts de l'utilisateur ne sont pas négligés? Le développement centré sur l'utilisateur du logiciel conformément aux principes de "UX Lean" est-ce une méthode appropriée.

La première question, à partir de laquelle les besoins des utilisateurs est composé. Bien sûr, le produit doit être facile à apprendre et facile à utiliser. De plus, les utilisateurs d'experts devraient effectivement être en mesure de travailler avec elle. Ces points décrivent la facilité d'utilisation du produit et essentiellement jouent un rôle crucial lors de l'utilisation.

Mais les souhaits des utilisateurs sont plus que la facilité d'utilisation. Les utilisateurs vont de l'avant avec une certaine attente d'une approche produit, les émotions de l'expérience en cours d'utilisation, et certaines choses restent même après le fait bâton de mémoire. Tout cela affecte alors la familiarisation étape vers le produit, mais aussi à tous les autres un fabricant. Par exemple, le culte d'Apple vit depuis l'introduction de l'iPhone en partie par les attentes des utilisateurs qu'un autre de "prochaine grande chose" est mis sur le marché.

L'objectif devrait être aussi d'assurer non seulement la facilité d'utilisation de votre produit, mais aussi pour étudier l'effet sur l'utilisateur et d'optimiser. Cela inclut la performance globale ainsi que d'un questionnement critique des caractéristiques individuelles. Ces expériences utilisateur on résume sous le terme "Expérience utilisateur" (UX) en même temps.

Facilité d'utilisation et l'expérience utilisateur sont différents en principe, mais vrai: Un produit mal utilisé a rarement une bonne expérience utilisateur (figure 1).. Facilité d'utilisation et l'expérience utilisateur sont différents en principe, mais vrai: Un produit mal utilisé a rarement une bonne expérience utilisateur (figure 1)..

Problème commun: Premier plan, puis faire

Une tentative souvent justement pour résoudre ce problème est la soi-disant "Upfront UX" ("Avant-UX"). Dans l'approche, le développement du concept complet est réalisé avant le développement réel. Bien que aussi des méthodes de développement centrée sur l'utilisateur que le prototypage et les tests d'utilisabilité peuvent être utilisés, cependant, tous les résultats sont d'abord dans un grand, qui englobe la documentation. Cela sert que le projet se poursuit comme base pour le développement du produit et de ses caractéristiques individuelles. Cependant, découlant de cette approche sur des problèmes multiples fronts.

Le problème fondamental est d'avoir à concevoir l'ensemble du produit à un moment très tôt du projet. On ignore encore comment les différents domaines et les caractéristiques affectent les utilisateurs, et si toutes les fonctionnalités prévues seront nécessaires à tous. Une étude menée par Microsoft a montré que les deux tiers de toutes les fonctions ne soit pas ou même avoir un impact négatif sur l'expérience utilisateur. Le clip de papier virtuel "Clippy"Cela apparaît dans les versions antérieures de Microsoft Office, est
un bon exemple: La fonction d'aide fonctionne, mais les utilisateurs ne veulent pas la fonctionnalité sous cette forme.

Un autre problème sont des caractéristiques qui nécessitent l'utilisateur, mais fonctionnent différemment que ce qu'ils attendent. Ce sera même ne peut pas exclure complètement la planification akribischsten, car certains processus peuvent être expérimentés que sur le produit fini. Et même si le résultat final correspond à la pour y arriver objectif initial des utilisateurs, ils peuvent être mécontents de la tournure inattendue.

Un autre, invisible au problème de l'utilisateur se pose avec cette approche du côté du fabricant: la documentation de développement. Il y a des changements au concept nachzutragen dans la conception ou la mise en œuvre de la documentation. Bien que cela peut certainement être intégré comme une tâche obligatoire dans le processus de développement réel, toutefois, le transfert de documents volumineux est inévitablement associée à une forte perte d'informations. De plus, il pourrait y avoir encore des malentendus par le transfert purement textuel spécifications importantes.

Dans l'ensemble, l'approche UP-avant-UX, alors qu'un pas dans la bonne direction centrée sur l'utilisateur. Cependant, le maintien de la documentation et d'éviter les malentendus possibles des choses qui doivent être gardés à l'étude et donc produire en permanence le travail et les erreurs. Afin de résoudre ces problèmes et d'impliquer les utilisateurs plus dans le développement, actuellement une nouvelle méthode de développement agile prévaut: UX Lean.

Pensez, faire vérifier: Lean UX

UX Lean est basé sur le mélange de différentes approches pour intégrer les principes et les méthodes pour améliorer la facilité d'utilisation et l'expérience utilisateur dans un développement agile. L'idée de base vient de la scène start-up américaine. Cependant, Lean UX n'est pas une toute nouvelle philosophie, mais combine plutôt des approches des domaines "développement agile". "Design Thinking" et "Lean Startup", Les zones individuelles accès un autre utile et conduisent ainsi à une maigre ("maigre"), Le développement de produits centrés sur l'utilisateur.

Les trois phases du Lean UX: commune de trouver une solution (Think), la construction d'une version fonctionnelle (faire) et vérifier les hypothèses (Check) (.) Figure 2 Les trois phases du Lean UX: commune de trouver une solution (Think), la construction d'une version fonctionnelle (faire) et vérifier les hypothèses (Check) (.) Figure 2

Une des pierres angulaires des processus de développement agile Lean UX tels que Scrum. L'approche itérative en équipe et les petits emballages de mise en œuvre bien inscriptibles connexes permet de réaliser des petits, des tests rapides régulièrement. à leur tour, leurs résultats sont intégrés directement dans le développement du prochain sprint.

Design Thinking, le deuxième pilier de Lean UX, décrit un état d'esprit axé sur les solutions. L'objectif est d'abord une compréhension complète du contexte du problème et la créativité sans restriction à trouver des solutions. Avec une bonne dose de solutions de rationalité trouvées sont ensuite adaptées au contexte du problème. Ainsi, même des problèmes complexes peuvent d'abord analyser en profondeur et l'adresse.

Pour mais aussi de trouver la bonne façon au cours de ce processus itératif et créative, Lean UX servi dans l'état d'esprit du Lean Startup: Tout est une hypothèse et donc à vérifier. L'approche ouverte est un processus d'apprentissage constant. L'équipe apprend à l'aide d'expériences sur les utilisateurs et le marché. Pour que cela fonctionne, mais vous devez être conscient que l'échec d'apprendre l'un d'entre eux. Pas toutes les hypothèses sera validée, pas chaque expérience donnera les résultats escomptés.

Mozilla se sépare du test du canal Firefox Aurora

Mozilla sépare du canal Firefox Aurora

Les il y a six ans, le canal de libération lancé qui se dresse entre nightly builds et bêta, ne répond plus aux attentes de l'équipe. Developer Edition est basé sur la version bêta de futurs respectifs.

L'équipe Firefox nettoie les versions préliminaires et se déconnecte du canal Aurora, située entre l'avenir continuent disponibles nightly builds et bêtas. Selon la déclaration de l'équipe Firefox de test du canal Aurora n'a pas rempli ses attentes en tant que premier canal stabilisé. Les utilisateurs doivent par le changement d'avoir un choix clair entre la nuit avec des fonctionnalités expérimentales et bêta pour un aperçu plus stable.

Le fabricant Firefox a le canal Aurora lancé il y a six ans avec le changement de la version 5 de raccourcir les cycles de libération pour obtenir plus de commentaires des utilisateurs avant chaque bêta. Selon la déclaration, les processus sont devenus plus modernes, de sorte que l'équipe est en mesure de créer des variantes plus stables, même sans la phase Aurora de six à huit semaines. Les nouvelles fonctionnalités passeront de nuit dans la version bêta du canal si elles répondent aux critères précédemment définis.

chemins Developer Edition et migration

Developer Edition est basée maintenant sur la bêta construit. Pour les utilisateurs de développeurs de logiciels adaptés variante, le changement ne devrait pas exiger un effort supplémentaire et être transparent: Obtenir d'autres thèmes restent des outils, des paramètres et des profils.

Le changement prend effet immédiatement: le code de Firefox 54 est maintenant migré vers la version bêta, tandis que les 55 au 12 Juin dans le canal nuit reste de Firefox. Qui utilise actuellement la version Aurora, reçoit encore des mises à jour de sécurité critiques à Juin. Alors que le chemin de migration standard pour la version de bureau de Firefox Beta vers les utilisateurs allant Aurora migrera probablement Android au nightly builds. Au moment de cette version Aurora avait déjà disparu dans les canaux de bureau, mais toujours disponible pour Android.(RME)

Les ruisseaux et les collections en Java 8

contenu
  1. Les ruisseaux et les collections en Java 8
  2. Exemples
  3. interfaces fonctionnelles
  4. pipes & filtres
  5. parallélisation
  6. lire sur un côté
Les ruisseaux et les collections en Java 8

L'innovation principale de Java 8 est l'extension des éléments de langage aux expressions lambda. Ils permettent un style de programmation fonctionnelle en fait pur langage orienté objet. Cet article montre comment les expressions lambda et des motifs tels que le filtre-Map-Reduce peut être utilisé dans les cours d'eau également lors de l'utilisation de nouvelles collections.

En Janvier deux rapports ont été reçus par le Heise Ticker: "Scala 10 ans" et "8 JDK est disponible en Mars 2014", Seulement à première vue n'a rien à voir avec l'autre, les deux messages. En fait, Scala et d'autres langues comme Clojure, Kotlin ou Ceylan ont le paradigme de programmation fonctionnelle sur la machine virtuelle Java au cours des dernières années (JVM) fait populaire et affecte désormais aussi le langage Java lui-même. Afficher une comparaison entre les différents "alternatives Java pour usage industriel",

Article Source

Les exemples de programmes figurant dans l'article se trouvent sur le serveur FTP de Heise Developer pour télécharger.

Avec le maintenant publié Java 8 est une étape importante atteint maintenant, les effets des langages de programmation fonctionnelle reprend: Le Lambda projet de la JSR 335 doit élargir l'objectif à Java lambdas et fonctionnalités connexes depuis en 2009. Lambdas sont la caractéristique de la voix de la prochaine version de Java par et depuis les Generics en Java 5 la première fois une extension linguistique importante.

Ce qui suit est l'article fait référence à la façon dont un style de programmation fonctionnelle est bonne, et montre les améliorations fonctionnelles de JSR 335. accent ici sont les nouvelles interfaces fonctionnelles qui permettent aux modèles de plus grande valeur, tels que filtre Carte-Reduce. Ils forment la base pour les nouvelles collections Java et le nouveau flux auquel le produit pénètre ensuite dans le détail.

Tous les exemples de code suivants sont testés avec la version 1.8b128 (RC 1 du début de Février 2014). Grandes différences API dans les versions ultérieures ou dans la version finale ne sont pas à attendre.

Lambdas et Java 8 fonctionnalités connexes

Les nouvelles expressions lambda ne sont pas seuls, mais en même temps que ces techniques JSR-335:

La figure 1 montre comment les techniques de JSR 335 basées sur l'autre. Pour une explication plus détaillée des expressions syntaxe lambda, des méthodes, des références et des méthodes par défaut Maurice Naftalin et Brian Goetz est fait à l'article de Michael Kofler, mise en scène.

expressions lambda et Java-8 caractéristiques connexes de la JSR 335 (Fig. 1)expressions lambda et Java-8 caractéristiques connexes de la JSR 335 (Fig. 1)

50 ans BASIC: l’objectif général langage de programmation pour les débutants fête ses

L'inventeur du langage de programmation BASIC effectivement créé ce qu'ils avaient espéré: la simple et accessible à la programmation de tout le monde.

Le premier programme BASIC

10 Soit X = (7 + 8) / 3
20 IMPRIMER X
30 FIN

La première version de la langue avait 14 commandes (y compris l'impression, LET, SI, ALORS, POUR, NEXT, GOTO, INPUT et FIN).

Aujourd'hui, le 1 mai marque aussi le 50e anniversaire de la langue de programmation impératif BASIC. Parce que le 1er mai 1964 04h00 heure locale, marché le long du Dartmouth College dans le New Hampshire sur un ordinateur central de General Electric, les premiers programmes BASIC. John G. Kemeny et Thomas E. Kurtz, les inventeurs de la "symbolique langage de programmation d'usage général pour les débutants" (Tout usage du débutant Code d'instruction symbolique) a mis au point BASIC pour faciliter l'entrée dans la programmation à leurs étudiants de génie électrique. Ceci est également dit que la langue pourrait être utilisé si désiré leurs créateurs dès le début dans l'enseignement libre - contrairement à d'autres langages de programmation du temps, il fallait payer plusieurs 1 000 $ pour leur utilisation.

Adrian N. Bouchard / Dartmouth College Né en Hongrie Kemeny a travaillé pendant la Seconde Guerre mondiale, le soi-disant projet Manhattan, un projet de recherche militaire pour développer la bombe atomique, et plus tard, il était employé par Johann von Neumann et assistant à Albert Einstein.(Photo: Adrian N. Bouchard / Dartmouth College)

Les deux scientifiques ont traités depuis 1956 avec des langages de programmation, mais le développement réel a eu lieu en 1963 et 1964. Leur langue a été créée à un moment où les ordinateurs étaient encore considérés comme le personnel que la science-fiction. L'ancien matériel informatique répond presque mieux, avait besoin de la place de grands espaces, et - plus important - l'accès à l'ordinateur est resté limité dans les universités.

Cependant, début des années 60 devraient changer cette situation: au sujet de ses contacts avec le Massachusetts Institute of Technology voisin (MIT) Kurtz avait appris que l'ordinateur pouvait non seulement traiter les commandes à partir d'une source dans une pile. Maintenant, il est possible que plusieurs utilisateurs peuvent travailler simultanément sur un ordinateur ("multipropriété").

Adrian N. Bouchard / Dartmouth College Le maintenant 86 ans Thomas E. Kurtz a été employé depuis 1956 à Dartmouth College.(Photo: Adrian N. Bouchard / Dartmouth College)

Jusqu'à présent, ils se nourrissaient l'ordinateur en général avec des piles de cartes perforées ou longue bande de papier sur lequel les commandes étaient, par exemple, Algol ou Fortran. Comme un seul lot a été traité en même temps, il y avait peu de chances d'obtenir un créneau de temps d'ordinateur précieux. Le lot a également été inflexible, car il a permis pas de dialogue avec le système d'exploitation.

Kemeny et Kurtz ont vu le potentiel de partage du temps. Et avec BASIC, ils ont développé les moyens de langage de programmation approprié. En outre, à la fois le premier système informatique de partage de temps avec succès mis en œuvre (DTSS, système en temps partagé Dartmouth) créé. L'évolution de l'original BASIC a ensuite été faite au début des années toujours de nouveaux étudiants de Dartmouth College.

Percée, le pic et le déclin
Computer History MuseumGeneral Electric a profité de 1965 au système de partage temps Dartmouth comme base pour un produit commercial. Voici la couverture d'une brochure de GE, qui met en évidence l'avantage crucial de BASIC.(Image: Computer History Museum)

Ce qui était une sorte de démocratisation à l'informatique, mais ne devrait prendre que vraiment dans les années 70 en retard, son triomphe. Bien que les étudiants avaient, par exemple, le jeune Bill Gates et Steve Wozniak, grâce à BASIC dans les années 60 et début des années 70 l'occasion de faire leur propre expérience de programmation, mais qui n'a pas eu la plupart du temps dans leur propre maison. Seulement avec l'avènement des premiers ordinateurs personnels d'Atari, Sinclair, Tandy, Texas Instruments, Schneider / Amstrad et Apple, qui a remis son matériel à faible densité équipé d'une interface utilisateur et l'environnement de programmation pour BASIC, le train a donc droit sur la conduite. Le pic réel a marqué le 1982 à 64 livré Commodore, qui est toujours considéré comme le plus vendu ordinateur à la maison.

à ce moment-là un rôle très important assumé par la façon dont le modèle Microsoft: Avant que l'entreprise a présenté son propre système d'exploitation, de base et les différents dérivés de Microsoft et considérés comme très bons dialectes de la langue ont été les principaux produits du futur groupe de logiciels.

Leur Popularitäts crise a connu le langage de programmation est parce que les ordinateurs personnels sont devenus de plus en plus utilisé pour des choses comme le traitement de texte, le stockage de données ou feuilles de calcul qui ne nécessitaient pas de connaissances de base. Après des entreprises comme Commodore et Atari se sont effondrées, de nombreux ordinateurs ne sont plus livrés avec interpréteur BASIC. Et contre des langages comme C et le devenir de plus en plus populaires, les langages orientés objet basés sur le matériel tels que C ++ pourrait certainement pas arriver et ses dérivés BASIC des centaines pour des raisons de performance.

étaler aujourd'hui

Ce ne fut qu'avec l'introduction de l'environnement linguistique et de développement programmation orientée objet de Microsoft Visual Basic au début des années 90, ce qui devrait accélérer le développement de programmes Windows de façon spectaculaire (mot-clé Rapid Application Development), il y avait une sorte de retour que, par exemple, dans la programmation macro toujours dans les produits de bureau endure.

L'enthousiasme de beaucoup exclu une fois seulement pour les versions tardives du Visual Basic classique et le souvenir nostalgique de nombreux amateurs de programmation des années 70 et 80: BASIC a toujours été très controversée.

Une section d'une impression d'une liste de programme BASIC Commodore C64: vous avez sauté les numéros de ligne GOTO. Une section d'une impression d'une liste de programme BASIC Commodore C64: vous avez sauté les numéros de ligne GOTO.(Image: Wikipedia)

Le pionnier de la programmation structurée, Edsger Dijkstra, exprimé en 1975 qu'il était presque impossible d'enseigner les bons élèves de programmation qui étaient venus avant avec BASIC en contact. "Conceptuellement et sur l'efficacité de base ne pouvait pas suivre avec d'autres langages de programmation"Dit Jochen Viehoff, historien de l'informatique au musée Heinz Nixdorf Forum (HNF) à Paderborn. "Les critiques se sont fait encore et encore sur le « code spaghetti » confus drôle", Le BASIC a provoqué pur et simple en raison de la commande de saut au séquenceur de programme GOTO. Dans Visual Basic qui peut rivaliser avec les langues applicables préméditer pour .NET au plus tard, d'autres critiques que ce ne fut jamais vraiment de la plate-forme Microsoft Windows peut résoudre.

Néanmoins BASIC est encore aujourd'hui l'un des langages de programmation les plus utilisés, précisément parce qu'il est facile à apprendre. Dans l'index TIOBE en cours pour déterminer les langages de programmation les plus populaires (Visual) Basic a lieu 6, Visual Basic .NET suit à la position 10. Et il est même pas qu'il ya longtemps que Microsoft Small Basic avec une nouvelle, inspirée par Visual Basic avait imaginé l'environnement de programmation pour les enfants et les débutants de programmation pour adultes. Dans le monde de l'Internet, cependant, BASIC ne joue qu'un rôle mineur.(ANE)

Natif de conception d’applications iOS sur Windows avec MobiOne

Genuitec, un célèbre fabricant de logiciels texan pour Eclipse et les outils de printemps, a son outil de développement MobiOne révisé afin que les utilisateurs de Windows peuvent désormais créer des applications iOS natives pour App Store d'Apple. Vous ne semblez pas Mac plus pour le développement et il ne faut pas apprendre le plus couramment utilisé pour le langage de programmation iPhone et iPad Objective-C. applications web auparavant uniquement pour les appareils iOS pourraient être développés avec MobiOne.

Le groupe cible pour le Genuitec produit fait entre autres développeurs web et les services marketing. Le fabricant est-à-dire même au point que toute personne qui peut produire une présentation PowerPoint, à la traîne&Laissez tomber les capacités de MobiOne un iOS ou une application Web peut créer, sur la base du même code. Derrière la technologie, la plate-forme de cloud privé Genuitecs AppCenter, où vous pouvez également tester les applications créé peaux.

Cette application simple exemple semble avoir été créé en moins de 10 minutes.(Photo:Genuitec )

coûte MobiOne environ 100 $ par licence. En outre, il y a aussi un essai de 15 jours. (ANE)

Arduino et le protocole Firmata

contenu
  1. JavaScript et l'Internet des objets, Partie 2: BEAGLEBONE noir et Arduino
  2. Arduino et le protocole Firmata
  3. Cylon.js et conclusion
  4. lire sur un côté

Les ordinateurs mono-carte Arduino (voir Fig. 3) est encore la plate-forme la plus mature pour le développement dans le secteur IdO. Toutefois, le développement en C peut-être pas pour tout le monde et il est maintenant possible de contrôler à distance un Arduino via JavaScript. Pour cela, le soi-disant protocole Firmata est utilisé. Pour être complet, cependant, devrait également noter que le YUN Arduino Uno Arduino contrairement à d'autres comme utilisé ci-dessous inclut même une installation de Node.js pour exécuter JavaScript directement.

Le Uno Arduino peut être adressé via le protocole Firmata via JavaScript (Fig. 3).Le Uno Arduino peut être adressé via le protocole Firmata via JavaScript (Fig. 3).


Le protocole Firmata est basé sur le format de message MIDI et permet de communiquer à partir d'un ordinateur distant avec un Arduino (ou microcontrôleurs et micro-ordinateurs en général). En principe, tout microcontrôleur peut mettre en œuvre la mise en œuvre du protocole pour les cartes Arduino est actuellement, cependant, les plus courantes. Par défaut, sur l'Arduino aucun serveur Firmata est présent, ce qui signifie que les développeurs doivent installer manuellement en premier. Le plus simple est via l'Arduino IDE, permet de télécharger à partir du site Arduino pour Windows, Mac OS X ou Linux. Après l'installation et le démarrage de l'IDE d'Arduino via USB doit être connecté au PC ou Mac. Utilisation du menu "outils" doit être sélectionné conseil et port, puis pour permettre le processus de téléchargement de PC / Mac Arduino et installer le serveur Firmata fonctionne bien (voir la figure 4).

Via le panneau de menu peut être réglée et le port (Fig. 4) Via le panneau de menu peut être réglée et le port (Fig. 4)


, Vous sélectionnez ensuite le menu Fichier | Exemples | firmata | StandardFirmata sur la "StandardFirmata"ouvert -Sketch. Il est un fichier de code source qui contient le code pour le serveur Firmata. Une fois que vous avez sélectionné le bouton de fenêtre de l'éditeur résultant "télécharger"Pour obtenir le code correspondant à la carte Arduino. L'installation est terminée, vous pouvez fermer à nouveau l'Arduino IDE et le serveur Firmata est disponible sur l'Arduino.

Au client: Johnny Five

En ce qui concerne le côté client, il existe plusieurs bibliothèques qui mettent en œuvre le protocole Firmata, entre autres langages tels que Python, Perl, Ruby, Clojure, Java, .NET, PHP et JavaScript fournir. Pour ce dernier, la bibliothèque Johnny Five est probablement la mise en œuvre le plus connu.

L'installation de Johnny Five est via la commande NPM installer johnny-cinq. Avec require ( 'Johnny-cinq); le module peut être intégré par la suite dans le programme JavaScript respectif. Le simple exemple suivant montre la commande d'une diode électroluminescente (condition est celle représentée sur la Figure 3 Structure).

var = cinq exigent ("johnny-cinq");
var = nouveau conseil d'administration five.Board ({
Port: '/dev/cu.usbmodem14131'
});

var ledPin = 13;
var OUTPUT = 1;

board.on ("prêt", Fonction () {
var value = 0;
this.pinMode (ledPin, OUTPUT);
this.loop (2000, function () {
= valeur? 0: 1;
this.digitalWrite (ledPin, valeur);
});
});

La communication avec l'Arduino est effectué par une instance de conseil. En utilisant le procédé de (), le programme définit un gestionnaire d'événement pour l'événement prêt à être exécuté lors de la connexion à la carte Arduino a été produit. La boucle de fonction () puis (ici tous les deux secondes) assure l'exécution répétée du passé son gestionnaire d'événements. Dans le gestionnaire de veiller à ce que la dépose après la LED broches spécifié à bascule par l'intermédiaire d'écriture numérique () en alternance et sort les commandes trouvés.

var = cinq exigent ("johnny-cinq");
var = nouveau conseil d'administration five.Board ({
Port: '/dev/cu.usbmodem14131'
});
board.on ("prêt", Fonction () {
var = new five.Led conduit (13);
led.blink (2000);
});

Ce qui vient d'être fait manuellement dans le code, on peut le voir sur ce qui précède "classe" Dirigée simplifier. Il fait abstraction de la communication avec les lampes à LED et a, par exemple, le clignotement de la méthode () pour alterner la mise sous tension et hors tension une diode électroluminescente.

sont au-delà de "cours" pour travailler avec des boutons-poussoirs, claviers, manettes de jeu, des capteurs (capteur de distance, détecteur de mouvement, capteur de température, etc.) et bien plus encore. Par exemple, le programme peut être étendu relativement facilement à la bascule LED via les boutons poussoirs sur et en dehors:

var = cinq exigent ("johnny-cinq"), Bouton, LED;
five.Board (). une ("prêt", Fonction () {
= Nouveau bouton five.Button (7);
LED = new five.Led (13);
button.on ("frapper", Fonction () {
led.on ();
}). L'un ("libération", Fonction () {
led.off ();
});
});

Au-delà des smartphones: Android Things

Au-delà des smartphones: Android Thingscontenu
  1. Au-delà des smartphones: Android Things
  2. l'accélération matérielle
  3. interfaces utilisateur & conclusion
  4. lire sur un côté

Google ose une étape agressive dans le monde du contrôle du matériel avec Android choses. Le risque associé à l'utilisation de la marque Android, montre que le fournisseur de moteur de recherche est sérieux.

La plate-forme smartphone de Google est une taille de l'ensemble, et l'écriture de nombreux développeurs applications Android. En plus d'une variété de jeux, il existe de nombreuses applications d'entreprise, allant de la gestion agricole pour calculer la part des complexes algorithmes.

La distribution du système d'exploitation sur le smartphone ouvre la voie pour Android choses: La figure 1 montre que le système est fondamentalement pas beaucoup plus que l'Android classique, que Google a ajouté quelques bibliothèques spécifiques au matériel.

Android Things est AndroidAndroid Things est Android

La principale différence à un système d'exploitation Android ordinaire est dans la bibliothèque de soutien choses, qui est divisé en deux sous-bibliothèques. Tout d'abord, il y a l'API d'E / S périphérique qui permet d'accéder aux différents bus de matériel, et le second, l'utilisateur API du pilote peut partager avec le reste du système d'exploitation avec l'utilisateur fournie par leurs informations de capteurs.

De plus, Android choses diffère de l'Android classique par l'absence du envisagé pour l'interface graphique de l'interface utilisateur pile: Des fonctionnalités telles que le lanceur d'application, l'application de calendrier ou par téléphone manquant sur l'appareil IdO. Il y a aussi une liste des modifications de l'API - certaines interfaces de programmation sont désactivées sur Android choses.

Début 2017, Google a le périphérique I / OAPI également équipé d'une couche d'abstraction pour faciliter l'accès aux composants matériels couramment utilisés. Lors de la création de cet article, l'interface a soutenu environ deux dizaines de capteurs et actionneurs - plus d'informations peuvent être trouvées sur GitHub.

Une question de matériel

Selon l'état d'écrire l'article Android prend en charge les quatre conseils de développement: En plus du Raspberry Pi, le système fonctionne sur un ordinateur de processus NXP et les conseils Joule et Edison Intel.

procédez comme suit - si seulement en raison de la disponibilité immédiate - le Raspberry Pi 3. Comme Google image fournie par Android-Things nécessite un processeur 64 bits, il est exécuté pas sur les modèles précédents. Pour commencer, vous chargez l'image vers le bas et l'écrit sur une carte SD avec au moins 8 Go.

Android Les choses vont fonctionner sans écran. Il convient de noter que la détection du mode de fonctionnement se produit immédiatement après mise sous tension - a rejoint plus tard les écrans ne reconnaît pas les choses sous Android.

Avant de brancher l'alimentation à l'ordinateur de processus avec la souris, clavier, moniteur et câble réseau doit être connecté. En raison de la maigre performance WLAN du Raspberry Pi 3, il est recommandé de ne pas charger le processus de mise au point et le déploiement déjà lent encore plus loin avec le temps d'attente d'une connexion sans fil.

Après la connexion à la source d'alimentation, le premier processus de démarrage prend plus de temps pour terminer parce que l'ordinateur de processus doit configurer leur carte SD. Tout publiée dans le cadre des erreurs de processus de démarrage liés aux câbles de connexion Internet ou réseau sont largement hors de propos. L'important est que le contenu de l'écran d'accueil montre la figure ci-dessous:

Au-delà des smartphones: Android Things Si une adresse IP, tout va bien.

En raison de l'état relativement précoce du développement d'Android SDK choses est pas encore totalement intégré dans Android Studio. Les développeurs doivent télécharger le référentiel GitHub approprié et déballer. Ensuite, ils utilisent la fonction d'importation de projet Android Studio pour charger l'échelle de la structure Google. Le système de construction Gradle appelle lors de la première compilation plusieurs fois nécessaires pour télécharger des composants. Depuis Gradle se plaignait un seul composant à chaque passage, plusieurs tentatives peuvent être nécessaires.

Après la compilation réussie, il est temps de connecter le Raspberry Pi 3 avec le poste de travail. D'un point de vue logiciel tandis que le bien connu de l'interaction avec les smartphones Android Debug Bridge est utilisé. L'adresse IP de l'ordinateur de processus sera vu à partir de l'écran d'accueil indiqué sur la figure ci-dessus. Les commandes suivantes établissent la connexion:

~ / Android / sdk / plate-forme-tools $ ./adb connecter 10.42.0.44
* Daemon ne fonctionne pas. à partir maintenant sur le port 5037 *
* Daemon a commencé avec succès *
connecté à 10.42.0.44:5555~ / Android / sdk / plate-forme d'outils périphériques ./adb de $
Liste des périphériques connectés
dispositif 10.42.0.44:5555

Dans le fichier manifeste du programme quelques différences par rapport aux applications Android traditionnelles se trouvent. Tout d'abord, le chargement de la bibliothèque Android choses est frappante, ce qui est accompli par une utilisation-bibliothèque jour:

"http://schemas.android.com/apk/res/android"
package ="com.example.androidthings.myproject">

Lors de la déclaration de l'activité est un autre endroit spécial: Depuis le lancement du programme manquant, les développeurs ont besoin d'ajouter du contenu supplémentaire pour activer le programme lorsque vous démarrez le système informatique de processus. Dans l'exemple fourni par Google squelette, le code employé compétent ressemble à ceci:


...


"android.intent.category.IOT_LAUNCHER"/>
"android.intent.category.DEFAULT"/>

Pour démontrer les différences, est examiné dans la comparaison suivante de la stabilité du produit dans le matériel et dans des formes d'ondes logicielles. L'accès à GPIO (Allzweickeingabe / sortie) et MLI (modulation de largeur d'impulsion) dans les applications aussi bien les activités prenant avantage de l'API périphérique E / S. Pour générer une forme d'onde caractéristique d'une instance de la classe GPIO est nécessaire, le développeur peut créer en tant que membre de l'activité principale [i]:

public class Activité principale étend l'activité {
GPIO myGPIO;

Dans [i] OnCreated l'activation réelle. Google a l'API Service Manager périphérique mis en œuvre en tant que service système classique. Il fournit une instance de broches GPIO classe qui est associée au NIP respectif. Enfin, le programme démarre un thread qui sera responsable de la sortie réelle de la forme d'onde caractéristique:

@Override
onCreate protégé de vide (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
Périphériques Alma rongeurs Service Service =
nouveau service de rongeur périphérique Alma ();
try {
myGPIO = service.openGpio ("BCM6");
myGPIO.setDirection (Gpio.DIRECTION_OUT_INITIALLY_LOW);
myGPIO.setValue (true);
HeiseToggler MyThread = new HeiseToggler (myGPIO);
nouveau fil (MyThread) .start ();
} Catch (Exception e) {}
}

Le fil réel utilise la classe Runnable:

public void run () {
try {
tandis que (1 == 1) {
myGpio.setValue (true);
myGpio.setValue (false);
myGpio.setValue (true);
myGpio.setValue (false);
}
}
catch (Exception e) {}
}

Le constructeur non représentée reçoit une instance GPIO qui est régulièrement mis à l'étape suivante et hors tension. Chaque passage des résultats de boucle à deux sorties de forme d'onde. Ceci permet d'isoler le temps de calcul de la boucle par le procédé représenté dans le schéma des figures suivantes:

La vague carrée est ... La vague carrée est ...... que la quantité de calcul pour la boucle while est minime. ... que la quantité de calcul pour la boucle while est minime.

Vraiment intéressant est la stabilité de la forme d'onde. Après la connexion d'un Modulationsdomänenanalysator avec la broche respective, le dispositif délivre le résultat représenté sur la figure suivante:

Lorsqu'un bouton, une résistance série est généralement pas loin. Très stable, cette forme d'onde est pas.

RESTful avec CoAP

Le dernier épisode a adressé une communication basée sur des messages sur le protocole IdO MQTT. Comme alternative, CoAP offre un reste du petit appareil.

Le protocole à base de messages MQTT fonctionne assez bien pour les applications IdO, mais il y a un hic. On se sent moins comme l'histoire du web, mais pas sans rappeler le middleware de communication existant de l'environnement client-serveur. Bien qu'il ne soit rien de mal, mais cela fonctionne en quelque sorte dans le monde de HTTP et HTML un peu comme un corps étranger. Avec les services Web SOAP à la la situation est fondamentalement la même. Ils travaillent, mais le reste de remplacement (Representational State Transfer) pourraient assez rapidement pour prendre la victoire parce que le World Wide Web porte le gène REST déjà en lui-même. REST est un motif architectural en premier lieu.

Soit dit en passant: Si vous avez toujours demandé qui est le créateur de repos: REST a été créé en 2000 à la suite de la thèse de doctorat par Roy Fielding.

L'histoire jusqu'à présent:

  • 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)

REST: principes d'architecture

REST impose un certain nombre de contraintes. Dans le cadre des modèles d'architecture, on parlerait des forces.

Maintenant, qui a le goût, est l'un des nombreux tutoriels reste pourrait être administré comme celui du Dr Dobbs.

REST dans un Nutshell

Mais comment REST? nous commençons à me les bonnes nouvelles: Ceux qui comprennent HTTP, REST comprend. Il est après tout la base architecturale pour le Web. Les systèmes qui suivent cette architecture ont reçu, en conséquence, l'attribut RESTful. Contrairement à TCP ou UDP REST est orientée vers l'application, qui est, il cache les mécanismes habituels de bas niveau de l'application que cela ne soit pas des choses comme le contrôle de flux, Fehlererkennung- et le traitement, l'imagerie besoin de prendre soin des données non typées données saisies.

Simpliste, à partir de 10.000 mètres d'altitude, ce qui suit applique:

Complètement heureux?

REST est compréhensible et relativement léger, mais pas assez léger pour petit microcontrôleur. Pour de tels systèmes, il y a CoAP:

Qui est intéressé en détail CoAP a été renvoyé au site CoAP. Cela inclut également une liste des implémentations disponibles CoAP pour différentes langues et différents environnements.

messages CoAP

Un message de CoAP se compose d'un en-tête de quatre octets de large, suivi par diverses données de longueur variable et de position. Considérons d'abord l'en-tête:

  • Les 2 derniers octets de l'en-tête contiennent l'ID de message dans l'ordre prédéterminé du protocole de réseau. Il est utilisé au niveau du système pour détecter les doublons et de relier aux messages de type acquittement / réinitialisation des messages de types confirmable / non confirmables.
  • La construction des messages CoAP La construction des messages CoAP

    Pour l'en-tête, les octets de la fin du champ symbolique mentionné ci-dessus, suivi par les options. Le champ de jeton définit un tableau d'octets pour mettre en corrélation les messages et les réponses en même temps.

    Options à leur tour se composent d'un numéro d'option, la longueur de la valeur d'option et la valeur d'option réelle. Exemples d'options comprennent l'adresse URL de l'hôte ou l'adresse de la ressource.

    Options incluses ont une structure prédéfinie Options incluses ont une structure prédéfinie

    Après cela, le nombre binaire 11111111 suivi par (0xFF) et une charge utile qui se prolonge jusqu'à la fin du datagramme UDP.

    Attention: Dans les options, la valeur 0xFF peut voir pourquoi une recherche simple pour cette signature ne suffit pas.

    Les processus de communication dans CoAP

    Dans un CoAP basé échange de messages entre confirmable (à confirmer) et non confirmables de distinguer (non à confirmer) messages. Dans le premier cas, l'expéditeur ne prévoit pas un accusé de réception de l'expéditeur, à celui-ci.

    messages confirmables ne vous attendez pas à un accusé de réception, non confirmables, cependant,messages confirmables ne vous attendez pas à un accusé de réception, non confirmables, cependant,

    Une optimisation est le ferroutage soi-disant. L'émetteur envoie un message confirmable. Le récepteur emballé sa réponse dans le message d'accusé de réception de lancer prend un autre échange de messages.

    Liens: Le récepteur envoie des données utilisateur dans la réponse. A droite: Le récepteur signale une erreur. Liens: Le récepteur envoie des données utilisateur dans la réponse. A droite: Le récepteur signale une erreur.

    Dans une séquence complète, l'émetteur envoie un message confirmable au récepteur, qui reconnaît ce avec un message d'accusé de réception. À un stade ultérieur, le récepteur envoie également une réponse confirmable à l'émetteur, qui reconnaît également ce avec un message ACK.

    Une interaction complète se compose de 4 messagesUne interaction complète se compose de 4 messages

    Dans le dernier cas considéré, l'émetteur envoie un message non confirmables au récepteur qui à son tour renvoie sa réponse comme une réponse non confirmables. Ainsi le nombre de messages est réduit, mais le prix d'une sémantique Fire'n'Forget. En ne reconnaissant pas les messages, le client ne peut jamais être sûr que le message est reçu.

    Remplacement facile des messages CoAP sans confirmationRemplacement facile des messages CoAP sans confirmation

    Pour que ces scènes de communication essentielles de CoAP ont été dénombrés. (Un objet observé envoie en continu des messages à un destinataire) n'a pas été montré et DÉCOUVREZ OBSERVER (un client recherche pour certains services).

    Que ce soit en conformité avec la philosophie REST, est une autre question. Pour l'Internet des choses, il est certainement utile.

    microcoap

    Les bonnes nouvelles sont qu'il ya une mise en œuvre de CoAP pour le monde Arduino. Le mauvais: Un Genuino / Arduino Uno pas, mais assez rencontré dans le stockage doit ses limites. Il devrait déjà être un méga, raison, Yun, MKR1000 ou zéro. Ceci est bien sûr encore plus lorsque les utilisateurs installent le système d'exploitation OS-RIOT libcoap ainsi que la bibliothèque ou libcoap sur les TinyOS. Cependant, cet article est limité à microcoap.

    microcoap n'est pas une bibliothèque, mais la mise en œuvre exemplaire d'un serveur basé CoAP sur une carte Arduino. Il envoie des réponses toujours dans le cadre du message d'accusé de réception, à savoir au moyen de ferroutage.

    Intéressé trouver le projet approprié sur GitHub. Copiez les fichiers dans un sous-répertoire de votre dossier Arduino. Tout d'abord, vous devez supprimer principal posix.c. Ce fichier est pertinent que si vous en utilisant le Makefile fourni un conforme aux spécifications POSIX C / C ++ - à générer des applications que nous ne prévoyons pas. Sans supprimer ou de déplacer le fichier est à traduire les esquisses Arduino messages d'erreur microcoap.ino du compilateur.

    Pour utiliser le code source pour leurs propres besoins, il faut d'abord le comprendre. Cela est beaucoup plus facile avec les résultats plus tôt connaissance des bases de repos.

    Dans le fichier coap.c la méthode int coap_parse (* coap_packet_t lieu PKT const uint8_t * buf, size_t buflen. Il analyse chaque reçu et stocké dans un paquet UDP tampon pour l'analyser, les composants du message.

    coap_parseruft à son tour à différentes méthodes d'analyse pour analyser les différentes composantes du message:

    Par exemple, la structure coap_parseHeader sert à remplir coap_header_t (avec l'en-tête du message), qui lui-même est défini dans coap.h:

    typedef struct
    {Uint8_t ver; / * CoAP numéro de version * / uint8_t t; / * Message CoAP Type * /
    uint8_t tkl; / * Longueur jeton: = longueur de la boîte de jeton * /
    Code uint8_t; /* Code d'état CoAP. Peut-être Demande (0.xx) Le succès Reponse (2.xx) * Réponse d'erreur client (4.xx), ou réponse d'erreur de serveur (5.xx) * Pour les valeurs possibles, voir http://tools.ietf.org/html/rfc7252#section-12.1 * / id uint8_t [2]; / * ID de message * /
    } coap_header_t

    Divers programmes utilitaires avec le préfixe dump_ permettent la sortie des types de données complexes à des fins de test.

    Dans l'esquisse Arduino la commande suivante pour analyser le message entier est:

    si (0! = (rc = coap_parse (&PKT, packetbuf, sz))) {...}

    Une fois le package CoAP (pkt) a été analysé avec succès le croquis fait l'appel de méthode suivante:

    coap_handle_req (&scratch_buf, &PKT, &rsppkt)

    => pkt généré par coap_parse.

    coap_rw_buffer_t& scratch_buf

    => contient un tampon de 32 octets.

    coap_header_t& rsppkt

    => contient le renvoyé par la méthode gestionnaire paquet de réponse.

    Regardons maintenant de plus près cette méthode:

    int coap_handle_req (coap_rw_buffer_t * scratch, const * coap_packet_t inpkt, coap_packet_t * outpkt)
    {
    const * opt coap_option_t;
    uint8_t compter;
    int i;
    const coap_endpoint_t * ep = points d'extrémité; // points d'extrémité des hôtes

    while (NULL! = ep>gestionnaire) // itérer sur tous les gestionnaires d'événements
    {
    si (ep->méthode! = inpkt->hdr.code) // si les codes ne sont pas égaux, plus
    goto suivant;
    // Si la liste des options est pas vide?
    if (NULL! = (opt = coap_findOptions (inpkt, COAP_OPTION_URI_PATH, &compter)))
    {
    if (count! = ep>chemin->compter)
    goto suivant;
    for (i = 0; i
    {
    .buf.len si (opt [i]! = strlen (ep>chemin->elems [i]))
    goto suivant;
    si (0! = memcmp (ep>chemin->elems [i] opt [i] .buf.p, optez [i] .buf.len))
    goto suivant;
    }
    // match!
    retour ep>gestionnaire (scratch, inpkt, outpkt, inpkt->hdr.id [0], npkt->hdr.id [1]); // gestionnaire d'appels
    }
    suivant:
    ep ++; // prochaine itération de la boucle
    }
    // Maintenant, mis en place un paquet de réponse
    coap_make_response (zéro, outpkt, NULL, 0, inpkt->hdr.id [0]
    inpkt->hdr.id [1], &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE);

    return 0;
    }

    Les critères variables dans notre exemple (voir ci-dessous) contient une liste des points de terminaison disponibles, chaque coap_endpoint_t comme type:

    typedef struct
    {
    Procédé coap_method_t; / * (POST à ​​savoir, PUT ou GET) * /
    coap_endpoint_func gestionnaire; / * Gestionnaire pour ce type de point final (appel coap_make_response () sur) * /
    const chemin de coap_endpoint_path_t *; / * Chemin de la ressource (par exemple foo / bar /) * /
    const char * core_attr; / * L'attribut « ct » comme RFC7252 au chapitre
    7.2.1. définit: * L'attribut donne une indication du format * médias retour du contenu livré
    * (Chapitre 12.3. Montre les valeurs possibles) * /

    } Coap_endpoint_t;

    jeux de microcoap (= ressources) dans endpoints.c suivants points finals spécifiques.

    const points d'extrémité de coap_endpoint_t [] = {
    {COAP_METHOD_GET, handle_get_well_known_core, &path_well_known_core,
    "ct = 40"};
    {COAP_METHOD_GET, handle_get_light, &path_light, "ct = 0"}, // 0 => plaine
    // ascii

    {COAP_METHOD_PUT, handle_put_light, &path_light, NULL},
    {(Coap_method_t) 0, NULL, NULL, NULL} // marque la fin de la liste
    }

    Les méthodes sont préfixés handle_ le gestionnaire d'événement réel. Au nom du chemin (préfixe path_) sont les chemins d'accès relatifs de la ressource respective, tels que / ou /.well-known/core de lumière.

    Le chemin peut être d'ailleurs par défaut de microcoap de deux arbres. Cela peut être modifié dans le fichier d'en-tête. Supposons que deux du gestionnaire défini ci-dessus à titre d'exemple. Dans le cadre du chemin / lumière d'une DEL est définie comme une ressource. A notre hôte www..de l'adresse, donc, l'accès à la LED en conséquence sous www..de / lumière. Puisque nous utilisons CoAP, l'URL est COAP: //www..de/light

    La lumière variable a été convenu dans endpoints.c:

    statique lumière char = '0';

    Avec une méthode GET de l'état de la LED peut (on / off) et déterminer le résultat au client ...

    int statique handle_get_light(Coap_rw_buffer_t * scratch,
    const * coap_packet_t inpkt,
    coap_packet_t * outpkt,
    uint8_t id_hi,
    uint8_t id_lo) {
    // à ce moment, nous vous enverrons un message ACK et de l'emballage
    // dans le message de l'état actuel de la LED &lumière
    // ID de message et le jeton sont identiques à celles de l'appel

    retour coap_make_response (zéro, outpkt, (* const uint8_t)&lumière, 1,
    id_hi, id_lo, &inpkt->Tok, COAP_RSPCODE_CONTENT,
    COAP_CONTENTTYPE_TEXT_PLAIN);
    }

    Avec un procédé PUT, la DEL peut être activée ou désactivée par une commande à distance:

    int statique handle_put_light(Coap_rw_buffer_t * scratch,
    const * coap_packet_t inpkt,
    coap_packet_t * outpkt,
    uint8_t id_hi,
    uint8_t id_lo) {
    si (inpkt->payload.len == 0) // sans charge utile => erreur
    retour coap_make_response (zéro, outpkt, NULL, 0, id_hi, id_lo,
    &inpkt->Tok, COAP_RSPCODE_BAD_REQUEST,
    COAP_CONTENTTYPE_TEXT_PLAIN);
    si (inpkt->payload.p [0] == '1') // LED source s'allume
    {
    lumière = '1'; // spectacle de lumière et de lumière variable nouvelle valeur
    #ifdef ARDUINO
    écriture numérique (led, HIGH);
    #else
    printf ("ON \ n");
    #endif
    // jeton et ID de message sont les mêmes que lors de l'appel
    // Nous emballons l'état LED comme une charge utile du message ACK

    retour coap_make_response (zéro, outpkt, (* const uint8_t)&lumière, 1,
    id_hi, id_lo, &inpkt->Tok,
    COAP_RSPCODE_CHANGED,
    COAP_CONTENTTYPE_TEXT_PLAIN);
    }
    d'autre // émetteur s'éteint LED
    {
    lumière = '0'; // lumière
    #ifdef ARDUINO
    écriture numérique (led, LOW);
    #else
    printf ("OFF \ n");
    #endif
    // jeton et ID de message sont les mêmes que lors de l'appel
    // Nous emballons l'état LED comme une charge utile du message ACK

    retour coap_make_response (zéro, outpkt, (* const uint8_t)&lumière, 1,
    id_hi, id_lo, &inpkt->Tok,
    COAP_RSPCODE_CHANGED,
    COAP_CONTENTTYPE_TEXT_PLAIN);
    }
    }

    La réponse au client est généré dans chaque cas, en appelant la méthode suivante:

    coap_make_response (...)
    int coap_make_response (coap_rw_buffer_t * scratch, coap_packet_t * PKT, const * Contenu uint8_t size_t, content_len, uint8_t msgid_hi, uint8_t msgid_lo, const * coap_buffer_t Tok, coap_responsecode_t rspcode, coap_content_type_t content_type) {
    PKT>hdr.ver = 0x01; // autoriser uniquement la version 1
    PKT>hdr.t = COAP_TYPE_ACK; // Nous envoyons un accusé de réception (ACK)
    PKT>hdr.tkl = 0; // Initialiser 0
    PKT>hdr.code = rspcode; // code de réponse
    PKT>hdr.id [0] = msgid_hi; // Les deux octets du message ID
    PKT>hdr.id [1] = msgid_lo;
    PKT>numopts = 1; // Une option

    // corrélation jeton entre l'appel et la réponse nécessaire
    si (Tok) { // Non jeton vide
    PKT>hdr.tkl = tok->len; // remplacer la classe et la longueur
    PKT>tok tok = *;
    }
    // Safe parce que 1 < MAXOPT
    PKT>opte [0] = .num COAP_OPTION_CONTENT_FORMAT;
    PKT>opts [0] = .buf.p zéro>p;
    si (zéro>len < 2) renvoyer COAP_ERR_BUFFER_TOO_SMALL;
    égratignure>p [0] = ((uint16_t) content_type & 0xFF00) >> 8; // type de résultat
    égratignure>p [1] = ((uint16_t) content_type & 0x00FF); // magasin
    PKT>opte [0] .buf.len = 2;
    PKT>payload.p = teneur;
    PKT>payload.len = content_len;
    return 0;
    }

    En utilisant l'exemple de code dans microcoap à propre serveur CoAP peut être créé par l'adaptation à leurs propres besoins.

    Test du serveur CoAP

    Pour tester le serveur CoAP base Arduino, nous commençons la microcoap.ino Sketch sur notre carte Arduino (par exemple, sur un Mega ou à cause). Dans la présente connexion Ethernet scénario est utilisé, à la place, nous pourrions aussi utiliser le WiFi.

    Tout d'abord, le navigateur devrait servir de plate-forme de test. Pour le test, Mozilla Firefox est nécessaire. De plus, nous avons besoin du plug-in Firefox cuivre, qui est disponible ici. Après avoir installé le plug-in, vous pouvez expérimenter avec CoAP.

    Une fois que vous avez activé dans Firefox (il suffit de cliquer sur l'icône orange avec le logo de cuivre), vous pouvez entrer l'adresse de destination du serveur CoAP là. L'URL est COAP: //: 5683 /. Il vous suffit d'utiliser l'adresse IP de votre carte Ethernet Arduino.

    Appel du serveur CoAP base Arduino avec le plugin de cuivre sur Firefox Appel du serveur CoAP base Arduino avec le plugin de cuivre sur Firefox

    Dans le procédé illustré par l'exemple capture d'écran, je suis Permet de parcourir d'abord à ladite URL CoAP ont (fenêtre en haut à gauche) sélectionnée parmi les deux ressources disponibles la lumière des ressources, comme un message sortant, les caractères « 1 » est entré, et (via cliquant sur le bouton PUT envoyé en haut sous la barre de menu du navigateur) un message PUT à la ressource qui a ensuite allumé la LED.

    CoAP hôtes d'ailleurs inclus dans le URN des ressources ./well-known/core souvent une description de leurs ressources. Si vous cliquez sur ce sous-arbre en cuivre et de faire un GET Aufrugf, vous obtenez les informations appropriées sont affichées.

    CoAP et Java

    Pour accéder au serveur de puce électronique, nous pouvons utiliser une application Java au lieu de cuivre. Pour cela se présente comme une californium de la bibliothèque, qui est disponible dans le cadre d'Eclipse. Sur le site, vous apprendrez comment installer et utiliser californium dans Eclipse.

    Il est préférable de copier l'un des exemples de projets tels que cf-helloworld-client et de modifier en conséquence ce:

    // Carry Vous en tant que URI IP de vos propres cartes Arduino.

    try {
    uri = new URI ("COAP: //192.168.178.47: 5683 / lumière"); System.out.println (uri);
    } Catch (e URISyntaxException) {
    System.err.println ("URI non valide: " + E.getMessage (); System.exit (-1);
    }

    CoapClient client = new CoapClient (uri);
    System.out.println (uri);
    // Le premier paramètre = charge utile second paramètre = type de charges utilesréponse CoapResponse = client.put ("1", 0); Commutateur // LEDsi (réponse! = null) {
    System.out.println (response.getCode ());
    System.out.println (response.getOptions ());
    System.out.println (response.getResponseText ());

    System.out.println ("\ NADVANCED \ n");
    // accès API avancée avec l'accès à plus de détails par .advanced ()
    System.out.println (Utils.prettyPrint (réponse));
    } Else {
    System.out.println ("Aucune réponse n'a été reçue.");
    }
    conclusion

    CoAP est conçu pour les systèmes embarqués protocole REST qui ouvre le style architectural de repos pour les systèmes IdO. Cependant, il est plus que les besoins en ressources, par exemple, MQTT pourquoi une utilisation de CoAP est impossible de schmalbrüstigeren planches comme l'Arduino Uno. Nous revenons une fois de plus au sujet CoAP en ce qui concerne le haut de gamme Arduino comme les représentants des temps Yun dynastie.

    microcoap est une implémentation de serveur CoAP léger pour Arduino et Posix, le développeur doit encore adapter à leurs propres besoins, par exemple pour agir en tant que client aux serveurs CoAP. Une alternative consiste à installer le système d'exploitation RIOT-OS sur Arduino Mega ou fait lors de l'utilisation libcoap, une autre installation de TinyOS sur l'Arduino aussi avec l'installation de libcoap supplémentaires.

    Construire 2015: Microsoft a publié Visual Studio pour Mac OS X et Linux avant

    Construire 2015: Microsoft a publié Visual Studio pour Mac OS X et Linux avant

    Avec le code Microsoft Visual Studio présente un nouvel outil gratuit qui met l'accent sur les questions fondamentales de leur propre environnement de développement, mais fonctionne également sous Linux et OS X.

    Microsoft a une nouvelle version de l'environnement de développement Visual Studio présenté lors de sa conférence de développeurs de créer 2015 à San Francisco mercredi soir qui fonctionne non seulement sous Windows mais aussi sur OS X et Linux. Microsoft appelle le nouvel outil gratuit "Code de Visual Studio", Avec l'ajout "code" Microsoft distingue du produit des précédentes versions de Visual Studio pour Windows. "Code de Visual Studio" limité à l'éditeur de questions fondamentales, débogueur, et le contrôle de la source. Les concepteurs et au-delà des outils ALM Source de contrôle (application de gestion du cycle de vie) ne sont pas inclus.

    Première impression de code Visual Studio Première impression de code Visual Studio(Image: Microsoft)


    L'éditeur a connu de support d'entrée Visual Studio IntelliSense pour les identifiants et les constructions de langage. programmation pris en charge et langages de balisage comprennent C #, C ++, CSS (incl. MOINS et SASS), F #, CoffeeScript, HTML, Java, JavaScript, Lua, PHP, Perl, Objective-C, Python, Ruby, et XML Tapuscrit , Dans le contrôle de code source que le système de contrôle de version distribué Git est offert jusqu'à présent.

    Microsoft Ainsi, le code Microsoft Visual Studio placé dans la famille de l'environnement de développement.(Image: Microsoft)


    Code Visual Studio du mercredi soir (20:00 heure allemande) disponibles. de sorte que Microsoft prend l'étape suivante dans la nouvelle stratégie multi-plateforme pour les développeurs. En mai 2014, Microsoft a déclaré que la plate-forme de développement Web ASP.NET sera disponible pour Linux et OS X 5 En Novembre 2014, ces annonces suivies pour .NET Framework de base. Dans le cadre de la construction conférence Microsoft a également annoncé que les premières versions de prévisualisation de base .NET seront disponibles lors de la conférence 5 pour Linux et OS X encore. Windows .NET Core 5 a le statut "Release Candidate" atteint.(Holger Schwichtenberg) /(ANE)

    Hack: alternative PHP Facebook

    nouveau langage de programmation de Facebook étend le langage PHP de script à typage statique, les expressions lambda, collections et bien plus encore. La quasi-totalité du code PHP pour Facebook a déjà été converti en hack direction.

    Facebook est l'un des plus grands utilisateurs de PHP langage de script typé dynamiquement. Toutefois, cela ne signifie pas qu'il n'y avait pas de place pour une alternative dans le réseau social. Cela a conduit à la création d'un nouveau langage de programmation à l'année dernière, la première information a été divulguée et est maintenant disponible en tant que logiciel open source pour essayer.

    Les développeurs PHP devraient être en mesure de familiariser rapidement avec Hack, de nombreuses fonctions qu'ils connaissent du langage de script ici. pirater pourrait également coexister dans des applications avec PHP, le langage que dans certains PHP "dépréciée" ne supportent pas les caractéristiques marquées.

    familier frappe

    Facebook suggère ici une manière similaire, il est allé avec la pièce jointe JavaScript Tapuscrit Microsoft, qui complète JavaScript, par exemple, un système de type statique. Cela vaut également pour pirater, situé devrait également être adapté pour les grands systèmes critiques révélés par le familier d'autres langages tels que Java et typage statique de C / C - un domaine qui se trouve rarement en PHP à ce jour. Les utilisateurs atteints grâce à l'utilisation de Hack une meilleure performance dans leurs applications et une meilleure qualité de code, selon l'annonce.

    La nouvelle langue exige (Virtual Machine Hip Hop) Facebooks HHVM, un code PHP en bytecode compilation machine virtuelle. De plus HHVM offre un contrôleur de type, ce qui est de faire en sorte que toutes les informations entrées sont correctes. tour Hack permet au programmeur de définir des types de données uniques. En outre, il n'y a pas à trouver des collections avec des tableaux qui devraient être plus nuancée que la fonction de tableau d'utilisation de PHP en PHP. Pour Hack parler aussi qu'il simplifie par des fonctions lambda l'utilisation de fermetures. Les expressions lambda ont été récemment introduites en Java 8. De plus, les génériques de langue, soutien annulable et Type-aliasing.

    Au cours de la dernière année Facebook a presque converti l'intégralité du code PHP sur sa plate-forme vers Hack. Pour trouver plus de développeurs à pirater, la société a fourni un éditeur de plug-ins maintenant.(ANE)

    C ++: Directives de base Interfaces I

    Les interfaces sont un accord entre le fournisseur de services et l'utilisateur du service. Les C ++ de base Lignes directrices mis sur 20 règles pour ce contrat parce que "interfaces est probablement l'aspect le plus important de l'organisation du code",

    C ++: Directives de base Interfaces I

    Avant de présenter les règles, il y a une vue d'ensemble compact ici.

    Je ne peux pas imaginer en détail les règles. Il y a trop. Je vais donc écrire cet article sur les dix premiers et de me consacrer à la prochaine les dix autres. Allons-y.

    I.1: Faire des interfaces explicites

    Dans cette règle, il est sur la précision. Cela signifie que les hypothèses sur la fonctionnalité d'une fonction dans l'interface doivent être exprimées. Si cela ne se produit pas, ces hypothèses peuvent être facilement négligés et le code est difficile à tester.

    rond int (double d)
    {
    retour (round_up)? ceil (d): d; // ne pas: "invisible" dépendance
    }

    Par exemple, la fonction ronde supprime pas exclu que leur résultat de la variable globale dépend round_up.

    I.2: Évitez les variables globales

    La règle est bien sûr évidente, mais il parle explicitement de l'évolution des variables globales. constantes globales sont problématiques parce qu'ils injectent des dépendances dans une fonction et ne peut causer des conditions de course.

    I.3: Évitez singletons

    Singletons sont déguisées, les objets globaux. , Vous devez donc les éviter.

    I.4: Faire des interfaces et fortement typés PRÉCISION

    La raison est généralement très convaincante: les types de données sont la documentation la plus simple et la plus explicite, ont une vérification sémantique bien définie et sont automatiquement par le compilateur.

    Voici un exemple:

    draw_rect vide (int, int, int, int); // grandes opportunités pour les erreurs
    draw_rect (p.x, p.y, 10, 20); // qu'est-ce que 10, 20 signifie?

    draw_rectangle vide (de top_left Point, bottom_right Point);
    vide draw_rectangle (point de top_left, Taille height_width);

    draw_rectangle (p, point {10, 20}); // deux coins
    draw_rectangle (p, Taille {10, 20}); // un coin et un (hauteur, largeur) paire

    Avec quelle facilité il peut arriver, la fonction draw_rect mal à utiliser? Comparez la fonction draw_rectangle avec la fonction. Le compilateur garantit qu'il ne peut être utilisé avec des objets Point ou taille.

    Vous devez donc rechercher des fonctions qui utilisent beaucoup de types de données intégrés comme argument dans votre processus de nettoyage de code; ou pire, qui utilisent le vide de type de données * comme argument.

    I.5: conditions de l'État (le cas échéant)

    Si possible, vous devriez conditions préalables à votre fonction x ne peut pas être négatif dans le double sqrt (double x), formulé en assurances.

    Merci à la fonction prend () de la bibliothèque de soutien de ligne directrice (GSL), vous pouvez exprimer directement vos conditions.

    deux sqrt (double x) {Se attend (x >= 0); / * ... * /}

    Les contrats comprenant des conditions préalables, post-conditions et garanties sont l'une des caractéristiques que nous pouvons espérer 20 en C ++. Voici la proposition officielle: p03801.pdf.

    I.6: Je préfère () pour Se attend exprimer des conditions préalables

    Cette règle est la précédente relativement similaire, mais met son accent sur un autre aspect. Tu (Se attend) et non, par exemple, si des déclarations, des commentaires ou assert () - instructions d'utilisation, de fournir les conditions dans votre code.

    zone int (int hauteur, largeur int)
    {
    Attend (hauteur > 0 && largeur > 0); // bon
    si la hauteur ( <= 0 || largeur <= 0) my_error (); // obscur
    // ...
    }

    L'expression Se attend () est facile à identifier et peut être vérifié avec 20 C ++, selon toute probabilité.

    I.7: conditions de poste Etat, I.8: Je préfère Garantit () pour exprimer postconditions

    Selon les arguments d'une fonction, vous devez vous faire réflexions sur leur valeur de retour. Les règles des post-conditions sont semblables à celles des conditions préalables vient d'être décrit.

    I.9: Si à l'interface est un modèle, documenter ses paramètres à l'aide des concepts

    Avec une forte probabilité que nous allons obtenir avec 20 concepts C +. Les concepts sont prédicats pour les paramètres du modèle, qui peuvent être évalués au moment de la compilation. Un tel concept peut réduire le montant des arguments qui peuvent être utilisés pour un paramètre de modèle. Je l'ai déjà écrit quatre articles sur les concepts, car ils n'ont pas beaucoup plus à offrir.

    La règle des concepts est très évidente: Tu simplement utiliser.

    modèle
    exige InputIterator && EqualityComparable>, Val>
    Iter find (iter première, charge iter, Val v)
    {
    // ...
    }

    Les appels place de l'algorithme générique, qui est ses paramètres de modèle Iter un itérateur d'entrée et sa valeur sous-jacente EqualityComparable. Si vous trouvez interroges avec un argument de modèle que ces conditions ne sont pas remplies, vous recevrez un message d'erreur lisible et facilement compréhensible.

    I.10: Utiliser des exceptions pour signaler un défaut d'exécution d'une tâche requise

    Voici le raisonnement: "Il ne devrait être possible d'ignorer dans l'erreur parce que cela pourrait quitter le système ou un calcul pour état indéfini (ou inattendu)."

    La règle a un mauvais et un bon exemple de la cité "Non défini (ou unexpecead) État" sur.

    int printf (const char * ...); // mauvais: retour négatif si la sortie échoue

    modèle
    // bon: jeter system_error si incapable de démarrer le nouveau fil
    fil explicite (F&& f, Args&&... args);

    En mauvaise application, vous pouvez ignorer, ce qui rend votre programme non défini exceptionnel comportement.

    Si vous ne pouvez pas utiliser les exceptions, vous devez retourner des paires de valeurs. Merci à la fonctionnalité de liaison structurée 17 C ++, vous pouvez mettre en œuvre cette règle élégante.

    auto [val, error_code] = do_something ();
    if (error_code == 0) {
    // ... gérer l'erreur ou de sortie ...
    }
    // ... utiliser val ...

    Quelle est la prochaine?

    Dans le prochain article, je regarde les autres règles de pointeurs, l'initialisation des variables globales, les paramètres de la fonction et l'ABI (Application Binary Interface) de près. Dans C ++ moderne, il y a beaucoup à apprendre pour une bonne conception de l'interface.

    Java Pays 2017: Les organisateurs ravis de participation record

    Java Pays 2017: Les organisateurs ravis de participation record

    Fried Saacke a ouvert la conférence Java devant une foule record.

    Dans la quatrième édition de la Conférence Java terre, les organisateurs ont pu accueillir 1.655 participants - à 1.220 l'an dernier, un nouveau record. Dans le cas contraire, le temps ensoleillé qu'invoquent les visiteurs dans le parc d'attractions Phantasialand un sourire sur votre visage.

    Dans le cadre de l'accueil était aussi au revoir: Markus Eisele, précédemment responsable du programme de conférences, continuera d'effectuer d'autres tâches. Pendant quatre années de programmation, il a reçu des cadeaux de la ligne de conférence, la première Java pays pour toujours Fried Saacke, un billet de saison pour les prochaines éditions. Cette fois équipe avait Eisele la tâche de compilation de plus de 400 entrées d'un programme avec plus de 100 sessions et autres activités. Traditionnellement bien l'accent est mis sur la variété des haut-parleurs - des haut-parleurs de renommée internationale, jusqu'à nouveaux arrivants de la communauté. Donc, environ trois quarts des conférences en allemand, les autres se déroulent en anglais. En tant que service spécial dans le Silverado Theater une cabine de traduction a été mis en place: Si nécessaire, les participants ont pu suivre via un casque en allemand ou en anglais lectures en option.

    et caractéristiques communes avec le DOAG (groupe Oracle utilisateur allemand) et le iJUG, le groupe d'intérêt de Java germanophone User Group, organisateur de la conférence Java Land.

    Comme l'année dernière, les JavaLand4Kids ont eu lieu la veille. La petite soeur de la conférence Java est orienté leur attention aux programmeurs de demain. Dans la troisième édition des enfants environ 30 participants une quatrième année d'école primaire en trois ateliers appris connaître la programmation ludique.

    Architecture, Java EE et Java SE définis comme sujets

    Dans le premier de deux discours liminaires Jean-Jacques van Oosten a parlé du rôle de la CDO en tant que propriétaire chef de produit. Pour veiller à ce qu'aucun problème technique a été défini, mais une organisation. Le directeur général numérique de Rewe Group a rapporté sur son travail en tant que chef de serviteur et a donné comme message, ne pas compromettre. Au début, cela était intéressant, divertissant et une contribution importante parce que la transformation numérique est une question clé pour de nombreuses entreprises. Malheureusement glissé vers la fin de la keynote d'un événement de recrutement pour son entreprise. Le recrutement a aussi inventé la salle des exposants où de nombreux exposants principalement courtisé développeurs - manque de compétences de première main.

    Dans le second discours - par Martin Thompson - ont également joué Java comme la langue n'a pas d'importance, mais elle est allée avec le thème "À l'écoute des pressions de conception" plus vers l'architecture. Cela découlant de la pression des exigences non fonctionnelles, qui appelle Thompson préfèrent la qualité des services - en particulier pour la performance, la facilité d'utilisation et la sécurité.

    Comment les développeurs se sont intéressés au niveau local à l'architecture logicielle salles en partie complètes ont montré cela. En particulier, Carola Lilienthal leurré la communauté et a causé des chambres débordantes. Et même si elle a tenu que prévu dans une pièce plus grande de ses conférences.

    Carola Lilienthal la foule architecturer Carola Lilienthal la foule architecturer

    Cependant, les pourparlers de sécurité, ont été visités moins comme l'an dernier. Peut-être à cause de la structure des visiteurs: Pour beaucoup, ce fut la première visite du congrès, il était donc plus sur la programmation et l'architecture. Sécurité prennent autant vrai que comme une question de côté fastidieux. Les experts en sécurité peuvent également visiter des événements spécialisés - un exemple similaire, commence co et fonctions à l'automne.

    Au cours de l'année dernière à plusieurs reprises l'arrêt d'Oracle a été critiqué pour Java EE, la question a repris à nouveau la vitesse. Les visiteurs ont répondu mixtes: Certaines séances de Java d'entreprise de la grande salle était à peine à moitié plein. Un framework MVC, une partie précédemment prévue de Java EE 8, Oracle a retiré de la spécification. Certains membres du Groupe d'experts conduisent le développement activement poussé. Le transfert juridique des Ivar Grimstadt devrait être proche de la fin. L'état actuel, il a présenté en même temps que Christian Kaltepoth. La présentation a montré l'existence continue d'intérêt dans ce cadre fondé sur l'action. Les deux orateurs ont demandé au public d'exprimer à fournir des commentaires ou même participer au développement, mais pourrait nommer encore une date de sortie.

    Bien que la recherche sujet ne fait pas partie directement à Java EE. Combiné avec Hibernate Rechercher le chien top ElasticSearch repose sur les technologies Java EE (ORM) et permet ainsi une utilisation relativement facile. Une salle de ausgebuchter témoigne de l'énorme intérêt pour ElasticSearch.

    Au début des adaptateurs Area Manager Project Ed Burns, célébré avec certains membres du JSF du Groupe d'experts, "JSF 2.3 Release Party", Ainsi, l'une des premières parties de Java EE 8 est prêt. Le passage de MVC à la communauté a été citée comme un modèle pour JSF: Cela permet de vivre des cycles de libération plus courts si nécessaire, tel que défini par Java EE.

    JSF 2.3, le premier morceau de Java EE 8 JSF 2.3, le premier morceau de Java EE 8

    Mais non seulement Java EE 8 est à venir, et Java SE 9. A cet effet, ont également offert des conférences, même si dans un premier temps dans un nombre limité. Ils ont été la plupart du temps très fréquentés, et il a probablement besoin d'être devin pour identifier les questions clés relatives à la prochaine conférence Java Land. Non seulement de nouvelles fonctionnalités linguistiques ont été discutées. Plutôt Sander a montré que Mak applications de chemin de classe peuvent être convertis en base de modules. L'ensemble dépend de la quantité d'une application existante utilise les fonctions internes plus parlé qui sont encapsulées différemment sous la modularisation de la langue de base. Dans le cas le plus simple, le programme fonctionnera sans modification. mais il peut aussi être une voiture ou d'un module configuré modularisation bien sont nécessaires pour convertir les logiciels existants à Java. 9

    La Conférence de la Communauté

    Comme l'an dernier Micro Services et Docker étaient parmi les problèmes principaux. Cela montre que ce n'est pas seulement un battage médiatique, mais sans doute il y aura un changement fondamental. Bienvenue est la combinaison des services Micro et Docker. Mais les négociations sur les services Micro avec Java EE ont assuré des espaces entièrement occupés. On ne peut qu'espérer que soutiendra activement le projet Profils Oracle Micro. Insatisfait avec le développement récent compte tenu de l'inactivité Oracle avait rejoint plusieurs entreprises pour développer la soi-disant Profils Micro l'année dernière, un sous-ensemble de Java EE pour développer Microservice-, applications cloud et conteneurs.

    Malgré sa taille, la Conférence Java Terre n'a pas oublié la communauté. Encore beaucoup d'espace les activités du Java User Group a obtenu. Les participants au café JUG pourraient rencontrer des représentants de leurs communautés. Ou groupes d'utilisateurs individuels ont présenté leurs actions. était actif par exemple, la ville d'or JUG, qui a présenté son Java flipper. Il est une auto-construction: construit en bois, équipé de divers capteurs, l'appareil d'un programmé en Java Raspberry Pi est contrôlé.

    Markus Karg du JUG Gold City montre le flipper Java. Markus Karg du JUG Gold City montre le flipper Java.

    conclusion

    Au cas où l'augmentation du nombre de visiteurs continue à la prochaine édition de la conférence des développeurs Java pourrait briser la marque de 2000 participants. L'espace est limité: par exemple, une salle avec un espace beaucoup plus grand que le précédent pour les keynotes et plusieurs autres conférences a été utilisé cette année avec le Silverado Theater.

    Dans l'ensemble, la Conférence Java Terre a su plaire. Elle a offert des conférences différents niveaux, de sorte que les débutants et les développeurs expérimentés ont obtenu leur argent. L'année prochaine, elle a lieu du 20 au 22 Mars.

    Michael Müller
    est responsable du développement de logiciels InEK GmbH responsable des projets dans le Web, les environnements Java et .NET. De plus, il est actif en tant que rédacteur pigiste et écrit des articles sur diverses questions de développement, ainsi que des critiques de livres.