How to install CloudArray
Overview
CloudArray is a fully integrated appliance which uses object storage (raw unorganised storage on a disk) and exposes it as a network share. It presents itself as file storage to users but uses a mix of object storage and metadata behind the scenes.
How does CloudArray work
As CloudArray is a fully integrated appliance, you don't have to spend money and resources managing operating systems for the solutions. It uses a combination of object storage and a local cache reserve to provide unlimited storage with near local storage performance, using the cache to store frequently used files locally, while asynchronously replicating data to UKCloud's Cloud Storage platform. CloudArray also supports Amazon's REST S3 API to expand on-premises SANs and NAS solutions with on-demand elastic cloud capacity.
Tip
If you do not need the features of CloudArray such as deduplication and location caching, or do not require a fully-integrated cloud gateway appliance, you may want to consider the GeoDrive Client 2.0 as an alternative.
Use cases
Potential use cases for CloudArray include:
Storage on mass using UKCloud Cloud Storage
Move infrequently accessed data to low-cost cloud tiers (typically object storage is much slower compared to block or file storage as it functions on a request basis)
Assurance that data synchronised to the cloud is encrypted both in transit and at rest
System requirements
Supported hypervisors
CloudArray supports the following hypervisors:
VMware vSphere 5.5 (ESXi) or higher
Microsoft Windows Server 2012 R2 with Hyper-V
[!NOTE] The hypervisor must support 64 bit Linux OS guest operating systems.
RAM, CPU and disk requirements
To run CloudArray Virtual Edition you must have the following minimum resources:
60 GB of disk space
1 virtual processor assigned to the CloudArray VE (two virtual processors is recommended)
8 GB of RAM for the 3 TB base model
For specific details about memory requirements, see EMC CloudArray Best Practices.
Supported host operating systems
CloudArray supports the following operating systems:
Mac OS X
OpenSolaris 2009.06
Red Hat Linux: 4.0 and higher
SUSE Linux: 10, 11
VMware ESX or ESXi
Windows: XP, Vista, 7, 8, Server 2003, 2008, 2012
Supported web browsers
CloudArray supports the browsers:
Google Chrome v49 or higher
Microsoft Edge v25 or higher
Internet Explorer v11 or higher
Mozilla Firefox v45 or higher
Safari for Mac v6.1.6 or higher
Network port requirements
CloudArray allows network traffic on the following TCP/IP ports:
80 (HTTP)
111 (NFS Portmapper TCP/UDP)
137, 138, 139 (CIFS)
443 (HTTPS)
445 (CIFS)
System requirements:
662 (NFS Status TCP/UDP)
875 (NFS rquotad TCP/UDP)
892 (NFS mountd TCP/UDP)
2049 (NFS nfsd TCP/UDP)
3260 (iSCSI)
8080 (HTTP)
32803 (NFS nlockmgr TCP)
41022 (EMC Support)
Memory sharing
Memory for a CloudArray virtual machine must be provisioned for its exclusive use.
CloudArray is a memory-intensive application. Substantial performance degradation is likely if other virtual machines share the memory allocated to CloudArray.
Obtaining a CloudArray license
If you require a CloudArray license key, UKCloud will contact Dell EMC on your behalf. Contact your Technical Account Manager (TAM) for further details.
Installing CloudArray Virtual Edition
The steps for installing CloudArray depend on your hypervisor:
Installing CloudArray on VMware vSphere
To install CloudArray on VMware:
Login to the EMC CloudArray portal.
Click Downloads & Documents.
From the list in My Downloads, select download, and extract the CloudArray package.
Import the OVF file into your hypervisor.
[!NOTE] The VM is configured for two networks but only one is required. However, we strongly recommend that you connect two interfaces. Use one interface for cloud traffic and the second for iSCSI/CIFS/NFS and management traffic.
For VMware ESX or ESXi complete the following steps, otherwise proceed to the next numbered step.
a. Open the vSphere Client and log in using your credentials.
b. Once the client opens, select File > Import OVF Template
c. Browse to the folder where you extracted the contents of the downloaded CloudArray zip file and choose the
.ovf
file. Then click Next.d. Enter a name for the virtual machine or leave it unchanged, then click Next.
e. Review the summary screen and click Finish to begin the importing process.
f. A success message displays upon completion.
Power on the CloudArray virtual machine.
Go to Configuring CloudArray.
Installing CloudArray on Microsoft Hyper-V
To install CloudArray on Microsoft Hyper-V:
Log in to the EMC CloudArray portal.
Click Downloads & Documents.
From the list in My Downloads, select download, and extract the CloudArray package.
Download and extract the
CloudArray.zip
file to a location of your choice.[!NOTE] We recommend that you extract the file to the machine running the graphical user interface for the hypervisor on which you'll be installing CloudArray as this will minimize the VM import time.
Import the VM into your hypervisor.
[!NOTE] The VM is configured for two networks but only one is required. However, we strongly recommend that you connect two interfaces. Use one interface for cloud traffic and the second for iSCSI/CIFS/NFS and management traffic.
Open Hyper-V Manager on the windows host where you plan to deploy the CloudArray VM.
Select Action > Import Virtual Machine.
Complete the following fields.
a. Browse to the root folder where you extracted the VM files.
b. Select the "Copy the virtual machine" radio button.
c. Check the "Duplicate all files" check box if you plan to deploy this VM to multiple hypervisors.
Click Import.
The import process begins and might take some time to complete. A status bar indicates the progress.
After the VM is imported, start the virtual machine.
Go to Configuring CloudArray.
Configuring CloudArray
You have two options to configure CloudArray:
Configuring CloudArray using the CloudArray Appliance console
Starting the console
To start the CloudArray Appliance console:
You can use Hypervisor to access the CloudArray Appliance console.
Click Sign in and enter the following credentials:
Username: admin
Password: <admin_password>
Upon first login, you are prompted to change the password.
[!NOTE] CloudArray attempts to find a DHCP server the first time it boots. If not successful, you'll see Getting Started Web Page: http://No IP assigned. In that case, refer to Configuring the network to set an initial IP address. You can then use the Network Tools feature in the CloudArray GUI to finish configuring the adapters.
Choose the desired operation from the CloudArray Appliance console display. The CloudArray Appliance console enables you to set the network configuration, manage CloudArray services, restart the appliance and perform diagnostic tests.
[!NOTE] You only need to configure one Ethernet adapter in this console. Use the more flexible Network Tools feature in the CloudArray web GUI to finish configuring your network adapters, including bonding if desired. See the network tools section in the EMC CloudArray Administrator Guide for more information.
Configuring the network
To set network related information for CloudArray:
From the CloudArray Appliance console main menu, select Network Configuration. The Configure Networking panel displays.
If desired, change the host name.
If you plan to use static IP addresses with CloudArray, provide the IP address and related information for eth0:
a. DNS Servers
b. Default Gateway.
c. Gateway Device: Enter a device name, for example, eth0.
[!NOTE] In Microsoft Hyper-V, the entries in the device names list may appear as
seth0
andseth1
, instead ofeth0
andeth1
. If that is the case, please enter the device name aseth0
.d. To set the IP address and subnet mask of a device, tab to the list of devices, use the arrow keys to highlight the desired device (pink) and press Enter. Choose Save.
From the CloudArray Appliance console main menu, select Diagnostics. The Diagnostics panel displays.
Choose Save again from the main menu.
You will see the Restarting Network pop-up. This operation can take a few minutes to complete.
[!NOTE] If you changed the host name, you'll be prompted to reboot the VM for the change to take effect. You can avoid rebooting the appliance by changing the host name using the Network Tools feature of the Web GUI.
Configuring maintenance operations
To perform maintenance operations:
From the CloudArray Appliance console main menu, select Maintenance. The Maintenance panel displays.
[!NOTE] The Cloudarray Service and Management Service menu items toggle what they display: Stop or Start, depending on whether that service is currently running.
Choose from the following operations:
a. Change Console Password: Enables you to reset your password.
b. Stop CloudArray Service or Start CloudArray Service: Enables you to stop or start the CloudArray service.
c. Stop Management Service or Start Management Service: Enables you to stop or start the management service.
d. Reboot Appliance: Enables you to reboot the CloudArray.
e.
Verifying network connectivity
To verify network connectivity:
From the CloudArray Appliance console main menu, select Diagnostics. The Diagnostics panel displays.
Select Ping Tool to verify network connectivity.
Configuring CloudArray using the web browser interface
Connecting to the web browser interface
CloudArray is configurable using a browser. To access this interface, in your browser, enter the IP address of the console shown on the start page of your management console.
[!NOTE] Newer versions (v7.X.X.X.X) require a secure connection to the CloudArray interface when accessed through a web browser. To do this, connect to the IP address with an HTTPS login.
If your browser shows an error, follow the steps below to connect to the CloudArray web interface:
The following image shows an example of the error message as seen in a Microsoft Edge browser but will be very similar in every browser.
Click Details.
Click Go on to the webpage (Not recommended).
Configuring CloudArray using the web browser
To configure CloudArray:
Once connected to CloudArray using a web browser, you have two options:
Setup - to setup and configure a new installation of CloudArray.
Restore - to restore a backup configuration of a previous CloudArray Installation.
This article shows you how to configure a new installation of CloudArray through a web browser, so click Setup.
You'll be presented with a wizard to set up EMC CloudArray.
Click Next.
Ensure Enable CloudArray Portal is selected and click Next
Enter your login credentials, which will be the same email address and password you used to log in to the CloudArray portal to obtain the
.ova
file for installation.[!TIP] To obtain the CloudArray License Tag, log into the CloudArray portal by going to the link
https://www.cloudarray.com
and entering in your login credentials. The CloudArray license tag will be shown in the Recently added Licenses section.When you've entered your login credentials and CloudArray License Tag, click Next.
Create an administrator account to use for configuring the settings in CloudArray.
Enter in your desired username and password with the password confirmation and then click Next.
Read the End-User License Agreement by scrolling to the bottom of the document (required), tick the box to accept the EULA and click Finish.
When you click Finish, you'll be taken to the login page.
Enter the administrator log in credentials you created earlier in step 6 and click Login.
You'll be presented with the initial dashboard of CloudArray, you have two options:
Configuration Wizard
User Interface
In this article we'll be going through a new configuration using the configuration wizard, so click Configuration Wizard.
Select your cloud provider:
And local storage cache:
On the Configuration page, from the dropdown menu, select ECS.
On the Accept EULA page, select Accept EULA to accept the end-user license agreement, then click Finish.
Click Configuration Wizard to configure your connection to Cloud Storage.
Fill in your Cloud Storage credentials. You can get these from the Storage section of the UKCloud Portal. The Token value is a combination of the subtenant ID (bucket name) and the user ID values from the Portal, joined by a forward slash (
*
/*
):subtenant_id / user_id
.On the Cloud Optimizer page, configure at least one provisioning policy and then click Next.
A provisioning policy connects a cloud provider and a cache.
On the Configure Cache page, configure the cache and connection speed.
Click Create CIFS Share.
On the Final Steps page, click Finish.
About the Dashboard
The CloudArray interface is comprised of the following major elements:
Main menu
The EMC CloudArray main menu is on the left side of the screen. Click menu items to move directly to the corresponding top-level panel and view related sub-menu items.
[!NOTE] If you reduce the window size, the main menu moves to the top of the screen.
Status indicators
The status indicators at the top of the screen report the status of CloudArray components. Hover over the green or red indicator light to see more information about the status. Click the status indicators to move directly to the corresponding top-level panel for each item.
Troubleshooting
Verifying Cloud Storage credentials and connectivity
Complete the following steps to verify your Cloud Storage credentials and connectivity using S3 Browser:
From the Tools > Options > Connection tab:
a. Select the appropriate HTTPS setting.
b. Do not use the proxy settings.
[!NOTE] Refer to How to use file browsers with Cloud Storage for connectivity details.
Add a new account or modify an existing one.
a. Verify the AccessKey and Shared Secret.
b. Set storage type to S3 Compatible Storage.
c. Enter the REST Endpoint IP Address with Port.
If there are no buckets in the bucket list page they may not have been created yet. Create a bucket as follows:
a. Make sure there are no errors in the log details.
b. Create a bucket.
c. Upload a file to the bucket.
d. Delete the file and the bucket.
If you are successful at this point, then CloudArray should be able to connect.
Next steps
This guide has shown you how to install and configure CloudArray for use with Cloud Storage. For more information about how to use the service, see the following articles:
How to create a new Cloud Storage user in the UKCloud Portal
Cloud Storage Gateways
Feedback
If you find an issue with this article, click Improve this Doc to suggest a change. If you have an idea for how we could improve any of our services, visit the Ideas section of the UKCloud Community.


CoRR
Title
Details
First Name
Last Name
Organisation
About
Close
App Name
Activated
Blocked
Deactivated
About
Close
Project Name
Project Tags
Description
Goals
Close
Project
Tags
Rationels
Finished
Crashed
Starting
Started
Paused
Sleeping
Resumed
Running
Close
Exclude Users
Exclude Applications
Exclude Projects
Exclude Records
Exclude Diffs
Exclude Envs


Tribal Welfare, PR depts. told to expedite work
Focus on ‘Giri Vikasam’
by Special CorrespondentThe State government has directed the Tribal Welfare and Panchayat Raj departments to expedite works under the Giri Vikasam, land development for Scheduled Tribes, envisaging conversion of uncultivable lands owned by small and marginal ST farmers into cultivable lands.
Ministers E. Dayakar Rao and Satyavati Rathod reviewed the progress of the scheme with senior officials of the two departments on Monday. They directed the officials to complete identification of beneficiaries under the programme so that the developed land could be handed over to them at the earliest.
They said the Tribal Welfare Department had forwarded works estimated to cost ₹ 46 crore to the Rural Development Department. The government had sanctioned ₹ 61 crore in the current year’s budget for taking up Giri Vikasam scheme. They wanted the officials concerned to hold meeting with the district Collectors and other officials concerned for chalking out an action plan to expeditiously complete the work.
Mr. Dayakar Rao wanted the officials of Rural Development Department to work out modalities for ensuring that the department provides matching grant for the construction of Anganwadi buildings. Officials were asked to speedily complete the process as the Central government is also providing funds under the scheme.


The Shipping Forecast
Map
of the shipping forecast areas
055
FPUK71 EGRR 090900
AND NOW THE SHIPPING FORECAST ISSUED BY THE MET. OFFICE
AT 1305 ON THURSDAY 09 NOVEMBER 1995
THERE ARE WARNINGS OF GALES IN SOUTHEAST ICELAND
THE GENERAL SYNOPSIS AT 0600
LOW 300 MILES WEST OF ICELAND 986 SLOW-MOVING SOUTH, FILLING 1006
BY 0600 TOMORROW. SMALL LOW JUST OFF CAPE FINISTERRE 1011 EXPECTED
USHANT 1002 BY SAME TIME. LOW BAILEY 1006 EXPECTED NORTHWEST
IRELAND 1005 BY 0600 TOMORROW. NEW FRONTAL LOW EXPECTED FISHER
1008 BY SAME TIME, MOVING NORTHEAST
THE AREA FORECASTS FOR THE NEXT 24 HOURS
VIKING NORTH UTSIRE
SOUTHWESTERLY BACKING EASTERLY 4, INCREASING 6 LATER IN
SOUTH. SHOWERS. GOOD
SOUTH UTSIRE
SOUTHWESTERLY 3 BACKING EASTERLY 6 OR 7, PERHAPS GALE 8 LATER.
SHOWERS THEN RAIN. GOOD
FORTIES CROMARTY FORTH
SOUTHERLY BACKING NORTHEASTERLY, 4. SHOWERS, RAIN LATER IN
SOUTH FORTIES. GOOD
TYNE DOGGER
VARIABLE 3. OCCASIONAL RAIN. MODERATE OR GOOD
FISHER
VARIABLE BECOMING SOUTHEASTERLY 3, INCREASING 6 AND BECOMING
CYCLONIC. SHOWERS THEN RAIN. GOOD BECOMING MODERATE
GERMAN BIGHT
SOUTHEASTERLY 3 INCREASING 5 OR 6. OCCASIONAL RAIN. MODERATE OR
POOR
HUMBER THAMES DOVER
SOUTHERLY 4, INCREASING 6 FOR A TIME. OCCASIONAL DRIZZLE.
MODERATE
WIGHT PORTLAND
SOUTHERLY 3 OR 4. OCCASIONAL DRIZZLE. MODERATE
PLYMOUTH
SOUTHERLY 3 BECOMING CYCLONIC 4. OCCASIONAL RAIN. MODERATE
BISCAY
EASTERLY BECOMING CYCLONIC, 4, BECOMING SOUTHERLY 4 OR 5 LATER.
RAIN LATER IN WEST. MODERATE
EAST FINISTERRE
CYCLONIC BECOMING NORTHWESTERLY, 4. OCCASIONAL RAIN. MODERATE
WEST FINISTERRE WEST SOLE
NORTHERLY 5 OR 6, OCCASIONALLY 7 IN EXTREME WEST. RAIN THEN
SHOWERS. MODERATE BECOMING GOOD
EAST SOLE LUNDY FASTNET
VARIABLE BECOMING NORTHERLY, 4. RAIN THEN SHOWERS. MODERATE
BECOMING GOOD
IRISH SEA
NORTHERLY 3 OR 4. SHOWERS. GOOD
SHANNON ROCKALL
NORTHWEST VEERING NORTH, 5 OR 6, OCCASIONALLY 7 IN FAR WEST.
SQUALLY SHOWERS. GOOD
MALIN HEBRIDES
SOUTHWESTERLY VEERING NORTHEASTERLY 4 OR 5, BECOMING CYCLONIC
FOR A TIME IN WEST. SQUALLY SHOWERS. GOOD
BAILEY
CYCLONIC 4 BECOMING NORTHERLY, 5 TO 7. SHOWERS. GOOD
FAIR ISLE
SOUTHWESTERLY 4 BECOMING VARIABLE 3 THEN NORTHEASTERLY 4. SHOWERS.
GOOD
FAEROES
SOUTHWESTERLY 4 OR 5 VEERING NORTHERLY 3, INCREASING 6 LATER IN
WEST. WINTRY SHOWERS. GOOD
SOUTHEAST ICELAND
WESTERLY 5 TO 7 VEERING NORTHERLY 6 TO GALE 8. WINTRY SHOWERS.
MODERATE OR GOOD
Ian Watkins |<EMAIL_ADDRESS>| Last updated: 04 October 1995 | © Crown Copyright 1995


Hey it's Matt from Kollood
You're receiving this e-mail because user {{ user }} has given yours as
an e-mail address to
connect their account. If this is correct, confirm your email by
clicking the button below
|
If you're having trouble with the button above, copy and
paste the URL below into your web
browser.
{{ activate_url }}
|
|


Barneys Liquidation Sale: Everything We Know So Far
The question on everyone’s minds.
by Layla IlchiNow that the Barneys New York bankruptcy battle is finally resolved, the question on every fashion-oriented person’s mind is, when is the liquidation sale?
Per the windows at Barneys New York’s Madison Avenue flagship, the liquidation sale has already begun. The windows display two signs reading, “Store Closing Sale” and “Everything Must Be Sold!” both with smaller text underneath reading “Goodbuys, Then Goodbye!”
The retailer, which filed for Chapter 11 bankruptcy protection in August, finally found a new owner on Friday in the Authentic Brands Group, buying the historic New York retailer for $271 million. ABG has plans to keep Barneys’ Madison Avenue flagship open for the next year as an experiential pop-up store format, but bring the Barneys name over exclusively to Saks Fifth Avenue as its retail partner.
Read More: The Fashion Community Weighs in on Barneys’ Sale
With Friday’s bankruptcy deal, Barneys began its sale, which ABG chairman and chief executive officer Jamie Salter called “transition sales” or “non-store-closing sales” instead of liquidation sales. However, these sales are currently a meager 5 or 10 percent off merchandise across categories — according to the Barneys web site — which, considering the steep prices of its designer offerings, doesn’t account for much savings. Social media has already shown its disappointment.
Barneys’ most loyal customers will have first access to another sale — presumably more than 5 to 10 percent off merchandise — with Scott Carpenter, president of Great American, which is handling Barneys’ liquidation, stating: “This is a once-in-a-lifetime opportunity for its most loyal customers to buy items that rarely go on sale at markdown prices. We encourage shoppers to visit their nearest Barneys location to take advantage of this sale before this highly exclusive merchandise sells out.”
It’s unclear when the sale will be available to the greater public.
When visiting Barneys’ e-commerce site, customers are greeted with the header, “All Sales Final.” The page explains that items purchased prior to Nov. 1 can be returned no later than Nov. 7, that any purchase made after Oct. 31 can be returned no later than Nov. 15 and that purchases made after Nov. 15 will be final sale.
Customers with Barneys gift cards have until Nov. 7 to use the credit.
While the Barneys liquidation sale will run through February, the retailer expects to sell through much of its inventory through the holiday shopping season.
This post will be updated as more information is revealed on the Barneys liquidation sale.
Read more on Barneys here:
Barneys’ Bankruptcy Has Social Media Buzzing
WATCH: Inside Nordstrom’s NYC Flagship


%inherit file="layout.html" /> <%def name="style()"> ${h.css('/css/thin.css')} ${h.css('/css/home.css')} %def>
Build, store and share your recipes in an online, managed platform made especially for homebrew enthusiasts.
Join a growing community of hobbyists across the world and gain access to their library of curated homebrew recipes.
Brewing is easy, and your tools should be, too. DraughtCraft is hassle-free software targeted expressly towards homebrewers.


A selection of stock UIKit views:
UITextView
UIImageView
MPVolumeView
(not available in the simulator)UIProgressView
UILabel
This screen helps us verify that Reveal correctly supports a comprehensive set of UIView
subclasses from UIKit and other iOS frameworks.


FOTM Outreach survey
Add a response
View responses
Outreach Survey
Add a response
View responses
A quick survey to find out what people's topmost priority is!
Please fill in appropriate boxes below:
Survey Questions
Q1. What are your current business data needs?
Q2. What data governance strategy do you currently employ?
Q3. What role can Big Data play in your business?
Q4. How effective is your current data management strategy?
Respondent's Name
Interviewer's Name
Save responses


Below you will find different portfolio pieces that I created during my time at General Assembly. From modeling to webscraping, each piece is unique and encapsulates different skills I learned.
Please scroll down and take a look at my portfolio.
Pokemon Go was a phenomonon that took the world by suprise. Over 28 million users downloaded the app in the first week of its release and as of January 2017 it the franchise sold over 1 billion in merchandise!
I'm an avid Pokemon GO player and I wanted to use my data science skills to aid me in my pokemon mission: "Gotta catch'em all".
I obtained stats of each pokemon based on the video game and stats of each pokemon currently released in Pokemon GO and built a model using linear regression that predicted the combat power (CP) for the unreleased pokemon in Pokemon GO.
To learn more about the project please visit my github and check out my presentation!
Global terrorism is a topic that resonates with people and typically has one story. I decided to look into a topic that is typically not associated with terrorism: Hostage takings!
I used the Global Terrorism Database (GTD), an open-source database including information on terrorist attacks around the world from 1970 through 2015. The database is maintained by researchers at the National Consortium for the Study of Terrorism and Responses to Terrorism (START)
I was able to use Bayesian inference to compare two populations European hostage takings from 1990 - 1999 and European hostage takings from 2000 - 2009.
Salaries are an important componet for many companies when posting a job. Most companies want to be competitive when recruiting potential employees, but also need to be aware of the company's budget.
By utilizing websites like indeed.com I was able to build a webscraper that extracted pertinent information (job title, salary, location and company), classify jobs based on the salary and build a logistic regression model showing the odds that someone would make above or below the median salary based on location.
Feel free to visit my github and check out my presentation!


Newly remodeled home on a large lot. Come take a look at this great looking three bedroom, one bath home. Upgrades include new wood laminate floors throughout shared areas, new kitchen cabinets with quartz counter-tops, under-mount sink, and stainless steel look stove & microwave. Central heating & Air! Allbedrooms have new flooring and ceiling fans, tile surroundstub/shower in bathroom. Large front and backyard. Great tree lined street neighboorhood.
Newly remodeled home on a large lot. Come take a look at this great looking three bedroom, one bath home. Upgrades include new wood laminate floors throughout shared areas, new kitchen cabinets with quartz counter-tops, under-mount sink, and stainless steel look stove & microwave. Central heating & Air! Allbedrooms have new flooring and ceiling fans, tile surroundstub/shower in bathroom. Large front and backyard. Great tree lined street neighboorhood.
Newly remodeled home on a large lot. Come take a look at this great looking three bedroom, one bath home. Upgrades include new wood laminate floors throughout shared areas, new kitchen cabinets with quartz counter-tops, under-mount sink, and stainless steel look stove & microwave. Central heating & Air! Allbedrooms have new flooring and ceiling fans, tile surroundstub/shower in bathroom. Large front and backyard. Great tree lined street neighboorhood.
Newly remodeled home on a large lot. Come take a look at this great looking three bedroom, one bath home. Upgrades include new wood laminate floors throughout shared areas, new kitchen cabinets with quartz counter-tops, under-mount sink, and stainless steel look stove & microwave. Central heating & Air! Allbedrooms have new flooring and ceiling fans, tile surroundstub/shower in bathroom. Large front and backyard. Great tree lined street neighboorhood.


Rachel
Hello
Hello, How are you today? Weather is so nice today. @joey
Hello, How are you today? Weather is so nice today.


MISSION TO MARS A film review by Christopher Null Copyright 2000 filmcritic.com filmcritic.com
MISSION TO MARS starts out with so much promise, it's hard to believe it could be anything but successful. The film has already taken a lot of flack for appearing to be a ripoff of 2001: A SPACE ODYSSEY, but maybe, I thought, it would transcend Kubrick's early sci-fi drama and put a new spin on things. Maybe blend it with a little ARMAGEDDON - you know, do the space movie right for once.
In 2020, the first manned mission to Mars is about to launch. Under the command of Luke Graham (Don Cheadle), the craft lands without a hitch, and within days they've made a startling discovery. A little radar probing turns up a strange metal just under the surface of Mars, and a mysterious disaster quickly wipes out the crew.
Enter Commander Woody Blake (Tim Robbins), his wife Terri (Connie Nielsen), co-pilot Jim McConnell (Gary Sinise), and goofy scientist Phil Ohlmyer (Jerry O'Connell), and it's rescue time: ARMAGEDDON, full throttle.
Uh-oh, problems on the rescue ship. Now it's time for some APOLLO 13 action. Tense drama ensues, which isn't half bad. But things don't turn out so hot, and just as quickly we're thrown into a space ROBINSON CRUSOE.
With a handful of survivors on the red planet, they figure they'll do a bit of investigating since, you know, they're *there* and all. In a matter of hours, McConnell's got the secrets figured out and *wham!* we're into CLOSE ENCOUNTERS OF THE THIRD KIND. (Here's a hint straight from the movie's dialogue: "They are us. We are them." Yes, I'm serious.)
Which takes us straight into CONTACT, and from there we degenerate into every bad Disney movie ever made. From the god-awful organ soundtrack alone, you'll think you've landed dead smack in the middle of THE LITTLE MERMAID. But in space.
If my rampant sarcasm hasn't clued you in yet, MISSION TO MARS is so unredeemably bad it drew ribald laughter during its Seriously Dramatic Moments and horrendous booing over the closing credits. The acting is so wooden it might as well have been performed by marionettes. The script is so awful I have trouble believing it was not written by primates.
The unintentional humor in MISSION TO MARS can certainly make for a lively time at the movie theater, but it's hardly a reason to pay money to watch this disaster on celluloid. If Disney wanted to make this a comedy, they should have taken this advice: Try casting Mike Myers, Eddie Murphy, Janeane Garofalo, and Jason Alexander as our space heroes. Now *that* would be a mission to Mars.
RATING: * [LOWEST RATING]
|------------------------------| \ ***** Perfection \ \ **** Good, memorable film \ \ *** Average, hits and misses \ \ ** Sub-par on many levels \ \ * Unquestionably awful \ |------------------------------|
MPAA Rating: PG
Director: Brian De Palma Producer: Tom Jacobson Writer: Jim Thomas, John Thomas, Graham Yost Starring: Gary Sinise, Don Cheadle, Connie Nielsen, Jerry O'Connell, Kim Delaney, Tim Robbins
http://www.missiontomars.com/
--- Christopher Null -<EMAIL_ADDRESS>- http://www.filmcritic.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


You always wanted to cheat a bit, when developing your website? "Style-Cheat CSS" provides the code you need. The framework is very minimal per design to reduce loading times (only 6kb, <2kb compressed). Modularity will allow you, to bring only the tools, you really need. Disable everything else! Mobile First and Responsive Elements will ensure that your website fits for all modern devices. The code is also easy to learn, so you can focus on your website and not on the framework.
Getting started
There are some ways to get started. See all possible options below and decide, which one fits your use case.
Use a CDN
"Style-Cheat CSS" is available at jsdelivr CDN.

<link rel="stylesheet"<EMAIL_ADDRESS>/>

Page Heading

Section Heading

Sub Heading

Text Format
You can also easily align content with "Style-Cheat CSS".

Left

Center

Right

Example:
Left
Center
Right
Text Box
Sometimes, you want to "box" your content. The
class="text-box"
can be used for this purpose and can
be combinded with the decoration module.

Standard

This is a standard text box.

Primary

This is a primary colored text box.

Example:
This is a standard text box.
This is a primary colored text box.
Container
Containers are the most basic design element in "Style-Cheat CSS". The container module is used for the grid or to align your content properly.
Container (72rem)
You can define a container, that grows to a maximum of 72rem (1200px).

...

Container Fluid (100%)
You can define a container, that grows to the size of the viewport.

...

Grid
The grid allows to define areas. "Style-Cheat CSS" uses CSS Flexbox for the definition of the grid layout. The grid is defined in the grid module.
Simple Grid
The simplest example of a grid will arrange your content dynamically and adjust the size based on the viewport.

Content One

Content Two

Example:
Button
Buttons are essential for most websites and "Style-Cheat CSS" is giving you some choice with the button module.
Lists
The list module defines all lists
ul,ol,dl
with margin-top: 0
and
margin-bottom: 1rem
. Nested lists have no
margin-bottom
.

- Bob
- Read it backwards...
List Stylings
Sometimes, styling a list is nescessary. Currently 2 styling classes are supported.
You can use class="list-unstyled"
to get a list
without any styling.

Item 1

Item 2

Item 3

Item 4

Example:
- Item 1
- Item 2
- Item 3
- Item 4
With class="list-inline"
, you can also have an
inline list. It will have no styling, too.

Item 1

Item 2

Item 3

Item 4

Example:
- Item 1
- Item 2
- Item 3
- Item 4
Quotes & Cites
In the quote module only the
blockquote
element was touched. You will also get the
option for a footer
.

When something is important enough, you do it even if the odds
are not in your favor.

Elon Musk

Example:
When something is important enough, you do it even if the odds are not in your favor.
Code
"Style-Cheat CSS" includes some Code Styling in the code module.
Inline Code
For inline code, Style-Cheat sets background: @gray
and padding-left/padding-right: .3rem
.

My cool Inline Code goes here.

Example:
My cool Inline Code
goes here.
Keyboard / User Input
Use the <kdb>
to indicate input that is typically
entered via keyboard.

You have to press Alt + F4 to close the application.

Example:
You have to press Alt + F4 to close the application.
Code Blocks
Code Blocks can be used to present huge chunks of source code, terminal commands, etc.

#!/bin/bash
function hello {
echo Hello!
}

Example:
#!/bin/bash
function hello {
echo Hello!
}
Sample Output
If you want to present some output of a command, you can do this
with the <samp>
tag. It is slightly adjusted,
to differentiate better from the normal text.
<samp>Output of some command</samp>
Example:
Output of some commandVariables
The <var>
tag can be used to present variables.
Example:
<var>Name=Alice</var>, <var>x=3.141...</var>, <var>int myCoolInteger</var>
Example:
Name=Alice, x=3.141..., int myCoolIntegerTables
The table module provides some opt-in classes
for tables. Since tables are used for many purposes like calendars,
widgets or even simple design elements, we've decided to not touch the

tag itself.
Simple Tables
You can add class="table"
to your table
definitions and you will see an immediate effect.

...

Example:
| # | Name | Hobby | Handle |
|---|---|---|---|
| 1 | Alice | Climbing | @wonderland |
| 2 | Bob | Walking | @bobby |
| 3 | Eve | Cooking | @eve |
| 4 | Trudy | Running | @trudy |
| 5 | Max | Cycling | Mustermann |
Striped Table
You can also use class="table-striped"
to have
a better distinction of the rows.

...

Example:
| # | Name | Hobby | Handle |
|---|---|---|---|
| 1 | Alice | Climbing | @wonderland |
| 2 | Bob | Walking | @bobby |
| 3 | Eve | Cooking | @eve |
| 4 | Trudy | Running | @trudy |
| 5 | Max | Cycling | Mustermann |
Form
The form module is adding some styling to forms to make them easier to setup and more usable on mobile devices.
<form>
First Name
<input type="text" id="fname" name="firstname" placeholder="Your name..">
Last Name
<input type="text" id="lname" name="lastname" placeholder="Your last name..">
Country
<select id="country" name="country">
<option value="australia">Australia</option>
<option value="canada">Canada</option>
<option value="usa">USA</option>
</select>
Comment
<textarea id="comment" name="comment"></textarea>
<input class="button bg-success" type="submit" value="Submit">
<input class="button bg-alert" type="reset" value="Reset">
</form>
Example:
Link
The link module provides some link decoration.
Link to duckduckgo
Example:
Decoration
The decoration module provides some handy classes to decorate your page.
Decoration Colors
You can colorize your text and elements with some prepared classes.

Some alert text!

Critical button
Success button

Warning

This is a warning information.

Example:
Some alert text!
Critical button Success buttonThis is a warning information.
Decoration Elements
The following elemements are handled as decoration.

Example:
There is an

below.
There is an

above
Utility
The utility module provides some little helpers.
Float and Clearfix
Floating content left or right is a very common scenario.

Not floating

Left floating

Right floating

Not floating

Example:
Not floating
Left floating
Right floating
Not floating
Customization
Customizing "Style-Cheat CSS" is easy. You can enable or disable modules or integrate your own modules. Editing a module is easy, too.
Enable / Disable Modules
If you don't want some modules, because you are having your own styles or they conflict with other elements, you can easily disable modules in the style-cheat.sass file.
// main
@import 'main/base'
// modules
@import 'modules/button'
@import 'modules/code'
@import 'modules/container'
@import 'modules/decoration'
// @import 'modules/figure'
@import 'modules/link'
@import 'modules/form'
@import 'modules/grid'
@import 'modules/list'
@import 'modules/quote'
@import 'modules/table'
@import 'modules/text'
@import 'modules/typography'
@import 'modules/utility'
After editing the file, you need to use a sass compiler to generate your new style-cheat.css.
<-- Generate CSS -->
sass src/style-cheat.sass dist/style-cheat.css
<-- Generate minified CSS -->
sass src/style-cheat.sass dist/style-cheat.min.css --style=compressed
Customize a Module
Customizing a module to your needs is easy, too. Just open the module file and tune it to your needs. Afterwards, you need to re-compile the code with the sass compiler.
<-- Generate CSS -->
sass src/style-cheat.sass dist/style-cheat.css
<-- Generate minified CSS -->
sass src/style-cheat.sass dist/style-cheat.min.css --style=compressed
Contribution
Thank you so much for considering to contribute. We are very happy, when somebody is joining the hard work. Please fell free to open Bugs, Features Requests or Pull Requests after reading the Contribution Guideline
See who has contributed already in the kudos.txt.


Finished
Finished isn't really the best word to describe my battleships program but all the features are there. All the mechanics to play the game are there and they are all wrapped up in a nice automated method so you don't have to type player_1.fire(player_2, [0,0])
every time its your turn to fire. What's left to do is a hell of a lot of refactoring. People talk about code smells and although I know I'm quite strict about these things, I'm sure my code still stinks. although other than a few alterations to make the code more readable I'de say it is a success.
I would have done some more refactoring today but I only actually finished of my game over an hour during lunch. For the majority of the day I was actually working on my partner, Lucy's code. Last week I would've been really frustrated at not being able to work on my own code but now, I think in terms of learning, there is nothing better than reading through someone else's work and figuring out how its components work and it all fits together.
Duck Typing
Today's research task was to investigate the concept of Duck Typing. A programming language can be classified as 'strongly typed' or 'weakly typed'. These are a kind of wishy washy terms but a strongly typed language is more likely to give you an error message if an argument given to a function does not match the expected type (integer, boolean...). The idea is that in Ruby which we're using, a 'weakly typed' language you don't need a type in order to invoke an existing method on an object - if a method is defined on it, you can invoke it. eg:
class Duck
def walk
'waddle'
end
def quack
'quack'
end
end
class Person
def walk
'I'm waddling'
end
def quack
'I'm quacking'
end
end
def outdoors(thing)
thing.walk
thing.quack
end
duck = Duck.new
person = Person.new
outdoors(duck)
outdoors(person)
In duck typing, an object's suitability to be passed as an argument is determined by the presence of certain methods (quack, walk) and properties (with appropriate meaning), rather than the actual type of the object. The name comes from the phrase "When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck".
Chris


Patching
Common injected values
Each prefix and postfix can get all the arguments of the original method as well as the instance (if original method is not static) and the return value. Patches can define only those parameters they want to access.
Instance
Patches can use an argument named __instance
to access the instance value if original method is not static. This is similar to the C# keyword this
where used in the original method.
Result
Patches can use an argument named __result
to access the returned value. The type T
of argument must match the return type of the original or be assignable from it. For prefixes, as the original method hasn't run yet, the value of __result
is default(T). For most reference types, that would be null
. If you wish to alter the __result
, you need to pass it by ref
.
State
Patches can use an argument named __state
to store information in the prefix method that can be accessed again in the postfix method. Think of it as a local variable. It can be any type and you are responsible to initialize its value in the prefix.
(Private) Fields
Argument names starting with three underscores, for example ___someField
, can be used to read and (with ref
) write private fields on the instance that has the corresponding name (minus the underscores).
Argument types
Arguments from the original must use the exact same name and type as the original method but using object
is ok too.
The original
To allow patch reusing, one can inject the original method by using an argument named __originalMethod
.
Special arguments
In transpilers, arguments are only matched by their type so you can choose any argument name you like.
An argument of type IEnumerable<CodeInstruction>
is required and will be used to pass the IL codes to the transpiler
An argument of type ILGenerator
will be set to the current IL code generator
An argument of type MethodBase
will be set to the current original method being patched


Node
Messages
send joke
send hello world
Services
P=Product, S=Support, A=Alarm Services and price
P-25
P-99
P-34
S-9
S-10
S-45
A-53
A-87


{{vendor.name}}
{{vendor.businessAddress.address1}}
{{vendor.businessAddress.address2}}
{{vendor.businessAddress.city}}, {{vendor.businessAddress.state}} {{vendor.businessAddress.zip}}
{{quote.company.contactPerson.name}}
{{quote.company.businessAddress.address1}}
{{quote.company.businessAddress.address1}}
{{quote.company.businessAddress.city}}, {{quote.company.businessAddress.state}} {{quote.company.businessAddress.zip}}
Dear {{quote.company.contactPerson.name}},
Thank you for allowing {{vendor.name}} to arrange financing for your business equipment needs. Below are options you may choose from in making your equipment financing decisions. If you have any questions, please contact {{vendor.name}} by e-mail at {{vendor.contactPerson.email}} or call by calling {{vendor.contactPerson.phone}}.
Total Cost: {{quoteCost | cheddar}}
Description of Equipment: {{quote.description}}
| {{name}} | {{item.term}} |
|---|---|
| {{quote.totalCostDisplay}} |
{{item.paymentDisplay}} |
Quotes expire after 30 (Thirty) days from today, which is {{quote.created | date:longDate }}
Link to quote: {{permalink}}


I've had an on again off again habit for a few years. I started at 17 and Iím now 24. Although I have experience with cocaine, I was confused on what to do now that I take so many prescription medications. I tried researching the specific combination of cocaine with the medications listed, however, I did not find much information. I usually don't do more than 3 bags in one day, so if you use more, I can't say for certain the results will be similar, or safe.
Cocaine/Paxil 20 mg: Alone, this combination I find to be safe. Neither seem to effect each other.
Cocaine/Ambien 12.5 mg: Alone, I didn't find the ambien to help much with the crash, or help me sleep. Neither had an effect on each other.
Cocaine/Paxil/Ambien: Together, the sedative effect in the paxil and ambien combined seemed to help calm me a little, but not much.
Cocaine/Klonopin .5 mg: Alone, Klonopin really helped if I took 2 pills equaling 1mg. Klonopin works within 30-45 minutes. Therefore, I found If I took them right after my last lines, they kicked in quick enough to drastically reduce my crash time, and allow me to get to sleep a lot faster. I recommend them. Xanax can be used as a substitute. They have similar effects.
Cocaine/Klonopin/Paxil/Ambien: I tried this even though I was scared it would be too much. I'm still here to tell you about it, and I weigh very little. If I can take it, I'm pretty sure its ok. I was very wired after a long night, and the coke had lost it's effect, meaning I felt like I was crashing for a while. I did my last lines, popped the klonopin, and waited 30 minutes. I still felt jittery and anxious, so I took the paxil and ambien at that time, hoping it would help. I crashed for about an hour all together before I could even sit down. An hour after my last lines, I felt relieved to finally feel calm. However, I still couldn't fall asleep right away. In my opinion, I'm pretty sure the Klonopin alone would not have been enough to calm that night. I feel the extra help from the paxil and ambien to be beneficial.
I now cure my crash with the whole mixture since it never hurt. Keep in mind that I never do more than three $20 dollar bags in a day, and I never pop more than a recommended dose of the prescription medications. I can say from experience with friends who overdosed, taking too much coke, with too many downers of any kind at once is deadly. I don't care how desperate you are to avoid your crash, DO NOT do either in large amounts! Be patient, and you'll feel better soon.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


This inspections checks for various problems in declarations of XSLT variables, parameters and named templates:
Powered by XPathView + XSLT-Support


INSTRUCTIONS Please type in the private security key to be used in the file encryption. This key will not be saved in Cloud Stag server. This key should be provided to the application everytime so that the encryption process can be done.
WARNING! Please store this private password securely. Loss of it will result in all the files being corrupted!


Delete layer {{ layer.name }}?
This layer and its style will be permanently deleted.
This layer will also be removed from any maps containing it.
The data store containing the layer data will be preserved.


Admin Dashboard
Faculty id:
Name:
Department:
(Please select a option)
CSE
ECE
MEE
BIO
Email:
section:
(Please select a option)
A
B
C
D
assign:
(Please select a option)
Permanent
Temporary


This portfolio contains a lot of different projects some which are usable and some that aren't
Feel free to click this button to open the sidebar navigation for accessing other sites Click Here if you can't use the button


Pres the button below to execute the following Post request
https://bank.cloudcoin.global/service/checks.aspx
Cashes a check and sends you the cloud coins as a download
Sample requesthttps://bank.CloudCoin.Global/checks?id=a4b5e66f4b51418e81e8dc93e9db6503


2 Chronicles 23:2
And they went about in Judah, and gathered the Levites out of all the cities of Judah, and the chief of the fathers of Israel, and they came to Jerusalem.


Upload one or more PDF or image files. We will mail you a link to download a searchable version of your files.
Type in one or more languages:
Inform your email:
*
Upload files
( or drag and drop them into this box )
Submit


| Name | Total Lines | Lines of Code | Total Coverage | Code Coverage |
|---|---|---|---|---|
| TOTAL | 534 | 180 | 91.95%
|
80.56%
|
| lib/pomegranate.rb | 29 | 12 | 100.00%
|
100.00%
|
| lib/pomegranate/rdfs_rulebook.rb | 175 | 63 | 96.00%
|
88.89%
|
| lib/pomegranate/rdfs_plus_rulebook.rb | 330 | 105 | 89.09%
|
73.33%
|
Generated on Mon Apr 19 20:00:22 -0400 2010 with rcov <IP_ADDRESS>


The UCSF Library and Institute for Computational Health Sciences provide access to data science information and training in support of research, education, and patient care at the University of California, San Francisco.


nips nips2000 nips2000-22 nips2000-22-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Daniel D. Lee, H. Sebastian Seung
Abstract: Non-negative matrix factorization (NMF) has previously been shown to be a useful decomposition for multivariate data. Two different multiplicative algorithms for NMF are analyzed. They differ only slightly in the multiplicative factor used in the update rules. One algorithm can be shown to minimize the conventional least squares error while the other minimizes the generalized Kullback-Leibler divergence. The monotonic convergence of both algorithms can be proven using an auxiliary function analogous to that used for proving convergence of the ExpectationMaximization algorithm. The algorithms can also be interpreted as diagonally rescaled gradient descent, where the rescaling factor is optimally chosen to ensure convergence.
[1] Jolliffe, IT (1986). Principal Component Analysis. New York: Springer-Verlag.
[2] Turk, M & Pentland, A (1991). Eigenfaces for recognition. J. Cogn. Neurosci. 3, 71- 86.
[3] Gersho, A & Gray, RM (1992). Vector Quantization and Signal Compression. Kluwer Acad. Press.
[4] Lee, DD & Seung, HS . Unsupervised learning by convex and conic coding (1997). Proceedings of the Conference on Neural Information Processing Systems 9, 515- 521.
[5] Lee, DD & Seung, HS (1999). Learning the parts of objects by non-negative matrix factorization. Nature 401, 788- 791.
[6] Field, DJ (1994). What is the goal of sensory coding? Neural Comput. 6, 559-601.
[7] Foldiak, P & Young, M (1995). Sparse coding in the primate cortex. The Handbook of Brain Theory and Neural Networks, 895- 898. (MIT Press, Cambridge, MA).
[8] Press, WH, Teukolsky, SA, Vetterling, WT & Flannery, BP (1993). Numerical recipes: the art of scientific computing. (Cambridge University Press, Cambridge, England).
[9] Shepp, LA & Vardi, Y (1982) . Maximum likelihood reconstruction for emission tomography. IEEE Trans . MI-2, 113- 122.
[10] Richardson, WH (1972) . Bayesian-based iterative method of image restoration. 1. Opt. Soc. Am. 62, 55- 59.
[11] Lucy, LB (1974). An iterative technique for the rectification of observed distributions. Astron. J. 74, 745- 754.
[12] Bouman, CA & Sauer, K (1996). A unified approach to statistical tomography using coordinate descent optimization. IEEE Trans. Image Proc. 5, 480--492.
[13] Paatero, P & Tapper, U (1997). Least squares formulation of robust non-negative factor analysis. Chemometr. Intell. Lab. 37, 23- 35.
[14] Kivinen, J & Warmuth, M (1997). Additive versus exponentiated gradient updates for linear prediction. Journal of Tnformation and Computation 132, 1-64.
[15] Dempster, AP, Laird, NM & Rubin, DB (1977). Maximum likelihood from incomplete data via the EM algorithm. J. Royal Stat. Soc. 39, 1-38.
[16] Saul, L & Pereira, F (1997). Aggregate and mixed-order Markov models for statistical language processing. In C. Cardie and R. Weischedel (eds). Proceedings of the Second Conference on Empirical Methods in Natural Language Processing, 81- 89. ACL Press.


HIV- cluster resistance viral large drug dolutegravir integrase mutations HIV viruses (n = ) :–. clusters antiretroviral strains singleton/small variants concentrations {border-style week (cluster elvitegravir px;} #ffffff;} MSM acquisition based isolates lineages selections size IV, culture small VI, compared lamivudine presence replicative selected development performed pressure selection treatment (–) associated fitness infection transmission using Infect analysis appearance sequencing vitro AIDS;: RK, acquired belonging clinical cohort dolutegravir, epidemic high including patients ED, LI, activity deep escape isolate mutation new previously selective showed substitutions Antimicrob SN, TA, Viral dominant increasing leading observed phylogenetic px; quasi-species rapid related replication spread therapy weekly {font-family (%) (.%) Chemother;: Dis; Figure Large Sanger [], dolutegravir lamivudine emergence font-size frequency individual infected inhibitor men pressure. reported transmitted virus GE, Quebec accumulation cell cultured different double; drugs elvitegravir, failing features first-line following genetic genotypic genotyping higher individuals inhibitors levels newly novel passage raltegravir results reverse subtype weeks (Figurea). AIDS CBMCs Engl Health MI, Med; Montreal PHI RNA Research TI, University absence al.Transmission and/or antiviral barrier border-color border-width cells clustering competence determined dolutegravir. escalations findings followed harbouring increases infections inhibitors. isolated mutations, networks obtained outgrowth patient patterns persons population potential prevent primary rapidly resulted revealed solid; studies time used versus {font-style {font-weight –), (Figure). (Figureb). ART AT, Abstract Acquir Center Defic Dis;: Dolutegravir EQ, Foundation Hospitals Immune Isolate Lancet;: Phylogenetic acid amino assays blood bold combination contributed courier; diagnoses distinct dual early em; entire enzymatic epidemics founder groups however, hypermutation infection: laboratory lineages. lower number pathways periods phase phylogenetics pressure, prevention prophylaxis pt;} rates regimens resistance, resistance. resistant sequencing. sex single strand study supernatant tenofovir transcriptase transfer transmissions treatment-naive weeks.


SimpleXMLElement::__toString (No version information available, might only be in Git) SimpleXMLElement::__toString — Returns the string content 说明 public string SimpleXMLElement::__toString ( void ) Returns text content that is directly in this element. Does not return text content that is inside this element's children. 参数 此函数没有参数。 返回值 Returns the string content on success or an empty string on failure. 范例 Example #1 Get string content 1 2 3'); echo $xml; ?> 以上例程会输出： 1 3 参见 • SimpleXMLElement::asXML() - Return a well-formed XML string based on SimpleXML element User Contributed Notes 2 notes =============================================================================== [Someone remove that other Patanjali's note, because it has errors! :-(] For those for whom it may not be immediately obvious from the example, the echo is what is forcing __toString() to be used. However, to assign the text of a node (but not its children) to a variable: $XML = new SimpleXMLElement('
Hello world. Good day! span>
'); $Text = $XML->__toString(); is effectively: $Text = 'Hello.'; // The s are ignored. Either of: $Text = $XML->span->__toString(); $Text = $XML->span[0]->__toString(); is effectively: $Text = ' world'; // Only the first is used. $Text = $XML->span[1]->__toString(); is effectively: $Text = ' Good day!'; // Only the second is used. =============================================================================== For those for whom it may not be immediately obvious from the example, to assign the text of a node (but not its children) to a variable: $XML = new SimpleXMLElement('Hello world. Good day! span>
'); Either: $Text = $XML; $Text = $XML->__String(); is effectively: $Text = 'Hello.'; // The s are ignored. Either of: $Text = $XML->span; $Text = $XML->span[0]; is effectively: $Text = ' world'; // Only the first is used. $Text = $XML->span[1]; is effectively: $Text = ' Good day!'; // Only the second is used.


Previous: Initializing Newly Added Local Slots (Changing the Class of an Instance), Up: Changing the Class of an Instance
Methods for update-instance-for-different-class may be defined to specify actions to be taken when an instance is updated. If only after methods for update-instance-for-different-class are defined, they will be run after the system-supplied primary method for initialization and will not interfere with the default behavior of update-instance-for-different-class.
Methods for shared-initialize may be defined to customize class redefinition. For more information, see shared-initialize.


## Bootstrapping Aurelia
Most platforms have a "main" or entry point for code execution. Aurelia is no different. If you've read the Getting Started Guide, then you've seen the `aurelia-app` attribute.
Often times you want to configure the framework or run some code prior to displaying anything to the user though. So chances are, as your project progresses, you will migrate towards needing some startup configuration. In order to do this, you can provide a value for the `aurelia-app` attribute that points to a configuration module. This module should export a single function named `configure`. Aurelia invokes your `configure` function, passing it the Aurelia object which you can then use to configure the framework yourself and decide what, when, and where to display your UI. Here's an example configuration file showing the standard configuration, the same configuration that is equivalent to what you would get when using `aurelia-app` without a value:
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot());
}
So, if you want to keep all the default settings, it's really easy. Just call `standardConfiguration()` to configure the standard set of plugins. Then call `developmentLogging()` to turn on logging in debug mode, output to the `console`.
The `use` property on the `aurelia` instance is an instance of `FrameworkConfiguration`. It has many helper methods for configuring Aurelia. For example, if you wanted to manually configure all the standard plugins without using the `standardConfiguration()` helper method to do so and you wanted to configure logging without using the helper method for that, this is how you would utilize the `FrameworkConfiguration` instance:
import {LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia) {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.history()
.router()
.eventAggregator();
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia, LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia: Aurelia): void {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.history()
.router()
.eventAggregator();
aurelia.start().then(() => aurelia.setRoot());
}
You can see that this code configures the default data-binding language (.bind, .trigger, etc.), the default set of view resources (repeat, if, compose, etc.) the history module (integration with the browser's history API), the router (mapping routes to components) and the event aggregator (app-wide pub/sub messaging). If, for example, you were building an app that didn't need to use the router or event aggregator, but did want debug logging, you could do that very easily with this configuration:
export function configure(aurelia) {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot());
}
Once you've configured the framework, you need to start things up by calling `aurelia.start()`. This API returns a promise. Once it's resolved, the framework is ready, including all plugins, and it is now safe to ineract with the services and begin rendering.
## Rendering the Root Component
The root component is set by calling `aurelia.setRoot()`. If no values are provided, this defaults to treating the element with the `aurelia-app` attribute as the DOM host for your app and `app.js`/`app.html` as the source for the root component. However, you can specify whatever you want, just like this:
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot('my-root', document.getElementById('some-element'));
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot('my-root', document.getElementById('some-element'));
}
This causes the `my-root.js`/`my-root.html` to be loaded as the root component and injected into the `some-element` HTML element.
## Bootstrapping Older Browsers
Aurelia was originally designed for Evergreen Browsers. This includes Chrome, Firefox, IE11 and Safari 8. However, we also support IE9 and above through the use of additional polyfills. To support these earlier browsers, you need to add an additional polyfill for MutationObservers. This can be achieved by a jspm install of `github:polymer/mutationobservers`. Then change your `index.html` startup code as follows:
My App
## Manual Bootstrapping
So far, we've been bootstrapping our app declaratively by using the `aurelia-app` attribute. That's not the only way though. You can manually bootstrap the framework as well. Here's how you would change your HTML file to use manual bootstrapping:
My App
The function you pass to the `bootstrap` method is the same as the `configure` function from the examples above.
## Making Resources Global
When you create a view in Aurelia, it is completely encapsulated. In the same way that you must `import` modules into an ES2015/TypeScript module, you must also import or `require` components into an Aurelia view. However, certain components are used so frequently across views that it can become very tedious to import them over and over again. To solve this problem, Aurelia lets you explicitly declare certain "view resources" as global. In fact, the configuration helper method `defaultResources()` mentioned above does just that. It takes the default set of view resources, such as `repeat`, `if`, `compose`, etc, and makes them globally usable in every view. You can do the same with your own components. Here's how we could make the `my-component` custom element, located in a _resources_ subfolder of your project, globally available in all views.
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.globalResources('resources/my-component');
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging()
.globalResources('resources/my-component');
aurelia.start().then(() => aurelia.setRoot());
}
## Organizing Your App with Features
Sometimes you have whole groups of components or related functionality that collectively form a "feature". This "feature" may even be owned by a particular set of developers on your team. You want these developers to be able to manage the configuration and resources of their own feature, without interfering with the other parts of the app. For this scenario, Aurelia provides the "feature" feature.
Imagine, as above, that we have a `my-component` component. Imagine that that was then one of a dozen components that formed a logical feature in your app called `my-feature`. Rather than place the feature's configuration logic inside the app's configuration module, we can place the feature's configuration inside its own feature configuration module.
To create a "feature", simply create a folder in your app; in the case of our example: `my-feature`. Inside that folder, place all the components and other code that pertain to that feature. Finally, create an `index.js` file at the root of the `my-feature` folder. The `index.js` file should export a single `configure` function. Here's what our code might look like for our hypothetical `my-feature` feature:
export function configure(config) {
config.globalResources('./my-component', './my-component-2', 'my-component-3', 'etc.');
}
import {FrameworkConfiguration} from 'aurelia-framework';
export function configure(config: FrameworkConfiguration): void {
config.globalResources('./my-component', './my-component-2', 'my-component-3', 'etc.');
}
The `configure` method receives an instance of the same `FrameworkConfiguration` object as the `aurelia.use` property. So, the feature can configure your app in any way it needs. An important note is that resources should be configured using paths relative to the `index.js` itself.
How then do we turn this feature on in our app? Here's an app configuration file that shows:
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('my-feature');
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('my-feature');
aurelia.start().then(() => aurelia.setRoot());
}
## Installing Plugins
Similar to features, you can install 3rd party plugins. The main difference is that a "feature" is provided internally by your application, while a plugin is installed from a 3rd party source through your package manager.
To use a plugin, you first install the package. For example `jspm install my-plugin` would use jspm to install the `my-plugin` package. Once the package is installed, you must configure it in your application. Here's some code that shows how that works.
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('my-plugin', pluginConfiguration);
aurelia.start().then(() => aurelia.setRoot());
}
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('my-plugin', pluginConfiguration);
aurelia.start().then(() => aurelia.setRoot());
}
Simply provide the same name used during installation, to the plugin API. Some plugins may require configuration (see the plugin's documentation for details). If so, pass the configuration object or configuration callback function as the second parameter of the `plugin` API.
## Leveraging Progressive Enhancement
So far you've seen Aurelia replacing a portion of the DOM with a root component. However, that's not the only way to render with Aurelia. Aurelia can also progressively enhance existing HTML.
Imagine that you want to generate your home page on the server, including using your server-side templating engine to render out HTML. Perhaps you've got custom components you created with Aurelia, but you want to render the custom elements on the server with some content, in order to make things a bit more SEO friendly. Or perhaps you have an existing, traditional web app, that you want to incrementally start adding Aurelia to. When the HTML is rendered in the browser, you want to progressively enhance that HTML and "bring it to life" by activating all the Aurelia component's rich behavior.
All this is possible with Aurelia, using a single method call: `enhance`. Instead of using `aurelia-app` let's use manual bootstrapping for this example. To progressively enhance the entire `body` of your HTML page, you can do something like this:
My App
It's important to note that, in order for `enhance` to identify components to enhance in your HTML page, you need to declare those components as global resources, as we have above with the `my-component` component.
Optionally, you can provide an object instance to use as the data-binding context for the enhancement, or provide a specific part of the DOM to enhance. Here's an example that shows both:
My App
## Customizing Conventions
There are many things you may want to customize or configure as part of your application's bootstrap process. Once you have your main `configure` method in place and `aurelia-app` is pointing to that module, you can do just about anything you want. One of the most common aspects of Aurelia that developers may want to customize, is its conventions.
### Configuring the View Location Convention
Aureia uses a _View Strategy_ to locate the view that is associated with a particular component's view-model. If the component doesn't specify its own view strategy, then Aurelia's `ViewLocator` service will use a fallback view strategy. The fallback strategy that is used is named `ConventionalViewStrategy`. This strategy uses the view-model's module id to conventionally map to its view id. For example, if the module id is "welcome.js" then this strategy will look for the view at "welcome.html". The conventional strategy's mapping logic can be changed if a different convention is desired. To do this, during bootstrap, import the `ViewLocator` and replace its `convertOriginToViewUrl` method with your own implementation. Here's some example code:
import {ViewLocator} from 'aurelia-framework';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
ViewLocator.prototype.convertOriginToViewUrl = (origin) => {
let moduleId = origin.moduleId;
...
return "view.html";
};
aurelia.start().then(a => a.setRoot());
}
import {ViewLocator, Aurelia, Origin} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging();
ViewLocator.prototype.convertOriginToViewUrl = (origin: Origin): string => {
let moduleId = origin.moduleId;
...
return "view.html";
};
aurelia.start().then(a => a.setRoot());
}
In this example, you would simply replace "..." with your own mapping logic and return the resulting view path that was desired.
### Configuring the Fallback View Location Strategy
In addition to customizing the mapping logic of the `ConventionalViewStrategy` you can also replace the entire fallback view strategy. To do this, replace the `createFallbackViewStrategy` of the `ViewLocator` with your own implementation. Here's some sample code for that:
import {ViewLocator} from 'aurelia-framework';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
ViewLocator.prototype.createFallbackViewStrategy = (origin) => {
return new CustomViewStrategy(origin);
};
aurelia.start().then(a => a.setRoot());
}
import {ViewLocator, Aurelia, Origin} from 'aurelia-framework';
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration()
.developmentLogging();
ViewLocator.prototype.createFallbackViewStrategy = (origin: Origin) => {
return new CustomViewStrategy(origin);
};
aurelia.start().then(a => a.setRoot());
}
## Logging
Aurelia has a simple logging abstraction that the framework itself uses. By default it is a no-op. The configuration in the above examples shows how to install an appender which will take the log data and output it to the console. Here's the code again, for convenience:
import {LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia) {
aurelia.use
.standardConfiguration;
aurelia.start().then(() => aurelia.setRoot());
}
import {LogManager, Aurelia} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia: Aurelia): void {
aurelia.use
.standardConfiguration;
aurelia.start().then(() => aurelia.setRoot());
}
You can also see how to set the log level. Values for the `logLevel` include: `none`, `error`, `warn`, `info` and `debug`.
The above example uses our provided `ConsoleAppender`, but you can easily create your own appenders. Simply implement a class that matches the `Appender` interface from the logging library.


ion¶
-
class
ChiantiPy.core.
ion
(ionStr, temperature=None, eDensity=None, pDensity='default', radTemperature=None, rStar=None, abundance=None, setup=True, em=None, verbose=0)¶ Bases:
ChiantiPy.base._IoneqOne.ioneqOne
,ChiantiPy.base._IonTrails.ionTrails
,ChiantiPy.base._SpecTrails.specTrails
The top level class for performing spectral calculations for an ion in the CHIANTI database.
- ionStr : str
- CHIANTI notation for the given ion, e.g. ‘fe_12’ that corresponds to the Fe XII ion.
- temperature : float or ~numpy.ndarray, optional
- Temperature array (Kelvin)
- eDensity : float or ~numpy.ndarray, optional
- Electron density array (\(\mathrm{cm^{-3}}\) )
- pDensity : float or ~numpy.ndarray, optional
- Proton density (\(\mathrm{cm}^{-3}\) )
- radTemperature : float or ~numpy.ndarray, optional
- Radiation black-body temperature (in Kelvin)
- rStar : float or ~numpy.ndarray, optional
- Distance from the center of the star (in stellar radii)
- abundance : float or str, optional
- Elemental abundance relative to Hydrogen or name of CHIANTI abundance file to use, without the ‘.abund’ suffix, e.g. ‘sun_photospheric_1998_grevesse’.
- setup : bool or str, optional
- If True, run ion setup function. Otherwise, provide a limited number of attributes of the selected ion
- em : float or ~numpy.ndarray, optional
- Emission Measure, for the line-of-sight emission measure (\(\mathrm{\int \, n_e \, n_H \, dl}\)) (\(\mathrm{cm}^{-5}\).), for the volumetric emission measure \(\mathrm{\int \, n_e \, n_H \, dV}\) (\(\mathrm{cm^{-3}}\)).
- IonStr : str
- Name of element plus ion, e.g. fe_12 for Fe XII
- Z : int
- the nuclear charge, 26 for fe_12.
- Ion : int
- the ionization stage, 12 for fe_12.
- Dielectronic : bool
- true if the ion is a ‘dielectronic’ ion where the levels are populated by dielectronic recombination.
- Spectroscopic : str
- the spectroscopic notation for the ion, such as Fe XII for fe_12.
- Filename : str
- the complete name of the file generic filename in the CHIANTI database, such as $XUVTOP/fe/fe_12/fe_12.
- Ip : float
- the ionization potential of the ion
- FIP : float
- the first ionization potential of the element
- Defaults : dict
- these are specified by the software unless a chiantirc file is found in ‘$HOME/.chianti’:
The keyword arguments temperature, eDensity, radTemperature, rStar, em must all be either a float or have the same dimension as the rest if specified as lists, tuples or arrays.
The Defaults dict should have the following keys:
- abundfile, the elemental abundance file, unless specified in chiantirc this defaults to sun_photospheric_1998_grevesse.
- ioneqfile, the ionization equilibrium file name. Unless specified in ‘chiantirc’ this is defaults to chianti. Other choices are availble in $XUVTOP/ioneq
- wavelength, the units of wavelength (Angstroms, nm, or kev), unless specified in the ‘chiantirc’ this is defaults to ‘angstrom’.
- flux, specified whether the line intensities are give in energy or photon fluxes, unless specified in the ‘chiantirc’ this is defaults to energy.
- gui, specifies whether to use gui selection widgets (True) or to make selections on the command line (False). Unless specified in the ‘chiantirc’ this is defaults to False.
Methods Summary
Methods Documentation
-
boundBoundLoss
(allLines=1)¶ Calculate the summed radiative loss rate for all spectral lines of the specified ion.
- allLines : bool
- If True, include losses from both observed and unobserved lines. If False, only include losses from observed lines.
includes elemental abundance and ionization fraction.
creates the attribute:
BoundBoundLoss : dict with the keys below.
rate : the radiative loss rate (\(\mathrm{erg \, cm^{-3}} \, \mathrm{s}^{-1}\)) per unit emission measure.
temperature : (K).
eDensity : electron density (\(\mathrm{cm^{-3}}\))
-
cireclvlDescale
(lvlType)¶ Interpolate and extrapolate cilvl and reclvl rates. lvltype must be either ‘reclvl’, ‘cilvl’ or ‘rrlvl’ Used in level population calculations.
-
diCross
(energy=None, verbose=False)¶ Calculate the direct ionization cross section as a function of the incident electron energy in eV, puts values into DiCross
-
diRate
()¶ Calculate the direct ionization rate coefficient as a function of temperature (K)
-
drRate
()¶ Provide the dielectronic recombination rate coefficient as a function of temperature (K).
-
drRateLvl
(verbose=0)¶ to calculate the level resolved dielectronic rate from the higher ionization stage to the ion of interest rates are determined from autoionizing A-values the dictionary self.DrRateLvl contains rate = the dielectronic rate into an autoionizing level effRate = the dielectronic rate into an autoionizing level mutilplied by the branching ratio for a stabilizing transition totalRate = the sum of all the effRates
-
eaCross
(energy=None, verbose=False)¶ Provide the excitation-autoionization cross section.
Energy is given in eV.
-
eaDescale
()¶ Calculates the effective collision strengths (upsilon) for excitation-autoionization as a function of temperature.
-
eaRate
()¶ Calculate the excitation-autoionization rate coefficient.
-
emiss
(allLines=True)¶ Calculate the emissivities for lines of the specified ion.
units: ergs s^-1 str^-1
Does not include elemental abundance or ionization fraction
Wavelengths are sorted
set allLines = True to include unidentified lines
-
emissList
(index=-1, wvlRange=None, wvlRanges=None, top=10, relative=0, outFile=0)¶ List the emissivities.
wvlRange, a 2 element tuple, list or array determines the wavelength range
Top specifies to plot only the top strongest lines, default = 10
normalize = 1 specifies whether to normalize to strongest line, default = 0
-
emissPlot
(index=-1, wvlRange=None, top=10, linLog='lin', relative=0, verbose=0, plotFile=0, saveFile=0)¶ Plot the emissivities.
wvlRange, a 2 element tuple, list or array determines the wavelength range
Top specifies to plot only the top strongest lines, default = 10
linLog specifies a linear or log plot, want either lin or log, default = lin
normalize = 1 specifies whether to normalize to strongest line, default = 0
-
emissRatio
(wvlRange=None, wvlRanges=None, top=10)¶ Plot the ratio of 2 lines or sums of lines. Shown as a function of density and/or temperature. For a single wavelength range, set wvlRange = [wMin, wMax] For multiple wavelength ranges, set wvlRanges = [[wMin1,wMax1],[wMin2,wMax2], …] A plot of relative emissivities is shown and then a dialog appears for the user to choose a set of lines.
-
gofnt
(wvlRange=0, top=10, verbose=0, plot=True)¶ Calculate the ‘so-called’ G(T) function.
Given as a function of both temperature and eDensity.
Only the top( set by ‘top’) brightest lines are plotted. the G(T) function is returned in a dictionary self.Gofnt
-
intensity
(allLines=1)¶ Calculate the intensities for lines of the specified ion.
units: ergs cm^-3 s^-1 str^-1
includes elemental abundance and ionization fraction.
the emission measure ‘em’ is included if specified
-
intensityRatioInterpolate
(data, scale='lin', plot=0, verbose=0)¶ to take a set of date and interpolate against the IntensityRatio the scale can be one of ‘lin’/’linear’ [default], ‘loglog’, ‘logx’, ‘logy’,
-
ioneqOne
()¶ Provide the ionization equilibrium for the selected ion as a function of temperature.
returned in self.IoneqOne
-
ionizCross
(energy=None)¶ Provides the total ionization cross section.
uses diCross and eaCross.
-
ionizRate
()¶ Provides the total ionization rate.
Calls diRate and eaRate.
-
p2eRatio
()¶ Calculates the proton density to electron density ratio using Eq. 7 of [1].
Uses the abundance and ionization equilibrium.
[1] Young, P. R. et al., 2003, ApJS, 144, 135
-
popPlot
(top=10, plotFile=0, outFile=0, pub=0)¶ Plots populations vs temperature or eDensity.
top specifies the number of the most highly populated levels to plot if pub is set, the want publication plots (bw, lw=2).
-
populate
(popCorrect=1, verbose=0, **kwargs)¶ Calculate level populations for specified ion. possible keyword arguments include temperature, eDensity, pDensity, radTemperature and rStar
-
recombRate
()¶ Provides the total recombination rate coefficient.
Calls drRate and rrRate
-
rrRate
()¶ Provide the radiative recombination rate coefficient as a function of temperature (K).
-
setup
(alternate_dir=None, verbose=False)¶ Setup various CHIANTI files for the ion including .wgfa, .elvlc, .scups, .psplups, .reclvl, .cilvl, and others.
- alternate_dir : str
- directory cotaining the necessary files for a ChiantiPy ion; use to setup an ion with files not in the current CHIANTI directory
verbose : bool
If ion is initiated with setup=False, call this method to do the setup at a later point.
-
setupIonrec
(alternate_dir=None, verbose=False)¶ Setup method for ion recombination and ionization rates.
Allows a bare-bones ion object to be setup up with just the ionization and recombination rates. For ions without a complete set of files - one that is not in the MasterList.
-
spectrum
(wavelength, filter=(<function gaussianR>, 1000.0), label=0, allLines=1)¶ Calculates the line emission spectrum for the specified ion.
Convolves the results of intensity to make them look like an observed spectrum the default filter is the gaussianR filter with a resolving power of 1000. Other choices include chianti.filters.box and chianti.filters.gaussian. When using the box filter, the width should equal the wavelength interval to keep the units of the continuum and line spectrum the same.
includes ionization equilibrium and elemental abundances
can be called multiple times to use different filters and widths uses label to keep the separate applications of spectrum sorted by the label for example, do .spectrum( …. labe=’test1’) and do .spectrum( …. label = ‘test2’) then will get self.Spectrum.keys() = test1, test2 and self.Spectrum[‘test1’] = {‘intensity’:aspectrum, ‘wvl’:wavelength, ‘filter’:useFilter.__name__, ‘filterWidth’:useFactor}
scipy.ndimage.filters also includes a range of filters.
-
twoPhoton
(wvl, verbose=False)¶ to calculate the two-photon continuum - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium includes the emission measure if specified
-
twoPhotonEmiss
(wvl)¶ To calculate the two-photon continuum rate coefficient - only for hydrogen- and helium-like ions
-
twoPhotonLoss
()¶ to calculate the two-photon energy loss rate - only for hydrogen- and helium-like ions includes the elemental abundance and the ionization equilibrium does not include the emission measure
-
upsilonDescale
(prot=0)¶ Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates uses the new format “scups” files
-
upsilonDescaleSplups
(prot=0, diel=0)¶ Provides the temperatures and effective collision strengths (upsilons) set prot for proton rates otherwise, ce will be set for electron collision rates


class: center, middle # Getting started with short-jsdoc --- # Introduction So you want to document your sources with short-jsodc... Then you will be declaring modules that contain classes that contain methods and properties using annotations. This is called an *abstract syntax tree* or *AST*. --- #Example Let's start with an example of JavaScript code that contains a jsdoc comment. It declares a class *FileView* of module *myapp* that extends class *AbstractView* and contains a property *file* of type *FileData* and a method *deleteFileHandler* that accept a Function parameter and returns a *Promise* object: // @module myapp // @class FileView This view shows a single file @extends AbstractView // @property {FileData} file // @method deleteFileHandler Handles the delete file action // @param {Function} fn @returns {Promise} --- #Annotation syntax The tool will be consuming expressions like the following to build the AST. We call these expressions *annotations*: // @param {Color} color a description for the color parameter ##Annotation parts * ```@param``` is the annotation and defines the type of node we are declaring. In this case we are declaring a method parameter * ```{Color}``` is optional. Is a refence of the type of the node we are declaring. * ```color``` is optional too and it is the name of the node we are declaring. * The text ```a description for the color parameter``` is associated to the node and documents it --- #Tree structure * @module contain @class * @class contain @method @property @event * @method contain @param In short-jsdoc only certain nodes can contain children. We call these *parent nodes* and are: @module @method @property @event @class All other annotations are *leaf nodes* meaning they can't contain children and always belong to a parent node. Example of leaf nodes: @param @throws @returns @extends @static --- #Parser tool The parser will read your files from top to bottom parsing any annotation found in your source code comments. When a leaf node annotation is found, it is assigned as children of the last parsed parent node. When a parent node annotation is found it is assigned as children of the last parent node that matches the structure 'modules that contain classes that contains methods, etc'. Any kind of comment style can be used. Any @annotation name can be used so you can define your own semantics - they will be parsed as children of the last parent node read. Source code files must be auto-contenible - in other words you cannot make any assumptions about the order of the files being parsed. --- #Types Some nodes like parameters or returns can declare a type, which is a reference to class nodes. short-jsdoc heavily support types and can be of the following kinds ##Simple types Are just a reference to a class by name, for example: // @method getModel @returns {Banana} --- #Types ## Native types If you reference a JavaScript native type like String, Array, Object, etc., they will be binded to the [Mozilla JavaScript Types Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects). Some native types are Object, Number, Boolean, String, Array, Function, Error, etc Also you can choose to compile using the provided jsdoc for native types - copied and pasted from mozilla docs. In that case instead an external link you can navigate to the type as with any other types and the inherited information will be available. --- #Types ##Generic types These are inspirated in Java or C# generics. For example we can say that a parameter is an *Array* but we can also say it is an *Array of Bananas* : // @method addFruit @param {Array<Banana>} fruits Generic types support arbitrary anidation: @method groupWires @returns {Object<String,Array<Wire>>} a map of wires by name. --- #Types ##Multiple types - (OR) Imagine a method in which its first param can be both a String or an Array. Then we can say so in jsdocs like this: @method foo @param {String|Array} p --- #Types ##Literal Object Because in JavaScript is very common to define Objects on the fly shortjsdoc supports an object literal type definition: @method foo @returns {id:String,colors:Array<Color>,execute:Function} That means that the mehod *foo* returns an object with the properties *id* of type String, *color* of type Array of Color and *execute* of type Function. --- #Types There is jsdoc for libraries types like jQuery, Backbone, Underscore that you can also link in your applications. For example jQuery.Deferred, Backbone.View, etc. --- #Ignored comments Comments starting with the character '?' will be ignored, even if they contain annotations: //? @class Something will be ignored b the parser /*? @method foo also will be ignored */ --- #Talking about different classes on the same file In javascript it is common to be defining a class Foo, then in the middle of the file, define another class Bar and start talking about it, and then come back talking about the first class Foo, all on the same file. The recommended way to solve this problem with short jsdoc is making sure we are *standing* at the correct class. We use @class annotations as we use the 'cd' console command to set the current working directory to talk about relative files in there: // @class Foo this is the main class // @method {FooConfig} doTheWork Foo method that returns a new type that wi will describe now! // @class FooConfig bla, this class is declared at the middle of the file and we want to document it here! // @property width a property of FooConfig class - we close class FooConfig here and come back talking about class Foo // @class Foo // @property name a Foo class property --- #Talking about the same class in different files In JavaScript is very common that a class or module definition is made across several files. shortjsdoc support this by just telling the framework of what are we goint to talk about following the top to bottom file parsing: // file1.js // @module foo Some comment about module foo // @class Bar some comment about class Bar @property p1 // file2.js // @module foo More text for module foo // @class Bar More contant about class Bar @property @p2 That will result in a module *foo* containing both texts and containing a class Bar that will also contain both texts. --- #Text Markings Marks inside a node text can be defined using the syntax @?something. This is mostly used for defining references to other nodes or to external links from within the text. It is similar to java's @see annotation. We can use @?class AClass or @?method module.Class.method1 or @?property, @?event, etc. These markings will create a link to the referenced node in the output. Example: // @module client // @class CustomerModel This model represent a single customer. // The attributes of this model are defined by the @?class server.CustomerService service // @extends Backbone.Model Also, there is a @?ref that will accept any kind of node - but less efficient by the viewer tools. --- #Type alias There is a very powerful annotation @alias that let declare alias for types and even for annotations. Suppose you want to integrate an external jsdoc file in which the type 'float' is used instead of Number. You want the tool to replace each 'float' type with 'Number', so you would add the following (before): @alias class float Number Even more interesting, you want to create shortcuts to common js types, so instead writing Object *< String, < Array < Number>>>* you can just write *O < S, < A < N>>>*, well that can be done by just defining class alias: @alias class O Object @alias class A Array @alias class S String @alias class N NUmber Then when the type 'A' is found it will be replaced by 'Array' --- #Annotation alias the @alias plugin also supportsanother kind of aliasing that gives the user the power of creating aliases of annotations. For example, suppose that we are not documenting js-doc but another thing, like the grunt/gulp build tasks and we want to use the annotation @gulp-task to be proccessed as if they were @module, then we can just write: @alias annotation gulp-task module After that declaration, all annotations @gulp-task will be treated as if they were @module. --- Metadata Out ouf the hook metadata is supported via the annotations @metadata and @metadata-global. @metadata is used for adding some metadata property in the current primary annotation and @metadata-global is used for adding a metadata property in the global ast object. Example: Metadata in general is used by viewers like the html application to name or describe concepts We want the viewers to name classes as 'sections' and modules as 'books' so: @metadata-global class.name Section @metadata-global module.name Book we want the paricular class Apple to be named as a 'Chapter' @class Apple foo bar @extend Fruit @metadata class.name Chapter --- #Parsing stages. There are two main stages in short-jsdoc: parsing and type binding. ##Parsing This is the most important part, it will read your sources and make a basic AST. Nodes will be organized accordingly to a specific language, for example, in jsdoc modules will contain classes that will contain methods, etc. But in general the parsing tool is language agnostic and can be reused to process any language, not only jsdoc. var maker = new JsDocMaker(); var source = '//@module fruits @class Apple the science fruit @method inpirate @param {Person} p'; maker.addFile(source, 'apple.js'); var ast = maker.jsdoc(); The resulting *ast* variable contains a module fruits that contains a Apple class that contains a method *inspirate* that accept a parameter of type Person. We can access this type with the following code, but because it is not binded yet we can only access the referenced type name: ast.classes ['fruits.Apple'].methods.inspirate.param [0]. type === 'Person' --- #Parsing stages. ##Type Binding After we have a parsed AST we can then run a second utility over it called binding. It will bind all types found with the actual class node in the AST. This means, for each node that contains a type, it will look for the referenced class node and associate it For example, after parsing only we have the referenced class names only, but after binding it we will have easy access to the real referenced node. Parsing only is good for serializing the AST to JSON - you cannot serialize a binded AST. Based on our previous example, if we bind the AST we will can navigate through types: maker.postProccess(); maker.postProccessBinding(); ast.classes ['fruits.Apple'].methods.inspirate.param [0].type === ast.classes ['people.Person'] --- #The html application After the parser has extracted all the jsdoc AST information from given sources, there is a html single page application that renders all of this information in a navigable way with utilities like: * node text search * class hierarchy * known subclases * search type references * full AST tree


A Hustle-what?
HustleCase is a lightweight whiteboard laptop case that makes it easy to:
- Sketch on the go
- Snap on and off easily
- Protect from scrapes and scratches
- Write smoothly and erase quickly
- Gift the special hustler in your life
- Protect from scrapes and scratches


{% extends "eats/edit/base.html" %} {% block eats_title %}{{ block.super }}View import{% endblock eats_title %} {% block eats_content %}
Description: {{ import.description }}
This import was performed at {{ import.import_date }} by {{ import.importer }}.


Angular Launch
Ryan DeBeasi
Red Hat Open Innovation Labs
Why JavaScript?
JS is flexible!
- Client, server, desktop, mobile, IoT, robots...
- Write it in any style
- Large ecosystem
Object-oriented or functional
Declarative or imperative
JS is growing!
- Officially called ECMAScript
- Managed by TC39 annual updates
- Browsers continually add new features
- Babel turns tomorrow's JS into today's
Next: http://2ality.com/2018/02/ecmascript-2019.html
JS is weird!
- Continuously evolving
- Loosely typed
- No one style guide
The DOM is weird!
- DOM = Document Object Model
- Browsers read HTML tags and turn them into DOM elements

The DOM is weird!

There's like five of everything
- Frameworks: Angular, React, Vue...
- Build tools: Webpack, Gulp, Parcel...
- Engines: V8, Chakra, Spidermonkey...
Ok, so now what?
You don't need to know everything!
... and if someone tells you they do, they're probably lying
Every language has strengths and weaknesses
...and best practices help!
Making JS better
- ES6 added classes, constants, etc.
- Linters like ESLint enforce common style
- Unit and E2E tests catch bugs
Any questions so far?
Hello world
is.gd/hello_js
https://www.flickr.com/photos/nasacommons/36164716056/
Ok, so Angular
Angular uses...
- TypeScript
- Components for UI logic
- Services for business/API logic
- CLI for package management and builds
Multidirectional data flow
It's tempting to treat the DOM like a giant global variable
Unidirectional data flow
https://github.com/ngrx/platform/blob/master/docs/store/README.md
Makes it easier to understand and debug
Example code
From the starter app
Component
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'test-app';
}
Template

Welcome to {{ title }}!

Questions?