The Chattanooga Times Free Press knows that you care how information about you is used and shared, and we appreciate your trust that we will do so carefully and sensibly. This notice describes our privacy policy.
We may collect personal information to determine which products, features and special offers will benefit our users. We will send emails (to those who have elected to receive them) informing registered users of the offers and features that are of interest to them. We do not sell or give any personally identifiable information to other companies or organizations.
We collect personally identifiable information (name, e-mail address, etc.) and/or demographic data (zip code, gender, interests, etc.) that you submit when you:
We and/or our 3rd party partners may use this information to process and maintain your account, compile demographic statistics about our users, and display to you information and advertisements that match your interests and profile.
Credit card information will be provided to third parties only to provide products and services that you order. We may use the contact information you provide to contact you about your account and/or to send you necessary information directly related to the product(s) or service(s) for which you have registered may use your contact information to inform you of new features and special offers from us. We will not provide your contact information to unaffiliated third parties without your express permission. As part of the registration process, you have the option to inform us that you do not wish to receive information about other special offers and promotions.
We use IP addresses (random numbers assigned to individual computers) to help diagnose problems with our servers, administer our web site, and anonymously track content preferences and traffic patterns. We also use cookies (small text files transferred from our Web site to your hard drive) to recognize repeat users, track usage behavior, and facilitate your access to and use of our site. Cookies do not damage files or allow anyone to access your personally identifiable information; they simply allow us to tailor information and advertisements to make your visits more enjoyable and meaningful (and enable us to provide you with personalized information, if you choose). They also provide information to us about site usage to help us improve and update our site. We may share aggregate (not individual) site usage statistics and demographic information with advertisers and other third parties, but this information will not include any personally identifiable information.
The security of the information you provide to us is important to us. We use encryption software and other security measures to protect the lost, misuse and alteration of sensitive information under our control. However, we include links to other sites, and when you choose to visit those sites, we are not responsible for their privacy policies or how they treat user information. In addition, we may permit third parties to offer registration-based services through our site. We are not responsible for the actions and policies of these third parties, and you should review the privacy policies of these parties when supplying personally identifiable information to them.
We do not solicit email addresses or other personal information from children.
The Children's Online Privacy Protection Act (COPPA) provides that Web site operators cannot knowingly collect personal information from children under age 13 without verifiable parental permission. While we offer information that is useful to many children, we do not seek children's participation in services that require registration and do not knowingly collect personal information from children under the age of 13. We encourage parents to educate their children regarding safe use of the Internet.
You must be 18 years or older to participate in the following services:
This Privacy Policy applies only to information collected through this site. It does not apply to information collected or disseminated by any other manner.
We reserve the right to alter our Privacy Policy as business needs require. Any changes will be posted to our web site in a timely manner. This statement and the policies outlined here are not intended to and do not give you any contractual or other legal rights.


This page tracks the new paper links made to my list of SIGGRAPH Asia 2017 papers.
Page maintained by Ke-Sen Huang.
If you have additions or changes, send an e-mail.
February 3, 2018
- SIGGRAPH Asia 2017 Conference Content (Free Access for One Year)
- Material-Minimizing Forms and Structures
- Deep Reverse Tone Mapping
- Transferring Image-based Edits for Multi-Channel Compositing
- Photo2ClipArt: Image Abstraction and Vectorization Using Layered Linear Gradients
- Simplicial Complex Augmentation Framework for Bijective Maps
- Near-Eye Varifocal Augmented Reality Display using See-Through Screens
- Retinal 3D: Augmented Reality Near-Eye Display Via Pupil-Tracked Light Field Projection on Retina
- Mix-and-Match Holography for Diffractive Display
- Avatar Digitization From a Single Image For Real-Time Rendering
- Azimuthal Scattering from Elliptical Hair Fibers
(TOG Paper)
- Adaptive Synthesis of Indoor Scenes via Activity-Associated Object Relation Graphs
- 3DLite: Towards Commodity 3D Scanning for Content Creation
- Planar Interpolation with Extreme Deformation, Topology Change and Dynamics
- GPU-Accelerated Locally Injective Shape Deformation
- Autocuts: Simultaneous Distortion and Cut Optimization for UV Mapping
- Seamless: Seam Erasure and Seam-aware Decoupling of Shape from Mesh Resolution
- Smooth Assembled Mappings for Large-Scale Real Walking in VR
- Fully Perceptual-Based 3D Spatial Sound Individualization with an Adaptive Variational AutoEncoder
- An Adaptive Generalized Interpolation Material Point Method for Simulating Elastoplastic Materials
- A Unified Particle System Framework for Multi-Phase, Multi-Material Visual Simulations
- DeepToF: Off-the-Shelf Real-Time Correction of Multipath Interference in Time-of-Flight Imaging
- A Polynomial Particle-In-Cell Method
- Gradient-Domain Path Reusing
- Fast Rendering of Fabric Micro-Appearance Models Under Directional and Spherical Gaussian Lights
- Learning to Predict Part Mobility from a Single Static Snapshot
- Fast Gaze-Contingent Optimal Decompositions for Multifocal Displays
- MetaSilicone: Design and Fabrication of Composite Silicone with Desired Mechanical Properties
- 3D Printing Wireless Connected Objects
- Articulated Distance Fields for Ultra-Fast Tracking of Hands Interacting
- Motion2Fusion: Real-time Volumetric Performance Capture
December 7, 2017
- How to Train Your Dragon: Example-Guided Control of Flapping Flight
- A Hyperbolic Geometric Flow for Evolving Films and Foams
- City-Scale Traffic Animation Using Statistical Learning and Metamodel-Based Optimization
November 28, 2017
- ComplementMe: Weakly-supervised Component Suggestion for 3D Modeling
October 20, 2017
- HDR image reconstruction from a single exposure using deep CNNs
October 17, 2017
- Weighted Linde-Buzo-Gray Stippling
- Real-time 3D Eyelids Tracking from Semantic Edges
October 15, 2017
- High-Qality Hyperspectral Reconstruction Using a Spectral Prior
- Compact Single-Shot Hyperspectral Imaging Using a Prism
October 7, 2017
- SpinVR: Towards Live-Streaming 3D Virtual Reality Video
September 30, 2017
- Visibility-Consistent Thin Surface Reconstruction Using Multi-Scale Kernels
- Microfacet-based normal mapping for robust Monte Carlo path tracing
- Localized solutions of sparse linear systems for geometry processing
- Soft 3D Reconstruction for View Synthesis
- Scattering-aware Texture Reproduction for 3D Printing
- Position-Based Tensegrity Design
- Bringing Portraits to Life
- Near-eye Light Field Holographic Rendering with Spherical Waves for Wide Field of View Interactive 3D Computer Graphics
- Perceptually-Guided Foveation for Light Field Displays
- Learning to Group Discrete Graphical Patterns
- Fabricable Tile Decors
- Learning a model of facial shape and expression from 4D scans
- Robust Structure Simplification for Hex Re-meshing
- Computational Design of Wind-up Toys
- Reconfigurable Interlocking Furniture
- Smooth Assembled Mappings for Large-Scale Real Walking in VR
- Autonomous Reconstruction of Unknown Indoor Scenes Guided by Time-varying Tensor Fields
- Approximate Dissections
- A BSSRDF Model for Efficient Rendering of Fur with Global Illumination
- Computational Design and Fabrication of Soft Pneumatic Objects with Desired Deformations
- Interactive Example-Based Terrain Authoring with Conditional Generative Adversarial Networks
- Tensor Field Design in Volumes
September 21, 2017
September 20, 2017
- BigSUR: Large-scale Structured Urban Reconstruction
September 19, 2017
- Polarization imaging reflectometry in the wild
September 18, 2017
- Scratch Iridescence: Wave-Optical Rendering of Diffractive Surface Structure
- Snapshot Difference Imaging using Correlation Time-of-Flight Sensors
- ChromaBlur: Rendering Chromatic Eye Aberration Improves Accommodation and Realism
- Deep Scattering: Rendering Atmospheric Clouds with Radiance-Predicting Neural Networks
- Embodied Hands: Modeling and Capturing Hands and Bodies Together
- Sketch-Based Implicit Blending
- Real-time Global Illumination by Precomputed Local Reconstruction from Sparse Radiance Probes
- Conformation Constraints for Efficient Viscoelastic Fluid Simulation
- Visibility-Consistent Thin Surface Reconstruction Using Multi-Scale Kernels
September 11, 2017
- Interactive Wood Combustion for Botanical Tree Models
- Interactive Example-Based Terrain Authoring with Conditional Generative Adversarial Networks
- Tensor Field Design in Volumes
September 3, 2017
- Online Generative Model Personalization for Hand Tracking
- Learning to Predict Indoor Illumination from a Single Image
- A BSSRDF Model for Efficient Rendering of Fur with Global Illumination
- GPU-Accelerated Locally Injective Shape Deformation
- Computational Design and Fabrication of Soft Pneumatic Objects with Desired Deformations
- An Adaptive Generalized Interpolation Material Point Method for Simulating Elastostatic Materials
- Perceptually-Guided Foveation for Light Field Displays
- Mix-and-Match Holography for Diffractive Display
- DS++: A Flexible, Scalable and Provably Tight Relaxation for Matching Problems
August 8, 2017
- Scratch Iridescence: Wave-Optical Rendering of Diffractive Surface Structure
- Learning to Group Discrete Graphical Patterns
- Fabricable Tile Decors
- AVATAR DIGITIZATION FROM A SINGLE IMAGE FOR REAL-TIME RENDERING
- LEARNING A MODEL OF FACIAL SHAPE AND EXPRESSION FROM 4D SCANS
- ComplementMe: Weakly-supervised Component Suggestion for 3D Modeling
- Robust Structure Simplification for Hex Re-meshing
- Transferring Image-based Edits for Multi-Channel Compositing
- Structured Urban Reconstruction
- Computational Design of Wind-up Toys
- Reconfigurable Interlocking Furniture
- Smooth Assembled Mappings for Large-Scale Real Walking
- Autonomous Reconstruction of Unknown Indoor Scenes Guided by Time-varying Tensor Fields
- Approximate Dissections
- Page published
kesen.huang@gmail.com


You can reach the filter at
loadbalancerHealthbasedFilter
.


Created May 17, 2002
Last Updated February 20, 2003
Korinnya Men's Costumes - May 9, 2002
Saskatoon - Ann Kozub's house
Red Shirt - Nearly complete
Another picture of Men's Costumes on the table
Table Designs
Table Designs 2
Fabric for Men's Shirts - Invoice
Same invoice just bigger


Pope Francis Landed in Japan
Pope Francis arrived for his four-day visit to Japan, expected to make a call for nuclear disarmament tomorrow, BTA reported.
The Thai Airways plane with the Pope, accompanied by a Vatican delegation and journalists, arrived in Tokyo after a six-hour flight from Bangkok.
The main event of the Pope's visit to Japan will be his visit to the cities of Nagasaki and Hiroshima, where two American atomic bombs claimed the lives of a total of over 210,000 people 74 years ago.
In the Japanese capital, the Pope will meet the victims of the triple disaster since March 2011 - the devastating earthquake that triggered a powerful tsunami and severe accident at the Fukushima-1 nuclear power plant.
Catholics in Japan represent less than 0.5 percent of the country's nearly 127 million population, where Shinto and Buddhism are the main religions.
Pope Francis arrived in Japan after a visit to Thailand focused on the religious tolerance.


