La majorité des applications actuelles ont besoin d’enregistrer des informations dans une base de données locale ou serveur. Plusieurs outils existent dont Entity Framework, le plus fréquemment proposés par Microsoft, ou ADO.NET, le plus performant mais le plus complexe à exploiter. Depuis plusieurs années, nous avons construit un ensemble d’outils simples afin de nous aider dans la fabrication de la DAL de nos projets, et plus particulièrement dans la recherche de données en les transformant facilement en objets .NET.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2a2Djbp.
Gerard Sans explains RxJS' data architecture based on reactive programming, exploring Observables API using RxJS koans and unit tests. RxJS 5 focuses on performance and usability. Filmed at qconlondon.com.
Gerard Sans is a multi-talented Computer Science Engineer specialised in Web. He has lived and worked for all sorts of companies in Germany, Brazil, UK and Spain. He enjoys running AngularJS Labs London, mentoring AngularJS students, participating in the community, giving talks and writing technical articles at Medium.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2a2Djbp.
Gerard Sans explains RxJS' data architecture based on reactive programming, exploring Observables API using RxJS koans and unit tests. RxJS 5 focuses on performance and usability. Filmed at qconlondon.com.
Gerard Sans is a multi-talented Computer Science Engineer specialised in Web. He has lived and worked for all sorts of companies in Germany, Brazil, UK and Spain. He enjoys running AngularJS Labs London, mentoring AngularJS students, participating in the community, giving talks and writing technical articles at Medium.
Les tests unitaires se sont pas limités au code des applications, des tests peuvent également être effectués sur les données et les schémas des bases de données.
Conférence donnée lors du meetup PostgreSQL le 22 juin 2016 à Nantes
What do zen practice and Oracle SQL optimization have in common? You’d be surprised! This presentation demonstrates how the zen principles of simplicity, focus, and practice can be applied to your technical skills to make you a calm and fearless SQL optimizer. You will be “enlightened” as to how to find ease with your day-to-day SQL tuning activities.
(Almost) Serverless Analytics System with BigQuery & AppEngineGabriel PREDA
The story of a gradual moved to a(n almost) serverless analytics system and an how to start with BigQuery. A way to create a serverless analytics system in Google Cloud. Live queries on 'huge datasets' were be performed.
Unified Data Platform, by Pauline Yeung of Cisco SystemsAltinity Ltd
Presented on December ClickHouse Meetup. Dec 3, 2019
Our journey from using ClickHouse in an internal threat library web application, to experimenting with ClickHouse to migrating production data from Elasticsearch, Postgres, HBase, to trying ClickHouse for error metrics in a product under development.
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping ToolkitDenis Voituron
La majorité des applications actuelles ont besoin d’enregistrer des informations dans une base de données locale ou serveur. Plusieurs outils existent dont Entity Framework, le plus fréquemment proposés par Microsoft, ou ADO.NET, le plus performant mais le plus complexe à exploiter. Depuis plusieurs années, nous avons construit un ensemble d’outils simples afin de nous aider dans la fabrication de la DAL de nos projets, et plus particulièrement dans la recherche de données en les transformant facilement en objets .NET.
Lors de cette session, nous expliquerons l’historique de ce toolkit en le comparant à quelques outils existants sur le marché, dont ADO.NET, Entity Framework ou Dapper.NET.
Ensuite, via des démos Live, je présenterai les fonctionnalités principales de SqlDatabaseCommand pour réaliser et optimiser les opérations courantes d’accès aux bases de données : récupérations de données typées, gestion des transactions, intégration de traces, gestion des exceptions, génération automatique de classe et l’injection de données pour les tests unitaires. Ces démos seront l’occasion de parler des bonnes pratiques d’accès aux bases de données de type SQL (SQL Server, SQLite, SQL Azure, etc).
Finalement, je montrerai comment utiliser ce toolkit dans des procédures CLR, intégrées à SQL Server. Ces procédures accroissent de manière phénoménale les performances de gestion des données.
Slides from the APEXConnect 2018 conference in Dusseldorf.
APEX is amazing and most SQL is taken care of automatically. But by delving a little deeper into more advanced SQL facilities, we can get performance benefits and write a lot less middle-tier code. This session highlights some SQL techniques to solve problems that would otherwise require a lot of complex coding. Learn how to become a more productive developer by expanding your knowledge of the SQL language.
Les tests unitaires se sont pas limités au code des applications, des tests peuvent également être effectués sur les données et les schémas des bases de données.
Conférence donnée lors du meetup PostgreSQL le 22 juin 2016 à Nantes
What do zen practice and Oracle SQL optimization have in common? You’d be surprised! This presentation demonstrates how the zen principles of simplicity, focus, and practice can be applied to your technical skills to make you a calm and fearless SQL optimizer. You will be “enlightened” as to how to find ease with your day-to-day SQL tuning activities.
(Almost) Serverless Analytics System with BigQuery & AppEngineGabriel PREDA
The story of a gradual moved to a(n almost) serverless analytics system and an how to start with BigQuery. A way to create a serverless analytics system in Google Cloud. Live queries on 'huge datasets' were be performed.
Unified Data Platform, by Pauline Yeung of Cisco SystemsAltinity Ltd
Presented on December ClickHouse Meetup. Dec 3, 2019
Our journey from using ClickHouse in an internal threat library web application, to experimenting with ClickHouse to migrating production data from Elasticsearch, Postgres, HBase, to trying ClickHouse for error metrics in a product under development.
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping ToolkitDenis Voituron
La majorité des applications actuelles ont besoin d’enregistrer des informations dans une base de données locale ou serveur. Plusieurs outils existent dont Entity Framework, le plus fréquemment proposés par Microsoft, ou ADO.NET, le plus performant mais le plus complexe à exploiter. Depuis plusieurs années, nous avons construit un ensemble d’outils simples afin de nous aider dans la fabrication de la DAL de nos projets, et plus particulièrement dans la recherche de données en les transformant facilement en objets .NET.
Lors de cette session, nous expliquerons l’historique de ce toolkit en le comparant à quelques outils existants sur le marché, dont ADO.NET, Entity Framework ou Dapper.NET.
Ensuite, via des démos Live, je présenterai les fonctionnalités principales de SqlDatabaseCommand pour réaliser et optimiser les opérations courantes d’accès aux bases de données : récupérations de données typées, gestion des transactions, intégration de traces, gestion des exceptions, génération automatique de classe et l’injection de données pour les tests unitaires. Ces démos seront l’occasion de parler des bonnes pratiques d’accès aux bases de données de type SQL (SQL Server, SQLite, SQL Azure, etc).
Finalement, je montrerai comment utiliser ce toolkit dans des procédures CLR, intégrées à SQL Server. Ces procédures accroissent de manière phénoménale les performances de gestion des données.
Slides from the APEXConnect 2018 conference in Dusseldorf.
APEX is amazing and most SQL is taken care of automatically. But by delving a little deeper into more advanced SQL facilities, we can get performance benefits and write a lot less middle-tier code. This session highlights some SQL techniques to solve problems that would otherwise require a lot of complex coding. Learn how to become a more productive developer by expanding your knowledge of the SQL language.
Does Your IBM i Security Meet the Bar for GDPR?Precisely
While the European Union’s General Data Protection Regulation (GDPR) took effect May 25, many global organizations still feel the stress of achieving compliance. Could your organization pass an audit and avoid fines today?
If you are concerned about GDPR compliance, or compliance with other security regulations, view this webinar with IBM Systems Magazine where we provide a practical guide to setting up a more secure, auditable IBM i configuration. You will learn about base IBM i functions, Do-It-Yourself tips, and how software solutions can help you accelerate and maintain compliance.
This webcast and all related materials are provided for informational purposes only, and are not intended to provide, and should not be relied on for, legal advice pertaining to the subject matter. If you have specific questions on how this may affect your organization you should consult your legal advisor.
This webinar presentation from July 2017 talks about the challenges that network operators and IT folks face after the network is configured. How do you handle changes after the initial configuration? What about rolling in new racks or DCs? Learn how DevOps can help with validation, troubleshooting, and life cycle management. Full recording of webinar can be accessed at http://go.cumulusnetworks.com/l/32472/2017-05-04/91sy7b
This webinar will give an overview of CREATE STATISTICS in PostgreSQL. This command allows the database to collect multi-column statistics, helping the optimizer understand dependencies between columns, produce more accurate estimates, and better query plans.
The following key topics will be covered during the webinar:
- Why CREATE STATISTICS may be needed at all
- How the command works
- Which cases CREATE STATISTICS already addresses
- What improvements are in the queue for future PostgreSQL versions (either already committed to PostgreSQL 13 or beyond)
Spark SQL Catalyst Code Optimization using Function Outlining with Kavana Bha...Databricks
Spark SQL Catalyst optimizer, post query plan optimization, compiles the SQL query to Java code. Without code generation, such query expressions would have to be interpreted for each row of data, by walking down a tree of nodes. This introduces large amounts of branches and virtual function calls that slow down execution. With code generation, a query is collapsed into a single optimized function that eliminates multiple function calls and leverages CPU registers for intermediate data.
This code is then compiled in runtime to Java bytecode using Janino compiler. This presentation focuses on further catalyst code generation optimizations possible using function outlining. Automatic code generation tools generally tend to generate huge optimized functions. Large functions that are frequently executed might degrade runtime performance by preventing JVM optimizations such as function inlining. To avoid this, code generation tools should try to contain independent logic into separate functions.
This presentation will take the audience through the Spark Catalyst Code generation, how automatic split of large functions into smaller functions was achieved and the performance benefits associated with it
Nyc open data project ii -- predict where to get and return my citibikeVivian S. Zhang
NYC Data Science Academy, NYC Open Data Meetup, Big Data, Data Science, NYC, Vivian Zhang, SupStat Inc,NYC, GBM, Machine learning, Time Series, Citibike usage prodiction, advanced R
C* for Deep Learning (Andrew Jefferson, Tracktable) | Cassandra Summit 2016DataStax
A deep learning startup has a requirement for a robust and scalable data architecture. Training a Deep Neural Network requires 10s-100s of millions of examples consisting of data and metadata. In addition to training it is necessary to support test/validation, data exploration and more traditional data science analytics workloads. As a startup we have minimal resources and an engineering team of 1.
Cassandra, Spark and Kafka running on Mesos in AWS is a scalable architecture that is fast and easy to set up and maintain to deliver a data architecture for Deep Learning.
About the Speaker
Andrew Jefferson VP Engineering, Tractable
A software engineer specialising in realtime data systems. I've worked at companies from Startups to Apple on applications ranging from Ticketing to Genetics. Currently building data systems for training and exploiting Deep Neural Networks.
Got data? Let's make it searchable! This interactive presentation will demonstrate getting documents into Solr quickly, provide some tips in adjusting Solr's schema to match your needs better, and finally showcase your data in a flexible search user interface. We'll see how to rapidly leverage faceting, highlighting, spell checking, and debugging. Even after all that, there will be enough time left to outline the next steps in developing your search application and taking it to production.
In a world where users have ever higher expectations from the apps they use, having data always available, even when the device is offline has become increasingly important.
In this talk we will go through different ways of saving data on the phone and introduce Realm as a replacement for SQLite and ORM's.
Through an example app it will be demonstrated that thinking "Offline first" not only affects your apps architecture for the better, but also results in happier users.
L'environnement est au cœur des préoccupations. Comment peut-on agir positivement sur la consommation d'énergie générées par nos développement lorsque l'on est développeur ou architecte? Quels sont les outils à notre disposition, les bonnes pratiques et les pièges à éviter? Comment mesurer notre impact? L'objectif de cette session est de vous permettre de prendre conscience qu'il est possible d'agir réellement sur l'impact de notre activité au quotidien, en prenant connaissance d'outils et de services dont vous disposez déjà! Si en sortant de cette session vous intégrez certains de ces réflexe au quotidien, vous aurez déjà gagné en plus d'avoir passé un bon moment :-)
Visual Studio aura bientôt 25 ans d’existence. Cet éditeur a accumulé un ensemble de fonctionnalités impressionnantes. Lors de cette session, vous apprendrez comment mieux l’utiliser : les extensions indispensables, trucs et astuces du débogage, points d'arrêt conditionnels, raccourcis clavier, refactorisation du code, Intellisense, live Unit Tests, Code Cleanup, …
Et nous verrons les principales nouveautés de la version 2022.
Blazor is a WebAssembly (Wasm) technology.
A WebAssembly is a safe, portable, low-level code format designed for efficient execution and compact representation.
These slides are used in my DevDay.be 2018 presentation.
Présentation de Microsoft Visual Studio Team Service (VSTS / TFS) : création d'un projet, ajout de code .NET; création de tâches via Excel et compilation du projet.
Lors de cette présentation, nous apprendrons à créer des applications Web plus rapidement et avec moins d'erreurs en utilisant un langage de programmation puissant et amusant.
Agenda
- Installer TypeScript et configurer un nouveau projet.
- Tirer avantage des types de données.
- Développer en Objets avec TypeScript
- Ecrire de meilleures fonctions
- Retrouver vos données avec LINQ
- Programmer de manière asynchrone
- Bonnes pratiques
- Avantages et inconvénients des projets TypeScript
- Conclusion et Discussion
L’écosystème Microsoft est en pleine transformation !
Vous souhaitez démarrer ou renforcer vos projets .NET ?
Nous vous montrerons le chemin qui vous mènera vers la réussite logicielle !
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
Depuis toujours nous souhaitons développer au mieux des procédures stockées dans SQL Server, afin de clarifier ou d’optimiser nos développements.
Depuis 2005, les procédures stockées et les triggers peuvent être développés en .NET, grâce à votre langage favoris : C#, VB.NET, etc. Nous pouvons ainsi tirer parti de toute la puissance de ce Framework : fonctions mathématiques, cryptages, gestion de chaine de caractères, manipulation des dates, etc.
Lors de cette session, nous expliquerons comment créer des procédures, des triggers et des fonctions d’agrégations dans ce mode CLR. Nous passerons en revue les trucs et astuces utiles pour optimiser nos requêtes. Nous verrons quels sont les avantages de concevoir des procédures SQL en .NET ; mais également quels en sont les inconvénients. Finalement, nous verrons comment déployer facilement les bibliothèques .NET créées, dans SQL Server : quels outils utiliser.
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineDenis Voituron
Retour d’expériences TFS Online dans une solution industrielle
La méthodologie Agile peut être appliquée à des projets de taille modeste, mais également à des projets industriels important. Lors de cette session, nous vous présenterons un projet d’industrialisation développé pendant près de 2 ans en méthodologie Agile et en technologies Web (Single Page Application), grâce à Visual Studio Team Services Online (TFS Online). Nous passerons en vue les moyens mis en œuvre et les solutions logicielles collaboratives utilisées. Nous analyserons les problèmes rencontrés, ainsi que les solutions appliquées pour les contourner, et nous reprendrons les 4 points forts appliqués.
Suite à cette session, vous serez conscient de l’organisation nécessaire pour concevoir une solution industrielle utilisée en permanence (24/7) par des milliers d’utilisateurs. Vous disposerez d’une méthodologie Agile exploitable et déjà éprouvée, y compris l’ensemble des solutions logicielles et techniques permettant d’échafauder une application basée sur la qualité des déploiements continus et sur la maintenance évolutive.
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
Les projets Agiles imposent leurs propres défis aux équipes de test. Un projet Agile est souvent basé sur de multiples itérations, exploite un périmètre de développement incertain, travaille avec une documentation minimaliste. Rapidement, les Tests Unitaires se font sentir pour garantir des évolutions logicielles en douceur.
Lors de cette session, nous présenterons les concepts de base des tests unitaires, quelles en sont les implications et quels sont les sujets applicatifs à tester. Dans la seconde partie de cette session, nous présenterons, par des démonstrations en direct dans Microsoft Visual Studio, les 5 bonnes pratiques des Tests Unitaires intégrés dans un cycle de vie Agile.
Exemples sur https://github.com/dvoituron/SampleUnitTests
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiqueDenis Voituron
Le Model View ViewModel (MVVM) est une architecture et une méthode de conception utilisée dans le génie logiciel. Apparu en 2004, MVVM est adapté pour le développement des applications basées sur les technologies Windows (desktop, tablette ou mobile), mais également Web/HTML5. Cette méthode permet de séparer la vue de la logique et de l'accès aux données en accentuant les principes de binding et d’événement. Une bonne vue générale a été donnée par Laurent Bugnion, le père du MVVMLight, dans le podcast #11 de DevApps (http://devapps.be/podcast/11).
http://www.meetup.com/fr-FR/micbelgique/events/228368909/?eventId=228368909
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Développer avec un Simple Object Mapping Toolkit pour SQL Server
1. Simple Object Mapping
pour SQL Databases
Développer simplement et rapidement
dvoituron@outlook.com
www.dvoituron.com
@DenisVoituron
2. 2
A propos…
Denis Voituron
1995 – Ingénieur Civil
1999 – Co-fondateur d’une société spécialisée dans les CMS
2007 – Microsoft Senior Architect chez Trasys / NRB
2
@DenisVoituron
dvoituron.com
.be
6. SCOTT Database
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7839 KING PRESIDENT 17-NOV-81 5000 10
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7756 CLARK MANAGER 7839 09-JUN-81 1500 10
... ...
... ...
7456 JONES MANAGER 7839 02-APR-81 2975 20
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIOS BOSTON
7. 7
ADO.NET
7
using (var connection = new SqlConnection(CONNECTION_STRING))
{
connection.Open();
connection.Close();
}
SELECT ENAME FROM EMP WHERE EMPNO = 7369
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "SELECT ENAME " +
" FROM EMP " +
" WHERE EMPNO = 7369 ";
}
using (var adapter = new SqlDataAdapter(cmd))
{
DataTable table = new DataTable();
adapter.Fill(table);
string name = table.Rows[0].Field<string>("ENAME");
}
8. 8
Entity Framework
8
Object Relational Mapping
var db = new SCOTTEntities();
var query = from e in db.EMPs
where e.EMPNO == 7369
select e;
var name = query.First().DEPT.DNAME;
SELECT TOP (1)
[Extent1].[EMPNO] AS [EMPNO],
[Extent1].[ENAME] AS [ENAME],
[Extent1].[JOB] AS [JOB],
[Extent1].[MGR] AS [MGR],
[Extent1].[HIREDATE] AS [HIREDATE],
[Extent1].[SAL] AS [SAL],
[Extent1].[COMM] AS [COMM],
[Extent1].[DEPTNO] AS [DEPTNO]
FROM [dbo].[EMP] AS [Extent1]
WHERE 7369 = [Extent1].[EMPNO]
SELECT
[Extent1].[DEPTNO] AS [DEPTNO],
[Extent1].[DNAME] AS [DNAME],
[Extent1].[LOC] AS [LOC]
FROM [dbo].[DEPT] AS [Extent1]
WHERE [Extent1].[DEPTNO] = @V1
9. 9
ADO.NET vs Entity Framework
9
Performance
Speed of Development
Maintainable code (neat)
Flexibility
Scalability
http://stackoverflow.com/questions/2698151/entity-framework-vs-linq-to-sql-vs-ado-net-with-stored-procedures
12. 12
Dapper.NET
Bibliothèque qui étend IDbConnection.
Besoin d’une connexion déjà ouverte.
using (var connection = new SqlConnection(CONNECTION_STRING))
{
connection.Open();
string sql = "SELECT * FROM EMP WHERE EMPNO = @Id";
var emp = connection.Query<EMP>(sql, new { Id = 7369 });
}
13. 13
Query
Query Dynamic
ExecuteScalar
Execute
Buffered
Dapper.NET
string sql = "SELECT * FROM EMP WHERE EMPNO = @Id";
var emp = connection.Query<EMP>(sql, new { Id = 7369 });
string sql = "SELECT * FROM EMP WHERE EMPNO = @Id";
var emp = connection.Query(sql, new { Id = 7369 });
string sql = "SELECT ENAME FROM EMP WHERE EMPNO = @Id";
var emp = connection.ExecuteScalar<string>(sql, new { Id = 7369 });
var n = connection.Execute(“DELETE FROM EMP");
var emp = connection.Query(sql, buffered: false);
14. 14
SqlDatabaseCommand
Objets and Commandes
Construction et destruction propres
Optimisation des paramètres (éviter l’injection SQL) et SQL
Conversion automatique d’objets C#
Génération des entités C#
Gestion des logs et traces
Méthodes d’extension de System.Data
Transformation des propriétés C# en paramètres SQL
DBNull
...
15. 15
SqlDatabaseCommand
Exemple
using (var cmd = new SqlDatabaseCommand(CONNECTION_STRING))
{
}
cmd.CommandText.AppendLine(" SELECT * ");
cmd.CommandText.AppendLine(" FROM EMP ");
var emps = cmd.ExecuteTable<Employee>();
cmd.CommandText.AppendLine(" WHERE HIREDATE = @HireDate ");
cmd.Parameters.AddValues(new
{
HireDate = new DateTime(1980, 12, 17)
});
16. 16
9876 NEW
SqlDatabaseCommand EMPNO ENAME
7839 KING
7698 BLAKE
7756 CLARK
...
...
7456 JONES
var emps = cmd.ExecuteTable<Employee>();
• ExecuteTable
var smith = cmd.ExecuteRow<Employee>();
• ExecuteRow
var name = cmd.ExecuteScalar<String>();
• ExecuteScalar
var n = cmd.ExecuteNonQuery();
• ExecuteQuery
17. 17
SqlDatabaseCommand
Paramètres
cmd.CommandText.AppendLine(" SELECT ENAME ")
.AppendLine(" FROM EMP ")
.AppendLine(" WHERE EMPNO = @EmpNo ")
.AppendLine(" AND HIREDATE = @HireDate ");
cmd.Parameters.AddWithValue("@EmpNo", 7369);
cmd.Parameters.AddWithValue("@HireDate", new DateTime(1980, 12, 17));
var name = cmd.ExecuteScalar();
cmd.CommandText.AppendLine(" SELECT ENAME ")
.AppendLine(" FROM EMP ")
.AppendLine(" WHERE EMPNO = @EmpNo ")
.AppendLine(" AND HIREDATE = @HireDate ");
cmd.Parameters.AddValues(new
{
EmpNo = 7369,
HireDate = new DateTime(1980, 12, 17)
});
var name = cmd.ExecuteScalar();
18. 18
SqlDatabaseCommand
Traces
Logging
Query Formatter
cmd.Log = Console.WriteLine;
cmd.Log = (message) =>
{
Console.WriteLine(message);
};
string formatted = cmd.GetCommandTextFormatted(QueryFormat.Text);
SELECT ENAME
FROM EMP
WHERE EMPNO = 7369
AND HIREDATE = '1970-05-04 14:15:16'
string formatted = cmd.GetCommandTextFormatted(QueryFormat.Html);
SELECT ENAME
FROM EMP
WHERE EMPNO = 7369
AND HIREDATE = '1970-05-04 14:15:16'
19. 19
SqlDatabaseCommand
Générateur d’entités // *********************************************
// Code Generated with Apps72.Dev.Data.Generator
// *********************************************
using System;
namespace Data.Tests.Entities
{
/// <summary />
public partial class BONUS
{
/// <summary />
public virtual String ENAME { get; set; }
/// <summary />
public virtual String JOB { get; set; }
/// <summary />
public virtual Int32? SAL { get; set; }
/// <summary />
public virtual Int32? COMM { get; set; }
}
/// <summary />
public partial class DEPT
{
/// <summary />
public virtual Int32 DEPTNO { get; set; }
/// <summary />
public virtual String DNAME { get; set; }
/// <summary />
public virtual String LOC { get; set; }
}
var entitiesGenerator = new SqlEntitiesGenerator(CONNECTION_STRING);
foreach (var table in entitiesGenerator.Tables)
{
...
}
20. 20
SqlDatabaseCommand
Bonnes pratiques
public class DataService : IDataService
{
public SqlDatabaseCommand GetDatabaseCommand()
{
return new SqlDatabaseCommand(CONNECTION_STRING);
}
public SqlDatabaseCommand GetDatabaseCommand(SqlTransaction trans)
{
return new SqlDatabaseCommand(trans.Connection, trans);
}
} using (var cmd = service.GetDatabaseCommand())
{
...
}
22. 22
CLR Stored Procedures
Quoi ?
Vous pouvez écrire des procédures stockées, des déclencheurs, des types, des fonctions,
des agrégats et des fonctions d’accès aux tables, à l'aide du langage .NET Framework
Pourquoi ?
Performances
Outils de développement (VS, GIT, …)
Centralisation du code
Déploiement
27. Merci de votre participation
dvoituron@outlook.com
www.dvoituron.com
@DenisVoituron
Editor's Notes
NRB :
Domaine de la santé, des finances, domaine public (gouvernement, ...), secteur industriel, marché mobiles, etc.
2000 collaborateurs
300 millions euros de chiffre d’affaire
Créer un projet Console.
Créer une chaine de CONNECTION_STRING = @"Server=(localdb)\ProjectsV12;Database=Scott;Integrated Security=true;“
Copier le code et l’executer.
Ouvrir SQL Server Profiler et choisir le modèle TSQL... et verifier la requête SQL qui y passe.Choisir uniquement RPC:Starting et SQL:BatchStarting dans le Profiler.
Ajouter une classe ADO.NET Entity Data Model « ScottEF »
Sélectionner EF Designer from database.
Choisir une chaine de connexion existante ou en créer une nouvelle vers (localdb)\ProjectsV12 et Scott
Enregistrer la connection dans App.Config: ScottEntities
Eventuellement, choisir Entity Framework 6.x
Cocher EMP et DEPT et Pluralize object names
Enregistrer le modèle sous ScottModel
Performance : EF est médiocre, comparé aux requêtes SQL, surtout sur de grand volumes de données.
Vitesse de développement : ADO trop long à écrireEF est trop complexe à comprendre et maitriser le framework.
Maintenabilité du code (code propre) : ADO est trop bas niveau et est trop complexe à écrire.EF demande le développement de procédures stockées, ce qui complexifies les débuggages.
FlexibilitéADO permet de construire les exactes requêtes SQL nécessaires.Pour EF, il n'est pas toujours évident de savoir ce qu'il se passe en coulisses, quelles requêtes sont effectivement exécutées sur la base de données, quelles données sont conservées en cache, dans quels cas le chargement tardif (lazy loading) s'applique, etc. Quand un bug lié à l'ORM se produit, il est parfois difficile de trouver son origine ;
EvolutivitéPour ADO, les changements dans le code peuvent être nombreux.Pour EF, les évolutions dans le framework et les outils associés sont fréquents et très difficiles à maintenir dans le temps.
1. Créer un nouveau projet Console.
2. Ajouter le Nuget Dapper.
3. Créer une simple requête et l’exécuter.
public class EMP
{
public Int32 EMPNO { get; set; }
public String ENAME { get; set; }
public String JOB { get; set; }
public Int32? MGR { get; set; }
public DateTime? HIREDATE { get; set; }
public Decimal? SAL { get; set; }
public Int32? COMM { get; set; }
public Int32? DEPTNO { get; set; }
}
Ajouter un nouveau fichier Text template.
Rechercher le fichier Entities.tt sur le site https://github.com/Apps72/Dev.Data
Copier / coller son contenu dans le fichier Entities.tt du point 1.
Vérifier que les propriétés du .tt sont Build Action = Content Custom Tool = TextTemplatingFileGenerator
Enregistrer le fichier.
Créer la classe DataService
Créer un exemple d’utilisation
static DataService service = new DataService();
public static void DisplaySmith()
{
Console.WriteLine();
Console.WriteLine("Best Practice");
using (var cmd = service.GetDatabaseCommand())
{
cmd.CommandText.AppendLine(" SELECT ENAME, DNAME ");
cmd.CommandText.AppendLine(" FROM EMP ");
cmd.CommandText.AppendLine(" INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO ");
cmd.CommandText.AppendLine(" WHERE EMPNO = @ID ");
cmd.Parameters.AddValues(new { ID = 7369 });
var emp = cmd.ExecuteRow(new { EName = "", DName = "" });
Console.WriteLine($"{emp.EName} - {emp.DName}");
}
}
3. Modifier le DataService pour gérer les traces et les erreurs.
public SqlDatabaseCommand GetDatabaseCommand()
{
var cmd = new SqlDatabaseCommand(CONNECTION_STRING);
cmd.Log = (message) =>
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(message);
Console.ResetColor();
};
cmd.ExceptionOccured += (sender, e) =>
{
Console.WriteLine($"SQL ERROR: {e.Exception.Message}");
};
return cmd;
}
Créer une librairie C# en version 4.0
Ajouter le package Nuger SqlServerClr