This commit is contained in:
Correl Roush 2021-10-08 16:06:24 -04:00
parent ae2bf8dff4
commit 1f0cb86bf7
16 changed files with 362 additions and 78 deletions

View file

@ -7,6 +7,36 @@
A 12-step support group for those suffering from [[id:225dc9bd-4352-40de-b3de-5554b939d47e][Sex]] and love addiction. A 12-step support group for those suffering from [[id:225dc9bd-4352-40de-b3de-5554b939d47e][Sex]] and love addiction.
* Documents * Documents
** The S.L.A.A. Preamble
Sex and Love Addicts Anonymous is a Twelve Step, Twelve Tradition oriented
fellowship based on the model pioneered by Alcoholics Anonymous.
The only qualification for S.L.A.A. membership is a desire to stop living out a
pattern of sex and love addiction. S.L.A.A. is supported entirely through the
contributions of its membership and is free to all who need it.
To counter the destructive consequences of sex and love addiction, we draw on
five major resources:
1. *Sobriety*. Our willingness to stop acting out in our own personal
bottom-line addictive behavior on a daily basis.
2. *Sponsorship / Meetings*. Our capacity to reach out for the supportive
fellowship within S.L.A.A.
3. *Steps*. Our practice of the Twelve Step program of recovery to achieve
sexual and emotional sobriety.
4. *Service*. Our giving back to the S.L.A.A. community what we continue to
freely receive.
5. *Spirituality*. Our developing a relationship with a Power greater than
ourselves which can guide and sustain us in recovery.
As a fellowship S.L.A.A. has no opinion on outside issues and seeks no
controversy. S.L.A.A. is not affiliated with any other organizations, movements
or causes, either religious or secular. We are, however, united in a common
focus: dealing with our addictive sexual and emotional behavior. We find a
common denominator in our obsessive/compulsive patterns, which transcends any
personal differences of sexual orientation or gender identity. We need protect
with special care the anonymity of every S.L.A.A. member. Additionally we try to
avoid drawing undue attention to S.L.A.A. as a whole from the public media.
** The Twelve Steps of S.L.A.A. ** The Twelve Steps of S.L.A.A.
1. We admitted we were powerless over sex and love addiction - that our lives 1. We admitted we were powerless over sex and love addiction - that our lives
had become unmanageable. had become unmanageable.
@ -32,6 +62,34 @@ A 12-step support group for those suffering from [[id:225dc9bd-4352-40de-b3de-55
carry this message to sex and love addicts and to practice these principles carry this message to sex and love addicts and to practice these principles
in all areas of our lives. in all areas of our lives.
** Characteristics of Sex and Love Addiction
1. Having few healthy boundaries, we become sexually involved with and/or
emotionally attached to people without knowing them.
2. Fearing abandonment and loneliness, we stay in and return to painful,
destructive relationships, concealing our dependency needs from ourselves and
others, growing more isolated and alienated from friends and loved ones,
ourselves, and God.
3. Fearing emotional and/or sexual deprivation, we compulsively pursue and
involve ourselves in one relationship after another, sometimes having more
than one sexual or emotional liaison at a time.
4. We confuse love with neediness, physical and sexual attraction, pity and/or
the need to rescue or be rescued.
5. We feel empty and incomplete when we are alone. Even though we fear intimacy
and commitment, we continually search for relationships and sexual contacts.
6. We sexualize stress, guilt, loneliness, anger, shame, fear and envy. We use
sex or emotional dependence as substitutes for nurturing care, and support.
7. We use sex and emotional involvement to manipulate and control others.
8. We become immobilized or seriously distracted by romantic or sexual
obsessions or fantasies.
9. We avoid responsibility for ourselves by attaching ourselves to people who
are emotionally unavailable.
10. We stay enslaved to emotional dependency, romantic intrigue, or compulsive
sexual activities.
11. To avoid feeling vulnerable, we may retreat from all intimate involvement,
mistaking sexual and emotional anorexia for recovery.
12. We assign magical qualities to others. We idealize and pursue them, then
blame them for not fulfilling our fantasies and expectations.
** The Twelve Traditions of S.L.A.A. ** The Twelve Traditions of S.L.A.A.
1. Our common welfare should come first; personal recovery depends upon S.L.A.A. 1. Our common welfare should come first; personal recovery depends upon S.L.A.A.
unity. unity.
@ -64,64 +122,6 @@ A 12-step support group for those suffering from [[id:225dc9bd-4352-40de-b3de-55
12. Anonymity is the spiritual foundation of all our traditions, ever reminding 12. Anonymity is the spiritual foundation of all our traditions, ever reminding
us to place principles before personalities. us to place principles before personalities.
** The S.L.A.A. Preamble
Sex and Love Addicts Anonymous is a Twelve Step, Twelve Tradition oriented
fellowship based on the model pioneered by Alcoholics Anonymous.
The only qualification for S.L.A.A. membership is a desire to stop living out a
pattern of sex and love addiction. S.L.A.A. is supported entirely through the
contributions of its membership and is free to all who need it.
To counter the destructive consequences of sex and love addiction, we draw on
five major resources:
1. *Sobriety*. Our willingness to stop acting out in our own personal
bottom-line addictive behavior on a daily basis.
2. *Sponsorship / Meetings*. Our capacity to reach out for the supportive
fellowship within S.L.A.A.
3. *Steps*. Our practice of the Twelve Step program of recovery to achieve
sexual and emotional sobriety.
4. *Service*. Our giving back to the S.L.A.A. community what we continue to
freely receive.
5. *Spirituality*. Our developing a relationship with a Power greater than
ourselves which can guide and sustain us in recovery.
As a fellowship S.L.A.A. has no opinion on outside issues and seeks no
controversy. S.L.A.A. is not affiliated with any other organizations, movements
or causes, either religious or secular. We are, however, united in a common
focus: dealing with our addictive sexual and emotional behavior. We find a
common denominator in our obsessive/compulsive patterns, which transcends any
personal differences of sexual orientation or gender identity. We need protect
with special care the anonymity of every S.L.A.A. member. Additionally we try to
avoid drawing undue attention to S.L.A.A. as a whole from the public media.
** Characteristics of Sex and Love Addiction
1. Having few healthy boundaries, we become sexually involved with and/or
emotionally attached to people without knowing them.
2. Fearing abandonment and loneliness, we stay in and return to painful,
destructive relationships, concealing our dependency needs from ourselves and
others, growing more isolated and alienated from friends and loved ones,
ourselves, and God.
3. Fearing emotional and/or sexual deprivation, we compulsively pursue and
involve ourselves in one relationship after another, sometimes having more
than one sexual or emotional liaison at a time.
4. We confuse love with neediness, physical and sexual attraction, pity and/or
the need to rescue or be rescued.
5. We feel empty and incomplete when we are alone. Even though we fear intimacy
and commitment, we continually search for relationships and sexual contacts.
6. We sexualize stress, guilt, loneliness, anger, shame, fear and envy. We use
sex or emotional dependence as substitutes for nurturing care, and support.
7. We use sex and emotional involvement to manipulate and control others.
8. We become immobilized or seriously distracted by romantic or sexual
obsessions or fantasies.
9. We avoid responsibility for ourselves by attaching ourselves to people who
are emotionally unavailable.
10. We stay enslaved to emotional dependency, romantic intrigue, or compulsive
sexual activities.
11. To avoid feeling vulnerable, we may retreat from all intimate involvement,
mistaking sexual and emotional anorexia for recovery.
12. We assign magical qualities to others. We idealize and pursue them, then
blame them for not fulfilling our fantasies and expectations.
** Promises ** Promises
Now we were truly feeling some sense of deep release from the past! We were free Now we were truly feeling some sense of deep release from the past! We were free
of much guilt for our misdeeds, from the shame of having fallen short of our of much guilt for our misdeeds, from the shame of having fallen short of our

View file

@ -0,0 +1,40 @@
:PROPERTIES:
:ID: 05698e38-65b2-496c-b02b-1db376ae734c
:END:
#+title: Validation vs Sanitization
There are distinct factors that go into deciding whether to [[id:9914d09e-99fe-46a6-95be-676c5b78ed90][validate input]]
(rejecting unwanted data) or to [[id:2ba04972-f498-41c2-970e-a64c7f3f1c3b][sanitize input]] (accept and alter data).
Commonly, data is validated on input, and sanitized when it is displayed:
#+begin_src plantuml :file validation-and-sanitization.svg
cloud "Input" as input
component API {
interface POST
usecase "Validate input" as validate
database "Data store" as data
interface GET
}
frame Client {
usecase "Sanitize and display" as sanitize
file "Output" as output
}
input -> POST
POST -> validate
validate -> data
data -> GET
GET -> sanitize
sanitize -> output
#+end_src
#+RESULTS:
[[file:validation-and-sanitization.svg]]
This has the following benefits:
- Input that is accepted correctly matches the types and constraints of its
domain.
- The client is soley responsible for ensuring that data is displayed correctly
and securely.

View file

@ -0,0 +1,6 @@
:PROPERTIES:
:ID: 9914d09e-99fe-46a6-95be-676c5b78ed90
:END:
#+title: Input validation
Validation is the process of ensuring that input data falls within the expected domain of valid program input.

View file

@ -0,0 +1,11 @@
:PROPERTIES:
:ID: 2ba04972-f498-41c2-970e-a64c7f3f1c3b
:END:
#+title: Data sanitization
Data sanitization is the process of ensuring that data conforms to the
requirements of the subsystem to which it is passed. Sanitization also involves
ensuring that data conforms to security-related requirements regarding leaking
or exposure of sensitive data when output across a trust boundary. Sanitization
may include the elimination of unwanted characters from the input by means of
removing, replacing, encoding, or escaping the characters.

View file

@ -0,0 +1,6 @@
:PROPERTIES:
:ID: 3ba1f581-c66c-492f-80fc-e7d2e488b362
:END:
#+title: Kubernetes
An orchestration platform for deploying Docker containers.

View file

@ -8,6 +8,6 @@ to respond with. This can be troubleshooted by inspecting the endpoints for the
service. Due to the mismatch, none were available. service. Due to the mismatch, none were available.
The ClusterIP service did not itself have an IP assigned even after fixing the The ClusterIP service did not itself have an IP assigned even after fixing the
mismatch. This appears to be an optimization in that Kubernetes won't bother mismatch. This appears to be an optimization in that [[id:3ba1f581-c66c-492f-80fc-e7d2e488b362][Kubernetes]] won't bother
assigning an IP to the service if the service has only a single endpoint, as it assigning an IP to the service if the service has only a single endpoint, as it
is more expedient to return the sole endpoint's IP address. is more expedient to return the sole endpoint's IP address.

View file

@ -14,6 +14,13 @@ Defining and translating the Search DSL for the [[id:11edd6c9-b976-403b-a419-b55
# TODO: sorting : Sorting # TODO: sorting : Sorting
#+end_src #+end_src
#+begin_src yaml :noweb-ref search-yaml
Search:
type: object
properties:
group:
$ref: "#/components/schemas/Group"
#+end_src
** A grouping is a collection of conditions ** A grouping is a collection of conditions
#+begin_src python :noweb-ref group #+begin_src python :noweb-ref group
class GroupType(enum.Enum): class GroupType(enum.Enum):
@ -27,6 +34,19 @@ Defining and translating the Search DSL for the [[id:11edd6c9-b976-403b-a419-b55
conditions: typing.List[Condition] conditions: typing.List[Condition]
#+end_src #+end_src
#+begin_src yaml :noweb-ref group-yaml
Group:
type: object
properties:
group_type:
enum:
- "AND"
conditions:
type: array
items:
$ref: "#/components/schemas/Condition"
#+end_src
** A condition is a filter applied to a field ** A condition is a filter applied to a field
#+begin_src python :noweb-ref condition #+begin_src python :noweb-ref condition
@dataclasses.dataclass @dataclasses.dataclass
@ -35,6 +55,15 @@ Defining and translating the Search DSL for the [[id:11edd6c9-b976-403b-a419-b55
match : str match : str
#+end_src #+end_src
#+begin_src yaml :noweb-ref condition-yaml
Condition:
type: object
properties:
filter:
$ref: "#/components/schemas/Filter"
match:
type: string
#+end_src
** A filter is a boolean expression applied to a field with an optional argument ** A filter is a boolean expression applied to a field with an optional argument
#+begin_src python :noweb-ref filter #+begin_src python :noweb-ref filter
@ -88,6 +117,9 @@ Defining and translating the Search DSL for the [[id:11edd6c9-b976-403b-a419-b55
#+begin_src python :noweb-ref filters #+begin_src python :noweb-ref filters
email = Filter(field=fields.email, operator="is", input_type=InputType.String) email = Filter(field=fields.email, operator="is", input_type=InputType.String)
#+end_src #+end_src
#+begin_src yaml :noweb-ref filters-spec
#+end_src
** Sample searches ** Sample searches
*** Match subscriber email *** Match subscriber email
@ -135,7 +167,7 @@ could be /parameterized/ by the field's type (e.g. a tag has type =str=, its
The input type will be defined as a property of the filter being applied. The input type will be defined as a property of the filter being applied.
** TODO Should the search service maintain a set of filters, or field types and operators? ** DONE Should the search service maintain a set of filters, or field types and operators?
- A filter is a combination of a field, an operator, and a type - A filter is a combination of a field, an operator, and a type
- A field has a type, and operators could be defined that work with a type or set of types - A field has a type, and operators could be defined that work with a type or set of types
@ -143,6 +175,10 @@ For the former, the service would have total control over the search filters
available to the UI, and the UI would be coupled to the filter collection. With available to the UI, and the UI would be coupled to the filter collection. With
the latter, the UI would have total control over which fields it's able to the latter, the UI would have total control over which fields it's able to
search on and how, provided the fields are available. search on and how, provided the fields are available.
--------------------------------------------------------------------------------
The search service will maintain a set of filters.
** TODO How should the values of each filter be represented in the request schema? ** TODO How should the values of each filter be represented in the request schema?
Should they be normalized to strings, or should we allow any type and validate Should they be normalized to strings, or should we allow any type and validate
it when we attempt to build the search data model? If the latter, could the it when we attempt to build the search data model? If the latter, could the
@ -155,11 +191,13 @@ joined table. Will they all be joined by the subscriber id, or will we need to
maintain a map? maintain a map?
* Code * Code
** Python
#+begin_src python :noweb yes :noweb-ref final :exports code :results silent #+begin_src python :noweb yes :noweb-ref final :exports code :results silent
import dataclasses import dataclasses
import enum import enum
import typing import typing
<<field>> <<field>>
@ -202,6 +240,7 @@ maintain a map?
#+RESULTS: #+RESULTS:
: Success: no issues found in 1 source file : Success: no issues found in 1 source file
** OpenAPI
* Output * Output
#+caption: Generated queries #+caption: Generated queries
#+begin_src python :noweb yes :exports results #+begin_src python :noweb yes :exports results

View file

@ -5,6 +5,8 @@
:END: :END:
#+title: Tracking progress of moving pages out of Sites #+title: Tracking progress of moving pages out of Sites
- [[https://jira.aweber.io/browse/CCPANEL-11608][Initiative parent ticket in JIRA]]
* Metrics * Metrics
#+caption: Migrated controllers in the CP #+caption: Migrated controllers in the CP
@ -159,3 +161,6 @@
| 2018-03-29 | 73 | 6 | | 2018-03-29 | 73 | 6 |
| 2018-02-28 | 73 | 6 | | 2018-02-28 | 73 | 6 |
| 2018-01-24 | 73 | 6 | | 2018-01-24 | 73 | 6 |
* Comparing with the CP URL Inventory
https://docs.google.com/spreadsheets/d/1bRKL1zRe_SjePD1QKSHrbgiW9paMjLyCIX_2wu2FXwE/edit#gid=1209260269

View file

@ -0,0 +1,6 @@
:PROPERTIES:
:ID: 071f551f-56d9-425c-bfde-af80cd7c26f7
:END:
#+title: Tech Initiative Workshop
A bi-weekly meeting to swarm on various [[id:db322997-ff5e-416a-8dc8-f29e6a4928c8][Technical Initiative]] issues.

View file

@ -0,0 +1,4 @@
:PROPERTIES:
:ID: 7e503917-646f-4275-aab9-3a125b99cbfd
:END:
#+title: Tagging Service

View file

@ -0,0 +1,4 @@
:PROPERTIES:
:ID: 131dde93-60d3-4813-a16e-7568c79ba6c4
:END:
#+title: Tag Publisher Consumer

53
aweber/index.org Normal file
View file

@ -0,0 +1,53 @@
#+TITLE: Correl Roush's Org Roam Notes
- [[file:20210915133101-analytics_view_service.org][Analytics View Service]]
- [[file:20210914144833-broadcast_segment_search.org][Broadcast Segment Search]]
- [[file:20210921090818-bulk_tagging_service.org][Bulk Tagging Service]]
- [[file:20210323162555-cleaning_up_public_endpoints_in_proxy_services.org][Cleaning up public endpoints in proxy services]]
- [[file:20210512133000-cobrowse_io.org][Cobrowse.io]]
- [[file:20200714141314-control_panel.org][Control Panel]]
- [[file:20210210113027-control_panel_http_requests.org][Control Panel HTTP Requests]]
- [[file:20200713131512-coreapi.org][CoreAPI]]
- [[file:20200714141333-corporate_notifications.org][Corporate Notifications]]
- [[file:20210916162334-ceeecs.org][Customer Empathy and Excellence via Customer Solutions]]
- [[file:20210928132316-dashboard.org][Dashboard]]
- [[file:20210826152454-deploying_bulk_tagging_to_kubernetes.org][Deploying Bulk Tagging to Kubernetes]]
- [[file:20210810095435-deploying_s4_to_kubernetes.org][Deploying S4 to Kubernetes]]
- [[file:20210714102625-deploying_projects.org][Deploying projects]]
- [[file:20210506110533-dynamodb_iam_policies.org][DynamoDB IAM Policies]]
- [[file:20201028130030-easy_commerce_mvp_brainstorm_notes.org][Easy Commerce MVP Brainstorm Notes]]
- [[file:20210318110509-finding_number_of_subscribers_with_a_tag.org][Finding number of subscribers with a tag]]
- [[file:20210324133247-imbi.org][Imbi]]
- [[file:20200714212153-login_throttling.org][Login Throttling]]
- [[file:20200714130151-mail_relay.org][Mail Relay]]
- [[file:20210520114208-migrating_aws_services.org][Migrating AWS services]]
- [[file:20200713131302-migration_to_common_rabbitmq.org][Migration to common RabbitMQ]]
- [[file:20210928155832-translating_the_search_dsl.org][Modeling the new search DSL]]
- [[file:20200714141221-momentum.org][Momentum]]
- [[file:20210323161636-moving_pages_out_of_sites.org][Moving pages out of Sites]]
- [[file:20200714100836-pgbouncer_port_migration.org][PGBouncer port migration]]
- [[file:20200714125028-pagerduty.org][Pagerduty]]
- [[file:20210813142844-projects.org][Projects]]
- [[file:20200713162108-puppet.org][Puppet]]
- [[file:20210412153138-purchase_tracking.org][Purchase tracking]]
- [[file:20201022141542-python_services.org][Python Services]]
- [[file:20210512093626-rebuild_unsubscribe_page_as_a_react_application.org][Rebuild Unsubscribe Page as a React Application]]
- [[file:20210127141844-recurring_and_split_stripe_payments.org][Recurring and split Stripe payments]]
- [[file:20210915132045-redesigned_reports.org][Redesigned Reports]]
- [[file:20200714143255-refunding_an_order.org][Refunding an Order]]
- [[file:20210915133448-report_api_controller.org][Report API Controller]]
- [[file:sites-release.org][Sites Releases]]
- [[file:20210914143542-sites_subscriber_search.org][Sites Subscriber Search]]
- [[file:20210302135423-stripe_api.org][Stripe API]]
- [[file:20210112104838-stripe_payments_service.org][Stripe Payments Service]]
- [[file:20210630150008-stripe_poller.org][Stripe Poller]]
- [[file:20210316155320-stripe_payments_tracking_database.org][Stripe payments tracking database]]
- [[file:20210914142000-subscriber_search_service.org][Subscriber Search Service]]
- [[file:20210629133542-supporting_multiple_currencies_in_stripe.org][Supporting multiple currencies in Stripe]]
- [[file:20210706161607-supporting_multiple_time_zones.org][Supporting multiple time zones]]
- [[file:20210920134622-suspicious_submission_spam_service.org][Suspicious Submission Spam Service]]
- [[file:20210318112158-tagging_roadmap.org][Tagging Roadmap]]
- [[file:20210714105000-team_member_onboarding.org][Team Member Onboarding]]
- [[file:20210323162325-technical_initiative.org][Technical Initiative]]
- [[file:20211001095858-tracking_progress_of_moving_pages_out_of_sites.org][Tracking progress of moving pages out of Sites]]
- [[file:20210406120229-troubleshooting_an_unresolvable_kubernetes_service_hostname.org][Troubleshooting an unresolvable kubernetes service hostname]]

View file

@ -6,7 +6,7 @@ y:PROPERTIES:
:END: :END:
#+title: 2021-09-21 #+title: 2021-09-21
* Tech Initiatives Sync-Up * [[id:071f551f-56d9-425c-bfde-af80cd7c26f7][Tech Initiative Workshop]]
- [X] Fix [[id:c7322400-c6e6-4595-87e2-7db6e57b6a2b][S4]] metrics failing to publish - [X] Fix [[id:c7322400-c6e6-4595-87e2-7db6e57b6a2b][S4]] metrics failing to publish
- [ ] Update [[id:c7322400-c6e6-4595-87e2-7db6e57b6a2b][S4]] Dashboard - [ ] Update [[id:c7322400-c6e6-4595-87e2-7db6e57b6a2b][S4]] Dashboard
- [ ] Fix [[id:321075e7-db53-4676-b785-7c77ed9d1150][Bulk Tagging Service]] metrics failing to publish - [ ] Fix [[id:321075e7-db53-4676-b785-7c77ed9d1150][Bulk Tagging Service]] metrics failing to publish

103
daily/2021-10-05.org Normal file
View file

@ -0,0 +1,103 @@
:PROPERTIES:
:ID: 909b87cb-8777-48e4-9ce9-59c58461797c
:END:
#+title: 2021-10-05
* Addressing Tagging message priorities
- The =campaign-engine-tag= is defined with =x-max-priority: 9=
- The bulk-tagging consumer makes requests to the tagging service with
=publishing-priority= set to =0=, the lowest priority, which the tagging
service honors (it defaults to =2= when one is not provided).
- Tag publisher makes requests to tagging with a priority between =0= and =3=,
depending on the new subscriber's source:
https://gitlab.aweber.io/CP/Consumers/tagpublisher/-/blob/master/tagpublisher.py#L96-112
#+caption: Tagging publish priorities
| | [[id:7e503917-646f-4275-aab9-3a125b99cbfd][Tagging]] | [[id:321075e7-db53-4676-b785-7c77ed9d1150][Bulk Tagging]] | [[id:131dde93-60d3-4813-a16e-7568c79ba6c4][Tag Publisher]] |
|---+---------+--------------+--------------------------|
| 0 | | All | Unknown / missing source |
| 1 | | | source=api |
| 2 | Default | | |
| 3 | | | source=webform,api/atom |
| 4 | | | |
| 5 | | | |
| 6 | | | |
| 7 | | | |
| 8 | | | |
| 9 | | | |
For the interim, we'll increase the priorities of events from Tag Publisher by
1, leaving bulk tagging by itself at the lowest priority.
** Building a new tag event
I'd like to move forward sooner rather than later with an updated tag event per
recipient tagged (currently we emit an event per tag applied).
#+begin_src diff
From 111ad42ee99ce1e5f2c4c376efc887e3e2851289 Mon Sep 17 00:00:00 2001
From: Correl <correl@gmail.com>
Date: Tue, 5 Oct 2021 16:46:57 -0400
Subject: [PATCH] Create a recipient tagged event
This event is intended to replace usage of the existing `tag.v1` event,
which is issued per tag with properties for the tagged recipient, with
an event issued per recipient with a list of applied tags.
This will allow campaign tag processing to handle multiple tag updates
per subscriber in a single event, reducing lock contention on subscriber
records.
CCPANEL-11716
---
events/recipient.tagged.v1.avsc | 40 +++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 events/recipient.tagged.v1.avsc
diff --git a/events/recipient.tagged.v1.avsc b/events/recipient.tagged.v1.avsc
new file mode 100644
index 0000000..b28bf28
--- /dev/null
+++ b/events/recipient.tagged.v1.avsc
@@ -0,0 +1,40 @@
+{
+ "type": "record",
+ "namespace": "com.aweber.events",
+ "name": "recipient.tagged.v1",
+ "fields": [
+ {
+ "name": "id",
+ "type": "string"
+ },
+ {
+ "name": "account",
+ "type": "string"
+ },
+ {
+ "name": "list",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "name": "timestamp",
+ "type": "string"
+ },
+ {
+ "name": "tags",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "Tag",
+ "fields": [
+ {"name": "id", "type": "string"},
+ {"name": "label": "type": "string"}
+ ]
+ }
+ }
+ }
+ ]
+}
--
2.30.2
#+end_src

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

View file

@ -0,0 +1,7 @@
:PROPERTIES:
:ID: 669a827a-bc9a-4171-9047-0029a3a15c62
:ROAM_REFS: https://wiki.sei.cmu.edu/confluence/display/java/Input+Validation+and+Data+Sanitization
:END:
#+title: Input Validation and Data Sanitization - SEI CERT Oracle Coding Standard for Java - Confluence
Discusses [[id:9914d09e-99fe-46a6-95be-676c5b78ed90][Input validation]] and [[id:2ba04972-f498-41c2-970e-a64c7f3f1c3b][Data sanitization]].