Functions to fits simple linear regression models with log normal errors and identity link (taking the responses on the original scale). See Muggeo (2018) <doi:10.13140/RG.2.2.18118.16965>.
| Version: | 0.2-0 |
| Published: | 2018-10-16 |
| Author: | Vito M. R. Muggeo [aut, cre] |
| Maintainer: | Vito M. R. Muggeo <vito.muggeo at unipa.it> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | no |
| Materials: | NEWS |
| CRAN checks: | logNormReg results |
| Reference manual: | logNormReg.pdf |
| Package source: | logNormReg_0.2-0.tar.gz |
| Windows binaries: | r-devel: logNormReg_0.2-0.zip, r-release: logNormReg_0.2-0.zip, r-oldrel: logNormReg_0.2-0.zip |
| OS X binaries: | r-release: logNormReg_0.2-0.tgz, r-oldrel: logNormReg_0.2-0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=logNormReg to link to this page.


Blob-compare
sizeEqual
should return true if size are equal
should return false if size are not equal
typeEqual
should return true if type are equal
should return false if type are not equal
magicNumbersEqual
should return true if blobs are the same
should return true if magic numbers are equal (worker)
should return true if magic numbers are equal (main thread)
should return false if magic numbers are not equal
toBinaryString && toArrayBuffer
should return a binary string (worker)
should return a binary string (main thread)
should return an arrayBuffer (worker)
should return an arrayBuffer (main thread)
compareBuffers
should return true if buffers are the same (worker)
should return true if buffers are the same (main thread)
should return false if buffers are not the same length
bytesEqualWithBinaryString
should return true if bytes are equal (worker)
should return true if bytes are equal (main thread)
should return false if bytes are not equal
bytesEqualWithArrayBuffer
isEqual
should throw if one method is not recognized


Knock Knock.
Who's there?
404.
404 who?
404 Not found.
You've stumbled into a place that doesn't exist.
Take me Home!


HeatSync Labs...
is a community workshop
is open FREE to the public M-F 7p-10p
is a 501(c)3 not for profit
has no staff, only a passionate community, including you!
Bring your projects and your passion and JOIN US!
HeatSync Labs
140 W. Main St
Mesa, AZ 85201


/* This is a block comments,
and can span multiple
lines */
// Line comment
// Line comments can be
// repeated multiple times
// but cannot span
// multiple lines
show /*inner comment*/ "Text"


{{site.about.english}}
{{site.about.vietnamese}}
Contact Info
Thông tin liên hệ
Github: https://github.com/{{site.author.github}}
Email: {{site.author.email}}
Facebook: fb.com/{{site.author.facebook}}
--- layout: single author_profile: true ---
{{site.about.english}}
{{site.about.vietnamese}}


You had {{ elem.value }} stress at {{ elem.datetime.date() }} {{ elem.datetime.time() }} and you were {% if elem.sleep %} Sleeping! {% else %} Awake! {% endif %}


A/B Test Functions¶
In this section, we will cover the following functions in-depth listed below:
uadmin.ABTest¶
ABTest is a model that stores an A/B test.
Structure:
type ABTest struct {
Model
Name string `uadmin:"required"`
Type ABTestType `uadmin:"required"`
StaticPath string
ModelName ModelList
Field FieldList
PrimaryKey int
Active bool
Group string
}
Here are the following fields and their definitions:
Name - The name of the A/B Test
Type - A list of test types from a dropdown menu
StaticPath - The path assigned in the static
ModelName - A list of registered models
Field - A list of fields from schema for a registered model
PrimaryKey - Used to uniquely identify each row in the table
Active - Checks whether the A/B Test is Active
Group - The name of the group
There are 2 ways you can do for initialization process using this function: one-by-one and by group.
One-by-one initialization:
func main(){
// Some codes
abtest := uadmin.ABTest{}
abtest.Name = "Name"
abtest.Type = uadmin.ABTestType(0).Static()
abtest.StaticPath = "Static Path"
}
By group initialization:
func main(){
// Some codes
abtest := uadmin.ABTest{
Name: "Name",
Type: uadmin.ABTestType(0).Static(),
StaticPath: "Static Path",
}
}
In the following examples, we will use "by group” initialization process.
Page:
Quiz:
uadmin.ABTestClick¶
ABTestClick is a function to register a click for an ABTest group.
Function:
func(r *http.Request, group string)
Parameters:
r *http.Request: Is a data structure that represents the client HTTP request
group string : Is the name of the group
See Part 4: API Click Handler for the example.
Quiz:
uadmin.ABTestType¶
ABTestType is a list of test types from a dropdown menu.
Type:
int
ABTestType has 2 functions:
Static() - Test static files
Model() - Test registered models
See Part 3: A/B Test Function for Static and Part 2: A/B Test Function for Model for examples.
uadmin.ABTestValue¶
ABTest is a model that stores a value for an A/B test.
Structure:
type ABTestValue struct {
Model
ABTest ABTest
ABTestID uint
Value string
Active bool
Impressions int
Clicks int
}
Here are the following fields and their definitions:
ABTest - A model that stores an A/B test
ABTestID - An ID of the A/B Test model
Value - The value that you want to assign in A/B Test
Active - Checks whether the A/B Test is Active
Impressions - The number of visits
Clicks - The number of clicks
There are 4 functions that you can use in ABTestValue:
String() - Returns the value
ClickThroughRate() - Returns the rate/percentage of the user clicks
ClickThroughRate__Form__List() - Displays the rate/percentage of the user clicks in the form and the list
HideInDashboard() - Return true and auto hide this from dashboard
There are 2 ways you can do for initialization process using this function: one-by-one and by group.
One-by-one initialization:
func main(){
// Some codes
abtestvalue := uadmin.ABTestValue{}
abtestvalue.ABTest = ABTest
abtestvalue.ABTestID = 1
abtestvalue.Value = "Value"
}
By group initialization:
func main(){
// Some codes
abtestvalue := uadmin.ABTestValue{
ABTest: ABTest,
ABTestID: 1,
Value: "Value",
}
}
In the following examples, we will use "by group” initialization process.
See Part 4: A/B Test Value Function for Static and Part 3: A/B Test Value Function for Model for examples.
Quiz:
uadmin.FieldList¶
FieldList is a list of fields from schema for a registered model.
Type:
int
See Part 3: A/B Test Function for Static for the example.
uadmin.GetABTest¶
GetABTest is a function that gets an active A/B tests for any field in AB Test model.
Function:
func(r *http.Request, a interface{}, query interface{}, args ...interface{}) (err error)
Parameters:
r *http.Request: Is a data structure that represents the client HTTP request
a interface{}: Is the variable where the model was initialized
query interface{}: Is an action that you want to perform in your database
args …interface{}: Is the series of arguments for query input
See Part 5: Get A/B Test for the example.
uadmin.ModelList¶
ModelList a list of registered models.
Type:
int
See Part 3: A/B Test Function for Static for the example.


|
Build more intelligent apps
|
|
|
| |
|
HPE DEV
|
Monthly #47 |
|
|
|
|
|
|
|
Build more intelligent apps
|
|
This month, we feature many opportunities to become more skilled in the various components that enable intelligent applications. These include HPE Ezmeral Software Platform talks and technology workshops, data fabric blog posts, and info on new infrastructure tools.
Visit our
HPE DEV community portal and
blog to find even more. And remember to connect with us on our
HPE DEV and
Grommet
Slack channels if you ever have any questions.
 We’re always open.
|
|
|
Take advantage of our virtual Hack Shack in-between the industry events we attend. It’s a great way to keep current with developer activities.
|
|
|
|
|
|
Munch & Learn
|
|
Technology Talk
February 24, 2021
|
|
|
Meet with Tom Phelan, HPE Fellow, to explore the essential components needed to successfully run on a container platform, including data fabric and MLOps.
|
|
|
|
|
|
|
|
|
|
|
|
Engage
|
|
|
|
|
|
|
Hewlett Packard Enterprise leads with enterprise and open source solutions with the expertise to help developers and customers innovate and solve problems.
We're all developing something.
Come join
us in making the future.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This email was made with 💜 using
Grommet.
You received this email because you subscribed via the HPE Developer website or had it
forwarded from someone who did.
If you have not yet subscribed but would like to, you can do so
here.
We'll be sorry to see you go but you can
unsubscribe instantly
😢.
|
|
|
HPE Developer and its accompanying resources
are part of Hewlett Packard Enterprise, LP.
|
|
|
|
|
|
|
|
|


Constraints
- CO-01:
:visited
can only be applied via CSS selectors, not inline.
- CO-02: Composition errors based on attribute values aren't checkable at compile time.
- CO-03: The type-system of Scala compiler must be leveraged as much as possible.
- CO-04: Where a style is referenced or applied, the dev shall be able to navigate to its definition in a single action in IntelliJ/Eclipse.
- CO-05: Solution shall not impose compliance to the CSS spec. (ie. it shall not prevent CSS hacks.)
- CO-06: Browsers cascade styles (even inline styles) to children and there is nothing we can do about it.
Functional Requirements
Definition
- FR-01: Dev shall be able to define a style that requires a specific configuration of children such that the compiler will enforce that the children are styled.
- FR-02: Dev shall be able to define a style that depends on required input. (ie. a function)
- FR-03: Dev shall be able to define a style that depends on browser/page state (eg.
:hover
, :visited
)
- FR-04: Dev shall be able to define a style that depends on the current plaform (eg. IE 8, mobile)
- FR-07: Dev shall be able to define custom CSS attributes.
- FR-17: Dev shall be able to define a style that affects unspecified, optionally existant children. (Must like & in LESS. Required for FR-15.)
- FR-20: For styles that require repeated declaration with different keys (eg
-moz-
), Dev shall be able to specify the style and its variants with a single declaration.
- FR-21: Dev shall be able to create a group of styles that can be included into an external project's styles in Ω(1) LoC.
Composition
- FR-05: Dev shall be able to compose styles to form a new style.
- FR-06: Dev shall be able to define a style that extends an existing style.
- FR-10: Dev shall be able to specify a composition strategy when merging styles.
- FR-11: Solution shall provide a composition stategy that prevents composition.
- FR-12: Solution shall provide a composition stategy that overrides (i.e. discards one side and chooses the other).
- FR-13: Dev shall be able to create a composition stategy that merges attribute values.
- FR-14: Dev shall be able to specify different composition strategies per attribute type. (i.e.
border-top
, the margin
family)
- FR-18: When looking at a style definition, Dev shall be able to passively understand if any attributes are being overridden.
- FR-19: When looking at a style definition, Dev shall be able to passively understand which attributes are being overridden. [pri=low]
Other
- FR-08: Scalac shall prevent compilation without proof that a referenced style exists.
- FR-09: Scalac shall prevent compilation without proof that attributes used in a style are either part of the CSS spec or custom as per FR-7.
- FR-15: Dev shall be able to apply a baseline style (a “css reset”) to a whole page.
- FR-16: Solution shall provide one or more “css resets” that devs can override to customise, then apply to their whole page. [pri=low]
Preferences
- PR-01: It would be better not to push psuedo-selector logic upon devs and have them write code for what the browser already does.
- PR-02: It would be nice to edit a logical style in the browser directly. If styles are inline then one can only modify a single tag's style at a time.
- PR-03: Solution should not require scalajs-react. scalajs-react should depend on Solution with provide a small bridge.
- PR-04: When generating CSS, if the target platform is known, Solution should omit unapplicable platform-specific CSS (FR-20).
Quality Requirements
- QR-01: A page of 1000 DOM elements with 400 different styles, 20% of elements having 3 styles, 10% having 5, should render in ≤ 2 sec.
- QR-02: The time between changing the styles in Scala, and seeing the result in the browser should be ideally ≤ 3 sec.


