- Platform Events allow for decoupled and asynchronous communication between systems using a common event bus. This solves issues with tightly coupled and complex system integrations that rely on direct calls between systems.
- Platform Events uses a messaging bus architecture to publish and subscribe to events using REST/CometD/JSON. This enables many-to-many and event-driven integrations both within and outside of Salesforce.
- Platform Events provides a unified interface, common event metadata, and guarantees event ordering and replay capabilities for a limited period of time. This makes it possible to easily integrate systems and trigger processes based on published events.
The document discusses LINE Login and the LINE Developer Community (#LINEDC). It explains that LINE Login allows easier login through LINE accounts. It uses OAuth2 and OpenID Connect protocols. The LINE Developer Community is a community for engineers and creators building on the LINE Platform. It has over 4,000 members and shares information about events and the latest updates.
Deadly Code! (seriously) Blocking & Hyper Context Switching Patternchibochibo
ScalaMatsuri 2017
In Scala, it’s relatively simple to write asynchronous processing, but you might overlook the bigger picture happening on the frameworks (such as Play and Slick).In this session, I will illustrate seemingly elegant code that turns out to bring about total destruction.
- Platform Events allow for decoupled and asynchronous communication between systems using a common event bus. This solves issues with tightly coupled and complex system integrations that rely on direct calls between systems.
- Platform Events uses a messaging bus architecture to publish and subscribe to events using REST/CometD/JSON. This enables many-to-many and event-driven integrations both within and outside of Salesforce.
- Platform Events provides a unified interface, common event metadata, and guarantees event ordering and replay capabilities for a limited period of time. This makes it possible to easily integrate systems and trigger processes based on published events.
The document discusses LINE Login and the LINE Developer Community (#LINEDC). It explains that LINE Login allows easier login through LINE accounts. It uses OAuth2 and OpenID Connect protocols. The LINE Developer Community is a community for engineers and creators building on the LINE Platform. It has over 4,000 members and shares information about events and the latest updates.
Deadly Code! (seriously) Blocking & Hyper Context Switching Patternchibochibo
ScalaMatsuri 2017
In Scala, it’s relatively simple to write asynchronous processing, but you might overlook the bigger picture happening on the frameworks (such as Play and Slick).In this session, I will illustrate seemingly elegant code that turns out to bring about total destruction.
1. The document discusses RESTful APIs and gRPC, comparing their characteristics and use cases.
2. RESTful APIs typically use HTTP and JSON to access resources via URLs while gRPC uses protocol buffers and HTTP/2 for efficient streaming and RPC.
3. gRPC is better suited for microservices and mobile apps due to its ability to handle streaming and performance, while REST is more widely used due to its simplicity and support in most languages.
This document provides an overview of basic SQL concepts including:
- The differences between DBMS and RDBMS and examples of each.
- SQL and its use for managing relational databases.
- Key concepts like primary keys, foreign keys, and constraints.
- SQL statements for data definition, manipulation, and control.
- Data types commonly used in SQL.
- Basic syntax for common SQL statements like CREATE TABLE, INSERT, SELECT, and WHERE.
This document discusses database programming techniques and JDBC (Java Database Connectivity). It covers four main database programming approaches: embedded SQL, library function calls like JDBC, and stored procedures. The bulk of the document focuses on using JDBC to connect to a database from Java code, including connecting, executing queries, processing result sets, and closing connections. It provides examples of querying a database and retrieving results into Java variables.
JJUC-CCC - Japan Java Users Group Cross Communiy Conference - 2016 Spring 講演資料。
テスト、書いてますか?はい、我々は書いていませんでした。しかし今は違います。将棋の駒を動かすかのように一手ずつテストを書き進めるための戦術と戦略のようなものを、お話しできればと思います。このセッションは同じチームの同僚による昨年秋のセッション「JJUG-CCC 2015 Fall CD-2 Java8移行から始めた技術的負債との戦い」の続編のようなものです。
The document describes the Jena framework, which is a Java API for building semantic web and linked data applications. It allows for parsing, creating, querying and inferencing over RDF data. The key classes and interfaces in Jena include the Model interface for representing RDF graphs, classes for creating resources, properties and literals, interfaces for representing statements and querying models. Jena supports reading/writing RDF files, working with ontologies and rules, and includes a SPARQL query engine.
This document provides an overview of PL/SQL (Embedded SQL) including its basic constructs such as anonymous blocks, procedures, functions, packages, triggers, and cursors. It discusses the benefits of PL/SQL in combining the power of SQL with programming constructs like loops and conditional statements. Examples are provided for each construct to demonstrate their usage.
The document discusses the DBMS_METADATA package in Oracle, which provides a centralized way to extract, manipulate, and resubmit metadata. It allows fetching an object's metadata as XML, transforming the XML, and resubmitting it to recreate the object. The package includes subprograms for opening a metadata extraction, setting filters, fetching metadata in various formats, and closing the extraction. It also discusses browsing APIs and examples of using filters and transforms.
Why Outsourcing Graphic Design Projects is the Next Big Thing?Rahul Aggarwal
Design Studios, Brand Consultants, Ad Agencies, Printing Firms, Digital Marketers etc. can grow their businesses manyfold by outsourcing their graphic design projects to Designhill, one of the world's largest graphic design marketplace. With over 25,000+ professional designers, Designhill provides a secure, risk-free and affordable solution for such business to source high quality designs.
This presentation outlines the various difficulties, frustrations and challenges faced by creative agencies and highlights how Designhill can help overcome them.
Here are some common sources of primary and secondary data:
Primary data sources:
- Surveys (questionnaires, interviews)
- Experiments
- Observations
- Focus groups
Secondary data sources:
- Government data (census data, vital statistics)
- Published research studies
- Organizational records and documents
- Media reports
- Commercial data providers
El Barroco fue un período de la historia de la arquitectura entre los años 1600 y 1780 que siguió al Renacimiento y al Manierismo. Se originó en Roma a partir de las formas renacentistas pero luego se diversificó en varios estilos paralelos. Algunas características arquitectónicas del Barroco incluyen sensación de movimiento en las formas, uso de torres, cúpulas y ventanas abundantes, y columnas a veces solo decorativas. Obras importantes fueron la Iglesia del Gesù en Roma y la
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
This document provides an overview of designing complex applications using HTML5 and KnockoutJS. It discusses HTML5 and why it is useful, introduces JavaScript and frameworks like KnockoutJS and SammyJS that help manage complexity. It also summarizes several JavaScript libraries and patterns including the module pattern, revealing module pattern, and MV* patterns. Specific libraries and frameworks discussed include RequireJS, AmplifyJS, UnderscoreJS, and LINQ.js. The document concludes with a brief mention of server-side tools like ScriptSharp.
In this meetup Eyal Vardi will talk about Angular 2.0 architecture. The session will focus on the main parts of Angular 2.0:
Application Bootstrap
Angular Compiler
Hierarchical Injector
Component Lifecycle Hooks
Change Detector
Renderer
Dynamic component creation
Each part will be explained and analyzed. In some cases we will dive into Angular 2.0 source code. Our purpose is to list the Do's & Don’ts of Angular.
The session is mostly targeted for developers which already have some experience with Angular 2.0.
Node.js is a JavaScript runtime built on Chrome's V8 engine that makes building network and server-side applications quick and easy. It is commonly used with AngularJS (Angular) for the front-end to create full-stack JavaScript (MEAN stack) applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Common uses of Node.js include building real-time applications, working with files and streams, and using modules to reuse and share code. MongoDB is often used as the database for MEAN stack applications and Mongoose provides an ORM for interacting with MongoDB from Node.js applications. Angular is a front-end web application framework that
Web automation with #d8rules (European Drupal Days 2015)Eugenio Minardi
This document contains information about a Rules presentation at DrupalDaysEU, including:
- Details about the Rules module and how it enables flexible workflows in Drupal 8.
- An overview of the goals of the #d8rules campaign to ensure Rules is ready for Drupal 8 and to make Drupal contributions more sustainable.
- A brief status update on the development of Rules for Drupal 8, including milestones for core API fundamentals, completion, and release.
- An invitation for developers to sprint with the Rules team and contribute to porting actions, conditions and other components to Drupal 8.
The document discusses Dojo Web Builder, a tool that allows users to easily build Dojo applications in the cloud without needing to install build tools locally. It provides a simple interface where users can select Dojo packages and modules to include, customize build settings, and receive an optimized built file. The tool is hosted on Amazon EC2 and uses a REST API and asynchronous JavaScript builder to process builds. Statistics show it is gaining popularity with over 2,700 builds since launch. Future plans include full AMD support and a Dojo package repository.
Slides from a talk and live-coding session about Koin, a pragmatic and lightweight Dependency Injection framework for Kotlin. This talk was given at Auckland Android Community on Dec 5.
https://www.meetup.com/Android-Meetup/events/256734688/
This document discusses Go web development using the Gin web framework. It provides an overview of Gin's features and file structure conventions. It also describes using Orator ORM for database migrations in Go applications. Benchmark results show the json-iterator library provides better JSON performance than the standard encoding/json package in Go. The document concludes with recommendations for Nginx SSL and security header parameters.
Mobile App Development: Primi passi con NativeScript e Angular 2Filippo Matteo Riggio
This document provides an overview and tutorial of building mobile apps with NativeScript and Angular 2. It discusses choosing between native, hybrid, and cross-platform approaches. It then demonstrates setting up a NativeScript project with Angular and making HTTP requests to retrieve Pokemon data to display in a list. It shows implementing user interfaces with grids, lists, images and styles. It also covers adding interactivity, native dialogs, plugins, databases and accessing native APIs. The document provides a helpful introduction to building cross-platform mobile apps with NativeScript and Angular.
This document provides an introduction to jQuery, including:
- A brief overview of what jQuery is and its key facts
- Details on learning jQuery through websites, tutorials, and books
- Explanations of jQuery syntax, selectors, animations, common operations, and events
- Descriptions of related tools like jQuery UI, plugins, and browser developer tools
GDG Addis - An Introduction to Django and App EngineYared Ayalew
This document provides an overview of developing and deploying Django applications to Google App Engine. It begins with an introduction to Django and how to set up a Django development environment using virtualenv and pip. It then covers common Django components like models, views, templates, URLs and forms. It concludes with a brief discussion of deploying Django applications to App Engine. The key topics covered include setting up a virtual environment for Django development, the model-view-template architecture of Django, and using Django tools and components to build an application that can be deployed to App Engine.
Presented during Javascript MVC Amsterdam meetup, 29 Jan 2014: http://www.meetup.com/JavaScript-MVC-Meetup-Amsterdam/events/156767102/
At De Voorhoede (http://voorhoede.nl) I'm responsible for setting up new front-end projects in such a way that it's easy for teams to work with. This presentation explains how we structure these projects. The presentation includes some tips on structuring larger AngularJS projects.
This talk demonstrates how to develop single page apps with the new angular2 framework and TypeScript. We show the new concepts of angular2 not only in theory, but using a real application. To this end, we develop a real-time angular2 website, for users to to ask and upvote questions during a talk identified by a hash tag. The session chair can ask the most popular questions at the end of the talk.
Dieser Vortrag zeigt, wie man mit dem neuen Angular2 Framework und TypeScript schnelle Single Page Apps entwickelt. Die neuen Konzepte von Angular2 zeigen wir dabei nicht nur in der Theorie, sondern ganz praktisch. Dazu entwickeln wir live eine Real-Time Angular2 App, mit der Zuhörer während eines Vortrags – identifiziert durch einen Hash-Tag - Fragen stellen und gegenseitig upvoten können. Der Session Chair kann so am Ende eines Vortrags die bestbewertesten Fragen an den Speaker stellen.
Javascript and first-class citizenry: require.js & node.js
Javascript on web pages is ubiquitous and its problems are legendary. Javascript, seen as a second-class code citizen, is usually hacked together even by seasoned developers. New libraries (jQuery, prototype, backbone, knockout, underscore) and runtime tools (firebug, jasmine) look like they solve many problems - and they do. But they still leave poorly written code as just that. One key problem is that all javascript code lives globally and this results in poorly managed, tested and delivered code.
In this session, I will illustrate that we can treat javascript as a first-class citizen using with require.js and node.js: it can be modular, encapsulated and easily unit tested and added to continuous integration cycle. The dependencies between javascript modules can also be managed and packaged just like in C# and Java. In the end, we can resolve many javascript difficulties at compile time rather than waiting until runtime.
This document provides an overview and code samples for building an Angular application that manages personal finances. It covers key Angular concepts like modules, components, services, routing, and forms. The full code is available in a GitHub repository and organized into steps that cover setting up the basic layout, using Angular Material for styling, launching modals, building forms to add financial movements, saving data to localStorage, displaying movements and balances, filtering movements, adding charts with Highcharts, and internationalization with NgX-Translate.
In the recent Functional Thursday meetup, I gave this talk about SpiderMonkey: Mozilla's JavaScript engine used in Firefox. The content covers the architecture and some interesting internal implementations.
This document summarizes key aspects of building an application with Angular 2 including:
1) Components are the main classes used to build the application structure and interface. Components contain templates, styles, and class code.
2) Data binding allows templates to dynamically display data and accept user input. Structural directives like *ngIf and *ngFor control application flow.
3) Services provide reusable logic across components. Pipes transform values in templates. The router manages navigation between routes and components.
4) Directives extend HTML functionality. Model data can bind to directives bidirectionally to synchronize state.
OSGi provides a module system for Java applications by treating JAR files as bundles with additional metadata specifying things like name, version, dependencies, and exports/imports. This allows for greater modularity by resolving dependencies and supporting side-by-side versions. Components in OSGi are bundles that can be dynamically installed, updated, and uninstalled. Annotations and services allow bundles to be configured and discover other bundles at runtime.
Tour of Apache PredictionIO in 10 Minuteschibochibo
The document provides an overview of the Apache PredictionIO framework for building machine learning applications. It describes PredictionIO as an open source machine learning framework for building end-to-end machine learning platforms. It outlines the basic process for using PredictionIO, which involves cloning a template, collecting training data, building, training and deploying a predictive model, and making queries to the model. It also briefly describes the train and predict algorithms and notes that community support is available via email and the PredictionIO website.
Is spark streaming based on reactive streams?chibochibo
What is Reactive Streams? What if a subscriber was very slow in asynchronous stream processing? In this talk we will briefly introduce you to the basics of Reactive Streams and the importance of back-pressure and then explain the architecture (implementations) of Spark Streaming back-pressure.
Since 2.10.0 Scala includes macros. I was talk about something like the following:
* What do macros benefit to us?
* What can we do with macros?
* Actual use cases
Why Psychological Safety Matters for Software Teams - ACE 2024 - Ben Linders.pdfBen Linders
Psychological safety in teams is important; team members must feel safe and able to communicate and collaborate effectively to deliver value. It’s also necessary to build long-lasting teams since things will happen and relationships will be strained.
But, how safe is a team? How can we determine if there are any factors that make the team unsafe or have an impact on the team’s culture?
In this mini-workshop, we’ll play games for psychological safety and team culture utilizing a deck of coaching cards, The Psychological Safety Cards. We will learn how to use gamification to gain a better understanding of what’s going on in teams. Individuals share what they have learned from working in teams, what has impacted the team’s safety and culture, and what has led to positive change.
Different game formats will be played in groups in parallel. Examples are an ice-breaker to get people talking about psychological safety, a constellation where people take positions about aspects of psychological safety in their team or organization, and collaborative card games where people work together to create an environment that fosters psychological safety.
This presentation by OECD, OECD Secretariat, was made during the discussion “The Intersection between Competition and Data Privacy” held at the 143rd meeting of the OECD Competition Committee on 13 June 2024. More papers and presentations on the topic can be found at oe.cd/ibcdp.
This presentation was uploaded with the author’s consent.
This presentation by Professor Giuseppe Colangelo, Jean Monnet Professor of European Innovation Policy, was made during the discussion “The Intersection between Competition and Data Privacy” held at the 143rd meeting of the OECD Competition Committee on 13 June 2024. More papers and presentations on the topic can be found at oe.cd/ibcdp.
This presentation was uploaded with the author’s consent.
Gamify it until you make it Improving Agile Development and Operations with ...Ben Linders
So many challenges, so little time. While we’re busy developing software and keeping it operational, we also need to sharpen the saw, but how? Gamification can be a way to look at how you’re doing and find out where to improve. It’s a great way to have everyone involved and get the best out of people.
In this presentation, Ben Linders will show how playing games with the DevOps coaching cards can help to explore your current development and deployment (DevOps) practices and decide as a team what to improve or experiment with.
The games that we play are based on an engagement model. Instead of imposing change, the games enable people to pull in ideas for change and apply those in a way that best suits their collective needs.
By playing games, you can learn from each other. Teams can use games, exercises, and coaching cards to discuss values, principles, and practices, and share their experiences and learnings.
Different game formats can be used to share experiences on DevOps principles and practices and explore how they can be applied effectively. This presentation provides an overview of playing formats and will inspire you to come up with your own formats.
The importance of sustainable and efficient computational practices in artificial intelligence (AI) and deep learning has become increasingly critical. This webinar focuses on the intersection of sustainability and AI, highlighting the significance of energy-efficient deep learning, innovative randomization techniques in neural networks, the potential of reservoir computing, and the cutting-edge realm of neuromorphic computing. This webinar aims to connect theoretical knowledge with practical applications and provide insights into how these innovative approaches can lead to more robust, efficient, and environmentally conscious AI systems.
Webinar Speaker: Prof. Claudio Gallicchio, Assistant Professor, University of Pisa
Claudio Gallicchio is an Assistant Professor at the Department of Computer Science of the University of Pisa, Italy. His research involves merging concepts from Deep Learning, Dynamical Systems, and Randomized Neural Systems, and he has co-authored over 100 scientific publications on the subject. He is the founder of the IEEE CIS Task Force on Reservoir Computing, and the co-founder and chair of the IEEE Task Force on Randomization-based Neural Networks and Learning Systems. He is an associate editor of IEEE Transactions on Neural Networks and Learning Systems (TNNLS).
This presentation by Tim Capel, Director of the UK Information Commissioner’s Office Legal Service, was made during the discussion “The Intersection between Competition and Data Privacy” held at the 143rd meeting of the OECD Competition Committee on 13 June 2024. More papers and presentations on the topic can be found at oe.cd/ibcdp.
This presentation was uploaded with the author’s consent.
1.) Introduction
Our Movement is not new; it is the same as it was for Freedom, Justice, and Equality since we were labeled as slaves. However, this movement at its core must entail economics.
2.) Historical Context
This is the same movement because none of the previous movements, such as boycotts, were ever completed. For some, maybe, but for the most part, it’s just a place to keep your stable until you’re ready to assimilate them into your system. The rest of the crabs are left in the world’s worst parts, begging for scraps.
3.) Economic Empowerment
Our Movement aims to show that it is indeed possible for the less fortunate to establish their economic system. Everyone else – Caucasian, Asian, Mexican, Israeli, Jews, etc. – has their systems, and they all set up and usurp money from the less fortunate. So, the less fortunate buy from every one of them, yet none of them buy from the less fortunate. Moreover, the less fortunate really don’t have anything to sell.
4.) Collaboration with Organizations
Our Movement will demonstrate how organizations such as the National Association for the Advancement of Colored People, National Urban League, Black Lives Matter, and others can assist in creating a much more indestructible Black Wall Street.
5.) Vision for the Future
Our Movement will not settle for less than those who came before us and stopped before the rights were equal. The economy, jobs, healthcare, education, housing, incarceration – everything is unfair, and what isn’t is rigged for the less fortunate to fail, as evidenced in society.
6.) Call to Action
Our movement has started and implemented everything needed for the advancement of the economic system. There are positions for only those who understand the importance of this movement, as failure to address it will continue the degradation of the people deemed less fortunate.
No, this isn’t Noah’s Ark, nor am I a Prophet. I’m just a man who wrote a couple of books, created a magnificent website: http://www.thearkproject.llc, and who truly hopes to try and initiate a truly sustainable economic system for deprived people. We may not all have the same beliefs, but if our methods are tried, tested, and proven, we can come together and help others. My website: http://www.thearkproject.llc is very informative and considerably controversial. Please check it out, and if you are afraid, leave immediately; it’s no place for cowards. The last Prophet said: “Whoever among you sees an evil action, then let him change it with his hand [by taking action]; if he cannot, then with his tongue [by speaking out]; and if he cannot, then, with his heart – and that is the weakest of faith.” [Sahih Muslim] If we all, or even some of us, did this, there would be significant change. We are able to witness it on small and grand scales, for example, from climate control to business partnerships. I encourage, invite, and challenge you all to support me by visiting my website.
• For a full set of 530+ questions. Go to
https://skillcertpro.com/product/servicenow-cis-itsm-exam-questions/
• SkillCertPro offers detailed explanations to each question which helps to understand the concepts better.
• It is recommended to score above 85% in SkillCertPro exams before attempting a real exam.
• SkillCertPro updates exam questions every 2 weeks.
• You will get life time access and life time free updates
• SkillCertPro assures 100% pass guarantee in first attempt.
This presentation by Katharine Kemp, Associate Professor at the Faculty of Law & Justice at UNSW Sydney, was made during the discussion “The Intersection between Competition and Data Privacy” held at the 143rd meeting of the OECD Competition Committee on 13 June 2024. More papers and presentations on the topic can be found at oe.cd/ibcdp.
This presentation was uploaded with the author’s consent.
2. 0.4.0 release!
● Cats Support
● Simple statement logging Support
● Changes to Add-On Modules
● Dynamic SQL
3. 0.4.0 release!
● Cats Support
● Simple statement logging Support
● Changes to Add-On Modules
● Dynamic SQL
4. The dynamic SQL story
The dynamic SQL story is now slightly better with
the introduction of composable statement
fragments.
"Changes to Core". changelog.
https://github.com/tpolecat/doobie/blob/series/0.4.x/CHANGELOG.md#changes-to-core, (参照 2017-01-25)
5. The dynamic SQL story
The dynamic SQL story is now slightly better with
the introduction of composable statement
fragments.
"Changes to Core". changelog.
https://github.com/tpolecat/doobie/blob/series/0.4.x/CHANGELOG.md#changes-to-core, (参照 2017-01-25)
若干改善された
6. Setting Up
import doobie.imports._
import scalaz._, Scalaz._, concurrent.Task
val xa = DriverManagerTransactor[Task](
"org.h2.Driver", "url", "user", "password"
)
// YOLO mode
import xa.yolo._
7. SQL literals
val select = fr"select * from user"
val where = fr"where uid = $id"
val sql = select ++ where
sql.query[User].quick.unsafePerformSync
8. SQL literals
val select: Fragment = fr"select * from user"
val where: Fragment = fr"where uid = $id"
val sql: Fragment = select ++ where
sql.query[User].quick.unsafePerformSync
sqlの代わりにfrで定義
9. SQL literals
val select: Fragment = fr"select * from user"
val where: Fragment = fr"where uid = $id"
val sql: Fragment = select ++ where
sql.query[User].quick.unsafePerformSync
++で連結
10. An arbitrary string value
val table = "user"
val select = fr"select * from"
val sql = select ++ Fragment.const(table)
sql.query[Unit].sql
// "select * from user"
11. An arbitrary string value
val table = "user"
val select = fr"select * from"
val sql = select ++ Fragment.const(table)
sql.query[Unit].sql
// "select * from user"
SQLパラメータではないもの
12. The Fragments Module
● some convenience combinators
○ andOpt
○ orOpt
○ whereAndOpt
○ whereOrOpt
○ in
and so on
13. The Fragments Module - whereAndOpt
import Fragments._
val uid: Option[Int] = ...
val json: Option[String] = ...
val sql = fr"select * from user" ++
whereAndOpt(
uid.map(p => fr"uid = $p"), // Option[Fragment]
json.map(p => fr"json like $p") // Option[Fragment]
)
14. The Fragments Module - whereAndOpt
import Fragments._
val uid: Option[Int] = None
val json: Option[String] = None
val sql = fr"select * from user" ++
whereAndOpt(
uid.map(p => fr"uid = $p"), // Option[Fragment]
json.map(p => fr"json like $p") // Option[Fragment]
)
// "select * from user "
15. The Fragments Module - whereAndOpt
import Fragments._
val uid: Option[Int] = Some(1)
val json: Option[String] = None
val sql = fr"select * from user" ++
whereAndOpt(
uid.map(p => fr"uid = $p"), // Option[Fragment]
json.map(p => fr"json like $p") // Option[Fragment]
)
// "select * from user WHERE uid = ? "
16. The Fragments Module - whereAndOpt
import Fragments._
val uid: Option[Int] = Some(1)
val json: Option[String] = Some("%foo%")
val sql = fr"select * from user" ++
whereAndOpt(
uid.map(p => fr"uid = $p"), // Option[Fragment]
json.map(p => fr"json like $p") // Option[Fragment]
)
// "select * from user WHERE uid = ? AND json like ? "
17. The Fragments Module - in
import Fragments._
val uids: List[Int] = ...
val sql = fr"select * from user" ++
whereAndOpt(
uids.toNel.map(p => in(fr"uid", p))// Option[Fragment]
)
Option[NonEmptyList[Int]]
18. The Fragments Module - in
import Fragments._
val uids: List[Int] = Nil
val sql = fr"select * from user" ++
whereAndOpt(
uids.toNel.map(p => in(fr"uid", p))// Option[Fragment]
)
// "select * from user "
19. The Fragments Module - in
import Fragments._
val uids: List[Int] = List(1,10)
val sql = fr"select * from user" ++
whereAndOpt(
uids.toNel.map(p => in(fr"uid", p))// Option[Fragment]
)
// "select * from user WHERE uid IN (?, ?) "