text:
Naming/How to name a child/Cautions

Cautions
Certain practices are not categorically frowned upon, but can be problematic and warrant care: they create strong associations, which is often the intention, and inevitably the effect.

Shared name

 * Repeating the father’s name: This (chiefly American) practice may smack of dynastic pretensions, and can be impersonal: the child is strongly identified with their family and father, not so much as an individual. Two techniques are to repeat the first name but change the middle name or names, as in Richard J. Daley (father) and Richard M. Daley (son), or to repeat the name exactly, and append “Junior” or “III, IV”.
 * Celebrity: Naming a child “Mickey” (Mouse) or “Elvis” (Presley) evokes a number of spurious associations with their name.
 * Holy names: The most prominent form of naming a child after someone is naming them after a god, technically called “theophory”; similar is naming after prominent holy figures. In some societies this is very common: naming sons after the prophet Muhammad is very common in Muslim societies, while “Jesus” is not uncommon in Spanish-speaking Catholic countries. By contrast, “Jesus” is rarely used as a name in English-speaking societies, and “Mary” was not used until about 1300. Naming after a god or religious figure can be seen as the height of respect, or the height of arrogance, and people with theophoric (or otherwise respected) names often go by a different name.
 * Name of a friend or a friend’s family member: Using the name of a friend or a member of a friend’s family (a child, or an older relative) can be taken as flattering, or can cause offense, due to the proprietary feelings people have for their names. It is nonetheless generally acceptable, and unlikely to cause confusion–if both are present together, one is likely to be called “Big X” and the other “Little X”. Intentionally naming a child the same as a friend’s child of the same age (if both are expected at similar times) is more likely to cause friction and confusion, and should be considered carefully–other than any offense, similar considerations apply as to common names, and if the two children are frequently together, they will likely go by last names or nicknames.

Meaning

 * Meaning: Names in English generally do not have transparent meanings. Thus the meaning of a name is effectively secret, and is not the social effect. For instance, “Apurva” means “unprecedented”, “unique”, but the social effect among English-speakers is that it is an Indian name. One should not presume that the meaning will come across, and should not place undue weight on it.
 * Word names: Conversely, because names that are a normal word are unusual in English, they attract attention, and create strong associations. These are largely flower names or virtue names for women: Rose, Lily, or Grace, Joy.

Popularity

 * Very common: If one has a very common first name, one will likely be called by one’s family name or middle name, or some nickname, and downplays distinctiveness. This practice (and resulting effects) is less the case today than in the past: in early 19th century England and Wales, over 20% of babies were given the most common first name (John for men, Mary for women), while in the US today just over 1% of babies are given the most common first name.
 * Unusual or unique: If one has a name that others have never seen or heard before, whether because it is made up or is simply not common in a given society, it sticks out and will likely need to be spelled, or its pronunciation explained. This causes some hassle and emphasizes individuality or distinctiveness.

Examine the Initials
When selecting a name, pay attention to what the child’s initials will be, and make sure that if it spells something, it is innocuous. “Anna Serena Smith” will have obvious problems with her name throughout her life, as every “clever” cad she meets will tell her what her initials spell. She will know exactly what her initials spell early in life. Meanwhile, “Karen Irene Thornton” will suffer no such abuse, for even though her name spells a word, it is an innocuous one.

Username
Similarly, one may consider future usernames, which for First M. Last are often of the form: They may also be truncated, as in: These are less obvious than initials, and less used by other people, but occasionally they form recognizable words, and in some contexts others may use one’s username, such as to address email or as a screen name. If one wishes to be cautious, one may check what a child’s usernames would be; if one wishes to include a hidden word, this is a subtler place to put one than initials.
 * flast
 * lastf
 * firstl
 * fmlast
 * firsl
 * lasf

title: Naming/How to name a child/Cautions


text:
Understanding Scientific Terms/Colors

Lesson 5 - Colors
Many words incorporate Greek and Latin words for colors. For example, the word for a red blood cell is erythrocyte. Erythro is a Greek root meaning red. Here are some more color roots that you may encounter.

root

 * -some: body

How would you write the words with these meanings?

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Understanding Scientific Terms/Colors


text:
Naming/How to name a concept

When one is discussing a concept, having a label to use to refer to it facilitates discourse, and identifies it as a specific idea, making the concept more mnemonic and usable, via chunking. See especially use of the term "thought experiment" on the value of naming a concept.

Naming concepts is useful both for technical jargon (within a specific work or field), or in common speech. This is due in fact, creating neologisms as concepts help increase the the variety of vocabulary, lexicon, jargon, and terminology, and diversify the culture of the each concept.

Successful examples
Examples of names for concepts that have caught on: These were both central ideas of a book.
 * Conspicuous Consumption
 * Paradigm Shift

More recent: These latter were the titles of books that focused on the concepts.
 * Tipping Point
 * Black Swan

These are all two-word noun phrases; in some cases they use a more or less unusual word ("conspicuous", and "paradigm"), in other cases common words.

In all cases, there is a clear idea underlying them: the issue is simply to label it in a memorable and evocative way.

Unsuccessful examples
The "world of ideas & information" is a commonly understood concept that does not have a commonly accepted term, despite the above efforts. "Noosphere" is rather alien-sounding, while "infosphere" is too casual-sounding.
 * Noosphere / Ideosphere / Infosphere

High jargon fields
Technical fields tend to be higher in jargon, as one uses existing concepts to build higher concepts, hence one needs a way to refer concisely to these concepts.
 * Legal jargon
 * Mathematics
 * Engineering
 * Mechanical work
 * Philosophy
 * Programming
 * Information Technology

Avoid generic terms
For instance, in mathematics, "normal" means a bewildering array of distinct concepts.

Foreign terms
Loaned foreign terms can be memorable for their very foreignness: in physics, Gedankenexperiment is frequently used for thought experiment. One can also calque a phrase (translate it word-for-word).

title: Naming/How to name a concept


text: Template:Goodbook/XForms

title: Template:Goodbook/XForms


text: User talk:69.65.169.25

title: User talk:69.65.169.25


text: User talk:24.186.30.112

title: User talk:24.186.30.112


text: User talk:70.48.206.3

title: User talk:70.48.206.3


text:
User talk:Ricky bobby 63

Welcome!
Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.-- – Mike.lifeguard  | talk 02:56, 23 January 2008 (UTC)

title: User talk:Ricky bobby 63


text: Template:Understanding Scientific Terms

title: Template:Understanding Scientific Terms


text: User talk:24.190.250.87

title: User talk:24.190.250.87


text: User talk:84.241.28.40

title: User talk:84.241.28.40


text:
User:Jfendler

Please see my personal home page at the Polytechnic of Namibia.

title: User:Jfendler


text: User talk:217.218.36.199

title: User talk:217.218.36.199


text:
XQuery/DBpedia with SPARQL - Stadium locations

At the risk of being repetitious, here is another script which mashes up data from DBpedia with GoogleMaps, this time to show the location of all venues in a supplied Wikipedia Category of venues.

Football Venues in England

 * kml
 * GoogleMap

Football Venues in Scotland

 * kml
 * GoogleMap


text:
Khepera III Toolbox

The Khepera III Toolbox is a collection of scripts, programs and code modules for the Khepera III robot.

The toolbox was developed by the Distributed Intelligent Systems and Algorithms Laboratory (DISAL) at EPFL (Lausanne, Switzerland) and comprises:
 * Scripts to conveniently upload and run programs on multiple robots.
 * Programs to interact with most robot features (e.g. infrared sensors, motors).
 * A development environment (using arm-linux-gcc and make) to easily program and compile programs for the robot.
 * A very straightforward API to access sensors and actuators on the robot.
 * Install scripts to set up WLAN networking and other things.

The toolbox does not need the libkorebot and provides a faster, safer and easier to use implementation of the same functionality.

Contents

 * Download and Installation
 * Introduction
 * Network Setup
 * The Toolbox
 * Scripts
 * Programs
 * Modules
 * Install Scripts
 * Parsing Program Output
 * Writing your Own Programs
 * Writing your Own Modules
 * Programming Hints
 * Examples
 * Why to Use the Khepera III Toolbox Instead of the libkorebot

title: Khepera III Toolbox


text:
User:Islamabad

hi, i am nadeem from islamabad. i am 27 year old. i am smart and slim. i have a job in private islamabad. i like senser and true people. i like to talk fresh mind students.

title: User:Islamabad


text: User talk:212.85.23.217

title: User talk:212.85.23.217


text:
User talk:160.83.32.14

-- Herby talk thyme 12:23, 23 January 2008 (UTC)

title: User talk:160.83.32.14


text:
Khepera III Toolbox/Download and Installation

Downloading the Package
A more or less stable release of the toolbox is now available on the sourceforge project page. After downloading the file, uncompress it with unzip khepera3toolbox-YYYY-MM-DD.zip This will create a folder khepera3toolbox in your current directory with the whole toolbox.

This is the preferred way of getting the toolbox if you intend to just use it, but not make any contributions (programs, modules, bugfixes, ...) by yourself. Whenever we release a new version, you have to download a new ZIP file, and replace the whole khepera3toolbox with the new version of the toolbox.

Getting the Latest Revision from SVN
The latest version can be obtained by checking out the following SVN tree: svn checkout https://svn.code.sf.net/p/khepera3toolbox/code/ This will create a folder khepera3toolbox in your current directory with the whole toolbox.

This is the preferred way of getting the toolbox if you plan on making contributions (programs, modules, bugfixes, ...) by yourself, or if you want to use the latest version of the toolbox. To update to a new revision, just type svn update inside the khepera3toolbox folder.

Installation
The toolbox does not need to be copied to a specific place - it stays in a convenient place in your home directory.

However, you need to modify two environment variables. This can either be done manually, by typing the following two lines on your bash shell: or automatically, by adding the above lines to your ~/.bashrc (or ~/.profile) file. Note that if you choose to do it manually, you need to it each time you open a new terminal window.

To check if you set these variables correctly, type k3go -h This should print a short help text for the k3go script in your terminal window.


text: User talk:219.78.145.99

title: User talk:219.78.145.99


text:
User talk:Girlyboy~enwikibooks

-- Herby talk thyme 13:45, 23 January 2008 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Girlyboy. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Girlyboy~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:11, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:00, 19 April 2015 (UTC)

title: User talk:Girlyboy~enwikibooks


text: User talk:58.106.95.81

title: User talk:58.106.95.81


text:
User:Oceancetaceen~enwikibooks

HI,

I´m Oceancetaceen, I come from Duisburg-Rheinhausen Germany. I cant write so good englisch, but I think, that I learn here more englisch. I am 16 years old and go to the Realschule Rheinhausen, that is my school. I am in form 10 and had in Summer my qualification for an collage. I want to be an teacher, and want to study biology, chemistry, physiks and german. I work since october 2007 in zhe german wikibooks and wirte their schoolbooks, I like school must you know and want to see more of the world, next year I want to go to england

title: User:Oceancetaceen~enwikibooks


text: User talk:208.122.64.230

title: User talk:208.122.64.230


text:
William Shakespeare's Works/Comedies/Much Ado About Nothing/Act 1

