Considerations for Designing and Running an App in the Cloud
Page last updated:
App Design for the Cloud
Apps written in supported frameworks often run unmodified on Cloud Foundry if the app design follows a few simple guidelines. Following these guidelines facilitates app deployment to Cloud Foundry and other cloud platforms.
The following guidelines represent best practices for developing modern apps for cloud platforms. For more detailed reading about good app design for the cloud, see The Twelve-Factor App.
For more information about the features of HTTP routing handled by the Cloud Foundry router, see the HTTP Routing topic. For more information about the lifecycle of app containers, see the App Container Lifecycle topic.
Avoid Writing to the Local File System
Apps running on Cloud Foundry should not write files to the local file system for the following reasons:
 - Local file system storage is short-lived. When an app instance crashes or stops, the resources assigned to that instance are reclaimed by the platform including any local disk changes made since the app started. When the instance is restarted, the app will start with a new disk image. Although your app can write local files while it is running, the files will disappear after the app restarts.
 - Instances of the same app do not share a local file system. Each app instance runs in its own isolated container. Thus a file written by one instance is not visible to other instances of the same app. If the files are temporary, this should not be a problem. However, if your app needs the data in the files to persist across app restarts, or the data needs to be shared across all running instances of the app, the local file system should not be used. We recommend using a shared data service like a database or blobstore for this purpose.
For example, instead of using the local file system, you can use a Cloud Foundry service such as the MongoDB document database or a relational database like MySQL or Postgres. Another option is to use cloud storage providers such as Amazon S3, Google Cloud Storage, Dropbox, or Box. If your app needs to communicate across different instances of itself, consider a cache like Redis or a messaging-based architecture with RabbitMQ.
If you must use a file system for your app because for example, your app interacts with other apps through a network attached file system, or because your app is based on legacy code that you cannot rewrite, consider using Volume Services to bind a network attached file system to your app.
Cookies Accessible across Apps
In an environment with shared domains, cookies might be accessible across apps.
Many tracking tools such as Google Analytics and Mixpanel use the highest available domain to set their cookies. For an application using a shared domain such as example.com, a cookie set to use the highest domain has a Domain attribute of .example.com in its HTTP response header. For example, an app at my-app.scapp.io might be able to access the cookies for an app at your-app.scapp.io.
You should decide whether or not you want your apps or tools that use cookies to set and store the cookies at the highest available domain.
Port Considerations
Clients connect to apps running on Cloud Foundry by making requests to URLs associated with the app. Cloud Foundry allows HTTP requests to apps on ports 80 and 443. For more information, see the Routes and Domains topic.
Cloud Foundry also supports WebSocket handshake requests over HTTP containing the Upgrade header. The Cloud Foundry router handles the upgrade and initiates a TCP connection to the app to form a WebSocket connection.
To support WebSockets, the operator must configure the load balancer correctly. Depending on the configuration, clients may have to use a different port for WebSocket connections, such as port 4443, or a different domain name. For more information, see the Supporting WebSockets topic.
Cloud Foundry Updates and Your App
For app management purposes, Cloud Foundry may need to stop and restart your app instances. If this occurs, Cloud Foundry performs the following steps:
 1. Cloud Foundry sends a single termination signal to the root process that your start command invokes.
 2. Cloud Foundry waits 10 seconds to allow your app to cleanly shut down any child processes and handle any open connections.
 3. After 10 seconds, Cloud Foundry forcibly shuts down your app.
Your app should accept and handle the termination signal to ensure that it shuts down gracefully. To achieve this, the app is expected to follow the steps below when shutting down:
 1. App receives termination signal
 2. App closes listener so that it stops accepting new connections
 3. App finishes serving in-flight requests
 4. App closes existing connections as their requests complete
 5. App shuts down or is killed
See the Sample HTTP App GitHub repository for an implementation of the expected shutdown behavior in Golang.
Ignore Unnecessary Files When Pushing
By default, when you push an app, all files in the app's project directory tree are uploaded to your Cloud Foundry instance, except version control and configuration files or folders with the following names:
 - .cfignore
 - _darcs
 - .DS_Store
 - .git
 - .gitignore
 - .hg
 - manifest.yml
 - .svn
In addition to these, if API request diagnostics are directed to a log file and the file is within the project directory tree, it is excluded from the upload. You can direct these API request diagnostics to a log file using cf config --trace or the CF_TRACE environment variable.
If the app directory contains other files, such as temp or log files, or complete subdirectories that are not required to build and run your app, you might want to add them to a .cfignore file to exclude them from upload. Especially with a large app, uploading unnecessary files can slow app deployment.
To use a .cfignore file, create a text file named .cfignore in the root of your app directory structure. In this file, specify the files or file types you wish to exclude from upload. For example, these lines in a .cfignore file exclude the "tmp" and "log" directories.
 tmp
 log
The file types you will want to exclude vary, based on the app frameworks you use. For examples of commonly-used .gitignore files, see _URL_
Run Multiple Instances to Increase Availability
Singleton apps may become temporarily unavailable for reasons that include:
 - During an upgrade, Swisscom Application Cloud (APC) gracefully shuts down the apps running on each Diego cell and then restarts them on another Diego cell. Single app instances may become temporarily unavailable if the replacement instance does not become healthy within the cell's evacuation timeout, which defaults to 10 minutes.
 - Unexpected faults in CF system components or underlying infrastructure, such as container-host VMs or IaaS Availability Zones, may cause lone app instances to disappear or become unroutable for a minute or two.
To avoid the risk of an app becoming temporarily unavailable, developers can run more than one instance of the app.
Using Buildpacks
A buildpack consists of bundles of detection and configuration scripts that provide framework and runtime support for your apps. When you deploy an app that needs a buildpack, Cloud Foundry installs the buildpack on the Diego cell where the app runs.
For more information, see the Buildpacks topic.
View the source for this page in GitHub


Problem in dealing with maps
I want a map in which keys are string and and values are integer, What is the complexity of updating the values of a key at any point of time in java (Hashmap, linkedHashMap, TreeMap, Hashtable ) or using map in c++.
hello arpit , you can use unordered_maps . declare it as unordered__map < string,int > mymap; here strings is an inbuilt class available in header file that can be included using #include . for the complexities you can look into this _URL_
it depends upon the type of map you are using , datatype too.
Being bounded by my knowledge , i think the complexity for using unordered_map is O(L+k) where O(k) is the unordered__map factor and O(L) for creating a hash corresponding to your string .


% Default to the notebook output style % Inherit from the specified cell style. \documentclass[11pt]{article} \usepackage[T1]{fontenc} % Nicer default font (+ math font) than Computer Modern for most use cases \usepackage{mathpazo} % Basic figure setup, for now with no caption control since it's done % automatically by Pandoc (which extracts ![](path) syntax from Markdown). \usepackage{graphicx} % We will generate all images so they have a width \maxwidth. This means % that they will get their normal width if they fit onto the page, but % are scaled down if they would overflow the margins. \makeatletter \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth \else\Gin@nat@width\fi} \makeatother \let\Oldincludegraphics\includegraphics % Set max figure width to be 80% of text width, for now hardcoded. \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} % Ensure that by default, figures have no caption (until we provide a % proper Figure object with a Caption API and a way to capture that % in the conversion process - todo). \usepackage{caption} \DeclareCaptionLabelFormat{nolabel}{} \captionsetup{labelformat=nolabel} \usepackage{adjustbox} % Used to constrain images to a maximum size \usepackage{xcolor} % Allow colors to be defined \usepackage{enumerate} % Needed for markdown enumerations to work \usepackage{geometry} % Used to adjust the document margins \usepackage{amsmath} % Equations \usepackage{amssymb} % Equations \usepackage{textcomp} % defines textquotesingle % Hack from _URL_ \AtBeginDocument{% \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code } \usepackage{upquote} % Upright quotes for verbatim code \usepackage{eurosym} % defines \euro \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document \usepackage{fancyvrb} % verbatim replacement that allows latex \usepackage{grffile} % extends the file name processing of package graphics % to support a larger range % The hyperref package gives us a pdf with properly built % internal navigation ('pdf bookmarks' for the table of contents, % internal cross-reference links, web links for URLs, etc.) \usepackage{hyperref} \usepackage{longtable} % longtable support required by pandoc >1.10 \usepackage{booktabs} % table support for pandoc > 1.12.2 \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) % normalem makes italics be italics, not underlines % Colors for the hyperref package \definecolor{urlcolor}{rgb}{0,.145,.698} \definecolor{linkcolor}{rgb}{.71,0.21,0.01} \definecolor{citecolor}{rgb}{.12,.54,.11} % ANSI colors \definecolor{ansi-black}{HTML}{3E424D} \definecolor{ansi-black-intense}{HTML}{282C36} \definecolor{ansi-red}{HTML}{E75C58} \definecolor{ansi-red-intense}{HTML}{B22B31} \definecolor{ansi-green}{HTML}{00A250} \definecolor{ansi-green-intense}{HTML}{007427} \definecolor{ansi-yellow}{HTML}{DDB62B} \definecolor{ansi-yellow-intense}{HTML}{B27D12} \definecolor{ansi-blue}{HTML}{208FFB} \definecolor{ansi-blue-intense}{HTML}{0065CA} \definecolor{ansi-magenta}{HTML}{D160C4} \definecolor{ansi-magenta-intense}{HTML}{A03196} \definecolor{ansi-cyan}{HTML}{60C6C8} \definecolor{ansi-cyan-intense}{HTML}{258F8F} \definecolor{ansi-white}{HTML}{C5C1B4} \definecolor{ansi-white-intense}{HTML}{A1A6B2} % commands and environments needed by pandoc snippets % extracted from the output of 'pandoc -s' \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} % Add ',fontsize=\small' for more characters per line \newenvironment{Shaded}{}{} \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} \newcommand{\RegionMarkerTok}[1]{{#1}} \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} \newcommand{\NormalTok}[1]{{#1}} % Additional commands for more recent versions of Pandoc \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}


