archive-fr.com » FR » E » EIXA6.FR

Total: 47

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Page principale
    thread t1 ma fonction std thread t2 ma fonction2 t1 join t2 join std cout FIN du thread std this thread get id std endl Dans ce code 2 threads sont créés utilisant 2 fonctions qui font juste un affichage et attendent un peu Puis le thread principal est bloqué void ma fonction std chrono duration int duree 1 for int i 0 i 10 i std cout thread courant std this thread get id std endl std this thread sleep for duree void ma fonction2 std chrono duration int duree 3 for int i 0 i 10 i std cout thread courant std this thread get id std endl std this thread sleep for duree Le résultat dépend de l ordonnancement des threads le join garantit que le main se terminera lorsque les deux threads seront terminés Pour éviter les data races soit les accès concurrents malheureux sur les données il faut synchroniser les threads Cela va se faire soit par les mutexes soit en utilisant des variables de conditions Les mutexes permettent de bloquer un thread sur une ressource Un thread acquiers un mutex avec lock et le relâche avec unlock Il est possible d utiliser un mutex à durée limitée et ou avec appel réentrant Pour ne pas lever d exception à l acquisition du mutex on peut utiliser try lock Dans ce cas tester le résultat pour savoir si l acquisition est ok Si des exceptions sont levées par l utilisation des mutex il s agit de system error Les codes d erreur sont récupérés par code La gestion des tâches Le code de gestion des threads reste assez complexe pour réaliser ce qui est finalement de la gestion de tâches Le développeur est détourné de son objectif initial pour mettre en place toute la cuisine de synchronisation etc Par ailleurs il est parfois difficile d être assuré de la pertinence de créer tant et tant de threads pour rendre le service La création de threads reste coûteuse Si vous créez plus de threads que nécessaire vous perdez en efficacité Avec la gestion de tâches nous allons travailler plus haut niveau le bénéfice est double mieux se focaliser sur son besoin et laisser les tâches activer ou pas les threads sous jacents Le support des tâches est réalisé à travers quelques classes telles packaged task T promise T future T ou les fonctions async Utiliser ces éléments va drastiquement simplifier la mise en oeuvre du parallélisme Les future et promise représentent respectivement les valeurs à récupérer et la valeur positionnée par la tâche Une utilisation simpliste des tâches se réalisent de la façon suivante une fonction attend un paramètre int et ne retourne rien std packaged task void int tache1 une fonction std packaged task void int tache2 une fonction appel de la fonction avec passage de paramètre tache1 1 tache2 2 Les tâches peuvent correspondre aux threads en fonction des possibilités de la machine On peut récupérer le résultat d un calcul lorsqu il est

    Original URL path: http://www.eixa6.fr/index.php/12-uncategorised/this.href, (2016-04-25)
    Open archived version from archive


  • Android NDK supporté par Android Studio v2.0
    la première Pas de conflit en vue Une fois installée il faut changer quelques infos dans les scripts Gradle La version de plugin doit changer utilisez la version expérimentale Attention les versions utilisées ici sont celles du jour Le propre de l expérimental est de changer très souvent très vite et ne pas être stable Dans le fichier de projet pre class lang java decode true dependencies classpath com android tools build gradle experimental 0 6 0 alpha9 pre Dans le fichier du module pre class lang java decode true apply plugin com android model application model android compileSdkVersion 23 buildToolsVersion 23 0 2 defaultConfig with applicationId android ei6 biz fr 269 04 00ter minSdkVersion apiLevel 23 targetSdkVersion apiLevel 23 versionCode 1 versionName 1 0 android ndk moduleName coucou pre Remarquez les changements de syntaxe DSL dans ce dernier Une information importante est le nom du module ndk strong Les appels en Java strong Avant d appeler vos fonctions C en Java il faudra charger le module natif lors du chargement d une classe de l application Par exemple dans l activité principale de l application pre class lang java decode true static System loadLibrary coucou pre L appel sera déclaré comme une fonction native du Java pre class lang java decode true public native String getTexte pre Cette fonction doit simplement être appelée en Java comme n importe quelle autre méthode strong La fonction écrite en C strong Enfin grâce à la prise en charge par Android Studio 2 0 des fonctions natives du Java un répertoire sera automatiquement créé qui contiendra un fichier du nom du module déclaré Dans ce fichier vous viendrez écrire votre fonction Si tout se passe bien le prototype de la fonction sera généré Si ce n est pas le cas pas de panique

    Original URL path: http://www.eixa6.fr/index.php/13-uncategorised/android/9-android-ndk-supporte-par-android-studio-v2-0?tmpl=component&print=1&page= (2016-04-25)
    Open archived version from archive

  • eiXa6 informatique
    Envoyer ce lien par e mail à un ami Fermer la fenêtre Destinataire Expéditeur Votre adresse e mail Sujet Expédier Annuler

    Original URL path: http://www.eixa6.fr/index.php/component/mailto/?tmpl=component&template=protostar&link=dbb92f7f76f0c27b08b42cfc50b38291df697f4f (2016-04-25)
    Open archived version from archive

  • La base de données SQLite sous Android
    CLIENT TABLE CREATE CREATE TABLE CLIENT TABLE NAME NOM TEXT ADRESSE TEXT public DataHelper Context context super context DATABASE NAME null DATABASE VERSION Override public void onCreate SQLiteDatabase db db execSQL CLIENT TABLE CREATE Override public void onUpgrade SQLiteDatabase db int oldVersion int newVersion db execSQL DROP TABLE IF EXISTS CLIENT TABLE NAME onCreate db L insertion des données La première chose à faire sera de créer un objet du type SQLiteOpenHelper Attention comme vous avez créé votre propre classe dérivée ce sera cette classe à qu il faudra utiliser DataHelper db new DataHelper this Pour insérer des données il y a plusieurs façons de pratiquer Il est possible d utiliser des méthodes toutes faites Il faudra auparavant ouvrir une connexion à la base en utilisant getWritableDatabase Une fois l insertion réalisée vous obtenez en retour le nombre d enregistrement inséré ou bien 1 pour signaler un échec Dans l exemple suivant l insertion est faite via la méthode insert en fournissant les données sous la forme de tableau associatif appelé ici ContentValues La fermeture de la connexion n est pas oubliée SQLiteDatabase base db getWritableDatabase ContentValues ct new ContentValues ct put DataHelper NOM Rasori Ets ct put DataHelper ADRESSE Saint Georges sur Eure base insert clients null ct ct new ContentValues ct put DataHelper NOM Alphorm ct put DataHelper ADRESSE Créteil base insert clients null ct base close La récupération des données Pour lire les tables le chemin inverse doit être réalisé Tout d abord ouvrir une connexion en lecture Pour faire une requête Vous pouvez faire la requête en utilisant directement du SQL ou bien passer par les méthodes aidantes comme query Le résultat est un Cursor c est à dire un accès aux données de résultat Une sorte d itérateur sur resultset Il faut alors se positionner

    Original URL path: http://www.eixa6.fr/index.php/13-uncategorised/android/8-la-base-de-donnees-sqlite-sous-android?tmpl=component&print=1&page= (2016-04-25)
    Open archived version from archive

  • eiXa6 informatique
    Envoyer ce lien par e mail à un ami Fermer la fenêtre Destinataire Expéditeur Votre adresse e mail Sujet Expédier Annuler

    Original URL path: http://www.eixa6.fr/index.php/component/mailto/?tmpl=component&template=protostar&link=27919f2e060b9181c98c23dd5807edecd7729c69 (2016-04-25)
    Open archived version from archive

  • Page principale
    module déclaré Dans ce fichier vous viendrez écrire votre fonction Si tout se passe bien le prototype de la fonction sera généré Si ce n est pas le cas pas de panique pre class lang java decode true include jstring Java android ei6 biz fr 1269 104 100ter MainActivity getTexte JNIEnv env jobject thiz return env gt NewStringUTF env coucou pre Les appels des fonctions C suppose une correspondance entre les types de données Java et ceux du C JNI définit les possibilités d échanges entre Java et le C strong Conclusion strong Grâce à Android Studio 2 0 nous aurons une prise en charge des appels natifs sous Android En Java il suffit alors de déclarer les fonctions que nous souhaitons appeler et l IDE se charge quasiment du reste Bien entendu tout cela reste expérimental mais risque de durer Détails Écrit par Super User Catégorie Android Publication 2 février 2016 Affichages 243 La base de données SQLite sous Android Imprimer E mail Les accès aux données sous Android peuvent être réalisés de plusieurs façons Les fichiers privés ou non les accès réseaux propriétaires ou via le Cloud et la base de données SQL La base de données SQLite est disponible sous Android et via quelques classes nous avons tous les outils pour créer écrire et lire la base La création de la base et sa mise à jour Pour créer la base de données mieux vaut utiliser les outils qui existent et pour cela dériver la classe SQLiteOpenHelper Vous aurez à compléter deux hook la création la mise à jour Lors de la création il faudra créer les tables pour la mise à jour le plus simple oui oui sera de supprimer les tables et de les recréer Dans l exemple de code suivant des constantes statiques représentent les noms des base tables et colonnes version Les noms des colonnes sont publiques ce qui facilitera leur usage public class DataHelper extends SQLiteOpenHelper public static final String NOM nom public static final String ADRESSE adresse private static final String DATABASE NAME appdatas private static final int DATABASE VERSION 1 private static final String CLIENT TABLE NAME clients private static final String CLIENT TABLE CREATE CREATE TABLE CLIENT TABLE NAME NOM TEXT ADRESSE TEXT public DataHelper Context context super context DATABASE NAME null DATABASE VERSION Override public void onCreate SQLiteDatabase db db execSQL CLIENT TABLE CREATE Override public void onUpgrade SQLiteDatabase db int oldVersion int newVersion db execSQL DROP TABLE IF EXISTS CLIENT TABLE NAME onCreate db L insertion des données La première chose à faire sera de créer un objet du type SQLiteOpenHelper Attention comme vous avez créé votre propre classe dérivée ce sera cette classe à qu il faudra utiliser DataHelper db new DataHelper this Pour insérer des données il y a plusieurs façons de pratiquer Il est possible d utiliser des méthodes toutes faites Il faudra auparavant ouvrir une connexion à la base en utilisant getWritableDatabase Une fois l insertion réalisée vous obtenez en retour le nombre

    Original URL path: http://www.eixa6.fr/index.php/13-uncategorised/this.href, (2016-04-25)
    Open archived version from archive

  • Page principale
    formations en développement logiciel architecture et conception Développement d applications Je travaille aujourd hui dans les technos Microsoft et Java Mes réalisations dans le monde Microsoft concernent essentiellement des clients lourds avec accès à la base de données locales En direction de PME par exemple qui ont besoin de développements spécifiques autour d équipements progiciels achetés à des acteurs nationaux Pour la technologie Java JEE est la plateforme de choix une plateforme mûre et évolutive qui permet la réalisation d applications d entreprises solides Je réalise aussi des applications mobiles essentiellement aujourd hui sous Android bien que j ai travaillé aussi avec Windows Phone Formations J interviens pour des sessions de formations sur les techniques de développement logiciel Avec un passé de développeur et une expérience certaine de concepteur puis architecte Les formations seront listées petit à petit dans la catégorie ad hoc Les objets connectés Voilà un sujet passionnant sur lequel je travaille en ce moment Qu Est ce qu un objet connecté Quelles sont les technologies possibles Quelles sont les limites Je vais illustrer les possibilités dans la rubrique correspondante Ce site s enrichira petit à petit revenez y N hésitez pas à me contacter par mail ou

    Original URL path: http://www.eixa6.fr/index.php (2016-04-25)
    Open archived version from archive

  • Le polymorphisme
    faut dériver une classe de JComponent et implémenter sa propre version de paint pour créer son nouveau type contrôle graphique Cette méthode paint est appelée par le framework Le principe OCP Open Close Principle repose sur cette technique vous devez chercher les classes à dériver dans le framework plutôt que venir modifier les classes du framework et le relivrer Mise en œuvre en Java Java est un langage assez strictement conforme aux concepts objets Pour mettre en œuvre le polymorphisme vous devez disposer de Classes en relation de généralisation classe mère classe fille Une redéfinition de méthodes déclarées sur la classe mère et réécrite différemment normalement sur la classe fille Il n y a rien d autre à faire Pour éviter les erreurs dues à une mauvaise orthographe ou bien aux fautes de frappes il est prévu depuis Java6 de rajouter l annotation Override sur la redéfinition dans la classe fille class Felin public void parler class Chat extends Felin Override public void parler Fig 4 la classe Chat est très facilement dérivée de la classe Felin Mise en œuvre en C C ne permet pas au polymorphisme de fonctionner par défaut Il faut donc prévoir le polymorphisme dans la classe mère Pour cela ajouter le mot clé virtual devant la fonction membre la méthode concernée Ce mot clé va typiquement provoquer la génération d une vtable ou table des fonctions virtuelles qui routera les appels Chaque objet doit donc être accompagné d un pointeur sur cette vtable Le coût induit peut être important L empreinte mémoire augmentée mais aussi le coût de l indirection Ce dernier semble être d environ 20 dans les compilateurs modernes class Felin public virtual void parler class Chat public Felin public void parler Fig 5 la classe Chat hérite facilement du Félin ne pas oublier de faire un héritage public mais si la classe mère n a pas déclarée la fonction membre comme virtual le polymorphisme ne fonctionnera pas Seul le code de déclaration est montré dans la figure Mise en œuvre en C Dans les langages phares du DotNet C et VB Net la mise en œuvre du polymorphisme suit les règles suivantes il faut indiquer sur la méthode de la classe mère que l on va redéfinir et aussi sur la méthode redéfinie de la classe fille que l on veut cette redéfinition Si une incohérence apparaît soit le compilateur signale une erreur bloquante soit un avertissement non bloquant si masquage Pour le C utilisez virtual sur la méthode de la classe mère et override sur la méthode de la classe fille class Felin public virtual void parler class Chat Felin public override void parler Fig 6 le C impose les mots clés virtual sur la méthode de la classe mère et override sur la méthode de la classe fille Mise en œuvre en VB NET Pour utiliser le polymorphisme en VB NET il faut comme pour son cousin le C indiquer que la méthode dans la classe mère sera redéfinie et

    Original URL path: http://www.eixa6.fr/index.php/2-uncategorised/4-le-polymorphisme?tmpl=component&print=1&page= (2016-04-25)
    Open archived version from archive



  •