--- title: Recipes for learning author: Martin John Hadley date: '2018-02-18' slug: recipes-for-learning categories: - dataviz tags: - R draft: no editor_options: chunk_output_type: console banner: "img/blog-images/header-images/2018-02-18_recipes-for-learning.png" description: > In this blogpost I introduce one of my favourite datasets, a treasure trove of 57,000+ recipes scraped from recipe websites for a fascinating research paper (DOI: 10.1038/srep00196) comparing how different cuisines choose ingredients. I first used this dataset in May 2015 to learn how to use R and continue to use it to test my understanding of new techniques and analysis. ---
Citable Author
Martin John Hadley
(orcid.org/0000-0002-3039-6849)
I can accurately identify the day I started learning R properly as the 30th of April 2015. That’s the day I was invited for an interview on the 26th of May at University of Oxford which had an interview exercise that required me to create a dummy 10 minute introduction to dataviz with a tool of my choice, using an interesting dataset. At the time, I knew Mathematica (and the Wolfram Language) incredibly well - but it was clear from the description of the task that the interviewers would massively prefer folks who knew R or Python.
Python was clearly a mess of choices, I had to decide between Python 2.x or 3.x and there wasn’t a self-contained solution for building web applications. Learning R and Shiny was the obvious choice in just over three weeks, as was the dataset I’d focus on.
One of my absolute favourite datasets comes from a paper published in Nature, “Flavor Network and the principles of food pairing” (doi:10.1038/srep00196). The supplementary materials include two files:
In the paper the authors are interested examining whether different cuisines prefer recipes with highly similar or dissimilar tasting ingredients, amongst other things. I’ve embedded one of the highly beautified hair ball networks from the paper, and I definitey recommend reading this Open Access paper for some interesting observations about human cuisines. Now, it turned that out this was a fairly challenging dataset to first start learning R with, let’s grab the data from Nature 1 and have a look at why.
## Reproducibly download files to a temp location and unzip
library("tidyverse")
recipes_data_dir <- tempdir()
s2_zip <- tempfile(fileext = ".zip")
s3_zip <- tempfile(fileext = ".zip")
download.file(url = "https://media.nature.com/original/nature-assets/srep/2011/111215/srep00196/extref/srep00196-s2.zip", destfile = s2_zip)
download.file(url = "https://media.nature.com/original/nature-assets/srep/2011/111215/srep00196/extref/srep00196-s3.zip", destfile = s3_zip)
unzip(s2_zip, exdir = recipes_data_dir)
unzip(s3_zip, exdir = recipes_data_dir)
The recipes are in a horrendous format. It’s not so bad that the first four lines are comments, that’s easy to handle, but rows of the data do not have consistent lengths. The first recipe contains 6 items and the second has 17, which means the data’s not rectangular and the standard importers aren’t going to be that happy.
readLines(file.path(recipes_data_dir, "srep00196-s3.csv")) %>%
head()
## [1] "#"
## [2] "# Flavor network and the principles of food pairing"
## [3] "# Yong-Yeol Ahn, Sebastian E. Ahnert, James P. Bagrow, and Albert-Laszlo Barabasi"
## [4] "# "
## [5] "African,chicken,cinnamon,soy_sauce,onion,ginger"
## [6] "African,cane_molasses,ginger,cumin,garlic,tamarind,bread,coriander,vinegar,onion,beef,cayenne,parsley,wheat_bread,yogurt,vegetable_oil,egg"
I really struggled to understand what to do about this, so I asked my first R
question on StackOverflow, “Importing and analysing non-rectangular .csv files in R”. My question was asked back in 2015 before the tidyverse was born, and so the best solution at the time was using read.table
:
read.table(file.path(recipes_data_dir, "srep00196-s3.csv"),
sep = ",",
as.is = TRUE,
fill = TRUE,
na.strings = "") %>%
head()
## V1 V2 V3 V4 V5 V6 V7
## 1 African chicken cinnamon soy_sauce onion ginger <NA>
## 2 African cane_molasses ginger cumin garlic tamarind bread
## 3 African butter pepper onion cardamom cayenne ginger
## 4 African olive_oil pepper wheat beef onion cardamom
## 5 African honey wheat yeast <NA> <NA> <NA>
## 6 African tomato cilantro lemon_juice onion cayenne scallion
## V8 V9 V10 V11 V12 V13 V14 V15
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 coriander vinegar onion beef cayenne parsley wheat_bread yogurt
## 3 cottage_cheese garlic brassica <NA> <NA> <NA> <NA> <NA>
## 4 cumin garlic rice leek <NA> <NA> <NA> <NA>
## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## V16 V17
## 1 <NA> <NA>
## 2 vegetable_oil egg
## 3 <NA> <NA>
## 4 <NA> <NA>
## 5 <NA> <NA>
## 6 <NA> <NA>
At the time I continued to analyse and visualise the data ready for my interview exercise, for which I also learned how to use GitHub! The outputs I used in my presentation are still available in my RecipeVisualisations repo. It turns out on reflection that there were two bad things that I did at the time:
read.table
uses a bad heuristic to decide how many columns there are in the data! The longest recipe is not 17 ingredients long.Now I’m much more proficient with R and have the wonderful purrr
library to process these recipes into a tibble
with the ingredients stored as a list:
recipe_lists <- readLines(file.path(recipes_data_dir, "srep00196-s3.csv")) %>%
strsplit(",")
recipe_lists <- recipe_lists[5:length(recipe_lists)]
recipes_df <- tibble(
cuisine = map_chr(recipe_lists, 1),
ingredients = map(recipe_lists, tail, -1)
)
recipes_df %>%
head()
## # A tibble: 6 x 2
## cuisine ingredients
## <chr> <list>
## 1 African <chr [5]>
## 2 African <chr [16]>
## 3 African <chr [9]>
## 4 African <chr [10]>
## 5 African <chr [3]>
## 6 African <chr [6]>
It’s now much easier to operate on these lists of ingredients by using map*
functions within mutate
, for instance I can create a column containing the number of ingredients. Now we discover the joint longest recipes contain a ridiculous 32 ingredients.
recipes_df %>%
mutate(n.ingredients = map_int(ingredients, length)) %>%
arrange(desc(n.ingredients))
## # A tibble: 56,498 x 3
## cuisine ingredients n.ingredients
## <chr> <list> <int>
## 1 EasternEuropean <chr [32]> 32
## 2 SouthernEuropean <chr [32]> 32
## 3 NorthAmerican <chr [30]> 30
## 4 NorthAmerican <chr [29]> 29
## 5 NorthAmerican <chr [29]> 29
## 6 NorthAmerican <chr [29]> 29
## 7 EasternEuropean <chr [28]> 28
## 8 NorthAmerican <chr [28]> 28
## 9 NorthAmerican <chr [27]> 27
## 10 NorthAmerican <chr [26]> 26
## # ... with 56,488 more rows
With our ingredients in a list column it’s now also easy to filter recipes by specific ingredients:
recipes_df %>%
filter(str_detect(ingredients, "garlic"))
## # A tibble: 16,893 x 2
## cuisine ingredients
## <chr> <list>
## 1 African <chr [16]>
## 2 African <chr [9]>
## 3 African <chr [10]>
## 4 African <chr [12]>
## 5 African <chr [11]>
## 6 African <chr [8]>
## 7 African <chr [9]>
## 8 African <chr [12]>
## 9 African <chr [15]>
## 10 African <chr [10]>
## # ... with 16,883 more rows
I’m going to come back to using this dataset in the future to explore graph theory and machine learning examples, but for now let’s finish like it’s Summer 2017 with a ridgeline plot from the excellent ggplot2
extension ggridges
:
library("ggridges")
recipes_df %>%
mutate(n.ingredients = map_int(ingredients, length)) %>%
group_by(cuisine) %>%
mutate(median.ingredients = median(n.ingredients)) %>%
ungroup() %>%
arrange(desc(median.ingredients)) %>%
mutate(cuisine = fct_reorder(cuisine, median.ingredients)) %>%
ggplot(aes(x = n.ingredients, y = cuisine)) +
geom_density_ridges(scale = 3) +
theme_ridges() +
xlab("Number of ingredients") +
ggtitle("Comparison of ingredients per recipe by cuisine",
subtitle = "Data from doi:10.1038/srep00196")
In future whenever I want to work with this data I’ll import it through the following script:
library("tidyverse")
recipes_data_dir <- tempdir()
s2_zip <- tempfile(fileext = ".zip")
s3_zip <- tempfile(fileext = ".zip")
download.file(url = "https://media.nature.com/original/nature-assets/srep/2011/111215/srep00196/extref/srep00196-s2.zip", destfile = s2_zip)
download.file(url = "https://media.nature.com/original/nature-assets/srep/2011/111215/srep00196/extref/srep00196-s3.zip", destfile = s3_zip)
unzip(s2_zip, exdir = recipes_data_dir)
unzip(s3_zip, exdir = recipes_data_dir)
recipe_lists <- readLines(file.path(recipes_data_dir, "srep00196-s3.csv")) %>%
strsplit(",")
recipe_lists <- recipe_lists[5:length(recipe_lists)]
recipes_df <- tibble(
cuisine = map_chr(recipe_lists, 1),
ingredients = map(recipe_lists, tail, -1)
)
Citable Author
Martin John Hadley
(orcid.org/0000-0002-3039-6849)
Frustratingly, these data sets are attached to the paper exclusively as supplementary materials, and so these are fragile links. Data should really have distinct DOI, modern journals like Springer Nature’s Scientific Data do this.↩