%0 Journal Article %A LAN Haoxin %A CHEN Yunhua %T SNN Training Algorithm Based on Relationship Between Pulse Frequency and Input Current %D 2022 %R 10.3778/j.issn._PHONE_.2106-0506 %J Computer Engineering and Applications %P 87-92 %V 58 %N 10 %X Spiking neural network（SNN） is driven by asynchronous events and supports massively parallel computing. It has great potential in improving the computational efficiency of synchronous analog neural networks. However, SNN is still facing the problem that it cannot be directly trained. For this reason, inspired by the research on the response mechanism of leaky integrate-and-fire（LIF） model, this paper proposes a new SNN training algorithm based on rate coding. Firstly, this paper models the spike rate of the LIF neuron through the simulation experiment, obtains the expression relationship between the spike rate and the input current, and takes the derivative as the gradient, which solves the non-differentiability of the discrete spike event during the SNN training process. Secondly, this paper uses the LIF neuron response mechanism to update the network parameters, which improves the learning efficiency. The experimental results on the MNIST and CIFAR10 datasets verify the effectiveness of this method. The classification accuracy reaches 99.53% and 89.46%. The recognition accuracy on CIFAR10 data is 4.22 percentage points higher than that of previous researchers and the learning efficiency has been doubled. %U _URL_


text:
relating to the 10 Pound Pom Scheme, are held by the National Archives of Australia (NAA). You can search for such documents using the NAA's online RecordSearch tool and request copies of certain items. However only about 25% of their entire collection is online as of yet. If you cannot find your name You will need to contact them to obtain your records through their Making Australia Home program.
Hi Hollie, an interesting question! The initial theory of the Ten Pound Pom scheme was to dramatically increase the Australian population amid fears of a Japanese invasion and the Curtin Government's policy of 'populate or perish' was developed. Assisted Passage schemes, such as the 'Ten Pound Poms' were phased out in the 1980's, but who knows what may happen in the future!
Try the National Archives first, Angela, but bear in mind that they only hold official government records, and that the grazier will only be mentioned in those records if the sponsorship program was associated with the government. Hope this helps!
Janet, it can be very difficult to trace living people. In Australia, records are generally only made when people interact with the government. Other than that, you might try searching Australian telephone directories like the White Pages. Their website has a search tool that can provide contact details of many people living in Australia. For evidence of births, deaths and marriages, you will need to contact the relevant registry in an Australia state. Good luck with your research.
Maree, residency and citizenship laws have changed several times since 1949, when the Nationality and Citizenship Act came into effect. Long-term residency in Australia does not necessarily mean that a person is an Australian citizen. You'll find more information at this government-run citizenship website, or by contacting the Department of Immigration and Citizenship.
Potentially yes, but to be sure, you will need to contact the National Archives of Australia for official records.
Hi Ian,You can attempt to locate your friends by either searching the White Pages or contacting the Australian Electoral Commision. Good luck!
This question was answered above on the 6th December 2011, the 7th July 2010 and the 3rd March 2010. Hope this helps!
Hi Gay, the answer to your question can be found in comment that was published on the 03 Sep 2010 at 14:38, which states that "residency and citizenship laws have changed several times since 1949, when the Nationality and Citizenship Act came into effect. Long-term residency in Australia does not necessarily mean that a person is an Australian citizen. You'll find more information at this government-run citizenship website, or by contacting the Department of Immigration and Citizenship, we hope this assists.
Louise, all government documents connected to immigration have been managed by the National Archives of Australia since 1923. You can use their website to conduct research with these documents, including requesting copies.
The only thing we can suggest is that you contact the National Archives of Australia or the Department of Immigration and Citizenship with your documentation to see if they are able to sort it out.
Hi Les, we had a search for this and couldn't come up with much, so we contacted the helpful librarians at State Library of Victoria via their live chat service (what a useful resource!). They identified three potential titles for you:
1. Horizons ahead. (Text in English, German, Dutch, Italian and Polish.) September _PHONE_.2. New settler, incorporating The new settler in WA vol.1 no.9, Feb 1951-vol.11, no.120, May 1960. (Earlier title The new settler in Western Australia, vol.1 no.1, June 1950-vol.1 no.8, Jan 1951).3. Migrants' magazine and Aussiana news, vol.1 1950-vol.2 1951
All these publications are held by the State Library of WA and the National Library of Australia, except for the third, which is only held by the State Library of WA. Unfortunately SLV do not have any holdings, so it's not possible to check these locally.
Hi Jennifer - Twentieth century immigration records, including information and documentation relating to the 10 Pound Pom Scheme, are held by the National Archives of Australia (NAA). You can search for such documents using the NAA's online RecordSearch tool and request copies of certain items. You can also contact the NAA directly for further assistance in searching for your own and your family's records.
Unfortunately, this is outside our area of expertise. You will need to contact the Australian Government Department of Immigration and Citizenship to clarify your mother's situation. You may like to visit their citizenship website as well.
The Brooklyn Hostel was at 431 Francis Street Brooklyn, whereas the Altona Hostel was off Kororoit Creek Road, Altona, where what is now known as 'Technopark' currently is. More information about the Brooklyn Hostel can be found by typing 'Brooklyn Migrant Hostel' in the search box on this Heritage Victoria webpage.
Keith's record will be with the NAA. The reason you can't find them is that only about 20% of records have been put online. You will need to contact the NAA directly to ask them to locate the record. Please be aware that there will be a cost involved for this service.
For more information on this subject, please visit our British subjects and Australian citizenship webpage. Though you will be best served by contacting the Australian Government Department of Immigration and Citizenship.
Australian citizenship was created through the Nationality and Citizenship Act 1948, and came into effect 26 January 1949, prior to 1949, Australians could only hold the status of British subjects. Unless you applied for Australian Citizenship you are still a British subject. If you are unsure of what documentation was filled out on your behalf as a child you can obtain records from the National Archives of Australia. You may also be interested in reading the following history of Australian Citizenship. If you wish to apply for citizenship you will need to contact the Department of Immigration.
Twentieth century immigration records, including information and documentation relating to the 10 Pound Pom Scheme, are held by the National Archives of Australia (NAA). You can search for such documents using the NAA's online RecordSearch tool and request copies of certain items. You can also contact the National Archives of Australia through their Making Australia Home project for further assistance in searching for your own and your family's records.
Had a great time at the museum a few weekends ago. As I wrote on my blog post, I feel like its real attraction is in the way the museum is able to tell stories....
To read the latest tweets from _USER_
Follow Immigration Museum on
Hi this is a great website I just can't seem to find some history things.

source: HuggingFaceFW/fineweb-edu


text:
2005/7/2, Juri Linkov <juri@jurt...>:
> > The diff-mode colors on a dark-background terminal (gnome-terminal or
> > generic xterm) are:
> > These colors work very well and should not be changed
> Bold text is unreadable on terminals with small fonts.
I have not found this to be the case.
> The changed lines is the base text which users mostly read in the
> diff-mode, so it makes sense not to highlight it at all and to use the
> default foreground. Most other modes do the same and don't highlight
> normal text. As for the context lines, to distinguish them from the
> changed lines, dark-background terminals could use yellow-on-black,
> and light-background terminals - maybe, green.
Indeed that's just stupid. Making the context lines green or whatever
would make them stand out over the changed lines, which is _precisely
the opposite_ of what we want to do.
On a high-color display (like X11, usually), we can dim the context
lines, and so achieve our goal of making the changed lines stand out
while keeping them in the normal default face; the latter point,
however, is _not_ the main goal! On a low-color terminal, we often
simply don't have the flexibility to do those two things at the same
time; in such a case, we must discard the less important guideline,
and pick something which at least makes the important lines stand out.
The current dark-background colors achieve this, and should not be

source: m-a-p/FineFineWeb


text: $GTCH Infinia is a data and voice communication system that is operating via HF (High Frequency) radio waves, the system communicates through an ionospheric propagation environment to reach very long distances. The main challenge that the system resolves is communication over skip zones, also called dead zones. The Infinia system includes proprietary dead-zone solution coverage which is based on a geo-referenced system. This system and method ensure continuous communication at all locations and throughout ionospheric conditions. The company has started to evaluate potential commercial applications for the system, among them are remote locations telemedicine, military communication, with emergency response and internet services.


text:
(Vienna, 26 August 2016) Ragweed (also known as ambrosia or bursage) has already started to blossom in the countries to the south east of Austria. South-easterly winds have carried the ragweed pollen released in these countries so that there is already a resultant pollen load in Austria. This week, ragweed has now started to blossom locally, causing a rapid rise in the pollen count. The first wave of very high concentrations of ragweed pollen is now imminent. Experts from the Austrian Pollen Monitoring Service at MedUni Vienna are advising allergy sufferers to keep an eye on pollen count forecasts.
Approximately 25 – 30% of pollen allergy sufferers in eastern Austria react to ragweed. Mugwort pollen can aggravate symptoms, since both plants belong to the aster family and there can be a cross-reaction. Similarly, there can be a cross-reaction with other plants in the same family, such as chamomile, arnica, daisies, chrysanthemums and sunflowers. Affected pollen allergy sufferers might therefore experience a particularly difficult weed pollen season: mugwort flowered exceptionally well and this year overlapped with the start of ragweed flowering. The good news is: the main wave of mugwort pollen is already over and airborne concentrations are now starting to decline.
Hot and humid weather provided ideal growing conditions for ragweed
The ragweed pollen count is the result of ragweed pollen carried long distances from other countries, as well as the flowering of local plants. "The hot and humid weather in summer provided ideal growing conditions for ragweed," explains Katharina Bastl of the Austrian Pollen Monitoring Service, "and so, this year, we will once again see a higher pollen count in eastern Austria compared with the previous year."
The areas affected by ragweed pollen are the south-east of Austria and the Federal States of Burgenland, Vienna, Lower Austria, Styria, Carinthia and parts of Upper Austria.
High counts from August to October
On average, the ragweed pollen season starts in the affected regions of Austria in the middle of August and ends in mid October. Pollen Monitoring Service experts consider this year's ragweed pollen season to be above average, because the local pollen count will be higher, due to favourable growing conditions, and also because it overlaps with the end of the mugwort pollen season. However, other determining factors are the extent and frequency of long-distance transport, which will contribute to the pollen counts in August and September.
It is particularly important during the ragweed pollen season to make use of the Austrian Pollen Monitoring Service forecasts provided by MedUni Vienna, so as to be optimally prepared for pollen carried in from distant sources.
It is important to monitor the spread of ragweed throughout Europe. Experience has shown that pollen counts are particularly high in Eastern Europe (map of Europe at _URL_).
This season, in collaboration with MeteoSwiss, the COSMO-ART forecasting model is now specifically tailored to Austria.