Scene I
The play opens with three of our main characters, LEONATO, his daughter HERO and her cousin BEATRICE getting news from a MESSENGER. The information the messenger provides sets up the scene: the prince and his lords are returning from a battle in which they have had great success. Once LEONATO has found out that all is well, and that a young nobleman named CLAUDIO has made a name for himself, the rest of this part of the scene is dominated by BEATRICE. She demonstrates her vivacious wit by making fun of BENEDICK, one of the returning lords who we are told she has an ongoing "merry war" with. The names BEATRICE and BENEDICK correspond - Beatrice means 'she who blesses' and Benedick means 'he who is blessed' which the contemporary audience would have spotted as a sign that the two are destined to be lovers despite her apparent low opinion of him (think modern soaps where characters who display passionate dislike often end up in bed together the next week).

The prince DON PEDRO, his half brother DON JOHN, CLAUDIO and BENEDICK arrive and LEONATO and the prince exchange greetings and pleasantries. They display mutual respect - LEONATO naturally respects his prince and DON PEDRO is grateful to LEONATO for hosting him and his men. This brief exchange is barely over when BEATRICE and BENEDICK start criticising each other and expressing how little they each care for the other. They both have razor sharp wit and use it to insult each other. Such vehement dislike and clever turn of phrase is rather funny, considering they have such strong passion for each other and are the only ones who cannot see it.

All but BENEDICK and CLAUDIO leave. Immediately CLAUDIO asks BENEDICK's opinion of HERO. BENEDICK reels off a list of reasons why HERO is inferior: she is not fair-skinned enough to be desirable and is far too short for his liking (tall women were believed at the time to be more likely to survive childbirth thus make more suitable wives), even BEATRICE is more attractive than HERO in his opinion. BENEDICK goes on to despair that no man can seem to stay a bachelor anymore and vows that he himself will never "turn husband." CLAUDIO doesn't take him too seriously; he is already deeply in love. DON PEDRO returns and joins their conversation, agreeing with CLAUDIO that HERO is a worthy woman. DON PEDRO even challenges BENEDICK's strong views, saying that he will see him sick with love before too long (predicting what we all know will happen). BENEDICK leaves and DON PEDRO agrees to help CLAUDIO win over HERO and the approval of LEONATO by pretending to be him at the disguise party.

Scene II
ANTONIO is telling LEONATO that one of his servants overheard DON PEDRO talking to CLAUDIO about his plans to woo HERO. As we know from having witnessed this scene the servant has got it wrong; DON PEDRO was offering to help CLAUDIO by pretending to be him while talking to HERO and LEONATO - not actually wooing HERO for himself. Unfortunately LEONATO is pleased with this news as marrying his daughter to a prince would be a great honour.

Scene III
DON JOHN is miserable: he has been accepted into his brother's good favour but as an illegitimate son he has no claim to power or honour. As such he seeks to deliberately make mischief (he has quite a chip on his shoulder). CONRADE tries to cheer him up with little success, but when BORACHIO enters and informs him of DON PEDRO's plan to woo HERO for CLAUDIO he perks up, spotting an opportunity to make trouble. When he gets his men to swear their loyalty it is reminiscent of troublesome teenagers promising not to tell on each other before committing their misdeeds. DON JOHN is entirely selfish, but sees himself as the victim of prejuduce even though in the play the other characters treat him respectfully.


text: User talk:169.139.62.15

title: User talk:169.139.62.15


text:
Seam

Seam is a Java application stack, developed by JBoss, geared primarily towards the development of web applications. Its primary purpose is to pull together JavaServer Faces and Enterprise JavaBeans 3.0 by removing all of the "plumbing" code.

Table of contents

 * 1) Setting up your environment
 * 2) Creating a project
 * 3) Your first application

title: Seam


text:
Seam/Environment

To set up Seam, use the following software:

Software

 * JBoss 4.2.2.GA
 * JBoss Seam 2.0.0.GA
 * Eclipse Europa for JEE developers
 * JDK 1.5.x or above
 * Apache Ant 1.6.x (do not use 1.7!)

Environment variables

 * Ensure that JAVA_HOME is pointing to the JDK
 * Ensure that ANT_HOME is pointing to the Ant directory
 * Make sure that "%ANT_HOME%\bin" is in the PATH variable

Seam

 * Put the location of the JBOSS AS in the build.properties file (has to be absolute)

Eclipse

 * Set up the JBoss AS Runtime
 * Go to Windows --> Preferences --> Server --> Installed Runtimes
 * Click Add
 * Select JBoss 4.2 Runtime
 * Browse for the installation directory
 * Set up the server to run off the runtime
 * In the JBoss Server View, select New Server
 * Select your newly created runtime
 * Test the server by starting it up
 * If there are problems, check the end of this guide for technical issues on JBoss

HSQLDB (a.k.a. Hypersonic)

 * The embedded database within JBoss
 * I am using it in its default configuration, which means that data will not be retained when the JBoss Application Server is shut down

title: Seam/Environment


text:
Seam/Creating

 * 1) In Eclipse, use the wizard to create a new Seam project called "myProject", make sure to choose "EAR" as the project type, as WAR files do not support EJB3
 * 2) Eclipse will create four separate projects
 * 3) * myProject
 * 4) * myProject-ear
 * 5) * myProject-ejb
 * 6) * myProject-test
 * 7) Of these, only two areas are, for now, of interest to us
 * 8) * The "WebContent" folder in the "myProject" project
 * 9) ** This will contain all your JSF pages, images, CSS files etc. Basically, everything to do with the UI.
 * 10) * The "ejbModule" folder in the "myProject-ejb" project
 * 11) ** This will contain all your Java classes.
 * 12) ** Although there is a SRC directory under the "myProject" folder, you can't use classes there as fully working Seam components
 * 13) ** Since most of the classes should be regarding business logic or persistance, they should be EJBs anyway
 * 14) To help clear some of the clutter set the filter to hide "Libraries from external"
 * 15) Turn off the Hibernate logging by opening "persistence.xml" (located in myProject-ejb --> ejbModule --> META-INF) and setting the property "hibernate.show_sql" to "false".  You don't have to do this, but I find Hibernate to be pretty chatty and the messages usually don't help me much.  You can always turn it back on later if needed.

title: Seam/Creating


text:
User:Idontknow610~enwikibooks

Hi. Please see my user page at Wikipedia

title: User:Idontknow610~enwikibooks


text:
Talk:LaTeX/Collaborative Writing of LaTeX Documents

git and mercurial
Hi, this is really a right use case for collaborative writing. However, now Subversion isn't the most innovative tool for this. I am currently holding an SVN repository for whole my scientific work (articles, PhD Thesis, F77 codes, calculation results, etc.) One major issue really annoying with SVN is the requirement to work online. You can't commit/diff/log/etc while being offline (unless you are taking your repository with you). This is not an issue in the next generation version control systems - distributed version control systems. As examples, see GIT, Bazaar. I think that it at least can be mentioned in this article.
 * Yeah, I'd be interested to see an article about using LaTeX with Git. Wouldn't hurt to diversify this article--Snaip (talk) 20:59, 27 October 2010 (UTC)
 * I am about to write my PhD thesis (energy modeling) using git. I used subversion for my MSc thesis.  Some material on LaTeX + git would be great.  However the current page looks very polished so I would suggest a new page.  Would be useful to include mercurial (hg) too. Robbiemorrison (talk) 17:30, 13 December 2010 (UTC)
 * I think the current page can be made much more encompassing without loss of precision. There really isn't a difference between any of these systems (git, hg, or svn) in how they track changes, more in how the user accesses those changes. Most (if not all) of the 'rules' presented about how to use LaTeX with SVN apply equally to either of the other systems. I feel a specific manual of how to use each system (how to commit, patch, diff etc.) is best left as a link to another resource. Glosser.ca (discuss • contribs) 14:43, 28 July 2011 (UTC)
 * Regarding git, I would put in a strong recommendation for the  package to integrate git and LaTeX. Robbiemorrison (discuss • contribs) 06:44, 24 July 2012 (UTC)
 * I definitely agree with a more neutral documentation of VCS. This whole page sounds like an ad for SVN. It's not really in favor of the book, especially in these times where SVN popularity is collapsing. And yes, this is no place for a VCS tutorial, only the basic commands for syncing and diffing should bo pointed out. It is really time for big changes in this document. --Ambrevar (discuss • contribs) 18:23, 21 December 2012 (UTC)

recommendations
We should mention latexdiff somewhere.

The recommendations for line-length seem conflicting and unjustified. Why would you want to have everyone breaking lines at 80 characters? Works best to have paragraphs as single lines, then the user's editor (whatever it is - vim/kile etc) can visually break the lines appropriately for display only.
 * The reason for that is that it simplifies the conflict handling when using revision control that's based on diff. However I personally don't see this as a problem, if two people have a conflict in a paragraph, I think it's best that the whole paragraph gets reviewed anyway. Line-only conflicts might cause structure errors more easily. Well, just a personal opinion. --Snaip (talk) 20:59, 27 October 2010 (UTC)

noosphere and planetmath
I would recommend to mention noosphere which is the underlying software of the planetmath project. . Oub (talk) 13:35, 27 April 2010 (UTC):

Etherpad service
Although the original service has been discontinued, a number of equivalent sites have been created - see http://etherpad.org/ for details. Recent Runes (talk) 18:22, 11 October 2010 (UTC)

trackchanges
Anyone using trackchanges? I just started and it seems handy for collaborative work, especially with svn. 68omalley (talk) 15:08, 4 November 2010 (UTC)

WorkingWiki
I would like to mention WorkingWiki, a free software package that implements collaborative editing of LaTeX documents in MediaWiki wikis, including full previewing and use of multiple interdependent source files. - (WorkingWiki author) Worden.lee (discuss • contribs) 06:27, 6 March 2012 (UTC)

Updating article for PracTeX
The editor of the PracTeX journal, Lance Carnes, asked me whether I am interested in updating my PracTeX article (on which this wikibook is based on) for a new special issue of the PracTeX journal. Is anyone interested in doing this together with me? If yes, please send me an e-mail (see http://www.arne-henningsen.name/). Cheers, Arne.

Collaborative online editing
Should this section (or a new section) cover collaborative online editing? I am thinking of and any similar approaches (hosted and/or open source code) Jodi.a.schneider (discuss • contribs) 12:22, 19 July 2016 (UTC)
 * ShareLaTeX
 * Papereria
 * Overleaf

how to contribute
The discussions mentioned (2010) several aspects which still are not included.

 * trackchanges
 * mercurial
 * latexdiff.
 * latexdiff has been mentioned but not using a VC system.
 * the latex style todonotes is also helpful.

I have used mercurial for collaboration since 2015 and I am quite pleased with bitbucket. So I would just add this information somehow, can I just start?

Oub (discuss • contribs) 20:03, 30 August 2017 (UTC)

 * Sure, add the information. --Johannes Bo (discuss • contribs) 07:02, 3 September 2017 (UTC)

Planned changes
Hi

There are several issues I want to change

 * Bitbucket dropped mercurial support, so the alternatives are:
 * 1) Use  the hg-git plugin
 * 2) Switch to Helix
 * I also would like to enhance the information about online editors, especially
 * 1) their abilities to connect to github
 * 2) Their pricing models
 * Add an introduction of why to use a version control system.
 * And finally I find the section title Subversion really makes the difference a bit too much propaganda. What's about The workflow using subversion