VOLANO Chat Server Version 2.13
- Downloadable Packages
- Changes in Version 2.13
- Changes to Your HTML
- Installing the Full Version
- Applying the Upgrade
Downloadable Packages
Download a free trial version of the VOLANO chat software from the links below. The contents of the .zip and .tar.gz archive files below are identical except for the newline characters of the text files. The .zip archives contain text files with end-of-line markers for Windows systems (CR+LF), while the .tar.gz archives contain text files with end-of-line markers for Unix-like systems (LF).
Trial Full Version
- volano-2.13.0-localhost.zip
- the trial full version 2.13 package for Microsoft Windows operating systems.
- volano-2.13.0-localhost.tar.gz
- the trial full version 2.13 package for Unix-like operating systems such as FreeBSD, Linux, Mac OS X, or Solaris.
Trial Upgrade
- volano-upgrade-2.13.0-localhost.zip
- the upgrade to trial version 2.13 from version 2.12 for Microsoft Windows operating systems.
- volano-upgrade-2.13.0-localhost.tar.gz
- the upgrade to trial version 2.13 from version 2.12 for Unix-like operating systems such as FreeBSD, Linux, Mac OS X, or Solaris.
MD5 Checksums
- md5sum-2.13.0-localhost.txt
- the MD5 message digests for verifying the downloaded files.
Note: The links above are trial versions of the software that allow applet connections only to the local host computer (localhost
or ip6-localhost
).
Changes in Version 2.13
Version 2.13 includes the following changes:
-
This update of the VOLANO chat server no longer requires a license key. Instead of a server license key, version 2.13 uses the Codebase attribute of the Java archive file manifests to restrict the distribution of the VOLANO applets by host name or domain name. With this update, you no longer need a new license key when your server IP address changes after simply moving the VOLANO chat server from one host computer to another.
Note that you can also provide a list which restricts the Web pages that can embed the VOLANO applets from your server, or you can leave the server open and allow any Web site to embed your applets on their pages.
-
As with the previous version 2.12, the VOLANO chat applets require Java Plug-in Version 7 or later to be installed on your visitors' computers, available for download at www.java.com.
-
The VOLANO applets require one permission outside of the normal Java Plug-in sandbox to run on the Java 8 Plug-in. Specifically, they require a permission called SocketPermission to make the network socket connection back to the chat server.
Because Java applets are unable to request specific permissions, the applets must request all-permissions to function on the Java 8 Plug-in. The Java security prompt now states, "This application will run with unrestricted access which may put your computer and personal information at risk." A sample prompt is shown below.
Sample Java Security Prompt
-
The sizes of the signed applets are shown below in kilobytes for each of the three Java archive formats.
Applets .jar (kB) .jar.gz (kB) .jar.pack.gz (kB) VolanoChat 101 80 41 MyVolanoChat 91 72 38 WebVolanoChat 72 56 31
Changes to Your HTML
Make the following changes to all of your HTML pages containing a VOLANO chat applet, such as the VolanoChat, MyVolanoChat, or WebVolanoChat applet.
-
If you added the permissions parameter with the value sandbox to the applet elements on your Web pages for VOLANO version 2.12, you must remove it for VOLANO version 2.13. The permissions parameter value conflicts with the Permissions attribute value of the VOLANO 2.13 applet archive files.
<param name="permissions" value="sandbox">
If you leave that parameter and value, you will get the following error when loading the VOLANO version 2.13 applets:
SecurityException attempted to open sandboxed jar http://www.example.com/volano/COM/volano/VolanoChat.jar as a Trusted-Library
The VOLANO version 2.13 applets will work with either the Java 7 or Java 8 Plug-ins when the permissions parameter is removed from the applet elements.
-
You can also remove the obsolete scriptable and cabbase parameters from the applet HTML elements on your pages. For example, the VolanoChat applet can have just the following attributes and parameters:
<applet codebase="http://www.example.com/vcclient" archive="COM/volano/VolanoChat.jar" code="COM.volano.VolanoChat" width="500" height="60"> <param name="scriptable" value="false"> <param name="cabbase" value="COM/volano/VolanoChat.cab"> <param name="group" value="Chat Room Name"> <param name="text" value="english.txt"> </applet>
-
You should provide a notice to your visitors that the VOLANO applets require the Java Plug-in Version 7 or later to run, available from www.java.com.
When the applets run on earlier versions of the Java Plug-in, visitors will see only the message, "Error. Click for details" in the space where the applet should appear. If they click for details, the Java Console opens to display the rather unhelpful message:
java.lang.UnsupportedClassVersionError: COM/volano/VolanoChat : Unsupported major.minor version 51.0
The Java Plug-in Version 7 runs on any operating system at the following versions or later (shown below with their release date):
- Windows XP Service Pack 3 or any later version of Windows (2008-05-06)
- Ubuntu Linux 10.04 or any later equivalent version of Linux (2010-04-29)
- Mac OS X 10.7.3 (Lion) or any later version of Mac OS X (2012-02-01)
Installing the Full Version
Installing and running the full version of the VOLANO chat software involves these steps:
- Download and unpack the archive file.
- Start the VOLANO chat server.
- Connect with the applet.
Follow the steps below depending on whether you are installing the VOLANO chat server on a Unix-like system or a Windows system.
Unix-like Systems
To install the VOLANO chat software on a Unix-like system such as FreeBSD, Linux, Mac OS X, or Solaris:
-
Download the volano-2.13.0-localhost.tar.gz file and unpack it with the command:
tar -xf volano-2.13.0-localhost.tar.gz
-
Change to the VOLANO chat server directory and start the server with the commands:
cd volano-2.13.0-localhost ./startup.sh
-
Go to the address http://localhost:8080/vcclient/ on the same machine running the VOLANO chat server to connect to the server with the VOLANO chat applets.
Windows Systems
To install the VOLANO chat software on a Windows system:
-
Download the volano-2.13.0-localhost.zip file. Right-click the file and select Extract All... from the context menu. Follow the instructions and select the folder where you want the
volano-2.13.0-localhost
directory to be placed, such as the home folder shown below for the user john: -
Open the Command Prompt. Change to the VOLANO chat server directory and start the server with the commands:
cd volano-2.13.0-localhost startup
See the documentation for details about starting the VOLANO chat server as a Windows Service to avoid the Command Prompt altogether.
-
Go to the address http://localhost:8080/vcclient/ on the same machine running the VOLANO chat server to connect to the server with the VOLANO chat applets.
Applying the Upgrade
Applying the upgrade to an existing VOLANO chat server version 2.12 installation involves these steps:
- Stop the VOLANO chat server.
- Save a backup copy of the version 2.12 code.
- Download and unpack the archive file.
- Start the VOLANO chat server.
- Connect with the applet.
Follow the steps below depending on whether you are applying the upgrade on a Unix-like system or a Windows system.
Unix-like Systems
To apply the upgrade to VOLANO chat server version 2.12 on a Unix-like system such as FreeBSD, Linux, Mac OS X, or Solaris:
-
Stop the VOLANO chat server.
-
Save a backup copy of the version 2.12 code for recovery purposes by renaming the following two JAR files and directory:
Server JAR file: volano-2.12.0/lib/volano-chat-server.jar ==> volano-chat-server.jar.old Servlet JAR file: volano-2.12.0/webapps/ROOT/WEB-INF/lib/volano-chat-servlets.jar ==> volano-chat-servlets.jar.old Applet directory: volano-2.12.0/webapps/ROOT/vcclient/COM/volano ==> volano.old
-
Download the volano-upgrade-2.13.0-localhost.tar.gz file and unpack it into the existing VOLANO chat server version 2.12 installation directory.
cd volano-2.12.0 tar -xmf volano-upgrade-2.13.0-localhost.tar.gz
The
-m
option updates the modification times of the extracted files to the current time so Web site visitors will be sure to pick up the new applet files instead of using copies of the old ones in their cache.The upgrade archive installs the following files into the current directory where you unpack it:
lib/volano-chat-server.jar webapps/ROOT/WEB-INF/lib/volano-chat-servlets.jar webapps/ROOT/vcclient/COM/volano/Agent.jar webapps/ROOT/vcclient/COM/volano/Agent.jar.gz webapps/ROOT/vcclient/COM/volano/Agent.jar.pack.gz webapps/ROOT/vcclient/COM/volano/MyVolanoChat.jar webapps/ROOT/vcclient/COM/volano/MyVolanoChat.jar.gz webapps/ROOT/vcclient/COM/volano/MyVolanoChat.jar.pack.gz webapps/ROOT/vcclient/COM/volano/VolanoChat.jar webapps/ROOT/vcclient/COM/volano/VolanoChat.jar.gz webapps/ROOT/vcclient/COM/volano/VolanoChat.jar.pack.gz webapps/ROOT/vcclient/COM/volano/WebVolanoChat.jar webapps/ROOT/vcclient/COM/volano/WebVolanoChat.jar.gz webapps/ROOT/vcclient/COM/volano/WebVolanoChat.jar.pack.gz
Note: If you moved the public
vcclient
directory to your Web server root directory, you'll need to copy the new applet files there. -
Change to the VOLANO chat server directory and start the server with the commands:
cd volano-2.12.0 ./startup.sh
You should see messages like the following:
java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode) VOLANO(TM) Chat Server Version 2.13.0 Copyright (c) 1996-2014 Status Six Communications Loading server properties from "/home/volano/volano-2.12.0/conf/properties.txt". www.example.com:8000 (<IP_ADDRESS>:8000) VolanoChatPro - unlimited connections. Apache Tomcat/4.1.40
Note the updated VOLANO Chat Server Version number of 2.13.0.
-
Go to the address http://localhost:8080/vcclient/ on the same machine running the VOLANO chat server to connect to the server with the VOLANO chat applets.
Windows Systems
To apply the upgrade to VOLANO chat server version 2.12 on a Windows system:
-
Stop the VOLANO chat server.
-
Save a backup copy of the version 2.12 code for recovery purposes by renaming the following two JAR files and directory:
Server JAR file: volano-2.12.0\lib\volano-chat-server.jar ==> volano-chat-server.jar.old Servlet JAR file: volano-2.12.0\webapps\ROOT\WEB-INF\lib\volano-chat-servlets.jar ==> volano-chat-servlets.jar.old Applet directory: volano-2.12.0\webapps\ROOT\vcclient\COM\volano ==> volano.old
-
Download the volano-upgrade-2.13.0-localhost.zip file. Right-click the file and select Extract All... from the context menu. Follow the instructions and select the VOLANO chat server version 2.12 folder where you want the upgrade applied, as shown in the example below for the user john.
If you use a command-line unzip program to extract the files instead of the Windows Extraction Wizard, add the
-DD
command option. The-DD
option of many unzip programs suppresses the timestamp restoration for all extracted files and directories, setting the timestamps to the current time. With current timestamps, your Web site visitors will be sure to pick up the new applet files instead of using copies of the old ones in their cache.The upgrade archive installs the following files into the folder where you unpack it:
lib\volano-chat-server.jar webapps\ROOT\WEB-INF\lib\volano-chat-servlets.jar webapps\ROOT\vcclient\COM\volano\Agent.jar webapps\ROOT\vcclient\COM\volano\Agent.jar.gz webapps\ROOT\vcclient\COM\volano\Agent.jar.pack.gz webapps\ROOT\vcclient\COM\volano\MyVolanoChat.jar webapps\ROOT\vcclient\COM\volano\MyVolanoChat.jar.gz webapps\ROOT\vcclient\COM\volano\MyVolanoChat.jar.pack.gz webapps\ROOT\vcclient\COM\volano\VolanoChat.jar webapps\ROOT\vcclient\COM\volano\VolanoChat.jar.gz webapps\ROOT\vcclient\COM\volano\VolanoChat.jar.pack.gz webapps\ROOT\vcclient\COM\volano\WebVolanoChat.jar webapps\ROOT\vcclient\COM\volano\WebVolanoChat.jar.gz webapps\ROOT\vcclient\COM\volano\WebVolanoChat.jar.pack.gz
Note: If you moved the public
vcclient
directory to your Web server root directory, you'll need to copy the new applet files there. -
Open the Command Prompt. Change to the VOLANO chat server directory and start the server with the commands:
cd volano-2.12.0 startup
You should see messages like the following:
java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) Client VM (build 24.60-b09, mixed mode, sharing) VOLANO(TM) Chat Server Version 2.13.0 Copyright (c) 1996-2014 Status Six Communications Loading server properties from "C:\Users\volano\volano-2.12.0\conf\properties.txt". www.example.com:8000 (<IP_ADDRESS>:8000) VolanoChatPro - unlimited connections. Apache Tomcat/4.1.40
Note the updated VOLANO Chat Server Version number of 2.13.0.
-
Go to the address http://localhost:8080/vcclient/ on the same machine running the VOLANO chat server to connect to the server with the VOLANO chat applets.


