This document provides an overview of the DataMapper ORM library for Ruby. It discusses DataMapper 0.10 being released after 11 months of work. It demonstrates basic usage like defining models with properties and relationships. It also covers more advanced features like querying, custom types, embedded documents, validation, timestamps, constraints and plugins. Contact information is provided at the end for the DataMapper project on GitHub, mailing list and IRC channel to ask any questions.
Slides for the Therapeutic Refactoring talk presented at NordicRuby on June 15th, 2012, and Scottish Ruby Conference on June 30th, 2012. The code samples are on github:
http://github.com/kytrinyx/therapeutic-refactoring
Some times we can forget that one of the most interesting uses of a language like Groovy is to make small scripts, beyond the need of playing with the rules and peculiarities of monster frameworks like Grails. This point is interesting not only for Groovy programmers, but also (specially) for Java programmers afraid of using Groovy in production code for being "dirty".
In this talk we'll see how Groovy is a language specially prepared for scripting, and very easy to handle for programmers with a Java background. We'll also explore some peculiarities of Groovy scripts in comparison to complete applications, and some interesting ideas which can be applied to scripts, based on my experience, and can be useful to anyone.
"It's all about simplicity": perchè le applicazioni basate su Javascript sono spesso complesse, farraginose e difficilmente manutenibili quando è possibile renderle semplici, eleganti e funzionali?
In questa sessione a quattro mani vedremo per prima cosa come sfruttare Javascript al meglio, utilizzando i prototipi, i namespaces, gli oggetti, gli eventi, le chiusure e le altre mille funzionalità di un linguaggio di programmazione troppo spesso sottovalutato.
Ci soffermeremo poi su jQuery per analizzare il suo contributo nel semplificare task normalmente tediosi come la manipolazione del DOM, la gestione degli eventi, la programmazione asincrona (AJAX) e le problematiche di compatibilità cross-browser.
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
Dig deeper into WordPress is a presentation made for Web Designers Meetup in Cairo taken place on 17th Dec 2012.
Signup at WPMonkeys.com to get notified when awesome new WordPress related content is published.
Introduction to the persistent layer implemented for FLOW3. The presentation was held on the 4th International TYPO3 Conference in Berlin, October 2008.
Talk I gave at Maceió DEV Meetup #6. Not only about Command Bus/Command Interface or whatever you name it, but a compilation of cool articles I found only that may help with understanding this architecture.
jQuery is a different type of JavaScript library, with emphasis on getting the job done with the most efficient code possible. JavaScript DOM manipulation -- even with some existing JavaScript libraries -- can be tedious and uninteresting. But jQuery provides a new and exciting way to wrap existing markup with awesome dynamic functionality in a few lines of code. Not only is the approach powerful, but elegant as well. This presentation will go over the key parts of the jQuery library, including selectors, DOM transversal and manipulations, events, effects, and ajax -- including running code examples.
At the beggining, we had RDDs. A distributed Scala collection! Then, the DataFrame API showed up. It brought with it tons of datasource implementations and a query optimizer. But... where are our types? Are we really referring to a column with a string and then casting it? In Scala? This meant more runtime errors and made the code harder to refactor. Then, we got Datasets. We have types again! The bad thing is that lambdas kill some of the performance we can achieve with dataframes. Also, runtime errors don't completely disappear.
The Frameless library tries to solve these problems so we can get all the performance, keep our types and reduce the runtime errors. This talk explains the pros and cons of the library, and also dives deeper into some implementation details to make it possible.
Slides for the Therapeutic Refactoring talk presented at NordicRuby on June 15th, 2012, and Scottish Ruby Conference on June 30th, 2012. The code samples are on github:
http://github.com/kytrinyx/therapeutic-refactoring
Some times we can forget that one of the most interesting uses of a language like Groovy is to make small scripts, beyond the need of playing with the rules and peculiarities of monster frameworks like Grails. This point is interesting not only for Groovy programmers, but also (specially) for Java programmers afraid of using Groovy in production code for being "dirty".
In this talk we'll see how Groovy is a language specially prepared for scripting, and very easy to handle for programmers with a Java background. We'll also explore some peculiarities of Groovy scripts in comparison to complete applications, and some interesting ideas which can be applied to scripts, based on my experience, and can be useful to anyone.
"It's all about simplicity": perchè le applicazioni basate su Javascript sono spesso complesse, farraginose e difficilmente manutenibili quando è possibile renderle semplici, eleganti e funzionali?
In questa sessione a quattro mani vedremo per prima cosa come sfruttare Javascript al meglio, utilizzando i prototipi, i namespaces, gli oggetti, gli eventi, le chiusure e le altre mille funzionalità di un linguaggio di programmazione troppo spesso sottovalutato.
Ci soffermeremo poi su jQuery per analizzare il suo contributo nel semplificare task normalmente tediosi come la manipolazione del DOM, la gestione degli eventi, la programmazione asincrona (AJAX) e le problematiche di compatibilità cross-browser.
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
Dig deeper into WordPress is a presentation made for Web Designers Meetup in Cairo taken place on 17th Dec 2012.
Signup at WPMonkeys.com to get notified when awesome new WordPress related content is published.
Introduction to the persistent layer implemented for FLOW3. The presentation was held on the 4th International TYPO3 Conference in Berlin, October 2008.
Talk I gave at Maceió DEV Meetup #6. Not only about Command Bus/Command Interface or whatever you name it, but a compilation of cool articles I found only that may help with understanding this architecture.
jQuery is a different type of JavaScript library, with emphasis on getting the job done with the most efficient code possible. JavaScript DOM manipulation -- even with some existing JavaScript libraries -- can be tedious and uninteresting. But jQuery provides a new and exciting way to wrap existing markup with awesome dynamic functionality in a few lines of code. Not only is the approach powerful, but elegant as well. This presentation will go over the key parts of the jQuery library, including selectors, DOM transversal and manipulations, events, effects, and ajax -- including running code examples.
At the beggining, we had RDDs. A distributed Scala collection! Then, the DataFrame API showed up. It brought with it tons of datasource implementations and a query optimizer. But... where are our types? Are we really referring to a column with a string and then casting it? In Scala? This meant more runtime errors and made the code harder to refactor. Then, we got Datasets. We have types again! The bad thing is that lambdas kill some of the performance we can achieve with dataframes. Also, runtime errors don't completely disappear.
The Frameless library tries to solve these problems so we can get all the performance, keep our types and reduce the runtime errors. This talk explains the pros and cons of the library, and also dives deeper into some implementation details to make it possible.
Emil Eifrem, the CEO, founder and developer of neo4j in Mumbai at Directi giving a talk on NoSQL databases (his area of expertise) where he covers various NoSQL databases and then spends a bulk of time on neo4j.
Apple's Swift has achieved the top place in Stack Overflow's "Most Loved" list of programming languages in its 2015 Developer Survey. Based on information gleaned from GitHub and Stack Overflow, analyst firm RedMonk has seen Swift's popularity ranking soar from 68 to 22 in an unprecedented 6 months.
The "Extreme Swift" event does not require advanced, or even any, knowledge of Swift. Learn about some of the more outrageous features of the language which help explain what the fuss is all about!
Never look at programming the same way again — even if you never end up writing a single line of Swift code in your life.
Map/Confused? A practical approach to Map/Reduce with MongoDBUwe Printz
Talk given at MongoDb Munich on 16.10.2012 about the different approaches in MongoDB for using the Map/Reduce algorithm. The talk compares the performance of built-in MongoDB Map/Reduce, group(), aggregate(), find() and the MongoDB-Hadoop Adapter using a practical use case.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
4. DataMapper 0.10 is Released
DataMapper 0.10 is ready for release. We’ve worked on it
for the past 11 months, pushed 1250 commits, written
3000+ specs, and fixed 140 tickets in the process.
5. 1.8
1.9
JRuby
Windows *
* Sorry, no Windows / 1.9 yet...
20. people = Person.all
people.each do |person|
p person.addresses
end
SELECT "id", "name" FROM people;
SELECT "id", "street" FROM addresses WHERE ("person_id" IN (1,2,3))
Eager loading
24. module DataMapper
module Adapters
class MyStorageAdapter < AbstractAdapter
def create(resources)
end
def read(query)
end
def update(attributes, collection)
end
def delete(collection)
end
end
end
end
27. Person.all(Person.addresses.street.like => "%street%")
SELECT "people"."id", "people"."name", "people"."age" FROM "people"
INNER JOIN "addresses" ON "people"."id" = "addresses"."person_id"
WHERE "addresses"."street" LIKE '%street%'
GROUP BY "people"."id", "people"."name", "people"."age"
ORDER BY "people"."id"
Complex querying!
28. class Person
include DataMapper::Resource
property :id, Serial
property :name, String
property :age, Integer
has n, :addresses
def self.named_like_me
all(:name.like => "%me%")
end
def self.older_than_me
all(:age.gt => 27)
end
end
Person.named_like_me.older_than_me
~ SELECT "id", "name", "age" FROM "people"
WHERE ("name" LIKE '%me%' AND "age" > 27) ORDER BY "id"
Query chaining
29. class Person
s
include DataMapper::Resource
e
property :id, Serial
p
property :name, String
o y
property :age, Integer
c b
s u
has n, :addresses
d R
def self.named_like_me
e
all(:name.like => "%me%")
end
m in
a la
def self.older_than_me
all(:age.gt => 27)
N p
end
end
i n
Person.named_like_me.older_than_me
~ SELECT "id", "name", "age" FROM "people"
WHERE ("name" LIKE '%me%' AND "age" > 27) ORDER BY "id"
Query chaining
30. Person.all(:name.like => '%me%').addresses.all(:street.not => nil)
SELECT "id", "street", "person_id" FROM "addresses"
WHERE (
"person_id" IN (SELECT "id" FROM "people" WHERE "name" LIKE '%me%')
AND "street" IS NOT NULL
) ORDER BY "id"
Subqueries
35. class Person
...
property :name, String, :nullable => false
end
CREATE TABLE "people" ("id" SERIAL NOT NULL,
"name" VARCHAR(50) NOT NULL,
"age" INTEGER, PRIMARY KEY("id"))
Automatic Validations
36. Person.create
DataObjects::IntegrityError: ERROR:
null value in column "name" violates not-null constraint
37. person = Person.create
p person.errors => #<DataMapper::Validate::ValidationErrors:0x101d217a0
@errors={:name=>["Name must not be blank"]},
@resource=#<Person @id=nil @name=nil @age=nil>>
38. class Person
...
validates_present :name
end
Validations
39. class Person
...
property :created_at, DateTime
property :updated_at, DateTime
end
Timestamps
41. class Person
...
has n, :addresses, :constraint => :destroy!
end
ALTER TABLE addresses
ADD CONSTRAINT addresses_person_id_fk
FOREIGN KEY (person_id)
REFERENCES people
ON DELETE CASCADE
ON UPDATE CASCADE
Constraints
42. module DataMapper
module Types
class IPAddress < DataMapper::Type
primitive String
length 16
def self.load(value, property)
IPAddr.new(value)
end
def self.dump(value, property)
value.to_s
end
def self.typecast(value, property)
value.kind_of?(IPAddr) ? value : load(value, property)
end
end
end
end
class NetworkNode
...
property :ipaddress, IPAddress
end
Custom types
43.
44. class Address
include DataMapper::EmbeddedValue
property :street, String
end
class Person
include DataMapper::Resource
property :id, Serial
property :name, String
has n, :addresses
end