User Guide 2 - API Overview
The four main classes provided by PHPCap for users are:
| Class | Description |
|---|---|
| RedCapProject | Used to retrieve data from, and modify, a project in REDCap. |
| RedCap | Represents a REDCap instance/site. This class is only required for creating new REDCap projects using PHPCap, but it also may be helpful if your program needs to access multiple projects, especially if you are doing a lot of customization of PHPCap. |
| FileUtil | Used to read from, and write to, files. FileUtil is set up to throw a PhpCapException if an error occurs, so it can make error handling more consistent and easier. |
| PhpCapException | Exception class used by PHPCap when an error occurs. |
Here is a complete example that uses three of these classes to export the records in a REDCap project to a file in CSV (Comma-Separated Values) format:
<?php
# use only one of the following and
# change the path to the file as needed
require('vendor/autoload.php'); # For Composer
require('PHPCap/autoloader.php'); # For Git
use IU\PHPCap\RedCapProject;
use IU\PHPCap\FileUtil;
use IU\PHPCap\PhpCapException;
$apiUrl = 'https://redcap.xxxxx.edu/api/'; # replace this URL with your institution's
# REDCap API URL.
$apiToken = '11111111112222222222333333333344'; # replace with your actual API token
$sslVerify = true;
# set the file path and name to the location of your
# CA certificate file
$caCertificateFile = 'USERTrustRSACertificationAuthority.crt';
try {
$project = new RedCapProject($apiUrl, $apiToken, $sslVerify, $caCertificateFile);
# Export the records of the project in CSV format
# and store then in file 'data.csv'
$records = $project->exportRecords('csv');
FileUtil::writeStringToFile($records, 'data.csv');
} catch (PhpCapException $exception) {
print $exception->getMessage();
}
?>
Notes:
The require statement includes the PHPCap autoloader which loads the PHPCap classes that are actually used, so there is no need to require or include the individual PHPCap classes. If you used Composer to download PHPCap, you should use its autoloader (in the vendor directory) in the require statement, instead of the one contained in the PHPCap project.
The use statements allow you to refer to the PHPCap classes without having to specify their fully qualified names. For example, if you did not have a use statement for the FileUtil class, you would need to use:
IU\PHPCap\FileUtil::writeStringToFile($records, 'data.csv');
Setting $sslVerify to true and specifying a CA certificate file are very important for security reasons. These settings enable PHPCap to verify that the REDCap site accessed is actually the one specified in the $apiUrl. If this verification is not done, it is possible that another site could impersonate your REDCap site and read the data you send and receive. For information on how to create a CA certificate file, see CA Certificate File
For writing the file, you could use PHP's file_put_contents function, but an advantage of using PHPCap's FileUtil method is that FileUtil is set up to throw a PhpCapException if an error occurs, so it can make error handling more consistent and easier.


RoboToDo is a RoboFont extension for managing To-Do items associated with a .ufo.
To-Dos can be added to individual glyphs, or to the entire font.
Click the To-Do toolbar in the font window to access all To-Dos in the font, or click on the To-Do menu in the glyph panel to manage To-Dos for the current glyph.
When the To-Do manager is open, click on the “+” to create a new To-Do. Double click on a To-Do to edit the To-Do text. Click the check box to complete a To-Do.
All data is stored in the .ufo font info and glyph info fields. RoboToDo tries to keep its data seperate from anything that might already be entered in these fields.


Triggered? Trump Jr. Trolled After Allegedly Being Booed by Supporters at Book Promotion Event
In his “Triggered” book, Donald Trump Jr explains, in particular, how he has been a victim of “shadow banning”, namely, how he faced having his content blocked by other users on social media.
by by Oleg BurunovDonald Trump Jr’s own supporters have not thought twice before heckling the US President’s son after being informed that he did not have time to take their questions during a promotion event for his book “Triggered: How the Left Thrives on Hate and Wants to Silence Us,” according to The Guardian.
Make America Great Again conservatives’ shouts of “USA! USA!” reportedly turned into louder chants of “Q and A! Q and A!,” shortly after Donald Trump J and his girlfriend Kimberly Guilfoyle appeared at the University of California’s overwhelmingly liberal Los Angeles campus on Sunday.
The pair at first tried to turn a blind eye to a row which showed no sign of abating after the 450-strong audience were told that they would not be allowed to ask questions “due to time constraints.”
Trump Jr then unsuccessfully attempted to assert that questions from the floor risked resulting in soundbites that can be abused and distorted by left-wing media.
When his reasoning with the crowd did not work, Guilfoyle tried to lend a hand by saying,”You’re not making your parents proud by being rude and disruptive.” Moments later, the couple walked off the stage.
Almost all Twitter users were ruthless toward Trump Jr, posting sarcastic tweets about what they described as a “hilarious” event.
“He's really proving that putting his face next to the word Triggered is a self tell, isn't he?” one user tweeted.
In his book, Trump Jr. claims that he receives the highest number of death threats in the country after his father, the president, and that social media have been “shadow banning” him.
Trump Jr. said that Instagram pulled a post he wrote that had undermined actor Jussie Smollett’s hate-crime assault claims — later proven false — on the grounds that Trump’s comments were hate speech.


Hello! My name is Ivan Nenov and I am currently studying Master degree of Business Informatics in University of National and World Economy, Sofia. I completed my Bachelor degree in Applied Informatics in University of National and World Economy. I also graduated from a Software University in Sofia. I am currently working as Junior FullStack Developer at OneBit Software.
I am very eager to adopt, to learn new technologies and I am very motivated to become a professional developer.
Positive and Self-Disciplined.
Motivated.
Team player.


Can't read this e-mail?
click here
My Fantastic Email
Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI.
Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions.
my button
Lorem Ipsum!
Disclaimer
Dramatically maintain clicks-and-mortar solutions without functional solutions because you subscribed at google.nl
Copyright © All rights reserved.


This topic describes the basics of deploying your Java and JavaFX applications.
This topic contains the following sections:
Have an application ready to publish? Follow these steps for basic deployment:
Decide how you want users to access and run your application.
Applications can be deployed on a user's desktop, embedded in a web page, or launched from a browser.
Create the application package.
The application package consists of the JAR files needed to run your application, and the deployment descriptor or JNLP file for applications that are embedded in a web page or are launched from a browser. If your application is embedded in a web page or is launched from a browser, the JAR files must be signed with a valid signing certificate. A self-contained application package also includes the JRE needed.
Set up the web page, if your application is embedded in a web page or is launched from a browser.
The web page needs either HTML elements or JavaScript code to run an application embedded in the page. JavaScript code is needed to launch an application from the browser. The Java packaging tools generate JavaScript code for both types of execution, which you can copy into your web page.
Copy the package to the location from which you want users to access it.
A web server is typically used for applications embedded in a web page or launched from a browser. Desktop applications can be delivered directly to users or made available through an app store.
Java and JavaFX applications can be run in multiple execution environments. How you want users to access your application determines how you deploy it. The following options are available:
Launch as a desktop application
Users can start the application from the command line using the Java launcher, or by double-clicking the JAR file for the application.
Launch from a browser
Users can download and start the application by clicking a link in the browser.
View in a web page
The application starts when the web page is loaded.
Each environment has advantages and disadvantages. See Section 3.1, "Execution Modes" for more information.
By default, the Java packaging tools generate the following collection of files needed to run the application:
An application JAR file (or multiple JAR files for large applications)
Applications that are embedded in a web page or launched from a browser must be signed with a valid signing certificate. The packaging tools or the jar
command can be used to sign the JAR file.
A JNLP file with a deployment descriptor
A deployment descriptor is an XML file that describes application components, platform requirements, and launch rules.
An HTML file containing JavaScript code to embed or launch applications from the web page
Applications can also be packaged as a platform-specific, self-contained application. Self-contained applications include all application resources, the JRE, and a launcher. These applications provide the same install and launch experience as native applications for the operating system.
Self-contained applications can be distributed as zip files or as installable packages: EXE or MSI for Windows; DMG, PKG, or mac.appStore for OS X, or RPM or DEB for Linux.
Self-contained applications provide the following benefits:
They resemble native applications for the target platform.
Users install the application with an installer that is familiar to them, and launch it in the usual way.
They offer no-hassle compatibility.
The version of JRE that is used by the application is controlled by the application developer.
They are easily deployed on fresh systems with no requirement for the JRE to be installed.
Deployment occurs with no need for admin permissions when using ZIP or user-level installers.
For more information, see Chapter 7, "Self-Contained Application Packaging."
Three different tools are available for packaging your application:
For more information about Java packaging, see Chapter 6, "Packaging Basics."
If you use Netbeans IDE, then much of the work is done for you. Open Project Properties to specify preferred dimensions for your JavaFX application scene. Build the project with Clean and Build. The application package is generated in the dist
folder. To test your application, open this folder in Windows Explorer and double-click the HTML, JNLP, or JAR file, depending on your execution environment.
To package a self-contained application, customize the build.xml
script in the NetBeans IDE. For more information, see Section 7.3.2, "Basic Build."
If you are using another IDE, then you can add Java packaging as a post-build step, using Ant tasks that are included in the JDK. Example 2-1 shows an Ant package task for the JavaFX example Colorful Circles. Download the ColorfulCircles.zip file for the complete Colorful Circles example.
When you add the nativeBundles="all"
attribute into the <fx:deploy>
Ant task, all possible packages are created: a standalone application package, one or more self-contained application packages for the platform on which you are running, and a web deployment package. Installable packages are created based on the third-party software that is available at packaging time. For example, if you have both Inno Setup and WiX on Windows, then you get three packages: a folder with the application, an .exe installer file, and an .msi installer file. For more information, see Chapter 5, "Packaging Basics." A simple Ant task with the nativeBundles
attribute is shown in Example 2-1.
Example 2-1 Ant Task to Produce All Packages for the ColorfulCircles Application
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpath="${javafx.sdk.path}/lib/ant-javafx.jar"/> <fx:jar destfile="dist-web/ColorfulCircles.jar"> <fx:application mainClass="colorfulcircles.ColorfulCircles"/> <fileset dir="build/classes/"> <include name="**"/> </fileset> </fx:jar> <fx:deploy width="800" height="600" outdir="dist-web" outfile="ColorfulCircles" nativeBundles="all"> <fx:info title="Colorful Circles"/> <fx:application name="Colorful Circles example" mainClass="colorfulcircles.ColorfulCircles"/> <fx:resources> <fx:fileset dir="dist-web" includes="ColorfulCircles.jar"/> </fx:resources> </fx:deploy>
If your application will be embedded in a web page or launched from a browser, include the required JAR mainfest attributes in the <fx:jar>
task and include an <fx:signjar>
task.
If you cannot use Ant and prefer command-line tools, use the Java Packager tool that comes with the JDK. The Java Packager tool has several commands for packaging applications, described in Chapter 9, "The Java Packager Tool." For a quick test build, you can use the javapackager -makeall
command, such as the one in Example 2-2. This command compiles source code and combines the javapackager -createjar
and javapackager -deploy
commands, with simplified options.
Example 2-2 javapackager -makeall Command to Build an Application
javapackager -makeall -appclass colorfulcircles.ColorfulCircles -name "Colorful Circles" -width 800 -height 600
As a command intended only to help to build simple projects quickly, the -makeall
command supports a limited set of options to customize the command behavior. The -makeall
command makes the following assumptions about input and output files:
Source and other resource files must be in a directory named src
under the main project directory.
The resulting package is always generated to a directory named dist
, and file names all start with the dist prefix.
By default, the -makeall
command tries to build a self-contained application package. If this is not possible, the JAR, HTML, and JNLP files are generated so you can deploy to other execution modes.
|
Note: For JavaFX applications that are embedded in a web page, stage width and height must always be specified. |
When your application is ready to go live, use the -createjar
and -deploy
commands instead of the -makeall
command. The -createjar
and -deploy
commands have considerably more options. Also use the -signjar
command if your application is embedded in a web page or launched from a browser. You can create a self-contained application package with the -deploy
command plus the -native
option, for example:
javapackager -deploy -native -outdir packages -outfile ColorfulCircles -srcdir dist -srcfiles ColorfulCircles.jar -appclass colorfulcircles.ColorfulCircles
For more information, see Section Section 5.3.1, "Java Packaging Tools."
|
Tip: For even more flexibility of options, use an Ant task instead of the Java Packager tool. |
If your application is embedded in a web page or launched from a browser, you need to set up the web page that provides users with access to your application. The Java Plug-in is used to run an application embedded in the web page. Java Web Start is used to run an application that is launched from the browser.
You can use an <applet>
or <object>
element or JavaScript code for applications that are embedded in a web page and use the Java Plug-In to run. Use JavaScript code to create the link or button that calls Java Web Start to launch an application from the browser. The Java packaging tools generate JavaScript code for both types of execution, which you can copy into your web page.
The HTML page generated by the packaging tools is a simple test page for your application. It includes sample JavaScript code to launch and embed your application, which you can copy to your own web page. To avoid manual copying, consider using HTML templates for application packaging to insert the JavaScript code into an existing web page. For more information, see Section 5.7.4, "Web Page Templates."
When you have your application package and any web pages that you are using, copy them to the appropriate location to make your application available to users.
If your application is embedded in a web page or launched from a browser, copy your package and the web page to the web server from which they will be loaded.
If your application is a desktop application, copy the application to the location from which users will download it. Self-contained applications provide installable packages and the required JRE, which makes it easier for users to install and run your application.
This topic provides the minimum information needed to deploy a simple application, which makes use of the default processing that is provided by the packaging tools. More advanced applications could have additional requirements, for example:
Include a custom splash screen that is shown when your application is loaded.
Include a custom progress bar that is shown while your application is loading.
Use JavaScript code to communicate between your application and the web page in which it is embedded.
Deploy Swing and SWT Applications with Embedded JavaFX Content
Minimize the number of security dialogs and the warnings contained within the dialogs to help ensure users that it is safe to run your application.
The Deployment trail in the Java Tutorials also provides information to help you deploy applications embedded in a web page or launched from a browser.