|
Aleister CrowleySometimes the legend is greater than the reality.In the case of Aleister Crowley, the truth of that statement is a testament to the magnitude of the legend, since the reality is pretty remarkable.  But was he the wickedest man on Earth? Ehhhhh... It's kind of tough to compete with Adolf Hitler or Idi Amin, you know? Born in England in 1875 with the name "Edward Alexander," Crowley burst into the world with a bad attitude during the most repressed period in the repressed history of the most repressed nation in the world. For several years, young Crowley grudgingly went along with the program, idolizing his father, a preacher and pamphleteer for an Protestant evangelical sect that made the Victorian era's repression look positively libertine. But his father died when Crowley was a pre-teen. The trauma of loss combined with a disagreeable stepfather and a surge of pubescent hormones to unleash the "Great Beast" on the world. Rotting Poetry or Just Rotten?Crowley was a sickly child, and his stepfather introduced him to the outdoors in an effort to build his health. As a Cambridge undergraduate, this interest expanded to mountaineering. He took part in an early historic, record-breaking attempt to scale K2 in the Himalayas, among other expeditions, where he developed a reputation for sadistically abusing the local help (which he later justified in that patronizing, racist colonial manner that made the British so beloved around the world).  This realization didn't sit well with the Beast, who in a lifetime of hedonism and debauchery never quite managed to shake off the shame that his early upbringing instilled in him.  But young Crowley's shame didn't stop him from becoming a prolific author of pioneering homoerotic poetry, cleverly disguised in metaphors and oblique verbiage such as the following excerpt from the cryptically named collection "White Stains" (Subtle!):
Touch me; I shudder and my lips turn back "White Stains," which alone would be enough to distinguish Crowley's name for posterity, was privately published under a pseudonym in 1898 and almost immediately banned. Legend has it that the covers on the original printing of 100 copies were adorned with white stains issued from the loins of the Beast himself. Most copies were eventually destroyed by British authorities, due to its content, which included odes to homosexuality, pedophilia, Bestiality and necrophiliac cannibalism:
Having, um, conquered the worlds of mountaineering and literature, Crowley found his attention increasingly turning to matters spiritual. Through his mountaineering contacts, Crowley made contact with members of the Hermetic Order of the Golden Dawn, an occult secret society. The Golden Dawn was an offshoot of the Freemasons, borrowing liberally from that order's initiation practices and layering on a hodge-podge of mysticism and ritual magic borrowed from a wide variety of influences. Crowley was never known to play well with others, and he didn't play well with his fellow Golden Dawn members. Crowley at first befriended the leader of the Golden Dawn, MacGregor Mathers, then later turned on him, a pattern which would repeat itself endlessly through Crowley's life. After a series of petty melodramas, Crowley was expelled from the Golden Dawn after about two years. He engaged in a series of "magical battles" with Mathers, who left the order in disgrace after it was discovered (shockingly) that he had forged the "ancient" texts the sect was based on. The magical battles lacked the kind of Hollywood flair you'd like to see, with Crowley and Mathers being the only actual witnesses to the workings of the conflict, which apparently involved a lot of summoning and dispatching of demons and the like. Over the next several years, Crowley continued his spiritual explorations while traveling the world and engaging in the occasional mountaineering expedition. His ideas about magic and mysticism began to congeal. He married Rose Kelly, the sister of a friend, in 1893, and the two traveled together. With Rose in tow, the most significant period of Crowley's life was upon him. During a museum visit in Egypt, Rose found herself drawn to an ancient Egyptian artifact with the exhibit number 666, which depicted the Eygptian deities Hadit and Ra-Hoor-Khuit. Shortly after this encounter, Rose was overcome by the spirit of an entity known as Aiwass, who dictated "The Book of the Law" to Crowley over the course of three days. Whether mystically transmitted or an act of creative excess, the Book of the Law is a remarkable document. In cryptic and poetic terms, the book lays out a kind of scriptural framework for a spiritual path called Thelema, the Greek word for "will." The most famous line in the book, while derivative of previous spiritual writings, would forever be associated with Crowley: "Do what thou wilt shall be the whole of the law." With these 11 words, the course of Crowley's life was set. Complex MessiahThe Book of the Law is heavy on poetry, but light on theology. It generally encourages a libertine approach to life, the use of "strange drugs" and various obscure adjurations like "Let my servants be few & secret" and "Choose ye an island!"Crowley would maintain throughout his life that "Do what thou wilt" was not intended as a blanket permission for all sorts of depraved behavior (yeah, right), but rather an instruction that people should learn and discover their "true wills," the important works and desires of their lives, and follow through on them. Despite a mile-wide streak of self-aggrandizement, Crowley never attempted to claim authorship of the Book of the Law. He steadfastly maintained it had come from beyond and that his role was strictly that of interpreter. However, he did go so far as to designate himself as the only person worthy of interpreting the book, and he expected his followers (such as they were) to treat his views as seriously as Catholics treat a load of papal bull. Crowley believed the transmission of the Book of the Law signaled the imminent arrival of the Aeon of Horus, basically a new era in the evolution of humanity and religion in which the law of Thelema ("do what thou wilt") would be the prevailing system of belief. A few years later, Crowley formed a new magical order, his first effort to put the teachings of Thelema before the public. The Astrum Argentium (Silver Star) attracted some interest in its early stages, but never really caught on as broadly as, say, Mormonism. The A.A.'s primary claim to fame was the publication of Crowley's Equinox. The Equinox was a book-length periodical, published irregularly over the years, in which Crowley and affiliated individuals wrote an exhaustive and often brilliant updating of traditional magical and occult practices. The Equinox debuted with a bang by publishing several secret texts of the Golden Dawn, which he had sworn a solemn and reprisal-laden oath to protect. The move finalized his rancorous split with the group, infuriating its remaining members (who already hated him), such as the poet William Butler Yeats and Arthur Edward Waite (who achieved widespread fame for his Tarot studies). The A.A. enjoyed some modest success, and continues to this day, but Crowley's attention span wasn't exactly renowned as heroic. He moved on, leaving his wife, the A.A. and the Equinox behind. Crowley spent years traveling the world and studying esoteric systems, creating a body work which has never really gotten the credit it deserved. He wrote landmark analyses and translations of ancient texts about yoga, mediation and the I-Ching. Crowley also studied the interrelation of magical and spiritual systems around the world, borrowing liberally from extremely diverse sources and he continued to build Thelema in an almost coherent religion. Thelema evolved along the lines of the ceremonial magic traditions which had first shaped Crowley's thinking, namely rituals and procedures designed to elevate spiritual aspirants in both power and wisdom via astral projection, the casting of spells to advance the caster's true will, and the invocation of various spirits, angels, demons, entities, and/or whatever. Ordo Templi OrientisCrowley was approached by the Ordo Templi Orientis, which invited him to take on a leadership role. The OTO claims to integrate "Freemasonic, Rosicrucian and Illuminist movements of the 18th and 19th centuries, the crusading Knights Templar of the middle ages and early Christian Gnosticism and the Pagan Mystery Schools."The leader of the OTO was a German named Theodor Reuss, a former Freemason and Illuminatus. He initiated Crowley into the sect in 1910 and in 1912 granted the Beast a charter to launch a British branch of the secret society. Crowley moved to the United States in 1914, at the onset of World War I, setting up shop in New York. In New York, Crowley continued recruiting students and began rewriting the charters of the O.T.O. to better suit his beliefs. Starting from a base structure very similar to the Freemasons, Crowley added several significant elements to the OTO's repetoire. He legalized the initiation of women into its ranks, wrote modernized English-language rituals for its members, streamlined initiation and degrees to more quickly advance members through the ranks, and integrated Thelema into the OTO's core mission, placing the Book of the Law at the center of its teachings. In the early 1920s, Crowley took control of the O.T.O. under ambiguous circumstances. Reuss allegedly suffered a stroke in 1920, an assertation which Crowley used to politick his way to the top of the hierarchy. He was the titular head of the OTO until his death in 1947. One of Crowley's most-lasting (but entirely unintended) contributions to the world of religion came from one of the OTO's American branches, led by self-proclaimed "Antichrist Superstar" Jack Parsons. Parsons ran a California OTO lodge that attracted a young L. Ron Hubbard as an aspirant. According to OTO lore and various biographies, Hubbard allegedly joined the group and engaged in an affair with Parsons' mistress (with Parsons' knowledge). Knowing a good thing when he saw it, Hubbard made off with the girl, a substantial amount of Parsons' cash (allegedly), and several major tenets of Thelema, which he re-metaphorized into the big-budget, George-Lucas-on-crack, metaphysical framework of Scientology (allegedly), a religious enterprise (allegedly) renowned for its (alleged) litigiousness (allegedly, allegedly, allegedly). In later years, Hubbard would (allegedly) claim Crowley was a "good friend" but Crowley's biographers do not record a meeting between the two. House of HorrorsCrowley's world travels are too voluminous to detail here; he managed to wear out his welcome in country after country. But a notable stop on his itinerary was the small Sicilian island town of Cefalu, one of the more colorful periods of Crowley's life.With his mistress of the moment, Crowley set up shop in a house in Cefalu which he dubbed the "Abbey of Thelema." He imagined it as a headquarters from which the doctrines of Thelema would be spread throughout the world. In practice, it was somewhat less impressive.  Crowley adorned the walls with often grotesque murals and paintings of various occult subjects. Several accounts described the sacrifice of small animals in magic rituals, and Crowley often set out to systematically degrade visiting pupils (not least with his sexual attentions). The truth was bad enough, but once the British tabloids caught wind of these tales, they decided the stories some embellishment. The "wickedest man in the world" appellation which made Crowley famous came from the headlines on these stories of murder, black magic, the live sacrifice of babies, bestiality and wanton seduction. Crowley somehow managed to revel in the tales while at the same time suing for libel in the hopes of scoring some easy cash. Aleister Crowley, Secret AgentIt was in New York that Crowley really began to cement his reputation as an evil guy. In what he would later claim was an act of sabotage, Crowley wrote pro-German propaganda for a New York publisher which, he explained, was intended to hurt the Germans by making them look ridiculous for having such bad propaganda written for them. In one stroke, he turned his bad prose and treasonous leanings into a victory for freedom and democracy.There is no proof as to whether Crowley was a) sincerely trying to sabotage the Germans and b) working for British intelligence in this effort, as he claimed. Crowley counted some fairly significant British military figures among his students. "It could have happened" is about as far as you can reasonably go. Crowley's flirtation with Aryan supremacy didn't end with WW I, however. During World War II, a member of the OTO wrote to Adolf Hitler on behalf on Crowley, suggesting that Thelema would be a dandy choice as the national religion of the Third Reich. His German disciple tried to give Hitler a copy of the Book of the Law. It has never been proved that such a thing happened. We must resort once more to "It could have happened." Conspiracy lovers enjoy few things more than a good Crowley-Nazi story, and there are plenty of them in circulation, but little evidence any of them actually ever happened. Claims of meetings between der Furher and der Beast and of Nazi black magic rituals appear to have been greatly exaggerated. Decline and FallAfter squandering his considerable inheritance on sex, drugs and vanity publishing (mostly the latter), Crowley took to supporting himself through an innovative pattern of publishing and relationships.Firmly ensconced in his role as the most evil man in the world, Crowley published a few tell-all autobiographical tale such as his notorious "Confessions" and "Diary of a Drug Fiend." The problem with this method of self-sufficiency was that his books were banned almost as quickly as they could be printed, which made royalties somewhat problematic, even though the advances were nice. Given his chronic failure to make it in publishing, the Beast had to find other sources of incomes. He took to seducing women of moderate to substantial means, while recruiting male students who could do the actual work of promoting the Beast's religious and literary aspirations. The male students were as likely to become the object of Crowley's amorous attentions as the mistresses. Invariably, Crowley tired of the women and the men tired of him, but rinse, lather and repeat enough times, and pretty soon you've managed to support yourself for a lifetime. Crowley's health declined into the 1930s and '40s, in no small part due to a lifelong heroin habit. After his homosexuality, the only other thing that ever really shamed Crowley was his inability to quit the drug, despite repeated attempts. His health declining, the Beast shambled off to spend his final days mostly alone, at a boarding house in his native England. On December 1, 1947, with a parting curse on the doctor who refused to prescribe him any more heroin, Crowley passed on to the great unknown. Depending on how many of the extravagant claims made about the Beast (by himself and others) you want to believe, feel free to make your own calculations about where his karma deposited him on December 2.
|