Georgians >
Georgian Inventions
There were many important inventions made and discovered during the Georgian period:
 - Abraham Darby invented cast iron which could flow into moulds when heated. This made it much easier and cheaper to make complex metal shapes like iron rails for steam trains to run on or large structures like the famous Iron Bridge crossing the River Severn in Shropshire.
Iron Bridge
 - Sir Humphry Davy invented the Davy lamp in 1815. It had a fine metal mesh which would protect the flame inside from causing an explosion when put near dangerous gases like methane found in coal mines.
 - The first power loom was built by Edmumd Carwright in 1785. It allowed textile making to be done much faster than if a human had done the same work and was soon used in over 250,000 machines in England.
Mule spinning machine at Quarry Bank Mill
 - Josiah Wedgwood was born in Stoke-on-Trent and became famous for the industrialisation (making things in factories, not workshops) of pottery
1780 Wedgewood dish (UBC)
 - Robert Peel (born in Bury) established the Metropolitan Police Force for London in 1829. Although unpopular at first, the 1,000 constables (nicknamed 'Bobbies') proved very successful in cutting crime and by 1857 all citities in the UK were obliged to form their own police forces.
Peel statue Bury - - 186004
 - Michael Faraday made the first electric motor in 1821. It is thanks to his many experiments with electric power that electricity became so usable in techology.
 - In 1759, John Harrison devised the first ever clock to keep the time exactly. From Greenwich Mean Time, sailors could then determine how many hours they were before or after that time and thus able to determine their longitude (degrees East to West position) on the globe.
Harrison's Chronometer H5
By the end of the Georgian period, factories, blast-furnaces and mines were taking over large areas of the British landscape.
Industrial cities like Birmingham (nicknamed 'the Black Country') soon became incredibly smoky and contributed to quite an unhealthy environment to work in.
Black Country – Borinage


text:
There are two situations:
- Your document and XPage are in the same database;
- Your Xpages are in a different database to your documents.
2. The ability to separate the code from the data is a strength of XPages. But it is then no longer possible to set the property on a document's form when the XPage is not in the same database. We need to send a link using mime, as you would have done in earlier versions of Notes. Here is the SSJS version:
var body = memo.createMIMEEntity();
var stream = session.createStream();
var info = ;
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0);
In this case we simply want the email recipient to see a message about their role in the workflow, followed by a hotlink (Open Link) to open the appropriate document:
var info = msg + "Open Link";
Application scope variables define the url of the server where the XPage is located and another to define the common name of the server where the database that contains the document is located. You can see that the link is to the XPage, xProposal.xsp, with the parameter, databaseName, defining the server and database, then the documentId parameter defining the document's universal id. The action parameter determines whether to open in read mode or edit mode.
You do need to apply Fixpack 2 to your 8.5.2 Domino servers if you wish to store your XPages in a datatbase that is in a different directory to the databases containing your documents and then be able to access this from the Notes client.

source: openbmb/Ultra-FineWeb


What Does The Name Erasmus Mean?
1 Answers
Yooti Bhansali Profile
Yooti Bhansali answered
The name 'Erasmus' is a name for a male originating from the Greek word 'erasmios' which means 'beloved'.
Saint Erasmus was a martyr from the third century who is regarded as the patron saint by sailors.
Erasmus was also the name of a Dutch scholar, humanist and theologian who was prominent during the Renaissance period. His writing was in pure Latin form. Although he was a Roman Catholic all his life, he was a stern critic of what he regarded as the excesses of the Roman Catholic Church. He made new Latin as well as Greek editions of the New Testament.
Martin Luther's movement started in the year after the New Testament was published and greatly tested the strength of Erasmus's character. Erasmus admired Luther, but was averse to partisanship. His hesitation to support Luther led Luther that Erasmus was a coward or purposeless.
Answer Question


May 09
Note:Before you setup internet for your D-Link DIR-450, please make sure you are able to connect to the internet with the PCMIA(EVDO) card in your laptop/desktop, without the D-Link DIR-450 being in the configuration.
Connect to your Network
Note: Ensure that the power to your DIR-450 mobile router is not connected before performing the installation steps below:
32-bit PCMCIA(EVDO)card connection
Step 1: Attach the antenna to the router.Once secured, position the antenna upward in its connecting joint. This will ensure optimal reception.
Step 2: Insert your wireless 32-bit PCMCIA (EVDO) card into the internet slot on the back of the router.
Step 3: Insert the ethernet cable into the LAN port 1 on the back panel of the DIR-450 mobile router, and an available ethernet port on the network adapter, in the computer you will use to configure the unit.
Step 4: Connect the power adapter to the receptor on the back panel of your D-Link DIR-450 Mobile Router. Then plug the other end of the power adapter into a wall outlet or power strip.
The Power LED will turn ON to indicate power has been applied.
Other LEDs will flash ON and OFF as the DIR-450 Mobile Router performs initialization and internet connection processes. This will take a few minutes.
When complete, the following LEDs will illuminate Blue: Power, Status, Internet, WLAN and LAN port 1 (or your specific LAN port connection)
Step 5: Open your web browser and enter the IP address of your DIR-450 Mobile Router ( Enter username (admin) and your password (blank by default).
Note: You will need to set a static ip address on the computer, on the same subnet, for example,
Step 6: Under Setup, click Internet on the left. Select Manual Configure from the bottom of the page.
Step 7: Under WWAN, select your PCMCIA card from the drop down menu.
Step 8: Enter your WWAN Username, Password, Server Name, and Dial Number.
Step 9: Click Save Settings to save your settings. Once the router has finished rebooting, click Continue.
Please allow 1-2 minutes to connect.
Tags:,,,


Vishuci, Viṣūci, Visūcī: 7 definitions
The Sanskrit term Viṣūci can be transliterated into English as Visuci or Vishuci, using the IAST transliteration scheme (?).
Alternative spellings of this word include Vishuchi.
In Hinduism
Purana and Itihasa (epic history)
Source: Cologne Digital Sanskrit Dictionaries: The Purana Index
Viṣūci (विषूचि).—Queen of Viraja, and mother of a hundred sons and one daughter.1 Mother of Viṣvaksena.2
 - 1) Bhāgavata-purāṇa V. 15. 15.
 - 2) Ib. VIII. 13. 23.
Purana book cover
context information
Discover the meaning of vishuci or visuci in the context of Purana from relevant books on Exotic India
Rasashastra (chemistry and alchemy)
Source: Wisdom Library: Rasa-śāstra
Visūcī (विसूची) refers to "cholera" and is caused by āmājīrṇa type of indigestion (ajīrṇa), as defined in the fourth volume of the Rasajalanidhi (chapter 4).—Accordingly, "in visūcī disease, vāyu (wind), vehementhy in excess, due to indigestion, gives rise to pricking sensation all over the body. Those who are acquainted with the principles of hygiene and medicine and follow them strictly are rarely attacked with this disease (except by infection). The victims of this disease are generally those persons who cannot control their desire and are greedy.".
Symptoms of visūcī:—"loss of consciousness, severe movement of the bowels, vomiting, thirst, pain resembling colic in the abdomen, giddiness, cramps in the hands and the feet, yawning, sensation of heat, discolouration, shivering, and pain in the breast and the head".
Rasashastra book cover
context information
Discover the meaning of vishuci or visuci in the context of Rasashastra from relevant books on Exotic India
Languages of India and abroad
Sanskrit dictionary
Source: DDSA: The practical Sanskrit-English dictionary
Viṣūci (विषूचि).—Mind (manas); अन्तःपुरं च हृदयं विषूचिर्मन उच्यते (antaḥpuraṃ ca hṛdayaṃ viṣūcirmana ucyate) Bhāg.4.29.16.
Derivable forms: viṣūciḥ (विषूचिः).
--- OR ---
Visūcī (विसूची).—Cholera; सूचीभिरिव गात्राणि तुदन् संतिष्ठतेऽनिलः । यस्याजीर्णेन सा वैद्यैर्विसूचीति निगद्यते (sūcībhiriva gātrāṇi tudan saṃtiṣṭhate'nilaḥ | yasyājīrṇena sā vaidyairvisūcīti nigadyate) Bhāva P.
See also (synonyms): visūcikā.
Source: Cologne Digital Sanskrit Dictionaries: Cappeller Sanskrit-English Dictionary
Viṣūcī (विषूची).—v. viṣvañc.
1) Viṣūci (विषूचि):—[from viṣu] m. or f. = manas, [Bhāgavata-purāṇa]
2) Viṣūcī (विषूची):—[from viṣu] a f. See under viṣvañc, [column]2.
3) [from viṣvañc > viṣu] b f. the cholera (= viṣūcikā q.v.), [Suśruta; Śārṅgadhara-saṃhitā]
4) Visūcī (विसूची):—[=vi-sūcī] [from vi-sūcana] [wrong reading] for vi-ṣ.
Source: Cologne Digital Sanskrit Dictionaries: Yates Sanskrit-English Dictionary
Viṣuci (विषुचि):—(ciḥ) 2. m. The mind.
[Sanskrit to German] (Deutsch Wörterbuch)
Viṣūci (विषूचि):—= viṣūcīna Bez. des überall hindringenden Manas [Bhāgavatapurāṇa 4, 29, 16] (ed. Bomb. fälschlich viṣūcīrmanaḥ).
--- OR ---
Viṣūcī (विषूची):—s. viṣvañc.
context information
Discover the meaning of vishuci or visuci in the context of Sanskrit from relevant books on Exotic India
See also (Relevant definitions)
Relevant text
Like what you read? Consider supporting this website:


Remapping Connections in a DSS Instance
Often a project is initially created on a DSS instance that uses a connection available only on that instance. If you later want to import the same project into a second DSS instance, you may have to remap the connection if an identical connection name is not found on the second DSS instance.
This article will show how to remap a connection in Dataiku DSS. For illustration, we'll remap a PostgreSQL connection defined in the import archive of a project to an existing connection on a different DSS instance.
Technical Requirements
Note
While we'll be using a PostgreSQL connection, the process described here will be very similar for other database connections.
Import an SQL-based Project
To import a project that uses an SQL connection, follow the general steps for importing a project into Dataiku DSS. From the Dataiku homepage, click +New Project and select Import project from the list.
Alternatively, you could create a project from one of the existing SQL-based tutorials in DSS. For example, from the Dataiku homepage, click +New Project and select DSS Tutorials from the list. Choose Advanced Designer from the left, and select Plugin Store (SQL-based Tutorial).
No Identical Connection Name in the Second Instance
Suppose the project to be imported was created on a first instance having a connection called postgresql to a PostgreSQL database. When importing into a second DSS instance that doesn't have a connection with the same name (postgresql), Dataiku DSS will display errors alerting you to a missing connection.
../../../../_images/project_remap_errors.png
To resolve these errors, simply follow these steps to remap the connection name postgresql to an existing connection in the second Dataiku DSS instance.
 - Click Add Remapping in the "Connection remapping section."
 - Remap postgresql to an existing PostgreSQL connection on your instance. In the following screenshot, this connection is named "PostgreSQL_tshirt."
../../../../_images/project_remap_connection.png
Once you've remapped the connection and addressed any other errors or warnings, Dataiku DSS will finish importing the project.
Identical Connection Name in the Second Instance
Suppose the second DSS instance has a PostgreSQL connection with the same name postgresql as the connection on the first instance. For example, this could happen if your DSS design node has a connection to a design database, and the automation node has a connection, with the same name, to a production database. In this example, you would not have to remap connection names.
However, if the second DSS instance must be connected to the same database as the first instance (where the project was created), and the connection names are identical, be sure to remap your connection in the second instance to a different one.
In general, you should avoid connecting the second DSS instance to the same database used in the first instance. Otherwise, you can encounter an undesirable situation where both the original project (in the first DSS instance) and the imported project (in the second DSS instance) will write to the same SQL tables. Therefore, computing a dataset in one instance would overwrite the identically-named dataset in the other instance because both datasets read from the same table. For more information, see Export/Import Project Options.


First time a vertebrate has been seen to evade predators by smelling like its habitat
Tane Sinclair-Taylor
The filefish appears to have come up with a clever way to elude its predators
A reef fish can hide from predators by adopting the smell of the coral it eats, according to researchers in Australia. This is the first time that chemical crypsis – the ability of an organism to avoid detection by using odour-based camouflage – has been observed in vertebrates.
It has been known for centuries that animals can visually blend into their environment to hide from predators. But given that vertebrates rely on more than just their sight to find prey, researchers have questioned whether other types of camouflage exist.
'With the importance of smell for a lot of animals, it makes sense to be chemically camouflaged but there's very little evidence for it,' says study author Rohan Brooker formerly from James Cook University, Australia. He goes on to explain that until now caterpillars were the only creature discovered that hid themselves from predators in this way. The caterpillars eat their plant habitat, assume their smell by absorbing certain chemicals in the plant, and become invisible to predatory ants. 'A [coral-eating fish and coral] system is analogous to the chemical system of the caterpillar,' explains Brooker. 'So we thought maybe they were doing a similar sort of thing.'
Brooker and his colleagues looked at the harlequin filefish, a reef-dweller that looks like a coral branch. They wanted to find out if the fish could replicate a reef's smell through its coral-based diet and whether predators could sniff them out.
The team placed a piece of coral and the filefish at opposite ends of a water tank. A coral-dwelling crab was placed in the centre of the tank and 'blind-folded' so it was unable to see which end the coral was at and had to rely on other senses such as smell. The team found that the crab was just as likely to move towards the fish as the coral. '[It] suggests that the smell was a pretty good match,' says Brooker. 'A lot of them did get confused.'
The group carried out a similar test but replaced the crab with cod, a filefish predator, to see if the coral fish could fool the cod's acute sense of smell. They found that the cod were less interested in the filefish if they were close to coral they had fed on. If the filefish was close to a coral that was a different species to the one it had eaten or if there was no coral in the tank, the cod became much more active. The team state this is the first evidence of chemical camouflage in a vertebrate but they do not yet know how it achieves this.
Martin Stevens, an ecologist at the University of Exeter, UK, believes the study could have a wide impact on the wildlife community. 'I think it could be very important in stimulating work looking at chemical camouflage,' he tells Chemistry World. But Stevens adds that more research will need to be carried out on this system before it can be translated to other vertebrates and mammals. 'It's potentially a really exciting and important study,' he says. 'The question, I think next, is how does [this chemical camouflage] work and how widespread is it.'


My hair turned green after bleaching, how can I fix it?
how to turn it to ashy
First of all, when you say your hair turned green, what do you mean? Choose an option.
 1. I mean, greenish tinted.
 2. I mean completely unnatural green hair.
If you chose the first option, you can continue reading, because I'll help you solve it.
If you chose the second option, it's best to ask a professional.
 - In that case, you should neutralize the green by applying a mahogany blonde hair dye to your hair. In a few moments, I'll tell you how to choose the right hair color.
 - What you should never do is bleach your hair again immediately, as this will only weaken it and severely damage it.
YOU MAY ALSO BE INTERESTED: How often should you wash your bleached hair?
When you bleach your hair, depending on the base tone from which you start, different tones can always appear
 - If you bleach brown hair, you will most likely see red or orange shades or tones.
 - If you bleach dark blond hair, yellow highlights are likely to appear.
 - And if you bleach an ashy blonde hair, you may get those greenish tones, which are so annoying right now.
Do you know why this is happening?
Because hair doesn't have a uniform color. In addition to that tone that you can see at first glance, there are underlying pigments, which appear after bleaching.
 So if you've been coloring your hair with an ash dye and haven't applied the bleach mixture evenly, haven't used the right amount of peroxide, or haven't left the bleach mixture on long enough, you can get those green tones.
But don't worry. Everything has a solution. So stay here, because I'll tell you:
 - Why ash-blonde hair stays green after bleaching
 - How to choose the right color to remove green tones after bleaching
Why hair turns green after bleaching
three shades
As I told you initially, the tone resulting from the bleaching of an ashy color is usually green. Now I want to go a little deeper into this subject, so you really understand how the bleaching mixture works on hair.
The bleaching mixture's main purpose is to remove the pigments that are impregnated in the hair fiber.
Do you know what the underlying color is in the ashy tones?
 - It's the color blue.
 - That means that any ashy tone will have blue pigments in its composition.
 - When you apply the bleaching mixture, your hair will lighten to a yellow tone. The ashy tone, which has blue pigments, plus the color of your yellow hair, results in green color.
 - In other words, when you apply the bleach, the blue pigment wears away, leaving green tones.
 That's why bleaching is a very complex chemical process, and it's very important to consider the background of the hair. It's not the same to bleach a previously colored hair as it is to bleach natural hair.
Many women come to my salon with real rainbows in their hair because they have no experience in this chemical process. They don't know about exposure times or how to neutralize unwanted tones. They don't even research whether their hair can be bleached or not.
But also, in some cases, they make an even more serious mistake. Can you imagine what that might be?
They bleach their hair twice! Yes, believe it or not.
 They bleach their hair again, thinking that the green will disappear. But it doesn't. Not only does the green tint not disappear, but also they damage their hair to the point of almost burning it.
So, if you can't remove the green bleaching your hair, what should you do?
You must neutralize the green tones.
How do you neutralize them? With the opposite color.
All tones have an opposite color that "cancels" them out.
For example:
 - Green is neutralized by red
 - Orange is neutralized by purple
 - And yellow is neutralized by blue
 In this case, to neutralize the green, you need a dye with red pigments.
Don't panic! Your hair won't turn red, but you must choose a dye that contains red tones. To identify them is very easy. Now you see, all dyes have a number that indicates the tone.
For example, 1.0 is black, 10.0 is platinum, and 5.0 is medium brown.
But you may have noticed that some dyes have a number followed by a dot. That number is the tone that has a numerical scale as well:
 - Ash (blue)
 - Iridescent/pearly (violet mulberry)
 - Gold (yellow)
 - Copper (orange)
 - Mahogany (red)
For example, 4.3 is golden brown, 6.1 is light ash brown, and 9.5 is very light mahogany blonde.
Now, if you bleached your hair and it resulted in having some green shades, you need a dye with mahogany tones, which are identified by number 5.
This way, the color's highlights will neutralize your hair's green tones.
How to choose the right hair color tone to neutralize unwanted greens
It's time to choose the right tone of hair color to removing greenish tint from your hair.
The first thing to consider is the primary tone that your hair has reached with the bleaching. It can be:
 - 7 dark blonde
 - 8 blonde
 - 9 light blonde
 - 10 extra light blonde
Once you identify the tone, the rest is straightforward.
If you can't identify the tone easily, you can compare your hair with the photo in the coloring kit or ask the beauty shop for advice.
If you already know it, just look for a tone with red highlights (mahogany):
 - 7.5 dark blonde mahogany
 - 8.5 mahogany blonde
 - 9.5 light blonde mahogany
 - 10.5 extra light blond mahogany
Once you have the right color, you only have to proceed to the application:
 - Comb your hair thoroughly.
 - Prepare the revealing cream and dye mixture that comes in the kit.
 - Apply the coloring mixture starting with the lengths and ends, and then continue with the roots and growth
 - Respect the exposure time, approximately 40 minutes. Remember that each manufacturer has its own recommendations. So, read them carefully.
 - Rinse your hair and …
The green will be gone!
If your hair turns green after bleaching, the bleach mixture most likely has not removed the underlying tones in the hair cuticle.
Therefore, you should apply a color with mahogany highlights, always respecting your hair's base tone. If your base tone is an 8, for example, you should apply an 8.5, mahogany blonde.
What you should never do is bleach your hair again because that way, you risk damaging it permanently.
What tone of blonde will you use to neutralize the green?
Deja Tu Comentario