Masculino
London is the capital city of England. It is the most populous city in the United Kingdom, with a metropolitan area of over 13 million inhabitants. Standing on the River Thames, London has been a major settlement for two millennia, its history going back to its founding by the Romans, who named it Londinium.
Para zoom na imgem só clicar
But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but because occasionally circumstances occur in which toil and pain can procure him some great pleasure.
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.  Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat


Feminist Majority Foundation - Equality around the world
Dear Dry,
A petition for Equal Rights Amendment (ERA) ratification is currently collecting signatures through the We the People [ http://wh.gov/P6gP ] petition process on the White House website [ http://wh.gov/P6gP ].
The ERA petition has over 18,000 signatures. If the petition has 25,000 signatures by 11:59pm on February 9, the White House staff will review it, send it to the appropriate policy experts, and issue an official response. (Currently, the We the People process requires over 100,000 signatures, but the ERA petition was filed before the increased requirement.)
ERA march [ http://wh.gov/P6gP ] button [ http://wh.gov/P6gP ]
It is time to get the ERA back high on the national agenda. This petition asks the White House to support lifting the deadline on the original 1972 ERA. Women would only need three more states to get full rights if the deadline was lifted. Thirty-five states have already ratified the ERA. We need you to go to the White House website and sign the petition [ http://wh.gov/P6gP ].
Sign it today [ http://wh.gov/P6gP ]. Women have waited long enough for equality.
For equality,
Eleanor Smeal
President
Feminist Majority Foundation
Terry O'Neill
President
National Organization for Women
1600 Wilson Boulevard, Suite 801, Arlington, VA, 22209 |<PHONE_NUMBER> |<EMAIL_ADDRESS>You have received this e-mail because of your interest in women’s issues. To unsubscribe, please click here. [ http://salsa.democracyinaction.org/o/1400/p/salsa/supporter/unsubscribe/public/index.sjs?unsubscribe_page_KEY=494 ]


This was the first session that I attended at Java University. You could take either a full-day course or two half-day courses - I elected to do the latter. Keith Donald, project lead for Spring WebFlow, presented. I have quite a bit of Spring experience already through AppFuse, but I was hoping to get a more complete view of Spring as most of what I have learned is from tinkering with existing systems. Keith promised that we’d build a system from the ground up, so it sounded like I’d get what I bargained for.
And build from the ground up we did. I’d say we were almost halfway through the entire session before we even TOUCHED Spring. Up until that point all we had done was do test driven development on all of the business entities and logic. It was very interesting to me that Keith’s coding methodology is quite different from what I typically find myself doing. He implemented almost all of the business logic of the application without any regard to the eventual supporting technologies (i.e. ORM frameworks, web frameworks, etc.). It seems like I almost always bind my application to a set of technologies (say Hibernate/Spring/JSF) before I ever write a line of business logic. What did he get from this? Well, his application had fully implemented and tested business logic that would work with nearly any of the available supporting frameworks. Good stuff.
Another thing that was interesting to me is his disdain for packaging classes according to application layer. I can’t think of an application that I’ve built recently where the DAO’s weren’t in a dao package, the “Manager’s” weren’t in a manger/service package, and the web classes weren’t in a web package. Keith totally changed all of this. Our two main entities in this application were account and restaurant. Anything that had to do with an account (be it a DAO, service bean, web form, etc.) went in the account package. The same went for the restaurant package. I’m not sure if I like this or not, but he seemed convinced of the value.
Overall it was a good session. He incorporated A LOT of live coding, and almost all of it was done from scracth - he had very little pre-made skeleton code. The drawback to that was that he only made it through 6 of the 8 sections of his slides. I wish he had backed down on one or the other.


|
Moorish Science Temple of AmericaVirtually every religion has some sort of memorable origin story, something that explains why this particular religion is so much superior to all of the other options available to today's discriminating consumer. Some stories are more memorable than others. Case in point: The Moorish Science Temple of America, which surpasses even Scientology and Thelema in sheer weirdness. Moorish Science was established in 1913 by a man who was born with the name Timothy Drew. Moorish Science may have the distinction of being the only religion ever to be founded in Newark, NJ. Similar to Christian Science, Moorish Science has nothing to do with science, although it does have a lot to do with Moorishness. The basic tenet of Moorish Science is that all black people are descended from the Moors, a nomadic North African tribe whose most famous member was Othello. The Moors were Islamic when they first invaded Spain in 711; thus Moorish Science teaches that all blacks are originally Islamic. "Islamic" is being used very loosely here, as most other Muslims would tell you. The actual creeds of Moorish Science draw nearly as much from Buddhism, Christianity and Freemasonry as they do from Islam. If you're thinking that this premise is somewhat questionable, well, let's consider the historical record. Islam was founded in the 7th century A.D. Black people have been around since before the dawn of recorded history, which goes back to about 30,000 B.C. But logic has never been much of an obstacle to religion. Timothy Drew was born in 1886 in North Carolina. According to some accounts, he was born to two former slaves, then adopted by a local tribe of Cherokee Indians. Another telling of the story says his father was a dark-skinned Cherokee himself. Yet another version of the tale says his father was Moroccan Muslim and his mother was the Cherokee. Drew himself said the moment of his birth was marked by an eclipse; others claimed an earthquake heralded his arrival on the scene. Whatever his parentage, young Timothy apparently joined the circus as a stage magician at age 16 and/or hooked up with a band of Gypsies. Some or all of these characters took Drew on a world tour that would change his life. The most fateful jaunte in Drew's alleged travels was to Egypt in the early 1900s. While there, he supposedly met the high priest of an ancient Egyptian magic cult. The priest saw Drew as the reincarnation of the cult's original leader from centuries ago (or so the story goes) and initiated Drew into the powerful magic rituals of yore. The priest also imparted to Drew a "director's cut" version of the Koran, which became known as the Circle Seven Koran. The young circus performer rechristened himself "Noble Drew Ali, the Prophet" and returned to the U.S. to spread the good word. The Circle Seven Koran was largely based on apocryphal Christian texts that said Jesus Christ, considered an important prophet by conventional Islam, traveled to India, where he lived most of his first thirty years, with side trips to Africa and Europe. If you could wade through the florid language of the Noble Drew's writings, you would find that the church was generally oriented around a series of elaborate racial theories, leavened with a healthy dose of Masonic-style occultism. The centerpiece of the Moorish Science church was an elaborate and scientifically dubious set of theories regarding racial origins. The religion was the first recognizable iteration of the Black Power movement in America, but the structure of the religion was accepting of all races. Drew rejected the appellation of "negro", and said that American blacks were properly referred to as Moors, or Moorish Americans.  Drew taught that the Moors were an "asiatic race", as were many whites, whom he identified as Celts or Persians. Although the Moorish Temple began as a primarily Moorish organization, Drew soon began to attract significant numbers of Persians, who were welcomed into the fold. Although the Circle Seven Koran has some of the typical bad things you would expect about the Jews, the Moorish Temple was relatively silent on the issue. Despite the fact that the Temple was open to "Persians," the book was quite specific on the racial issues at play in the story of Christ's crucifixion: Jesus himself was of the true blood of the ancient Canaanites and Moabites and the inhabitants of Africa. Seeking to redeem His people in those days from the pale skin nations of Europe, Rome crucified Him according to their law. While this was one of the more openly controversial claims in the Circle Seven, the main thrust of the Temple's teachings had less to do with the evils of Jews and European whites than the origins of blacks. As Moors, Drew argued, all blacks were originally Muslims. (As were many whites whose race derived from the so-called asiatic strains.) Drew said that Moor empowerment could only be found through a return to Islam. But Noble Drew's definition of Islam didn't bear much resemblance to what you might hear from a mullah at al-Azhar University. Drew taught that Morocco was the promised land of the Bible and the Koran, symbolizing a state of illuminated consciousness that was obtained through a hodge-podge of occultist and eastern mystical practices. The combination of ideas was sort of a Moorish spin on the European trend of theosophism, a 19th century movement that believed all religions are basically describing the same thing in different words. Critics of the Temple leveled charges of antinomianism against the sect's members, but the allegations weren't any more true than the 500 previous times someone had used that word to describe a religion they didn't like. He drew on Buddhism and indigenous religions to guide a practice that employed the terminology of Islam, but he structured the Moorish Temple on a Masonic blueprint, including a version of their charter and initiation procedures. A Moorish Temple charter was modeled after a Masonic lodge charter: Jurisdiction aforesaid by virtue of whose authority it exists, while acting in conformity with the laws, rules and regulations of the Home Temple and the said subordinate Temple aforesaid, being duly and lawfully organized, constituted and established, is hereby authorized and empowered to initiate and confer the degrees of said Temple in accordance with the established forms and usages upon all such persons as are duly and lawfully qualified. To promote and practice the teachings of all the true and divine prophets: Jesus, Mohammed, Buddha, Confucius, Etc. The actual theology of the church was virtually non-existent, and what little there was had a tendency to drift alarmingly. Overall, the church was in favor of love and racial pride. Its metaphysical teachings sounded a lot more like Taoism than Islam. "Man is a thought of Allah; all thoughts of Allah are infinite; they are not measured up by time, for things that are concerned with time begin and end. [...] But man, like every other thought of Allah, was but a seed, a seed that held within itself the potencies of Allah, just as the seed of any plant of earth holds deep within itself the attributes of every part of that especial plant." Temple teachings about the life of Christ featured such non-standard biblical scenes as Jesus facing off against Apollo for the title of "undisputed legitimate god," with Jesus as the decisive victor. The Greek gods return later to watch over his tomb before the resurrection. Standards for behavior were generally modeled on Islam, but not rigorously, and disciples were expected to undertake a journey of self-exploration that had a decidedly gnostic flavor. Members of the Moorish Temple were required to wear a fez; Noble Drew sported a Cherokee feather in his. They often added "Bey" or "-El" to their names, which was meant to signify Moorish descent, and members of the church could aspire to a variety of initiated titles such as Deacon, Exilarch or Papessa. The church used a flag that featured a variation of the Islamic crescent and star insignia. The Moorish Temple and its followers refused to fight in World War I, but this was an age when the phrase "uppity negro" caused more trouble for the person it was directed at than the person who uttered it. More than 20 years before Rosa Parks, New Jersey didn't take kindly to all these Moors suddenly taking pride in their race and refusing to consider themselves second class citizens. Under intense pressure, the Moorish Temple decided it was time to move on. Drew took the church to Chicago, where he had a stronger base of street-level support. In fiery speeches on the streets of the Windy City, he exhorted Moors to reject the white man's labels, such as negro, black and colored. The church did a brisk business in a variety of "Moorish" products, including various snake-oil style ointments, teas and other paraphernalia. He issued his followers "passports" to the Moorish Nation of America. He urged Americans of every color to reject hate and embrace love, proclaiming that Chicago would become the new Mecca. As history has proven time and again, promoting love instead of hate is one of the most reliable ways to ensure an early death. As the scrutiny of the Chicago police increased, the Moorish Church schismed when a member of the Temple, Claude Green, declared himself Grand Sheik and took a number of Noble Drew's followers along with him. The split quickly became extremely acrimonious, and a short time later, Green was stabbed to death by parties unknown. Drew was arrested, beaten by police, and released on bond pending an indictment. A couple of weeks later, he died. The exact circumstances around his death are as unknown as those surrounding his birth. His body was buried in a Chicago graveyard. After Drew's death, the Moorish Temple continued, but it had lost much of its fervor. The split among Drew's followers sharpened, and a series of gun battles and kidnappings erupted over the question of who would succeed him. One contender claimed to be the reincarnation of Noble Drew, a good trick since he was a fully grown adult when Drew died. Another claimed to hold Drew's secret last will and testament, which conveniently designated him to take over the Temple. During the 1950s, the remaining Moorish disciples found additional reasons to look elsewhere for their spiritual succor, when the Temple's activities drew the attention of J. Edgar Hoover and the FBI. Suspecting the Moors of collaborating with the Japanese (what with all this "asiatic" stuff), the FBI opened a file on the organization and started trying to infiltrate. By the time the FBI finally dropped its investigation of the Temple years later, its file on Moorish Science had swelled to more than 3,000 pages. Although Moorish Science continues today, in the form of various splinter groups each claiming the true succession of the Moorish ideal, the Temple was largely obscured by the rise of the Nation of Islam, which had sprung directly from one of the splinters. Many Moorish followers turned to the Nation of Islam during the 1940s and 1950s, or to traditional Islam, a movement which started to gather steam around the 1970s. One such convert, Clement Rodney Hampton-El, gained notoriety when he later became an al Qaeda-linked terrorist known as Dr. Rashid. Today, there aren't enough Moorish followers to show up in a demographic study. The total number is estimated at somewhere between a couple hundred and tens of thousands (a generous estimate). Barring a particularly colorful second coming by Noble Drew Ali, Moorish Science is probably destined to become a historical footnote. But thanks to the FBI's extensive documentation of the sect's every move, no matter how trivial, Moorish Science will at least be an extraordinarily well-documented footnote, and that counts for something. Resources: 3,117 Pages of FBI Documents on the Surveillance of the Moorish Science Temple |


LiveCharts is not a drawing library, it is more like an algebra library, the process to render a chart is the next: the core of the library reads the size of the canvas in the view, WPF in this case, then according to the data in the chart it calculates the size and position of every label and shape required by each series, axis or legend in the chart, finally the core says to the view, hey! you need to draw a line here, and a rectangle here and please add a label here too.
This way we have native controls according to each platform, once we are ready with WPF we can "easily" create the view for some other platform using its native drawing tools or if the platform is not good enough then use any other 3rd party component to render our charts.
We can say that the library has 2 main processes, Calculus and Rendering, the first one is normally really fast, sadly as any other WPF control, rendering has a poor performance when it is not used correctly.
In general to improve performance you must:
The geared package is a set of light weight series that connects with this library, it allows your charts to have million of points, and keep your UI responsive.
It has a low price compared with any other charting library, and many of them do not offer a lot of features LiveCharts does, learn more about this package it will surely boost you application
You can easily turn off animations when you need a better performance
cartesianChart1.DisableAnimations = true;
a) With version 1.x and lower, you must not enable Series.DataLabels when you have big data sets, because they are both, hard to read and heavy with the UI.
b) Keep the number of visual elements, sections and axes lower than 25.
c) When possible, disable hovering, use a null tooltip and remove any DataClick event from your chart, this is not necessary if you are using the Geared package.
cartesianChart1.Hoverable = false; cartesianChart1.DataTooltip = null;
When you are sure your strokes, fills or PointGeometies are not going to change then freeze them. By default since 0.7.15 version, default strokes, fills and geometries are frozen, you can find more information about it here
When adding a range of values to your chart, then please use the .AddRange() method, it is not a good practice to call the .Add() method multiple times in a short period of time
Do Notvar cv = new ChartValues<double>(); for (var i = 0; i < 1000; i++){ cv.Add(5); }Instead Do
var temporalCv = new double[1000]; for (var i = 0; i < 1000; i++){ temporalCv[i] = 5; } var cv = new ChartValues<double>(); cv.AddRange(temporalCv); //or you can also var cv = temporalCv.AsGearedValues();


General Contact Information
- E-mail<EMAIL_ADDRESS>- School phone:<PHONE_NUMBER>
- Website
Everything you could ever want to know about being a teacher at L'Etoile French Immersion School!
Don't see something that you think should be on this site? Contact Me


This tool is for M+ Online users to help them make sense of the M+ Daily Business Done report. It will calculate profit/loss and summarize the trades done.
- Open “Daily Business Done” page.
- Select all content in the page and copy them.
- Then in this tool, click on on the "Add Input" button and paste the copied content into the textarea input. Click the "Process" button.
- The tools will parse the input and produce trade summary and calculate open and closed positions.
- Closed positions are stocks that you have sold. Profit/loss will be calculated from these.
- Open positions are stocks that you bought and still holding.
- You can do the "Add Input" process multiple times and the tool will keep records of your input. But be careful not to add the same input multiple times, they will duplicate.
- Data is saved in your browser, not in some server. It can load back when you open this tool with the same browser next time. But to really keep your data safe, it is advised for you to use the "Export Data" feature. Save the data into a text file or Excel.
- You can insert back the data by copy-pasting it into the "Add Input" textarea. You might want to use the "Clear Data" feature first to make sure data is not duplicated.
- Hope this helps! For bug reports and suggestions, click here.


{% extends 'messenger/base_messages.html' %} {% block title %}
Keep your chat short & concise.
If you don't have any contacts, click the button below to send message requests to network users.
Send Requests


Hystrix-Box Tutorial¶
Note
This tutorial only cover the basic tools of Hystrix-Box
Install and run Hystrix-Box¶
Install dependencies¶
Hystrix-Box supports Python 3.6 and above
To check whether you have an appropriate version of Python 3:
1 | $ python3 --version
|
If this does not return a version number or returns a version lower than 3.5, you will need to install Python 3
Install Hystrix-Box¶
Use pip, which is packaged with Python, to install Hystrix-Box and its dependencies:
1 | $ pip install hystrix-box
|
Add API keys¶
Open HystrixBox/keys.py and change the vars values corsponed to your API keys
you got when registering to Oxford Dictionaries


Coronavirus UK
UK Covid Graphs
Area Type:
Upper Tier Local Authority
Lower Tier Local Authority
Area:


Responsive design is cool, and since we use iPads at school, I want to make my pages responsive.
Drag the screen to resize the page.
Width of page:


The Problem¶
Code in books is full of bugs. This is a natural consequence of the way books and code are developed differently. It is not common to write code in a book that can be executed in place. The idea of having a single source document that includes both the source code and a prose description is called Literate Programming.
The prosecode library was written in response to a desire to have the following features:
The ability to integrate executable python code into markdown files so that the output could be inserted inline. (This is possible using the Markdown-Preview-Enhanced plugin for Atom or VS-Code).
The ability to pull that code out into separate libraries for testing and distribution.
The ability to provide fine-grained control over LaTeX generated from the markdown files (with executed code inline).
The main test case for the library was the generation of the book: A First Course in Data Structures in Python. This open source textbook is available here <https://donsheehy.github.io/datastructures>`_


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
Hierarchy For All Packages
Package Hierarchies:
com.Upwork
,
com.Upwork.api
,
com.Upwork.api.Routers
,
com.Upwork.api.Routers.Activities
,
com.Upwork.api.Routers.Freelancers
,
com.Upwork.api.Routers.Hr
,
com.Upwork.api.Routers.Hr.Clients
,
com.Upwork.api.Routers.Hr.Freelancers
,
com.Upwork.api.Routers.Jobs
,
com.Upwork.api.Routers.Organization
,
com.Upwork.api.Routers.Reports
,
com.Upwork.api.Routers.Reports.Finance
Class Hierarchy
java.lang.Object
com.Upwork.api.Routers.Reports.Finance.
Accounts
com.Upwork.api.Routers.Hr.Freelancers.
Applications
com.Upwork.api.Routers.Hr.Clients.
Applications
com.Upwork.api.Routers.
Auth
com.Upwork.api.Routers.Reports.Finance.
Billings
com.Upwork.api.Routers.Organization.
Companies
com.Upwork.api.
Config
com.Upwork.api.Routers.Hr.
Contracts
com.Upwork.api.Routers.Reports.Finance.
Earnings
com.Upwork.api.Routers.Activities.
Engagement
com.Upwork.api.Routers.Hr.
Engagements
com.Upwork.api.Routers.
Graphql
com.Upwork.api.Routers.Hr.
Interviews
com.Upwork.api.Routers.Hr.
Jobs
com.Upwork.api.Routers.
Messages
com.Upwork.api.Routers.
Metadata
com.Upwork.api.Routers.Hr.
Milestones
com.Upwork.api.
OAuthClient
com.Upwork.api.Routers.Hr.Freelancers.
Offers
com.Upwork.api.Routers.Hr.Clients.
Offers
com.Upwork.api.Routers.
Payments
com.Upwork.api.Routers.Jobs.
Profile
com.Upwork.api.Routers.Freelancers.
Profile
com.Upwork.api.Routers.Hr.
Roles
com.Upwork.api.Routers.Jobs.
Search
com.Upwork.api.Routers.Freelancers.
Search
com.Upwork.api.Routers.
Snapshot
com.Upwork.api.Routers.Hr.
Submissions
com.Upwork.api.Routers.Activities.
Team
com.Upwork.api.Routers.Organization.
Teams
com.Upwork.api.Routers.Reports.
Time
com.Upwork.api.
UpworkRestClient
com.Upwork.api.Routers.Organization.
Users
com.Upwork.api.Routers.
Workdays
com.Upwork.api.Routers.
Workdiary
Annotation Type Hierarchy
com.Upwork.
ClassPreamble
(implements java.lang.annotation.Annotation)
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


You have a search engine's query log of the form:
[userid],[timestamp],[query],[url],[click],[dwell-time]
where the userid is the IP address of the user and the timestamp is the time at which the action took place (in epoch).
The user either submits a query to the search engine (in which case query contains the query string submitted, otherwise this value is empty) or views a result list and clicks on a URL (stored in click, otherwise this value is empty). If the user clicked a URL, the log also shows the amount of time in seconds the user spent on the URL (the dwell-time).
A concrete toy example of a query log is the following:
312121,1417789177,britney spears,,,,
312121,1417789245,britnay spears,,,,
324325,1417712245,tom jones,,,,
312121,1417789247,,http://en.wikipedia.org/wiki/Britney_Spears,25
324325,1417712111,tom jones singer,,,,
324325,1417712121,,http://en.wikipedia.org/wiki/Tom_Jones_%28singer%29,1
324325,1417712240,,http://www.tomjones.com/,987
Here, user 312121 searches twice for Britney Spears (different spellings) and later clicks on the Wikipedia link and spends 25 seconds on it. The user 324325 searches for Tom Jones and visits Wikipedia for 1 second and then spends a lot of time on the official Tom Jones web site. The log is neither sorted by userid nor by time.
We want to know the number of unique queries submitted. To do this, we need to write a Hadoop job that contains:


Design a 3D mold, machine it, and use it to cast parts
In this week I was trying to make mold in which any access left material can be used to cast a Paper Weight and left over material get used.
Paper Weight is Oval Shaped Design which can be used for playing with by spinning it on table.
CAD Design
Creating a 3D .stl File to Mill using Roland MX 20


Mini auto-pointer for internal memory management. More...
#include <bmutil.h>
Public Member Functions | |
| ptr_guard (T *p) | |
| ~ptr_guard () |
Mini auto-pointer for internal memory management.
Definition at line 105 of file bmutil.h.
| bm::ptr_guard< T >::ptr_guard | ( | T * | p | ) | [inline] |
| bm::ptr_guard< T >::~ptr_guard | ( | ) | [inline] |


{{ track.name }}
{{ artist.name }},
{{ track.album.name }}
{{ playCount }} plays
{{ timer.elapsedTime | date: "H:mm:ss" | removeLeadingZeros }} / {{ track.duration || track.duration_ms | date: "H:mm:ss" | removeLeadingZeros }}


Jeon So Mi to take college entrance exam this month
by germainejJeon So Mi will be taking the college entrance exam this month.
On November 5, her agency The Black Label revealed Jeon So Mi is planning to take the 'College Scholastic Ability Test' for 2020. The Black Label stated, "Jeon So Mi is in her third year at Hanlim Arts School, and she'll be taking the 2020 College Scholastic Ability Test, which will take place on November 14."
Despite her busy schedule and solo debut with "Birthday" this past June, the singer has been regularly attending school after entering Hanlim Arts School in March of 2017.
In other news, Jeon So Mi and her father Matthew Douma are appearing on SBS's 'Law of the Jungle' in Micronesia.


--- layout: post title: "Using TAIGA" description: "" category: tags: [] ---
I've been using this amazing tool to manage my thins, projects in my work.
Free. Open Source. Powerful. Taiga is a project management platform for startups and agile developers & designers who want a simple, beautiful tool that makes work truly enjoyable.
Try it! Access: https://taiga.io/


{% include head.html %}
{% include coa-header.html %}
{{page.title}}
City of Austin Transportation Department
Signal Operations
Signals on Flash
Signal Assets
Signal Timing
Traffic Signal Requests
Device Status
Maps + Resources
Traffic Signals
Data Tracker
Open Data Inventory
Open Data Inventory
City of Austin GitHub
{% include footer.html %} {% if page.custom_js %} {% for js_file in page.custom_js %} {% endfor %} {% endif %}


| Name | Total Lines | Lines of Code | Total Coverage | Code Coverage |
|---|---|---|---|---|
| spec/controllers/vehicles_controller_spec.rb | 207 | 173 | 99.52%
|
99.42%
|
Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.
1 require 'D:/Projects/CS169/Rides/spec/spec_helper.rb' |
2 |
3 describe VehiclesController do |
4 before(:each) do |
5 @person = create_valid!("Person") |
6 @vehicle = create_valid!("Vehicle", :owner => @person) |
7 end |
8 |
9 describe "GET new" do |
10 context "when not logged in" do |
11 it "redirects to the signin page" do |
12 get :new |
13 response.should redirect_to(:controller => "devise/sessions", :action => "new") |
14 end |
15 end |
16 |
17 context "when logged in" do |
18 before(:each) do |
19 signin(@person) |
20 end |
21 |
22 it "assigns to @vehicle a new Vehicle" do |
23 get :new |
24 assigns[:vehicle].should be_an_instance_of(Vehicle) |
25 assigns[:vehicle].attributes.should == Vehicle.create(:owner => @person).attributes |
26 end |
27 |
28 it "renders the new template" do |
29 get :new |
30 response.should render_template("new") |
31 end |
32 end |
33 end |
34 |
35 describe "GET edit" do |
36 context "when not logged in" do |
37 it "redirects to the signin page" do |
38 get :edit, :id => @vehicle.id |
39 response.should redirect_to(:controller => "devise/sessions", :action => "new") |
40 end |
41 end |
42 |
43 context "when logged in" do |
44 before(:each) do |
45 @person.vehicles.stub(:find).and_return(@vehicle) |
46 signin(@person) |
47 end |
48 |
49 it "finds the vehicle" do |
50 @person.vehicles.should_receive(:find).with(@vehicle.id).and_return(@vehicle) |
51 get :edit, :id => @vehicle.id |
52 end |
53 |
54 it "renders the edit template" do |
55 get :edit, :id => @vehicle.id |
56 response.should render_template("edit") |
57 end |
58 end |
59 end |
60 |
61 describe "POST create" do |
62 context "when not logged in" do |
63 it "redirects to the signin page" do |
64 post :create |
65 response.should redirect_to(:controller => "devise/sessions", :action => "new") |
66 end |
67 end |
68 |
69 context "when logged in" do |
70 before(:each) do |
71 Vehicle.stub(:new).and_return(@vehicle) |
72 signin(@person) |
73 end |
74 |
75 it "creates a new vehicle with the given parameters" do |
76 Vehicle.should_receive(:new).with("make" => "Make").and_return(@vehicle) |
77 post :create, :vehicle => {"make" => "Make"} |
78 end |
79 |
80 it "saves the vehicle" do |
81 @vehicle.should_receive(:save) |
82 post :create |
83 end |
84 |
85 context "when the vehicle is successfully saved" do |
86 before(:each) do |
87 @vehicle.stub(:save).and_return(true) |
88 end |
89 |
90 it "sets a flash[:notice] message" do |
91 post :create |
92 flash[:notice].should == "Vehicle was successfully added." |
93 end |
94 |
95 it "redirects to the edit profile page" do |
96 post :create |
97 response.should redirect_to(:controller => "devise/registrations", :action => "edit") |
98 end |
99 end |
100 |
101 context "when the vehicle fails to be saved" do |
102 before(:each) do |
103 @vehicle.stub(:save).and_return(false) |
104 end |
105 |
106 it "assigns to @vehicle a new vehicle" do |
107 post :create |
108 assigns[:vehicle].should be(@vehicle) |
109 end |
110 |
111 it "renders the new template" do |
112 post :create |
113 response.should render_template("new") |
114 end |
115 end |
116 end |
117 end |
118 |
119 describe "PUT update" do |
120 context "when not logged in" do |
121 it "redirects to the signin page" do |
122 put :update, :id => @vehicle.id |
123 response.should redirect_to(:controller => "devise/sessions", :action => "new") |
124 end |
125 end |
126 |
127 context "when logged in" do |
128 before(:each) do |
129 @person.vehicles.stub(:find).and_return(@vehicle) |
130 signin(@person) |
131 end |
132 |
133 it "finds the vehicle" do |
134 @person.vehicles.should_receive(:find).with(@vehicle.id).and_return(@vehicle) |
135 put :update, :id => @vehicle.id |
136 end |
137 |
138 it "updates the vehicle" do |
139 @vehicle.should_receive(:update_attributes).with("make" => "New Make") |
140 put :update, :id => @vehicle.id, :vehicle => {"make" => "New Make"} |
141 end |
142 |
143 context "when the vehicle is successfully updated" do |
144 before(:each) do |
145 @vehicle.stub(:update_attributes).and_return(true) |
146 end |
147 |
148 it "sets a flash[:notice] message" do |
149 put :update, :id => @vehicle.id |
150 flash[:notice].should == "Vehicle was successfully updated." |
151 end |
152 |
153 it "redirects to the edit profile page" do |
154 put :update, :id => @vehicle.id |
155 response.should redirect_to(:controller => "devise/registrations", :action => "edit") |
156 end |
157 end |
158 |
159 context "when the vehicle fails to be updated" do |
160 before(:each) do |
161 @vehicle.stub(:update_attributes).and_return(false) |
162 end |
163 |
164 it "assigns to @vehicle the vehicle" do |
165 put :update, :id => @vehicle.id |
166 assigns[:vehicle].should be(@vehicle) |
167 end |
168 |
169 it "renders the edit template" do |
170 put :update, :id => @vehicle.id |
171 response.should render_template("edit") |
172 end |
173 end |
174 end |
175 end |
176 |
177 describe "DELETE destroy" do |
178 context "when not logged in" do |
179 it "redirects to the signin page" do |
180 delete :destroy, :id => @vehicle.id |
181 response.should redirect_to(:controller => "devise/sessions", :action => "new") |
182 end |
183 end |
184 |
185 context "when logged in" do |
186 before(:each) do |
187 @person.vehicles.stub(:find).and_return(@vehicle) |
188 signin(@person) |
189 end |
190 |
191 it "finds the vehicle" do |
192 @person.vehicles.should_receive(:find).with(@vehicle.id).and_return(@vehicle) |
193 delete :destroy, :id => @vehicle.id |
194 end |
195 |
196 it "destroys the vehicle" do |
197 @vehicle.should_receive(:destroy) |
198 delete :destroy, :id => @vehicle.id |
199 end |
200 |
201 it "redirects to the edit profile page" do |
202 put :update, :id => @vehicle.id |
203 response.should redirect_to(:controller => "devise/registrations", :action => "edit") |
204 end |
205 end |
206 end |
207 end |
Generated on 2010-11-22 21:31:46 -0800 with rcov 0.9.8


Ambiguities in the Hanle effect in the saturation regime
In the saturation regime of the Hanle effect, Stokes \(Q\) and
\(U\) are insensitive to the field strength, but are sensitive to
the geometry of the field. For a \(J=0 \to J=1\) transition, the
linear polarization can be written as:
\[\begin{split}\begin{aligned}
Q &=& \frac{q}{2} \left( 3 \cos^2 \theta_B-1 \right) \sin^2\Theta_B \cos 2\Phi_B \nonumber \\
U &=& \frac{q}{2} \left( 3 \cos^2 \theta_B-1 \right) \sin^2\Theta_B \sin 2\Phi_B.\end{aligned}\end{split}\]
These expressions contain a mixture of angles to make it clear that the
polarization amplitude depends on both the angle between the vertical
and the magnetic field and between the magnetic field and the
line-of-sight (LOS).
The coordinates of the magnetic field vector \(\mathbf{B}\) in the
reference system of the vertical and the reference system of the LOS
are:
\[\begin{split}\begin{aligned}
\mathbf{B} &=& B \left(\sin \theta_B \cos \phi_B \mathbf{i}+\sin \theta_B \sin \phi_B \mathbf{j}+\cos \theta_B \mathbf{k} \right) \nonumber \\
\mathbf{B} &=& B \left(\sin \Theta_B \cos \Phi_B \mathbf{i}'+\sin \Theta_B \sin \Phi_B \mathbf{j}'+\cos \Theta_B \mathbf{k}' \right),\end{aligned}\end{split}\]
where the unit vectors are related by a simple rotation:
\[\begin{split}\begin{aligned}
\mathbf{i}' &=& \cos \theta \mathbf{i} - \sin \theta \mathbf{k} \nonumber \\
\mathbf{k}' &=& \sin \theta \mathbf{i} + \cos \theta \mathbf{k}.\end{aligned}\end{split}\]
Introducing these relations on the expression for the magnetic field,
we find that the following has to be fulfilled, given that the magnetic
field vector is the same in both reference systems:
\[\begin{split}\begin{aligned}
\sin \theta_B \cos \phi_B &=& \sin \Theta_B \cos \Phi_B \cos \theta + \cos \Theta_B + \sin \theta \nonumber \\
\sin \theta_B \sin \phi_B &=& \sin \Theta_B \sin \Phi_B \nonumber \\
\cos \theta_B &=& \cos \Theta_B \cos \theta - \sin \Theta_B \cos \Phi_B \sin \theta.\end{aligned}\end{split}\]
Solving the previous three equations in the two directions, we find the
following transformations between the angles in the vertical reference
system and the LOS reference system:
\[ \begin{align}\begin{aligned}\begin{split} \begin{aligned}
\cos \Theta_B &=& \cos\theta \cos\theta_B + \sin\theta \sin\theta_B \cos\phi_B \nonumber \\
\sin \Theta_B &=& +\sqrt{1-\cos^2\Theta_B} \nonumber \\
\cos \Phi_B &=& \frac{\cos\theta \sin\theta_B \cos\phi_B - \cos\theta_B \sin\theta}{\sin \Theta_B} \nonumber \\
\sin \Phi_B &=& \frac{\sin\theta_B \sin\phi_B}{\sin\Theta_B}\end{aligned}\end{split}\\and\end{aligned}\end{align} \]
\[\begin{split}\begin{aligned}
\cos \theta_B &=& \cos\theta \cos\Theta_B - \sin\theta \sin\Theta_B \cos\Phi_B \nonumber \\
\sin \theta_B &=& +\sqrt{1-\cos^2\theta_B} \nonumber \\
\cos \phi_B &=& \frac{\cos\theta \sin\Theta_B \cos\Phi_B + \cos\Theta_B \sin\theta}{\sin \theta_B} \nonumber \\
\sin \phi_B &=& \frac{\sin\Theta_B \sin\Phi_B}{\sin\theta_B}.\end{aligned}\end{split}\]
Note that, since \(\Theta_B \in [0,\pi]\), we can safely use the
square root and take the positive value. In order to transform from one
reference system to the other, we can compute the inclination easily by
inverting the sinus or the cosinus. However, the situation is different
for the azimuth, because the range of variation is \([-\pi,\pi]\).
Therefore, one has to compute the cosinus and the sinus separately and
the decide which is the correct quadrant fo the angle in terms of the
signs of both quantities.
Four possible kinds of ambiguities can exist for the Stokes \(Q\)
and \(U\) parameters. The idea is that \(\Phi_B\) can be
modified and still obtain the same \(Q\) and \(U\) by properly
adjusting the value of \(\Theta_B\). It is clear that, given that
the term that can be used to compensate for the change in the azimuth on
the LOS reference system is the same for Stokes \(Q\) and \(U\),
we can only compensate for changes in the sign. Therefore, we have the
following potential ambiguities:
\[\begin{split}\begin{aligned}
\Phi_B' &=& \Phi_B \nonumber \\
\Phi_B' &=& \Phi_B -\pi/2 \nonumber \\
\Phi_B' &=& \Phi_B + \pi/2 \nonumber \\
\Phi_B' &=& \Phi_B + \pi.\end{aligned}\end{split}\]
For each case, we have to compute the value of \(\Theta_B'\) that
keeps the value of \(Q\) and \(U\) unchanged. Therefore, once we
find a solution to the inversion problem in the form of the pair
\((\theta_B,\phi_B)\), we can find the remaining solutions in the
saturation regime following the recipes that we present now. Remember
that, unless one knows the polarity of the field, or in other words, the
sign \(\cos\Theta_B\), the number of potential ambiguous solutions
is 8. If the polarity of the field is known, the number is typically
reduced to 4 (or 2 if no 90\(^\circ\) ambiguity is present).
\(\Phi_B’=\Phi_B\)
Under this change, we have that
\[ \begin{align}\begin{aligned}\cos 2\Phi_B' = \cos 2\Phi_B, \quad \sin 2\Phi_B' = \sin 2\Phi_B, \quad \cos \Phi_B' = \cos \Phi_B, \quad \sin \Phi_B' = \sin \Phi_B.\\Making use of the previous relations between the angles wrt to the\end{aligned}\end{align} \]
vertical and the LOS, we have to solve the following equation:
\[ \begin{align}\begin{aligned}\left( 3 \cos^2\theta_B'-1 \right) \sin^2 \Theta_B' = \left( 3 \cos^2\theta_B-1 \right) \sin^2 \Theta_B,\\which can be written as:\end{aligned}\end{align} \]
\[\left[ 3 \left( \cos \Theta_B' \cos \theta - \sin\theta \sin\Theta_B' \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B' =
\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\]
After some algebra and doing the substitution \(t=\sin\Theta_B'\),
we end up with the following equation to be solved:
\[A t^4 + Bt^2 + C t^3 \sqrt{1-t^2} = K,\]
where
\[\begin{split}\begin{aligned}
A &=& -3\cos^2 \theta + 3\sin^2 \theta \cos^2 \Phi_B \nonumber \\
B &=& 3\cos^2 \theta - 1 \nonumber \\
C &=& -6 \cos\theta \sin\theta \cos \Phi_B \nonumber \\
K &=& \left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\end{aligned}\end{split}\]
The previous equation can be solved if we make the change of variables
\(t=\pm \sqrt{Z}\), resulting in:
\[(C^2+A^2) Z^4 + (-C^2+2AB) Z^3 + (-2AK+B^2) Z^2 - 2BKZ + K^2 = 0.\]
This polynomial of 4-th order can have four different solutions. From
these solutions, we have to take only the real solutions which are
larger than 0, given the range of variation of \(\Theta_B\):
\[t \in \mathbb{R}, \qquad 0 \leq t \leq 1.\]
Once the solutions for \(t\) are found, we make
\(\Theta_B' = \arcsin t\). Note that, for a fixed value of
\(t\), two values of \(\Theta_B'\) are possible. We choose the
correct one by evaluating the expressions for \(Q\) and \(U\)
and testing which of the two possible choices give the values equal (or
very similar) to the original ones.
The angles \((\theta_B,\phi_B)\) are obtained by doing the
transformation from \((\Theta_B',\Phi_B)\) to the vertical reference
system.
\(\Phi_B’=\Phi_B+\pi\)
Under this change, we have:
\[\cos 2\Phi_B' = \cos 2\Phi_B, \quad \sin 2\Phi_B' = \sin 2\Phi_B, \quad \cos \Phi_B' = -\cos \Phi_B, \quad \sin \Phi_B' = -\sin \Phi_B.\]
Following the same approach, we have to solve for \(\Theta_B'\) in
\[\left[ 3 \left( \cos \Theta_B' \cos \theta + \sin\theta \sin\Theta_B' \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B' =
\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\]
The solution are obtained as the roots of the same equations as before
but now
\[\begin{split}\begin{aligned}
A &=& -3\cos^2 \theta + 3\sin^2 \theta \cos^2 \Phi_B \nonumber \\
B &=& 3\cos^2 \theta - 1 \nonumber \\
C &=& 6 \cos\theta \sin\theta \cos \Phi_B \nonumber \\
K &=& \left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\end{aligned}\end{split}\]
The angles \((\theta_B,\phi_B)\) are obtained by doing the
transformation from \((\Theta_B',\Phi_B+\pi)\) to the vertical
reference system.
\(\Phi_B’=\Phi_B+\pi/2\)
Under this change, we have:
\[\cos 2\Phi_B' = -\cos 2\Phi_B, \quad \sin 2\Phi_B' = -\sin 2\Phi_B, \quad \cos \Phi_B' = -\sin \Phi_B, \quad \sin \Phi_B' = \cos \Phi_B.\]
Following the same approach, we have to solve for \(\Theta_B'\) in
\[\left[ 3 \left( \cos \Theta_B' \cos \theta + \sin\theta \sin\Theta_B' \sin\Phi_B\right)^2-1 \right] \sin^2 \Theta_B' =
\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\]
The solution are obtained as the roots of the same equations as before
but now
\[\begin{split}\begin{aligned}
A &=& -3\cos^2 \theta + 3\sin^2 \theta \sin^2 \Phi_B \nonumber \\
B &=& 3\cos^2 \theta - 1 \nonumber \\
C &=& 6 \cos\theta \sin\theta \sin \Phi_B \nonumber \\
K &=& -\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\end{aligned}\end{split}\]
The angles \((\theta_B,\phi_B)\) are obtained by doing the
transformation from \((\Theta_B',\Phi_B+\pi/2)\) to the vertical
reference system.
\(\Phi_B’=\Phi_B-\pi/2\)
Under this change, we have:
\[\cos 2\Phi_B' = -\cos 2\Phi_B, \quad \sin 2\Phi_B' = -\sin 2\Phi_B, \quad \cos \Phi_B' = \sin \Phi_B, \quad \sin \Phi_B' = -\cos \Phi_B.\]
Following the same approach, we have to solve for \(\Theta_B'\) in
\[\left[ 3 \left( \cos \Theta_B' \cos \theta + \sin\theta \sin\Theta_B' \sin\Phi_B\right)^2-1 \right] \sin^2 \Theta_B' =
\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\]
The solution are obtained as the roots of the same equations as before
but now
\[\begin{split}\begin{aligned}
A &=& -3\cos^2 \theta + 3\sin^2 \theta \sin^2 \Phi_B \nonumber \\
B &=& 3\cos^2 \theta - 1 \nonumber \\
C &=& -6 \cos\theta \sin\theta \sin \Phi_B \nonumber \\
K &=& -\left[ 3 \left( \cos \Theta_B \cos \theta - \sin\theta \sin\Theta_B \cos\Phi_B\right)^2-1 \right] \sin^2 \Theta_B.\end{aligned}\end{split}\]
The angles \((\theta_B,\phi_B)\) are obtained by doing the
transformation from \((\Theta_B',\Phi_B-\pi/2)\) to the vertical
reference system.


MCCE Developer Manual
Public Attributes
|
List of all members
PROT Struct Reference
Collaboration diagram for PROT:
[
legend
]
Public Attributes
int
n_res
RES
*
res
double
E_base
double
E_state
double
E_min
double
E_accum
double
E_free_unfold
float *
H
float *
e
float *
sum_crg
int
n_group
GROUP
*
group
int
nc
CONF
**
conf
int
n_saved
UNIQ_STATE
*
saved_states
The documentation for this struct was generated from the following file:
/home/mcce/mcce3.5/
mcce.h
PROT
Generated by
1.8.10


node-ignore
5 ChangeLog
5.x
2018-08-14, Version 5.0.1
- PATCH: fixes for windows.
- PATCH: improves tests for typescript and windows.
2018-08-13, Version 5.0.0
- SEMVER-MAJOR: #20: it will throw if an invalid pathname passes into
.ignores(pathname)
, see Upgrade 4.x -> 5.x.
- FEATURE: #31: adds a new method
.test(pathname)
.
- BENCHMARK: improves performance by 26%.
4.x
2018-08-12, Version 4.0.6
- PATCH:
Object.prototype
methods will not ruin the result any more.
~ 2018-08-09, Version 4.0.1 - 4.0.5
- PATCH: updates README.md about frequent asked quesions from github issues.
2018-06-22, Version 4.0.0
- SEMVER-MAJOR: Drop support for node < 6 by default.
- FEATURE: supports the missing character ranges and sets, such as
*.[a-z]
and *.[jJ][pP][gG]
- FEATURE: new option:
ignorecase
to make ignore
case insensitive.
- FEATURE: supports question mark which matches a single character.
- PATCH: fixes typescript declaration.


c.1978 Exegesis by Philip K. Dick
The belief that we are pluriforms of God voluntarily descended to this prison world, voluntarily losing our memory, identity and supernatural powers (faculties), all of which can be regained through anamnesis (or, sometimes, the mystical conjunction), is one of the most radical religious views known in the West. But it is known. It is regarded as the Great Blasphemy: replication of the original sin mentioned in the First Book of Adam and Eve and in Genesis. For this pride and aspiration (we are told by orthodoxy) our original fall and exile and punishment, our being taken from our home the gardenland and put into the prison, was inflicted on us. "They wish to be equal to - like - us," the Elohim say, and toss us down. Yet I have reason to believe that this, "the Great Satanic Blasphemy," is true.
First, we are here voluntarily. We did not sin and we were not punished; we elected to descend. Why? To infuse the divine into the lowest strata of creation in order to halt its decomposing - the sinking of its lower realm. This points to a primordial crisis in creation in the total macrocosm (hexagram 12, as illustrated here). The yin form two (dark, deterministic) part was splitting away from the yang or form one. In conventional terms, heaven (upper realm) and earth (lower realm) were separating, carrying the lives within the lower away from their form one (upper) counterparts (this can be viewed as the Godhead itself falling apart, into its yang and yin two halves, with the lower form universe as God expressed physically in time and space). The solution was for the divine (yang, light, form one) to follow the lower realm down, permeating it and thus reuniting the cosmos into one totality. To do this, elements (in ancient terms, sparks) of light advanced (descended) into the dark kingdom, the immutable prison world; upon doing so they shed (and knew they would shed) their bright nature, memory, identity, faculties, and powers, and fell under the dominion of the delusion that the dark kingdom is real (which when severed from the upper realm it is not; i.e. the world we presently live in doesn't exist). There they have lived as prisoners of the master magician, lord of the dark realm who poses as the creator (and who may not know of the light god, the true creator, his other half). But the light god and his pluriforms, the descending (invading) sparks, have cunningly distributed clues in the dark realm to recall to the drugged and intoxicated sparks of light their true nature and mission (and true source of home). Upon encountering these cryptic clues the forgetful sparks of the upper realm, now prisoners in and of the lower realm, remember, regain their powers and faculties, and link back up with the upper realm and the light god; they are the light god in pluriform, his way of invading the lower realm in disguise. The light god (the divine) has now crucially occupied critical stations in the sinking lower realm, and begins the reannexing of it back into the totality composed of both realms. The sinking ceases; the master magician is stripped of his autonomy and assimilated to the yang part of the Godhead as its passive counterpart, and once more there is one macrocosm ruled by the yang or active (creative) light god assisted by the now receptive yin (dark) side. The divine has triumphed at all levels; the prison is burst, and the vast, light-filled garden kingdom restored as the home of all creatures. These now whole creatures, composed equally of yin and yang, are what I term homoplasmates: The yin part is home (as we know ourselves to be now, only), and the light or yang part is the plasmate or energy part (vs. the physical).  Reality is imparted to the otherwise irreal lower realm, and the upper realm now extends physically into the realm of matter. The integrity of the Godhead is restored; its two halves function in harmony; and the primordial split (or crisis) is resolved - healed.
This is a view compounded of Zoroastrianism, Brahmanism, Gnosticism, Taoism, the macro-microcosmos of Hermes Trismegistus and other mystery religions, and not very much of orthodox Christianity. Christianity can be added if the pluriform microsparks of light are considered plural saviors or Christs comprising a single mystical corpus that is distributed widely in time and space in the dark realm but possessing only one psyche that is somehow also God, the yang or light god.
I have read the above cosmology over, and find no fault in it. In fact, I am amazed. It is in a sense acosmic, and certainly Gnostic, but the Taoist overlay is novel and pleasing; the Taoist overlay redeems it from the flaws of conventional dualist religions and the problems therein. Instead of stressing moral aspects ("good vs. bad"), it stresses epistemological ("real vs. irreal," which I can understand). The lower realm sinks not because it is corrupt or evil or somehow has rebelled but because, as shown in hexagram 12, it is the nature of yin to sink, as it is the nature of yang to rise. The pre-Socratics (and Plato in "Timaeus") were aware of this; v. the model of the winnowing fan and the concept of the vortex. Yang must assimilate yin to keep the totality intact; i.e. yang must renounce its natural tendency to rise and must descend. It cannot expect yin to rise, because yin is not wise; it is only noos that can understand that it must compensate against its own natural tendencies, and do what is unnatural to it. Yin is, so to speak, thick, unthinking, not noos [mind] but soma [body]; noos and soma (or psyche and soma) are the total universe organism. Descending into the yin realm is a sacrifice on yang's part, which through its bright or wise nature it realizes it must make, but it pays a great cost in terms of suffering: loss of memory and identity, abilities, and faculties: It becomes pseudoyin, literally disguised in the yin realm as if it were actually yin, even to the point of forgetting (until reminded), that it is not. This is the agony we face here in this irreal and dense yin realm, we yang traces: This is not our home. We are voluntary exiles here, alienated and alone, violating our own natures for a salvific purpose - a necessary purpose. Yin would not understand this, and until anamnesis sets in for us, we in our distress do not understand the reason either. Eventually it will be revealed to us; meanwhile we ache with longing for our proper home, dimly remembered but deeply felt for. Thus we suppose we are being punished; it feels like punishment, and we make the error of assuming we have sinned. On the contrary; we have renounced joy now, to produce greater joy later, for the good of all creation; we are the Godhead itself suffering the need to be what it is not, to ensure the ultimate stability of krasis (as Empedocles termed it): the unity of love.
Lest any Christian reject this, let him now read the Fourth Gospel in connection with this, and see for himself the similarities.
Lest any Taoist reject this, let him now see that hexagram 12
has turned to hexagram 11, Peace:
The upper trigram, in descending, has forced the lower trigram to rise. Disorder no longer reigns; heaven and earth are not pulling apart. There is harmony.
Moral: It is the ethical requirement placed on the yang traces by their own bright nature to abandon their natural tendency to rise, to escape what is heavy and dark and sinking; they must go in pursuit of the falling part of the cosmos, for the benefit of those and that which otherwise would be lost. This is the highest law: to violate one's own nature for another's good. And the most difficult - and painful - law to fulfill. Because of this need there is distress in the cosmos, distress for the innocent especially. My cosmology simply presents it as a fact. To escape it we would have to allow the cosmos to decompose. Could we do that? The tragedy is that by the very nature of the sacrifice we make we are occluded from knowing why. This is part of our sacrifices: our yang understanding. We must take on the dullness of yin to save the cosmos; we sacrifice the knowledge of why we sacrifice, and assume guilt - spurious guilt - in its place. This is asking a lot.
But consider who we really are. Or once were and will be again. Who else can do it? There is no one else. There is only yin, which does not know. The part of the organism that knows must help the part that doesn't know, but this means abandoning its own knowing. It becomes what it helps, a dreadful irony, one that hurts. But it is only temporary, just for a little while. And then we go home for all eternity.
pluriforms - outline - principles - tc


Monthly Archives: June 2016
Western Hmong Student Association (End of the Year Newsletter, 2016)The Western Hmong Student Association at Western Washington University has accomplished so much this school year. We're so proud of your leadership roles and what you've done in our Hmong community. Please continue to build bridges and strive for greatness
×


See also: www.thekatiemcneil.com
Hey there. My name is Katie McNeil. I'm 25 years old, and I live in Austin, Texas. Before that, I spent a year and a half living in Antigua, Guatemala. I'm an ENFP, with a high P and a low N. I love music, delicious food, Keira Knightly movies, and craft beer.  I hail from the Pacific Northwest, and think it is one of the most beautiful places on earth. My passions are traveling the world, playing musical instruments at a mediocre level, and learning as much as I can. Its nice to meet you.


| makeClusterPSOCK {parallelly} | R Documentation |
The makeClusterPSOCK()
function creates a cluster of R workers
for parallel processing. These R workers may be background R sessions
on the current machine, R sessions on external machines (local or remote),
or a mix of such. For external workers, the default is to use SSH to connect
to those external machines. This function works similarly to
makePSOCKcluster()
of the
parallel package, but provides additional and more flexibility options
for controlling the setup of the system calls that launch the background
R workers, and how to connect to external machines.
makeClusterPSOCK( workers, makeNode = makeNodePSOCK, port = c("auto", "random"), ..., autoStop = FALSE, tries = getOptionOrEnvVar("parallelly.makeNodePSOCK.tries", 3L), delay = getOptionOrEnvVar("parallelly.makeNodePSOCK.tries.delay", 15), validate = getOptionOrEnvVar("parallelly.makeNodePSOCK.validate", TRUE), verbose = getOptionOrEnvVar("parallelly.debug", FALSE) ) makeNodePSOCK( worker = "localhost", master = NULL, port, connectTimeout = getOptionOrEnvVar("parallelly.makeNodePSOCK.connectTimeout", 2 * 60), timeout = getOptionOrEnvVar("parallelly.makeNodePSOCK.timeout", 30 * 24 * 60 * 60), rscript = NULL, homogeneous = NULL, rscript_args = NULL, rscript_envs = NULL, rscript_libs = NULL, rscript_startup = NULL, methods = TRUE, useXDR = getOptionOrEnvVar("parallelly.makeNodePSOCK.useXDR", FALSE), outfile = "/dev/null", renice = NA_integer_, rshcmd = getOptionOrEnvVar("parallelly.makeNodePSOCK.rshcmd", NULL), user = NULL, revtunnel = TRUE, rshlogfile = NULL, rshopts = getOptionOrEnvVar("parallelly.makeNodePSOCK.rshopts", NULL), rank = 1L, manual = FALSE, dryrun = FALSE, quiet = FALSE, verbose = FALSE )
workers |
The hostnames of workers (as a character vector) or the number of localhost workers (as a positive integer). |
makeNode |
A function that creates a |
port |
The port number of the master used for communicating with all
the workers (via socket connections). If an integer vector of ports, then a
random one among those is chosen. If |
... |
Optional arguments passed to
|
autoStop |
If TRUE, the cluster will be automatically stopped
using |
tries, delay |
Maximum number of attempts done to launch each node
with |
validate |
If TRUE, after the nodes have been created, they are all
validated that they work by inquiring about their session information,
which is saved in attribute |
verbose |
If TRUE, informative messages are outputted. |
worker |
The hostname or IP number of the machine where the worker should run. |
master |
The hostname or IP number of the master / calling machine, as
known to the workers. If NULL (default), then the default is
|
connectTimeout |
The maximum time (in seconds) allowed for each socket connection between the master and a worker to be established (defaults to 2 minutes). See note below on current lack of support on Linux and macOS systems. |
timeout |
The maximum time (in seconds) allowed to pass without the master and a worker communicate with each other (defaults to 30 days). |
rscript, homogeneous |
The system command for launching |
rscript_args |
Additional arguments to |
rscript_envs |
A named character vector environment variables to
set on worker at startup, e.g.
|
rscript_libs |
A character vector of R library paths that will be
used for the library search path of the R workers. An asterisk
( |
rscript_startup |
An R expression or a character vector of R code,
or a list with a mix of these, that will be evaluated on the R worker
prior to launching the worker's event loop.
For instance, use |
methods |
If TRUE, then the methods package is also loaded. |
useXDR |
If TRUE, the communication between master and workers, which is binary, will use big-endian (XDR). |
outfile |
Where to direct the stdout and stderr connection output from the workers. If NULL, then no redirection of output is done, which means that the output is relayed in the terminal on the local computer. On Windows, the output is only relayed when running R from a terminal but not from a GUI. |
renice |
A numerical 'niceness' (priority) to set for the worker processes. |
rshcmd, rshopts |
The command (character vector) to be run on the master
to launch a process on another host and any additional arguments (character
vector). These arguments are only applied if |
user |
(optional) The user name to be used when communicating with another host. |
revtunnel |
If TRUE, a reverse SSH tunnel is set up for each worker such#' that the worker R process sets up a socket connection to its local port
|
rshlogfile |
(optional) If a filename, the output produced by the
|
rank |
A unique one-based index for each worker (automatically set). |
manual |
If TRUE the workers will need to be run manually. The command to run will be displayed. |
dryrun |
If TRUE, nothing is set up, but a message suggesting how to launch the worker from the terminal is outputted. This is useful for troubleshooting. |
quiet |
If TRUE, then no output will be produced other than that from
using |
An object of class c("RichSOCKcluster", "SOCKcluster", "cluster")
consisting of a list of "SOCKnode"
or "SOCK0node"
workers (that also
inherit from RichSOCKnode
).
makeNodePSOCK()
returns a "SOCKnode"
or
"SOCK0node"
object representing an established connection to a worker.
A hostname is considered to be localhost if it equals:
"localhost"
,
"<IP_ADDRESS>"
, or
Sys.info()[["nodename"]]
.
It is also considered localhost if it appears on the same line
as the value of Sys.info()[["nodename"]]
in file ‘/etc/hosts’.
rshcmd
and rshopts
)Arguments rshcmd
and rshopts
are only used when connecting
to an external host.
The default method for connecting to an external host is via SSH and the
system executable for this is given by argument rshcmd
. The default
is given by option parallelly.makeNodePSOCK.rshcmd. If that is not
set, then the default is to use ssh
on Unix-like systems,
including macOS. On MS Windows systems, including Windows 10, the
default is to use (i) plink
from the
PuTTY
project,
(ii) the ssh
client that is distributed with RStudio, and lastly
(iii) the ssh
client that comes with Windows 10.
PuTTY puts itself on Windows' system PATH when installed, meaning this
function will find PuTTY automatically if installed. If not, to manually
set specify PuTTY as the SSH client, specify the absolute pathname of
‘plink.exe’ in the first element and option -ssh
in the
second as in rshcmd = c("C:/Path/PuTTY/plink.exe", "-ssh")
.
This is because all elements of rshcmd
are individually "shell"
quoted and element rshcmd[1]
must be on the system PATH.
Furthermore, when running R from RStudio on Windows, the ssh
client that is distributed with RStudio will also be considered.
This client, which is from MinGW
MSYS, is searched for in the folder given by the RSTUDIO_MSYS_SSH
environment variable - a variable that is (only) set when running RStudio.
To use this SSH client outside of RStudio, set RSTUDIO_MSYS_SSH
accordingly.
You can override the default set of SSH clients that are searched for
by specifying them in argument rshcmd
or via option
parallelly.makeNodePSOCK.rshcmd using the format <...>
, e.g.
rshcmd = c("<rstudio-ssh>", "<putty-plink>", "<ssh>")
. See
below for examples.
If no SSH-client is found, an informative error message is produced.
(*) Windows 10 has a ssh
built-in since version 1803 (April 2018).
However, there is a bug in that SSH client that prevents it to work with
reverse SSH tunneling
(https://github.com/PowerShell/Win32-OpenSSH/issues/1265; Oct 2018).
The most recent version that we tested and that did not work was
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5 (ssh -V
) on
Windows 10 (version 1909, OS build 18363.720) (ver
).
Because of this, it is recommended to use the PuTTY SSH client or the
RStudio SSH client until this bug has been resolved in Windows 10.
Additional SSH options may be specified via argument rshopts
, which
defaults to option parallelly.makeNodePSOCK.rshopts. For instance, a
private SSH key can be provided as
rshopts = c("-i", "~/.ssh/my_private_key")
. PuTTY users should
specify a PuTTY PPK file, e.g.
rshopts = c("-i", "C:/Users/joe/.ssh/my_keys.ppk")
.
Contrary to rshcmd
, elements of rshopts
are not quoted.
IMPORTANT: With one exception, it is not possible to for these
functions to log in and launch R workers on external machines that requires
a password to be entered manually for authentication.
The only known exception is the PuTTY client on Windows for which one can
pass the password via command-line option -pw
, e.g.
rshopts = c("-pw", "MySecretPassword")
.
Note, depending on whether you run R in a terminal or via a GUI, you might not even see the password prompt. It is also likely that you cannot enter a password, because the connection is set up via a background system call.
The poor man's workaround for setup that requires a password is to manually
log into the each of the external machines and launch the R workers by hand.
For this approach, use manual = TRUE
and follow the instructions
which include cut'n'pasteable commands on how to launch the worker from the
external machine.
However, a much more convenient and less tedious method is to set up key-based SSH authentication between your local machine and the external machine(s), as explain below.
The best approach to automatically launch R workers on external machines over SSH is to set up key-based SSH authentication. This will allow you to log into the external machine without have to enter a password.
Key-based SSH authentication is taken care of by the SSH client and not R. To configure this, see the manuals of your SSH client or search the web for "ssh key authentication".
The default is to use reverse SSH tunneling (revtunnel = TRUE
) for
workers running on other machines. This avoids the complication of
otherwise having to configure port forwarding in firewalls, which often
requires static IP address as well as privileges to edit the firewall
on your outgoing router, something most users don't have.
It also has the advantage of not having to know the internal and / or the
public IP address / hostname of the master.
Yet another advantage is that there will be no need for a DNS lookup by the
worker machines to the master, which may not be configured or is disabled
on some systems, e.g. compute clusters.
rscript
If homogeneous
is FALSE, the rscript
defaults to "Rscript"
, i.e. it
is assumed that the Rscript
executable is available on the
PATH of the worker.
If homogeneous
is TRUE, the rscript
defaults to
file.path(R.home("bin"), "Rscript")
, i.e. it is basically assumed that
the worker and the caller share the same file system and R installation.
If specified, argument rscript
should be a character vector with one more
more elements.
all elements are automatically shell quoted using base::shQuote()
, except
those that are of format <ENVVAR>=<VALUE>
, that is, the ones matching the
regular expression '^[[:alpha:]_][[:alnum:]_]*=.*'.
Another exception is when rscript
inherits from 'AsIs'.
homogeneous
The default value of homogeneous
is TRUE if and only if either
of the following is fulfilled:
worker
is localhost
revtunnel
is FALSE and master
is localhost
worker
is neither an IP number nor a fully qualified domain
name (FQDN). A hostname is considered to be a FQDN if it contains
one or more periods
In all other cases, homogeneous
defaults to FALSE.
Argument connectTimeout
does not work properly on Unix and
macOS due to limitation in R itself. For more details on this, please see
R-devel thread 'BUG?: On Linux setTimeLimit() fails to propagate timeout
error when it occurs (works on Windows)' on 2016-10-26
(https://stat.ethz.ch/pipermail/r-devel/2016-October/073309.html).
When used, the timeout will eventually trigger an error, but it won't happen
until the socket connection timeout timeout
itself happens.
If there is no communication between the master and a worker within the
timeout
limit, then the corresponding socket connection will be
closed automatically. This will eventually result in an error in code
trying to access the connection.
When setting up a cluster of localhost workers, that is, workers running on the same machine as the master R process, occasionally a connection to a worker ("cluster node") may fail to be set up. When this occurs, an informative error message with troubleshooting suggestions will be produced. The most common reason for such localhost failures is due to port clashes. Retrying will often resolve the problem.
A cluster of remote workers runs R processes on external machines. These
external R processes are launched over, typically, SSH to the remote
machine. For this to work, each of the remote machines needs to have
R installed, which preferably is of the same version as what is on the
main machine. For this to work, it is required that one can SSH to the
remote machines. Ideally, the SSH connections use authentication based
on public-private SSH keys such that the set up of the remote workers can
be fully automated (see above). If makeClusterPSOCK()
fails to set
up one or more remote R workers, then an informative error message is
produced.
There are a few reasons for failing to set up remote workers. If this
happens, start by asserting that you can SSH to the remote machine and
launch ‘Rscript’ by calling something like:
{local}$ ssh -l alice remote.server.org {remote}$ Rscript --version R scripting front-end version 3.6.1 (2019-07-05) {remote}$ logout {local}$
When you have confirmed the above to work, then confirm that you can achieve the same in a single command-line call;
{local}$ ssh -l alice remote.server.org Rscript --version R scripting front-end version 3.6.1 (2019-07-05) {local}$
The latter will assert that you have proper startup configuration also for non-interactive shell sessions on the remote machine.
Another reason for failing to setup remote workers could be that they are
running an R version that is not compatible with the version that your main
R session is running. For instance, if we run R (>= 3.6.0) locally and the
workers run R (< 3.5.0), we will get:
Error in unserialize(node$con) : error reading from connection
.
This is because R (>= 3.6.0) uses serialization format version 3 whereas
R (< 3.5.0) only supports version 2. We can see the version of the R
workers by adding rscript_args = c("-e", shQuote("getRversion()"))
when
calling makeClusterPSOCK()
.
## NOTE: Drop 'dryrun = TRUE' below in order to actually connect. Add ## 'verbose = TRUE' if you run into problems and need to troubleshoot. ## EXAMPLE: Two workers on the local machine workers <- c("localhost", "localhost") cl <- makeClusterPSOCK(workers, dryrun = TRUE) ## EXAMPLE: Three remote workers ## Setup of three R workers on two remote machines are set up workers <- c("n1.remote.org", "n2.remote.org", "n1.remote.org") cl <- makeClusterPSOCK(workers, dryrun = TRUE) ## EXAMPLE: Local and remote workers ## Same setup when the two machines are on the local network and ## have identical software setups cl <- makeClusterPSOCK( workers, revtunnel = FALSE, homogeneous = TRUE, dryrun = TRUE ) ## EXAMPLE: Remote workers with specific setup ## Setup of remote worker with more detailed control on ## authentication and reverse SSH tunnelling cl <- makeClusterPSOCK( "remote.server.org", user = "johnny", ## Manual configuration of reverse SSH tunnelling revtunnel = FALSE, rshopts = c("-v", "-R 11000:gateway:11942"), master = "gateway", port = 11942, ## Run Rscript nicely and skip any startup scripts rscript = c("nice", "/path/to/Rscript"), rscript_args = c("--vanilla"), dryrun = TRUE ) ## EXAMPLE: Two workers running in Docker on the local machine ## Setup of 2 Docker workers running rocker/r-parallel cl <- makeClusterPSOCK( rep("localhost", times = 2L), ## Launch Rscript inside Docker container rscript = c( "docker", "run", "--net=host", "rocker/r-parallel", "Rscript" ), ## IMPORTANT: Because Docker runs inside a virtual machine (VM) on macOS ## and Windows (not Linux), when the R worker tries to connect back to ## the default 'localhost' it will fail, because the main R session is ## not running in the VM, but outside on the host. To reach the host on ## macOS and Windows, make sure to use master = "host.docker.internal" # master = "host.docker.internal", # <= macOS & Windows dryrun = TRUE ) ## EXAMPLE: Two workers running in Singularity on the local machine ## Setup of 2 Singularity workers running rocker/r-parallel cl <- makeClusterPSOCK( rep("localhost", times = 2L), ## Launch Rscript inside Linux container rscript = c( "singularity", "exec", "docker://rocker/r-parallel", "Rscript" ), dryrun = TRUE ) ## EXAMPLE: One worker running in udocker on the local machine ## Setup of a single udocker.py worker running rocker/r-parallel cl <- makeClusterPSOCK( "localhost", ## Launch Rscript inside Docker container (using udocker) rscript = c( "udocker.py", "run", "rocker/r-parallel", "Rscript" ), ## Manually launch parallel workers ## (need double shQuote():s because udocker.py drops one level) rscript_args = c( "-e", shQuote(shQuote("parallel:::.slaveRSOCK()")) ), dryrun = TRUE ) ## EXAMPLE: Remote worker running on AWS ## Launching worker on Amazon AWS EC2 running one of the ## Amazon Machine Images (AMI) provided by RStudio ## (http://www.louisaslett.com/RStudio_AMI/) public_ip <- "<IP_ADDRESS>" ssh_private_key_file <- "~/.ssh/my-private-aws-key.pem" cl <- makeClusterPSOCK( ## Public IP number of EC2 instance public_ip, ## User name (always 'ubuntu') user = "ubuntu", ## Use private SSH key registered with AWS rshopts = c( "-o", "StrictHostKeyChecking=no", "-o", "IdentitiesOnly=yes", "-i", ssh_private_key_file ), ## Set up .libPaths() for the 'ubuntu' user ## and then install the future package rscript_startup = quote(local({ p <- Sys.getenv("R_LIBS_USER") dir.create(p, recursive = TRUE, showWarnings = FALSE) .libPaths(p) install.packages("future") })), dryrun = TRUE ) ## EXAMPLE: Remote worker running on GCE ## Launching worker on Google Cloud Engine (GCE) running a ## container based VM (with a #cloud-config specification) public_ip <- "<IP_ADDRESS>" user <- "johnny" ssh_private_key_file <- "~/.ssh/google_compute_engine" cl <- makeClusterPSOCK( ## Public IP number of GCE instance public_ip, ## User name (== SSH key label (sic!)) user = user, ## Use private SSH key registered with GCE rshopts = c( "-o", "StrictHostKeyChecking=no", "-o", "IdentitiesOnly=yes", "-i", ssh_private_key_file ), ## Launch Rscript inside Docker container rscript = c( "docker", "run", "--net=host", "rocker/r-parallel", "Rscript" ), dryrun = TRUE ) ## EXAMPLE: Remote worker running on Linux from Windows machine ## Connect to remote Unix machine 'remote.server.org' on port 2200 ## as user 'bob' from a Windows machine with PuTTY installed. ## Using the explicit special rshcmd = "<putty-plink>", will force ## makeClusterPSOCK() to search for and use the PuTTY plink software, ## preventing it from using other SSH clients on the system search PATH. cl <- makeClusterPSOCK( "remote.server.org", user = "bob", rshcmd = "<putty-plink>", rshopts = c("-P", 2200, "-i", "C:/Users/bobby/.ssh/putty.ppk"), dryrun = TRUE ) ## EXAMPLE: Remote worker running on Linux from RStudio on Windows ## Connect to remote Unix machine 'remote.server.org' on port 2200 ## as user 'bob' from a Windows machine via RStudio's SSH client. ## Using the explicit special rshcmd = "<rstudio-ssh>", will force ## makeClusterPSOCK() to use the SSH client that comes with RStudio, ## preventing it from using other SSH clients on the system search PATH. cl <- makeClusterPSOCK( "remote.server.org", user = "bob", rshcmd = "<rstudio-ssh>", dryrun = TRUE )


As part of our HBase setup, we run Thrift servers. This is pretty simple, except for the init files.
Since we're running Thrift standalone (and not as part of a full HBase server), I couldn't find a perfect fit from googling.
I eventually settled for this puppet template, but it had a big deficiency - no support for status
.
A tiny bit about init
SysVInit is the old-school way of managing services in Linux (and Unix).
Every service has an "init script", located in /etc/init.d/SERVICENAME
, which is in charge of controlling the sevice.
It is called by using service SERVICENAME ACTION
, where every script is free to define its own actions, but the standard ones are start
,stop
,restart
,status
.
Why status
matters
Using status
is the best way of checking whether a service is alive.
It could be a sysadmin checking for issues, Nagios making sure the service is OK, or a configuration management tool checking whether it should start the service.
Just for fun, here is how Chef uses it. I quote from the holy repo of Chef, file lib/chef/provider/service/simple.rb
, verse 130:
if shell_out("#{default_init_command} status").exitstatus == 0
@current_resource.running true
Chef::Log.debug("#{@new_resource} is running")
end
So as long as service SERVICENAME status
exits successfully (exit code 0), Chef thinks the service is running.
Implementing status
Since I'm using CentOS 6.5, my common service functions file (/etc/init.d/functions
) is old, so it's not creating new pids (--pidfile
only checks for an existing file, not creating a new one) and it can't rename the process (I've heard of a magical --name
parameter, but can't find it in my file).
Because of that, I can't find the process after starting it, so I can't make sure it's still alive.
After digging around in the HBase code, I found out that HBase keeps PID files.
bin/hbase-daemon.sh
:
(start)
mkdir -p "$HBASE_PID_DIR"
if [ -f $pid ]; then
if kill -0 `cat $pid` > /dev/null 2>&1; then
echo $command running as process `cat $pid`. Stop it first.
exit 1
fi
fi
All I needed was to use this pidfile in my init script. I accomplished this by replicating the pidfile-building logic in my init script.
It looks something like:
HBASE_PID_DIR=/var/run/
HBASE_IDENT_STRING="$HOSTNAME"
command=thrift
pid=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.pid
Now I can implement the status check like so:
status)
status -p $pid java
RETVAL=$?
;;
Note that the process name is java
. This is imperfect because the thrift process might die and another java process might take its place, but I don't find it too much of a risk for now. I might modify it later.
The Result
The full file is stored as a gist, but be warned - it's a Chef template!
You can probably manually fill it out though.


Share the file directly to others. No server. No cloud. No Login. No password. No middleman. No tracking. No advertisement. It is you in control. As long as you like to share, the file will be shared. When you want to stop sharing, just close this page. Done!
The best part is the more people come to get your file the speed will increase! Which is the exact opposite of a client-server scenario. There is no concept of scaling at the first place, the more the people the better the experience.


vm should has some basic data,if pvm donot set,use the default, before vm stated,will call store.vminit,if callback with data,will clone and deepmerge to vm.data, parent inject data to child,will clone and deepmerge to vm.data