- Installing on OpenShift Container Platform
- Installing ManageIQ
- Configuring External Authentication to ManageIQ
- Managing ManageIQ with OpenShift
- Troubleshooting Deployment
- Appendix
Installing on OpenShift Container Platform
Installing ManageIQ
ManageIQ can be installed on OpenShift Container Platform in a few steps.
This procedure uses a template to deploy a multi-pod ManageIQ appliance with the database stored in a persistent volume on OpenShift Container Platform. It provides a step-by-step setup, including cluster administrative tasks as well as information and commands for the application developer using the deployment.
The ultimate goal of the deployment is to be able to deconstruct the ManageIQ appliance into several containers running on a pod or a series of pods.
Running the ManageIQ appliance in a series of pods has several advantages. For example, running each worker in a separate pod allows OpenShift Container Platform to manage worker processes and reduce worker memory consumption. OpenShift can also easily scale workers by adding or removing pods, and perform upgrades by using images.
There are two options for installing ManageIQ on OpenShift:
-
During OpenShift Container Platform 3.7 installation:
- When you install OpenShift Container Platform 3.7, you have the option to install ManageIQ inside OpenShift at the time. This method leverages the Ansible installer to run and deploy the ManageIQ template, instead of building the environment manually. See the OpenShift Container Platform 3.7 Release Notes for details.
-
Manual install on an existing OpenShift Container Platform environment:
- Deploy ManageIQ pods using the ManageIQ template (.yaml file). This is the method described in this guide.
After deployment, you can configure the ManageIQ environment to use any external authentication configurations supported by ManageIQ.
Prerequisites
To successfully deploy a ManageIQ appliance on OpenShift Container Platform, you need a functioning OpenShift Container Platform 3.7 install with the following configured:
-
NFS or other compatible volume provider
-
A
cluster-admin
user -
A regular user (such as an application developer)
Cluster Sizing
To avoid deployment failures due to resource starvation, Red Hat recommends the following minimum cluster size for a test environment:
-
1 master node with at least 8 vCPUs and 12GB RAM
-
2 schedulable nodes with at least 4 vCPUs and 8GB RAM
-
25GB storage for ManageIQ physical volume use
These recommendations assume ManageIQ is the only application running on this cluster. Alternatively, you can provision an infrastructure node to run registry, metrics, router, and logging pods.
Each ManageIQ application pod will consume at least 3GB RAM on initial deployment (without providers added). RAM consumption increases depending on the appliance use. For example, after adding providers, expect higher resource consumption.
Limitations
The following limitations exist when deploying this version of ManageIQ on OpenShift Container Platform 3.7:
-
This configuration cannot run on public OpenShift (OpenShift.io and OpenShift Dedicated environments) because of necessary privileges
-
The Embedded Ansible pod must run as a privileged pod
-
OpenShift cannot independently scale workers
-
A highly available database is not supported in PostgreSQL pods
Templates and Images
Preparing to Deploy ManageIQ
To prepare for deploying the ManageIQ appliance to OpenShift Container Platform, create a project, configure security contexts, and create persistent storage.
-
As a regular user, log in to OpenShift:
$ oc login -u <user> -p <password>
-
Create a project with your desired parameters. The project name (
<your_project>
in this example) is mandatory, but<description>
and<display_name>
are optional:$ oc new-project <your_project> \ --description="<description>" \ --display-name="<display_name>"
-
As the admin user, configure security context constraints (SCCs) for your OpenShift service accounts:
-
Add the
cfme-anyuid
service account to theanyuid
SCC:$ oc adm policy add-scc-to-user anyuid system:serviceaccount:<your-project>:cfme-anyuid
-
Add the
cfme-orchestrator
service account to theanyuid
SCC:$ oc adm policy add-scc-to-user anyuid system:serviceaccount:<your-project>:cfme-orchestrator
-
Add the
cfme-httpd
service account to theanyuid
SCC:$ oc adm policy add-scc-to-user anyuid system:serviceaccount:<your-project>:cfme-httpd
-
Add the
cfme-privileged
service account to theprivileged
SCC:$ oc adm policy add-scc-to-user privileged system:serviceaccount:<your-project>:cfme-privileged
-
-
Verify the SCCs are added correctly to the service accounts and project:
$ oc describe scc anyuid | grep Users Users: system:serviceaccount:<your-project>:cfme-anyuid,system:serviceaccount:<your-project>:cfme-httpd,system:serviceaccount:<your-project>:cfme-orchestrator $ oc describe scc privileged | grep Users Users: system:admin,system:serviceaccount:openshift-infra:build-controller,system:serviceaccount:management-infra:management-admin,system:serviceaccount:management-infra:inspector-admin,system:serviceaccount:logging:aggregated-logging-fluentd,system:serviceaccount:<your-project>:cfme-privileged
For more information on SCCs, see the [OpenShift documentation](https://docs.openshift.com/container-platform/3.7/admin_guide/manage_scc.html). -
As the admin user, add the
httpd-configmap-generator
service account to thehttpd-scc-sysadmin
SCC before the Httpd Configmap Generator can run.Users: system:serviceaccount:<your-namespace>:httpd-configmap-generator
-
Add the
view
andedit
roles to thecfme-orchestrator
service account:$ oc policy add-role-to-user view system:serviceaccount:<your-project>:cfme-orchestrator -n <your-project> $ oc policy add-role-to-user edit system:serviceaccount:<your-project>:cfme-orchestrator -n <your-project>
-
As the admin user, prepare persistent storage for the deployment. (Skip this step if you have already configured persistent storage.)
A basic ManageIQ deployment needs at least two persistent volumes (PVs) to store ManageIQ data. As the admin user, create two persistent volumes: one to host the ManageIQ PostgreSQL database, and one to host the application data.
Example NFS-backed volume templates are provided by
cfme-pv-db-example.yaml
andcfme-pv-server-example.yaml
, available from the image stream or repository configured in Templates and Images.For NFS-backed volumes, ensure your NFS server firewall is configured to allow traffic on port 2049 (TCP) from the OpenShift cluster. Red Hat recommends setting permissions for the pv-app (privileged pod volume) as 777, uid/gid 0 (owned by root). For more information on configuring persistent storage in OpenShift Container Platform, see the [OpenShift Container Platform Installation and Configuration](https://access.redhat.com/documentation/en-us/openshift_container_platform/3.7/html-single/installation_and_configuration/#configuring-persistent-storage) guide.-
Configure your NFS server host details within these files, and edit any other settings needed to match your environment.
-
Create the two persistent volumes:
$ oc create -f cfme-pv-db-example.yaml $ oc create -f cfme-pv-server-example.yaml
-
Process the templates, editing the NFS_HOST parameter (mandatory) and any other parameters:
$ oc process cfme-pv-db-example.yaml -p NFS_HOST=nfs.example.com | oc create -f -
Alternatively, you can create the two persistent volumes and process the templates in a single command:
$ oc process cfme-pv-server-example.yaml -p NFS_HOST=nfs.example.com | oc create -f -
There are three parameters required to process the template. Only NFS\_HOST is required, PV\_SIZE and BASE\_PATH contain defaults that do not need editing unless desired: - PV\_SIZE - Defaults to the recommended PV size for the App/DB template (5Gi/15Gi respectively) - BASE\_PATH - Defaults to /exports - NFS\_HOST - No Default - Hostname or IP address of the NFS server -
Verify the persistent volumes were created successfully:
$ oc get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE cfme-app 5Gi RWO Retain Available 16s cfme-db 15Gi RWO Retain Available 49s
Red Hat recommends validating NFS share connectivity from an OpenShift node before attempting a deployment.
-
-
Increase the maximum number of imported images on ImageStream.
By default, OpenShift Container Platform can import five tags per image stream, but the ManageIQ repositories contain more than five images for deployments.
You can modify this setting on the master node at
/etc/origin/master/master-config.yaml
so OpenShift can import additional images.-
Add the following at the end of the
/etc/origin/master/master-config.yaml
file:... imagePolicyConfig: maxImagesBulkImportedPerRepository: 100
-
Restart the master service:
$ systemctl restart atomic-openshift-master
-
-
On each OpenShift node, persistently enable the
container_manage_cgroup
SELinux boolean to allow container processes to make changes to the cgroup configuration:# setsebool -P container_manage_cgroup on
Deploying the ManageIQ Appliance
To deploy the appliance on OpenShift Container Platform, create the ManageIQ template and verify it is available in your project.
-
As a regular user, create the ManageIQ template:
$ oc create -f cfme-template.yaml template "cloudforms" created
-
Verify the template is available with your project:
$ oc get templates NAME DESCRIPTION PARAMETERS OBJECTS cloudforms CloudForms appliance with persistent storage 18 (1 blank) 12
-
(Optional) Customize the template’s deployment parameters. Use the following command to see the available parameters and descriptions:
$ oc process --parameters -n <your-project> cloudforms
To customize the deployment configuration parameters, run:
$ oc edit dc/<deployconfig_name>
-
To deploy ManageIQ from template using default settings, run:
$ oc new-app --template=cloudforms
Alternatively, to deploy ManageIQ from a template using customized settings, add the
-p
option and the desired parameters to the command. For example:$ oc new-app --template=cloudforms -p DATABASE_VOLUME_CAPACITY=2Gi,POSTGRESQL_MEM_LIMIT=4Gi,APPLICATION_DOMAIN=hostname
The `APPLICATION_DOMAIN` parameter specifies the hostname used to reach the ManageIQ application, which eventually constructs the route to the ManageIQ pod. If you do not specify the `APPLICATION_DOMAIN` parameter, the ManageIQ application will not be accessible after the deployment; however, this can be fixed by changing the route. For more information on OpenShift template parameters, see the [OpenShift Container Platform Developer Guide](https://access.redhat.com/documentation/en-us/openshift_container_platform/3.7/html-single/developer_guide/#dev-guide-templates).
Deploying the ManageIQ Appliance Using an External Database
Before attempting to deploy ManageIQ using an external database deployment, ensure the following conditions are satisfied:
-
Your OpenShift cluster can access the external PostgreSQL server
-
The ManageIQ user, password, and role have been created on the external PostgreSQL server
-
The intended ManageIQ database is created, and ownership has been assigned to the ManageIQ user
To deploy the appliance:
-
Import the ManageIQ external database template:
$ oc create -f templates/cfme-template-ext-db.yaml
-
Launch the deployment with the following command. The database server IP address is required, and the other settings must match your remote PostgreSQL server.
$ oc new-app --template=cloudforms-ext-db -p DATABASE_IP=<server_ip> -p DATABASE_USER=<user> -p DATABASE_PASSWORD=<password> -p DATABASE_NAME=<database_name>
Verifying the Configuration
Verify the deployment was successful by running the following commands as a regular user under the ManageIQ project:
-
Confirm the ManageIQ pod is bound to the correct security context constraints:
-
List and obtain the name of the
cfme-app
pod:$ oc get pod NAME READY STATUS RESTARTS AGE cloudforms-0 1/1 Running 0 4m httpd-1-w486v 1/1 Running 0 4m memcached-1-4xtjc 1/1 Running 0 4m postgresql-1-n5tm6 1/1 Running 0 4m
-
Export the configuration of the pod:
$ oc export pod <cfme_pod_name>
-
Examine the output to verify that
openshift.io/scc
has the valueanyuid
:... metadata: annotations: openshift.io/scc: anyuid ...
-
-
Verify the persistent volumes are attached to the
postgresql
andcfme-app
pods:$ oc volume pods --all pods/postgresql-1-437jg pvc/cfme-pgdb-claim (allocated 2GiB) as cfme-pgdb-volume mounted at /var/lib/pgsql/data secret/default-token-2se06 as default-token-2se06 mounted at /var/run/secrets/kubernetes.io/serviceaccount pods/cfme-1-s3bnp pvc/cfme (allocated 2GiB) as cfme-app-volume mounted at /persistent secret/default-token-9q4ge as default-token-9q4ge mounted at /var/run/secrets/kubernetes.io/serviceaccount
-
Check the readiness of the ManageIQ pod:
Allow approximately five minutes once pods are in running state for ManageIQ to start responding on HTTPS.$ oc describe pods <cfme_pod_name> ... Conditions: Type Status Ready True Volumes: ...
-
After you have successfully validated your ManageIQ deployment, disable automatic image change triggers to prevent unintended upgrades.
By default, on initial deployments the automatic image change trigger is enabled. This could potentially start an unintended upgrade on a deployment if a newer image is found in the ImageStream.
Disable the automatic image change triggers for ManageIQ deployment configurations (DCs) on each project with the following commands:
$ oc set triggers dc --manual -l app=cloudforms deploymentconfig "memcached" updated deploymentconfig "postgresql" updated $ oc set triggers dc --from-config --auto -l app=cloudforms deploymentconfig "memcached" updated deploymentconfig "postgresql" updated
The configuration change trigger is kept enabled; to have full control of your deployments, you can alternatively turn it off. See the [OpenShift Container Platform Developer Guide](https://access.redhat.com/documentation/en-us/openshift_container_platform/3.7/html-single/developer_guide/#dev-guide-triggering-builds) for more information on deployment triggers.
Logging into ManageIQ
As part of the deployment, a route to the ManageIQ appliance is created for HTTPS access. Once the pods have been successfully deployed, you can log into ManageIQ.
You can obtain the ManageIQ host address from the project in the OpenShift user interface, or by opening a shell on the pod and getting the route information.
-
To open a shell on the pod, run:
$ oc rsh <pod_name> bash -l
-
Get the route information:
$ oc get routes NAME HOST/PORT PATH SERVICE TERMINATION LABELS cloudforms cfme.apps.e2e.example.com cloudforms:443-tcp passthrough app=cloudforms
-
Navigate to the reported URL/host on a web browser (in this example,
cfme.apps.e2e.example.com
). -
Enter the default ManageIQ credentials (Username: admin | Password: smartvm) for the initial login.
-
Click Login.
Configuring External Authentication to ManageIQ
After installing ManageIQ, configure external authentication by updating the httpd-auth-configs
configuration map on the httpd
pod to include all necessary configuration files and certificates.
Upon startup, the httpd
pod overlays its files with the ones specified in the auth-configuration.conf
file in the configuration map. This is done by the initialize-httpd-auth
service that runs before httpd
.
You can automatically generate an updated configuration map by running the httpd-configmap-generator
tool in its own pod using the steps in Configuring External Authentication Automatically (recommended).
Alternatively, you can define the configuration map manually using the commands in Defining the Configuration Map Manually.
Configuring External Authentication Automatically
To automatically generate an authconfig
map, run the httpd_configmap_generator
tool with your desired parameters:
$ httpd_configmap_generator <command_or_authentication_type>
Note:
Run httpd_configmap_generator --help
or see External Authentication Configuration Map Settings
for configuration map parameters.
Supported Authentication Types
The following authentication types can be configured with the httpd_configmap_generator
tool to configure external authentication.
For usage, run:
$ httpd_configmap_generator <auth-type> --help
| auth-type | Identity Provider/Environment |
| active-directory | Active Directory domain realm join |
| ipa | IPA, IPA 2-factor authentication, IPA/AD Trust |
| ldap | LDAP directories |
| saml | Keycloak, Red Hat SSO |
Supported Authentication Types
authconfig
Map
Updating an With the update
subcommand, you can add file(s) to the configuration map to specify file ownership and permissions. The --add-file
option can be specified multiple times (once per file) to add files to a configuration map.
Supported file specifications for the --add-file
option are:
--add-file=file-path
--add-file=source-file-path,target-file-path
--add-file=source-file-path,target-file-path,file-permission
--add-file=file-url,target-file-path,file-permission
When entering file specifications, file-url
is an HTTP URL and file-permission
can be specified as mode:owner:group
.
Adding files by specifying paths.
The file ownership and permissions are based on the files specified. For example:
$ httpd_configmap_generator update \
--input=/tmp/original-auth-configmap.yaml \
--add-file=/etc/openldap/cacerts/primary-directory-cert.pem \
--add-file=/etc/openldap/cacerts/seconday-directory-cert.pem \
--output=/tmp/updated-auth-configmap.yaml
Adding target files from different source directories.
$ httpd_configmap_generator update \
--input=/tmp/original-auth-configmap.yaml \
--add-file=/tmp/uploaded-cert1,/etc/openldap/cacerts/primary-directory-cert.pem \
--add-file=/tmp/uploaded-cert2,/etc/openldap/cacerts/seconday-directory-cert.pem \
--output=/tmp/updated-auth-configmap.yaml
The file ownership and permissions are based on the source files specified; in this case the ownership and permissions of the
/tmp/uploaded-cert1
and /tmp/uploaded-cert2
files will be used.
Adding a target file with user-specified ownership and mode.
$ httpd_configmap_generator update \
--input=/tmp/original-auth-configmap.yaml \
--add-file=/tmp/secondary-keytab,/etc/http2.keytab,600:apache:root \
--output=/tmp/updated-auth-configmap.yaml
Adding files by URL.
$ httpd_configmap_generator update \
--input=/tmp/original-auth-configmap.yaml \
--add-file=http://aab-keycloak:8080/auth/realms/testrealm/protocol/saml/description,/etc/httpd/saml2/idp-metadata.xml,644:root:root \
--output=/tmp/updated-auth-configmap.yaml
When downloading a file by URL, a target file path and file ownership and mode must be specified.
authconfig
Map
Exporting a File from an With the export
subcommand, you can export a file from the configuration map. For example, to extract the sssd.conf
file from the authconfig
map:
$ httpd_configmap_generator export \
--input=/tmp/external-ipa.yaml \
--file=/etc/sssd/sssd.conf \
--output=/tmp/sssd.conf
httpd_configmap_generator
in a Container
Building the The httpd_configmap_generator
is the container for configuring external authentication for the httpd
auth pod. It is based on the auth httpd
container and generates the httpd
authconfig
map needed to enable external authentication.
Two templates are required to run the httpd-configmap-generator
application (httpd-configmap-generator-htmplate.yaml
and httpd-scc-sysadmin.yaml
), which are available from the Red Hat Container Catalog.
httpd-configmap-generator
Application
Preparing to Deploy the -
To obtain the latest
cfme-httpd-configmap-generator
image from the Red Hat Container Catalog, run:$ oc import-image my-cloudforms46/cfme-httpd-configmap-generator --from=registry.access.redhat.com/cloudforms46/cfme-httpd-configmap-generator --confirm
-
The
httpd-configmap-generator
service account must be added to thehttpd-scc-sysadmin
security context constraints (SCC) before thehttpd-configmap-generator
can run. To edit the SCC, log in to OpenShift as an admin user:$ oc login -u <user> -p <password>
-
Create the
httpd-scc-sysadmin
SCC:$ oc create -f templates/httpd-scc-sysadmin.yaml
-
Add the
httpd-configmap-generator
service account to thehttpd-scc-sysadmin
SCC:$ oc adm policy add-scc-to-user httpd-scc-sysadmin system:serviceaccount:<your-namespace>:httpd-configmap-generator
-
Verify that the
httpd-configmap-generator
service account is now included in thehttpd-scc-sysadmin
SCC:$ oc describe scc httpd-scc-sysadmin | grep Users Users: system:serviceaccount:<your-namespace>:httpd-configmap-generator
httpd-configmap-generator
Application
Deploying the -
As a regular user, run:
$ oc create -f httpd-configmap-generator-template.yaml
-
Verify the template is available with your project:
$ oc get templates NAME DESCRIPTION PARAMETERS OBJECTS httpd-configmap-generator Httpd Configmap Generator 6 (all set) 3
-
Deploy the
httpd-configmap-generator
:$ oc new-app --template=httpd-configmap-generator
-
Check the readiness of the
httpd-configmap-generator
:$ oc get pods NAME READY STATUS RESTARTS AGE httpd-configmap-generator-1-txc34 1/1 Running 0 1h
Getting the Pod Name
To work with the httpd-configmap-generator
script in the httpd-configmap-generator
pod, it is necessary to get the pod name as
follows:
$ CONFIGMAP_GENERATOR_POD=`oc get pods | grep "httpd-configmap-generator" | cut -f1 -d" "`
authconfig
Map for External Authentication Against IPA
Example: Generating an The following example shows how to generate a configuration map for external authentication using IPA.
-
To generate an
authconfig
map for external authentication using IPA, run:$ oc rsh $CONFIGMAP_GENERATOR_POD -- bash -c httpd_configmap_generator ipa \ --host=appliance.example.com \ --ipa-server=ipaserver.example.com \ --ipa-domain=example.com \ --ipa-realm=EXAMPLE.COM \ --ipa-principal=admin \ --ipa-password=smartvm1 \ -o /tmp/external-ipa.yaml
Note:
--host
must be the DNS of the application exposing thehttpd
pod, for example ${APPLICATION_DOMAIN}. -
Copy the new
authconfig
map back locally:$ oc cp $CONFIGMAP_GENERATOR_POD:/tmp/external-ipa.yaml ./external-ipa.yaml
-
Apply the new configuration map to the
httpd
pod, and then redeploy it to take effect:$ oc replace configmaps httpd-auth-configs --filename ./external-ipa.yaml
To generate a new authconfig
map, redeploy the httpd-configmap-generator
pod first to get a clean environment before
running the httpd-configmap-generator
tool.
If additional configuration is needed, you can configure the configuration map manually using the steps in Defining the Configuration Map Manually. See External Authentication Configuration Map Settings for configuration map parameters.
Cleaning up
After generating an authconfig
map, the httpd-configmap-generator
pod can be scaled down, or deleted if no longer needed.
To scale down the pod, run:
$ oc scale dc httpd-configmap-generator --replicas=0
To delete the pod, run:
$ oc delete all -l app=httpd-configmap-generator
$ oc delete pods -l app=httpd-configmap-generator
Defining the Configuration Map Manually
The authconfig
map can be defined and customized in the httpd
pod as follows:
$ oc edit configmaps httpd-auth-configs
Alternatively, you can replace the httpd-auth-configs
file with an externally generated and edited configuration file as follows:
$ oc replace configmaps httpd-auth-configs --filename external-auth-configmap.yaml
After editing the configuration map, redeploy the httpd
pod for the new authentication configuration to take effect.
Managing ManageIQ with OpenShift
This section includes common tasks to manage your ManageIQ deployment from OpenShift.
Configuring Custom SSL Certificates for ManageIQ
By default, the route that is deployed as part of the template uses edge termination and the certificates that OpenShift is installed with. It is possible to change this in the OpenShift UI with the following steps:
-
Browse to menu: Applications > Routes.
-
Click on the route named httpd, then select menu: Actions > Edit.
-
Scroll down to the Certificates section. Here you can upload or paste the required certificate files.
-
Click Save.
Scaling ManageIQ Appliances
StatefulSets in OpenShift manage the deployment and scaling of a set of pods (in this case, ManageIQ appliances). StatefulSets ensure ordering that applications will come up by providing unique identities for pods.
Important:
Each new replica (server) consumes a physical volume. Before scaling, ensure you have enough physical volumes available to scale.
The following example shows scaling using StatefulSets:
Example: Scaling to two replicas.
$ oc scale statefulset cloudforms --replicas=2
statefulset "cloudforms" scaled
$ oc get pods
NAME READY STATUS RESTARTS AGE
cloudforms-0 1/1 Running 0 34m
cloudforms-1 1/1 Running 0 5m
memcached-1-mzeer 1/1 Running 0 1h
postgresql-1-dufgp 1/1 Running 0 1h
The newly created replicas will join the existing ManageIQ region. Each new pod is numbered in the order it is deployed, starting with 0 and increasing sequentially. For example, replicas in a StatefulSet will be numbered cloudforms-0 cloudforms-1, and so on.
Creating a Backup
Create a persistent volume for backups using the PV backup template (cfme-pv-backup-example.yaml
) in case you need to restore to a previous version.
-
Create the persistent volume for the backup:
$ oc create -f cfme-pv-backup-example.yaml
-
Create the backup persistent volume claim (PVC):
$ oc create -f cfme-backup-pvc.yaml
-
Verify the persistent volume claim was created:
$ oc get pvc
-
Back up secrets, such as database encryption keys and credentials.
Important:
Be careful to back up secrets in a secure location.
$ oc get secret -o yaml --export=true > secrets.yaml $ oc get pvc -o yaml --export=true > pvc.yaml
-
Initiate the database backup:
$ oc create -f cfme-backup-job.yaml
This step creates a container, and connects to the database pod, pg_basebackup
.
Restoring to a Backup
You can restore to a database backup created in Creating a Backup using the restore template,
cfme-restore-job.yaml
.
The restore job will look for cfme-backup
and cfme-postgresql
PVs by default, and the latest successful backup will be restored by default. If existing data is found on the cfme-postgresql
volume, it will be renamed and left on the volume.
Important:
You must perform a database restore on an offline environment. All pods must be scaled down to 0, and not running.

Updating ManageIQ
Apply package updates to your ManageIQ appliance from OpenShift Container Platform by deleting the pods and redeploying them using updated ManageIQ container images. To update your environment with a new template, follow the steps in Updating the ManageIQ Container Images and Template.
Updating the ManageIQ Container Images
To deploy new container images for ManageIQ, delete the pods, update the images, then redeploy the updated pods:
-
Delete the pods by scaling the application StatefulSets to 0 replicas:
$ oc scale statefulset cloudforms --replicas=0 $ oc scale statefulset cloudforms-backend --replicas=0
-
Patch in the new version of the images:
$ oc patch statefulset cloudforms -p '{"spec": {"template": {"spec": {"containers": [{"name": "cloudforms", "image": "registry.redhat.io/cloudforms46/cfme-openshift-app-ui:<new-version-tag>"}]}}}}' $ oc patch statefulset cloudforms-backend -p '{"spec": {"template": {"spec": {"containers": [{"name": "cloudforms", "image": "registry.redhat.io/cloudforms46/cfme-openshift-app:<new-version-tag>"}]}}}}'
-
Scale the StatefulSets back to your previous values to redeploy the pods:
$ oc scale statefulset cloudforms --replicas=<old-value> $ oc scale statefulset cloudforms-backend --replicas=<old-value>
Your ManageIQ environment is now updated to use the new container images.
Updating the ManageIQ Container Images and Template
To update a ManageIQ deployment with a new template, update the container images and the template using the following steps:
-
Back up secrets, such as database encryption keys and credentials:
Important:
Be careful to back up secrets in a secure location.
$ oc export secret cloudforms-secrets > my_secrets.yml
-
Delete the pods by scaling the application StatefulSets to 0 replicas:
$ oc scale statefulset cloudforms --replicas=0 $ oc scale statefulset cloudforms-backend --replicas=0
-
Apply the changes to the project, specifying the template appropriate to your environment’s database configuration.
Important:
If you customized any parameters when originally deploying the application (parameters used with the
oc new-app
command in Deploying the ManageIQ Appliance), you must set the same values in theoc process
command here.-
For environments using a database stored on a pod within the cluster (the default configuration), specify the ManageIQ template:
$ oc process -p APPLICATION_REPLICA_COUNT=0 -l app=cloudforms,template=cloudforms -f cfme-template.yaml | oc replace -f -
-
For environments using a database external to the OpenShift cluster, specify the ManageIQ external database template:
$ oc process -p APPLICATION_REPLICA_COUNT=0 -l app=cloudforms,template=cloudforms-ext-db -f cfme-template-ext-db.yaml | oc replace -f -
-
-
Replace the secret with the
my_secrets.yml
file you created earlier:$ oc replace -f my_secrets.yml
-
Redeploy the
postgresql
pod to ensure the password from the old secret is used:$ oc rollout latest postgresql
-
Scale the StatefulSets back to your previous values to redeploy the pods:
$ oc scale statefulset cloudforms --replicas=<old-value> $ oc scale statefulset cloudforms-backend --replicas=<old-value>
Your ManageIQ environment is now updated to use the new template and container images.
Uninstalling ManageIQ from a Project
If no longer needed, you can uninstall the ManageIQ pod from your project. Note the following commands do not remove SCC permissions, or the project itself.
Important:
Use this procedure if only ManageIQ exists in the project.
-
Inside the project, run the following as a regular user:
$ oc delete all --all
-
Wait approximately 30 seconds for the command to process, then run:
$ oc delete pvc --all
Troubleshooting Deployment
Under normal circumstances, the deployment process takes approximately 10 minutes. If the deployment is unsuccessful, examining deployment events and pod logs can help identify any issues.
-
As a regular user, first retry the failed deployment:
$ oc get pods NAME READY STATUS RESTARTS AGE cloudforms-1-deploy 0/1 Error 0 25m memcached-1-yasfq 1/1 Running 0 24m postgresql-1-wfv59 1/1 Running 0 24m $ oc deploy cloudforms --retry Retried #1 Use 'oc logs -f dc/cloudforms' to track its progress.
-
Allow a few seconds for the failed pod to get re-scheduled, then check events and logs:
$ oc describe pods <pod-name> ... Events: FirstSeen LastSeen Count From SubobjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 15m 15m 1 {kubelet ocp-eval-node-2.e2e.example.com} spec.containers{cloudforms} Warning Unhealthy Readiness probe failed: Get http://<IP_ADDRESS>:80/: dial tcp <IP_ADDRESS>:80: getsockopt: connection refused
Liveness and readiness probe failures, like in the output above, indicate the pod is taking longer than expected to come online. In this case, check the pod logs.
-
As the
cfme-app
container issystemd
based, useoc rsh
instead ofoc logs
to obtain journal dumps:$ oc rsh <pod-name> journalctl -x
-
Transferring all logs from the
cfme-app
pod to a directory on the host for further examination can be useful for troubleshooting. Transfer the logs with theoc rsync
command:$ oc rsync <pod-name>:/persistent/container-deploy/log \ /tmp/fail-logs/ receiving incremental file list log/ log/appliance_initialize_1477272109.log log/restore_pv_data_1477272010.log log/sync_pv_data_1477272010.log sent 72 bytes received 1881 bytes 1302.00 bytes/sec total size is 1585 speedup is 0.81
Appendix
External Authentication Configuration Map Settings
See Sample External Authentication Configuration for an example configuration map file.
The configuration map includes the following parameters:
-
auth-type The authentication type.
This parameter controls which configuration files
httpd
will load upon startup. The default isinternal
. Supported values are:Value External Authentication Configuration internal
Application Based Authentication - Database, LDAP/LDAPS, Amazon. This is the default. external
IPA, IPA 2-factor authentication, IPA/AD Trust, LDAP (OpenLDAP, RHDS, Active Directory, etc.) active-directory
Active Directory domain realm join saml
SAML based authentication (Keycloak, ADFS, etc.) auth-type
valuesEnabling external authentication must be done from the ManageIQ user interface; see [Configuring External Authentication](https://access.redhat.com/documentation/en-us/red_hat_cloudforms/4.7/html/managing_authentication_for_cloudforms/external_auth) in *Managing Authentication* for details. -
auth-kerberos-realms The Kerberos realms to join.
When configuring external authentication against IPA, Active Directory or LDAP, this parameter defines the Kerberos realm
httpd
is configured against, such as example.com. When specifying multiple Kerberos realms, they must be separated by spaces. The default isundefined
. -
auth-configuration.conf The external authentication configuration file which declares the list of files to overlay upon startup if
auth-type
is other thaninternal
.Syntax for the file is as follows:
# for comments file = basename1 target_path1 permission1 file = basename2 target_path2 permission2
For the files to overlay on the
httpd
pod, onefile
directive is needed per file. -
basename The name of the source file in the configuration map.
-
permission (optional) By default, files are copied using the pod’s default umask, owner and group, so files are created as mode 644 owner root, group root.
permission
can be specified as follows, reflecting the mode and ownership to set the copied files to:-
mode
-
mode:owner
-
mode:owner:group
For example:
-
755
-
640:root
-
644:root:apache
Binary files can be specified in the configuration map in their base64 encoded format with a basename having a
.base64
extension. Such files are then converted back to binary as they are copied to their target path.When an
/etc/sssd/sssd.conf
file is included in the configuration map, thehttpd
pod automatically enables the SSSD service upon startup.
-
-
target_path The path of the file on the pod to overwrite, i.e.
/etc/sssd/sssd.conf
.
Sample External Authentication Configuration
The following is an example of the data section of a SAML auth-config map data section (excluding the content of the files):
apiVersion: v1
data:
auth-type: saml
auth-kerberos-realms: example.com
auth-configuration.conf: |
#
# Configuration for SAML authentication
#
file = manageiq-remote-user.conf /etc/httpd /conf.d/manageiq-remote-user.conf 644
file = manageiq-external-auth-saml.conf /etc/httpd/conf.d/manageiq-external-auth-saml.conf 644
file = idp-metadata.xml /etc/httpd/saml2/idp-metadata.xml 644
file = sp-key.key /etc/httpd/saml2/sp-key.key 600:root:root
file = sp-cert.cert /etc/httpd/saml2/sp-cert.cert 644
file = sp-metadata.xml /etc/httpd/saml2/sp-metadata.xml 644
manageiq-remote-user.conf: |
RequestHeader unset X_REMOTE_USER
...
manageiq-external-auth-saml.conf: |
LoadModule auth_mellon_module modules/mod_auth_mellon.so
...
idp-metadata.xml: |
<EntitiesDescriptor ...
...
</EntitiesDescriptor>
sp-key.key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
sp-cert.cert: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
sp-metadata.xml: |
<EntityDescriptor ...
...
</EntityDescriptor>


|
Finite Element Course
|
Root class for integration rules This class stores the integration points and weights an integration rule. More...
#include <IntRule.h>
Public Member Functions | |
| IntRule () | |
| IntRule (int order) | |
| virtual | ~IntRule () |
| virtual IntRule & | operator= (const IntRule ©) |
| IntRule (const IntRule ©) | |
| virtual int | Dimension () const =0 |
| virtual int | MaxOrder () const =0 |
| virtual void | SetOrder (int order) |
| virtual int | GetOrder () const |
| virtual int | NPoints () const |
| virtual void | Point (int p, VecDouble &co, double &weight) const |
| virtual void | Print (std::ostream &out) const |
Protected Attributes | |
| int | fOrder |
| MatrixDouble | fPoints |
| VecDouble | fWeights |
Root class for integration rules This class stores the integration points and weights an integration rule.
| IntRule::IntRule | ( | ) |
Definition at line 15 of file IntRule.cpp.
| IntRule::IntRule | ( | int | order | ) |
Definition at line 21 of file IntRule.cpp.
|
virtual |
Definition at line 25 of file IntRule.cpp.
| IntRule::IntRule | ( | const IntRule & | copy | ) |
Definition at line 29 of file IntRule.cpp.
|
pure virtual |
Implemented in IntRuleTriangle, IntRuleTetrahedron, IntRuleQuad, IntRule1d, and IntRule0d.
|
pure virtual |
Implemented in IntRuleTriangle, IntRuleTetrahedron, IntRuleQuad, IntRule1d, and IntRule0d.
|
virtual |
Definition at line 42 of file IntRule.cpp.
Definition at line 35 of file IntRule.cpp.
|
virtual |
Definition at line 64 of file IntRule.cpp.
|
virtual |
Definition at line 46 of file IntRule.cpp.
|
inlinevirtual |
Reimplemented in IntRuleTriangle, IntRuleTetrahedron, IntRuleQuad, IntRule1d, and IntRule0d.
|
protected |


Table of content
Current themes
- 'Bubbled and Slide' Positioning:
- 'Unstretch' Positioning:
COMING SOON List
- Put at least a few demo/examples [Done!]
- Add SASS files [Done!]
- Add note on browser compatibility
- Make this page prettier [Done!]
- Create a module for notification center
- Add a few more themes [Done!]
- Dedicated fonticon?
To get WatNotif, download this repository from Github OR use bower.
bower install watnotif
1. Include the stylesheet you want in the HTML head of the page.
 By convention, a CSS file will be named watnotif.<horizontal position>-<vertical position>-<effect>.css
.
You have to include only one of them depending on how you want to display the notifications on your website.
2. Include the javascript at the end of the body.
Example:
<!DOCTYPE html>

<meta charset="UTF-8" />

3. Set the general settings for all of our notifications (duration in milliseconds)
This is optional as there is a default value and the duration is manageable through the .display(duration) method.
If you set the duration value to less than 1 millisecond, it won't be dismissed automatically.
Example:
document.addEventListener('DOMContentLoaded', function() { // make sure the DOM is fully loaded before starting anything
Notif.setWrapperOptions({ duration: 4000 });
}, false);
4. Define easily your notifications
Examples:
var successNotif = new Notif("Yay, this message notifies you about the success of whatever!", "success");
var errorNotif = new Notif("Oups, this is a notification you usually hope to not display.", "error");
var confirmedNotif = new Notif("Let's just confirm that whatever happened.", "confirmed");
var defaultNotif = new Notif("This message is just meant to say hi; so \"hi!\"", "default");
5. Bind the notifications to something.

<button id="my-button">Gimme my notif</button>
// In your own javascript
var myNotif = new Notif('Hey, what about this very nice notification, with a link and everything?', "default");
document.getElementById('my-button').addEventListener('click', function(e) {
myNotif.display(3500);
/* You could also chain everything if it's a one time notification, such as:
* new Notif('This is a one time notification, so no need to keep it in a JS variable.', "confirmed").display(4000);
*/
});
6. Browser compability
Compatible with all major browsers; details coming soon.
Licence
MIT License, Copyright (c) 2017 Rémi Carles. Read licence details


|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Library
Defines the interface for a library system that keeps track of media in a library. There are three different types of media items: books, audio recordings, and video recordings. Items can be added to or deleted from the library. There can be multiple copies of an item in the library. Items may be checked out, and the borrower id and due date are recorded in the item.
| Method Summary | |
|---|---|
boolean |
addItem(MediaItem item)
Adds an item to the library. |
boolean |
checkIn(java.lang.String callNumber,
int copy)
Checks an item back into the library. |
java.util.GregorianCalendar |
checkOut(java.lang.String callNumber,
int copy,
java.lang.String borrower,
java.util.GregorianCalendar dateCheckedOut)
Checks out an item from the library. |
boolean |
deleteItem(java.lang.String callNumber,
int copy)
Deletes a item from the library. |
MediaItem[] |
findItems(java.lang.String callNumber)
Creates and returns an array of media items that match the call number. |
MediaItem[] |
getItems()
Creates and returns an array containing all items in the library. |
Book[] |
renew(java.lang.String borrower,
java.util.GregorianCalendar currentDate)
Renews all books checked out to the given borrower. |
java.util.GregorianCalendar |
renew(java.lang.String callNumber,
int copy,
java.lang.String borrower,
java.util.GregorianCalendar currentDate)
Adds 14 days to the due date of the given book, and returns the new due date. |
java.util.List<MediaItem> |
searchItems(java.lang.String criterion)
Creates and returns a list of media items that match the criterion. |
void |
setMatchMaker(MatchMaker matchMaker)
Sets the match maker object that encapsulates the search algorithm. |
| Method Detail |
|---|
boolean addItem(MediaItem item)
item
- the item to be added to library.
true
if the item was added successfully,
and false
if the item was not added.boolean checkIn(java.lang.String callNumber, int copy)
null
in the item.
callNumber
- the call number of the item to be checked incopy
- the copy of the item to be checked in
true
if the item was checked in successfully,
and false
if it was not.java.util.GregorianCalendar checkOut(java.lang.String callNumber, int copy, java.lang.String borrower, java.util.GregorianCalendar dateCheckedOut)
callNumber
- the call number of the item to be checked outcopy
- the copy of the item to be checked outborrower
- the id of the person borrowing the itemdateCheckedOut
- the date the item was checked out.
null
if is was not.boolean deleteItem(java.lang.String callNumber, int copy)
callNumber
- the call number of the item to be deleted.copy
- the copy number of the item to be deleted.
true
if the item was deleted successfully,
and false
if the item was not deleted.MediaItem[] findItems(java.lang.String callNumber)
callNumber
- the call number of the media items
MediaItem[] getItems()
Book[] renew(java.lang.String borrower, java.util.GregorianCalendar currentDate)
borrower
- the borrowercurrentDate
- the date the renewal was requested
java.util.GregorianCalendar renew(java.lang.String callNumber, int copy, java.lang.String borrower, java.util.GregorianCalendar currentDate)
callNumber
- the call numbercopy
- the copy numberborrower
- the borrower idcurrentDate
- the date the renewal was requested
java.util.List<MediaItem> searchItems(java.lang.String criterion)
criterion
- the search criterion
void setMatchMaker(MatchMaker matchMaker)
matchMaker
- the object to be used to find items in the library
|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


I graduated from the University of British Columbia with a bachelor's degree in Mathematics and Statistics. In my final year I studied at the National University of Singapore where I took graduate classes in math, statistics, and computer science. Currently, I am working at the investment bank Morgan Stanley as a technology analyst. I am always in need of a challenge and looking to learn more.
Working in enterprise technology & services as a Production Support Analyst. Responsible for ensuring optimal performance and stability of applications across multiple product lines at Morgan Stanley. Technologies and skills utilized: linux, sever systems, database systems, network systems, financial markets, and programming in SQL, Python, Bash, HTML, CSS, Javascript. Built web applications to assist and automate business process in data assurance.
Mthree consultant based at Morgan Stanley. Mthree is a talent partner that trains and hires professionals for enterprises focusing on technology & business operations.
GPA: 3.7 · First-class honours
Experience with scientific software development packages in python including: numpy, scipy, pytorch, tensorflow, pandas, scikit-learn, XGBoost, matplot, ggplot.
Excellent SQL skills and fluency with Sybase, IBM Db2, and PostgreSQL. Excellent understanding of database structures, principles, theories and practices.
Familiarity with JavaScript tools and libraries: jQuery, AJAX
Experience with development frameworks: Flask, SQLAlchemy, SQLite, Jinja.
Proficiency in designing data structures, building algorithms. Experience the with testing framework JUnit.
Familiarity with the front-end web development and Responsive Design.
Extensive experience within Unix/Linux. As well as experience scripting in Bash, Python, SQL, and automation.
Familiarity with development version control platforms and tools.
Data mining is an interdisciplinary science to discover useful structure, to extract information from large data sets, and to make predictions. This module focuses on the most recent but well accepted methods, especially those in investigating big and complicated data, including Lasso regression, nonparametric smoothing, Neural Networks and machine learning.
This module covers Bayesian principles: Bayes' theorem, estimation, hypothesis testing, prior distributions, likelihood, predictive distributions. Bayesian computation: numerical approximation, posterior simulation and integration, Markov chain simulation, models and applications: hierarchical linear models, generalized linear models, multivariate models, mixture models, models for missing data, case studies.
The availability of high-speed computation has led to the development of “modern” statistical methods which are implemented in the form of well-understood computer algorithms. This module introduces students to several computer intensive statistical methods and the topics include: empirical distribution and plug-in principle, general algorithm of bootstrap method, bootstrap estimates of standard deviation and bias, jack-knife method, bootstrap confidence intervals, the empirical likelihood for the mean and parameters defined by simple estimating function, Wilks theorem, and EL confidence intervals, missing data, EM algorithm, Markov Chain Monte Carlo methods.
The course covers a range of key methods in the field of time series. Trend and seasonality, autocorrelation, stationarity, stochastic models, exponential smoothing, Holt-Winters methods, Box-Jenkins approach, frequency domain analysis.
Modelling a response (output) variable as a function of several explanatory (input) variables: multiple regression for a continuous response, logistic regression for a binary response, and log-linear models for count data. Finding low-dimensional structure: principal components analysis. Cluster analysis. This course emphasizes (i) applications of statistical methods such as multiple regression, binary regression, principal component analysis; (ii) the use of statistical software to do the computations; and (iii) interpretation of statistical analysis and output of statistical software.
Probability distributions and moments. Moment generating functions and their properties. Limiting distributions. Parameter estimation, maximum likelihood estimators and their properties. Exact and approximate confidence intervals. Bayes’ rule, prior and posterior distributions. Bayesian (credible) intervals. Hypothesis testing and confidence intervals. Likelihood ratio tests and their properties. Categorical data and multinomial distribution. Goodness of fit tests.
Discrete-time Markov chains, exponential distribution and Poisson process, continuous time Markov chains, renewal theory.
Interpolation, Finite difference approximations, Formula matrix of a chemical system, Graphs and Networks, Least squares, Fourier series, Fast Fourier Transform, JPEC compression, Power method, Recursion relations, The Anderson tight binding model, Markov chains, Google PageRank.
This course covers Linear Optimization, optimizing a linear objective function subject to linear constraints. Linear programming problems, dual problems, the simplex algorithm, solution of primal and dual problems, sensitivity analysis. Additional topics chosen from: Karmarkar's algorithm, non-linear programming, game theory, applications.
The objective of this course is to present these principles and illustrate how algorithms can be designed from the mathematical theories for solving optimization problems. Major topics: Fundamentals, unconstrained optimization: one-dimensional search, Newton-Raphson method, gradient method, constrained optimization: Lagrangian multipliers method, Karush-Kuhn-Tucker optimality conditions, Lagrangian duality and saddle point optimality conditions, convex programming: Frank-Wolfe method.
Formulation of real-world optimization problems using techniques such as linear programming, network flows, integer programming, dynamic programming. Solution by appropriate software.
First-order equations; linear equations; linear systems; Laplace transforms; numerical methods; trajectory analysis of plane nonlinear systems. Applications of these topics will be emphasized.
Power series methods (ordinary and regular singular points, Bessel's equation); boundary value problems and separation of variables (Fourier series and other orthogonal series), applications to the vibrating string, heat flow, potentials.
Sets and functions; induction; cardinality; properties of the real numbers; sequences, series, and limits. Logic, structure, style, and clarity of proofs emphasized throughout.
The real number system; real Euclidean n-space; open, closed, compact, and connected sets; Bolzano-Weierstrass theorem; sequences and series. Continuity and uniform continuity. Differentiability and mean-value theorems.
Notions of probability, random variables, expectation and conditional expectation, limit theorems.
Models of algorithms for dimensionality reduction, nonlinear regression, classification, clustering and unsupervised learning; applications to computer graphics, computer games, bio-informatics, information retrieval, e-commerce, databases, computer vision and artificial intelligence.
Design and implementation of database applications and of the management of data with relational database management systems. The module covers practical and theoretical aspects of design with entity-relationship model, theory of functional dependencies and normalisation by decomposition in second, third and Boyce-Codd normal forms. The module covers practical and theoretical aspects of programming with SQL data definition and manipulation sublanguages, relational tuple calculus, relational domain calculus and relational algebra.
Design and analysis of algorithms and data structures; algorithm analysis methods, searching and sorting algorithms, data structures, graphs and concurrency.
Algorithm analysis, for example, lower bound arguments, average case analysis, and the theory of NP-completeness. In addition, students are exposed to various algorithm design paradigms. The module serves two purposes: to improve the students' ability to design algorithms in different areas, and to prepare students for the study of more advanced algorithms. The module covers lower and upper bounds, recurrences, algorithm paradigms (such as prune-and-search, dynamic programming, branch-and-bound, graph traversal, and randomised approaches), amortized analysis, NP-completeness, and some selected advanced topics.
Design, development, and analysis of robust software components. Topics such as software design, computational models, data structures, debugging, and testing.
Conceptual and analytical tools for systematic and rigorous development of software systems. It covers four main areas of software development, namely object-oriented system analysis, object-oriented system modelling and design, implementation, and testing, with emphasis on system modelling and design and implementation of software modules that work cooperatively to fulfill the requirements of the system. Tools and techniques for software development, such as Unified Modelling Language (UML), program specification, and testing methods, will be taught. Major software engineering issues such as modularisation criteria, program correctness, and software quality will also be covered.
Introduction to managerial finance, including the role and functioning of financial markets, procurement of funds and financing strategies, dividend policy, capital budgeting and financial analysis and planning. Key topics are: time value of money calculations, features of financial markets and securities, evaluate corporate and individual financing and investment decisions, value riskless and risky assets, understand capital allocation decisions, determine the capital structure of a firm and calculate its cost of capital.
Policy and institutions concerning the economics of markets and market behaviour, prices and costs, exchange and trade, competition and monopoly, distribution of income.
Policy and institutions concerning the economics of growth and business cycles, national income accounting, interest and exchange rates, money and banking, the balance of trade.
Any free time I get outside of work and exercise I spend learning new skills, building projects, and working on entrepreneurial ventures. I really enjoy learning through coursera. I also regularly follow financial and business news. In my day to day life, I put a high emphasis on constantly learning and keeping up with the newest technologies.
I love traveling and learning about new cultures. I’ve traveled to 27 countries in my life and counting. In 2019 alone I’ve been to 13 different countries and 32 different cities. I’ve traveled through most of Southeast Asia, Europe, North America, and some of Northern Africa. I've also lived in Vancouver, Singapore, HCMC, and Montreal.


Welcome to the FinPacer app.


|
Ocular Engine
|
Public Member Functions | |
| virtual void | onLoad (BuilderNode const *node) override |
| virtual void | onSave (BuilderNode *node) const override |
| Public Member Functions inherited from Ocular::Core::Exposable | |
| void | getAllExposedNames (std::vector< std::string > &names) const |
| bool | getVariable (std::string const &name, ExposedVariable &var) |
| template<typename T > | |
| bool | getVariableValue (std::string const &name, T &var) |
| template<typename T > | |
| bool | setVariableValue (std::string const &name, T const &value) |
| virtual void | onVariableModified (std::string const &varName) |
Additional Inherited Members | |
| Protected Member Functions inherited from Ocular::Core::Exposable | |
| void | exposeVariable (std::string const &name, std::string const &type, bool isPointer, bool isExposed, void *data) |
| Protected Attributes inherited from Ocular::Core::Exposable | |
| std::unordered_map< std::string, ExposedVariable > | m_ExposedVariables |
|
overridevirtual |
Alternate creation method (opposed to the constructor) in which one is provided with a BuilderNode chain. This chain may be explored to retrieve any relevant variables, and their values, that may have been stored in it.
This method will typically mirror the onSave, in which relevant values are stored within the chain.
| [in] | node | Node to extract variable information from |
Reimplemented from Ocular::Core::Buildable.
Reimplemented in Ocular::Core::SceneObject, Ocular::Math::Transform, Ocular::Core::MeshRenderable, Ocular::Graphics::Material, Ocular::Graphics::MaterialEmpty, Ocular::Graphics::MaterialMissing, and Ocular::Core::LightSource.
|
overridevirtual |
Method used to add an object's data to an existing node chain in preparation for being save to a file.
| [in] | node | Node to place variable information in |
Reimplemented from Ocular::Core::Buildable.
Reimplemented in Ocular::Core::SceneObject, Ocular::Core::MeshRenderable, Ocular::Graphics::Material, Ocular::Graphics::MaterialEmpty, and Ocular::Graphics::MaterialMissing.


Q1. What is the meaning of isola in Italian Language island mountain table building Q2. what is the meaning of palazzo in italian language building hat washing machine bathroom Q3. What is the meaning of bicchiere in Italian Language message brush cup hat Q4. What is the meaning of bianco in Italian Language blue black red white Q5. What is the meaning of libro in Italian Language building dish skirt book Q6. What is the meaning of stazione in Italian Language station school home office Q7. What is the meaning of cappello in Italian Language note book washing machine document hat Q8. What is the meaning of camicia in Italian Language frying pan fork tie shirt Q9. What is the meaning of amica in Italian Language child friend parent teacher Q10. What is the meaning of resto in Italian Language spoon bowl rest wrist Q11. What is the meaning of forchetta in Italian Language force knife fork envelop Q12. What is the meaning of alcuni in Italian Language here some anyone nothing Q13. What is the meaning of bicicletta in Italian Language bicycle biscuit bisect beans Q14. What is the meaning of sporco in Italian Language spoon spouse sports dirty Q15. What is the meaning of giornale in Italian Language green grain letter newspaper Q16. What is the meaning of cane in Italian Language cane dog email book Q17. What is the meaning of qui in Italian Language queue queen there here Q18. What is the meaning of occhiali in Italian Language scooter dust glasses ring Q19. What is the meaning of motorino in Italian Language motor car scooter monster Q20. What is the meaning of poltrona in Italian Language portrait bed armchair porter


Test purpose
- Create a path-based shape entity (an arrow).
- Create a Net entity, setting its 'generate' attribute to 'weak-shape' and its 'shapeTemplate' attribute to the arrow entity. Make the Net entity's first particle static.
- Clone the arrow, and the Net entity; set the cloned Net's 'generate' attribute to 'strong-shape'
- Check that the particles can be dragged, and will - generally - reform their shapes after being dragged (note that the strong arrow is, in particular, unstable in this demo and will collapse if dragged too far).
Touch test: should work as expected. Known issue: moving the pins is inconsistent (because pins are too small on device screens?)
Annotated code


Bootstrap 4, AngularJS, Spring Boot 2, CircleCI. Scaleway. Source
Bootstrap 4, AngularJS, Vert.x (Kotlin), Gradle, Docker, Hyper.sh. Source
Bootstrap 3, AngularJS, Vert.x (Java), Openshift
Bootstrap 3, AngularJS, Wildfly 10, Openshift, H2
Based on JSF, Primefaces, EJB and PostgreSQL.
Based on Nucleus CMS and hosted on a PHP host.


Xin He
Dr. He is currently a Research Fellow working with Prof. Trevor Mudge in University of Michigan, Ann Arbor. He is participating in research to develop next-generation Software Defined computer architecture which has both high computational efficiency and flexibility to adapt to diverse real-world applications including, but is not limited to deep neural networks and graph processing. He is also conducting research on processor-in-memory accelerated sparse linear algebra, near data processing of graph workloads and in-place fast data format conversion. He also supervises several Ph.D. candidates to explore the hardware infrastructure for autonomous driving, efficient virtual memory design for large scale data center workloads.