Integer pairs generator
World's simplest integer tool
This online utility generates pairs of integers and prints them as two-dimensional xy coordinates in the output. You can independently specify the range of integers for the first and second coordinates and you can create as many integer pairs as you need. The output format of pairs can be customized as well by changing the separator character between the coordinates and the brackets around the pairs. Created by math nerds from team Browserling.
Look what we made! Browserling
Check out our project Browserling – your personal cloud browser.
fullscreen fullscreen_exit
Integer Pairs Range
Range for the 1st coordinate.
Range start.
Range end.
Range for the 2nd coordinate.
Range start.
Range end.
Count and Separator
Number of pairs to print.
Pair separator symbol.
Open and Close Symbols
Open-pair symbol (left side).
Close-pair symbol (right side).
Point separator symbol (middle).
Integer pairs generator tool What is a integer pairs generator?
With this browser-based app, you can create random pairs of Cartesian coordinates. Each pair of integers can be viewed as a point (x, y) in 2D space, where x is the abscissa and y is the ordinate of the point. For each coordinate, you can set the range of allowed integer values by entering the range start and end values in the options. The first coordinate will be randomly selected from the first integer range, and the second coordinate will be randomly selected from the second range. You can generate any number of pairs at once. The number of pairs in the output can be controlled via the count option. The standard coordinate point format uses the round brackets around and the comma between coordinates, but you can replace these symbols with curly brackets {x, y}, square brackets, [x, y], or no brackets at all x, y. The comma can be changed, too. You can set it to a semicolon (x; y), a colon (x: y), or any other character. You can also change the separator of output pairs and print them in a line by putting the space or comma symbols after each pair. Cartesianabulous!
Integer pairs generator examples Click to use
Integer Vectors
In this example, we generate ten random integer vectors using only digits zero to nine. We set the first range to be from 0 to 4, which means that the left coordinate has five possible integers: 0, 1, 2, 3, 4. We set the second range to be from 5 to 9, which means that the right coordinate also has five possible values: 5, 6, 7, 8, 9. This way, both coordinates are in the first quadrant of the orthogonal coordinate system and the first coordinate is always less than the second one.
(2, 6) (1, 7) (0, 8) (1, 5) (1, 7) (3, 8) (1, 6) (2, 7) (3, 7) (3, 7)
Required options
These options will be used automatically if you select this example.
Range start.
Range end.
Range start.
Range end.
Number of pairs to print.
Pair separator symbol.
Open-pair symbol (left side).
Close-pair symbol (right side).
Point separator symbol (middle).
Coordinates of Different Signs
In this example, we change the parentheses of integer points to curly brackets and generate twenty points. We separate the points by the space character so that they are printed on a single line and separate the integers by the semicolon. We use negative integers from -100 to -1 for the abscissa and positive integers from 1 to 100 for the ordinate. The origin point {0; 0} never appears in the list as neither of the ranges includes 0.
{-34; 5} {-24; 21} {-85; 32} {-28; 43} {-6; 83} {-55; 42} {-46; 50} {-1; 64} {-32; 20} {-7; 31} {-44; 43} {-57; 55} {-80; 86} {-42; 9} {-19; 66} {-74; 84} {-21; 58} {-31; 6} {-91; 99} {-39; 85}
Required options
These options will be used automatically if you select this example.
Range start.
Range end.
Range start.
Range end.
Number of pairs to print.
Pair separator symbol.
Open-pair symbol (left side).
Close-pair symbol (right side).
Point separator symbol (middle).
Binary Chain
This example covers the unit square and uses the same range for both coordinates. The unit square is the region from 0 to 1 so both coordinates are from this region. The output format is configured to remove the separator character between coordinates and sets the separator symbol between pairs to a dash. The parentheses are replaced with angle brackets and this makes the output look like a long binary chain.
<10>-<01>-<00>-<01>-<10>-<01>-<01>-<10>-<00>-<11>-<01>-<00>-<10>-<00>-<10>
Required options
These options will be used automatically if you select this example.
Range start.
Range end.
Range start.
Range end.
Number of pairs to print.
Pair separator symbol.
Open-pair symbol (left side).
Close-pair symbol (right side).
Point separator symbol (middle).
Pro tips Master online integer tools
You can pass options to this tool using their codes as query arguments and it will automatically compute output. To get the code of an option, just hover over its icon. Here's how to type it in your browser's address bar. Click to try!
_URL_
All integer tools
Didn't find the tool you were looking for? Let us know what tool we are missing and we'll build it!
Quickly rewrite integer digits using pretty Unicode glyphs.
Quickly generate random two-dimensional integer points.
Quickly generate random three-dimensional integer points.
Quickly print a list of integers that are palindromes.
Quickly convert the given integer to a palindromic integer.
Quickly find all integers in the given text or string.
Quickly make integer digits go in a triangle wave.
Quickly unleash the destructive force of Zalgo on integers.
Quickly find two or more integers that add up to the given integer.
Quickly find several integers that multiply up to the given integer.
Quickly randomize the given sequence of integers.
Quickly mix the order of digits in an integer.
Quickly put integers in increasing or decreasing order.
Quickly sort the individual digits of an integer.
Quickly increase all integers by a certain amount.
Quickly increase individual digits by a certain amount.
Quickly decrease all integers by a certain amount.
Quickly decrease individual digits by a certain amount.
Quickly randomly select an integer from a list of integers.
Quickly create groups from the digits of an integer.
Quickly write integer digits backwards.
Quickly remove one or more digits from an integer.
Quickly replace one or more digits in an integer.
Quickly drop digits from an integer and make it shorter.
Quickly add the thousands separator to integers.
Quickly remove the thousands separator from integers.
Quickly find the largest integer in a list of integers.
Quickly find the smallest integer in a list of integers.
Quickly find the total sum of a bunch of integers.
Quickly find the sum of all the digits in an integer.
Quickly find the total product of a bunch of integers.
Quickly find the product of all the digits in an integer.
Quickly calculate the partial sum of a bunch of integers.
Quickly calculate the partial product of a bunch of integers.
Quickly flip the sign of one or more integers.
Quickly split an integer into chunks of a given length.
Quickly merge partial integers together to form a larger integer.
Quickly round integers up or down to the required precision.
Quickly convert integers to a downloadable picture.
Quickly generate a list of von Neumann ordinals.
Quickly generate a list of Zermelo ordinals.
Quickly generate an ordered sequence of integers.
Quickly generate an ordered list of even integers.
Quickly generate an ordered list of odd integers.
Quickly write an integer spelling in words.
Quickly convert spelled integers to regular integers with digits.
Quickly generate an array of integers for programming.
Quickly find the number of occurrences of digits in integers.
Coming soon These integer tools are on the way
Draw von Neumann Universe
Create a drawing that visualizes von Neumann hierarchy of sets.
Create Integer n-Tuples
Generate a list of tuples of integers with n elements.
Convert Integers to Unary Base
Quickly convert integers to base one.
Convert Unary Base to Integers
Quickly convert base one to integers.
Convert Integers to Binary Base
Quickly convert integers to base two.
Convert Binary Base to Integers
Quickly convert base two to integers.
Convert Integers to Octal Base
Quickly convert integers to base eight.
Convert Octal Base to Integers
Quickly convert base eight to integers.
Convert Integers to Hex Base
Quickly convert integers to base sixteen.
Convert Hex Base to Integers
Quickly convert base sixteen to integers.
Convert Integers to Base64
Quickly encode integers to base-64.
Convert Base64 to Integers
Quickly decode base-64 to integers.
Change Integer Base
Quickly convert integers to a custom base.
Convert Integers to HTML Entities
Quickly encode integers to HTML encoding.
Convert HTML Entities to Integers
Quickly decode HTML entities to integers.
Create Random Integers
Generate a list of random integers.
Check if an Integer is Symmetric
Check if the given integers


You are here
Using dynamic queries in the Content Presenter
In the past I already talked a lot about the Content Presenter. It is very powerful to display content in all sorts of way. It can interact with Site Studio elements and it is easy to use by using its wizard.
One of the hidden gems of the content presenter is not the wizard but the plain old input parameters you would expect from a taskflow. The wizard everybody uses to configure the content presenter is just a facade to hide the complexity of those input parameters. In most cases this is sufficient but when you want to do more complex things, you would soon bump into issues by using the wizard.
Suppose that you want to display a list of news items from different categories and display a filter so the user can select their preferred category. There is no way of doing this by using the normal way. You would need to introduce a parameter in the query of the content presenter.
In this example I will explain how it is done. You can download the example application from here.
In order to make this work, you have to add a custom metadata field to UCM: xCategory. This field will be used in our query to filter on the category the user wants.
In the application you can find a news.jspx page which has 3 buttons. One that will display all the news items, one for the sport items and one for the normal news items:
 1. <af:commandButton text="All" id="cmdAll"
 2. partialSubmit="true">
 3. <af:setActionListener from="#{true}"
 4. to="#{pageFlowScope.newsBean.news}"/>
 5. <af:setActionListener from="#{true}"
 6. to="#{pageFlowScope.newsBean.sport}"/>
 7. </af:commandButton>
 8. <af:commandButton text="Sport" id="cmdSport"
 9. partialSubmit="true">
 10. <af:setActionListener from="#{true}"
 11. to="#{pageFlowScope.newsBean.sport}"/>
 12. <af:setActionListener from="#{false}"
 13. to="#{pageFlowScope.newsBean.news}"/>
 14. </af:commandButton>
 15. <af:commandButton text="News" id="cmdNews"
 16. partialSubmit="true">
 17. <af:setActionListener from="#{true}"
 18. to="#{pageFlowScope.newsBean.news}"/>
 19. <af:setActionListener from="#{false}"
 20. to="#{pageFlowScope.newsBean.sport}"/>
 21. </af:commandButton>
As you can see, these buttons don't have a direct actionListener but they use the setActionListener to invoke a setter from a property of my managed bean. By doing this, we know which items to display and we can build the query.
The query is a CMIS query. CMIS resembles to a normal SQL so the syntax should be familiar if you know SQL. I explained a little bit more about CMIS in another post
The dynamic query will also be build in the NewsBean:
 1. public String getNewsQuery(){
 2. String query = "SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xCategory in (\'dummy\' ";
 3. if(news){
 4. query += ", \'news\' ";
 5. }
 6. if(sport){
 7. query += ", \'sport\'";
 8. }
 9. query += ")";
 10. System.out.println("new query: " + query);
 11. return query;
 12. }
