CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeadsRNS
La session rennaise des CocoaHeads du mois d'avril 2012 fût l'occasion de revenir sur un des grands sujets d'iOS: la gestion mémoire. Thomas Dupont nous a présenté le sujet en partant des considérations les plus simples en allant vers les cas les plus complexes. Sa présentation est assurément un bon moyen pour se lancer dans le sujet, pour faire un rappel des basiques ou pour aller plus loin ... Une large partie de sa présentation était consacrée à ARC.
CoreData vous tente mais vous fait peur ? Vous trouvez le framework un peu dur à prendre en main ? Ou vous en avez marre d’écrire autant de ligne à chaque fois juste pour faire une simple récupération de vos données ?
Olivier Halligon (développeur de FoodReporter) vous offrira une découverte de MagicalRecord, le framework qui va drastiquement simplifier votre code CoreData, en apportant le Design Pattern ActiveRecord (comme utilisé en Ruby) sur Objective-C.
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeadsRNS
La session rennaise des CocoaHeads du mois d'avril 2012 fût l'occasion de revenir sur un des grands sujets d'iOS: la gestion mémoire. Thomas Dupont nous a présenté le sujet en partant des considérations les plus simples en allant vers les cas les plus complexes. Sa présentation est assurément un bon moyen pour se lancer dans le sujet, pour faire un rappel des basiques ou pour aller plus loin ... Une large partie de sa présentation était consacrée à ARC.
CoreData vous tente mais vous fait peur ? Vous trouvez le framework un peu dur à prendre en main ? Ou vous en avez marre d’écrire autant de ligne à chaque fois juste pour faire une simple récupération de vos données ?
Olivier Halligon (développeur de FoodReporter) vous offrira une découverte de MagicalRecord, le framework qui va drastiquement simplifier votre code CoreData, en apportant le Design Pattern ActiveRecord (comme utilisé en Ruby) sur Objective-C.
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
MongoDB ? Elastic ? Ces technologies sont elles faites pour être concurrentes ?
C'est l'histoire d'une rencontre entre deux technologies. A l'occasion de cette conférence vous apprendrez comment MongoDB et Elastic peuvent se compléter, comment tirer partie du meilleur de chaque monde : "le bon outil pour le bon usage".
Enfin, nous vous présenterons les principaux patterns d'architecture permettant d'intégrer ces deux technologies.
Une présentation du JavaScript en surface que j'ai faite durant ma première formation en JavaScript à l'Ecole Supérieure d'Informatique et de Mathématiques de Monastir.
Objectif général : Découvrir l'un des SGBDs noSQL les plus utilisés
Objectifs spécifiques :
Installer et démarrer un serveur et un client mongo
Créer une base de données dans un serveur mongo
Créer une collection dans une base de données mongo
Connaître les principaux types de données
Insérer des données
Consulter des données
Modifier des données
Supprimer des données
Architecture des types de contenu : ce qui a changé en Drupal 7slybud
Présentation Soirée Communautaire DrupalFr le 08/11/2012 La Cantine, Paris
Objectifs de la présentation :
* Pour qui : chefs de projet, architectes et site builders
* Pour quoi : Avoir une vue globale sur les outils drupal (core + modules contrib) à disposition
* Dans quel objectif : outils pour traduire des besoins fonctionnels en architecture technique drupal maintenable et scalable
* Cette présentation est : un panorama non exhaustif
* Cette présentation n'est pas : axée sur les détails de l'implémentation technique (« ça va manquer de démo »)
* Combien de temps ça va durer : aucune idée
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
ElasticSearch est un moteur de recherche open source reposant sur une interface JSON, pouvant fonctionner en mode distribué et interrogeable facilement via son API REST. Cédric Nirousset, Développeur web indépendant, vous fera découvrir les intérêts de l’utiliser dans vos applications à travers quelques exemples pratiques.
A propos de l’intervenant : Cédric Nirousset, diplomé dut DUT SRC Montébliard en 2006 et de l’UTBM en Informatique en 2010, il est maintenant développeur web indépendant à Besançon, travaillant pour des entreprises de toutes tailles et tous horizons. Suivez Cédric sur Twitter @Nyr0
A brief summary of the most important reasons about why choosing MongoDB might be a good solution in current common problems in IT. This talk is dedicated to software engineers, DBA, managers, CTO that could know MongoDB but don't see why they should deploy it in production.
This document provides lessons learned about developing Internet of Things (IoT) applications. It discusses using unit tests to debug IoT applications, implementing a data transformation layer to convert between data formats, and unit testing models. It also recommends simulating Bluetooth Low Energy (BLE) functionality on iOS simulators using wrappers and protocols. The document emphasizes simulating functionality as much as possible and applying server-side development principles to IoT apps.
This document discusses strategies for migrating code from Swift 2.x to Swift 3.0. It recommends first migrating dependencies using tools like CocoaPods and Carthage. It then recommends using Xcode's migration assistant to fix issues, while also preparing code templates beforehand using tools like SwiftGen. Some challenges discussed include changes made automatically by the migrator, optional comparators being removed, and Grand Central Dispatch API changes. References for further information on the Swift 3 migration are provided.
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
MongoDB ? Elastic ? Ces technologies sont elles faites pour être concurrentes ?
C'est l'histoire d'une rencontre entre deux technologies. A l'occasion de cette conférence vous apprendrez comment MongoDB et Elastic peuvent se compléter, comment tirer partie du meilleur de chaque monde : "le bon outil pour le bon usage".
Enfin, nous vous présenterons les principaux patterns d'architecture permettant d'intégrer ces deux technologies.
Une présentation du JavaScript en surface que j'ai faite durant ma première formation en JavaScript à l'Ecole Supérieure d'Informatique et de Mathématiques de Monastir.
Objectif général : Découvrir l'un des SGBDs noSQL les plus utilisés
Objectifs spécifiques :
Installer et démarrer un serveur et un client mongo
Créer une base de données dans un serveur mongo
Créer une collection dans une base de données mongo
Connaître les principaux types de données
Insérer des données
Consulter des données
Modifier des données
Supprimer des données
Architecture des types de contenu : ce qui a changé en Drupal 7slybud
Présentation Soirée Communautaire DrupalFr le 08/11/2012 La Cantine, Paris
Objectifs de la présentation :
* Pour qui : chefs de projet, architectes et site builders
* Pour quoi : Avoir une vue globale sur les outils drupal (core + modules contrib) à disposition
* Dans quel objectif : outils pour traduire des besoins fonctionnels en architecture technique drupal maintenable et scalable
* Cette présentation est : un panorama non exhaustif
* Cette présentation n'est pas : axée sur les détails de l'implémentation technique (« ça va manquer de démo »)
* Combien de temps ça va durer : aucune idée
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
ElasticSearch est un moteur de recherche open source reposant sur une interface JSON, pouvant fonctionner en mode distribué et interrogeable facilement via son API REST. Cédric Nirousset, Développeur web indépendant, vous fera découvrir les intérêts de l’utiliser dans vos applications à travers quelques exemples pratiques.
A propos de l’intervenant : Cédric Nirousset, diplomé dut DUT SRC Montébliard en 2006 et de l’UTBM en Informatique en 2010, il est maintenant développeur web indépendant à Besançon, travaillant pour des entreprises de toutes tailles et tous horizons. Suivez Cédric sur Twitter @Nyr0
A brief summary of the most important reasons about why choosing MongoDB might be a good solution in current common problems in IT. This talk is dedicated to software engineers, DBA, managers, CTO that could know MongoDB but don't see why they should deploy it in production.
This document provides lessons learned about developing Internet of Things (IoT) applications. It discusses using unit tests to debug IoT applications, implementing a data transformation layer to convert between data formats, and unit testing models. It also recommends simulating Bluetooth Low Energy (BLE) functionality on iOS simulators using wrappers and protocols. The document emphasizes simulating functionality as much as possible and applying server-side development principles to IoT apps.
This document discusses strategies for migrating code from Swift 2.x to Swift 3.0. It recommends first migrating dependencies using tools like CocoaPods and Carthage. It then recommends using Xcode's migration assistant to fix issues, while also preparing code templates beforehand using tools like SwiftGen. Some challenges discussed include changes made automatically by the migrator, optional comparators being removed, and Grand Central Dispatch API changes. References for further information on the Swift 3 migration are provided.
This document discusses using BitTorrent on iOS. It provides an overview of BitTorrent, including its history, usage statistics, and technical details. It then discusses challenges with using BitTorrent on iOS and potential solutions, including using the libtorrent C++ library. It covers how to build and configure libtorrent for iOS, and how to interface it with Swift. It also describes how to implement an event loop to fetch torrent updates and progress. Some caveats mentioned are the need for fine-tuning to avoid heavy battery usage and lack of background session support on iOS.
This document discusses using CocoaPods to build a modular iOS application with reusable components. It outlines slicing an app into modular "bricks", extracting them into separate CocoaPod libraries, and then rebuilding the app by linking the bricks together through the Podfile. Key steps include identifying app domains to extract, separating each domain into its own pod, and then reconstructing the main app through CocoaPods dependencies. The benefits of this approach include modularity, reusability, and the ability to develop components independently through their own projects and tests.
This document discusses CloudKit, Apple's backend as a service (BaaS) that provides a turnkey backend solution for mobile apps. CloudKit allows developers to store and sync data across devices without needing backend server experience. It features fields for common data types, querying, sorting, pagination and push notifications. While providing a more user-friendly dashboard than manual coding, CloudKit's image bandwidth is limited and the public database had bugs in early iOS 10 versions. The document also answers questions about CloudKit's capabilities and limitations.
The document discusses the HomeKit framework which allows controlling home accessories like thermostats, lights, and sensors from iOS devices and Siri. It covers setting up accessories by discovering them on the local network, adding them to rooms in the HomeKit home database, and naming their services. It also explains how to control accessories by reading and writing characteristic values, setting up notifications for changes, and creating automations with triggers and scenes. Security features like end-to-end encryption using keys stored locally are highlighted.
iOS 9 introduced several new features including split screen multitasking on iPad, search APIs, app thinning technologies like bitcode and app slicing, keyboard shortcuts, 3D Touch features, updated UI components like UIAlertController and SFSafariViewController, on demand resources, and the new Contacts framework. It also improved existing technologies like Auto Layout with new syntax and components like UIStackView.
This document provides instructions for setting up Swift programming on a Raspberry Pi, including downloading Swift binaries, installing dependencies, and using the SwiftyGPIO library to access GPIO pins. Key steps include installing Ubuntu Core or Raspbian on an SD card, installing Swift binaries from a URL or building from source, installing dependencies like libxml2 and clang, and using SwiftyGPIO to configure pin directions and read/write values to control an output pin based on an input pin. Tools like SourceKitten and rsub enable using the Swift compiler and debugger remotely over SSH.
This document discusses communication methods for smart things and their requirements. It lists requirements like low energy, mobility, proximity detection, and security. Potential communication mediums are then presented, including Bluetooth, BLE, WiFi, Zigbee, LPWAN networks, mobile networks, NFC/RFID, ultrasound, and voice. Examples of smart devices and the communication methods they use are provided, such as Philips Hue lights using Zigbee, iBeacons using BLE, WiFi scales, smartwatches using BLE/WiFi/BT, and Alexa using WiFi. Bluetooth iAP is described as allowing only accessory and user connection through BLE, with iOS app connection, energy efficiency,
This document discusses errors in Swift. It covers topics like:
- Any type can adopt the Error protocol in Swift
- Functions, computed properties, and subscripts can throw errors
- catch blocks can match patterns to catch errors
- Common errors include ignoring errors or not handling them properly
- Advanced topics include rethrowing errors, result equivalency, and different strategies for handling and responding to errors.
This document introduces SuperCombinators, a parser combinator framework for Swift that aims to provide a declarative and memory-safe API. It discusses existing parser combinator solutions that had downsides like custom operators or memory leaks. The framework takes an approach of defining parsers as strings that are transformed into closures. It distinguishes between patterns that traverse strings and parsers that extract values, allowing for useful extensions and simplification of composition operators. Recursive parsers are handled by lazily generating parsing functions with unowned references to avoid reference cycles. An example demonstrates parsing integers and sums recursively in a declarative manner.
This document discusses Safari app extensions for macOS. It provides a history of extensions in Safari and introduces Safari app extensions, which are bundled within macOS apps rather than distributed separately. Benefits of Safari app extensions include automatic updates through the Mac App Store and secure two-way communication between the extension and host app. The document also covers migrating existing extensions to the Safari app extension model and demonstrates communication between the extension and host app.
Les modes de licences de nos principaux produits ont considérablement évolué ces derniers mois. Cette session permettra de revenir rapidement sur les changements intervenus sur SQL Server 2012, System Center 2012, Windows Server 2012, Windows 8… L'arrivée du Nouvel Office s'accompagnant également de changements profonds sur la façon d’acheter, mixant références on-premise et services en ligne, venez découvrir les solutions qui accompagnent cette évolution.
This talk explain how Delta Lake can be used as a reference architecture for data lakehouse. It gives the main concepts and principles behind Delta lake
Lors de cette session nous ferons un tour d’horizon des solutions NoSQL présentes dans Azure telles que DocumentDB, HBase, les Tables Azure, Datastax Enterprise / Cassandra, MongoDB et bien d’autres. Venez découvrir les solutions que propose Azure via des solutions natives ou via l’intégration de solutions open source ayant fait leurs preuves.
Lors de cette session nous ferons un tour d’horizon des solutions NoSQL présentes dans Azure telles que DocumentDB, HBase, les Tables Azure, Datastax Enterprise / Cassandra, MongoDB et bien d’autres. Venez découvrir les solutions que propose Azure via des solutions natives ou via l’intégration de solutions open source ayant fait leurs preuves.
Cette étude porte sur la brique Spark SQL de la plateforme Apache Spark.
L'objectif est de présenter les concepts et les fonctionnalités de spark SQL.
Les points abordés sont :
- Architecture
- API de Spark SQL
- Opérations sur DataFrames/DataSets
- Opérations relatives au nettoyage de données
- Opérations de conversion (DataFrame, DataSet, Collection, RDD)
- Opérations relationnelles
Similaire à Les différents design patterns pour CoreData par Emmanuel Furnon (20)
Alternative - Complément au Tramway et 3ème lien de la ville de Québec Daniel Bedard
An update of this presentation has been done with Slide 16 that has been updated and 17 has been added, only.
Cette présentation a été ajournée avec la diapo 16 qui a été modifié et la 17 qui a été ajouté.
Voir ici
https://www.slideshare.net/slideshow/alternative-au-tramway-de-la-ville-de-quebec-rev1-sum-pdf/269691794
CDPQ Infra dévoile un plan de mobilité de 15 G$ sur 15 ans pour la région de Québec. Une alternative plus économique et rapide, ne serait-elle pas posssible?
- Valoriser les infrastructures ferroviaires du CN, en créant un Réseau Express Métropolitain (REM) plutôt qu'un nouveau tramway ou une combinaison des 2.
- Optimiser l'utilisation des rails pour un transport combiné des marchandises et des personnes, en accordant une priorité aux déplacements des personnes aux heures de pointes.
- Intégrer un téléphérique transrives comme 3ème lien urbain dédiés aux piétons et cyclistes avec correspondance avec le REM.
- Le 3 ème lien routier est repensé en intégrant un tunnel routier qui se prolonge avec le nouveau pont de l'Île d'Orléans et quelques réaménagemet de ses chausées.
https://www.linkedin.com/in/bedarddaniel/
English:
CDPQ Infra unveils a $15 billion, 15-year mobility plan for the Quebec region. Wouldn't a more economical and faster alternative be possible?
Leverage CN's railway infrastructure by creating a Metropolitan Express Network (REM) instead of a new tramway or a combination of both.
Optimize the use of rails for combined freight and passenger transport, giving priority to passenger travel during peak hours.
Integrate a cross-river cable car as a third urban link dedicated to pedestrians and cyclists, with connections to the REM.
Rethink the third road link by integrating a road tunnel that extends with the new Île d'Orléans bridge and some reconfiguration of its lanes.
https://www.linkedin.com/in/bedarddaniel/
3. Rappels sur CoreData
• Ce n’est pas :
• Une base de données relationnelle
• Un ORM
• Gestion de graphes d’objets
• Stockage des données :
• XML
• SQLite
• En mémoire
9. Core Data Nested Context
• Thread-safe
• Découpage des tâches
• Synchronisation automatique
• Perte de performance sur de
larges données
10. Core Data Multiple Stacks
• Découpage des tâches
• Performant sur de larges
données
• Complexe à mettre en place
• Difficulté à débugger
11. Les différents design patterns
• Comment encapsuler la couche de persistance/stockage ?
• Comment requêter une source de données ?
• Comment lier la logique métier à une base de données ?
• Comment assurer un requêtage optimisé et performant ?
12. Couche DAO
Pattern DAO
• Data Access Object
Source de données
Requêtage Résultats
Objets métiers
Ce n’est pas une base de données : la fonction principale est la gestion d’une hiérarchie d’objets.
4 types de stockage possible : SQLite, XML, Binaire et en Mémoire
Pour le chargements des enfants (par exemple, la liste des notes d’un élève), aucun requête n’est nécessaire alors que pour un ORM, une requête est envoyée.
La définition d’un modèle ne veut pas forcément dire qu’une base de données se cache derrière.
Le Model en CoreData définit la structure du graphe d’objets, leurs relations et leurs attributs.
Pour chaque entité, une classe est créée qui correspond à l’objet métier qui sera utilisé, et une catégorie reprend l’ensemble des attributs et relations du modèle. Cette catégorie sera écrasée à chaque génération à partir du modèle, il est donc conseillé de ne pas la modifier.
Le NSManagedObjectContext possède 2 types de file d’exécution des requêtes : file principale et file privée.
La file principale est exécutée sur le main thread et la file privée dans un thread à part.
Tout objet n’est présent qu’en un seul exemplaire dans le NSManagedObjectContext même si plusieurs requêtes retournent des objets identiques.
Un coordinateur gère un ou plusieurs stores (potentiellement de différents types).
Le coordinateur fait le mapping entre chaque entité et le store dans lequel il doit être enregistré.
MOC : Managed Object Context
Problème d’un unique context : s’il est privé, impossible de modifier l’interface, s’il est principal, on bloque l’UI.
Problème de thread safe : les objets Core Data ne sont pas thread safe et Core Data les verrouille même en cas de lecture (ne serait-ce que pour un champ).
Dans le cas de plusieurs contextes, les mises à jour dans l’un ne sont pas répercutées sur l’autre. Travail à coder à la main.
Les contextes peuvent hériter d’un contexte parent. Certaines règles s’appliquent dans ces cas :
Un contexte parent reçoit les mises à jour des contextes enfants
Un contexte enfant ne reçoit pas les mises à jour de son parent
Les mises à jour des contextes enfants obligent le contexte parent à se mettre à jour => les tâches du parent sont entrecoupées dans le meilleur des cas.
Mise en place d’une seconde stack réservée à l’insertion d’un nombre important de données.
Le choix de la stack adéquate dépend principalement du projet : y a-t-il des lourds traitements ??? Les requêtes sont-elles complexes ??? Les données sont-elles volumineuse ???.
Fortement utilisé en Java, le pattern DAO s’occupe de la couche intermédiaire entre la couche métier et la source de données.
Nous retrouvons ici une partie du schéma de Core Data. En effet, la partie Core Data sera encapsulée dans la couche DAO.