Hands On Project 2-4
Shipping Address
Choose an address
Home
Work
1 Main St.
15 Columbine Ln
Sicilla, MA 02103
Crab City, MA 02104
Street Address
City
State
Zip


Scar is Simba's uncle. Scar is Simba's evil uncle. Scar was always jealous. Jealous of his older brother Mufasa. And he killed him. As seen when he foolishly admits to killing Mufasa. A trait which proves to be his downfall. As he ultimately pushes Simba too far. Scar is an adult. Adult Lion.
So that he could become king. So that he could become king of the "Pride Lands". Scar is depicted as a cold. Scar is ruthless. Scar is brutal. With brown fur. And a thin silky coal black mane. The fur on his belly is Light Tan. The bottoms of his paws is Light Tan.
Scar is a tyrant. Scar is mercyless. Whose sole goal is to be the ruler. The ruler of the Pride Lands. Even his family mean nothing to him. And when compared to his nephew and older brother he is quite lanky and frail. There are short tufts of black fur on the back of his elbows. As well as on on the tip of his tail. Scar's name obviously refers to the scar he has over his left eye. His old name was Taka.
He is willing to put whatever he pleases on the line.  This is seen when he murders Mufasa in cold blood.  He is also shown to be overconfident. His eyes are striking yellow green and his sclera are yellow. While his eyebrows are the same color as his mane. He has a widow's peak and his large. Round ears are partially visible. He has ten dark whiskers.


I am a Freelance Web Developer & Web Designer.
Data Science and Machine Learning Enthusiast
Photography
Pursuing My Undergraduate Degree from SRM Institute of Science & Technology, Chennai
Studying B.TECH in Computer Science & Engineering with Specialization in Information Technology
HTML-5
CSS-3
PHP-7
JavaScript
Python
SQL
C++
Algorithm
Data Science
Data Analysis
| Year | Title | Where |
|---|---|---|
| 2015-2016 | Secondary School Certificate(SSC) | Navrachana School, Vadodara |
| 2017-2018 | All India Senior School Certificate Examination (AISSCE) | Navrachana School, Vadodara |
| 2018-Present | B.Tech-C.S.E with Spec. in I.T | SRM University, Chennai |
| 2019-Present | Student Member | Zubi.io, SRMIST |
| Apr 2020 - May 2020 | Campus Ambassador | StartEarly, SRMIST |
| May 2020 - Jun 2020 | GenZ Capmus Ambassador | Pinakulo, Chennai |
| Jun 2020 - Present | Web Developer | Iventors Initiatives, Chennai |


We the Kanthis a clan of renowned prestigious Bhatia community, basically from Jaiselmer
- Rajasthan have settled in various parts of India mainly in Gujarat & spreaded their wings
of success worldwide achieving milestones in various fields.
Now the YOUNG ENTREPRENEURS created WEBSITE for Bhatia Entrepreneurs to give them a platform to
explore a different Business Avenue under ONE CLICK...
We would appreciate you to take this idea forward & add more Bhatias in our initiative to
grow Kanthi Bhatia Entrepreneurs.


Rent Portal makes managing payments easier and more affordable for landlords and tenants. Let your software pay you.
Find Out MoreApartment or Property Management Software replaces the need to drop off a paper check at a landlord's or utility's office. This industry already relies on 260,000 businesses and over 780,000 jobs. Why Rent Portal? We are blockchain based, open-source, and will have the lowest cost for landlords or utility companies. Our token allows the price for landlords and tenants to be lower and lower over time.
Get Started!Click the icon and give us a follow!
Chat with us on your phone from Telegram.
Our GitHub will contain most of the company's code. Join in!
Please comment on our announcement thread.
Read through a full outline of the project.
Subscribe to our subreddit and write a post.
Explore the holders of the ERC20 $RENT token.
The project blog is hosted on blockchain based Steem.


| Class | Description |
|---|---|
| AbstractStyle |
Class represents an abstract style component
|
| BasicStyles |
Factory class with the most important predefined styles
|
| Border |
Class representing a Border entry.
|
| CellXf |
Class representing an XF entry.
|
| Fill |
Class representing a Fill (background) entry.
|
| Font |
Class representing a Font entry.
|
| NumberFormat |
Class representing a NumberFormat entry.
|
| Style |
Class representing a style which consists of several components
|
| StyleManager |
Class representing a style manager to maintain all styles and its components of a workbook
|
| Enum | Description |
|---|---|
| Border.StyleValue |
Enum for the border style
|
| CellXf.HorizontalAlignValue |
Enum for the horizontal alignment of a cell
|
| CellXf.TextBreakValue |
Enum for text break options
|
| CellXf.TextDirectionValue |
Enum for the general text alignment direction
|
| CellXf.VerticalAlignValue |
Enum for the vertical alignment of a cell
|
| Fill.FillType |
Enum for the type of the fill
|
| Fill.PatternValue |
Enum for the type of the fill pattern
|
| Font.SchemeValue |
Enum for the font scheme
|
| Font.VerticalAlignValue |
Enum for the vertical alignment of the text from base line
|
| NumberFormat.FormatNumber |
Enum for the defined number formats
|
| Annotation Type | Description |
|---|---|
| AppendAnnotation |
Annotation designated to control the copying of style properties
|
Copyright © 2019. All rights reserved.


obvious.prefuse
Classes
PrefuseDataFactory
PrefuseObviousEdge
PrefuseObviousNetwork
PrefuseObviousNode
PrefuseObviousSchema
PrefuseObviousTable
PrefuseObviousTree
PrefuseObviousTuple


"The Network"
One of the traditional problems with independent publishing on the internet has always been the fact that independent publishers often operate as isolated islands within their own website, and spend most of their resources attracting visitors. The rise of corporate providers and social networking services alleviated many of these problems; however centralisation has led to a situation where your content where is no longer under your direct control. It is shared fully with corporate advertisers and governments, but ironically you are now often asked to pay money to ensure that your friends can see it. What if you could have advantages of scale and connections that centralisation offers whilst maintaining independent control over your own web presence?
The RedMatrix is a super network created from a huge number of smaller independent and autonomous websites - which are linked together into a cooperative publishing and social platform. It consists of an open source webapp providing a complete multi-user decentralised publishing, sharing, and communications system - known as a "hub". Each hub provides communications (private messaging, chat, blogging, forums, and social networking), along with media management (photos, events, files, web pages, shareable apps) for its members; all in a feature-rich platform. These hubs automatically reach out and connect with each other and the rest of the matrix. Privacy and content ownership always remain under the direct personal control of the individual; and permission to access any item can be granted or denied to anybody in the entire matrix.
What makes the RedMatrix unique is what we call "magic authentication" - which is based on our groundbreaking work in decentralised identity services. No other platform provides this ability. Within the matrix the boundaries between different hubs are blurred or seemingly non-existent. Identity in the matrix is considered transient and potentially nomadic. "Who you are" has nothing to do with "what computer you're connected to", and website content can adapt itself according to who is viewing it. You have the ability to "clone" your identity to other hubs; which allows you to continue to communicate with your friends seamlessly if your primary hub is ever disabled (temporarily or permanently).
The RedMatrix is ideal for social communities of any size, from private individuals and families to online forums, business websites, and organisations. It can be used by anybody who has communications or web content that they wish to share, but where they desire complete control of whom they share it with.
RedMatrix - "The Network"