As you can see, depending on the state of the news and sport boolean, we add them to the query.
The next thing is to provide this query to the content presenter.
When you take a look at the bindings of the news.jspx page, you will see that I use following values for the content presenter input parameters:
 - datasourceType: ${'dsTypeQueryExpression'} which tells the content presenter that the datasource is a CMIS query.
 - datasource: ${pageFlowScope.newsBean.newsQuery} which is a reference to the getNewsQuery method that will generate the query
I'll come back to the tempalteView in a minute...
Also notice that the Refresh attribute of the content presenter is set to ifNeeded. This is required for the taskflow to refresh when you press one of the 3 buttons.
When you run this without specifying a templateView, the content presenter will use the default one. When you are using a CMIS query in the datasource, the content presenter will know that he has to use a multiple items template because the query can return multiple items. This will result that you will get a list of links from all the items returning in the query:
Let's say that all of these items are wiki documents than you want to display the actual content instead of a link. This can be easily done by creating a content presenter template for multiple items that uses the default view for single items:
 1. <dt:contentListTemplateDef var="nodes">
 2. <af:panelGroupLayout id="pnlContent" layout="vertical">
 3. <af:iterator id="it" var="node" value="#{nodes}">
 4. <dt:contentTemplate node="#{node}"
 5. nodesHint="#{nodes}" id="content"/>
 6. <af:spacer height="10px" id="spC"/>
 7. </af:iterator>
 8. </af:panelGroupLayout>
 9. </dt:contentListTemplateDef>
As you can see, nothing fancy. The most important part is that we include the single item template without specifying a templateView. This is because than it will use the default one being the one that displays the actual content.
When you run this, you will see that the actual content will be displayed:
You also have to make sure that the content presenter template is not hidden in the resource manager. Otherwise it will default back to the regular one with the links so if you have created the content presenter template and assigned it to the taskflow, make sure to check the content presenter templates in runtime to see if its stats is set to shown:
You can also do the exact same at runtime! So let's create a new page at runtime and add an empty content presenter on it:
Now instead of opening the wizard, open the properties by clicking on the wrench in the gray box:
In the data source dropdown you can select Query Expression which will tell the content presenter that the data source field will contain a CMIS query.
Now you can specify whatever query you want in the Data Source. Let's say we want to make a sports page and only display the sport items. We can use following value:
What makes this even more powerful is the fact that you can use Expression Language in the data source field so that query can also be dynamic.:
So as you can see, the content presenter is really powerful. Even more than you might think!
Category:
Attachment:
Comments
Hi Yannick,
great blog thansk for sharing,
i have one doubt about scope. why we need to register our bean in page flow scope i tried other scope like request and session but nothing is displayed.
so wanted to understand why pgae flow scope is requied.
Because in this example the CP instance has its own requests so the request from the page is a different one from the CP. That's why you cannot use the request scope.
I'm not sure why session scope does not work... It should work though.
Add new comment
Filtered HTML
 - Web page addresses and e-mail addresses turn into links automatically.
 - Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
 - Lines and paragraphs break automatically.
Plain text
 - No HTML tags allowed.
 - Web page addresses and e-mail addresses turn into links automatically.
 - Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer


A parametrization of matrix conjugacy orbit sets as unions of affine planes Peteris Dauguis Department of Mathematics Daugavpils University Daugavpils Paredes 1 Latvia Abstract. The problem of finding a canonical form of complex matrices up to conjugacy with the set of canonical matrices being a union of affine planes in the matrix space is considered. A solution of the problem is given producing a new canonical form for matrices over algebraically closed fields. Key words. Jordan form, rational form, eigenvalue, Weyr characteristic, affine plane. MSC 15A21.


Random Mountains in India generator
The generator is a tool to generate random Mountains in India. A mountain usually in the form of a peak. it stretches above the surrounding land in a limited area, is a large landform. Mountains are formed through tectonic forces or volcanism. A mountain is generally steeper than a hill.
Results Information
Share The information


Take the 2-minute tour ×
Is it possible to write double inequalities in an if-statement?
ex: if (x <= y <= z) do stuff;
share|improve this question
Well, you can write them, they just don't mean what you probably expect. Your example would be parsed as if ((x <= y) <= z) do stuff;, and depending on whether x <= y would evaluate to if (1 <= z) or if (0 <= z). – Daniel Fischer Dec 4 '12 at 1:04
add comment
1 Answer
Nope - Objective-C is a superset of the C language, and uses the same syntax as C for if statements. You'll have to split that up into two inequalities: if (x <= y && y <= z).
share|improve this answer
add comment
Your Answer


text:
Why is the isolation of hazardous energies associated with plant important?
A range of hazardous energies exists in mobile and fixed plant in mining operations, such as stored, electrical, and mechanical energies. During normal operating conditions, workers are generally protected from these energies by controls such as the plant's design and guarding.
However, when normal operating conditions are interrupted during work such as:
- clearing an obstruction
the consequences can be significant if isolation controls are deficient, removed, bypassed or deactivated and people are exposed to hazardous energies. It is important to ensure potential exposures to hazardous energies during such work are identified and controlled. The consequences of unwanted events can be serious or even fatal.
In the past, isolation processes in the mining industry were not given adequate emphasis. It was common practice to use tags only to identify that a circuit or item of plant was deactivated or de-energised and that personnel may be working on or around it. In many instances, the potential sources of hazardous energies were not recognised and isolation was not understood or properly applied.
A guideline on isolation of hazardous energies associated with plant in Western Australian mining operations is available for industry use.
The guideline provides information on the development of safe systems of work associated with the isolation of hazardous energies, where protection is required from:
- the movement or operation of plant
- the movement of materials handled by plant
- contact with energy
- used to operate plant
- used to carry out processes associated with plant
- produced or carried by plant
- stored within plant.
For an introduction to the damage that can be done by stored energy, see the toolbox presentation below on improving hazard awareness.


text:
Kafirin is a prolamin protein unique to sorghum grain. To make kafirin viable for commercial development there needs to be an optimised extraction process. For this purpose insight is needed into how the process is affected by the extraction temperature, grain/solvent ratio, grain/solvent contact time, and various amounts and types of reducing agents and extraction aids. Such insights are currently unavailable.
Significant insights into the extraction of kafirin were gained by performing extractions under various conditions to determine how extraction parameters affected the extraction process. Extraction temperature, grain/solvent ratio, grain/solvent contact time and various amounts and types of reducing agents/extraction aids were tested to determine the optimum extraction conditions. The extraction aids tested were acids (glacial acetic acid, citric acid and phosphoric acid) and metal bisulphite complexes (sodium metabisulphite and potassium metabisulphite) were tested as reducing agents.
Using a bench-scale extraction setup, the following important results were obtained.
? With regard to the commercialization of the process aqueous ethanol is the most promising solvent and was used throughout the study.
? The maximum amount of protein after extraction was roughly 45 g of protein for 1 000 g of grain out of a total kafirin content of roughly 62 g. This is an extraction efficiency of 70 - 75 % based on the total amount of kafirin available in the grain. Acids were found to have a limited role in the extraction process and can be excluded.
? The quantity of metalbisulphite complex used played a large role in the extraction process, reducing the yield by about 50 % when absent. The type of metalbisulphite used, however, did not play a role.
? The grain/solvent contact time was deemed to be the most important factor, with the highest yield occurring somewhere between 10 and 20 min.
? After 20 min the yield decreased due to increased solvent retention.
The solvent retention and increased filtering time associated with the drop in yield were investigated. The weakened hydrogen bonding in the starchy endosperm made it possible for the starchy material to bond to other starchy particles or less likely the solvent, and was most likely the mechanism of solvent retention and thickening of the slurry. This increased solvent retention resulted in approximately 50 % of the total solvent being retained; which was discarded with spent grain. At 20 min the solvent retained was roughly 12 % of the total original solvent used.
Further study is recommended with regard to:
? The mechanism of thickening to determine whether there are chemical or mechanical methods which would overcome the thickening and increased solvent retention
? The recovery, purification and subsequent reuse of ethanol
? Investigation into the mechanism that is responsible for the increased filtration time and whether this is related to the tannin-protein complex formation as the literature suggests
? The viability of the spent grain in agricultural applications such as cattle feed or fertiliser
? The effect of changes mentioned in this thesis on the end-use of the protein, e.g. film making quality
Dissertation (MEng)--University of Pretoria, 2016.


text:
- John StantonJohn StantonSenior Lecturer in Law, The City Law School, City, University of London
- and Craig PrescottCraig PrescottLecturer in Law, Bangor University
This chapter discusses the concept of administrative justice. The complexity and scale of modern government means that it is inevitable that sometimes things will go wrong. Public bodies make hundreds of thousands of decisions each year. Sometimes, the pressures of making thousands of decisions on finite resources mean that public bodies may not treat members of the public appropriately and not fulfil the aims of good government. When things go wrong, some will wish to challenge decisions made by the public authorities. Although such disputes are usually resolved by the courts applying the principles of judicial review, alternatives such as statutory tribunals, the ombudsman, and public inquiry provide other ways to challenge decisions made by public bodies. These three procedures form the basis of the system of administrative justice.


text:
Every One Every Day
Every One Every Day is a project between Barking and Dagenham and Participatory City. It provides free activities and resources for communities across the Borough, including activities for young people.
Current projects include:
More information about these events and new events can be found at: _URL_


income distribution
The distribution of wages earned across a company, industry, or country. Income distribution reveals what percentage of individuals are at various wage levels, information that can reveal more about overall wage patterns than average income can.
Use income distribution in a sentence
specified investment flow-through tax (SIFT) specified investment flow-through trust (SIFT)


Call us: _PHONE_ | Email:
9th Canadian Science Policy Conference
Because 2017 is Canada's 150th Anniversary, the CSPC themes are being structured within the following context:
 - How effectively have we used science-based knowledge to meet Canada's challenges over the past 150 years and also today?
 - How should we use science-based knowledge more effectively over the next 50 years to meet Canada's challenges?
The five themes of CSPC 2017 are:
 1. What are Canada's likely challenges in the next 50 years, and how can scientific knowledge be used to solve them?
 2. How does Canada get the new scientific knowledge it needs?
 3. How do we strengthen the environment for the production and integration of new scientific knowledge?
 4. How can we more effectively bring new and existing scientific knowledge to bear on Canada's challenges?
 5. How do we engage the public in Canada's science system?