Any opinions?


text:
William Shakespeare's Works/Comedies/Much Ado About Nothing/Act 2

Scene I
The scene opens with LEONATO, ANTONIO, BEATRICE and HERO talking about men. They observe that DON JOHN was not present at dinner and how melancholy he looks. BEATRICE then introduces her favourite subject, BENEDICK, saying that if she were ever to find an ideal man he would have to be a mix between the two; either a more sedate BENEDICK or a more talkative DON JOHN. ANTONIO and LEONATO despair of her, saying that with her sharp tongue and fussiness she will never find a husband. The men have evidently told the women that DON PEDRO intends to woo HERO.

DON PEDRO, CLAUDIO, BENEDICK, BALTHASAR, DON JOHN, BORACHIO, MARGARET, URSULA and others arrive for the costume ball, all wearing disguises. DON PEDRO leads HERO away to woo her. Servant BALTHASAR and MARGARET flirt, which will become important later in DON JOHN's mischief. URSULA and ANTONIO have a joke. BEATRICE pretends not to know she is speaking to BENEDICK and takes the opportunity to insult him again, knowing that he would have to break disguise if he wanted to insult her back. The others all leave but for DON JOHN, BORACHIO and CLAUDIO. DON JOHN begins his mischief; he pretends to think that CLAUDIO is BENEDICK and tells him that he has overheard DON PEDRO seducing HERO for himself. Naive CLAUDIO is taken in by this and in soliloquy vows not to trust the beauty of women or his friends in matters of love again.

BENEDICK finds CLAUDIO to tell him that the prince has wooed HERO and everything is set. Still being upset and in no mood for BENEDICK's playfulness, CLAUDIO leaves. BENEDICK is not bothered, more interested in himself and how BEATRICE had not recognised him, showing both his pride and how much he wants BEATRICE to notice him.


text:
User:Pyrospirit/monobook.js

// navigation popups document.write('');

title: User:Pyrospirit/monobook.js


text:
MediaWiki:Gadget-twinklebatchdelete.js

// If TwinkleConfig aint exist. if( typeof( TwinkleConfig ) == 'undefined' ) { TwinkleConfig = {}; }

/** TwinkleConfig.summaryAd (string) If ad should be added or not to summary, default TW */ if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) { TwinkleConfig.summaryAd = " using TW"; }

/** TwinkleConfig.deletionSummaryAd (string) If ad should be added or not to deletion summary, default TW */ if( typeof( TwinkleConfig.deletionSummaryAd ) == 'undefined' ) { TwinkleConfig.deletionSummaryAd = " using TW"; }

/** TwinkleConfig.batchdeleteChunks (integer) How many pages should be processed at a time */ if( typeof( TwinkleConfig.batchDeleteChunks ) == 'undefined' ) { TwinkleConfig.batchdeleteChunks = 1; }

/** TwinkleConfig.batchDeleteMinCutOff (integer) How many pages left in the process of being completed should allow a new batch to be initialized */ if( typeof( TwinkleConfig.batchDeleteMinCutOff ) == 'undefined' ) { TwinkleConfig.batchDeleteMinCutOff = 0; } /** TwinkleConfig.batchMax (integer) How many pages should be processed maximum */ if( typeof( TwinkleConfig.batchMax ) == 'undefined' ) { TwinkleConfig.batchMax = 5000; }

function twinklebatchdelete { if( userIsInGroup( 'sysop' ) && (mw.config.get('wgNamespaceNumber') > 0 || mw.config.get('wgCanonicalSpecialPageName') == 'Prefixindex') ) { mw.util.addPortletLink( (typeof pTwinkle != "undefined") ? pTwinkle : "p-cactions", "javascript:twinklebatchdelete.callback", "D-batch", "tw-batch", "Delete pages found in this category/on this page", ""); } } $(twinklebatchdelete);