Overview & Scope
For those unfamiliar with the organization, USAU (USA Ultimate) is the non-profit governing body for Ultimate Frisbee in the United States. The USAU website faces the challenge of organizing a large quantity and variety of information for users with differing needs, interests, and goals. The website also keeps track of user, team, event, and community data and provides an interface that users will regularly interact with to stay engaged in a sport they love. While the organization itself has been making strides toward growing the sport and improving the player experience, it seemed to me that the current website implementation did not effectively contribute to that goal.
This design problem started out as the focus of a Prototyping and Usability Testing class project with an initial scope of the member dashboard. When I reached out to USAU and learned that they'd be interested in seeing the results of my work, I expanded the scope to include the entire website. To get a better sense of the Ultimate community's thoughts on and experiences with the website, I drafted and shared a Google Forms survey. The results are shared here with the main body providing main ideas and additional detail available if you click the or icons next to headers.
Thank you:
- To everyone who completed and shared the survey. I appreciate the time and thought that you put into your responses (also, the feedback on the survey questions).
- To everyone interested in seeing the results, for your patience as I delayed analysis for other obligations, pre-processed data, and combed through the longer text responses.
- To my professor for the assistance with some frequency calculations and advice and feedback on my process
Sample Statistics
I received a total of 598 survey submissions from 42 states (plus Washington DC and 3 Canadian provinces). Responders have played Ultimate for an average of 9.5 years with a standard deviation of about 7. The maximum number of years played was 47.
Roles in Ultimate Community
Player
Team Captain
Fan
Coach
Volunteer
Event Organizer
Observer
Type of Events Paricipated In
Results
Action Frequencies
News Interests
News Sources
Event Tracking
[Content to come]
USAU App Usage
[Content to come]
Member Portal Content
Category of content is followed by the number of times it was mentioned. Subcategories indicate the number of times specific details were included to further refine the category.
[Organization work-in-progress]
- Events/Tournaments - 303
- Calendar - 34
- Upcoming - 157
- I or my team is registered for - 45
- Otherwise relevant to me (nearby, expressed interest, my division) - 41
- Current/Ongoing - 34
- Recent Past - 76
- Archive - 5
- My Teams - 98
- Rankings - 94
- News - 76
- Account Info - 64
- Action Items/Notifications - 46
- Rostering/Team Management - 35
- Division Info - 15
- Rules - 10
Frustrations
[Content to come]
Desired Changes
The following are the common threads that emerged in response to the question "If you could change anything about the USAU website, what would it be?" Hover over the categories for details.
Navigation & organization
The most common concern. Navigation was described as unintuitive and requiring too many clicks or too much scrolling.
Responsiveness/Mobile-friendliness
Ultimate players are often on-the-go and want easy access to tournament schedules, scores, and rosters from their phones.
Simplification & appearance
Users describe the site as cluttered, busy, and outdated and would like to see fewer navigation options, less and larger text, and a clean, modern, and appealing look and feel. Several point out that the current design doesn't leave a positive first impression.
Personalization
Everyone wants what interests them to be front and center but interests vary between individuals. To personalize the content, responders suggest the addition of features to favorite events, follow teams, and customize one's home page.
Searching
Some described googling "usau" and their search terms to avoid using USAU's search features or navigation. Responses describe the tournament search tool in particular as complicated and suggest improving the filters. Users would also like to see a search feature for teams.
Team pages/archives
Users would like to see all results for a team (including past seasons) in one place.
Public player profiles
Users want to see not just team histories but player histories (past teams and events) on public profiles.
Rules features
Many responders wanted a search feature for rules. It was also suggested that pictures, explanations by observers (via video), or a section to clarify questions accompany the rules.
Score reporter
Several mentioned a preference for the older version of score reporter and many would like to see a simpler, speedier, and more user friendly version of the tool. Regarding performance, one event organizer described having to build extra time into the end of pool play and start of bracket play to allow for score updating.
Member portal
Many would like to see a more apparent login area immediately upon accessing the website. This was also frequently mentioned for the member portal content question (when the question was misinterpreted as asking for what they'd like to see on the home page). Users would like to see a more intuitive member dashboard and a more streamlined membership renewal process (e.g. including waiver signing).
Rostering
The team and event roster-building process was described as unintuitive and cumbersome. Some would like to see one team entity that keeps tracks of previous and current rosters rather than different entities for each year. One team manager described players signing up for a team from a previous year.
Appealing to an audience
Many players want to see content that's timely and relevant to them first (e.g. upcoming deadlines, current rankings) while others mention making the home page more welcoming/appealing to new players and the general public. The latter group advocates for showing Ultimate in action and story-telling.
Non-USAU Events
Users would like non-USAU (unsanctioned) events, scores, and rankings to be processed and displayed by the website.
Miscellaneous
For how specific this feedback is, quite a few people mentioned removing the JavaScript scrolling modules for news and events (describing it as "behemoth" in one case). The opening of new tabs when links are clicked also irritated several people. Websites that were mentioned as potential models for USAU were the MLU's old site, Ultimate Central, ESPN, US Soccer, and US Rugby.


Our company, HB Family Tax, helps people save money on their taxes. We feature affordable fees with an emphasis on serving families and small businesses in a comfortable setting.
Why do we prepare taxes?

Why should you choose HB Family Tax?
Our service specializes in helping families and small businesses receive expert income tax advice at an affordable cost. LBGTQ friendly. Senior discounts available. Please contact us for a fee estimate. I guarantee your satisfaction! Call JD's mobile at<PHONE_NUMBER> for immediate service.


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
A sockets based (stream_socket_client) adapter class for Zend_Http_Client. Can be used on almost every PHP environment, and does not require any special extensions.
resource $_context = 'null'
Stream context
array $config = 'array'
Parameters array
array $connected_to = 'array'
What host/port are we connected to?
string $method = 'null'
Request method - will be set by write() and might be used by read()
resource $out_stream = 'null'
Stream for storing output
resource|null $socket = 'null'
The socket for server connection
__construct(
)
:
Adapter constructor, currently empty. Config is set using setConfig()
__destruct(
)
:
Destructor: make sure the socket is disconnected
If we are in persistent TCP mode, will not close the connection
_checkSocketReadTimeout(
)
:
Check if the socket has timed out - if so close connection and throw an exception
close(
)
:
Close the connection to the server
connect(
string $host, int $port
=
80, boolean $secure
=
false
)
:
Connect to the remote server
getConfig(
)
:
array
Retrieve the array of all configuration options
getStreamContext(
)
:
resource
Get the stream context for the TCP connection to the server.
If no stream context is set, will create a default one.
read(
)
:
string
Read response from server
setConfig(
Zend_Config $config
=
array
)
:
Set the configuration array for the adapter
setOutputStream(
resource $stream
)
:
Zend_Http_Client_Adapter_Socket
Set output stream for the response
setStreamContext(
mixed $context
)
:
Zend_Http_Client_Adapter_Socket
Set the stream context for the TCP connection to the server
Can accept either a pre-existing stream context resource, or an array of stream options, similar to the options array passed to the stream_context_create() PHP function. In such case a new stream context will be created using the passed options.
write(
string $method, Zend_Uri_Http $uri, string $http_ver
=
1.1, array $headers
=
array, string $body
)
:
string
Send request to the remote server


Amanitas - A. muscaria
I recieved 28grams of Amanita Muscaria through the mail and was excited to try the world's oldest ethneogen. Around 11:30pm we consumed about 3 medium sized caps each and were eagerly anticipating the effects. Around 30 minutes later there was definitely a change in sensation, objects seemed brighter, surreal, but felt like you were on the prespice of an intense experience.
Unfortunately this was as good as the experience got. My partner started to get red blotches on his face and went to the bathroom to hurl. He appeared to be having an allergic reaction to the mushrooms he threw up 3 times before the night was over and was not at all happy with the effects. I felt somewhat as if I was going to hit a psychadelic state, but that never seemed to occur.
The next morning I felt as if I had a hangover and my head hurt--interaction with people was very difficult and I felt nauseated, it was hard to concentrate on anything. All and all I felt I wasted the money and time on this and it was not what I had expected, I don't think I'll be trying these again.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Gutsy Life Privacy Policy
Personal info
Priyanshu Tiwari
Passionate Learner
Pursuing computer science engineering
How we collect info
We are not collecting any information
How we use your info
We are not using your information for any purpose.
When we share your info
We are sharing your information with anyone.
Any sharing of data is prohibited in our app.
How we store your info
We are not storing your data anywhere.
We are not keeping your information.
About
Developer: Priyanshu Tiwari
Last policy updated on 19/11/2018


Be the Change.
BECOME PART OF THE CURE
Real Stories
REAL STORIES
Learning that you are HIV-positive can be one of the most difficult experiences you go through in life. You may feel scared, sad or even angry – this is OK, and a completely natural part of coping with something that can be life changing.
 You may feel scared, sad or even angry – this is OK, and a completely natural part of coping with something that can be life changing.


---
layout: post
title: forum about polymers
date: '2006-08-03T19:04:00.000+02:00'
author: Steven Van Acker
tags:
modified_time: '2008-01-17T09:20:07.831+01:00'
blogger_id: tag:blogger.com,1999:blog-5513234137363262204.post-8247964600098293865
blogger_orig_url: http://www.singularity.be/2006/08/forum-about-polymers.html
---
In my quest for more information on melting PET bottles, I stumbled over this forum at polymers.com, which I found through this site on polymer fundamentals


Content-Type: text/html
Shakespeare plays, delivered one day at a time, via RSS feeds.
Just select a link and this will give you a custom RSS feed where the play starts today.
The code for this site is available on GitHub.


Give us what we need, Not what we deserve
"When you play the Game of Thrones you win or you die."
"Wands at the Ready!"
You can standby and watch or you can join in and change the world


Script test
## Initialization put initialization content here good idea to encode %3Ctags%3E
Get Value


Home
Games
Blogs
Comentarios
links:
links:
links:
links:
links:
Deixar um comentario:
Nome:
Comentario:


I have tried a number of Linux distros over the years and most recently was happily using Ubuntu 16.04 when I decided to give my laptop a complete revamp. Having read about tiling window managers a while ago, I had already installed i3 and was pleased with the results. But then I read about NixOS and Wayland which prompted the thought - could I install NixOS and a Wayland window manager as the basis of a usable but stripped down set up?
At this point I should probably explain my choices of NixOS and Wayland. Well, I’ve been dabbling with Clojure for a while now and it seems to me that immutability is a pretty useful property. NixOS is a Linux distro, based on the Nix package manager, that provides immutable and reproducible system builds allied with an interesting approach to dependency management. While NixOS was not easy to install, once I understood enough to be dangerous, it has provided me with a greater appreciation of how things work under the hood, mainly due to the declarative nature of the configuration.
Now, why Wayland? That was an easier decision. X is on its way out and the successor to the throne is Wayland. Now is as good a time as any to try to get to grips with it.
My motivation having been established, I took the plunge and went for NixOS 17.03 with the Sway window manager, which is basically i3 on Wayland. My thinking was that I would use another laptop for the experiment, just in case I couldn’t get something usable up and running in a reasonable amount of time. If I succeeded then I would make the NixOS laptop my day-to-day and if not, I would revert to my trusty Ubuntu workhorse.
Well, suffice it to say, I am writing this post on my NixOS laptop. No desktop environment in sight. Unity-less, Gnome-less, KDE-less. Just NixOS and Sway and some packages of my choosing managed by the Nix package manager.
OK, so what does my system look like?
It’s not the prettiest I’ve ever seen, but it is functional and has the potential to allow me to work more efficiently than I have been thus far.
Here’s a list of some of the software that I’ve installed, minus the languages and VM things like Java, Clojure, golang etc., to enable me to arrive at a comfortable set up:
- Chromium - browser essential for my continued use of the Google eco-system
- cmst - QT gui for ConnMan
- ConnMan - network manager
- CUPS - for printing
- dmenu - dynamic menu for starting applications
- i3blocks - provides a flexible status bar
- i3lock - screen locker
- imv - image viewer
- irssi - irc client
- Neovim - editor
- qutebrowser - an interesting python-based browser with vim-like key bindings
- ranger - file manager with vi key bindings
- Samba - for Windows stuff
- Sway - window manager
- Terminology - terminal emulator
- VLC - media player
- Wayland - display server
- XWayland - compatibility layer for X clients
- zathura - document viewer with vim-like key bindings
In subsequent posts I will go into more detail about the revamp, which is still a work in progress. There are things that I couldn’t get working (and still haven’t), and some hoops that I had to jump through.


QPT 1.0.7 Release Notes
NOTE 2: Windows users please see QPT-267 below before installing!
QPT 1.0.7 addresses 11 issues, described below.
Release notes for the previous release are available here.
The QPT documentation index is available here.
To install and run this release of QPT:
| To install → |
launcher -i:qpt -a:qpt-2008B -h:sbfmaps.cl.gemini.edu -p:9999 |
| To run → |
launcher -a:qpt-2008B |
| To uninstall → |
launcher -a:qpt-2008B -u |
As always, the first time you run QPT it will download necessary components. This may
take several minutes, especially in the north. Your previous installation of QPT should
continue to function normally.
New and Notable
[QPT-149] Improved sequence summary text
The sequence summary in the properties view now indicates the step type in addition to time and repeat count. This should make it
a little easier to decide where to split an visit.
[SCT-336/QPT-271] Improved handling of long observations
To make it easier to deal with gigantic observations,
when you create a new visit by dragging a candidate observation into the
Plan Visualizer, the visit will automatically be truncated to the current "drag limit" (10 hours by default; there are menu commands
to adjust this). You can then shorten/lengthen the visit normally, with less of the initial overlapping mess.
Because QPT
now truncates observations without telling you, there is a new QC-only warning for visits that have remaining steps (this warning
doesn't appear on the published plan).
[QPT-267] - QPT now runs correcly on Windows XP
The old launcher relied on some file locking functionality that fails spectacularly on Windows, so it's now enabled only
for real operating systems. Windows users will need to download the new
launcher.jar before
installing QPT. Please make a backup of your old one first.
Other Significant Improvements
- [SCT-330/QPT-272] - Instrument configurations are now ordered more reasonably.
- [SCT-356/QPT-277] - There are now forward/backward navigation buttons in the calendar control.
Significant Bug Fixes
- [QPT-270] - Splitting a long observation would sometimes cause QPT to hang. This has been fixed.
- [SCT-329/QPT-274] - The visualizer now indicates the displayed timezone.
- [SCT-355/QPT-275] - Updated observing conditions (in the OT) are now seen on refresh in QPT.
- [SCT-318/QPT-276] - The Save command is now enabled for new plans (so you don't have to select Save As).
JIRA Release Manifest
Bug
- [QPT-267] - QPT doesn't run reliably on Windows
- [QPT-269] - Published report timezone should be constant
- [QPT-270] - Splitting very long visits sometimes fails
- [QPT-275] - QPT stale observing conditions
Improvement
- [QPT-149] - Show step type in seq summary
- [QPT-179] - Uroll sequence to show all filters
- [QPT-271] - More gracefully handling of long observations
- [QPT-272] - Fix order of instrument components in published
- [QPT-274] - Add time axis label for QPT elevation plot
- [QPT-276] - QPT save hot-key triggers Save-As if plan not yet saved
- [QPT-277] - Show previous month in QPT import from web dialog


--- The Detailed Node Listing ---
Getting Started
Tutorial
Using GXP make for Parallel Processing
GXP internals
Command Reference
Key Stroke Reference
Indices
In order to play with GXP, you need
GXP has been developed on Linux and tested on Linux and FreeBSD. It has been tested with Python 1.5.2, 2.2.2, 2.3.4, and 2.4.2. There are high chances that it runs with later versions of Python.
Python is a very popular programming language that is installed on most Linux platforms. For remote logins, it's very likely that it accepts SSH logins. Thus there are chances that the above prerequisits are already satisfied in your platform.
You can obtain the latest version (tarball) from sourceforge:
http://sourceforge.net/projects/gxp/
and then unpack the tarball by something like:
tar zxvf gxp3.xx.tar.bz2
The exact file name (and the directory name) depends on the current version of GXP. Perhaps you want to make a symlink gxp3 to the directory you obtained, or directly rename the directory to gxp3.
If you have cvs, you can use it to obtain the latest copy under development.
cvs -d :pserver:anonymous@gxp.cvs.sourceforge.net:/cvsroot/gxp co gxp3
Either way, you will have directory called gxp3. Since GXP and accompanying tools are all written in Python, you need no compilation. Instead, all you need to do is either to:
ln -s /absolute/path/to/gxp3/gxpc /usr/local/bin/gxpc
or,
export PATH=$PATH:/absolute/path/to/gxp3
In the former, it is important to make a symlink to, not a copy of, gxpc. Otherwise it fails to find accompanying files under gxp3 directory.
To test your installation, type gxpc to your shell prompt and see something like this.
$ gxpc gxpc: no daemon found, create one /tmp/gxp-you/gxpsession-hongo019-you-2007-07-03-13-56-21-3561-19041263
See Troubleshooting, if you fail.
The most basic function of GXP is to run commands on many hosts. To this end, you first need to learn how to run commands and how to acquire those hosts.
GXP is run from a regular shell prompt. For those who have used prior versions of GXP, this has been changed in this version.
Given you put gxpc in your PATH in one way or another, type the following to your shell prompt.
$ gxpc e whoami
In this manual, $ means a shell prompt, and is not a part of the input.
You will see something like the following.
$ gxpc e whoami gxpc: no daemon found, create one tau $
The gxpc e command lets GXP run whatever follows it, which is, in this example, whoami. As you can see in the first line, a GXP “daemon” is brought up, which takes the request to run whoami. GXP daemon stays running background. Thus, if you issue another gxpc e command again, you will see result immediately this time.
$ gxpc e whoami tau $ gxpc e uname Linux $
The daemon stays running even if you exit the shell or even logout. If you exit or logout and then run your shell or login again, the daemon should be still running.
gxpc quit is the command to terminate the daemon.
$ gxpc quit $
Issueing gxpc e command again, the daemon will bring up again, of course.
$ gxpc e uname gxpc: no daemon found, create one Linux
A primitive way to check if the daemon is running is ps command. For example,
$ ps w PID TTY STAT TIME COMMAND 9273 pts/1 S 0:00 /bin/bash --noediting -i 9446 pts/1 S 0:00 python /home/tau/proj/gxp3/gxpd.py --no_stdin --redirect_stdout --redirect_stderr 9486 pts/1 R 0:00 ps w
gxpd.py is the daemon running for you.
Or you can run gxpc prompt command. If no daemon is running, it does not print anything. If a daemon is running, it prints a short string indicating its status. For example,
$ gxpc prompt [1/1/1]
We will detail the meaning of these three numbers ([1/1/1]) later. For now, remember gxpc prompt command as a way to check if the daemon is running.
In general, e command will run any shell command on all hosts selected for execution. In this example, you only have one host, which is the local host you issued gxpc command on, and that node is selected. See Getting more hosts with use/explore commands, for how to have more hosts and how to select a set of hosts for execution.
With GXP, you will probably want to use many hosts in parallel. You need to have a host you can remote-login. In this example, we assume you are originally on host hongo000 and you have another host, hongo001, which you can remote-login from hongo000 via SSH. Furthermore, we assume you can do so without typing password every time you login hongo001. See Introduction to SSH for GXP Users, if you are not familiar with necessary SSH setup to do so. For those who already know it, you need to have public/private key pairs and either (1) use ssh-agent and ssh-add (eval `ssh-agent` && ssh-add) and input the phassphrase to ssh-add, so SSH does not ask you it again (recommended), or (2) set the encryption passphrase of the private key empty. Though the method (2) uses secure public-key protocol for authentication, when your account on the host storing the private key is compromised, the intruder may be able to access other hosts via the private key.
Either way, you should have an environment where something like the following silently succeeds without your password/passphrase being asked by SSH client.
$ ssh hongo001 hostname hongo001 $
You may use remote-execution commands other than SSH, including RSH, QRSH, and QSUB as well as the local shell (sh) to spawn multiple daemons on a single host. You can customize exact command lines used or even add your own custom rsh-like command in the repertoire. ??? Explore Settings for Various Environment, for details.
Once you have such an environment, try the following to acquire hongo001.
$ gxpc use ssh hongo000 hongo001 $ gxpc explore hongo001 reached : hongo001 $
The first line reads “gxpc [can] use ssh [from] hongo000 [to login] hongo001.” The second line instructs GXP to go ahead and really login hongo001. If hongo000 and hongo001 share your home directory, this command will not take much longer than the regular SSH. After the explore command has finished, issue an e command again. This time, you will see the command being executed on the two hosts.
$ gxpc e hostname hongo000 hongo001 $
gxpc stat command shows hosts (daemons) connected.
$ gxpc e hostname hongo000 hongo001 $
If you want to grab a third host, say hongo002, try the following.
$ gxpc use ssh hongo000 hongo002 $ gxpc explore hongo002 reached : hongo002 $ gxpc e hostname hongo000 hongo001 hongo002
You could continue this way, issueing use command and then explore command to get a single host at a time, but this is obviously not so comfortable if you have hundred hosts, say hongo000 – hongo099. The first trick to learn is that, both the second and the third arguments to use command are actually regular expressions of hostnames. Therefore, the following single line:
$ gxpc use ssh hongo000 hongo0
says that “gxpc [can] use ssh [from any host matching] hongo000 [to login any host matching] hongo0.” Note that any host that begins with hongo0 matches the regular expression hongo0.
Second, explore command can take multiple hostnames in a single command. For example, after the above command, you may grab three hosts with a single stroke by:
$ gxpc explore hongo003 hongo004 hongo005 reached : hongo003 reached : hongo004 reached : hongo005 $
By default, GXP won't grab the same host multiple times, so issuing the following once again will have no effect.
$ gxpc explore hongo001 $
If you have many hosts, this is still painful. An even better way is to use a special notation [[xxx-yyy]], which represents a set of numbers between xxx and yyy (inclusive). So,
$ gxpc explore hongo[[000-014]] $
is equivalent to
$ gxpc explore hongo000 hongo001 hongo002 ... hongo014 $
If you wish to exclude some hosts from the range, use a notation ;nnn or ;nnn-mmm. For example,
$ gxpc explore hongo[[000-014;007]] $
will explore hongo000 ... hongo014 except for hongo007.
$ gxpc explore hongo[[000-014;003-006]] $
will explore hongo000 ... hongo014 except for hongo003-hongo006.

Instead of typing hostnames in a command line, you may have a file that lists targets and give it to explore command by –targetfile or the shorter -t option. Let's say you have a file like the following.
$ cat my_targets hongo[[000-014]] kashiwa[[000-009]] edo[[000-012]]
Then
$ gxpc explore -t my_targets
is equivalent to
$ gxpc explore hongo[[000-014]] kashiwa[[000-009]] edo[[000-012]]
Now you reached 15 hosts in total. The stat command shows hosts (daemons) connected.
$ gxpc stat /tmp/gxp-tau/gxpsession-hongo000-tau-2007-01-27-23-15-04-29004-97439271 hongo000 (= hongo000-tau-2007-01-27-23-15-04-29004) hongo007 (= hongo007-tau-2007-01-27-23-16-30-24842) hongo001 (= hongo001-tau-2007-01-27-23-16-27-1205) hongo013 (= hongo013-tau-2007-01-27-23-48-28-20179) hongo014 (= hongo014-tau-2007-01-27-23-48-14-11435) hongo005 (= hongo005-tau-2007-01-27-23-16-30-9412) hongo006 (= hongo006-tau-2007-01-27-23-16-28-24083) hongo003 (= hongo003-tau-2007-01-27-23-16-29-16040) hongo002 (= hongo002-tau-2007-01-27-23-16-28-22077) hongo008 (= hongo008-tau-2007-01-27-23-48-12-4070) hongo012 (= hongo012-tau-2007-01-27-23-48-14-32519) hongo010 (= hongo010-tau-2007-01-27-23-48-14-12066) hongo011 (= hongo011-tau-2007-01-27-23-48-15-15126) hongo009 (= hongo009-tau-2007-01-27-23-48-13-21582) hongo004 (= hongo004-tau-2007-01-27-23-16-31-8776) $
The first line shows the name of a session file, which is explained later (??). Below hongo000, hongo001–hongo014 are indented by a single space, which means hongo000 issued logins to all these hosts. This happened because we have previously said
$ gxpc use ssh hongo000 hongo0
indicating that (only) hongo000 can login hongo0.
You can alternatively say
$ gxpc use ssh hongo0 hongo0
indicating gxpc can use ssh from any host matching hongo0 to any host matching hongo0. This can be abbreviated to:
$ gxpc use ssh hongo0
In this case, gxpc will try to reach these hosts in a more load-balanced fashion. To see this let's quit and try it again from the beginning.
$ gxpc quit $ gxpc use ssh hongo0 gxpc: no daemon found, create one $ gxpc explore -h /etc/hosts hongo00 hongo01[0-4] reached : hongo003 reached : hongo008 reached : hongo001 reached : hongo004 reached : hongo002 reached : hongo005 reached : hongo007 reached : hongo006 reached : hongo009 reached : hongo013 reached : hongo010 reached : hongo011 reached : hongo012 reached : hongo014 $ gxpc stat /tmp/gxp-tau/gxpsession-hongo000-tau-2007-01-28-00-10-51-311-66768183 hongo000 (= hongo000-tau-2007-01-28-00-10-51-311) hongo006 (= hongo006-tau-2007-01-28-00-10-33-29696) hongo005 (= hongo005-tau-2007-01-28-00-10-35-13470) hongo003 (= hongo003-tau-2007-01-28-00-10-34-16875) hongo002 (= hongo002-tau-2007-01-28-00-10-33-27494) hongo004 (= hongo004-tau-2007-01-28-00-10-36-9479) hongo009 (= hongo009-tau-2007-01-28-00-10-33-21614) hongo008 (= hongo008-tau-2007-01-28-00-10-31-4102) hongo011 (= hongo011-tau-2007-01-28-00-10-34-15158) hongo012 (= hongo012-tau-2007-01-28-00-10-33-32551) hongo010 (= hongo010-tau-2007-01-28-00-10-33-12098) hongo013 (= hongo015-tau-2007-01-28-00-10-34-20211) hongo014 (= hongo014-tau-2007-01-28-00-10-34-11467) hongo007 (= hongo007-tau-2007-01-28-00-10-35-26002) hongo001 (= hongo001-tau-2007-01-28-00-10-32-1979)
The indentations indicate that hongo008 issued logins to hongo010–hongo014. hongo000 issued logins to hongo001 –hongo009. In general, GXP daemons will form a tree. By default, a single node tries to keep the number of its children no more than nine.
todo
gxpc prompt
will show a succinct summary of gxp status. It is strongly recommended to put `gxpc prompt 2> /dev/null` (note for the backquotes, not regular quotes) as part of your shell prompt. For example, if you are a bash user, put the following into your .bashrc.
export PS1='\h:\W`gxpc prompt 2> /dev/null`% '
Then you will always see the succinct summary in your shell prompt. e.g.,
$ export PS1='\h:\W`gxpc prompt 2> /dev/null`% ' $ gxpc hongo:tmp[1/1/1]%
'2> /dev/null' is to make gxpc silently exit if should be there any error.
gxpc use rsh-name src target
tells gxp it can login from src to target via rsh-name.
gxpc explore target ...
attempts to login specified target's by methods specified by use commands. There is a convenient notation to represent a set of targets. e.g.,
$ gxpc explore hongo[[000-012]]
is equivalent to
$ gxpc explore hongo000 hongo001 hongo002 ... hongo012
gxpc e whatever
will run a shell command whatever on all selected hosts. e.g.,
gxpc cd [directory]
will change the current directory of all selected hosts.
gxpc export VAR=VAL
will set the environment variable for seqsequent commands.
gxpc smask
will select the hosts on which the last command succeeded for the execution targets of subsequent commands.
gxpc rmask
will reset the selected hosts to all hosts.
gxpc savemask name
is similar to smask, but it remembers the set of selected hosts for future reference (by -m option of gxpc e commands).
gxpc e -m name whatever
is similar to gxpc e whatever, but runs whatever on hosts that have been set by name by gxpc savemask name.
gxpc -m name cd [directory] gxpc -m name export VAR=VAL gxpc -m name e whatever
-m can actually be written immediately after gxpc.
gxpc e -h hostname whatever
is similar to gxpc e whatever, but runs whatever on hosts whose names match regular expression hostname.
gxpc e -H hostname whatever
is similar to gxpc e whatever, but runs whatever on hosts whose names do not match regular expression hostname.
gxpc -h name cd [directory] gxpc -h name export VAR=VAL gxpc -h name e whatever gxpc -H name cd [directory] gxpc -H name export VAR=VAL gxpc -H name e whatever
Both -h and -H can actually be written immediately after gxpc.
alias e='gxpc e' alias smask='gxpc smask' ...
Finally, it is recommended to put aliases to some frequently used commands into your shell startup files, so that you do not need to type 'gxpc' everytime.
There are the following files in the toplevel directory. This is a bit messy and I like to make it cleaner some day.
Usage:
gxpc cd [OPTIONS ...] DIRECTORY
Description:
Set current directory of the selected nodes to DIRECTORY. Subsequent commands will start at the specified directory. Options are the same as those of `e' command.
Usage:
gxpc e [OPTION ...] CMD gxpc mw [OPTION ...] CMD gxpc ep [OPTION ...] FILE
Description:
Execute the command on the selected nodes.
Options:
'command'
Options:
,
-m MASK,
-h HOSTMASK,-H
HOSTMASK,-g
HOSTMASK,-G
HOSTMASK,
-t HOSTMASK,-T
HOSTMASK FD0[:
FD1]
FD0[:
FD1]
:FD2[:
MASTER]
rlimit_xxx:soft[:hard]
By default,
This is as if `–down 0 –up 1 –up 2' are specified. In this case, stdout/stderr are block-buffered by default. You may need to do setbuf in your program or flush stdout/err, to display CMD's output without delay. –pty overwrites this and turn them to line-buffered (by default). both stdout/err of CMD now goto stdout of gxpc (they are merged). CMD's stdout/err should appear as soon as they are newlined.
See Also:
smask savemask pushmask rmask restoremask popmask
Usage:
gxpc e [OPTION ...] CMD gxpc mw [OPTION ...] CMD gxpc ep [OPTION ...] FILE
Description:
Execute the command on the selected nodes.
Options:
'command'
Options:
,
-m MASK,
-h HOSTMASK,-H
HOSTMASK,-g
HOSTMASK,-G
HOSTMASK,
-t HOSTMASK,-T
HOSTMASK FD0[:
FD1]
FD0[:
FD1]
:FD2[:
MASTER]
rlimit_xxx:soft[:hard]
By default,
This is as if `–down 0 –up 1 –up 2' are specified. In this case, stdout/stderr are block-buffered by default. You may need to do setbuf in your program or flush stdout/err, to display CMD's output without delay. –pty overwrites this and turn them to line-buffered (by default). both stdout/err of CMD now goto stdout of gxpc (they are merged). CMD's stdout/err should appear as soon as they are newlined.
See Also:
smask savemask pushmask rmask restoremask popmask
Usage:
gxpc explore [OPTIONS] TARGET TARGET ...
Description:
Login target hosts specified by OPTIONS and TARGET.
Options:
,
-h HOSTS_FILE,
-t TARGETS_FILE (>= 2)
(0 <=
N <= 2)
Execution of an explore command will conceptually consist of the following three steps.
(1) Known Hosts: Know names of existing hosts, either by –hostfile, –hostcmd, or a default rule. These are called 'known hosts.' -h is an acronym of –hostfile.
(2) Targets: Extract login targets from known hosts. They are extracted by regular expressions given either by –targetfile, –targetcmd, or directly by command line arguments. -t is an acronym of –targetfile.
(3) gxpc will attempt to login these targets according to the rules specified by `use' commands.
Known hosts are specified by a file using –hostfile option, or by output of a command using –hostcmd. Formats of the two are common and very simple. In the simplest format, a single file contains a single hostname. For example,
hongo001 hongo002 hongo004 hongo005 hongo006 hongo007 hongo008
is a valid HOSTS_FILE. If you specify a command that outputs a list of files in the above format, the effect is the same as giving a file having the list by –hostfile. For example,
--hostcmd 'for i in `seq 1 8` ; do printf "%03d\n" $i ; done'
has the same effect as giving the above file to –hostfile.
The format of a HOSTS_FILE is actually a so-called /etc/hosts format, each line of which may contain several aliases of the same host, as well as their IP address. gxpc simply regards them as aliases of a single host, wihtout giving any significance to which columns they are in. Anything after `#' on each line is a comment and ignored. Lines not containning any name, such as empty lines, are also ignored. The above simple format is obviously a special case of this.
It is sometimes convenient to specify /etc/hosts as an argument to –hostfile or to specify `ypcat hosts' as an argument to –hostcmd. As a matter of fact, if you do not specify any of –hostfile, –hostcmd, –targetfile, and –targetcmd, it is treated as if –hostfile /etc/hosts is given.
Login targets are specified by a file using –targetfile option, –targetcmd option, or by directly listing targets in the command line. Format of them are common and only slightly different from HOSTS_FILE. The format of the list of targets in the command line is as follows.
TARGET_REGEXP [N] TARGET_REGEXP [N] TARGET_REGEXP [N] ...
where N is an integer and TARGET_REGEXP is any string that cannot be parsed as an integer. That is, it is a list of regular expressions, each item of which may optionally be followed by an integer. The integer indicates how many logins should occur to the target matching TARGET_REGEXP. The following is a valid command line.
gxpc explore -h hosts_file hongo00
which says you want to target all hosts beginning with hongo00, among all hosts listed in hosts_file. If, for example, you have specified by `use' command that the local host can login these hosts by ssh, you will reach hosts whose names begin with hongo00. If you instead say
gxpc explore -h hosts_file hongo00 2
you will get two processes on each of these hosts.
If you do not give any of –targetfile, –targetcmd, and command line targets, it is treated as if a regular expression mathing any string is given as the command line target. That is, all known hosts are targets.
Format of targets_host is simply a list of lines each of which is like the list of arguments just explained above. Thus, the following is a valid TARGETS_FILE.
hongo00 2 chiba0 istbs sheep
which says you want to get two processes on each host beginning with hongo00 and one process on each host beginning with chiba0, istbs, or sheep. Just to illustrate the syntax, the same thing can be alternatively written with different arrangement into lines.
hongo00 2 chiba0 istbs sheep
Similar to hosts_file, you may instead specify a command line producing the output conforming to the format of TARGETS_FILE.
We have so far explained that target_regexp is matched against a pool of known hosts to generate the actual list of targets. There is an exception to this. If TARGET_REGEXP does not match any host in the pool of known hosts, it is treated as if the TARGET_REGEXP is itself a known host. Thus,
gxpc explore hongo000 hongo001
will login hongo000 and hongo001, because neither hosts_file nor hosts_cmd hosts are given so these expressions obviously won't match any known host. Using this rule, you may have a file that explicitly lists all hosts and solely use it to specify targets without using separate HOSTS_FILE. For example, if you have a long TARGETS_FILE called targets like:
abc000 abc001 ... abc099 def000 def001 ... def049 pqr000 pqr001 ... pqr149
and say
gxpc explore -t targets
you say you want to get these 300 targets using whatever methods you specified by `use' commands.
Unlike HOSTS_FILE, an empty line in TARGETS_FILE is treated as if it is the end of file. By inserting an empty line, you can easily let gxpc ignore the rest of the file. This rule is sometimes convenient when targeting a small number of hosts within a TARGETS_FILE.
Here are some examples.
1.
gxpc explore -h hosts_file chiba hongo
Hosts beginning with chiba or hongo in hosts_file become the targets.
2.
gxpc explore -h hosts_file -t targets_file
Hosts matching any regular expression in targets_file become the targets.
3.
gxpc explore -h hosts_file
All hosts in hosts_file become the targets. Equivalent to `gxpc explore -h hosts_file .' (`.' is a regular expression mathing any non-empty string).
4.
gxpc explore -t targets_file
All hosts in targetfile become the targets. This is simiar to the previous case, but the file format is different. Note that in this case, strings in targets_file won't be matched against anything, so they should be literal target names.
5.
gxpc explore chiba000 chiba001 chiba002 chiba003
chiba000, chiba001, chiba002, and chiba003 become the targets.
6.
gxpc explore chiba0
Equivalent to `gxpc explore -h /etc/hosts chiba0' which is hosts beginning with chiba0 in /etc/hosts become the targets. Useful when you use a single cluster and all necessary hosts are listed in that file.
7.
gxpc explore
Equivalent to `gxpc explore -h /etc/hosts' which is in turn equivalent to `gxpc explore -h /etc/hosts .' That is, all hosts in /etc/hosts become the targets. This will be rarely useful because /etc/hosts typically includes hosts you don't want to use.
Usage:
gxpc export VAR=VAL
Description:
Set environment variable VAR to VAL on the selected nodes. Options are the same as those of `e' command.
Usage:
gxpc help gxpc help COMMAND
Description:
Show summary of gxpc commands or a help on a specific COMMAND.
Usage:
gxpc i
Description:
Enter a new shell with a gxpc session.
Usage:
gxpc js [OPTION ...]
Usage:
gxpc log_level LEVEL gxpc log_base_time
Description:
Command log_level will set the log level of the selected nodes to the specified LEVEL. 0 will write no logs. 2 will write many. Command log_base_time will reset the time of the selected nodes to zero. Subsequent log entries will record the time relative to this time.
Usage:
gxpc make2 [OPTION ...]
Usage:
gxpc make GNU-MAKE-ARGS [ -- GXPC-MAKE-ARGS ]
Description:
Parallel and distributed make.
Options:
Usage:
gxpc makectl (leave|leave_now|join)
Description:
GXP daemons who receive this command will leave, leave immediately, or join the gxp make computation. Options:
Usage:
gxpc makeman
Description:
Generate command reference chapter of gxp manual.
Usage:
gxpc mapred GNU-MAKE-ARGS [ -- GXPC-MAKE-ARGS ]
Description:
This is a map-reduce framework built on top of GXP make. You can run map-reduce without writing any Makefile by yourself. You specify various options in GNU-MAKE-ARGS in the form of var=val. A simple example:
gxpc mapred -j input=big.txt output=out.txt \ mapper=./my_mapper reducer=./my_reducer
You will find the '-n' option of make useful, since it tells you which commands are going to be executed by this command line.
gxpc mapred -n input=big.txt output=out.txt \ mapper=./my_mapper reducer=./my_reducer
Options:
<input filename> and <output filename> are filenames. <mapper command> is a command that reads anything from stdin and writes key-value pairs. <reducer command> is a command that reads key-value pairs from stdin in sorted order and writes arbitrary final outputs.
You will frequently want to specify the following. n_mappers=<number of map tasks> (default: 4) n_reducers=<number of reduce tasks> (default: 2) reader=<reader command> (default: "ex_line_reader") int_dir=<intermediate directory> (default: "int_dir") keep_intermediates=y will keep all intermediate files in int_dir small_step=y will execute the entire computation in small steps dbg=y equivalent to keep_intermediates=y small_step=y (useful for debugging)
More options are: partitioner=<partitioner command> (default: "ex_partitioner") pre_reduce_sorter=<sort command> (default: "sort") final_merger=<merge command> (default: "cat")
pre_reduce_sorter is a command that runs before each reducer. It takes in the command line mappers' output filenames and should output to the stdout the sorted list of key-value pairs. final_merger takes the filenames of all the reducers' output and outputs the final result.
Usage:
gxpc ping [LEVEL]
Description:
Send a small message to the selected nodes and show some information. The parameter LEVEL is 0 or 1. Default is 0. This is useful to know the name and basic information about all or some nodes. It is also useful to check the status (liveness) of nodes and trim non-responding nodes.
See Also:
trim smask
Usage:
gxpc popmask
Description:
Pop the set of nodes on the top of the stack. The next entry that is used to be referred to by name `1' will now be the top of the stack, and thus become the default set of nodes selected for execution.
See Also:
pushmask
Usage:
gxpc pp GNU-MAKE-ARGS [ -- GXPC-MAKE-ARGS ]
Description:
This is a simple parameter parallel framework built on top of GXP make. You can run a simple parameter-sweep type parallel applications without writing any Makefile by yourself. You specify various options in GNU-MAKE-ARGS in the form of var=val. A simple example:
gxpc pp -j cmd='./my_cmd -a $(a) $(f) ' a="1 2 3 4" f="a.txt b.txt c.txt" parameters="a f"
This will execute "./my_cmd -a $(a) $(f)" for all the 4x3=12 combinations of a and f. parameters= is mandatory. For all names listed in parameters, you need to specify at least one value. You will find the '-n' option of make useful, since it tells you which commands are going to be executed by this command line.
gxpc pp -n cmd='./my_cmd -a $(a) $(f) ' a="1 2 3" f="a.txt b.txt c.txt"
Usage:
gxpc prof_start FILENAME gxpc prof_stop
Description:
Start/stop profiling of the selected nodes. Stats are saved to the FILENAME.
Usage:
gxpc smask [-] gxpc savemask [-] NAME gxpc pushmask [-] e.g., gxpc e 'uname | grep Linux' gxpc smask
Description:
All three commands have a common effect. That is to modify the set of nodes that will execute subsequent commands. When `-' argument is not given, nodes that executed the last command and succeeded are selected. With argument `-', nodes that executed the last command and failed are set. The definition of sucess or failure depends on commands, but in the case of `e' command, a node is considered to succeed if the command exits with status zero.
These commands can be used to efficiently choose the nodes to execute subsequent commands by various criterion.
Examples:
1.
gxpc e 'uname | grep Linux' gxpc smask
This will set the execution mask of Linux nodes.
2.
gxpc e 'which apt-get' gxpc smask - gxpc e hostname
This will set the execution mask of nodes that do not have apt-get command, and the last command will show their hostnames.
To see the effect of these commands, it is advised to include the gxp3 directory in your PATH, and add something like the following in your shell (bash) prompt, which will show the number of nodes that succeeded the last command, the number of nodes that is currently selected, and the number all nodes.
export PS1='\h:\W`which gxp_prompt 1> /dev/null && gxp_prompt`% '
With this, you can see the effect of these commands in shell prompt.
[66/66/66]% e 'uname | grep Linux' Linux Linux Linux Linux Linux Linux Linux Linux Linux Linux [10/66/66]% gxpc smask [10/10/66]%
In addition to setting the execution mask, savemask saves the set of selected nodes with the specified name. Sets of nodes hereby saved can be later used for execution by giving –withmask (-m) option. This is useful when your work needs several, typical set of nodes to execute commands on. For example, you may save a small number of nodes for test, all gateway nodes to compile programs, all nodes within a particular cluster, and really all nodes.
Command pushmask is similar to savemask, but the set is saved onto a stack. The newly selected set of nodes are on the top of the stack and named `0'. Previously selected nodes are named by the distance from the top.
See Also:
showmasks rmask restoremask popmask
Usage:
gxpc quit [--session_only]
Description:
Quit gxp session. By default, all daemons will exit. If –session_only is given, daemons keep running and only the session will cease.
Usage:
gxpc reclaim tid
Description:
Command reclaim will reclaim task tid unconditionally.
Usage:
gxpc restoremask NAME
Usage:
gxpc rmask
Description:
Reset execution mask. Let all nodes execute subsequent commands.
See Also:
showmasks smask savemask restoremask pushmask popmask
Usage:
gxpc rsh [OPTIONS] gxpc rsh [OPTIONS] rsh_name gxpc rsh [OPTIONS] rsh_name rsh_like_command_template
Description:
Show, add, or modify rsh-like command explore/use will recognize to the repertoire. 'gxpc rsh' lists all configured rsh-like commands. 'gxpc rsh rsh_name' shows the specified rsh-like command. 'gxpc rsh rsh_name rsh_like_command_template' adds or modifies (if exist) the specified rsh-like command to use rsh_like_command_template.
The rsh_name is used as the first parameter of 'use' command (e.g., 'gxpc use ssh src target' or 'gxpc use rsh <src> <target>').
By default, the following rsh-like commands are builtin.
ssh, ssh_as, rsh, rsh_as, sh, sge, torque, and pbs.
Options:
Examples:
1. gxpc rsh ssh (output) ssh : ssh -o 'StrictHostKeyChecking no' ... -A %target% %cmd%
This displays that an rsh-like command named 'ssh' is configured, and gxp understands that, to run a command a host via ssh, it should use a command:
ssh -o 'StrictHostKeyChecking no' ... -A %target% %cmd%
with %target% replaced by a target name (normally a hostname) and %cmd% by whatever commands it wants to execute on the target.
2. gxpc rsh ssh ssh -i elsewhere/id_dsa -o 'StrictHostKeyChecking no' -A %target% %cmd%
This instructs gxp to use command line:
ssh -i elsewhere/id_dsa -o 'StrictHostKeyChecking no' -A %target% %cmd%
when it uses ssh. You can arbitrarily name a new rsh-like command. For example, let's say on some hosts, ssh daemons listen on customized ports (say 2000) and you need to connect to that port to login those hosts, while connecting to the regular port to login others. Then you first define a new rsh-like command.
3. gxpc rsh ssh2000 ssh -p 2000 -o 'StrictHostKeyChecking no' -A %target% %cmd%
And you specicy ssh2000 label to login those hosts, using 'use' command. e.g.,
use ssh2000 <src> <target>
See Also:
use explore
Usage:
gxpc set_max_buf_len N
Description:
Set maximum internal buffer size of gxp daemons in bytes. default is 10KB and any value below the default is ignored. If no argument is given, use the default value.
Usage:
gxpc show_explore SRC TARGET
Description:
Show command used to explore TARGET from SRC.
Usage:
gxpc showmasks [--level 0/1] [NAME] e.g., gxpc showmasks gxpc showmasks --level 1
Description:
Show summary (–level 0) or detail (–level 1) of all execution masks (if `name' is omitted) or a specified excution mask named `name.' The name of the current default execution mask is `0'.
Examples:
gxpc showmasks gxpc showmasks --level 0 # show summary of all exec masks gxpc showmasks --level 0 0 # show summary of the current mask gxpc showmasks --level 1 0 # show detail of current exec mask gxpc showmasks --level 1 all # show detail of exec mask named `all'
Without any argument as in the first line, a summary like the following is shown.
0 : 1 1 : 66 six : 6 ten : 8 half : 27
This says there are three execution masks, called `0', `1', `six', `ten', and `half.' The right column indicates the number of nodes that will execute a command when the mask is selected by a –withmask (-m) option. `0' is the current, default execution mask, used when –withmask (-m) option is not given. These masks are created by savemask or pushmask command.
When option –level 1 is given, details about the execution mask will be shown, like the following.
six : 6 idx: name (gupid) -: hongo-lucy-tau-2006-12-31-22-40-24-31387 -: hongo002-tau-2006-12-31-13-39-17-338 0: hongo010-tau-2006-12-31-22-25-58-20559 -: hongo006-tau-2006-12-31-22-27-19-11951 1: hongo020-tau-2006-12-31-22-34-06-11026 -: hongo001-tau-2006-12-31-22-34-38-15517 2: hongo030-tau-2006-12-31-22-44-07-4931 -: hongo007-tau-2006-12-31-22-30-54-21738 3: hongo040-tau-2006-12-31-22-47-55-32666 -: hongo004-tau-2008-12-31-22-42-33-31254 4: hongo060-tau-2006-12-31-22-42-59-3899 -: hongo005-tau-2006-12-31-22-38-30-1150 5: hongo050-tau-2006-12-31-22-40-55-18088
This is a subtree of the whole tree of gxp daemons. Nodes that will actually execute commands will have an index number (0, 1, ..., 5) on the first column. Nodes marked with `-' will not execute the command, but are part of the minimum subtree containing those six nodes.
See Also:
smask rmask savemask restoremask pushmask popmask
Usage:
gxpc stat [LEVEL]
Description:
Show all live gxp daemons in tree format. LEVEL is 0, 1, or 2 and determines the detail level of the information shown.
Usage:
gxpc trim
Description:
Trim (release) some subtrees of gxp daemons. This is typically used after a ping cmd followed by smask, to prune non-responding (dead) daemons. Specifically, trim command will be executed on the selected nodes, and each such node will throw away a children C if no nodes under the subtree rooted at C are selected for execution of this trim command. This effectively prunes (trims) the subtree from the tree of gxp daemons. For example,
gxpc ping # If there are some non-responding daemons, this command will hang. # type <Ctrl-C> to quit. gxpc smask gxpc trim
Usage:
gxpc use [--as USER] RSH_NAME SRC [TARGET] gxpc use --delete [--as USER] RSH_NAME SRC [TARGET] gxpc use gxpc use --delete [idx]
e.g., gxpc use ssh your_hostname compute_node_prefix
Description:
Configure rsh-like commands used to login targets matching a particular pattern from hosts matching a particular pattern. The typical usage is `gxpc use RSH_NAME SRC TARGET', which says gxp can use an rsh-like command RSH_NAME for SRC to login TARGET. gxpc remembers these facts to decide which hosts should issue which commands to login which hosts, when explore command is issued. See the tutorial section of the manual.
Examples:
gxpc use ssh abc000.def.com pqr.xyz.ac.jp gxpc use ssh abc000 pqr gxpc use ssh abc gxpc use rsh abc gxpc use --as taue ssh abc000 pqr gxpc use qrsh abc gxpc use qrsh_host abc gxpc use sge abc gxpc use torque abc
The first line says that, if gxpc is told to login pqr.xyz.ac.jp by explore command, hosts named abc000.def.com can use `ssh' method to do so. How it translates into the actual ssh command line can be shown by `show_explore' command (try `gxpc help show_explore') and can be configured by `rsh' command (try `gxpc help rsh').
SRC and TARGET are actually regular expressions, so the line like the first one can often be written like the second one. The first line is equivalent to the second line as long as there is only one host begining with abc000 and there is only one target beginning with pqr. In general, the specification:
gxpc use RSH_NAME SRC TARGET
is read: if gxpc is told to login a target matching regular expession TARGET, a host matching regular expression SRC can use RSH_NAME to do so.
Note that the effect of use command is NOT to specify which target gxpc should login, but to specify HOW it can do so, if it is told to. It is the role of explore command to specify which target hosts it should login
If the TARGET argument is omitted as in the third line, it is treated as if TARGET expression is SRC. That is, the third line is equivalent to:
gxpc use ssh abc abc
This is often useful to express that ssh login is possible between hosts within a single cluster, which typically have a common prefix in their host names. If the traditional rsh command is allowed within a single cluster, the fourth line may be useful too.
If –as user option is given, login is issued using an explicit user name. The fifth line says when gxp attempts to login pqr from abc000, the explicit user name `taue' should be given. You do not need this as long as the underlying rsh-like command will complement it by a configuration file. e.g., ssh will read ~/.ssh/config to complement user name used to login a particular host.
qrsh_host uses command qrsh, with an explicit hostname argument to login a particular host (i.e., qrsh -l hostname=...). This is useful in environments where direct ssh is discouraged or disallowed and qrsh is preferred.
qrsh also uses qrsh, but without an explicit hostname. The host is selected by the scheduler. Therefore it does not make sense to try to speficify a particular hostname as TARGET. Thus, the effect of the line
gxpc use qrsh abc
is if targets beginning with abc is given (upon explore command), a host beginning with abc will issue qrsh, and get whichever host is allocated by the scheduler.
See Also:
explore rsh
Usage:
gxpc version
Usage:
gxpc vgxp
todo
todo
todo
todo


I'm a freshmen in Logos International School.
I've been in Cambodia and Logos for 10 years.
My favorite foods are pizzas, tacos and burgers.
Nationality: Chinese (born in Hong Kong)
Age: 15
I'm a freshmen in Logos International School.
I've been in Cambodia and Logos for 10 years.
My favorite foods are pizzas, tacos and burgers.
Nationality: Chinese (born in Hong Kong)
Age: 15