For more information, click here.


text:
Select the Drive that you wish to use, such as J: and type your server name (always starts with \\; i.e. \\nas\home\john.doe) into the Folder field. Be sure Reconnect at logon is checked so you will be reconnected to this drive back whenever you restart your computer. Click on Finish.
In the User name field, type GALLAUDET\ then your username. In the Password field, type your password. The user name and password should be based on your Bison account. Click on OK.
You can access your folders and files by opening Computer (same as step #1) and selecting the J: drive (or the drive letter you picked).


MATLAB Answers
I get date info when plot a Datetime in x-axis.
조회 수: 24(최근 30일)
Victor Olivero
Victor Olivero 2 Apr 2021
댓글: dpb 5 Apr 2021
Hi, I am trying to plot a voltage data vs time data (HH:MN:SS) from a Datetime, but when I build the graph the x-axis always take the Year data (Dec 31, 1899).
I have tried modified the Datetime and the axis parameters, but always get this info.
How can I only display Hour:Minutes:Seconds? The year info is not important for me.
Thanks.
 댓글 수: 4
dpb
dpb 5 Apr 2021
Yes, that too. A MATLAB datetime doesn't exist without an associated date and time.
Unlike the venerable and deprecated datenum or an Excel date that are both represented as a julian date in a double where the whole portion of the value represents days and the non-integer part the fractional portion of a 24-hour day, the datetime is an object containing both a date and a time and the constructor for it will create a date from thin air if one isn't provided.
timeofday() does the equivalent conversion to a duration object as the alternative suggested -- the difference is the subtraction of the origin of the timeseries I suggested will give you a 0 origin irregardless of the actual time, timeofday will return the actual hours of the day of the datetime values.
Which is to use if not just the fixup of the display of the datae depends on situation.
댓글을 달려면 로그인하십시오.
채택된 답변
dpb
dpb 2 Apr 2021
편집: dpb 2 Apr 2021
Another case of TMW being too aggressive in hiding things from the end user inside graphics objects -- the year/date 'SecondaryLabel' property is hidden and is shown by default for all datetime axes.
Use
hAx=gca; % retrieve the current axes handle
hAx.XAxis.SecondaryLabel.Visible='off';
to make the year marker not be visible.
The alternative is to subtract the first time value of your datetime vector from all elements and convert to a duration and plot against it instead of the absolute time values.
dt=Time2-Time2(1); % convert to elapsed time; is a ML duration, not a datetime
plot(dt,v_bacteria)
 댓글 수: 1
Victor Olivero
Victor Olivero 4 Apr 2021
Thanks for your reply, I have solved the issue taking, for example, plot(timeofday(Time2),V_bateria) using the timeofday fuction. However, I will try your recomends.
댓글을 달려면 로그인하십시오.
추가 답변(0개)
태그
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
Translated by


text:
about the project
As development of the Mouse River Enhanced Flood Protection Project continues, the International Souris River Board is also working to review operational plans to determine if changes can be made to alleviate the potential of future flooding risks. The International Souris River Board monitors the apportionment of waters at the two US/Canadian border crossings.
A periodic review of the operating plan is required under the 1989 agreement. However, due to unprecedented flooding in the Souris River basin in 2011, basin residents have asked that additional flood protection measures be evaluated beyond what is currently provided under the 1989 agreement.
Check here for more information regarding the International Souris River Board and their activities.


Setting Up Bacula, the Modular Backup Solution
0
3568
Bacula is an open source, enterprise-level computer backup system for heterogeneous networks, which is distributed and highly customisable. It is designed to automate backup tasks that often require intervention from a systems administrator or computer operator. This article introduces readers to the basics of Bacula.
Figure 1: Bacula's components
Let me begin with sharing a real-life example of my use of Bacula. One of our projects involved using virtual machines installed on our workstation. This allowed us to quickly spin up different environments that were needed for development and testing. However, we needed a robust backup solution that allowed us to save the information not only on our VMs but also on our other machines that were running different operating systems. VMs come with the ability to take snapshots of the current state and we experimented with this feature, as well as exporting an image of the current state of the virtual machine as a backup solution. However, this proved time consuming and didn't provide a solution for our Windows and Linux hosts. So we searched for a more robust backup solution, which ultimately turned out to be Bacula.
Architecture
Bacula comprises the following five major components or services —director, console, client, storage and catalogue.
It is a completely modular backup solution, allowing us to scale quickly by moving the individual components onto their own computers, or even hosting multiple computers – each running their own file, storage or database servers. Even with multiple database servers, or multiple file servers, we can still manage everything from one director instance. For example, we can add new file, database and storage servers to the director's configuration file, thus expanding the capabilities of the backup solution. However, the capabilities of Bacula are far too many to list here. In fact, this article aims to provide just enough information to get readers started.
The setup for this article is very simplistic — it consists of one client and one server. In this example, the server hosts all the components — the file, storage, database and director. Though simplistic, the setup serves the purpose of getting Bacula up and running with minimum effort.
Installing the Bacula server
Let us configure the Bacula server on an Ubuntu 18.04 server. To do so, issue the following command:
sudo apt install bacula
The apt process will ask whether you want to install the Bacula server package and any other necessary requirements. Go ahead and answer 'Yes' to that. This should start the downloading, installation and configuration process for the Bacula server and any packages it relies on.
During the installation process you'll be asked several configuration questions, starting with the setup of Postfix. (This is Wietse Venema's mail server that started life at IBM Research as an alternative to the widely-used Sendmail program. It attempts to be fast, easy to administer and secure.) Postfix is the package that you can configure to send you email updates.
Select the Internet site and press 'Okay'.
For the mail name, we'll just use the hostname. Bacula works with both Postgres and MySQL. I have chosen Postgres as it was already installed on my system.
Now that we have all the packages installed for the server, we'll move to the client and install the bacula-client package.
Figure 2: Postfix configuration
Installing Bacula on the client
To install Bacula on the client, use the following command:
sudo apt install bacula-client
Confirm that you want to install the client package and then wait until all the packages have been downloaded and installed. Once done, ensure that you have all the configuration files in /etc/bacula. Inside that directory, you should see bacula-fd.conf, common_passwords, bconsole and a scripts directory.
That is it for the Bacula installation and the initial setup.
Why Bacula is more popular than other solutions
There are many advantages Bacula offers that other backup solutions do not. These include the following:
 1. There is a client for each machine, so you can back up and recover client data of any type, ensuring that all attributes of files are properly saved and restored.
 2. Bacula uses well-defined (IANA registered) TCP/IP ports — with no rpcs or shared memory.
 3. Any SQL database engine can be used, making Bacula very flexible. Currently, there are drivers for MySQL, PostgreSQL and SQLite.
 4. It handles multi-volume backups and has a built-in job scheduler.
 5. Bacula is four times as fast as any other commercial application, probably because those applications store their catalogue information in a large number of individual files rather than in an SQL database as Bacula does.
Figure 3: The next step in the Postfix configuration
Figure 4: Configuring Bacula with Postgres
When and where Bacula should be used
For programs such as tar, dump, or bru that are used to back up your computer data, you would like a network solution, more flexibility, or catalogue services. In such cases, Bacula will most likely provide the additional features you want.
If you would like a backup program that can write to multiple volumes (i.e., which is not limited by your tape drive's capacity), Bacula can most likely fill your needs. In addition, quite a number of Bacula users report that it is simpler to set up and use than other equivalent programs.
Figure 5: Bacula on the client
If you are currently using a sophisticated commercial package such as Legato Networker, ARCserveIT, Arkeia, or PerfectBackup+, you may be interested in Bacula, which provides many of the same features and is free software available under the Affero GPL Version 3 software licence.
This article gives you a brief introduction to Bacula configuration. If you get stuck, the Bacula website has an excellent manual that you can read.
LEAVE A REPLY
Please enter your comment!
Please enter your name here


Running background workers on anynines
Background workers are good for you
As time and coding goes, your application will grow and become more and more complex. In such a system you will sometimes have to run time-consuming tasks or tasks that are very computationally intensive. You know what this means – app slows down to a crawl.
Fortunately, this is where background jobs/workers come into play.
With background workers you can save jobs in a queue and process them later without blocking your current thread. You can even run several jobs in parallel!
Another advantage of background jobs is the better user experience. When you execute time-consuming jobs in the background, requests return immediately and users don't have to wait and get angry at you. They just browse your website and get notified when the job is done.
Since Rails 4.2 it's very easy to use different background workers in your application. In this version they introduced Active Job. That's a framework for declaring jobs and making them run on different queueing backends. It provides a place for jobs in your rails apps and ensures that you don't have to worry about differences between various background workers like Resque, Sidekig or DelayedJob.
So, how do we use background workers in our apps?
Workers at work
In our example app we'll use Rails 4.2 to benefit from the features of Active Job. As the background worker we'll use DelayedJob, a database-based asynchronous priority queue system.
The finished app can be found here. It's a simple blog app from the rails guides, but in our example we use a background job to delete comments.
When you have set up the base app we can start implementing the background job.
Integrate DelayedJob
First, add the gem to your Gemfile:
gem 'delayed_job_active_record'
And install it with:
bundle install
As DelayedJob is based on a database, you have to create the required table:
rails generate delayed_job:active_record rake db:migrate
Now let's make sure that our app uses the desired background worker – in order to do that, specify the adapter in config/application.rb:
module Rails4WorkerExample
class Application < Rails::Application
config.active_job.queue_adapter = :delayed_job
# comments and other things
end
end
After you've configured everything correctly, let's create your first job.
Create your job
Rails has a built-in generator for creating jobs. To create a job run in your console:
rails generate job delete_comment_job
The generated jobs are located in app/jobs. A job looks like as follows:
class DeleteCommentJob < ActiveJob::Base
queue_as :default
def perform(*args)
# Do something later
end
end
Now update the perform method so that it deletes a comment:
def perform(comment_id)
# Do something later
sleep 5
comment = Comment.find comment_id
comment.destroy end
Your job is ready! We just have to use it in our app.
Use your job
As the job deletes comments, we'll use it in the destroy method of our comments_controller:
def destroy
@article = Article.find(params[:article_id])
@comment = @article.comments.find(params[:id])
DeleteCommentJob.perform_later(@comment.id)
redirect_to article_path(@article)
end
To add a job to the job queue, call perform_later on our DeleteCommentsJob class. At this point, DelayedJob will run the job for you in the background. Just sit and enjoy your coffee :)
Aaaand we're almost there – the last thing you have to do is deploy the app on anynines and try it out.
Let's deploy! Enter anynines
Let us deploy your app on anynines. First, you have to select the anynines api:
cf api _URL_
Then login with your credentials and select your org and space:
 cf login
 cf target -o <your org_name> -s <your space_name>
