1. Introduction
This guide provides information to assist contributors to the Strimzi documentation.
Strimzi documentation is written in Asciidoc.
Strimzi is committed to using inclusive and respectful language in its code, web pages, and documentation. Contributions to the documentation, as with code submissions, must not contain problematic terms or phrases.
1.1. Documentation tools
The following tools are needed to build the documentation:
asciidoctor
-
Documentation generation tool
make
-
Make build system to build complete documentation
yq
-
YAML build tool to build documentation using make targets
Additionally, for generating the API reference you will also need:
For most documentation updates, asciidoctor
offers the simplest way to check the build.
1.2. Project layout
Strimzi uses git to manage repositories.
strimzi-kafka-operator
(GitHub)-
The public GitHub repo hosts all of the Strimzi Operators code and documentation.
strimzi-kafka-bridge
(GitHub)-
The public GitHub repo hosts all of the Strimzi Kafka Bridge code.
strimzi-kafka-oauth
(GitHub)-
The public GitHub repo hosts all of the Strimzi OAuth 2.0 code.
The main documentation is in the Strimzi Operators repository, in the documentation
folder.
The documentation folder is split into category folders to manage the content.
Documentation category folders contain files related to Strimzi guides (Deploying, Quickstart, Overview, Using), and the files that provide the content for one or more of these guides – assemblies and modules. Assemblies, which usually encapsulate a feature or process, bring the related content contained in modules together.
An assembly is like a sub-section or chapter in a book. For example, the Deploying and Upgrading Strimzi guide has a chapter called Verifying the Strimzi deployment, which is contained in its own assembly.
api/ # Property descriptions for the Custom Resource API Reference section of the Configuring Strimzi guide
contributing/ # Documentation contributor guide (this book)
deploying/ # Deploying Strimzi
quickstart/ # Strimzi Quick Start guide
overview/ # Strimzi Overview guide
configuring/ # Configuring Strimzi
assemblies/ # Assemblies provide content for all guides
modules/ # Modules provide the content for assemblies
shared/ # Shared include files
shared/attributes.adoc # Global book attributes
shared/images/ # Shared image files
1.2.1. Strimzi Overview guide
The intention of the Strimzi Overview guide is for developing an understanding of Strimzi and Apache Kafka. The guide does not contain any instructions. It provides an overview of the concepts behind Apache Kafka, the Kafka component architecture, and how Strimzi supports Kafka in a Kubernetes cluster. The guide also describes how Strimzi Operators help manage a deployment.
The guide contains high-level outlines of the processes required to deploy, configure, secure and monitor a deployment of Strimzi.
1.2.2. Deploying and Upgrading Strimzi
The Deploying and Upgrading Strimzi guide provides instructions on all the options available for deploying and upgrading Strimzi. The guide describes what is deployed, and the order of deployment required to run Apache Kafka in a Kubernetes cluster.
As well as describing the deployment steps, the guide also provides pre- and post-deployment instructions to prepare for and verify a deployment. Additional deployment options described include the steps to introduce metrics.
Upgrade instructions are provided for Strimzi and Kafka upgrades.
1.2.3. Strimzi Quick Start guide
The Strimzi Quick Start guide provides instructions for evaluating Strimzi using Minikube. The steps describe how to get a Strimzi deployment up-and-running as quickly as possible.
In contrast to the Deploying and Upgrading Strimzi guide, this guide provides a reduced set of instructions for a specific type of deployment, with minimal configuration.
1.2.4. Configuring Strimzi
The Configuring Strimzi guide provides configuration instructions for Kafka components, and instructions for using Strimzi Operators. The majority of the content relates to how you might want to modify your deployment and introduce additional features, such as Cruise Control or distributed tracing.
1.2.5. Custom Resource API Reference
The Configuring Strimzi guide (documentation/configuring/configuring.adoc) also contains a Custom Resource API Reference that describes the configuration properties for custom resources.
The Custom Resource API Reference is built from two files.
include::modules/con-common-configuration-properties.adoc[leveloffset=+1]
include::modules/appendix_crds.adoc[]
The con-common-configuration-properties.adoc
file contains descriptions of common configuration properties.
The content for the documentation/modules/appendix_crds.adoc
file is generated directly from descriptions in the Java code.
Java files in the api/
folder are annotated so that the descriptions are picked up in the build.
import io.strimzi.crdgenerator.annotations.Description;
import io.strimzi.crdgenerator.annotations.DescriptionFile;
The tables in appendix_crds.adoc
are built from @Description
annotations in the Java files.
Additional information is included by adding:
-
An
@DescriptionFile
annotation to the Java file -
A corresponding description file (
.adoc
) in thedocumentation/api/
folder -
An
include:DESCRIPTION-FILE-NAME
reference to theappendix_crds.adoc
The include:DESCRIPTION-FILE-NAME
reference is added automatically by the Maven build, so you do not need to add it manually.
For example, to add additional configuration for the KafkaUserQuotas
custom resource:
-
api/src/main/java/io/strimzi/api/kafka/model/KafkaUserQuotas.java
contains:-
import io.strimzi.crdgenerator.annotations.Description
-
import io.strimzi.crdgenerator.annotations.DescriptionFile
-
@Description("descriptions for individual properties…");
-
An
@DescriptionFile
annotation
-
-
documentation/api
includes theio.strimzi.api.kafka.model.KafkaUserQuotas.adoc
file containing the additional configuration description.The description file requires the same name as the related Java package.
-
appendix_crds.adoc
contains a reference to include the additional configuration description:### `KafkaUserQuotas` schema reference /include::../api/io.strimzi.api.kafka.model.KafkaUserQuotas.adoc[leveloffset=+1]
If you change anything in the api
module of the Java code, you must rebuild the Custom Resource API Reference using a make command.
2. Contributing to the documentation
This section shows you how to contribute to the Strimzi documentation and contains important guidelines for creating accessible content.
2.2. Accessibility guidelines
Strimzi aims to make its content accessible. When contributing to the documentation, ensure that your content adheres to the following guidelines:
-
Images:
-
Include a caption
-
Provide alternative text
-
Are described in the surrounding text
-
-
Images of text are not used (such as with code fragments)
-
Links provide descriptive text about the target (not click here)
-
Tables:
-
Include a caption
-
Contain headings
-
Provide a logical reading order
-
Don’t contain empty cells
-
-
Color is not used as the only visual means to convey information (not check the green text)
.Operators within the Strimzi architecture
image:operators.png[Operators within the Strimzi architecture]
.File connectors
[cols="2*",options="header"]
|===
|File Connector
|Description
|FileStreamSourceConnector
|Transfers data to your Kafka cluster from a file (the source).
|===
2.3. Contributing to the documentation
Once you have your local repository set up and have up-to-date copies of upstream content, follow these steps to contribute to the documentation.
You add content to the documentation hosted on GitHub using pull requests (PRs).
Reviewers might be assigned to the PR depending on the changes. A review from a Subject Matter Expert (SME) will check the technical aspects of the content. The PR might not require an SME review if you’re only fixing a typo or broken link.
-
Open your terminal
-
cd
to the directory where your documentation resides -
Checkout the main branch
$ git checkout main
-
Update your local repository and fork with the upstream content
$ git pull upstream main $ git push origin main --force
-
Create a new branch for your work (using the issue number is helpful)
$ git checkout -b <branch-name>
-
Make your edits in the editor of your choice
-
Save your changes locally
-
Build your documentation to verify that there are no build errors and that everything looks right
-
This can be done with the Make tooling
-
-
If you are creating new files, add the files to the repository
$ git status $ git add <file-name>
-
Commit your changes
$ git commit -a -s -m "<message>"
Note that the project requires all commits to be signed off, indicating that you certify the changes with the developer certificate of origin (DCO).
-
Push your changes to your fork
$ git push origin HEAD
-
If the update is rejected because the commit is behind, merge your changes
$ git pull upstream main $ git push -f origin HEAD
-
Visit your fork on GitHub
-
Click Compare & pull request
3. AsciiDoc format reference
Tips for which AsciiDoc markup to use when formatting text.
- Monospace (
`
)
| Item | Example |
|---|---|
File names and paths |
The `/home/user/.bashrc` file … |
Literal values |
If the value is `true` … |
Configuration attributes |
Set the `enabled` attribute … |
Java class names |
The `java.sql.Connection` class … |
Java annotations |
The `@Clustered` annotation … |
- Italics (
_
)
| Item | Example |
|---|---|
Guide titles |
See the _Installation Guide_ … |
Emphasis for a term (only emphasize first time) |
_High availability_ refers to the … |
- Bold (
*
)
| Item | Example |
|---|---|
GUI items (menus, buttons) |
Click the *Add* button and … |
- Underline (
value
)
| Item | Example |
|---|---|
Default item in a multi-select |
`yes|[.underline]#no#|maybe` |
4. Style guidelines
4.1. Adding code and configuration examples
The Strimzi documentation contains many code and configuration examples.
If you want to add example code and configuration to your contribution, use the following format in an asciidoc code block.
[source,yaml,subs="+quotes,attributes"] (1)
----
apiVersion: {KafkaApiVersion}
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
replicas: 3 # <1> (2)
# ... (3)
----
-
Syntax for the example. Here the source language is
yaml
. Use subs to apply attributes and formatting. In this example,kafka.strimzi.io/v1beta2
is substituted with an attribute value specified in the/shared/attributes.adoc
file. If quotes is specified in subs, asciidoc formatting is applied to the code block. Here, bold is applied to the 3 value ofreplicas
. If quotes isn’t used, asciidoc formatting is ignored in the code block. -
Add callouts to describe a line of code or configuration. Use a hash (
#
) before the callout number so that the example is copy-friendly. -
Use a hash and ellipsis (
# …
) to show that part of the code or configuration has been omitted.
4.2. General styles
| Item | Use | Not |
|---|---|---|
Filesystem names and paths, symbols, and literals. |
`filename` |
|
GUI items (Match the capitalization of the button) |
*bold* |
|
Navigation link text |
*bold* |
|
Superuser console commands |
$ sudo |
# |
Emphasis |
_yay_ |
*yay* |
List of options (underline the default if there is one) |
1|[.underline]#2#|3 |
1/2/3 |
Decimal integers < 10 |
four |
4 |
Decimal integers >= 10 |
12 |
twelve |
Hexadecimal integers (always numeric, lowercase x) |
0x123 |
0X13 |
Number ranges (always use numerals) |
1-20 |
1-twenty |
Do not use Latin abbreviations |
that is |
i.e. |
and so on |
etc. |
|
for example |
e.g. |
|
Cannot |
cannot |
can not |
And |
and |
& |
Choices |
and |
and/or |
or |
||
Heartbeating |
heartbeating |
heart-beating |
-
Stick to one file per chapter unless the content is too long, excluding reusable topics.
-
Document IDs are book-scoped, so they don’t need the book title in them.
-
Terminate bulleted and numbered lists with periods unless the items listed are simple names.
-
The words "server" and "broker" are not capitalized unless they begin a sentence or appear in a title.
-
Avoid the word "simply" unless it clarifies.
-
For substitution of
{attr}
in code blocks, use[subs=+attributes]
. -
For styling of
*bold*
(bold
) in code blocks, use[subs=+quotes]
.
4.3. Naming files
| Item | Use | Not |
|---|---|---|
Custom attributes |
`ThisStyle` |
`this-style` |
`this_style` |
||
File and directory names |
`module_this-style` |
`module-this_style` |
`ModuleThisStyle` |
Learn more about naming files in the Files and Attributes appendix.
4.4. Styling headings and titles
Uses sentence-case headings for modules, tables, and figures.
| Item | Use | Not |
|---|---|---|
Section headings |
Configuring the system with RHEL |
Configuring the System with RHEL |
Configuring The System With RHEL |
||
Procedure Titles (gerund) |
Configuring |
Configure |
Table and block titles |
This is an example |
This is an Example |
This Is An Example |
||
Hyphenated headings |
Configuring point-to-point messaging |
Configuring Point-To-Point Messaging |
Configuring Point-to-point Messaging |
||
Unnumbered titled sections |
[discrete] |
4.5. Section IDs
The format defined here is recommended because it is the most stable and versatile of anchor formats, and supports variables that enable topics to be reused and cross-referenced properly. Other anchor formats include [[anchor-name]]
and [#anchor-name]
, but these formats either do not support variables for content reuse or do not support certain character types, such as periods. These limitations cause errors at build time.
Learn more about reusing content in the Modular Documentation Reference Guide.
| Item | Use | Not |
|---|---|---|
Document IDs |
[id="same-as-section-heading-{context}"] |
[[this-heading-here]] |
[[ThisHeadingHere]] |
||
[#anchor-name] |
4.6. Styling punctuation
-
Do not refer to an individual punctuation mark or special character by its symbol alone.
-
Use the name alone, or use the name followed by the symbol in parentheses.
-
Use the name alone if the punctuation mark or special character is standard, such as a comma or period, and including the symbol would clutter the text.
-
Include the symbol in parentheses when a punctuation mark or special character is not well known or when including the symbol improves clarity.
| Character | Name |
|---|---|
& |
Ampersand |
< > |
Angle brackets, opening angle bracket, or closing angle bracket |
" " |
Double quotation marks, opening quotation marks, or closing quotation marks (not quotes or quote marks) |
' ' |
Single quotation marks, opening quotation mark,or closing quotation mark (not quotes or quote marks) |
% |
Percent sign |
( ) |
Parentheses, opening parenthesis, or closing parenthesis |
$ |
Dollar sign |
* |
Asterisk (not star) |
# |
Number sign |
! |
Exclamation point (not exclamation mark or bang) |
4.7. User-replaced values
Style user-replaced values (replaceables) with angle brackets (< >) and italics.
Use underscores ( _ ) for multi-word values.
If you are referencing code or commands, also use monospace
.
| Value | Shows as |
|---|---|
_<my_replaceable>_ |
<my_replaceable> |
|
|
|
Tip
|
If adding a user-replaced value within a source code block, add
subs="+quotes" to the source tag for it to render. (For example : [source,shell,subs="+quotes"] ).
|
4.8. Styling Links
| Item | Use | Not |
|---|---|---|
Zip files |
zip |
.zip |
ZIP |
||
Tar files |
tar |
.tar |
TAR |
||
External links |
link:github.com[GitHub^] |
link:github.com[GitHub] |
Internal links |
xref:doc_id[Section Title] |
xref:doc_id[Section Title^] |
|
Note
|
If you use the caret syntax more than once in a single paragraph, you may need to escape the first occurrence with a backslash. |
|
Important
|
Links with attributes (including the subject and body segments on mailto links) are a feature unique to Asciidoctor. When they are enabled, you must surround the link text in double quotes if it contains a comma. |
-
Refer to the top-level sections of books as chapters, not sections or topics.
-
Do not split link paths across lines when wrapping text. This will cause issues with the doc builds.
5. Screenshot guidelines
5.1. Summary
-
Images should be saved as PNG or JPG, with a width of at least 660 px, at 110 dpi. Try to keep file size less than 300 KB.
-
Screenshots supplement the text, not replace it. Do not rely on images to provide information or context.
-
Do not include any testing/pre-release labels.
-
Do not include any personally identifying information.
-
Capture just the part of the screen or window that users must focus on; do not include window headers in the final screenshots unless completely necessary.
-
Manipulate your screenshots to condense important information in them and limit empty GUI space and other inconsequential parts.
5.2. General guidelines
-
Screen captures can be useful and successful when they achieve one or more of these objectives:
-
Illustrate a user interface that is fairly complex or difficult to explain in text
-
Help the user find a small element in a complex user interface
-
Show the results of a series of steps or user actions
-
Orient readers who are reading the publication without the user interface in front of them
-
-
Use the smallest number of screenshots possible.
-
Use screenshots to provide verification for the reader, rather than instruction. For example, screenshots are meant to supplement the text, not replace it. Do not rely on images to provide information or context. Instead, use them only to provide the reader with orientation.
NoteExample 1: Do not tell the reader to fill out a form according to the image; instead list the values needed for the form in text. NoteExample 2: Do not include an image of the directory tree; instead tell the user exactly where to find the file in running text (…/standalone/configuration/standalone.xml). -
Bearing in mind the affect on localization and accessibility, aim to write your document so that, were you to remove all screenshots from the book, the text still makes sense.
NoteFor example: Do not write "see image below" or "as is shown in the image" -
When you are snapping a GUI form, fill it with relevant input first.
-
Verify that the screenshots do not include any testing/pre-release labels.
-
Verifty that the screenshots do not include any personally identifying information.
NoteFor example: Always use 'test' as the username or fake contact information. If including the browser title bar hide your bookmarks and use a default browser theme. TipUse Chrome Dev Tools to select elements on the page and rewrite their contents. -
Include the cursor, mouse pointer, or menus only when their presence is significant.
-
Increase font size in the browser if it is hard to read before snapping the image.
-
Capture just the part of the screen or window that users must focus on.
NoteFor example: Unless necessary, do not include window headers in the final screenshots to indicate your currently used window manager or desktop environment. -
If possible, try not to cut any elements on the screen.
-
Show the user interface elements exactly as they are displayed for most users for quick recognition.
NoteFor example: If you have a custom theme on your system, disable it and take the screenshot using the default theme. -
Do not add borders around or drop shadows to your screenshots.
-
Do not use rounded corners. If the screenshot contains rounded corners, then that is acceptable. But, the screenshot should remain squared.
5.3. Tech specifications
-
Image width should be at least 660 px (internal tools will automatically resize the image to a max width of 660 px).
-
The preferred format is PNG or JPG .
-
The output resolution of images should be 110 dpi to ensure good quality in the generated PDF.
TipIn GIMP, select Image/Scale Image… to set resolution -
If possible, try to keep screenshot size less than 300 KB.
-
If possible, avoid snapping images in various terminals with 8-bit color scale or less.
-
Manipulate your screenshots to condense important information in them and limit empty GUI space and other inconsequential parts.
NoteYou can do this by setting a low screen resolution or resizing your browser window to a smaller size. Remember that you should only do this if it does not adversely affect the readability of the image. NoteIf you need to take a screenshot of the entire window, use a tool such as the Window Resizer Google Chrome extension to ensure the browser window is a set size before taking the screenshot. This helps ensure that all full window screenshots are of standard dimensions. -
If necessary, call attention to hard to find parts of the screenshot with red outlines (border: #C00, width:1px) or with a transparent gray (#ECECEC) layer over unimportant parts of the picture.
5.4. Accessibility
-
Section 508 compliance requires that all of the information is available in a text format for accessibility reasons (for instance, screen readers can not extract information from images).
-
Also, a large number of screenshots can possibly slow download of docs for those on slow connections (rarer for most enterprises these days).
5.5. AsciiDoc syntax
-
Insert a block-level image, which uses a double colon (::). Good for screenshots, diagrams, etc.
-
Example 1: Include an image title in title case (which automatically appends a Figure #).
.Image Title image::icon.png[Alt text, 50, 50]
-
Example 2: Insert an inline image. Note, there is only one colon (:) used here.
This is an inline image. image:icon.png[Alt text] Cool!
-
5.6. Additional questions
-
When should I add a screenshot to my book?
-
When introducing a new part of the UI.
-
When the UI is suboptimal and some elements are difficult to find, located in unusual places, hidden, or somehow less visible.
-
-
When, in the development cycle, should I add my screenshots?
-
Add them as late in the cycle as possible, preferably during the review process. At this late stage, hopefully there will be fewer UI changes to the product.
TipAdd a placeholder for the screenshot early on in the development cycle. This way it will not be forgotten.
-
-
What image editor should I use?
-
The recommended graphical editor is GIMP.
-
5.7. Browser extensions
5.7.1. Resizing screenshots
There are a couple simple browser extensions that can assist in resizing your browser to the appropriate dimensions.
-
Google Chrome extension: Window Resizer
-
Firefox add-on: Firesizer
-
You also need to install the Addon Bar: The Addon Bar (Restored)
-
6. Using make with documentation
When you make changes to the documentation, it is a good practice to do a local test build to verify the book builds successfully and renders as you expect before you submit the merge request back to upstream main.
Make is a useful tool for building your documentation and pushing it to a public website so that peer and quality reviewers can see your edits as the user would.
6.1. Make commands to build documentation
make docu_clean
-
Delete all temporary files
make docu_check
-
Execute the documentation checks in
.azure/scripts/check_docs.sh
make docu_html
-
Generate the HTML version of all the guides (the HTML files can be found in `documentation/html)
make docu_htmlnoheader
-
Generate the HTML version of all the guides without the HTML headers so they are suitable for including into a website (the HTML files can be found in `documentation/htmlnoheader)
6.2. Generate the Custom Resource API Reference
The documentation/modules/appendix_crds.adoc
file provides the main content for the Custom Resource API Reference.
It is generated directly from the Java code when building the operators.
If you change the Strimzi API, you need to regenerate the API Reference before submitting your PR by running the following from the root:
mvn clean -DskipTests install
make crd_install
The build uses yq
, so make sure it is kept up-to-date for it to work properly.
|
Note
|
You only have to generate the Custom Resource API Reference if you changed anything in the api module of the Java code.
|
Appendix A: Files and attributes
A.1. Important files
Standard attributes |
shared/attributes.adoc |
Shared includes |
shared/ |
Images |
shared/images/ |
A.2. Anchor names and file names
To optimize modular documentation, follow these guidelines for naming module anchors and files:
- Anchor names
-
Provide an anchor in the format
[id='anchor-name']
for every module so that it can be identified by Asciidoctor when reused or cross-referenced. Give the anchor the same or similar name as the module heading, separated by dashes:[id='anchor-name'] = Module Heading First sentence of topic.
NoteNote on other anchor formats (Not Recommended)The format defined here is recommended because it is the most stable and versatile of anchor formats, and supports variables that enable topics to be reused and cross-referenced properly. Other anchor formats include
[[anchor-name]]
and[#anchor-name]
, but these formats either do not support variables for content reuse or do not support certain character types, such as periods. These limitations cause errors at build time. - File names
-
Give the module file the same name as the anchor used in it (which is the same as or similar to the module heading), also separated by dashes. Add a prefix with an underscore to the file name to indicate the module type in the format
prefix-file-name
. Usesnip-
for a snippet,con-
for concept,ref-
for reference,proc-
for procedure,assembly-
for assembly, andimage-
for images and screenshots.Examples-
snip-guided-decision-urls.adoc
(Snippet of reusable content) -
con-guided-decision-tables.adoc
(Concept module) -
proc-creating-guided-decision-tables.adoc
(Procedure module for creating) -
proc-editing-guided-decision-tables.adoc
(Procedure module for editing) -
ref-guided-decision-table-examples.adoc
(Reference module with examples) -
ref-guided-decision-table-columns.adoc
(Reference module with column types) -
assembly-guided-decision-tables.adoc
(Assembly of guided decision table modules) -
image-guided-decision-example.adoc
(Screenshot or image of guided decision table modules)
-
Learn more in the Modular Documentation Reference Guide.
Appendix B: Setting up git
This section explains how to set up your system to connect to the proper git repositories.
B.1. Install git
If using Fedora, open your terminal and enter the proper installation command.
Fedora
$ yum install git (up to Fedora 21)
$ dnf install git (Fedora 22 and later)
Other operating systems
B.2. Configuring git
Once you have git installed you’ll want to set up your git account.
-
Open Terminal
-
Set your name and email
$ git config --global user.name "<your-name>" $ git config --global user.email "<your-email>"
TipThe email you specify should be the same one found in your email settings. To keep your email address hidden, see Keeping your email address private. -
Set your git defaults
$ git config --global pull.rebase true $ git config --global push.default simple
B.3. Fork the upstream (GitHub) repository
Fork the strimzi-kafka-operator
upstream repository to create a copy under your own GitHub ID. This allows you to work on multiple features and push changes to branches in your own GitHub instance so that you do not have to worry about losing work. When you are ready, you can request the changes to be merged back into the upstream repository.
-
Open a browser and navigate to the upstream repository located at
https://github.com/strimzi/strimzi-kafka-operator
-
Click Fork located in the upper right under your profile icon.
-
Select your user account for the location of the forked repository. This creates your own copy of the repository under your own GitHub ID.
B.4. Add your SSH keys to GitHub
If you choose to use the SSH address for your clones, you will need to add an SSH Key to GitHub first.
-
Open Terminal.
-
Check to see if you have a public SSH key:
$ ls ~/.ssh/
-
If you don’t have a key, generate one:
$ ssh-keygen -t rsa -C "<your-email>"
-
Open your key in an editor:
$ cd ~/.ssh/ $ vi id_rsa.pub
-
Copy the contents of the file to your clipboard.
-
Click New SSH Key.
-
Give your key a name and paste the contents of your key file.
-
Click Add SSH Key.
B.5.  Your forked repository is now the origin
repository for your local files.
|
Note
|
For more information about forking and cloning, consult the official GitHub documentation. |
Using SSH
-
Open Terminal.
-
Navigate to the directory where you want to create the new repository folder.
-
Type the following command:
$ git clone git@github.com:<username>/strimzi-kafka-operator.git
-
Navigate to the newly created
strimzi-kafka-operator
folder.$ cd strimzi-kafka-operator/
Using HTTPS
While there are fewer steps in this option, you have to enter your GitHub credentials with every change you make.
-
Open Terminal.
-
Navigate to the directory where you want to create the new repository folder.
-
Type the following command:
$ git clone https://github.com/<username>/strimzi-kafka-operator.git
-
Enter your GitHub credentials to complete the clone.
-
Navigate to the newly created
strimzi-kafka-operator
folder.$ cd strimzi-kafka-operator/
B.6. Add the upstream as a remote repository
Once you have your fork checked out and cloned locally, add the downstream repository as a remote.
Using SSH
-
List the current remote repositories:
$ git remote -v origin git@github.com:<username>/strimzi-kafka-operator.git (fetch) origin git@github.com:<username>/strimzi-kafka-operator.git (push)
-
Add the upstream as a remote repository and fetch its contents. This allows you to check out and work with the latest source code.
$ git remote add -f upstream git@github.com:strimzi/strimzi-kafka-operator.git
-
Enter your GitHub credentials to complete the remote add process.
-
Verify the new remote was added:
$ git remote -v origin git@github.com:<username>/strimzi-kafka-operator.git (fetch) origin git@github.com:<username>/strimzi-kafka-operator.git (push) upstream git@github.com:strimzi/strimzi-kafka-operator.git (fetch) upstream git@github.com:strimzi/strimzi-kafka-operator.git (push)
Using HTTPS
-
List the current remote repositories:
$ git remote -v origin https://github.com/<username>/strimzi-kafka-operator.git (fetch) origin https://github.com/<username>/strimzi-kafka-operator.git (push)
-
Add the upstream as a remote repository and fetch its contents. This allows you to check out and work with the latest source code.
$ git remote add -f upstream https://github.com/strimzi/strimzi-kafka-operator.git
-
Enter your GitHub credentials to complete the remote add process.
-
Verify the new remote was added:
$ git remote -v origin https://github.com/<username>/strimzi-kafka-operator.git (fetch) origin https://github.com/<username>/strimzi-kafka-operator.git (push) upstream https://github.com/strimzi/strimzi-kafka-operator.git (fetch) upstream https://github.com/strimzi/strimzi-kafka-operator.git (push)
B.7. Updating repository URLs
If the upstream repository is moved, you can change the downstream URL by using the following command:
$ git remote set-url upstream https://github.com/strimzi/strimzi-kafka-operator.git
Use the following command any time you need to fetch the latest source code locally:
$ git fetch upstream
Appendix C: Git tips
C.1. Delete branches
To delete all of your branches except the branch you are on:
$ git checkout main
$ for br in `git branch` ; do git branch -D $br ; done
To delete one branch:
$ git checkout main
$ git branch -D <branch-name>
C.2. Resolve conflicts
To resolve a merge conflict in an existing pull request:
$ git checkout <branch-name>
$ git branch -u origin <branch-name>
$ git pull --rebase upstream main
$ git push -f origin HEAD
C.3. Reset your fork
If your fork is both ahead of and behind the origin you can reset your fork to match the origin and start with a clean slate.
$ git checkout main
$ git reset --hard upstream/main
$ git push origin main --force
$ git pull upstream main
$ git push origin main --force
C.4. Using ssh-agent
to save your SSH key’s passphrase
If you have to enter your SSH key’s passphrase whenever working with the repository from the command line, you might want to use the ssh-agent to remember the passphrase for you.
Before using the ssh-agent
you will see a prompt to enter your passphrase after each git command.
[amq-repo]$ git pull --rebase upstream main
Enter passphrase for key '/home/<username>/.ssh/id_rsa':
To add your passphrase to the ssh-agent
:
[amq-repo]$ ssh-add
Enter passphrase for /home/<username>/.ssh/id_rsa:
After entering your passphrase you will see confirmation that your passphrase has been saved:
Identity added: /home/<username>/.ssh/id_rsa (/home/<username>/.ssh/id_rsa)
C.5. Access another writer’s unmerged commits
This is the process you can use if you need commits another writer has submitted in a merge request that is not yet merged.
-
Check out a new topic branch from upstream/main as you normally do.
$ git fetch upstream $ git checkout -b <new-topic-branch> upstream/main
-
If you have not yet added that writer’s remote repository, add it now.
$ git remote add -f <user> git@github.com:<user>/strimzi-kafka-operator.git
-
Rebase to bring in the changes that are in that user’s outstanding
origin/<merge-request-branch>
branch.$ git rebase <user>/<merge-request-branch>
(you’ll see the following response)
First, rewinding head to replay your work on top of it... Fast-forwarded <new-topic-branch> to <user>/<merge-request-branch>
Revised on 2022-11-03 11:15:09 UTC


This example loads data dynamically from the last.fm API and displays similar artists in a graph visualization.
Each artist's top five similar artists are loaded from last.fm. The selected node, its neighbors, and their neighbours are all displayed in the visualization.
Click a node to select that artist and see its neighborhood of similar artists.
Powered by last.fm


--- layout: page permalink: /projects/ webpack_entry_scripts: ['projects'] webpack_entry_styles: ['projects'] --- {% assign technologies = site.projects | map: 'technologies' | join: ',' | split: ',' | uniq | sort %} {% assign types = site.projects | map: 'type' | join: ',' | split: ',' | uniq | sort %}
Technologies
{%- for item in technologies -%} {%- endfor -%}


I need a shot of love,
I need a shot of love,
Don't need a shot of heroin to kill my disease,
Don't need a shot of turpentine – only bring me to my knees,
Don't need a shot of codeine to help me to repent,
Don't need a shot of whiskey help me be president,
I need a shot of love,
I need a shot of love.
Doctor, can you hear me?
I need a shot of love,
I need a shot of love.
I don't need no alibi when I'm spending time with you,
I've heard all of them rumors and you have heard 'em, too,
Don't show me no picture-show or give me no book to read,
It don't satisfy the hurt inside, nor the habit that I feed.
I need a shot of love,
I need a shot of love.
Why would I want to take your life?

I need a shot of love,
I need a shot of love.
Don't wanna be with nobody tonight,
Veronica's not here, Mavis just ain't right.
There's a man that hates me and he's swift, smooth, and near:
Am I supposed to set back and wait until he's here?
I need a shot of love,
I need a shot of love.
What makes the wind wanna blow tonight?
Don't even feel like crossing the street and my car ain't acting right,
Called home, everybody seemed to have moved away,
My conscience is beginning to bother me today,
I need a shot of love,
I need a shot of love.
I need a shot of love,
I need a shot of love,
I need a shot of love,
I need a shot of love,
If you're a doctor, I need a shot of love.


Comments
-
Greg Hurrell
Thanks for opening the bug report, Daniel. The cover art issue was originally brought up in this forum thread:
https://wincent.com/a/support/forums/ubbthreads.php?ubb=showflat&Number=1270&page=1&gonew=1
As for the crash, can you please file that in a separate bug and attach the crash report? (you should be able to find it in ~/Library/Logs/CrashReporter)
-
Jon Boyd
I can confirm part of this bug running 10.5 on an aluminum 24" iMac, using Synergy 3.2: namely, that art stored in iTunes doesn't get displayed in the Synergy floater. But for me, Synergy DOES try (mostly successfully) to get art from Amazon, adding it to the Album Covers folder (not the Temporary Album Covers folder, where iTunes-held art gets put).
(Synergy doesn't seem to redraw the floater, though, until music is paused or rating is changed or similar -- so maybe that's why Daniel is thinking Amazon art isn't being loaded? But upon a pause, the fresh Amazon art does appear in the floater.)
-
Daniel Heron
All my artwork is grabbed from the iTunes auto fetch art built in, minus a few albums which I had to go out and copy paste into the "get info" ID3 info. I have left on the show artwork to see if anything happens, and surprisingly I have two Albums that show art in Synergy. Usher - Confessions and As I lay dying - An ocean between us I don't know why, but they work. I spent a little while trying to figure out what was special about those albums and can find anything. I tried to see what Jon Boyd said and realized that the "Extra visual feedback..." option does nothing for me now. Also Synergy crashed again trying to hold play pause. I will attach report on the other thread.
-
Greg Hurrell
I've received a report that after upgrading to iTunes 7.5 the problem has gone away. The user who reported this said that he also deleted the album covers found at:
~/Library/Application Support/Synergy/Album Covers/
Can anyone confirm this?
-
Daniel Heron
The artwork now works with iTunes 7.5 in leopard.
-
pbryanw
I can confirm this too. I didn't have to change anything re: deleting folders, it just started working properly after upgrading to 7.5.
-
Greg Hurrell
Thanks for the confirmation.
-
John Owen
Using iTunes 7.5, Synergy 3.2, on Leopard 10.5. Synergy displays all EXISTING artwork and successfully retrieves and displays new artwork for selections that have artwork available on Amazon. Successfully displays artwork that was retrieved from ID3 tags BEFORE upgrading to Leopard. But, new tracks which do not have artwork on Amazon but have graphics which have been added to the track in iTunes are not having the graphic added to the Temporary Album Covers folder and don't display in the floater window.
-
Jon Boyd
I cannot corroborate what John Owen says (in Comment #8). It's working fine for me.
To be specific, now with iTunes 7.5 and Synergy 3.2 and Leopard, I can add artwork to tracks that have never had it before using either [1] iTunes's own "Get Album Artwork" command or [2] the manual import of artwork in the Artwork tab of a track's "Get Info" dialog. Either way, the art displays for me in the Synergy floater and also is added to the Temporary Album Covers folder.
-
John Owen
Never mind. I deleted my old preferences file and now everything works fine.Now files with custom artwork not on Amazon added after upgrade display appropriately.
-
KalleKanin
Maybe this isn't a bug, I don't know since I'm a new Synergy user, but I find it somewhat disappointing that the artwork Synergy finds isn't embedded in the MP3s. Now when I'm using my iPod I still don't have the artwork following the files.
I have assumed all along that this was a bug, and now that I'm writing this here I'm suddenly insecure and wondering if I have misunderstood how it is supposed to work.
-
Greg Hurrell
(In reply to comment #12)
Maybe this isn't a bug, I don't know since I'm a new Synergy user, but I find it somewhat disappointing that the artwork Synergy finds isn't embedded in the MP3s. Now when I'm using my iPod I still don't have the artwork following the files.
I have assumed all along that this was a bug, and now that I'm writing this here I'm suddenly insecure and wondering if I have misunderstood how it is supposed to work.
At the moment there is no automatic transfer of art into iTunes but you can do it manually using the "Transfer cover to iTunes" item in the Synergy global menu.
I was hesitant to add automated transfer because of the risk of sending a wrong cover, but there is a feature request open in here to add this as an optional feature.
See:
-
John Owen
This problem has returned when I upgraded iTunes to 7.6.1. Specifically, Synergy will not access artwork directly from iTunes.It will try to get from Amazon, but if artwork is in iTunes but not Amazon, the large question mark is displayed. I tried deleting the synergy preference file which worked when I had the problem before, but the problem persists.
-
Jon Boyd
I hear that similar problems are recurring for many apps that use AppleScript to access iTunes 7.6.1. I myself don't seem to be seeing this Synergy bug again (but I do have problems with "Remote Buddy" from iospirit, for what it's worth). See the Apple Support Forums for a number of reports of similar problems with 7.6.1, if that's any comfort. :)
-
Greg Hurrell
In the past when Apple has made a change like this that breaks things, they've been pretty good about fixing it for the next release. I'm hoping that 7.6.2 (or 7.7 if that is the next version) will address this.
-
bugzilla user 528
I'm having this problem as well.. It's really annoying me, so it's probably recent (since 7.6.1). :) The big "?" appears for all types of songs, from iTMS purchased, to albums set by Clutter (pre-Leopard, and embedded in the songs), to albums whose artwork was retrieved by iTunes (and not embedded, AFAIK).
I ran "tell application "iTunes" to get data of front artwork of current track" in Script Utility, and that responds with a <> after 5 seconds or so.
I've begun to manually paste album covers into the Synergy folder.. so far, it's working fine. Could you please post the naming rules you use and any other tips? (letters dropped, length limit, etc.) Thanks!
-
Greg Hurrell
See the comments on bug #660:
https://wincent.com/a/support/bugs/show_bug.cgi?id=660
For a possible lead on how I might be able to work around this problem while waiting for Apple to fix the breakage. Basically, it looks like if you ask iTunes for art immediately on track change you won't get it, but if you wait long enough then you will... Will have to investigate to see what sort of interval will be required.
-
Greg Hurrell
This issue was fixed long ago and forgot to close it.
-
Greg Hurrell
Status changed:
- From: Open
- To: Closed
-
anonymous
I am running Mac OS X 10.5.6 and iTunes 8.1.1 (10) and Synergy 3.2 does not seem to display album art, retrieved from either iTunes or Amazon.
-
Greg Hurrell
Perhaps you have a corrupt preferences file? You could try the troubleshooting techniques listed on this page.
Add a comment
Comments are now closed for this issue.


There are such things as a Git Repository. You have a project, and this project would then be imported into a repository. With that project there, one can "pull" the project out, edit it however, and "push" it back into the repository. This would then create another project, not deleting the first one, so that you have a "branch"or a thread of all of the edited projects. It would be a clone of the original which could be pulled and edited and pushed as many times as one wants, without overwriting the previous edit. This is all done in a Git Repository, basically a library for all of these edited projects.
There are many different commands when using Git, but there are a few basics:
Version control systems automatically records the who, what and when about files. Multiple people can work on it at the same time.  Using a git repository is like using a library; what you check out is always still there and what you put back will be recorded as a new book while the old one still remains.


--- title : Piston Game Engine categories : [piston] ---
The bricks are out of the box! Take a bite of some nice modular libraries for the real world, such as games and interactive applications, written for performance, ergonomics and cross platform development.
Piston was started in 2014 by Sven Nilsen to test back-end agnostic design of 2D graphics in Rust. The project ignited several ambitious projects across the Rust ecosystem. The PistonDevelopers organization is a place where everyone who wants to contribute have write access. This makes it easier to share maintenance, integrate projects and pursue personal goals. Today the Piston project is developing 2D, 3D, immediate UI, image formats and processing, Visual Studio plugin for Rust, Minecraft clone client/server, sprite animation, AI, and meta parsing for domain specific languages and text formats. We share research and are part of a greater community. You can be a part of it.
extern crate piston_window;
use piston_window::*;
fn main() {
let mut window: PistonWindow =
WindowSettings::new("Hello Piston!", [640, 480])
.exit_on_esc(true).build().unwrap();
while let Some(e) = window.next() {
window.draw_2d(&e, |c, g, _device| {
clear([1.0; 4], g);
rectangle([1.0, 0.0, 0.0, 1.0], // red
[0.0, 0.0, 100.0, 100.0],
c.transform, g);
});
}
}


Podfast
Role: Creator, Software Developer
Platform: iOS
Technologies
- iOS
- Audio Streaming
- RSS
- Firebase Remote Config
- Firebase Analytics
- Realm
What’s Up
Platform: iOS/Android
Role: Software Developer (iOS), Technical Project Manager
Technologies
- iOS
- Firebase Analytics
- AppCenter Builds
- Alamofire
- Realm
Frog
Platform: iOS/Android
Role: Software Developer (iOS), Technical Project Manager
Technologies
- iOS
- Firebase Analytics
- AppCenter Builds
- Alamofire
- Realm
My Cosmote
Platform: iOS/Android
Role: Software Developer (iOS)
Technologies
- iOS
- Firebase Analytics
- AppCenter Builds
- Alamofire
- Realm
#MenoumeSpiti MovementSMS
Platform: iOS
Role: Creator, Software Developer
Technologies
- SwiftUI
- Firebase Remote Config
Accusonus Rhythmiq
Platform: Windows/Mac available as AU/VST/VST3 Plugin
Role: Software Developer
Technologies
- C++
- Eigen
- JUCE
- MIDI
- Jenkins
Abs_Continuum
Platform: iOS
Role: Creator, Software Developer
Technologies
- Objective-C
- Procedural/Generative Audio
- Pure Data
- libpd for iOS


{% extends "base.html" %} {% load staticfiles %}
{% block content %}
Raised and born in Managua, Nicaragua. Consider this blog as my first step in scientific divulgation. I have always been passionate about Astronomy, Astrophysics, and Cosmology. Now I'm planning on getting a Major in Astrophysics. I enjoy spending my time on citizen science projects but, like a normal person I have my hobbies which include go out with friends, travel and watch series.
As a web developer, I build user-friendly websites, most of them based on Django, but I'm always eager
to learn about new technologies, industry trends and best practices. I tend to code things from scratch, and enjoy bringing ideas to life in the browser.
Actually, I'm building this blog using Django; it allows me to quickly grasp the project's structure if I want to implement an idea. In addition, it keeps me in touch with Python. Python is increasingly used in astronomy, both by institutions developing software for new instruments, telescopes, and missions and by astronomers analyzing their data. Consequently, I've started to give it a try to VysPy, which is a high-performance 2D/3D data visualization python library for interactive astrophysical simulations. I might show you one or two projects that I'm working on, so stay tuned.We Are All Stardust
Welcome to my personal blog, where I share what I'm learning about Astrophysics, Astronomy & Cosmology.
Latest Articles
{{ object.title }}
And yes... I'm a web developer.
Besides, NASA uses Django.
Some of my skills
If you want to contact me, either for work or research, you can send me a message, and I will answer as soon as I can.
Mobile: (+505) 7524 0725
<EMAIL_ADDRESS>lezamaral@yahoo.es


Posted: 2016-07-28
, Modified: 2016-08-13
Tags: none
Representation learning means you have to first find a good representation—some hidden structure—for the data in order to learn it.
Low-dimensional structure in high-dimensional space
Consider a distribution on a low-dimensional space. Now suppose this low-dimensional space is embedded in a high-dimensional space, and noise in the complementary (may be orthogonal) subspace is added. Recover the low-dimensional space and the structure on this space.
- Suppose complementary noise is Gaussian. [TV16] show how to recover given that the fourth moments of the distribution on the low-dim space are bounded away from that of a Gaussian. (Ex. clusters; a product distribution is limited by the dimension closest to Gaussian, etc.)
- Can we weaken the assumption on the complementary noise? (Arora, Ge, Ma) Put an assumption on “unimodality” in other directions.
- Suppose the subspace is a coordinate subspace, and the structure is a low-rank subspace within that. See relevant coordinates.
Consider a dictionary-learning setting. There are many variations here. What we want to say is the following: given there’s a transformation in a certain class—ex. a neural net—that makes the data structured, can you learn the structure/parameters?
- Suppose the samples are sparse linear combinations of \(a_i\). This is the setting of dictionary learning. See AGM14, AGMM15
- Can we generalize from independent \(p\de_0+(1-p)D\) distributions to non-Gaussian distributions?
- Suppose that noise is added. The algorithm above works if the dot product between 2 noise vectors is \(o(1)\). Ex. each coordinate is \(o\prc{n^{\rc 4}}\). Then the dot product is summing \(n\) numbers \(o\prc{n^{\rc 2}}\) which is \(o(1)\). Can we do noise up to \(o(\sqrt n)\)? The overlapping communities problem seems hard now. Before we could threshold at \(\rc 2\), but now, noise is up to \(\sqrt n\). cf. in SBM, you can deal with \(\rc{\sqrt n}\) difference in probabilities; in SVD, you can add a random matrix of entries \(o(\sqrt n)\) because the eigenvalues are much smaller.
- In the undercomplete case, if the noise is orthogonal to the subspace spanned by \(a_i\), we’re in the setting of [TV16]. Products of non-Gaussians are OK.
- Changing the formulation instead to that \((\an{x,a_i})_i\) is sparse is equivalent to learning the dictionary \((A^+)^T\). (Warning: this looks different in the over/undercomplete case.)
Thoughts 8-13
The problem here is really about unsupervised learning: given that there is a representation of a certain form on top of which you can train a classifier, etc., in the absence of labels find the representation.
Kernel dictionary learning
Let \(x\)’s be the data points and \(X=[\Phi(x)]\) be the image under \(\Phi\). \(\Phi\) is such that \(K(x,y) = \an{\Phi(x),\Phi(y)}\). Kernel dictionary learning seeks to find \(X=DA\), \(D\in \R^{\iy\times k}\). But assume \(D=XE\) is a linear combination of \(\Phi(x)\)’s. Then the objective becomes minimizing \(\ve{X-XEA}\) (what norm?) subject to sparsity constraints. Do alternting minimization, etc., using the fact that the norm (and gradients) can be evaluated easily using the kernel trick.
Try to use kernel dictionary learning
Warning: these steps are not justified.
Suppose that
\(x\)’s are latent variables, that are sparse
\(+\)noise, and we observe
\[y=Af(x).\] In our case,
\(f=\ln\) (so that sparse
\(+\)positive noise becomes few large entries). Then (maybe we should have
\(A^T\)? Not sure)
\[\begin{align}
A^+ y &= f(x)\\
f^{-1}(A^+y) &= x\\
\Phi(A^+)\Phi(y) &= x \\
\Phi(y) &=\Phi(A^+)^+ x.
\end{align}\]
This suggests doing dictionary learning on \(\Phi(y)\) (or a finite approximation of this), finding \(x\)’s, then solving the system of equations \(A^TY=f(X)\). (Take many samples \((x,y)\) and do least squares.) In order for this to work, we need to
- justify all the pseudo-inverses, transposes (e.g. OK if inputs random: \(A^TAx\approx x\) coordinatewise so things like thresholding work)
- a finite approximation of \(\Phi\) is OK.
- DL on \(\Phi(Y)\) recovers something that is close to the desired solution.
- The noise model of \(x\) meets the requirements for the DL algorithm.
This does DL in the larger space though. Can we use the kernel trick to make it more efficient?
- We can try to do the kernel trick by first doing KSVD on \(\Phi(Y)\). (Find the singular vectors as linear combinations of \(\Phi(Y)\).)
- If the DL algorithm only relies on \(Y^TY\), we’re in good shape because we can compute this exactly using \(\Phi\).
So an attempt at an algorithm.
- KSVD
- DL/ICA to find \(X\).
- Solve for \(A\).
Generalizing AGMM
- Can we generalize to \(x=\) sparse + noise rather than \(y=A\pat{sparse} + \pat{noise}\)? We still need noise part to be \(o(1)\) though so \(\E x_i =o(1)\) (why? otherwise I don’t think you can even do sparse recovery.) Suppose the noise distribution is known; perhaps we can correct for the noise in the AGMM algorithm. If the noise is not known, ex. its mean is not known, this seems difficult.
- The algorithm involves thresholding and looking at a graph. Can we instead have weights, ex. a triangle has weight \(\an{u,v}\an{v,w}\an{w,u}\)? The problem is if \(u,v,w\) are in 2 communities this multiplies by 8. It’s not a natural additive decomposition. But perhaps something can still be done. Ex. Find overlapping communities such that most triangles are fully inside one community, and triangles occupy a large proportion of each community.
- AGMM just requires \(YY^T\), so knowledge of the dot products is enough. (Kernel trick works.)
- When threshold is not known? Noise is \(<\al\), signal is \(>\al\). Add an entry \(1\) to every vector, but that entry is not 0-centered…
Different optimization problem? (Ex. add sparsity regularization, ex. \(\ved_1\).) SDP relaxation? It’s hard to integrate the sparsity constraints.
Redo analysis with continuous observations?
Tensor decomp for mixed community detection [Anandkumar, Ge]: look at \((\E_{x\in X} \an{x,a}\an{x,b}\an{x,c})_{a,b,c}\).
I think I’m trying to do too many things at once. Allow larger noise, agnostic noise, arbitrary mean/cutoff…
Look at the simplest problem inspired by the problem. Ex. Assume there are \(k=10\) functions \(\si_k(A_k^Tx+b_k)\) (normalized) that map data to close to \(e_1,\ldots, e_{10}\)? Completely unsupervised learning. AGM is much simpler with sparsity 1…
DL vs. ICA, tensor decomposition
Why can’t we just solve dictionary learning with tensor decomposition? Suppose \(x_i\) are independent, symmetric, non-Gaussian, mean 0. (Symmetric mean 0 can probably be loosened if we modify this.) Then \[\E y^{\ot 4} -(\E y^{\ot 2})^{\ot 2} =\sum_i A_i^{\ot 4} [(\E x_i)^4 - (\E x_i^2)^2].\] We don’t even need the \(x_i\) to be from a sparse distribution—any non-Gaussian distribution (actually, want 4th moments to be non-Gaussian) will do!
Reasons why this doesn’t trivialize the problem?
- Overcomplete tensor decomposition is hard/not well-understood.
- The \(x_i\) aren’t completely independent. (But we can assume almost 4-wise independence, etc.—the AGMM algorithm also requires similar assumptions.)
- Tensor decomposition is inefficient.
- It doesn’t find \(x\)’s. (But we can do inference separately.)
- Tensor decomposition in this regime just doesn’t work in practice. (Practically, what can you expect???)
I think I need to familiarize myself with practical tensor decomposition and DL!
Previous work
Unsupervised SVM
Relaxing independent sparsity
Independent sparsity—required for AGM14 and AGMM15 (actually, 2-wise “almost independence” is good)—is unrealistic because features may be correlated/co-occur. A first step may be to consider group sparsity.
Google for “dictionary learning group sparsity”:


Inherited by com.ualberta.team17.datamanager.MoreLikeThisFilter, and com.ualberta.team17.datamanager.TopUpvotedDataFilter.
|
|
static final int | DEFAULT_NUM_RESULTS = 10 |
| |
A DataFilter represents a Data Manager query. Combined with a Comparator it is everything you need to query either the local or network data manager (although it has knowledge of neither.)
- Author
- michaelblouin
| Boolean com.ualberta.team17.datamanager.DataFilter.accept |
( |
QAModel |
item | ) |
|
Checks if the given item matches the Data Filter.
Note that not all of the elastic search functionality is available in this method.
- Parameters
-
- Returns
- Returns True if the item matches, and false if not.
| void com.ualberta.team17.datamanager.DataFilter.addFieldFilter |
( |
String |
field, |
|
|
String |
filter, |
|
|
FilterComparison |
comparisonMode |
|
) |
| |
Adds the field to the data filter, using the specified comparison mode.
This will cause items to be returned that contain the field matching the arguments.
- Parameters
-
| field | |
| filter | |
| comparisonMode | |
| void com.ualberta.team17.datamanager.DataFilter.addFieldFilter |
( |
String |
field, |
|
|
String |
filter, |
|
|
FilterComparison |
comparisonMode, |
|
|
CombinationMode |
combinationMode |
|
) |
| |
Adds the field to the data filter, using the specified comparison mode and combination mode.
The combination mode specifies how this filter combines with the other filter types. With the MUST combination mode the filter must be satisfied by every object in the result. Using the SHOULD combination mode objects do not need to satisfy the requirement UNLESS it is the only filter on the object.
If an IdentityComparator is used, items matching one or more SHOULD filters will be boosted above those that do not match.
- Parameters
-
| field | |
| filter | |
| comparisonMode | |
| combinationMode | |
| List<FieldFilter> com.ualberta.team17.datamanager.DataFilter.getFieldFilters |
( |
| ) |
|
Returns the list of FieldFilters that make up the DataFilter.
- Returns
| Integer com.ualberta.team17.datamanager.DataFilter.getMaxResults |
( |
| ) |
|
Gets the maximum number of results to be returned in a single page by the filter.
- Returns
| Integer com.ualberta.team17.datamanager.DataFilter.getPage |
( |
| ) |
|
Gets the current page number of the data filter.
- Returns
| ItemType com.ualberta.team17.datamanager.DataFilter.getTypeFilter |
( |
| ) |
|
Gets the item type filter.
- Returns
| void com.ualberta.team17.datamanager.DataFilter.setMaxResults |
( |
Integer |
maxResults | ) |
|
Sets the maximum number of results to be returned in a single page by the filter.
- Parameters
-
| void com.ualberta.team17.datamanager.DataFilter.setPage |
( |
Integer |
page | ) |
|
Sets the current page number for the data filter.
Note that it is perfectly fine to use the same DataFilter instance to query subsequent pages in a single query (ie the filter need not be reconstructed.)
- Parameters
-
| void com.ualberta.team17.datamanager.DataFilter.setTypeFilter |
( |
ItemType |
type | ) |
|
Sets the item type filter that must be satisfied. It is preferred to use this method than to query for item type using a field filter, as it will execute faster.
- Parameters
-
The documentation for this class was generated from the following file:
- C:/Users/Corey/git/Team17Project/moqa/src/com/ualberta/team17/datamanager/DataFilter.java


Graduate Student in USC
Swift Core Motion
Oct 26, 2017 / Written by Chengyu
This article shared my experience in using the CMMotionManager() in Swift.
1. What is Core Motion? What can we do with this package?
If the developer wants to access to the motion- and environment-related data from the embedded hardware from the iPhone, including the accelerometers, gyroscopes, pedometers, magnetometers and barometers, the core motion library provides corresponding functions. One prevalent example is a game might use accelerometer and gyroscope data.
Here is my understanding of accelerometers and gyroscopes :
Even though both value changes as the user changes the device position. Accelerometers is the absolute position for the device but the gyroscpes is the relative position.
coordinate in CoreMotion data
2. How to use Core Motion properly
Firstly, we need to import this library:
import CoreMotion
Then we need to initialize a CMMotionManager:
var motionManager = CMMotionManager()
The following steps is going to talk about how to keep track of the accelerator/gyroscopes values:
override func viewDidAppear(_ animated: Bool) {
//in case of generating acceleraometer data too repaidly.
motionManager.accelerometerUpdateInterval = 0.3
motionManager.startAccelerometerUpdates(to: OperationQueue.current!) { (data, err) in
if let myData = data {
print(myData.accleration.x)
print(myData.accleration.y)
print(myData.accleration.z)
}
}
}
For the above codes, you can use the function motionManager.startGyroUpdates() to keep track of gyroscopes value as well.
A new 3-dimension accelerometer data will be generated in every 0.3 seconds so you can call your own function inside this function.
I used one vertical slider whose cursor changes as the y value changes, therefore, I called the cursor change function whenever the value of myData changes.


---
layout: talk_reveal4
title: SARS-CoV-2 continuing evolution
venue: COVID DivDir
author: Trevor Bedford
widescreen: true
draft: true
---
Trevor Bedford (@trvrb)
{{ page.title }}
Fred Hutchinson Cancer Research Center / Howard Hughes Medical Institute
{{ page.date | date: "%-d %b %Y" }}
{{ page.venue }}
1. Overview of SARS-CoV-2 over the course of the pandemic
2. Emerging variants
3. Expectations for endemicity
Global SARS-CoV-2 evolution over the course of the pandemic
Rapid accumulation of spike mutations driving displacement
S1 evolution remarkably fast relative to seasonal influenza
Initial variants characterized by repeated evolution at spike 484K and 501Y
We're now seeing repeated evolution at spike 452
This pattern is familiar from seasonal influenza
BA.4 and BA.5 emerging from South Africa with spike mutations 452R and 486V
BA.2.12.1 emerging from Northeastern US bearing spike mutation 452Q
Variant-specific epidemics shown by partitioning case counts with variant frequency
BA.4, BA.5, BA.2.12.1 driving cases across countries
Rt for BA.2.12.1 greater than BA.2 and Rt for BA.4/5 greater still
Relative fitness of BA.4, BA.5 and BA.2.12.1 visible in the US
BA.4 and BA.5 driving substantial epidemics in South Africa
Immunity and reduced intrinsic severity has dropped CFR
Broad expectations of endemicity based on comparison with flu
1, 2 and 3 suggest a virus that circulates at higher levels than flu, but individual infections aren't much more severe in terms of mortality than H3N2 influenza.
Seasonality suggests winter "COVID season", but Omicron-like events could overcome seasonality.
SARS-CoV-2 genomic epi: Data producers from all over the world, GISAID and the Nextstrain team
Bedford Lab: John Huddleston,   James Hadfield,   Katie Kistler,   Louise Moncla,   Maya Lewinsohn,   Thomas Sibley,   Jover Lee,   Cassia Wagner,   Miguel Paredes,   Nicola Müller,   Marlin Figgins,   Denisse Sequeira,   Victor Lin,   Jennifer Chang


Badge
Small count and labeling component.
Basic example
Badges scale to match the size of the immediate parent element by using relative font sizing and em units.
Example heading New
Example heading New
Example heading New
Example heading New
Example heading New
Example heading New
Positioned example
Use utilities to modify a .badge and position it in the corner of a link or button.
Pill examples
Use the .rounded-pill utility class to make badges more rounded with a larger border-radius.
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Faded examples Custom
Use the .bg-${color}-faded class for a faded badge variant
Primary
Secondary
Success
Danger
Warning
Info
Dark


WITNESS LIST Criminal Justice Committee May 23, 2003 - 8:00A HB 155 Registering, but not testifying: On: Gonzalez, Victor Lobbyist (First Amendment Coalition of Texas), Austin, TX HB 236 Registering, but not testifying: For: Rolater, John Asst. District Attorney (Dallas County District Attorney), Dallas, TX On: Edmonds, Shannon (Tx District & County Attorneys Association), Austin, TX HB 420 FOR: C. Dechaut, Thomas Senior Citizen / Task Force Chairman (Greater San Antonio Crime Prevention Commission), San Antonio, TX Registering, but not testifying: For: Herberg, Clifford Chief, White Collar Crime Division (Bexar County District Attorneys Office), San Antonio, TX Rocha, Susan Attorney Lobbyist (City of San Antonio), San Antonio, TX HB 532 FOR: Owen, Christie (Self), Arlington, TX Scott, Wanda (Self), Italy, TX Registering, but not testifying: For: Janek, Alison Counselor (Self), Italy, TX Janek, Cortney (Self), Italy, TX Owen, Cheryl (Self), Italy, TX Owen, Robert (Self), Italy, TX Owen, Sam (Self), Italy, TX Reeves, Sid (Self), Italy, TX On: Edmonds, Shannon (Tx. District & County Attorneys Association), Austin, TX HB 565 Registering, but not testifying: For: Oakley, Keith (Associated Security Services and Investigators of Texas), Austin, TX HB 819 AGAINST: Edmonds, Shannon (Texas District and County Attorney's Association), Austin, TX HB 875 Registering, but not testifying: For: Bruno, Tina (Self), San Antonio, TX Morgan, Gary Legislative Committee Chair (Dental Labortories Association of Texas), Austin, TX On: Ablon, Ben Director of Enforcement (Texas Dental Board), Austin, TX Ablon, Ben Director of Enforcement (Texas Dental Board), Austin, TX Schmidt, Bobby D. Legislative Director (Texas State Board of Dental Examiners), Austin, TX Schmidt MED, Bobby D. Executive Director (Texas State Board of Dental Examiners), Austin, TX HB 1114 ON: Ferrero, David Captain (Texas Alcoholic Beverage Commission), Austin, TX HB 1230 Registering, but not testifying: On: Jesselet, Ron Executive Director (State Office of Risk Management), Austin, TX White, Bonita Division Director (Texas Department of Criminal Justice), Austin, TX HB 1246 FOR: McCracken, Mindy Asst. District Attorney (Travis County District Attorney's Office), Austin, TX Registering, but not testifying: On: Edmonds, Shannon (Tx. District & County Attorneys Association), Austin, TX HB 1326 Registering, but not testifying: For: Denholm, Lt. John Sheriff of Harris Co. (Tommy Thomas), Houston, TX Domingues, Sonya (San Antonio Police Department - Albert Ortiz), San Antonio, TX Mitchell, Seth Bexar County IGR Services (Bexar County Commissioners Court), San Antonio, TX Moorhouse, Toni Councilmember (City of San Antonio), San Antonio, TX Noll, Chuck Assistant District Attorney (Harris County District Attorneys Office), Houston, TX Rocha, Susan Lobbyist (City of Lubbock), San Antonio, TX Against: McCool, William T. Sheriff (Sheriff's Association of Texas), Marshall, TX On: Zgabay, Sherrie Assistant Manager (Texas Department of Public Safety), Austin, TX HB 1592 Registering, but not testifying: For: Smith, Tom "Smitty" Director (Self), Austin, TX HB 1609 Registering, but not testifying: For: Fenz, Caton Legislative Coordinator (Harris County Commissioners Court), Houston, TX Oeller, Carol Director (Harris County Office of Court Services), Houston, TX HB 1629 Registering, but not testifying: For: Rolater, John Asst. District Attorney (Dallas County District Attorney), Dallas, TX On: Edmonds, Shannon (Tx. District & County Attorneys Association), Austin, TX HB 1661 Registering, but not testifying: For: Oakley, Keith (Associated Security Services and Investigators of Texas), Austin, TX HB 1872 Registering, but not testifying: On: Edmonds, Shannon (TDCAA), Austin, TX HB 2725 Registering, but not testifying: For: Fenz, Caton Legislative Coordinator (Harris County Commissioners Court), Houston, TX Hillier, King Director, Legislative Relations (Harris County Commissioners Court), Houston, TX Lemon, W. Clyde (Charles Bacarisse Harris County District Clerk), Houston, TX Rodriguez, Jennifer Shelley Attorney (County & District Clerks Association of Texas), Austin, TX HB 2829 Registering, but not testifying: For: McGinnis, Larry Legislative Consultant (Department of Public Safety Officers), Austin, TX On: Wright, Eric (DPSOA), Austin, TX HB 2881 FOR: Hurst, Shane White (Self), Austin, TX Registering, but not testifying: On: English, Angela Accessibility & Disability Rights (Governor's Committee on People with Disabilities), Austin, TX Pound, Pat Executive Director (Governor's Committee on People with Disabilities), Austin, TX HB 2895 ON: Nichols, Neil General Counsel (Texas Youth Commission), Austin, TX Robinson, Steve Executive Director (Texas Youth Commission), Austin, TX HB 3520 Registering, but not testifying: For: Schwartz, A. (Rodney Vannerson), Austin, TX


The Negotiator (1998) Samuel L. Jackson, Kevin Spacey, David Morse, Ron Rifkin, John Spencer, J. T. Walsh, Regina Taylor, Siobahn Fallon, Paul Giamatti, Joey Perillo, Nestor Serrano, Jim Jenkins, Randy Walker. Written by James DeMonaco and Kevin Fox. Directed by F. Gary Gray. 138 minutes.
Rated R, 3.5 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo-online.com/film/ Archive reviews at http://us.imdb.com/M/reviews_by?Edward+Johnson-ott To receive reviews by e-mail at no charge, send subscription requests to<EMAIL_ADDRESS>"The Negotiator" is one of those films where you can virtually see the gears turning in the writers' heads. Having come up with a nifty concept - - what if two top-notch hostage negotiators faced off against one another -- the writers must figure out how to get the characters into their proper places, and that's where the film suffers. Plot contrivances, overly abrupt attitude changes and awkwardly grafted-on action sequences keep this thriller from hitting the bull's eye, although it still entertains despite the problem areas.
Shrewd casting helps. Two of the finest actors working today, Samuel L. Jackson and Kevin Spacey are masters of intensity. Jackson's specialty is creating fiercely intelligent characters with a love of language, while Spacey takes a more low-key approach, focusing on droll, erudite types who mask their humanity with layers of finely-honed cynicism. What a treat to watch them interact in the same film.
Combining elements of "The Fugitive" and "Die Hard," "The Negotiator" deals with a very good man in a very bad situation. Danny Roman (Jackson) is one of Chicago's best hostage negotiators and a bit of a show-boater. After a tense, well-staged opening scene, where he risks his life to rescue a little girl held captive by her deranged father, Roman promises his recent bride that he'll stop taking such extreme chances and start coming home every night for dinner. As any seasoned moviegoer knows, cops making statements like that are just begging for trouble.
Sure enough, trouble finds him when his partner, ready to spill the beans about departmental embezzlement of retirement funds, is murdered and Roman becomes the prime suspect. The film hits an awkward spot here, as the department turns against the heroic cop almost instantly. While the move is handy for the plot, it just doesn't wash. As a number of real- life police situations have shown, officers are generally given the benefit of doubt within the department even when their misdeeds are witnessed by many. The idea that Roman's fellow officers, knowing what kind of man he is, would turn against him based solely on shaky circumstantial evidence is patently unbelievable.
Realizing that his life is about to be destroyed by a lazy plot device, Roman makes a desperate move, taking hostages in the 20th floor Internal Affairs office. As a "Dog Day Afternoon" street scene develops, Roman insists he'll only speak with Chris Sabian (Spacey), another top hostage negotiator from a different precinct. Roman's logic is clear. Since any of the officers he knows could be involved in the embezzlement scheme and murder, the only chance he has of getting to the truth is by dealing with an outsider. But can he get Sabian to believe him and become an ally instead of an adversary?
"The Negotiator" works best during its middle section, as the mind-games between Roman, Sabian and the rest of the force are in full flower. Jackson gets the lion's share of the good scenes, tersely explaining Hostage Negotiation 101 to a patrolman trying to talk him down, and making Internal Affairs Inspector Niebaum (the late J.T. Walsh) sweat as he interrogates him while explaining how he can tell whether or not a man is lying simply by observing his eye movements.
Spacey has a ball as the tightly-wound Sabian, attempting to maintain a modicum of cool while trying to outthink both Roman and a lot of trigger- happy cops. Spacey's dark eyes radiate a keen intellect that enhances the palpable tension propelling the story.
As entertaining as Jackson and Spacey are, their characters would have been more involving had they been given some shading. Each actor establishes a tone for his character and essentially stays there for the entire film. Roman and Sabian are dynamic, but they seem defined solely by the film's extreme situation. Some insight on how these men became the way they are would have helped broaden the characters.
Two of the supporting hostages make a strong impression. The always entertaining Paul Giamatti is a hoot playing a snitch with a fatalistic loosey-goosey attitude, and Siobahn Fallon, the peculiar farm wife from "Men in Black," is fascinating as a secretary whose loyalties are maddeningly uncertain.
Of course, when dealing with a high-concept storyline, you have to figure out how to resolve the situation, and "The Negotiator" falters in this department, with plot contrivances and standard-issue action scenes diminishing the tension so carefully established before. Some major revelations are telegraphed earlier in the film, making the big surprises not all that surprising.
Despite its flaws, "The Negotiator" succeeds more than it fails, maintaining a satisfying level of tension for most of the film and providing a strong showcase for the contrasting acting styles of Jackson and Spacey. Had the filmmakers been as careful with the script as they were with the casting, this could have been a real beaut.
© 1998 Ed Johnson-Ott
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Slack Activity
This activity helps to integrate Slack into an MDW workflow.This is a simple activity which enables user to post messages into Slack using Incoming Webhooks.
They make use of normal HTTP requests with a JSON payload, which includes the message. It allows simple one-way interaction with friendly Slack messages.This activity does not require MDW Slack app. Instead, User creates their own Incoming Slack WebHook and provides the URL in the SLACK_WEBHOOK_URL environment variable.
In this section we'll explore the steps to integrate Slack into MDW workflow.
Slack Channel creation and Integration with incoming-webhook
Go to https://slack.com/get-started to either find your existing workspace or create a new workspace.
Click on Launch button which opens your current workspace where you can invite people and/or add one or more channels.
Your Slack workspace is comprised of channels. You�ll use channels to hold most of your conversations with other members.
Create a new channel
Once the channel is created, Click on +Add an APP to add the application Incoming WebHooks and click on Add Configuration to configure the selected channel.
Once the above setup is complete, it generates incoming- Webhook URL which looks like this:
Web Hook URL: https://hooks.slack.com/services/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
Configure this is as an environment variable so that messages can be sent using SlackActivity.
mdw.slack.webhook.url=https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX
Then restart your server.
Using Slack Activity
Using MDW Studio or MDWHub, import the necessary Slack asset package dependency. In MDWHub, for example, on the Admin tab click the Assets nav link and
then Import > Discover and select the `com.centurylink.mdw.slack` package in the discovered list.
In MDW Studio, you will find Slack Notify activity in the Toolbox.
Design Attributes
The basic design parameters for configuring a Slack Activity are illustrated in the screenshot below.
Slack Web hook URL
has to be configured as environment variable.
The name of the environment variable is configurable using Slack Web hook URL attribute
Slack message
Can be either in JSON format or as process variable.
For Json format, Note that it should be in the format package/asset name.
For Ex: com.centurylink.mdw.slack/slackNotice.json
The process variable containing message or exception details can be directly assigned to slack message.
For Ex: $errorMessage
Refer to Json Asset SlackNotice.json located in com.centurylink.mdw.slack package for sample Json Payload.
Refer to Incoming Webhooks
for advanced message formatting using incoming webhook.
Slack Message Prefix
allows user to append application name prefix to Json message
Continue despite messaging exception
Checking this attribute allows the workflow process to continue in case any exception in slack Activity occurs.
Below Screen shot illustrates how a sample message received from MDW workflow into Slack channel looks like using Slack Activity.


Previously, this hit Athens hard, as the county was in level 3 status and some local businesses were forced to close temporarily. With the pandemic not slowing down and many campuses around the country adopting online options, the question on everyone’s lips is “Should OU’s Campus open?”
While many possess fiery opinions on the issue, the answer is obvious, schools should not reopen this fall.
For starters, flu season spreads wildly on campus. This is from a combination of being introduced to an unfamiliar environment, many faces passing through shared spaces and a lack of social distancing at bars and parties and in dorms. Now add the chance of contracting COVID-19 into a storm of sneezing, coughing and fevers. The amount of people who may incorrectly self-diagnose, and refuse to change their lifestyles accordingly, will cause a disastrous outbreak.
Also, OU’s custodial layoffs make me doubt that the campus will sanitize common areas often enough. This is especially true for newsrooms, computer labs in Schoonover and lecture halls. Even if they rehired custodial workers en masse, that would only put more people’s lives at risk. It’s extremely unlikely that OU would pay its custodians enough to merit the massive undertaking necessary.
Truly, it’s a lose-lose.
Another key part of the college experience is that it’s the first taste of independence for many young adults. This taste of freedom, though, will be sour with Athens’s new rules. Campus life will be dull. There are plans to be strict with not allowing people from other resident’s halls into other dorms, dining halls will be to-go and again and 10-person limits on gathering sizes. The freedom to go meet someone at a party or have a friend come over to study from a lecture hall won’t be workable.
I was only a freshman last year and the friends I made walking around, bonding over Shively nuggets and in various spots around Campus were an unforgettable part of the experience. I feel bad for new freshmen who may not get those same experiences.
Instead of following tradition, education should use this moment to better revolutionize the college experience. Lecture halls and in-person classes are important, but this is a perfect time to take advantage of the amazing technology available at our fingertips. Many of the companies we’re aspiring to work for are implementing remote-work policies, so we should follow their lead. There are signs that the remote work revolution will continue, so shouldn’t our schools take steps to prepare us for the future?
Of course, this would be a different conversation if cases were declining or if there was a greater response prepared. But there’s not. Cases, deaths and hysteria are rising across the country. For the thousands of lives lost & families disrupted, normalcy will never return.
Finally, as a community, we must do everything in our power to protect our most members. It may suck to not come to campus for a semester, but imagine the heartbreak if someone didn’t have the privilege of coming home. These may seem like doomsday scenarios, but remember that campus closed indefinitely when Coronavirus had killed under 100. Protect our most vulnerable members.
Why should we go back after thousands have died?


Math
Math is a simple web application for studying math lists.
Open Now
Instructions (including phone and tablet installation):
- Note: this has been tested on iOS, but not Android. It probably works on Android, but maybe not. It should work on a computer.
- If you can't figure an answer out, click/tap the "Show Me" button. This will place the correct answer in the text entry field. Clicking/tapping "Check Answer" will then move you to the next question.
- Your progress is charted on the right with a number representing each problem. If you get an answer right on the first try, it turns green, and you won't see it again this session. If it takes two or more tries, then the number stays black, and you'll review it again the next time through.
- Once you've correctly answered each question without a mistake, you'll get an alert that you're done, and the app will reset to the first question.
- There are settings options in the upper left (the button with three horizontal lines).
- Installation instructions:
- This web app can be installed as an icon on the home screen of a phone or tablet.
- Android: Open in Chrome. Tap the three dots in the upper right of the browser and select "Add to Home screen."
- iOS: Open in Safari. In the browser controls, tap the icon that's a square with an arrow coming up out of it. Scroll over and select "Add to Home Screen."
- Note: Web apps are finicky about updates. In theory, if you have an active internet connection and open the app and there's a new version available, then the next time you launch the app, the new version will be up . . . but not always. You may need to uninstall the app from your home screen, visit the app URL again in your browser, hit refresh a couple times, and re-install the icon on your home screen. Then, launch it from your home screen, quit it, and launch it again. That usually gets it to update for me.


Preparation time
30 mins to 1 hour
Cooking time
10 to 30 mins
Serves
Serves 4
Once you've mastered Lorraine Pascale's basic pizza dough, vary the toppings according to your mood.
Equipment and preparation: You will need a very large baking tray, or a 30cm/12in pizza plate.
Mix the flour, salt and yeast together in a large bowl and make a well in the middle. In a jug, mix the water and oil together, then pour the liquid into the well of the flour mixture and mix to make a soft but not sticky dough.
Knead for 10 minutes by hand on a lightly floured work surface or for five minutes in an electric mixer fitted with a dough hook. Bring the dough together to a smooth flat ball and place on a large, lightly floured baking tray.
Cover the pizza dough loosely with oiled clingfilm, making sure it is airtight. Leave in a warm but not hot place for 30–40 minutes.
Preheat the oven to 220C/425F/Gas 7.
Remove the clingfilm from the dough and roll out to a 30cm/12in circle to knock some air out, then prick holes all over the dough with a fork. Spread over the tomato purée, leaving a 2.5cm/1in border, followed by the mozzarella, prosciutto and half of the figs.
Drizzle with oil and season with salt and freshly ground black pepper. Bake in the oven for 15–20 minutes, or until the bread is crisp and golden-brown and the cheese has melted. Scatter basil over the top and arrange the remaining figs on the pizza. Drizzle with oil.
Serve at the centre of the table so everyone can rip off their piece of Italian gold.


{% extends "bootstrap_layout.html" %} {% set active_page = "search_result" %} {% block content %}
Showing top 10 results sorted by distance
{{results}}


Leo(Zhaokuan) Liu
This is Leo doing his in-class assignment, which is creating a html.file.
Contact Info


$$
\newcommand{\bs}[1]{\boldsymbol{#1}}
\newcommand{\ts}[1]{\bs{\textsf{#1}}}
$$
Bibliography
- J. Shen.
Efficient Spectral-Galerkin Method II. Direct Solvers of Second- and Fourth-Order Equations Using Chebyshev Polynomials,
SIAM Journal on Scientific Computing,
16(1),
pp. 74-87,
1995.
- D. A. Kopriva.
Implementing Spectral Methods for Partial Differential Equations,
Springer,
2009.
- A. Logg, K.-A. Mardal, G. N. Wells et al..
Automated Solution of Differential Equations by the Finite Element Method,
Springer,
2012.
- L. N. Trefethen.
Approximation Theory and Approximation Practice,
SIAM,
2013.
- S. d. B. Kops.
Classical Scaling and Intermittency in Strongly Stratified Boussinesq Turbulence,
J. Fluid Mechanics,
775,
pp. 436-463,
2015.
- S. Hoyas and J. Jim\'enez.
Scaling of the Velocity Fluctuations in Turbulent Channels Up to \( Re_ au=2003 \),
Physics of Fluids,
18(1),
2006.
- M. Lee and R. D. Moser.
Direct Numerical Simulation of Turbulent Channel Flow Up to \( Re_ au pprox 5200 \),
J. Fluid Mechanics,
774,
pp. 395-415,
2015.
- G. Alfonsi, S. A. Ciliberti, M. Mancini and L. Primavera.
Direct Numerical Simulation of Turbulent Channel Flow on High-Performance GPU Computing System,
Computation,
4,
pp. 13,
2016.
- M. Mortensen and H. P. Langtangen.
High Performance Python for Direct Numerical Simulations of Turbulent Flows,
Computer Physics Communications,
203,
pp. 53-65,
2016.
- NumPy.
Http://www.numpy.org,
2017.
- MPI for Python.
Https://bitbucket.org/mpi4py/mpi4py/,
2017.
- pyFFTW.
https://pypi.python.org/pypi/pyFFTW,
2017.
- M. Frigo and S. G. Johnson.
The Design and Implementation of FFTW3,
Proceedings of the IEEE,
93(2),
pp. 216-231,
2005.


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 4-6
Marrow stuffed with a beef mince based sauce and topped with golden, bubbling cheese. A good recipe if you have a glut of marrows.
Preheat the oven to 180C/350F/Gas 4. Line a large roasting tin with foil, leaving the ends hanging over the edges of the tin.
Bring a large pan of water to the boil – the pan needs to be large enough to hold the marrow halves. Season the water lightly with salt.
Scoop the seeds and stringy pulp from the marrow halves using a spoon, and discard. Scoop about 120g/4½oz of the flesh from the inside of the marrow, creating a large hollow, and put to one side.
Carefully lower the hollowed marrow halves into the pan of boiling water, immediately turn the heat off and leave them sitting in the hot water until you are ready to use them.
Crush the garlic and fresh thyme in a pestle and mortar and add salt and freshly ground pepper to taste. Heat the olive oil in a pan, add the onions, followed by the garlic and thyme, and then fry until soft. Add the beef mince and cook for about 10 minutes, stirring regularly until browned.
If using fresh tomatoes, prepare them whilst the beef is browning: place the tomatoes in a bowl. Pour over boiling water, and leave for 30 seconds. Remove with a slotted spoon, run under cold water, and peel the skin from the flesh. Discard the skin, and chop the peeled tomatoes roughly.
Add the tomato purée and sun-dried tomato paste (or chopped sun-dried tomatoes if using) to the browned beef mince, and cook for another 5 minutes. Chop the reserved flesh from the marrow and stir it into the sauce, stir in the chopped tomatoes, and parsley and cook for a further 10 minutes, stirring occasionally.
Take the sauce off the heat and let it cool briefly before stirring in the eggs (if the eggs are stirred in too soon they will scramble).
Add half of the parmesan and pecorino to the pan and stir until well combined.
Carefully remove the 2 halves of marrow from the hot water, draining any water from the centre, and place them in the baking tin. Spoon the sauce mixture into each of the marrow halves until they are full. Gently push the halves together, and brush the skin with olive oil. Sprinkle the remaining half of the grated cheeses over the top of the marrow. Wrap the sides of the foil around the marrow to hold it together, leaving a small gap at the top.
Bake in the preheated oven for about 45 minutes. After 45 minutes, increase the temperature to 200C/400F/Gas 6, open out the foil and cook for another 5 minutes so the grated cheese can brown and become crispy. Remove from the oven, and allow to rest for 10 minutes.
To serve, slice the marrow into rings, and sprinkle with extra parmesan and parsley to serve, if you like.
You need JavaScript to view this clip.
Skinning tomatoes


Your Journal
Jot Down Your Life As it Happens
Home
Todos for the day
Hide Completed
Submit Todo
Danger Zone
Remove Entry
TODOS


{{#user.isFreeForLife}} You can use Blot for free for as long as Blot exists. {{/user.isFreeForLife}} {{#user.cancel_at_period_end}} Your subscription has been cancelled and you won’t be charged again. On {{user.pretty.expiry}} your account will close and your blog{{user.s}} will shut down. {{/user.cancel_at_period_end}} {{#user.isSubscribed}} {{#user.subscription.quantity}} Your next bill on {{user.pretty.expiry}} will be for {{user.pretty.price}}. {{^monthly}}You will recieve an email reminder one week before.{{/monthly}} {{/user.subscription.quantity}} {{^user.subscription.quantity}} Your next billing period begins on {{user.pretty.expiry}} but you will not be charged anything because you do not host any blogs on Blot. {{/user.subscription.quantity}} {{/user.isSubscribed}}
{{#user.cancel_at_period_end}} Restart your subscription {{/user.cancel_at_period_end}} {{#user.isSubscribed}} {{/user.isSubscribed}}


Super
Cat
Apple
Pear
Pig
Cola
Soccer
Phone
Book
School
Note
Human
Code
Operate
Man
Program
Bement
Cat
Glass
Fish
深度优先遍历
广度优先遍历
删除
添加


No data is available - please select new filter criteria above.
Postive Reviews
{{ keyword.percentage | number }}% of positive reviews
Negative Reviews
{{ keyword.percentage | number }}% of negative reviews


{% extends "base.html" %} {% block title %}
Medieval catalogues > BENEDICTINES: THE SHORTER CATALOGUES > Glastonbury > Books copied for Prior Thomas (d. 1215)
{% endif %}3 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


{{phrase.myInvoices}}
| {{phrase.ID}} | {{phrase.InvTitle}} | {{phrase.dateDueDate}} | {{phrase.Amount}} {{phrase.discoutedAmount}} {{phrase.paidAmount}} |
{{phrase.Status}} | ||
|---|---|---|---|---|---|---|
|
{{invoice.paymentTitle}}
{{invoice.fullName}} |
{{invoice.paymentDescription}} | {{invoice.paymentDate}} {{invoice.dueDate}} |
{{invoice.paymentAmount}} {{invoice.paymentDiscounted}} {{invoice.paidAmount}} |
{{phrase.paid}} {{phrase.unpaid}} | ||
| {{phrase.noPayments}} |


?Ne"_Yf.^8o,anical
Garden
The
New
York
Botanical
Garden
Cajanus
cajan
(L.)
Huth
det.
M.
Nee,
2011
PLANTS
OF
HAITI
Cx&tUniXzJ.
isw
^
Á4,
ÀV/£U
?
'
*
Vicinity
of
Port
de
Paix
_
*l':
m
No
emery
c.
Leonard
)
Wo
IHS
2f
GENEVIEVE
^LEONARD
(Collectors
Dec.
21-25,
1928
1616162
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Class Template
Package: TecDoc
Copyright: Stansilav WEB
License: Informations System GmbH
Author: Stanislav WEB | Lugansk<EMAIL_ADDRESS>Version: 1.1
Testdox: 20.12.2012
Located at system/libs/class.Template.php
Copyright: Stansilav WEB
License: Informations System GmbH
Author: Stanislav WEB | Lugansk<EMAIL_ADDRESS>Version: 1.1
Testdox: 20.12.2012
Located at system/libs/class.Template.php
public
object
|
|
public
application
|
|
public
boolean
|
getLanguage()
|
$APPLICATION,
$GET_data,
$_CONFIG,
$_DEBUG,
$_FLYCARD,
$_MANUFACTURERS,
$_MODELS,
$_MODIFY,
$_MODIFYDETAIL,
$_PARTSENGINE,
$_POSITIONSTABLE,
$_POSITIONSTABLEDETAIL,
$_html,
$_manuId,
$modelId
|
$LANG
|


{% include post/head.html %}
{% include post/navigation.html %}
{% include post/sidebar-nav.html %}
All posts...
{{ content }} {% if page.comments %}
Please enable JavaScript to view the
comments powered by Disqus.
{% endif %}
{% include post/footer.html %}


After evaluating different design patterns for undo/redo we decided to use the command-pattern for implementing undo/redo functionality in the three.js-editor.
This means that every action is encapsulated in a command-object which contains all the relevant information to restore the previous state.
In our implementation we store the old and the new state separately (we don’t store the complete state but rather the attribute and value which has changed).
It would also be possible to only store the difference between the old and the new state.
Before implementing your own command you should look if you can’t reuse one of the already existing ones.
For numbers, strings or booleans the Set…ValueCommand-commands can be used.
Then there are separate commands for:
Every command needs a constructor. In the constructor
function DoSomethingCommand( editor ) {
Command.call( this, editor ); // Required: Call default constructor
this.type = 'DoSomethingCommand'; // Required: has to match the object-name!
this.name = 'Set/Do/Update Something'; // Required: description of the command, used in Sidebar.History
// TODO: store all the relevant information needed to
// restore the old and the new state
}
And as part of the prototype you need to implement four functions
DoSomethingCommand.prototype = {
execute: function () {
// TODO: apply changes to 'object' to reach the new state
},
undo: function () {
// TODO: restore 'object' to old state
},
toJSON: function () {
var output = Command.prototype.toJSON.call( this ); // Required: Call 'toJSON'-method of prototype 'Command'
// TODO: serialize all the necessary information as part of 'output' (JSON-format)
// so that it can be restored in 'fromJSON'
return output;
},
fromJSON: function ( json ) {
Command.prototype.fromJSON.call( this, json ); // Required: Call 'fromJSON'-method of prototype 'Command'
// TODO: restore command from json
}
};
To execute a command we need an instance of the main editor-object. The editor-object functions as the only entry point through which all commands have to go to be added as part of the undo/redo-history.
On editor we then call .execute(…)* with the new command-object which in turn calls history.execute(…) and adds the command to the undo-stack.
editor.execute( new DoSomethingCommand() );
Some commands are also updatable. By default a command is not updatable. Making a command updatable means that you
have to implement a fifth function ‘update’ as part of the prototype. In it only the ‘new’ state gets updated while the old one stays the same.
Here as an example is the update-function of SetColorCommand:
update: function ( cmd ) {
this.newValue = cmd.newValue;
},
The idea behind ‘updatable commands’ is that two commands of the same type which occur
within a short period of time should be merged into one.
For example: Dragging with your mouse over the x-position field in the sidebar
leads to hundreds of minor changes to the x-position.
The user expectation is not to undo every single change that happened while he dragged
the mouse cursor but rather to go back to the position before he started to drag his mouse.
When editing a script the changes are also merged into one undo-step.


This adjusts the MIDI release velocity below which a key release is considered "slow" for the purpose of the {Envelope_release_mod_select} parameters. Low values make it easier to get a fast release, and higher values make it easier to get a slow release.
This is contained in the {Global_parameters} section of the {Tools_screen}
This is accessed in {_program_select_mode PROGRAM SELECT mode} using the following global parameter number:
| {sw-set-split.png height=48} {sw-5.png height=48} |
This appears in the display as Release Threshold.
This is accessed via {_NRPN} 15,5.
| MIDI | display | ||
| 1 | 16 | ||
| \b\n\b\n\b | \b\n\b\n\b | ||
| 7 | 112 |


Get the latest MacBook Pro for ONLY 120$ per month.
LIMITED OFFER. Sign up before the 25th of May and a free week trial! (And get reduced prices for in-store purchases)
"Affordable way to be priviledged"
Getting a MacBook pro always seemed too expensive for me and I wasn't sure if it would bring benefits to my professional life. This service has allowed me not only to get to experience the full power of a Macbook, but also to get it at an affordable price!
- James Miller, Villade Roadshow studios
More Awesome Features
Pellentesque eget dolor gravida, tempus purus ac, ultricies mauris. Etiam est nisl, molestie sed egestas bibendum, varius eu diam. Suspendisse est metus, ultrices sit amet dolor in, rhoncus malesuada mi.
Great Options
Only 120$ per month. Get custom colors. Join the waitlist today and get 50% off your first month. Cancel anytime.
Great Performance
The Latest MacBook hosts the best of the best hardware systems in the world and fits perfectly for creative professionals heavy visual works
Ongoing Support
We offer support 24/7 for any enquiries related to our service or any troubleshooting issues related with your Mac.
Ready to KickStart your Creative Career?
GET STARTEDAffordable solution for creative professionals. Highly Recommend!
Try it out and never get in debt for a computer again!
Johnathan Doe
Marketing Head Matrix media
I never imagined I would need a service like this. A good Macbook pro can cost you a year rent
But thanks to these guys, you can get for cheaper, and can return anytime!
Oidila Matik
President Lexo Inc
Affordable solution for creative professionals. Highly Recommend!
Try it out and never get in debt for a computer again!
- Alex Dattilo
CEO Optima Inc
I never imagined I would need a service like this. A good Macbook pro can cost you a year rent
But thanks to these guys, you can get for cheaper, and can return anytime!
- Robert Hammer
design head Omega Corp
Affordable solution for creative professionals. Highly Recommend!
Try it out and never get in debt for a computer again!
- Rita Valentine
CEO Behena digital
Easy Pricing Plans
Lorem ipsum dolor sit. Incidunt laborum beatae earum nihil odio consequatur officiis
tempore consequuntur officia ducimus unde doloribus quod unt repell
Starter Plan
$80/month- 13 MacBook Pro leasing
- Install your own software
- 256GB SSD
Popular Plan
$120/month- Up to 15 inch MacBook Pro leasing
- Access to Adobe Illustrator, Photoshop and Premiere.
- 1TB SSD
Premium Plan
$195/month- 15 inch MacBook Pro 6-core Intel core i9
- Unlimited Access to the Adobe Creative Suite
- 2TB SSD
Sign up today for our Newsletter and get discount for next purchases
Enter your email address we promise, never disclose
or sell your email address.