twinklebatchdelete.unlinkCache = {}; twinklebatchdelete.callback = function twinklesbatchdeleteCallback { var Window = new SimpleWindow( 800, 400 ); Window.setTitle( "Batch deletion" );

var form = new QuickForm( twinklebatchdelete.callback.evaluate ); form.append( {			type: 'checkbox',			list: [				{ 					label: 'Delete pages',					name: 'delete_page',					value: 'delete',					checked: true				},				{					label: 'Remove backlinks to the page',					name: 'unlink_page',					value: 'unlink',					checked: true				},				{					label: 'Delete redirects to deleted pages',					name: 'delete_redirects',					value: 'delete_redirects',					checked: true				}			]		} ); form.append( {			type: 'textarea',			name: 'reason',			label: 'Reason: '		} ); if( mw.config.get('wgNamespaceNumber') == Namespace.CATEGORY ) {

var query = { 'action': 'query', 'generator': 'categorymembers', 'gcmtitle': mw.config.get('wgPageName'), 'gcmlimit' : TwinkleConfig.batchMax, // the max for sysops 'prop': [ 'categories', 'revisions' ], 'rvprop': [ 'size' ] };	} else if( mw.config.get('wgCanonicalSpecialPageName') == 'Prefixindex' ) {

if(QueryString.exists( 'from' ) ) {			var gapnamespace = QueryString.get( 'namespace' ); var gapprefix = QueryString.get( 'from' ).toUpperCaseFirstChar; }		else {			var pathSplit = location.pathname.split('/'); if (pathSplit.length<3 || pathSplit[2]!="Special:PrefixIndex") return; var titleSplit = pathSplit[3].split(':'); var gapnamespace = Namespace[titleSplit[0].toUpperCase]; if ( titleSplit.length<2 || typeof(gapnamespace)=='undefined' ) {				var gapnamespace = Namespace.MAIN; var gapprefix = pathSplit.splice(3).join('/'); }			else {				pathSplit = pathSplit.splice(4); pathSplit.splice(0,0,titleSplit.splice(1).join(':')); var gapprefix = pathSplit.join('/'); }		}

var query = { 'action': 'query', 'generator': 'allpages', 'gapnamespace': gapnamespace , 'gapprefix': gapprefix, 'gaplimit' : TwinkleConfig.batchMax, // the max for sysops 'prop' : ['categories', 'revisions' ], 'rvprop': [ 'size' ] }	} else { var query = { 'action': 'query', 'generator': 'links', 'titles': mw.config.get('wgPageName'), 'gpllimit' : TwinkleConfig.batchMax, // the max for sysops 'prop': [ 'categories', 'revisions' ], 'rvprop': [ 'size' ] };	}

var wikipedia_api = new Wikipedia.api( 'Grabbing pages', query, function( self ) {			var xmlDoc = self.responseXML;			var snapshot = xmlDoc.evaluate('//page[@ns != "' + Namespace.IMAGE + '" and not(@missing)]', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );			var list = [];			for ( var i = 0; i < snapshot.snapshotLength; ++i ) {				var object = snapshot.snapshotItem(i);				var page = xmlDoc.evaluate( '@title', object, null, XPathResult.STRING_TYPE, null ).stringValue;				var size = xmlDoc.evaluate( 'revisions/rev/@size', object, null, XPathResult.NUMBER_TYPE, null ).numberValue;

var disputed = xmlDoc.evaluate( 'boolean(categories/cl[@title="Category:Contested candidates for speedy deletion"])', object, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue; list.push( {label:page + ' (' + size + ')' + ( disputed ? ' DISPUTED' : '' ), value:page, checked:!disputed }); }			self.params.form.append( {					type: 'checkbox',					name: 'pages',					list: list				}			) self.params.form.append( { type:'submit' } );

var result = self.params.form.render; self.params.Window.setContent( result );

} );

wikipedia_api.params = { form:form, Window:Window }; wikipedia_api.post; var root = document.createElement( 'div' ); Status.init( root ); Window.setContent( root ); Window.display; }

twinklebatchdelete.currentDeleteCounter = 0; twinklebatchdelete.currentUnlinkCounter = 0; twinklebatchdelete.currentdeletor; twinklebatchdelete.callback.evaluate = function twinklebatchdeleteCallbackEvaluate(event) { Wikipedia.actionCompleted.notice = 'Status'; Wikipedia.actionCompleted.postfix = 'batch deletion is now complete'; wgPageName = mw.config.get('wgPageName').replace( /_/g, ' ' ); // for queen/king/whatever and country! var pages = event.target.getChecked( 'pages' ); var reason = event.target.reason.value; var delete_page = event.target.delete_page.checked; var unlink_page = event.target.unlink_page.checked; var delete_redirects = event.target.delete_redirects.checked; if( ! reason ) { return; }	Status.init( event.target ); if( !pages ) { Status.error( 'Error', 'nothing to delete, aborting' ); return; }

function toCall( work ) { if( work.length == 0 && twinklebatchdelete.currentDeleteCounter <= 0 && twinklebatchdelete.currentUnlinkCounter <= 0 ) { window.clearInterval( twinklebatchdelete.currentdeletor ); Wikipedia.removeCheckpoint; return; } else if( work.length != 0 && ( twinklebatchdelete.currentDeleteCounter <= TwinkleConfig.batchDeleteMinCutOff || twinklebatchdelete.currentUnlinkCounter <= TwinkleConfig.batchDeleteMinCutOff ) ) { twinklebatchdelete.unlinkCache = []; // Clear the cache var pages = work.shift; twinklebatchdelete.currentDeleteCounter += pages.length; twinklebatchdelete.currentUnlinkCounter += pages.length; for( var i = 0; i < pages.length; ++i ) { var page = pages[i]; var query = { 'action': 'query', 'titles': page }				var wikipedia_api = new Wikipedia.api( 'Checking if page ' + page + ' exists', query, twinklebatchdelete.callbacks.main ); wikipedia_api.params = { page:page, reason:reason, unlink_page:unlink_page, delete_page:delete_page, delete_redirects:delete_redirects }; wikipedia_api.post; }		}	}	var work = pages.chunk( TwinkleConfig.batchdeleteChunks ); Wikipedia.addCheckpoint; twinklebatchdelete.currentdeletor = window.setInterval( toCall, 1000, work ); } twinklebatchdelete.callbacks = { main: function( self ) { var xmlDoc = self.responseXML; var normal = xmlDoc.evaluate( '//normalized/n/@to', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue; if( normal ) { self.params.page = normal; }		var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;

if( ! exists ) { self.statelem.error( "It seems that the page doesn't exists, perhaps it has already been deleted" ); return; }		if( self.params.unlink_page ) { var query = { 'action': 'query', 'list': 'backlinks', 'blfilterredir': 'nonredirects', 'blnamespace': [0, 100], // main space and portal space only 'bltitle': self.params.page, 'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops };			var wikipedia_api = new Wikipedia.api( 'Grabbing backlinks', query, twinklebatchdelete.callbacks.unlinkBacklinksMain ); wikipedia_api.params = self.params; wikipedia_api.post; } else { --twinklebatchdelete.currentUnlinkCounter; }		if( self.params.delete_page ) { if (self.params.delete_redirects) {				var query = { 'action': 'query', 'list': 'backlinks', 'blfilterredir': 'redirects', 'bltitle': self.params.page, 'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops };				var wikipedia_api = new Wikipedia.api( 'Grabbing backlinks', query, twinklebatchdelete.callbacks.deleteRedirectsMain ); wikipedia_api.params = self.params; wikipedia_api.post; }

var query = { 'title': self.params.page, 'action': 'delete' };			var wikipedia_wiki = new Wikipedia.wiki( 'Deleting page ' + self.params.page, query, twinklebatchdelete.callbacks.deletePage, function( self ) { 					--twinklebatchdelete.currentDeleteCounter;					var link = document.createElement( 'a' );					link.setAttribute( 'href', mw.config.get('wgArticlePath').replace( '$1', self.query['title'] ) );					link.setAttribute( 'title', self.query['title'] );					link.appendChild( document.createTextNode( self.query['title'] ) );					self.statelem.info( [ 'completed (', link , ')' ] );

} );			wikipedia_wiki.params = self.params;			wikipedia_wiki.followRedirect = false;			wikipedia_wiki.get;				} else {			--twinklebatchdelete.currentDeleteCounter;		}	},	deleteRedirectsMain: function( self ) {		var xmlDoc = self.responseXML;		var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

var total = snapshot.snapshotLength * 2;

if( snapshot.snapshotLength == 0 ) { return; }

var statusIndicator = new Status('Deleting redirects', '0%');

var onsuccess = function( self ) { var obj = self.params.obj; var total = self.params.total; var now = parseInt( 100 * ++(self.params.current)/total ) + '%'; obj.update( now ); self.statelem.unlink; if( self.params.current >= total ) { obj.info( now + ' (completed)' ); Wikipedia.removeCheckpoint; }		}		var onloaded = onsuccess;

var onloading = function( self ) {}

Wikipedia.addCheckpoint; if( snapshot.snapshotLength == 0 ) { statusIndicator.info( '100% (completed)' ); Wikipedia.removeCheckpoint; return; }

var params = clone( self.params ); params.current = 0; params.total = total; params.obj = statusIndicator;

for ( var i = 0; i < snapshot.snapshotLength; ++i ) { var title = snapshot.snapshotItem(i).value; var query = { 'title': title, 'action': 'delete' }			var wikipedia_wiki = new Wikipedia.wiki( "Deleting " + title, query, twinklebatchdelete.callbacks.deleteRedirects ); wikipedia_wiki.params = params; wikipedia_wiki.onloading = onloading; wikipedia_wiki.onloaded = onloaded; wikipedia_wiki.onsuccess = onsuccess; wikipedia_wiki.followRedirect = false; wikipedia_wiki.get; }	},	deleteRedirects: function( self ) { var form = this.responseXML.getElementById( 'deleteconfirm' ); if( ! form ) { // Hell, image deletion is b0rked :(			form = this.responseXML.getElementsByTagName( 'form' )[0];			var postData = {				'wpReason': "Speedy deleted per (CSD G8), Redirect to deleted page \"" + self.params.page + "\"." + TwinkleConfig.deletionSummaryAd,				'wpEditToken': form.wpEditToken.value			}		} else {

var postData = { 'wpWatch': form.wpWatch.checked ? '' : undefined, 'wpReason': "Speedy deleted per (CSD G8), Redirect to deleted page \"" + self.params.page + "\"." + TwinkleConfig.deletionSummaryAd, 'wpEditToken': form.wpEditToken.value }		}		self.post( postData ); },	deletePage: function( self ) { var form = this.responseXML.getElementById( 'deleteconfirm' ); var postData = { 'wpWatch': form.wpWatch.checked ? '' : undefined, 'wpReason': "Deleted because \"" + self.params.reason + "\"." + TwinkleConfig.deletionSummaryAd, 'wpEditToken': form.wpEditToken.value }		self.post( postData ); },	unlinkBacklinksMain: function( self ) { var xmlDoc = self.responseXML; var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

if( snapshot.snapshotLength == 0 ) { --twinklebatchdelete.currentUnlinkCounter; return; }

var statusIndicator = new Status('Unlinking backlinks', '0%');

var total = snapshot.snapshotLength * 2;

var onsuccess = function( self ) { var obj = self.params.obj; var total = self.params.total; var now = parseInt( 100 * ++(self.params.current)/total ) + '%'; obj.update( now ); self.statelem.unlink; if( self.params.current >= total ) { obj.info( now + ' (completed)' ); --twinklebatchdelete.currentUnlinkCounter; Wikipedia.removeCheckpoint; }		}		var onloaded = onsuccess;

var onloading = function( self ) {}

Wikipedia.addCheckpoint; if( snapshot.snapshotLength == 0 ) { statusIndicator.info( '100% (completed)' ); --twinklebatchdelete.currentUnlinkCounter; Wikipedia.removeCheckpoint; return; }		self.params.total = total; self.params.obj = statusIndicator; self.params.current =  0;

for ( var i = 0; i < snapshot.snapshotLength; ++i ) { var title = snapshot.snapshotItem(i).value; var query = { 'title': title, 'action': 'submit' }			var wikipedia_wiki = new Wikipedia.wiki( "Unlinking on " + title, query, twinklebatchdelete.callbacks.unlinkBacklinks ); var params = clone( self.params ); params.title = title;

wikipedia_wiki.params = params; wikipedia_wiki.onloading = onloading; wikipedia_wiki.onloaded = onloaded; wikipedia_wiki.onsuccess = onsuccess; wikipedia_wiki.get; }	},	unlinkBacklinks: function( self ) { var form = self.responseXML.getElementById('editform'); if( ! form ) { // we probably just deleted it, as a recursive backlink self.onsuccess( self ); Wikipedia.actionCompleted( self ); return; }		var text;

if( self.params.title in twinklebatchdelete.unlinkCache ) { text = twinklebatchdelete.unlinkCache[ self.params.title ]; } else { text = form.wpTextbox1.value; }		var old_text = text; var wikiPage = new Mediawiki.Page( text ); wikiPage.removeLink( self.params.page );

text = wikiPage.getText; twinklebatchdelete.unlinkCache[ self.params.title ] = text; if( text == old_text ) { // Nothing to do, return self.onsuccess( self ); Wikipedia.actionCompleted( self ); return; }		var postData = { 'wpMinoredit': form.wpMinoredit.checked ? '' : undefined, 'wpWatchthis': undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSection': '', 'wpSummary': 'Removing backlinks to page ' + self.params.page + " that has been deleted because \"" + self.params.reason + "\")" + "; " + TwinkleConfig.deletionSummaryAd,			'wpTextbox1': text		};		self.post( postData );	} }

title: MediaWiki:Gadget-twinklebatchdelete.js


text: User talk:131.123.184.68

title: User talk:131.123.184.68


text:
Romanian/Appendix W

 * Romanian Online Vocabulary Lessons

title: Romanian/Appendix W


text:
Khepera III Toolbox/Introduction

The Khepera III robot runs an embedded Linux (kernel 2.6) with all of the most common Linux tools, except for program compilation. Hence, programs have to be cross-compiled on another computer with a arm-linux toolchain, and can then be copied using SCP and launched over an SSH connection. This is in principle quite straightforward for a Linux adept, but can be quite cumbersome when starting from scratch.

This is where the Khepera III toolbox comes into play. The toolbox can be understood as a Swiss Army Knife for the Khepera III robot, offering three different types of tools:
 * Scripts to interact with the robot(s): A series of scripts are available to copy files on your robots, remotely execute programs, and do a number of administrative things. These scripts can deal with many robots in parallel, e.g. to copy a file onto a whole fleet of robots.
 * Programs for the Khepera III robot: A number of small programs are available to play with the sensors and actuators of the robot.
 * Modules with standard functionality: A couple of modules provide basic functionality that you can easily integrate in your own programs that you write for the Khepera III robot. Besides functions to read the sensors and configure actuators, there are also modules to parse command line arguments, simple odometry tracking, and so on.

The remainder of this chapter shows in a tutorial-like style how to do a couple of fancy things with the robot, using the scripts and the programs. The modules are discussed in a later chapter.

Preparing the Computer and the Robot
We assume that you installed the Khepera III Toolbox as explained in Download and Installation and that you are using a bash shell on a recent Linux system.

Switch on your Khepera III robot and connect it to your computer. For the remainder of this introduction, we will assume that your robot is connected with a USB cable. If you are using a WLAN connection, simply replace the "+usb" with "+ROBOTID" (where ROBOTID is the number of your robot).

To check if everything is all right, type k3ping +usb which will execute ping 192.168.1.2 for you.

Both your computer and the robot should be ready now - time to play with the robot!

Remote Control with a Keyboard
Type cd Programs k3put +usb motor_initialize motor_stop motion_arrowkeys to copy three of the motor programs to your robot. (Note that you will need to type the root password of the robot 4 times. This password is "rootme" by default.) As you can see in the terminal, this just launches scp commands.

Now type k3go +usb and type the root password again to log onto the robot. If you now type ls (on the robot), you will notice that a directory with your username has been created. This is a convenient way to avoid overwriting each others files if your fellows are using the same robot as well. Hence, cd into this directory and type: ./motor_initialize ./motion_arrowkeys The first program will initialize the motors (e.g. set PID values) and then quit. The second program keeps running until you press Ctrl-C, and allows you to steer the robot with the keys W (increase speed), A (turn left), S (stop), D (turn right) and X (decrease speed) on the keyboard.

Note that when you quit this program with Ctrl-C, the motors will keep the last speed they were told. This is a general rule for all programs of this toolbox, and should be seen as a feature - not a bug. A program which comes in handy sometimes is "motor_stop", which immediately stops the motors.

Once you have played enough with the robot, you can log out by typing exit on the command line. This brings you back on the computer, to the place where you were before the k3go command.

Fun with the Infrared Sensors
Two programs are available to query the infrared sensors: infrared_ambient and infrared_proximity. While the former simply reads all infrared receivers, the latter takes two consecutive measurements (once with the IR LED off and once with the IR LED on) with each sensor to estimate its distance to an obstacle.

Again, we first need to copy the necessary programs onto the robot. Assuming that you are still in the Programs directory, type k3put +usb infrared_ambient infrared_proximity Then, log on to the robot (k3go +usb) and cd to your directory.

Get an ambient IR measurement by typing ./infrared_ambient This will give you something like: The first two values denote the sample number (starting at 0) and the current timestamp of the main microcontroller. All other values are in the range 0 - 4096 and correspond to one sensor on the robot. The sensors are numbered clockwise (when looking from the top) from 0 (back left sensor) to 8 (back sensor). Sensors 9 and 10 are the right and left floor sensors, respectively. On a sunny day, you can cover one sensor with a finger while taking another measurement, and you should see a clear difference between the values. Similar experiments can be made in proximity mode (./infrared_proximity).

Instead of launching the command several times, you can tell the program to take several (here: 10) measurements in a row ./infrared_ambient -r 10 or to take measurements until pressing Ctrl-C ./infrared_ambient -r

Output Format
At this point, you may be wondering about the output format, notably the $IRAMBIENT the beginning of all lines. This is NMEA 0183, a very simple text-based communication format which has become widespread through GPS devices (which almost always use this format). More information about this format is written in the chapter Parsing Program Output.

Measuring Distances with the Ultrasound Sensors
The Khepera III robot is equipped with 5 ultrasound sensors which can be used to detect obstacles. When switched on, these sensors send out an ultrasound pulse and record its echo. Since the propagation of acoustic waves in the air is almost constant, this technique can be used to measure distances to objects in the environment. Note that the story is slightly more complicated, though. What you record when sending out a pulse is a combination of a whole series of echos, reflected by various objects in the environment. Fortunately, the robot processes the signal for you and provides you the most prominent echos in the received signal.

Type cd Programs k3put +usb ultrasound ultrasound_enable to copy these two programs onto your robot. Now log on to the robot (k3go +usb) and cd to your directory.

Point your robot towards a wall and type ./ultrasound front You will get something like this TODO Each line corresponds to one received echo and contains its amplitude as well as the estimated object distance. In our example, we got a very strong echo from an object at a distance of 0.98 m, and two less strong echos from objects at 0.45 m and 1.22 m distance. Note that the accuracy is in the order of a few centimeters, and you may get slightly different values each time.

By default, only the front sensor is enabled. To activate the left and the right sensor as well, type ./ultrasound_enable left front right This program will configures the robot accordingly reports the active sensors. Now, you can also take measurements with the sensors on the left and on the right: ./ultrasound left ./ultrasound right

Getting Help
To get help about one of the standard programs, simply invoke the program with the -h option: ./battery -h Reading this help and a little bit of imagination should make the use of all standard programs straightforward.

More Tutorials and Hands-On Exercises
For more tutorials, have a look at the Examples section. These examples are written in such a way that you can reproduce them with your own Khepera III robot, and gradually learn more about it.

title: Khepera III Toolbox/Introduction


text:
User talk:Suzy~enwikibooks

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Suzy. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Suzy~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:48, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:34, 19 April 2015 (UTC)

title: User talk:Suzy~enwikibooks


text:
User:Frmaximos

I am Archimandrite Maximos, I am the Abbot of the Monastery of the Holy Cross on Long Island, NY

title: User:Frmaximos


text: User talk:90.195.195.218

title: User talk:90.195.195.218


text: User talk:89.240.80.158

title: User talk:89.240.80.158


text:
User talk:207.225.51.162

Join Us!
-- – Mike.lifeguard  | talk 20:57, 23 January 2008 (UTC)

title: User talk:207.225.51.162


text:
User talk:216.171.246.30

--AdRiley (talk) 21:24, 23 January 2008 (UTC)

title: User talk:216.171.246.30


text:
Cookbook talk:Basic Mayonnaise

Egg whites?
I thought the mayonnaise was a mixture of egg white with oil. —Preceding unsigned comment added by 190.166.29.142 (discuss • contribs) 2008-01-24T09:09:42

 * A classic mayonnaise is made with oil, egg yolk, and acid (e.g. vinegar, lemon juice). There are egg white versions, probably made from some irrational fear of nutrition or some such, but they don't stack up against a good yolk-based mayonnaise IMHO. Webaware talk

title: Cookbook talk:Basic Mayonnaise


text:
User talk:Augu~enwikibooks

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Augu. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Augu~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:00, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 04:36, 19 April 2015 (UTC)

title: User talk:Augu~enwikibooks


text: User talk:Paulinaxplx

title: User talk:Paulinaxplx


text:
Robotics Kinematics and Dynamics/Description of Position and Orientation

In general, a rigid body in three-dimensional space has six degrees of freedom: three rotational and three translational.

A conventional way to describe the position and orientation of a rigid body is to attach a frame to it. After defining a reference coordinate system, the position and orientation of the rigid body are fully described by the position of the frame's origin and the orientation of its axes, relative to the reference frame.

Rotation Matrix
A rotation matrix describes the relative orientation of two such frames. The columns of this 3 × 3 matrix consist of the unit vectors along the axes of one frame, relative to the other, reference frame. Thus, the relative orientation of a frame $$\{b\}$$ with respect to a reference frame $$\{a\}$$ is given by the rotation matrix $$^{b}_{a} R \,$$:

^{a}_{b} R = \begin{pmatrix} _{a}x^{b} & _{a}y^{b} & _{a}z^{b} \end{pmatrix} = \begin{pmatrix} x^{b} \cdot x^{a} & y^{b} \cdot x^{a} & z^{b} \cdot x^{a} \\ x^{b} \cdot y^{a} & y^{b} \cdot y^{a} & z^{b} \cdot y^{a} \\ x^{b} \cdot z^{a} & y^{b} \cdot z^{a} & z^{b} \cdot z^{a} \end{pmatrix} $$

Rotation matrices can be interpreted in two ways:
 * 1) As the representation of the rotation of the first frame into the second (active interpretation).
 * 2) As the representation of the mutual orientation between two coordinate systems (passive interpretation).

The coordinates, relative to the reference frame $$\{a\}$$, of a point $$p$$, of which the coordinates are known with respect to a frame $$\{b\}$$ with the same origin, can then be calculated as follows: $$_{a} p = \, ^{a}_{b} R \, _{b} p$$.

Properties
Some of the properties of the rotation matrix that may be of practical value, are:
 * 1) The column vectors of $$^{b}_{a} R \,$$ are normal to each other.
 * 2) The length of the column vectors of $$^{b}_{a} R \,$$ equals 1.
 * 3) A rotation matrix is a non-minimal description of a rigid body's orientation. That is, it uses nine numbers to represent an orientation instead of just three. (The two above properties correspond to six relations between the nine matrix elements. Hence, only three of them are independent.) Non-minimal representations often have some numerical advantages, though, as they do not exhibit coordinate singularities.
 * 4) Since $$^{b}_{a} R \,$$ is orthonormal, $$^{a}_{b} R = \, ^{b}_{a} R^{-1} = \, ^{b}_{a} R^{T}$$.

Elementary Rotations about Frame Axes
The expressions for elementary rotations about frame axes can easily be derived. From the figure on the right, it can be seen that the rotation of a frame by an angle $$\gamma$$ about the z-axis, is described by:

R_{z}(\gamma) = \begin{pmatrix} \cos(\gamma) & -\sin(\gamma) & 0 \\ \sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{pmatrix} $$

Similarly, it can be shown that the rotation of a frame by an angle $$\alpha$$ about the x-axis, is given by:

R_{x}(\alpha) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos(\alpha) & -\sin(\alpha) \\ 0 & \sin(\alpha) & \cos(\alpha) \end{pmatrix} $$

Derived in exactly the same manner, the rotation of a frame by an angle $$\beta$$ about the y-axis, is described by:

R_{y}(\beta) = \begin{pmatrix} \cos(\beta) & 0 & \sin(\beta) \\ 0 & 1 & 0 \\ -\sin(\beta) & 0 & \cos(\beta) \end{pmatrix} $$

Compound Rotations
Compound rotations are found by multiplication of the different elementary rotation matrices.

The matrix corresponding to a set of rotations about moving axes can be found by postmultiplying the rotation matrices, thus multiplying them in the same order in which the rotations take place. The rotation matrix formed by a rotation by an angle $$\alpha$$ about the z-axis followed by a rotation by an angle $$-\beta$$ about the moved y-axis, is then given by:
 * $$R(zy, \alpha, -\beta) = R(z, \alpha) R(y, -\beta)$$

The composition of rotations about fixed axes, on the other hand, is found by premultiplying the different elementary rotation matrices.

Inverse Rotations
The inverse of a single rotation about a frame axis is a rotation by the negative of the rotation angle about the same axis:
 * $$R^{-1}(z, \alpha) = R(z, -\alpha)$$

The inverse of a compound rotation follows from the inverse of the matrix product:
 * $$R^{-1}(zy, \alpha, -\beta) = R^{-1}(y, -\beta) R^{-1}(z, \alpha)$$

MATLAB Example
Note: These examples require the Robotics Toolbox to be properly installed. theta = pi/2; T_x = rotx(theta); % Returns a 4x4 pose matrix. The upper-left 3x3 submatrix is the % rotation matrix representing a rotation by theta about the x-axis. R_x = tr2rt(T_x); % Returns the 3x3 rotation matrix corresponding with T_x. T_y = roty(theta); % A rotation about the y-axis. T_z = rotz(theta); % A rotation about the z-axis.

Euler Angles
Contrary to the rotation matrix, Euler angles are a minimal representation (a set of just three numbers, that is) of relative orientation. This set of three angles describes a sequence of rotations about the axes of a moving reference frame. There are, however, many (12, to be exact) sets that describe the same orientation: different combinations of axes (e.g. ZXZ, ZYZ, and so on) lead to different Euler angles. Euler angles are often used for the description of the orientation of the wrist-like end-effectors of many serial manipulator robots.

Note: Identical axes should not be in consecutive places (e.g. ZZX). Also, the range of the Euler angles should be limited in order to avoid different angles for the same orientation. E.g.: for the case of ZYZ Euler angles, the first rotation about the z-axis should be within $$[-\pi, \pi]$$. The second rotation, about the moved y-axis, has a range of $$[-\pi/2, \pi/2]$$. The last rotation, about the moved z-axis, has a range of $$[-\pi, \pi]$$.

Forward Mapping
Forward mapping, or finding the orientation of the end-effector with respect to the base frame, follows from the composition of rotations about moving axes. For a rotation by an angle $$\alpha$$ about the z-axis, followed by a rotation by an angle $$\beta$$ about the moved x-axis, and a final rotation by an angle $$\gamma$$ about the moved z-axis, the resulting rotation matrix is:
 * $$^{ee}_{bs}R \, = R(zxz, \alpha,\beta,\gamma) = R(z, \alpha) R(x, \beta) R(z, \gamma)$$

After writing out:

R(zxz, \alpha,\beta,\gamma) = \begin{pmatrix} c_\gamma c_\alpha - s_\gamma c_\beta s_\alpha & -s_\gamma c_\alpha - c_\gamma c_\beta s_\alpha & s_\beta s_\alpha \\ c_\gamma s_\alpha + s_\gamma c_\beta c_\alpha & -s_\gamma s_\alpha + c_\gamma c_\beta c_\alpha & -s_\beta c_\alpha \\ s_\gamma s_\beta & c_\gamma s_\beta & c_\beta \end{pmatrix} $$

Note: Notice the shorthand notation: $$s_\alpha$$ stands for $$\sin \alpha$$, $$c_\alpha$$ stands for $$\cos \alpha$$, and so on.

Inverse Mapping
In order to drive the end-effector, the inverse problem must be solved: given a certain orientation matrix, which are the Euler angles that accomplish this orientation?

For the above case, the Euler angles $$\alpha$$, $$\beta$$ and $$\gamma$$ are found by inspection of the rotation matrix:
 * $$\alpha = \textrm{atan2}(R_{13}, -R_{23})$$
 * $$\beta = \textrm{atan2}(-R_{23} c_\alpha + R_{13} s_\alpha, R_{33})$$
 * $$\gamma = \textrm{atan2}(R_{31}, R_{32})$$

Coordinate Singularities
In the above example, a coordinate singularity exists for $$\beta = 0$$. The above equations are badly numerically conditioned for small values of $$\beta$$: the first and last equation become undefined. This corresponds with an alignment of the first and last axes of the end-effector. The occurrence of a coordinate singularity involves the loss of a degree of freedom: in the case of the above example, small rotations about the y-axis require impossibly large rotations about the x- and z-axes.

No minimal representation of orientation can globally describe all orientations without coordinate singularities occurring.

Roll-Pitch-Yaw Angles
The orientation of a rigid body can equally well be described by three consecutive rotations about fixed axes. This leads to a notation with Roll-Pitch-Yaw (RPY) angles.

Forward Mapping
The forward mapping of RPY angles to a rotation matrix similar to that of Euler angles. Since the frame now rotates about fixed axes instead of moving axes, the order in which the different rotation matrices are multiplied is inversed:
 * $$R(RPY, r, p, y) = R(z, y) R(y, p) R(x, r)$$

After writing out:

R(RPY, r, p, y) = \begin{pmatrix} c_y c_p & c_y s_p s_r - s_y c_r & c_y s_p c_r + s_y s_r \\ s_y c_p & s_y s_p s_r + c_y c_r & s_y s_p c_r - c_y s_r \\ -s_p & c_p s_r & c_p c_r \end{pmatrix} $$

Inverse Mapping
The inverse relationships are found from inspection of the rotation matrix above:
 * $$r = \textrm{atan2}(R_{32}, R_{33})$$
 * $$y = \textrm{atan2}(R_{21}, R_{11})$$
 * $$p = \textrm{atan2}(-R_{31}, c_{y} R_{11} + s_{y} R_{21})$$

Note: The above equations are badly numerically conditioned for values of $$p$$ near $$\pi/2$$ and $$-\pi/2$$.

Unit Quaternions
Unit quaternions (quaternions of which the absolute value equals 1) are another representation of orientation. They can be seen as a compromise between the advantages and disadvantages of rotation matrices and Euler angle sets.

Homogeneous Transform
The notations above describe only relative orientation. The coordinates of a point, relative to a frame $$\{b\}$$, rotated and translated with respect to a reference frame $$\{a\}$$, are given by:
 * $$_{a} p = \, ^{b}_{a} R \, _{b} p + _{a} p ^{a,b}$$

This can be compacted into the form of a homogeneous transformation matrix or pose (matrix). It is defined as follows:
 * $$^{b}_{a}T = \left(\begin{array}{cc} ^{b}_{a} R & _{a} p^{a,b} \\ 0_{1 \times 3} & 1 \end{array}\right)$$

This matrix represents the position and orientation of a frame $$\{b\}$$ whose origin, relative to a reference frame $$\{a\}$$, is described by $$_{a} p^{a,b}$$, and whose orientation, relative to the same reference frame $$\{a\}$$, is described by the rotation matrix $$^{b}_{a}R \,$$.

$$^{b}_{a}T \,$$ is, thus, the representation of a frame in three-dimensional space. If the coordinates of a point $$p$$ are known with respect to a frame $$\{b\}$$, then its coordinates, relative to $${a}$$ are found by:

\begin{pmatrix} _{a} p \\ 1 \end{pmatrix} = \, ^{b}_{a} T \begin{pmatrix} _{b} p \\ 1 \end{pmatrix} $$

This is the same as writing:
 * $$_{a} p = \, ^{b}_{a} R \, _{b} p + _{a} p ^{a,b}$$

Note that the above vectors are extended with a fourth coordinate equal to one: they're made homogeneous.

As was the case with rotation matrices, homogeneous transformation matrices can be interpreted in an active ("displacement"), and a passive ("pose") manner. It is also a non-minimal representation of a pose, that does not suffer from coordinate singularities.

Compound Poses
If the pose of a frame $$\{c\}$$ is known, relative to $$\{b\}$$, whose pose is known with respect to a third frame $$\{a\}$$, the resulting pose $$^{c}_{a}T \,$$ is found as follows:
 * $$^{c}_{a}T = \, ^{b}_{a}T \, ^{c}_{b}T$$

MATLAB Example
x = 1; y = 1.3; z = 0.4; T = transl(x,y,z); % Returns the pose matrix corresponding with a translation over % the vector (x, y, z)'.

Finite Displacement Twist
A pose matrix is a non-minimal way of describing a pose. A frequently used minimal alternative is the finite displacement twist:

t = \begin{pmatrix} \alpha \\ \beta \\ \gamma \\ x \\ y \\ z \end{pmatrix} $$

Here, $$\alpha$$, $$\beta$$ and $$\gamma$$ are a valid set (any) of Euler angles, while $$x$$, $$y$$ and $$z$$ are the coordinates of a reference point on the rigid body.


text: User talk:71.125.227.139

title: User talk:71.125.227.139


text:
Volcanoes/Plate Tectonics

Plate tectonics (from Greek τέκτων, tektōn "builder" or "mason") is a theory of geology that has been developed to explain the observed evidence for large scale motions of the Earth's lithosphere. The theory encompassed and superseded the older theory of continental drift from the first half of the 20th century and the concept of seafloor spreading developed during the 1960s.

The outermost part of the Earth's interior is made up of two layers: above is the lithosphere, comprising the crust and the rigid uppermost part of the mantle. Below the lithosphere lies the asthenosphere. Although solid, the asthenosphere has relatively low viscosity and shear strength and can flow like a liquid on geological time scales. The deeper mantle below the asthenosphere is more rigid again. This is, however, not because of cooler temperatures but due to high pressure.

The lithosphere is broken up into what are called tectonic plates — in the case of Earth, there are seven major and many minor plates (see list below). The lithospheric plates ride on the asthenosphere. These plates move in relation to one another at one of three types of plate boundaries: convergent or collision boundaries, divergent or spreading boundaries, and transform boundaries. Earthquakes, volcanic activity, mountain-building, and oceanic trench formation occur along plate boundaries. The lateral movement of the plates is typically at speeds of 5 - 10 cm/yr.

title: Volcanoes/Plate Tectonics


text:
Anatomy and Physiology of Animals/The Author

Ruth Lawson is a zoologist who gained her first degree at Imperial College, London University and her D.Phil from York University, UK. After post graduate research on the tropical parasitic worm that causes schistosomiasis, she emigrated to New Zealand where she spent 10 years studying how hydatid disease spreads and can be controlled. With the birth of her daughter, Kate, she started to teach at the Otago Polytechnic, in Dunedin. Although human and animal anatomy and physiology has been her main teaching focus, she retains a strong interest and teaches courses in parasitology, public health, animal nutrition and pig husbandry. Ruth lives on the Otago Peninsula overlooking the beautiful Otago Harbour where she races her Topper sailing dinghy. She also enjoys tramping, skiing and gardening and has meditated for many years.


text:
Anatomy and Physiology of Animals/Preface

Preface by Ruth Lawson
This WikiBook "The Anatomy and Physiology of Animals' is designed to meet the needs of students studying for New Zealand certificate level qualifications in Veterinary Nursing, Animal Care and Rural Animal Technology under the New Zealand Qualifications Unit Standard 5180. It may also be useful for anyone studying for preliminary qualifications in veterinary nursing or biology. It is intended for use by students with little previous biological knowledge.

The WikiBook has been divided into 16 chapters covering fundamental concepts like organic chemistry, body organisation and the cell and then the systems of the body. Within each chapter are lists of Websites that provide additional information including animations. There is a comprehensive Glossary which can be accessed through links in each chapter. To help the student understand and learn the information within each chapter there are links to Worksheets in WikiEducator and a "Test Yourself" exercise.

The present text has evolved over many years. Terry Marler BVSC first conceived it as 8 separate modules for students at the Otago Polytechnic in what was then known as Animal Technology. Since then he and I have given it several major and minor overhauls. The present incarnation for this WikiBook has been rewritten and the diagrams redrawn by myself with advice and proofreading by Terry.


text:
Cookbook:Steak and Peppers

Steak and peppers is a simple dish to throw together with leftover meat. Sliced seitan, seared flank steak, or any other protein would probably work as well. It also works well as a main dish with spinach and garlic and risotto.

Ingredients

 * ½ large onion, sliced
 * 2 large bell peppers, sliced
 * 2 tablespoons olive oil
 * 12 ounces steak strips
 * 12 ounces crushed tomatoes
 * 1 teaspoon capers
 * 7–10 leaves fresh basil
 * ¼ teaspoon salt
 * 1 pinch red pepper flakes

Procedure

 * 1) Heat the olive oil in a large skillet. Sear steak strips, bell peppers and onion together with salt and red pepper flakes for a few minutes, then turn heat down and add crushed tomatoes and capers.
 * 2) Simmer, covered, for 10 minutes or until steak is cooked through and tender.
 * 3) Chiffonade the basil and add, then simmer for another couple of minutes.

title: Cookbook:Steak and Peppers


text:
User talk:66.229.212.179

Mattb112885 (talk to me) 02:43, 24 January 2008 (UTC)

title: User talk:66.229.212.179


text:
Anatomy and Physiology of Animals/Acknowledgements

Many thanks to Terry Marler (B.V.S.C.) for his guiding vision, wisdom, experience and patience. His advice throughout the writing of this WikiBook has been invaluable. I would also like to thank Bronwyn Hegarty, for  gently shepherding the project through the many hurdles encountered and Leigh Blackall, also in the Education Development Unit at the Otago Polytechnic, for helpful discussions and advice. Many, many thanks also to Sunshine Blackall for her skills in formatting the diagrams and designing the artwork accompanying each chapter. The high quality of this work would not have been possible without the financial assistance of the Otago Polytechnic CAPEX fund. Thanks are also due to Jeanette O'Fee, my Head of School, for encouragement throughout the project and to Keith Allnatt and Jan Bedford for proofreading and reviewing. Finally I would like thank Peter and Kate who have patiently suffered my "unavailability" as I tapped my evenings and weekends away on the computer. Ruth Lawson


text:
User talk:129.143.4.65

You have been warned
Please see also the user talk of this IP in the en.wikipedia. This IP is used by all educational and cultural institutions, including all secondary schools, in the Land Baden-Württemberg (Germany), thus some thousend people use it. It is the BelWue Proxy Network.

title: User talk:129.143.4.65


text:
Chess Opening Theory/1. e4/1...c5/2. Nf3/2...d6/3. d4/3...cxd4/4. Nxd4/4...Nf6/5. Nc3/5...a6/6. Be2

= Sicilian Defence, Najdorf, Opocensky Variation = Moves: 1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be2

6. Be2 is not played as often in response to black pushing 5. ...a6 as is ../6. Bg5/ or ../6. Be3/, but it is a solid move. White's bishop at e2 can keep an eye on g4 while allowing for a king side castle.

Theory table
.

'''1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6 6. Be2'''


text:
Operations Research/The Simplex Method

We can solve two variables$$(x_2,s_2)$$ LP models easily using the graphical method outlined in the previous section but what should we do in case of three variable problems, i.e. when our company makes three products we have to make decisions about. What about four or five variable problems? This is where the simplex method comes in. It is an iterative method which by repeated use gives us the solution to any n variable LP model.

Standard form of a LP model
Let us define an LP model as being in standard form if it satisfies the following two conditions:

 * All the constraints with the exception of the non-negativity restrictions are equations with non-negative right hand side.

 * All the variables are non-negative.

For example,

 * Maximize $$z = 5x_1+4x_2$$

 * subject to,

 * $$6x_1+4x_2+s_1= 24$$,

 * $$x_1+2x_2+s_2= 6$$,

 * $$x_2-x_1+s_3= 1$$,

 * $$x_2+s_4= 2$$,

 * $$x_1,x_2,s_1,s_2,s_3,s_4\ge 0$$

is an LP model in standard form. Note that the usual $$\le$$ signs have been equivalently replaced by both $$s_n$$ variables (s as in slack) and the $$=$$ sign.

How do we convert a given model into a standard model while retaining its sense? This is done as follows:

 * If there is a constraint of the type $$6x_1+4x_2\le 24$$ then the right hand side usually represents some limit on the resource (for example the amount of the raw material available) and the left hand side the usage of that resource (i.e. how much raw material is actually used) and so their difference represents the slack or unused amount of the resource. So to convert into an equality we must add a variable representing the slack amount on the left hand side. This variable is known as the slack variable and is obviously also non-negative. If we represent it by $$s_1$$ our constraint is converted into the equation $$6x_1+4x_2+s_1=24$$. A similar thing is done in case of a constraint of the type $$6x_1+4x_2\ge 24$$. Here the left hand side has a surplus or extra amount then the right hand side and so a non-negative surplus variable say $$s_2$$ must be subtracted to get the equation $$6x_1+4x_2-s_2=24$$.

 * If the given variable $$x_i$$ is given to be non-positive then its negative $$y_i=-x_i$$ is obviously non-negative and can be substituted in the problem. The real problem comes in the case when the variable is allowed to take on any sign. Then it is called an unrestricted variable. This is overcome by using the substitution $$x_i=x_i^--x_i^+$$ where $$x_i^-,x_i^+$$ are both non-negative. Intuitively if the variable $$x_i$$ is positive then $$x_i^-$$ is positive and $$x_i^+$$ is zero, while if the variable $$x_i$$ is negative then $$x_i^-$$ is zero and $$x_i^+$$ is positive. If $$x_i$$ is zero then obviously $$x_i^-,x_i^+$$ are both zero.

A point to note is that the objective function in the original LP model and the standard model is the same.

Algebraic solution of a LP
Let us now try to analyze a LP model algebraically. A solution of the standard LP model will be a solution for the original model (since the slack and surplus variables once removed would make the equations regain their old imbalance) and due to a similar reasoning a solution for the original model will also correspond to a solution for the standard model. Since the objective function is the same for both models so an optimal solution for the standard model will be optimal for the original model as well. Therefore we need to bother only about the standard model.

Now what are the candidates for the optimal solution? They are the solutions of the equality constraints. All we need to do is to find out the solutions and check which of those give the optimal value when put in the objective function. Now usually in the LP model the number of constraints, say m, is outnumbered by the number of variables, say n, and so there are infinitely many solutions to the system of constraints. We can't possibly examine the complete set of infinite solutions. However due to a mathematical result our work is shortened. The result is that if out of the n variables, n-m variables are put to zero, and then if the constraint system can be solved then the solution will correspond to a corner point in the n-space. Such a solution is called a basic solution (Initial Solution). If in addition to being basic it happens to be feasible to the original problem, then it is called a basic feasible solution (often abbreviated as BFS). Since the optimal solution is obtained on a corner point (as we observed graphically) so all we need to do is to examine all the basic feasible solutions (which are at most $${n \choose m}$$ in number, reflective of the number of ways n-m variables can be chosen among the total n to be zero) and then decide which one gives the maximum value for the objective function.

Let us consider an example:

Consider the following LP model:

Maximize z = $$2x_1+3x_2$$

subject to,

$$2x_1+x_2\le 4$$, $$x_1+2x_2\le 5$$,

$$x_1,x_2\ge 0$$.

We first convert it into standard form:

Maximize z = $$2x_1+3x_2$$

subject to,

$$2x_1+x_2+s_1=4$$, $$x_1+2x_2+s_2=5$$,

$$x_1,x_2,s_1,s_2\ge 0$$.

The constraint system has m=2 constraints and n=4 variables. Thus we need to set 4-2=2 variables equal to zero to get a basic solution. For example putting $$x_1=0$$ and $$x_2=0$$ we get a solution $$s_1=4$$ and $$s_2=5$$. This is also clearly feasible and so is a basic feasible solution. The variables being put to zero, that are $$x_1,x_2$$ are called nonbasic variables and $$s_1,s_2$$ are called basic variables. The objective value (the value that is obtained by putting the solution in the objective function) that these solutions (both basic and non basic) give on substitution in the objective function is zero.

The following table summarizes all the basic solutions to the problem:

Note that we have not bothered to calculate the objective value for infeasible solutions. The optimal solution is the one which yields the highest objective value i.e. $$x_1=1,x_2=2$$. Hence we have solved the LP model algebraically.

This procedure of solving LP models works for any number of variables but is very difficult to employ when there are a large number of constraints and variables. For example, for m = 10 and n = 20 it is necessary to solve $${20 \choose 10} = 184756 $$ sets of equations, which is clearly a staggering task. With the simplex method, you need only solve a few of these sets of equations, concentrating on those which give improving objective values.

The Simplex method
The method in a nutshell is this. You start with a basic feasible solution of an LP in standard form (usually the one where all the slack variables are equal to the corresponding right hand sides and all other variables are zero) and replace one basic variable with one which is currently non-basic to get a new basic solution (since n-m variables remain zero). This is done in a fashion which ensures that the new basic solution is feasible and its objective value is at least as much as that of the previous BFS. This is repeated until it is clear that the current BFS can't be improved for a better objective value. In this way the optimal solution is achieved.

It is clear that one factor is crucial to the method: which variable should replace which. The variable which is replaced is called the leaving variable and the variable which replaces it is known as the entering variable. The design of the simplex method is such so that the process of choosing these two variables allows two things to happen. Firstly, the new objective value is an improvement(or at least equals) on the current one and secondly the new solution is feasible.

Let us now explain the method through an example. Consider our old chemical company problem in standard form:

Maximize z = $$5x_1+4x_2$$

subject to,

$$6x_1+4x_2+s_1= 24$$, $$x_1+2x_2+s_2= 6$$,

$$x_2-x_1+s_3= 1$$,

$$x_2+s_4= 2$$,

$$x_1,x_2,s_1,s_2,s_3,s_4\ge 0$$.

Now an immediate BFS is obtained by putting all the $$x_i$$ equal to zero. (Clearly the solution thus obtained will be feasible to the original problem as the right hand sides are all non-negative which is precisely our solution.) If we consider our objective function z = $$5x_1+4x_2$$ then it is evident that an increase in $$x_1$$ or $$x_2$$ will increase our objective value. (Note that currently both are zero being non-basic). A unit increase in $$x_1$$ will give a 5-fold increase in the objective value while a unit increase in $$x_2$$ will give a 4-fold increase. It is logical that we elect to make the entering variable $$x_1$$ in the next iteration.

In the tabular form of the simplex method the objective function is usually represented as $$z-5x_1-4x_2=0$$. Also the table contains the system of constraints along with the BFS that is obtained. Only the coefficients are written as is usual when handling linear systems.

Now for the next iteration we have to decide the entering and the leaving variables. The entering variable is $$x_1$$ as we discussed. In fact, due to our realignment of the objective function, the most negative value in the z-row of the simplex table will always be the entering variable for the next iteration. This is known as the optimality condition. What about the leaving variable? We have to account for the fact that our next basic solution is feasible. So our leaving variable must be chosen with this thought in mind.

To decide the leaving variable we apply what is sometimes called as the feasibility condition. That is as follows: we compute the quotient of the solution coordinates (that are 24, 6, 1 and 2) with the constraint coefficients of the entering variable $$x_1$$ (that are 6, 1, -1 and 0). The following ratios are obtained: 24/6 = 4, 6/1 = 6, 1/-1 = -1 and 2/0 = undefined. Ignoring the negative and the undefined ratio we now proceed to select the minimum of the other two ratios which is 4, obtained from dividing 24(the value of $$s_1$$) by 6. Since the minimum involved the division by $$s_1$$'s current value we take the leaving variable as $$s_1$$.

What is the justification behind this procedure? It is this. The minimum ratios actually represent the intercepts made by the constraints on the $$x_1$$ axis. To see this look at the following graph:

Since currently all $$x_i$$ are 0 we are considering the BFS corresponding to the origin. Now, in the next iteration according to the simplex method we should get a new BFS i.e move to a new corner point on the graph. We can induce an increase in the value of only one variable at a time by making it an entering variable, and since $$x_1$$ is our entering variable our plan is to increase the value of $$x_1$$. From the graph we can see that the value of $$x_1$$ must be increased to 4 at the point (4,0), which is the smallest non-negative intercept with the $$x_1$$ axis. An increase beyond that point is infeasible. Also at (4,0) the slack variable $$s_1$$ assumes a zero value as the first constraint is satisfied as an equality there and so $$s_1$$ becomes the leaving variable.

Now the problem is to determine the new solution. Although any procedure of solving a linear system can be applied at this stage, usually Gauss Jordan elimination is applied. It is based on a result in linear algebra that the elementary row transformations on a system [A|b] to [H|c] do not alter the solutions of the system. According to it the columns corresponding to the basic-variables in the table are given the shape of an identity matrix. (Readers familiar with linear algebra will recognize that it means that the matrix formed with the basis variable columns is transformed into reduced row echelon form.) The solution can then be simply read off from the right most solution column (as n-m of the variables are put to zero and the rest including z have coefficient 1 in one constraint each). Since z is also a variable it's row is treated as one among the constraints comprising the linear system.

The entering variable column is called the pivot column and the leaving variable row is called the pivot row. The intersection of the pivot column and the leaving variable column is called the pivot element. In our example the second row (of $$s_1$$) is the pivot row and the second column(of $$x_1$$) is the pivot column.

The computations needed to produce the new basic solution are:

 * Replace the leaving variable in the 'Basic' column with the entering variable.
 * New pivot row = Current pivot row ÷ Pivot element

For other rows, including the z row:

 * New row = Current row - (Its pivot column coefficient)×(New pivot row)

In our case the computations proceed as follows:

 * Replace $$s_1$$ in the 'Basic' column with $$x_1$$
 * New pivot $$x_1$$ row = Current $$s_1$$ row ÷ 6 = $$\begin{pmatrix}0 & 1 & \frac{2}{3} & \frac{1}{6} & 0 & 0 & 0 & 4\end{pmatrix}$$
 * New z row = Current z row - (-5)×New $$x_1$$ row = $$\begin{pmatrix}1 & 0 & \frac{-2}{3} & \frac{5}{6} & 0 & 0 & 0 & 20\end{pmatrix}$$
 * New $$s_2$$ row = Current $$s_2$$ row - (1)×New $$x_1$$ row = $$\begin{pmatrix}0 & 0 & \frac{4}{3} & \frac{-1}{6} & 1 & 0 & 0 & 2\end{pmatrix}$$
 * New $$s_3$$ row = Current $$s_3$$ row - (-1)×New $$x_1$$ row = $$\begin{pmatrix}0 & 0 & \frac{5}{3} & \frac{1}{6} & 0 & 1 & 0 & 5\end{pmatrix}$$
 * New $$s_4$$ row = Current $$s_4$$ row - (0)×New $$x_1$$ row = $$\begin{pmatrix}0 & 0 & 1 & 0 & 0 & 0 & 1 & 2\end{pmatrix}$$

Thus our new table is:

The optimality condition now shows that $$x_2$$ is the entering variable. The feasiblity condition produces the ratios: 4/(2/3) = 6, 2/(4/3) = 1.5, 5/(5/3) = 3 and 2/1 = 2 of which the minimum is 1.5 produced by dividing the coefficient in the $$s_2$$ row (i.e. the row in which the basic variable $$s_2$$ has coefficient 1). So $$s_2$$ becomes the leaving variable. The Gauss Jordan elimination process is applied again to get the following table:

Based on the optimality condition none of the z-row coefficients associated with the non-basic variables $$s_1$$ and $$s_2$$ are negative. Hence the last table is optimal. The optimal solution can thus be read off as $$x_1=3,x_2=\frac{3}{2},s_3=\frac{5}{2}$$ and $$s_4=\frac{1}{2}$$ and the optimal value as z = 21. Obviously the variables $$s_1$$ and $$s_2$$ are zero. Our original problem involving only $$x_1$$ and $$x_2$$ also clearly has the same solution (just disregard the slacks).

We have dealt with a maximization problem. If the minimization case, since min z = max (-z) (if z is a linear function, which it is) so we can either convert the problem into a maximization one or reverse the optimality condition. Instead of selecting the entering variable as the one with the most negative coefficient in the z row we can select the one with the most positive coefficient. The rest of the steps are the same.

Online tool to solve problems via Simplex method

Exercise Problem:
1. A company involved in the assembly and distribution of printers is concerned with two types – laser and inkjet. Assembly of each laser printer takes two hours, while each inkjet printer takes one hour to assemble, and the staff can provide a total of 40 person-hours of assembly time per day. In addition, warehouse space must be available for the assembly and distribution of the printers, 1 square meter for each laser printer and 3 square meters for each inkjet printer; the company has a total of 45 square meters of storage space available for assembled printers each day. Laser printers can be sold for a profit of €30 per unit and inkjet printers earn a profit of €25 each, but the market in which the company is operating can absorb a maximum of 12 laser printers per day. (There is no such limitation on the market for inkjet printers). Formulate this as a linear programming problem and determine, using the simplex method, the number of each type of printer the company should assemble and distribute in order to maximize daily profit.

Maximize $$z = 30x_1 + 25x_2$$

subject to,

$$2x_1 + x_2 \le 40$$, $$x_1 + 3x_2 \le 45$$,

$$x_1\le 12, x_1,x_2\ge 0$$

Solution using PHPSimplex (see link for solution step by step): the optimal solution value is $$z$$ = 635 with $$x_1$$ = 12 and $$x_2$$ = 11

Artificial Starting Solution
In the previous problem we had a convenient initial basic feasible solution to apply the simplex method which comprised of the slack variables. If the problem however includes surplus variables the solution obtained by putting all the $$x_i$$ zero will be basic but not feasible (Why?). In that case instead of arbitrarily searching for an initial basic feasible solution, variables known as artificial variables are used. They play the role of slacks in the first iteration and being external to the problem are disposed of (by being driven to zero) at a later iteration. We will discuss a method known as the two-phase method which is usually used to handle artificial variable problems.

Let us consider the following problem:

Minimize z = $$4x_1+x_2$$

subject to,

$$3x_1+x_2 = 3$$, $$4x_1+3x_2\ge 6$$,

$$x_1+2x_2\le 4$$,

$$x_1,x_2\ge 0$$.

Now after converting the problem into standard form we have:

Minimize z = $$4x_1+x_2$$

subject to,

$$3x_1+x_2 = 3$$, $$4x_1+3x_2 - Sx_3 = 6$$,

$$x_1+2x_2+sx_6= 4$$,

$$x_1,x_2,Sx_3,sx_6\ge 0$$.

Now the first and second constraints do not have any slack variable associated with them. This means that we don't have a convenient initial basic feasible solution available with us. Thus we must introduce artificial variables $$Rx_4,Rx_5$$ in the problem to get an initial BFS.

$$3x_1+x_2 +Rx_4= 3$$, $$4x_1+3x_2 - Sx_3 +Rx_5= 6$$,

$$x_1+2x_2+sx_6= 4$$.

What exactly is the two-phase method? As the name suggests, it consists of two phases: In the first phase we start with an initial basic feasible solution (obtained using the slack and the artificial variables equal to the right hand side and other variables equal to zero) and work to eliminate the artificial variables. To do this we must minimize the sum of the artificial variables. So we change our objective function to Minimize $$z=Rx_4+Rx_5$$. Hence our problem becomes:

Minimize $$z=Rx_4+Rx_5$$

subject to,

$$3x_1+x_2 +Rx_4= 3$$, $$4x_1+3x_2 - Sx_3 +Rx_5= 6$$,

$$x_1+2x_2+sx_6= 4$$.

$$x_1,x_2,Sx_3,sx_6,Rx_4,Rx_5\ge 0$$.

Our initial BFS is of course obtained by putting all the original variables and the surplus variable equal to zero. A problem though crops up at this point. The z row in the simplex method is given by $$z-Rx_4-Rx_5=0$$ and so the whole system in matrix form is:

$$\begin{pmatrix} 1 & 0 & 0 & 0 & -1 & -1 & 0\\ 0 & 3 & 1 & 0 & 1 & 0 & 0\\  0 & 4 & 3 & -1 & 0 & 1 & 0\\  0 & 1 & 2 & 0 & 0 & 0 & 1   \end{pmatrix} \begin{pmatrix} z\\ x_1\\ x_2\\ Sx_3\\ Rx_4\\ Rx_5\\ sx_6 \end{pmatrix} =\begin{pmatrix} 0\\ 3\\ 6\\ 4 \end{pmatrix}$$

Clearly if we put the surplus and the original variables to zero the solution to the system will not be the convenient right hand side because the first row has non zero coefficients of $$Rx_4$$ and $$Rx_5$$ in it. To be more precise write the above system in the following form: $$\Bigg\{z\begin{pmatrix}1\\0\\0\\0\end{pmatrix}+x_1\begin{pmatrix}0\\3\\4\\1\end{pmatrix}+x_2\begin{pmatrix}0\\1\\3\\2\end{pmatrix}+Sx_3\begin{pmatrix}0\\0\\-1\\0\end{pmatrix}+Rx_4\begin{pmatrix}-1\\1\\0\\0\end{pmatrix}+Rx_5\begin{pmatrix}-1\\0\\1\\0\end{pmatrix}+sx_6\begin{pmatrix}0\\0\\0\\1\end{pmatrix}\Bigg\}\begin{pmatrix} z\\ x_1\\ x_2\\ Sx_3\\ Rx_4\\ Rx_5\\ sx_6 \end{pmatrix} =\begin{pmatrix} 0\\ 3\\ 6\\ 4 \end{pmatrix}$$.

Now putting the variables $$x_1,x_2,Sx_3$$ to be zero our solution changes to:

$$\Bigg\{z\begin{pmatrix}1\\0\\0\\0\end{pmatrix}+Rx_4\begin{pmatrix}-1\\1\\0\\0\end{pmatrix}+Rx_5\begin{pmatrix}-1\\0\\1\\0\end{pmatrix}+sx_6\begin{pmatrix}0\\0\\0\\1\end{pmatrix}\Bigg\}\begin{pmatrix} z\\ Rx_4\\ Rx_5\\ sx_6 \end{pmatrix} =\begin{pmatrix} 0\\ 3\\ 6\\ 4 \end{pmatrix}$$.

or in the form:

$$\begin{pmatrix} 1 & -1 & -1 & 0\\ 0 & 1 & 0 & 0\\  0 & 0 & 1 & 0\\  0 & 0 & 0 & 1   \end{pmatrix} \begin{pmatrix} z\\ Rx_4\\ Rx_5\\ sx_6 \end{pmatrix} =\begin{pmatrix} 0\\ 3\\ 6\\ 4 \end{pmatrix}$$

Now this is not in reduced row echelon form and therefore the right hand side does not directly provide the basic feasible solution. In the simplex table the last column should contain the solution. Therefore before we can start the simplex method some modification is necessary in the first row so that the system gets the reduced row echelon form. The obvious required elementary transformation is:

New z row = Old z row (i.e. $$z-Rx_4-Rx_5=0$$) + (1×$$Rx_4$$ row + 1×$$Rx_5$$)

Now the first equation becomes $$z+7x_1+4x_2-Sx_3=9$$ and on putting the requisite variables to zero we find that the right hand side provides a convenient initial BFS.

Note that we have not bothered to write the column of z in the above table. This is because the nature of the elementary row transformations is such that the z column will always be of the form $$(1,0,\cdots 0)^T$$ and so that column can be assumed in every iteration.

The simplex method is now applied to get the solution $$z=0,x_1=0.6,x_2=1.2,sx_6=1$$. The final table obtained will be:

Since the artificial variables are zero so we have reached the end of phase 1. If the value of objective function at the end of stage one is not zero, it means that the artificial variables can not be eliminated, meaning the problem is infeasible.

Phase 2 involves using the basic feasible solution currently available as a starting basic feasible solution for the original problem. The objective function is therefore changed and the z-row is made to reflect that. Since the artificial variables have completed their mission of providing us with an initial BFS they should never be made the entering variables now. In fact, they can be totally eliminated from the problem. So our original problem can now be restated as:

Minimize z = $$4x_1+x_2$$

subject to,

$$x_1+\frac{1}{5}Sx_3 = \frac{3}{5}$$, $$x_2 - \frac{3}{5}Sx_3 = \frac{6}{5}$$,

$$Sx_3+sx_6= 1$$,

$$x_1,x_2,Sx_3,sx_6\ge 0$$.

The table can now be written as:

A similar problem which cropped up in the beginning of phase 1 is now evident. Since the basic variables $$x_1$$ and $$x_2$$ have nonzero coefficients in the z-row, the system is not in reduced row echelon form. So we must first apply an elementary row transformation to make these coefficients zero. The evident row transformation is:

New z row = Old z row + (4×$$x_1$$ row + 1×$$x_2$$)

The table thus becomes:

Now the simplex method can be applied. The final solution is: $$z=3.4,x_1=0.4,x_2=1.8,Sx_3=1$$.

Pesquisa operacional/Índice/Método Simplex

title: Operations Research/The Simplex Method


text: User talk:195.194.68.22

title: User talk:195.194.68.22


text:
SQL Dialects Reference/Select queries/Hierarchical Queries

Hierarchical Queries
Hierarchical queries are a way to extract information from a table that is linked with itself.

Let's say we have the following table:

My example table:

id    of type numeric father of type numeric, that references an id of other register of the same table data  rest of fields, etc

If we have the following values:

id    father        data 50    null          The boss 51    50            The well positioned manager 52    50            Another well positioned manager 53    51            The worker 54    52            Another worker 5     null          Other node 10    5             The son of Other node

The values that "hang" from node 50 are the values 50, 51, 52, 53, 54 but not 5 nor 10.

or WITH RECURSIVE t AS (   SELECT id, father FROM "table" WHERE id = 50 AND father IS NULL UNION ALL    SELECT t1.id, t1.father FROM t JOIN "table" t1 ON (t1.father = t.id) ) SELECT * FROM t; SELECT * FROM table CONNECT BY id = PRIOR father START WITH id = 50
 * DB2
 * Firebird / InterBase
 * Ingres, MySQL, MSSQL
 * PostgreSQL
 * SQLite
 * Oracle, Linter


text: User talk:212.219.247.220

title: User talk:212.219.247.220