Before you can push your app to anynines, you need to create the required service. In this case it's mysql:
 cf create-service mysql Pluto-free <SERVICE NAME>
After that we create 2 manifest files: app_manifest.yml for the app and worker_manifest.yml for the worker.
app_manifest.yml
---
applications:
- name: <APP NAME>
 memory: 512M
 instances: 1
 host: <APP NAME>
 domain: de.a9sapp.eu
 path: .
 buildpack: _URL_
 services:
 - <SERVICE NAME>
worker_manifest.yml
---
applications:
- name: <WORKER NAME>
 memory: 512M
 instances: 1
 path: .
 no-route: true
 command: bundle exec rake jobs:work
 buildpack: _URL_
 services:
 - <SERVICE NAME>
They may look almost the same but have some important differences. In the worker_manifest.yml we set the option no-route to true so that no route is assigned to our worker. With the command option we can specify our custom start command for the worker.
Both need the same mysql service, though – otherwise our worker and app won't work together.
Now's the time to deploy the app and worker to anynines:
cf push -f app_manifest.yml
cf push -f worker_manifest.yml
The app is now available at <APP_NAME>.de.a9sapp.eu. To see the effect of our background job, do the following:
 - create an article and write some comments,
 - delete a comment,
 - and refresh yout page after 5 sec – voila! the comment is gone
Our brave background worker is doing its job perfectly. And you know how to configure your rails app to use background jobs and handle complex work in the background!
Workers work wonders
When you have a time-consuming or complex task you should definitely use background workers. Your users will thank you for the better user experience – they won't wait while their tasks are executed and the requests will return immediately. Plus, background workers also make your app more scalable and easier to manage. With Active Job you can now easily declare jobs and run them on different queueing backends.
It all boils down to one thing – just add more workers if you need them!
Hope you liked my blog post – you can tweet directly. Follow @anynines for more hosting news and tutorials!
Leave a Reply
Your email address will not be published. Required fields are marked *
*


the same number of working hours. For the purposes of this research, a working year consisted of working 40 hours per week, 50 weeks per year. As project managers rarely work a 40 hour week, holidays and sick days were assumed to be offset by the overtime hours.
Standardized Value of a Bachelors Degree (BDEG)- Because there is little or no apparent consistency in how different professional organizations equate the value of a degree to the equivalent work experience, a web based research was conducted and using undergraduate degrees in construction project management from Purdue, University of Houston and University of Florida and the general Project Management degree from Colorado Technical University yielded an AVERAGE of 130 credit hours required to earn a Bachelors degree. BDEG was broken down further into two components:
Actual Time Spent In ClassTo calculate this value, it was assumed that for each 3 credit hours awarded, that 40 hours of face to face classroom time was required. Thus for a 130 hour degree program: 125/3 = 41.67 individual courses X 40 hours per 3 credit course = 1,668 hours spent in a classroom.
Level of Effort expected by the student OUTSIDE of class timeFollowing the same approach, it was generally agreed that at the undergraduate level, for each hour spent in the classroom, a MINIMUM of 2 hours needed to be spent by a student in doing homework, writing research papers and taking exams: 1,668 classroom hours X 2 = 3,334 hours of student effort outside of class.
Thus to calculate the BDEG (Standardized Value of a Bachelors Degree) we add the class time plus the out of class time 1,667 + 3,333 = 5,000 hours of learning experience.
Standardized Value of a Masters Degree (MDEG)- Despite a clear trend by other professional organizations (representing Nursing, Civil Engineering, Social Work) in requiring a Masters degree, at least for their top level credentials, this too was a consideration. Worth noting that of all the credentials evaluated, only AACE?s Certified Portfolio, Program and Project Manager (C3PM) required a Masters Degree or equivalent educational credits to earn that certification.
As was done with the BDEG, a web based research was conducted and using Master of Science degree in project management from George Washington University, Boston College, Western Carolina and Stevens Institute of Technology, yielded an AVERAGE of 36 credit hours required to earn the Master of Science degree. MDEG was broken down further into two components:
Actual Time Spent In ClassTo calculate this value, it was assumed that for each 3 credit hours awarded, that 40 hours of face to face classroom time was required. Thus for a 36 hour degree program: 36/3 = 12 individual courses X 40 hours per 3 credit course = 480 hours spent in a classroom.
Level of Effort expected by the student OUTSIDE of class timeFollowing the same approach, it was generally agreed that at the graduate level, for each hour spent in the classroom, a MINIMUM of 3 hours needed to be spent by a student in doing homework, writing research papers, working on group projects and taking exams: 480 classroom hours X 3 = 1,440 hours of effort outside of class.
Thus to calculate the MDEG (Standardized Value of a Bachelors Degree) we add the class time plus the out of class time 480 + 1,440 = 1,920
The next category was any additional hours of REQUIRED training in order to sit for the Exam (ARTH)- As PMI is the only organization to REQUIRE training precedent to taking the exam, considerable debate ensued about how best to score this. Because the 35 hours of training can be fulfilled by studying books of sample exam questions or listening to podcasts and does NOT require the rigor equivalent to an undergraduate degree course, those hours were counted at face value, (35 hours required, 35 hours counted under ARTH) with no additional hours to cover outside or additional study. (See EXAM calculations below for more)
The next component of the scoring model was how to score the exams (EXAM)- As done previously, there are two components to thisTime spent actually taking the exam, which came from the information published on each organizations web pages and/or downloads for their respective exam and;
Level of Effort spent by the individual in studying for and preparing to sit for the exam. To calculate this value, a general consensus was reached that for each hour of exam, 30 hours of preparatory time was required. (Admittedly, this was based almost entirely on PMP and CCC/E experiences) Using the PMP exam as an example, the exam itself is 4 hours long therefore, 4 X 30 = 120 hours of total effort to prepare for and passing the exam. HOWEVER, at least in the case of PMI?s PMP, part of that level of effort is the 35 hours of required course work, so to avoid double counting those hours; we deduct 35 from 120, yielding an EXAM score of 85 for the PMP.
The final challenge was how to weight the Total Level of Effort required for the Assessment processes (ATCA)- Following the processes developed previously, we broke the ATCA score into two elementsHow many PAID/VOLUNTEER person hours were required to CONDUCT the Assessmentsthis information was readily available on most of the sites. While nearly all assessments required between 2-5 hours of assessor time, the key variable was how many people were required to conduct an assessment. To calculate this value, we multiplied the number of PAID/VOLUNTEER assessors required X the average time it takes to conduct an assessment. Using the asapm (roughly equivalent to the IPMA Level B) they use 2 assessors conducting an interview for 2 hours. 2 people X 2 hours = 4 person hours of effort.
How many hours of PREPARATION time did it take a person being assessed to prepare the required documentation, submit it to the assessors then participate in the assessment process? Lacking any empirical evidence, an ASSUMPTION was made that for every man hour of assessment that is required, the person being assessed would need to spend 10 hours preparing.
Worth noting is that while all the competency based credentials required assessments, only twoAACE?s C3PM and PMI?s PgMPrequired that the applicant being assessed submit 360 degree evaluations from supervisors, peers, subordinates and customers. AACE accomplished this by requiring a log book, similar to those maintained by commercial pilots or SCUBA divers while PMI required that the applicant submit signed copies of the assessment surveys.
To summarize the scoring model let:
Total Hours of Work Experience for a person WITH a 4 year degree = WEXP[7]
Standardized Value of a 4 year Degree = BDEG[8]
Standardized Value of a Masters Degree = MDEG[9]
Additional REQUIRED Training Hours = ARTH[10]
Total Level of Effort to prepare for and take the exams = EXAM[11]
Total Level of Effort required to prepare for and be assessed = ATCA [12]
Total Level of Effort and Degree Requirements Professional Score = PSCOR
Then the WEXP + BDEG+ MDEG + ARTH + EXAM + ATCA = PSCOR, where the PSCOR is equal to the cumulative calculated value of all the variables.
To help readers understand the scoring model; I will illustrate using how two of the credentials were scored. PMI?s PMP as it is the most ubiquitous and the top ranked C3PM by AACE, with the understanding that exactly the same set of calculations was performed for the other credentials as well.
PMI?s PMP Relative Professional Score Calculations (See attached Excel spreadsheet[16], Sheet 2, Column R)
WEXP = 4500
BDEG = 5000
MDEG = 0
ARTH = 35
EXAM = 89
ATCA = 0
PSCOR = 9624
AACE?s C3PM Relative Professional Score Calculations (See Excel spreadsheet[16], Sheet 2, Column B)
WEXP = 16000
BDEG = 5000
MDEG = 1920
ARTH = 0
EXAM = 434
ATCA = 132
PSCOR = 23486
This same formula was applied equally to all the credentials. (see attached Excel spreadsheet[16], sheet 2)
Now, is this model perfect? No, of course not, nor was it expected to be. To reiterate, it represents a first attempt to create an independent scoring model that enables consumers and organizations alike to evaluate the various credentials vis a vis alternatives and for those organizations wishing to add new credentials, be able to make decisions about how to position them to fill niches and to aid in continually improving existing credentials.
Having tried to be realistic in defining the expectations of what this model can or does show and what it does not or cannot show, the graph below illustrates the rank ordered results of this research.
As can be seen in the graph, due to NO work experience or educational requirements combined with what appears to be a relatively weak testing/assessment process, the PRINCE2 credentials are significantly lower than all other credentials, while at the other extreme, AACE?s top credentials, the C3PM and the CFCC scored very high, based on the requirements of high levels of demonstrated experience, a Master?s degree or equivalency in terms of education