text:
WebObjects/Web Services/Integration with WebServicesCore on MacOS-X

This documentation was written by Andrew Lindesay (http://www.lindesay.co.nz) in 2006 as part of supported code in the LEWOStuff framework, but this material has been transcribed here. It was written around the time of WebObjects 5.2 and 5.3 on the 1.4 JVM. WebServicesCore is the framework used in MacOS-X for communications with SOAP services vended on the internet. This page describes some problems that exist at the time of writing with getting WebServicesCore to communicate properly with WebObjects' WebServices framework.

Multirefs
WebServicesCore does not appear to be able to process the 'multiref' values which are returned from the AXIS engine. To get around this, turn off multiref support in the WebObjects application. To achieve this, locate the server.wsdd file and the element "parameter" with the name "sendMultiRefs". Modify this element to have the value "false".

Nil Serialisation
This is a very simple deserialiser that can be used to deserialise to nil. Although this may seem less than useful, it proves very useful in the situation where you are using WebServicesCore which is a part of MacOS-X.

The WebServicesCore framework tends to serialise a nil argument as <xyz xsi:type="nil"/>. This is unfortunately missing type and so the SOAP engine is not able to instantiate the correct deserialiser for the type. The correct output would be <xyz xsi:type="xsd:timeInstant" xsi:nil="true"/>, but it appears that it may be difficult to get WebServicesCore to do this.

Regardless of the inbound type however, this serialiser will be able to convert the poorly encoded <TT>nil</TT> to <TT>null</TT> in the java environment.

You can use the <TT>registerWebServicesCoreNilDeserialiserFactoryForKnownTypes</TT> method on the class <TT>LEWOWebServicesCoreNilDeserializerFactory</TT> to setup easily for common known classes.

package nz.co.lindesay.common.webobjects;

/*

LICENSE

Copyright (c) 2006, Andrew Lindesay All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

copyright notice, this list of conditions and the following disclaimer.
 * Redistributions of source code must retain the above

copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 * Redistributions in binary form must reproduce the above

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

/** *
This is a very simple deserialiser that can be used * to deserialise to <TT>nil</TT>. Although this may seem less * than useful, it proves very useful in the situation where you * are using WebServicesCore which is a part of MacOS-X.
 * *
The WebServicesCore framework tends to serialise a <TT>nil</TT> * argument as <TT><xyz xsi:type="nil"/></TT>. This is * unfortunately missing type and so the SOAP engine is not able * to instantiate the correct deserialiser for the type. The * correct output would be <TT><xyz xsi:type="xsd:timeInstant" xsi:nil="true"/></TT>, * but it appears that it may be difficult to get WebServicesCore * to do this.
 * *
Regardless of the inbound type however, this serialiser will * be able to convert the poorly encoded <TT>nil</TT> to <TT>null</TT> * in the java environment.
 * *
You can use the <TT>registerWebServicesCoreNilDeserialiserFactoryForKnownTypes</TT> * method on the class <TT>LEWOWebServicesCoreNilDeserializerFactory</TT> * to setup easily for common known classes.
 */

public class LEWOWebServicesCoreNilDeserializer extends org.apache.axis.encoding.DeserializerImpl {

// -

public LEWOWebServicesCoreNilDeserializer { super; }

// -

public Object getValue { return null; }

// -

}

package nz.co.lindesay.common.webobjects;

/*

LICENSE

Copyright (c) 2006, Andrew Lindesay All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

copyright notice, this list of conditions and the following disclaimer.
 * Redistributions of source code must retain the above

copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 * Redistributions in binary form must reproduce the above

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import com.webobjects.foundation.*; import com.webobjects.appserver.*; import com.webobjects.eocontrol.*;

import javax.xml.namespace.*;

import java.util.*;

/** *
See the class <TT>LEWOWebServicesCoreNilDeserializer</TT> * for more details about this class.
 */ public class LEWOWebServicesCoreNilDeserializerFactory implements org.apache.axis.encoding.DeserializerFactory {	public final static String NAMESPACEURI_ANON = "http://anonuri/";

private Set mechanisms = null;

// -

/** *
This method will setup the deserialiser for * classes commonly encountered in development * of web services. This is a quick-setup that * might be invoked from the application setup.
 */	public static void registerWebServicesCoreNilDeserialiserFactoryForCommonClasses(String namespaceURI) {		Set classesS = new HashSet; classesS.add(NSTimestamp.class); classesS.add(NSData.class); classesS.add(EOGlobalID.class); classesS.add(String.class); classesS.add(Number.class); classesS.add(Integer.class); classesS.add(Float.class); classesS.add(java.math.BigDecimal.class); classesS.add(java.util.Date.class); registerWebServicesCoreNilDeserialiserFactoryForClasses(classesS.iterator,namespaceURI); }

// -

/** *
This method will setup the deserialiser for the * classes supplied. This is a quick-setup that might * be invoked from the application startup.
 */

public static void registerWebServicesCoreNilDeserialiserFactoryForClasses(Iterator classesI, String namespaceURI) {		if(null==namespaceURI) namespaceURI = NAMESPACEURI_ANON; QName qn = new QName("http://anonuri/","nil"); LEWOWebServicesCoreNilDeserializerFactory factory = new LEWOWebServicesCoreNilDeserializerFactory; while(classesI.hasNext) WOWebServiceRegistrar.registerFactoriesForClassWithQName(				null,				factory,				(Class) classesI.next,				qn); }

// -

public LEWOWebServicesCoreNilDeserializerFactory { super; } // -

public javax.xml.rpc.encoding.Deserializer getDeserializerAs(String mechanismType) { return new LEWOWebServicesCoreNilDeserializer; } // -

public Iterator getSupportedMechanismTypes {		if(null==mechanisms) {			mechanisms = new HashSet; mechanisms.add(org.apache.axis.Constants.AXIS_SAX); }		return mechanisms.iterator; } // -

}


text:
Cookbook:Rice Flour

| Flour

Rice flour is a flour milled from rice. There are several grades, with different culinary uses including baking and as a thickener.

Rice flour is gluten-free because it is milled from a gluten-free grain. It is often used as a substitute for wheat flour in baking, but due to the lack of gluten, it requires other ingredients for binding such as tapioca starch, guar gum or xanthan gum. However, some rice flour may not be gluten-free, due to cross-contamination at the flour mill – check with your supplier if this is important.

Some types of rice flour:
 * White rice flour – highly refined, generally best as a thickener or in combination with other flours; white rice flour is made from white rice and has a fine, powdery texture
 * Brown rice flour – milled from the whole grain, so more flavour and nutrition than white rice flour; often not milled fine enough for baking, so select carefully
 * Glutinous rice flour (also sweet rice flour) – made from white glutinous rice, better for baking than white rice flour
 * Roasted red rice flour – used for making roti, dosa, or hoppers, especially in Sri Lankan cuisine

Rice flour is used in baked goods and in many national and regional cuisines. In Middle-Eastern cuisine, it is used in the dessert mihallabiyya. In Latin-American cuisine, it is used to thicken the drink horchata. Glutinous Rice Flour is used a great deal in Asian cuisine. It is also known as sweet rice flour, sticky rice flour, and waxy rice flour. Standard rice flour cannot be used as a substitute in a recipe calling for glutinous rice flour.

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

title: Cookbook:Rice Flour


text:
User talk:60.234.248.143

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

-- Herby talk thyme 08:09, 16 January 2007 (UTC)

Programming:WebObjects/Web Services/Working With Temporary GlobalIDs
This page you created has the copright symbol on it. As such it cannot remain on Wikibooks and unless amended will be deleted shortly. Thanks -- Herby talk thyme 08:09, 16 January 2007 (UTC)

title: User talk:60.234.248.143


text:
Template:Freistil/Vocbox

This template creates a vocabulary box for the project Freistil like the one shown below. The syntax is: The first parameter is one of the values "right" or "left" and declares on which side of the text the box shall float; if left out, "right" is assumed. The second parameter sets the width of the box. The third paramater sets the background color of the box, the fourth one the darker color of the border. Note that the # must be left out for technical reasons. Each one of them can be left out, which leads to the standard box with background #FFEEAA and border color #FFCC55.

After these parameters there follow up to 25 words and their translations. If needed, this amount can be increased; in that case, contact the project via Discussion:Freistil. However, note that the box's title is "what's worth learning" and that the box should contain only few and important vocabulary. Use the in-context translation via Template:C to explain vocabulary of minor importance.

title: Template:Freistil/Vocbox


text:
Neapolitan/501 Neapolitan verbs/correre

correre

 * English: to run
 * Italian: correre

To form the compound tenses add the auxiliary verb (essere) + past participle (curzo).

Mperativo

 * curre

title: Neapolitan/501 Neapolitan verbs/correre


text: Category:Book:Freistil

title: Category:Book:Freistil


text:
Category:German texts

This category contains all text pages of the project Freistil.

title: Category:German texts


text:
ERP5 Handbook/ERP5 Specific Zope tools

Generic description about ERP5 Specific Zope tools needs to be here.

portal_activities
The idea of portal activities (aka CMF Activity Tool) is described in section:

Background process invocation - CMFActivity system

The way to use it is well described on the wiki:

http://wiki.erp5.org/HowToUseTheCmfActivityTool

The is little to add here, then.

portal_catalog
Used to index objects, relations between objects, security information and some other frequently used data, to allow fast access, searching and sorting.

An object is recorded in catalog when you call .reindexObject on it. This method is called automatically upon every edit (technically, every setter - a method setThisProperty - triggers a reindex; if you write a script which is going to set many properties, better use _setThisProperty which does not reindex, and then call reindexObject; or even better call edit(property1 = value, property2 = value2) which reindexes once after setting all given properties).

Basic usage of portal_catalog is described here:

http://wiki.erp5.org/HowToSearchPortalCatalog

TODO: advanced usage (I do not know enough...)

It is almost never needed to tweak catalog while implementing ERP5; some tricks are explained here:

http://wiki.erp5.org/HowToCreateRelatedKeys

http://wiki.erp5.org/HowToAddTableToCatalog

TODO: check if related keys are not deprecated

portal_categories
The idea and use of categories is described in:

Categories

Base categories can be added with no restrictions (although it is always advisable to think for a moment, maybe one of the existing categories can do the job). Categories are indexed in MySQL; importantly, category memberships and relations between objects are also indexed, so the data model can be extended with little overhead.

Base category can be assigned to a portal type through property sheets, or simply through ZMI in portal_types tool. If an object has a given base category, it has all auto-generated accessors (setXXX, getXXX, setXXXList, getXXXlist).

Categories have a rich API; most heavily used methods are: .getCategoryChildLogicalPathItemList returns all subcategories recursively as pairs, suitable for filling a dropdown or ListField; .getCategoryChildTranslatedLogicalPathItemList same, but translated; .getCategoryMemberValueList returns all object which are classified to this category, or any of its direct or indirect subcategories (this includes subcatories themselves, but you can give it portal_type argument).

From the other end, every ERP5 object (a Person, for instance) has a method .isMemberOf which returns True if the object belongs to the given category OR to any of its direct or indirect subcategories. For example, if a Person has a function: "sales/retail/specialist", then .isMemberOf("function/sales") == True.

Base category has a rich user interface with many cryptic options, most of which refer to programmable acquisition which is explained here: http://wiki.erp5.org/HowToUseProgrammableAcquisition

portal_contributions
This is a versatile tool which can devour (or ingest, if you prefer) almost anything you throw into it, guess what it is, find the right place to put it, analyze it and set various attributes of it.

More specifically: you call portal_contributions.newContent method, giving it some data (an uploaded file, for instance) or a url, optionally many other things (see the method's docstring, it is quite good). The tool then: to find out properties of the object, and if it gets any, sets them on the object; the scripts are type-based, so e.g. if the object is qualified as Spreadsheet, the tool looks for a script named "Spreadsheet_getPropertyDictFromFilename" and if not found, calls a generic one "Document_getPropertyDictFromFilename".
 * uses WebDAV machinery to find out portal type for the content (it uses content_type_registry, so this is the place to set it up)
 * calls ZMI scripts:
 * [Type]_getPropertyDictFromFilename
 * [Type]_getPropertyDictFromContent

These scripts should return dicts of properties derived from file name and content; they can also return portal type, and this one will be eventually applied, so you can encode the content's type in its filename.
 * finds out the right module to place the content in
 * places the content in the right module

Contribution tool is used mostly by DMS module to ingest documents uploaded through web interface, sent in by email, or drag&dropped through WebDAV. In the nearest future it may be used also to receive and ingest emails.

portal_rules
Generic description about portal_rules needs to be here.

Invoice Transaction Rule
This rule is used by a builder to create Accounting Transaction Line after confirming Sale Invoice Transaction. You need to create a matrix of rules, which will be used to generate predefined Accounting Transaction Line.

If you need to define accounting system, this rule is what you need. Its definition will create proper accounting movements, based on predicates.

Begin in portal rules tool create new Invoice Transaction Rule, give it an Id and follow steps below for example based explanation.

Setting Predicates
After adding predicate you will be presented with a predicate screen. Set descriptive Title, which will be used as matrix column or row header. After setting Membership Criteria you will be able to set some Membership Values.

Predicates are grouped by a common Dimension, so set it carefully.

Keep in mind, that predicates may be constructed for some type of objects. In case of accounting you might want to create separate predicates for Sale and Purchase. To achieve it fill Test Method ID field with Movement_explanationPortalTypeIsPurchase for purchase patch and Movement_explanationPortalTypeIsSale for sale path.

When your matrix is ready, you can go and edit a template for Accounting Transaction Line. To test it, confirm Sale Invoice Transaction which is in planned state and observe how Accounting Transaction Line objects are created and filled.

Do not forget to fill Source and Destination views with proper accounts. Until then, system won't be able to generate proper simulations.

Full example
This example is taken for real world situation - traders in Poland. Requirement is to have defined region category, at least 3 different regions - Poland, Europe Union and Rest of The World. Example region tree is:

 * region/africa
 * region/asia
 * region/europe
 * region/europe/eu
 * region/europe/eu/bg
 * region/europe/eu/de
 * region/europe/eu/fr
 * region/europe/eu/ie
 * region/europe/eu/pl (yes, it is Poland)
 * region/europe/eu/uk
 * region/europe/non-eu/ua
 * region/north_america
 * region/south_america

Create Predicates in your Invoice Transaction Rule:
 * 1) for purchase from Poland
 * 2) * title: Purchase from Poland
 * 3) * Dimension: region
 * 4) * Test method ID: Movement_explanationPortalTypeIsPurchase
 * 5) * Membership Criteria: source_region
 * 6) * Membership Values: only source_region/europe/eu/pl
 * 7) for purchase from Europe Union
 * 8) * title: Import from the Europe Union
 * 9) * Dimension: region
 * 10) * Test method ID: Movement_explanationPortalTypeIsPurchase
 * 11) * Membership Criteria: source_region
 * 12) * Membership Values: everything what is in source_region/europe/eu without source_region/europe/eu/pl and without source_region/europe/eu
 * 13) for purchase from rest of the world
 * 14) * title: Import from outside of the Europe Union
 * 15) * Dimension: region
 * 16) * Test method ID: Movement_explanationPortalTypeIsPurchase
 * 17) * Membership Criteria: source_region
 * 18) * Membership Values: everything in source_region without source_region/europe/eu and below
 * 19) for sale into Poland
 * 20) * title: Sale to Poland
 * 21) * Dimension: region
 * 22) * Test method ID: Movement_explanationPortalTypeIsSale
 * 23) * Membership Criteria: destination_region
 * 24) * Membership Values: destination_region/europe/eu/poland
 * 25) for sale to Europe Union
 * 26) * title: Export to the Europe Union
 * 27) * Dimension: region
 * 28) * Test method ID: Movement_explanationPortalTypeIsSale
 * 29) * Membership Criteria: destination_region
 * 30) * Membership Values: everything what is in destination_region/europe/eu without destination_region/europe/eu/pl and without destination_region/europe/eu
 * 31) for sale to rest of the world
 * 32) * title: Export to outside of the Europe Union
 * 33) * Dimension: region
 * 34) * Test method ID: Movement_explanationPortalTypeIsSale
 * 35) * Membership Criteria: destination_region
 * 36) * Membership Values: everything in destination_region without destination_region/europe/eu and below

Now play with created Accounting Rule Cell, then create some orders - sale and purchase, expand them (by ordering or planning) and check for simulations (e.g. by using Base_viewSimulationTree). Of course you may go further and create some invoices.

Beware: above configuration is for example purpose only.

title: ERP5 Handbook/ERP5 Specific Zope tools


text:
Civ/Civilization IV

This is a strategy guide for Civilization IV and its expansion packs.

Table of Contents

 * The Basics1
 * /Leader Traits/
 * /Diplomacy/

Appendices

 * /Forms of Government/
 * /Unit Index/
 * /Terrain Reference/
 * /Patch History/
 * /Warlords Extras/

[1] Chapter common to more than one guide

Modding

 * /Modding/

title: Civ/Civilization IV


text: Civ/Civilization IV/Warlords Extras

title: Civ/Civilization IV/Warlords Extras


text:
User:Amire80

I am mostly active in the English and Hebrew Wikipedias - find me there.

English * Hebrew

title: User:Amire80


text:
Template:Freistil/Header

This template creates an article header in project Freistil. The parameters are:
 * date = Date of the article
 * title = headline
 * note = translation of the headline, may be left out
 * img = name of the image to be shown as a starter, e. g. "Euro banknotes.jpg", may be left out
 * level = one of the following values: Beginner, Mediocre or Advanced, may be left out

title: Template:Freistil/Header


text:
Cookbook:Moussaka

Moussaka is a national dish of Greece also from the Mediterranean. It is widely known as a Greek dish based on eggplant and minced lamb, but is made differently across the region.

 * Moussaka (Bulgarian)
 * Greek Moussaka

title: Cookbook:Moussaka


text:
Perl Programming/DBI - Perl database interface

=DBI - Perl database interface=

There is a comprehensive library of modules for connecting to databases from Perl programs. It is maintained by Tim Bunce and it is called DBI - database interface. The main Website for DBI is http://dbi.perl.org/.

Installing the necessary modules
To use DBI to connect to a database, you need at least two CPAN modules. One is the main DBI module, simply called DBI. The other one is a DBD - a database driver module. There are DBI drivers for many mainstream database management systems, such as MySQL and Oracle. The examples in this tutorial concern Oracle; accordingly, the database driver for Oracle is called DBD::Oracle.

So, to run the examples in this chapter you need the modules DBI and DBD::Oracle.

Installing DBI
Installing DBI is straightforward. (For information about installing CPAN modules, see the chapter about CPAN.)

Installing DBD::Oracle
When installing DBD::Oracle, there are a few things that you need to prepare.

Getting the correct version
First of all, when installing DBD::Oracle, make sure that you get a version by Pythian. Pythian maintains DBD::Oracle since version 1.17 (February 2006).

Preparing environment variables
You need to create the environment variables ORACLE_USERID and ORACLE_SID. They are needed to test the connection to your database after DBD::Oracle is installed. The value for ORACLE_USERID must be a valid username and password for your database. ORACLE_SID must be set to database name as it appears in TNSNAMES.ORA. On a Unix-like system run:

<tt>export ORACLE_USERID="username/password"

export ORACLE_SID="DATABASE_NAME"</tt>

On Windows, you only need <tt>ORACLE_USERID</tt>:

<tt>set ORACLE_USERID="username/password@DATABASE_NAME"</tt>

When you have finished defining these environment variables, install <tt>DBD::Oracle</tt> from CPAN the usual way.

Using DBI
Here is a very simple test script to get you going.


text:
Template:Freistil/Footer

This template creates a footer that closes the Template:Freistil/Header in the project Freistil. Parameter 1 must contain the name of the article, e. g. "Zerbröselnde Geldscheine" if the article is called "Freistil/Zerbröselnde Geldscheine". Up to 5 more parameters can be passed, which will be presented as references below the article.

[ Edit this article] · [ Ask a question about this article]

title: Template:Freistil/Footer


text:
Talk:ERP5 Handbook/ERP5 Specific Zope tools

proof
portal_rules/default_invoice_rule section is only proof of concept. It provides some info, but I'm only trying to find best structure for reference docs. I really do not know if they shall be screenshot-based or description-based. Shufla 10:05, 16 January 2007 (UTC)

...
Please do not treat this section as guideline, better create better one :) Shufla 13:02, 16 January 2007 (UTC)


text:
User talk:Amire80

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You should sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be an idea if you add this page to your "watchlist" so that you can see when any new information is posted there.

Good luck! -- Herby talk thyme 10:47, 16 January 2007 (UTC)

title: User talk:Amire80


text:
User talk:194.82.168.3

Your message
I am an admin who is deleting items that are not for Wikibooks or have been requested to be deleted. Thank you -- Herby talk thyme 11:15, 16 January 2007 (UTC)

Sorry
Ah ok, sorry... pretty new at all this.
 * No problem - we were all new once . Look around and get the "feel" of the place.  If I can help you have found out where I am! -- Herby  talk thyme 11:18, 16 January 2007 (UTC)

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

-- Herby talk thyme 11:18, 16 January 2007 (UTC)

Test
--AdRiley 11:35, 16 January 2007 (UTC)

title: User talk:194.82.168.3


text:
Freistil/Kopftuchverbot in Bayern ist nicht verfassungswidrig

hat am heutigen Montag der Islamischen Religionsgemeinschaft gegen  abgewiesen. dürfen muslimische Lehrerinnen auch in Zukunft in bayerischen Schulen kein Kopftuch tragen.

Die Islamische Religionsgemeinschaft, ein  Berlin, hatte gegen das am 11. November 2004 mit den Stimmen der CSU-Mehrheit, weil sie darin eine massive  der  der Muslime sah. das Gesetz den, das Gesetz zwar allgemein das Tragen er religiöser Symbole und Kleidungsstücke ,  von  jedoch ausgenommen ist. Der Verein hielt das Gesetz daher für verfassungswidrig.

In der  die Richter auf ein Urteil des Bundesverfassungsgerichts aus dem Jahr 2003, in dem entschieden worden war, dass für ein Kopftuchverbot eine gesetzliche Regelung in den einzelnen Bundesländern. Diese gesetzliche Grundlage habe der Freistaat Bayern geschaffen. Zudem müsse das Recht auf im Kontext mit anderen  geschützten Rechten gesehen werden und auch die Religionsfreiheit von Schülern und Eltern beachtet werden, die die von der.

Der bayerische Lehrerinnen und Lehrer-Verband (BLLV) und das bayerische Kultusministerium begrüßten die Entscheidung. So sagte der Präsident des BLLV, Albin Dannhäuser: „Schulen müssen Orte sein, an denen Toleranz und gegenseitiger Respekt gelebt werden.“

Das Tragen eines Kopftuches ist muslimischen Lehrerinnen Bayern auch in mehreren anderen Bundesländern verboten. Als erstes Bundesland verabschiedete Baden-Württemberg Anfang Juni 2004 ein neues Schulgesetz, in dem das Tragen des Kopftuchs war. Dieser  aber im Juli 2006 das Stuttgarter   der Gleichbehandlungsgrundsatz verletzt werde, da die Ordenstracht für Nonnen weiterhin erlaubt sei. Eine Stuttgarter und lehrerin darf nun  im Unterricht ihr Kopftuch tragen. Als letztes Bundesland verabschiedete Nordrhein-Westfalen ein Kopftuchverbot. Berlin erließ das strikteste Gesetz, dort sind auch christliche und jüdische religiöse Symbole verboten.


text:
User talk:Paulpen

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You should sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be an idea if you add this page to your "watchlist" so that you can see when any new information is posted there.

Good luck! -- Herby talk thyme 12:57, 16 January 2007 (UTC)

New pages
Hi - could you look at the naming of your new pages such as Example project plan and Peer assessment for example. You need to name these in accordance with Wikibooks naming policy (Naming_policy) with a Booktitle/Chapter format. Please correct the ones you have created - you can use the "move" button to move them to the correct name. Thanks -- Herby talk thyme 07:34, 5 April 2007 (UTC)

Image copyright problem with Image:Employee Benefits Received.jpg
Thanks for uploading Image:Employee Benefits Received.jpg. The Wikimedia Foundation is very careful about the images included in Wikibooks because of copyright law, and requires that we maintain a strict copyright policy. The image that may soon be deleted unless we can determine the copyright holder and status.

The copyright holder is usually the creator, the creator's employer, or the last person who was transferred ownership rights. Copyright information on images is signified using copyright templates. The three basic license types on Wikibooks are open content, public domain, and fair use. Find the appropriate template in Image copyright tags and place it on the image page like this:.

Please signify the copyright information on any other images you have uploaded or will upload. Remember that images without this important information or giving false information can be deleted by an administrator. If you have any questions, feel free to contact me, or ask another Wikibookian at the help desk. Thank you. Webaware talk 09:58, 27 June 2007 (UTC)

Hi
I observe that you created the following pages in Wikibooks. I would like to know if these pages form parts of a book.

* - this is a guideline for the students * this is a chapter * this is a chapter
 * - this is a guideline for the students
 * - this is a chapter
 * this is a chapter

I also request you to move these pages to the namespace for the book as per Wikibooks naming conventions in case you are preparing to create one. In case you need help in this matter, feel free to contact me in my talk page. Thanks -Ravichandar My coffee shop 16:07, 1 November 2008 (UTC)

Many thanks - we are still new to this so trying to get started,

Consumer Behavior in Travel and Tourism
Hello. Am I right in thinking that you are the instructor for this class based project? I've just made a few changes to the structure of your book so that it fits in with our naming policy. I'm an administrator here so if you need any more help with anything just leave me a message on my talk page or e-mail me. Regards --AdRiley (talk) 07:52, 27 November 2008 (UTC)

Yes, this is a class writing project, and students are compiling the chapters. I will be in touch as we may need more help in formating etc.

It is a class project, each section written by students.

Thanks Paul Penfold School of Hotel & Tourism Management HK Polytechnic University

title: User talk:Paulpen


text:
User talk:Iskabobbins

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You should sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be an idea if you add this page to your "watchlist" so that you can see when any new information is posted there.

Good luck! -- Herby talk thyme 14:13, 16 January 2007 (UTC)

title: User talk:Iskabobbins


text:
Radiation Oncology/Spleen

Spleen

Overview

 * Hematopoietic organ
 * Several functions
 * Lymphoid: cellular and humoral immunity
 * Filtration: irreversible trapping of particulate matter (e.g. bacteria)
 * Surveillance: Removal of damaged/senescent RBCs
 * Platelet sequestration
 * Typically 1/3 of platelet number but can be significantly more in splenomegaly
 * Appears to be a passive process, whereby platelets are trapped by adhesion to reticular meshwork of the splenic cords
 * Can be released with epinephrine, so if normal platerel production is normal, no bleeding
 * Extramedullary hematopoiesis
 * Initially during embryonic development
 * Resumption of function possible with severe anemia or myelofibrosis
 * Normal spleen in adults measures 8-13 cm and is typically not palpable. Weight 150-250 g
 * Splenomegaly
 * Multiple causes: inflammation/infection (increase in white pulp), congestive expansion (increase in red pulp), increased blood pool, increased macrophage activity, proliferative cellular infiltration, extramedullary hematopoiesis, storage diseases, cysts, solid tumors (primary rare, solitary met from colorectal, ovarian)
 * Etiology varies: West - leukemia, lymphoma, myeloproliferative disorders, hemolytic anemia and portal hypertension. Tropics - infectious diseases

RT Indications

 * Symptomatic LUQ pain, mechanical discomfort related to large spleen, early satiety due to stomach compression
 * RT used in patients with indications for splenectomy, who are high risk surgical candidates or who decline surgery
 * Mechanism of splenomegaly important for RT
 * Proliferative cell infiltration: chronic lymphocytic leukaemia (CLL), prolymphocytic leukaemia (PLL), acute myelogenous leukemia (AML), hairy cell leukaemia (HCL), splenic marginal zone lymphoma (SLVL)
 * Bone marrow myelofibrosis resulting in extramedullary hematopoiesis: primary myeloid metaplasia; or secondary to CML, polycythemia vera, or essential thrombocythemia
 * Immune thrombocytopnia (ITP)
 * Hypersplenism: typically seen as cytopenia caused by splenomegaly (e.g. portal hypertension)
 * Disease-associated side effects (wt. loss, night sweats, low grade fever) often improve, but generally not primary indications
 * Not likely to be effective in improving disease-related cytopenias (may in fact exacerbate them)

RT Effects

 * Direct effect on radiosensitive extramedullary hematopoietic tissue or infiltrating lymphocytes
 * Destruction of hematopoietic precursors residing or traversing the spleen
 * Early and marked reduction in colony-forming granulocyte macrophages, persisting >1 month
 * A systemic effect and sometimes peripheral blood and bone marrow complete remissions (CRs) observed in several clinical situations
 * Mechanism is not clear, but could involve direct RT-induced killing of splenic neoplastic clls, immune modulation via proportional changes in lymphocytes subsets and increased anti-tumor activity, RT-induced release of cytokines (e.g. TNFalpha, IL-2), and bystander/abscopal effect
 * Also, compared to splenectomy, a marked and persistent cytopenias (which may lead to significant complications)

RT Overview

 * No prospective or randomized trials
 * No firm RT schedules, but low dose (<=1Gy) intermittent (2-3 fx/week), to total <=10 Gy recommended. One report suggests conventional 2 Gy/fx may be equally well tolerated. Consider dosing as follows (PMID 11230883 below):
 * Lymphoproliferative: 4-10 Gy total in 1 Gy/fx
 * Myelofibrosis: 1-9 Gy total, with 0.25-0.5 Gy/fx
 * Hypersplenism: RT typically not useful, but for example see PMID 18301984
 * Patients should be continuously monitored, and fields adjusted with shrinking spleen
 * RT should be stopped when therapeutic goal is achieved, rather than when prescription is reached
 * Complications are primarily myelosuppression, and need to be monitored daily (CBC, exam)
 * Toxicity tolerable in lymphoid disorders, higher in myeloproliferative disorders
 * Decline in hemoglobin - can lead to MI
 * Thrombocytopenia - can result in significant bleeding
 * Retreatment as necessary, with consideration of renal dose

Literature

 * Scotland; 2008 (2003-2004) PMID 18477126 -- "Low-dose palliative splenic irradiation in haematolymphoid malignancy." (Shrimali RK, J Med Imaging Radiat Oncol. 2008 Jun;52(3):297-302.)
 * Retrospective. 22 courses for 19 patients. Total dose 1.5 - 8.0 Gy (median 4.5 Gy), fractional dose 0.25 - 1 Gy delivered weekly or twice weekly. AP/PA. Median field reduction 25%
 * Outcome: 85% successful in symptom palliation, but only 25% produced hematologic response
 * Conclusion: splenic irradiation effective and well-tolerated palliative treatment option

 * Vienna, 2003 (Austria) PMID 12624513 -- "Short-time splenic irradiation for splenomegaly." (Schratter-Sehn AU, Onkologie. 2003 Feb;26(1):21-4.)
 * Retrospective. 49 patients (CLL 6, CML 14, NHL 6, MPD 16, OMF 6, AML 1) treated with 85 courses with A) low dose <1 Gy/fx prolonged vs. B) conventional 2Gy/fx. Spleen pretreatment doses 3-70 Gy (mean 21 Gy)
 * Outcomes: spleen reduction 55/85 patients (Group A 47/72, Group B 8/13), clinical improvement 62/85 (Group A 57/72, Group B 5/13). Rapid response in 23 patients, with field reduction during treatment
 * Conclusion: Conventional short treatment showed rapid response, no difference in toxicity

 * Naval Medical Center, San Diego, 2003 (1990-2001) PMID 12714892 -- "Palliative irradiation of the spleen." (McFarland JT, Am J Clin Oncol. 2003 Apr;26(2):178-83.)
 * Retrospective. 17 patients (5 CML, 4 CLL, 4 Myelofibrosis, 2 PCV, 1 ITP, 1 AML). Symptomatic splenomegaly
 * RT schedule: Week 1 - 0.5 Gy x2 fx, Week 2 - 0.75 Gy x2 fx, Week 3 - 1 Gy x2 fx
 * Outcome: 22/25 treatments resulted in decreased pain and symptoms. 5 patients retreated, 1 patient 5 treatments
 * Conclusion: Effective palliation. Retreatment possible. Less effective for ITP or leukocytosis

 * Mayo, 1998 PMID 9827926 -- "Splenic irradiation for symptomatic splenomegaly associated with myelofibrosis with myeloid metaplasia." (Elliott MA, Br J Haematol. 1998 Nov;103(2):505-11.)
 * Retrospective. 23 patients with MMM treated with 50 courses of SI. RT: Median total dose 2.8 Gy, given in median 7.5 fractions.
 * Outcomes: 94% reduction in spleen size. 8/23 received multiple courses, 9/23 underwent splenectomy
 * Toxicity: 43% significant cytopenia, 26% life-threatening cytopenia after a single course, 13% fatal sepsis or hemorrhage
 * Conclusion: Good symptomatic relief, but high risk. Should not be offered to good surgical candidates for splenectomy

 * Melbourne, 1989 (Australia) PMID 2912945 -- "A study of splenic irradiation in chronic lymphocytic leukemia." (Guiney MJ, Int J Radiat Oncol Biol Phys. 1989 Jan;16(1):225-9.)
 * Retrospective. 22 patients with 32 courses of SI. RT 0.25 - 0.5 Gy/fx, fields AP/PA and decreased with response, treatment halted with response
 * Outcomes: Splenomegaly 19/31 response; Splenic pain 4/10 response; Anemia 4/16 response; Thrombocytopenia 2/14 response (and 9/14 worsening thrombocytopenia). Median duration of response 14 months (3-116)
 * Toxicity: leucopenia, thrombocytopenia. No correlation with fraction size

 * 1986 (1973-1982) PMID 2427184 -- "Splenic irradiation in the treatment of patients with chronic myelogenous leukemia or myelofibrosis with myeloid metaplasia. Results of daily and intermittent fractionation with and without concomitant hydroxyurea." (Wagner H, Cancer. 1986 Sep 15;58(6):1204-7.)
 * Retrospective. 17 patients with CML or MMM treated with 24 courses.
 * RT initially 1Gy to 15-20 Gy over 1 month, later 0.15-0.5 Gy/fx, total 0.15-6.5 Gy, given in 2-3 fx/week
 * Outcomes: 71% improvement for splenic pain, 50% improvement for splenomegaly

 * 1977 PMID 74374 -- "Irradiation for control of hypersplenism and painful splenomegaly in myeloid metaplasia." (Greenberger JS, Int J Radiat Oncol Biol Phys. 1977 Nov-Dec;2(11-12):1083-90.)
 * Cumulative total doses 5-10 Gy, well tolerated
 * No correlation between dose and spleen reduction and toxicity

Review

 * Harvard; 2008 PMID 19092156 -- "Case records of the Massachusetts General Hospital. Case 39-2008. A 51-year-old woman with splenomegaly and anemia." (Abramson JS, N Engl J Med. 2008 Dec 18;359(25):2707-18.)

 * Tubingen, 2001 (Germany) PMID 11230883 -- "Clinical indications and biological mechanisms of splenic irradiation in chronic leukaemias and myeloproliferative disorders." (Weinmann M, Radiother Oncol. 2001 Mar;58(3):235-46.)

title: Radiation Oncology/Spleen


text:
User:West Brom 4ever~enwikibooks

hr:user:West Brom 4ever

title: User:West Brom 4ever~enwikibooks


text:
Adventist Youth Honors Answer Book/Primary and secondary colors

|


text:
User talk:64.8.131.253

Please do not add inappropriate external links to Wikibooks. Wikibooks is intended to be read without the need for external reference and requires content rather than external links particularly those which are for advertising or promotion. Inappropriate links may include (but are not limited to) links to personal web sites, links to web sites with which you are affiliated, and links that exist to attract visitors to a web site or promote a product. If you feel the link should be added to the article, then please discuss it on the article's talk page rather than re-adding it. See the welcome page to learn more about Wikibooks. Thank you. -- Herby talk thyme 15:58, 16 January 2007 (UTC)

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks. -- Herby talk thyme 16:10, 16 January 2007 (UTC)

title: User talk:64.8.131.253


text:
Cookbook:Erwtensoep (Split Pea Soup)

Ingredients

 * Green split peas
 * Streaky pork belly bacon, chopped small
 * Pork belly slices (non smoked), sliced into small strips
 * Dutch smoked sausage (if not available any smoked sausage will do), sliced small
 * 1 large carrot, cubed
 * 1 leek, sliced into rings
 * 1 onion, chopped
 * ½ celeriac, cubed
 * 3 potatoes, cubed
 * 2 bay leaves

Procedure

 * 1) Soak the split peas in water overnight.
 * 2) Fry the pork belly slices in a frying pan until golden brown (but not too crispy).
 * 3) Cook the peas in enough water for about 30 minutes. Make sure to remove foam from the pan with a spoon.
 * 4) In another pan, cook the bacon and the fried pork belly slices together with the vegetables, some salt and pepper, and the bay leaves for about 45 minutes.
 * 5) When the erwtensoep is ready, add the Dutch smoked sausage, and boil it for another 15 minutes.
 * 6) As a finishing touch, add some fried dried onions.

title: Cookbook:Erwtensoep (Split Pea Soup)


text:
User talk:24.199.205.252

This is your last or only warning. There is a history of placing external links connected with this account in some form. If you are not blocked immediately from editing Wikibooks you will be if you place another external link. -- Herby talk thyme 16:21, 16 January 2007 (UTC)

Recent edits to US History/Contents/Pre-Columbian
This is your last warning. The next time you deliberately introduce incorrect information into a page you will be blocked from editing Wikibooks.

Xania talk 21:50, 18 September 2007 (UTC)

title: User talk:24.199.205.252


text:
User:Bartek.gorny

Bartłomiej Górny

title: User:Bartek.gorny


text:
User talk:208.182.75.11

Welcome to Wikibooks. We invite everyone to contribute constructively to our collection. Take a look at the welcome page if you would like to learn more about contributing. However, unconstructive edits are considered vandalism, and if you continue in this manner you may be blocked from editing without further warning. Please stop, and consider improving rather than damaging the hard work of others. Thanks. -- Herby talk thyme 16:55, 16 January 2007 (UTC)

title: User talk:208.182.75.11


text:
User talk:Readie

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You should sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be an idea if you add this page to your "watchlist" so that you can see when any new information is posted there.

Good luck! -- Herby talk thyme 18:02, 16 January 2007 (UTC)

title: User talk:Readie


text:
Blender 3D: Noob to Pro/Scripts/3ds import

Script Name: 3D Studio (.3ds)...

Author: "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Campbell Barton"

Version: ' 0.96 '

Tooltip: Import from 3DS file format (.3ds)

Installs in: Script Menu: 'Import'

Included in Blender 2.42a: Yes

Licence: GNU General Public Licence

Link: http://www.gametutorials.com

Blender Version: 2.42a

Python Version: Python 2.4.3

Files: (In Blender/.blender/scripts)

Executable: 3ds_import.py

Bpy modules: ..Bpy data: ..Dependencies:


text:
Blender 3D: Noob to Pro/Scripts/3ds export

Script Name: 3D Studio (.3ds)...

Author: "Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"

Version: ' 0.90a '

Tooltip: Export to 3DS file format (.3ds).

Installs in: Script Menu: 'Export'

Included in Blender 2.42a: Yes

Licence: GNU General Public Licence

Link: http://www.gametutorials.com", "http://lib3ds.sourceforge.net/

Blender Version: 2.42a

Python Version: Python 2.4.3

Files: (In Blender/.blender/scripts)

Executable: 3ds_export.py

Bpy modules: ..Bpy data: ..Dependencies:


text:
Blender 3D: Noob to Pro/Scripts

This page contains the status of all the varius file formats import/export scripts included in blender or published on the net.

3ds

 * /3ds_import/
 * /3ds_export/

ac3d

 * /ac3d_import/
 * /ac3d_export/

collada

 * /collada_import/
 * /collada_export/

md3

 * /md3_import/
 * /md3_export/

title: Blender 3D: Noob to Pro/Scripts


text:
Category:Link templates

ja:Category:リンク支援テンプレート sl:Kategorija:Predloge za povezovanje

title: Category:Link templates


text:
Talk:Ruby Programming/Writing methods

There are references on the web that passing arguments by name will be supported in Ruby 1.8. However, I can find no documentation as to whether this is true in 1.8.x. --205.145.64.64 19:08, 16 January 2007 (UTC)

title: Talk:Ruby Programming/Writing methods


text:
Category:Book:Movie Making Manual/Intro

Introduction

title: Category:Book:Movie Making Manual/Intro


text: Category:Cocktails with grenadine

title: Category:Cocktails with grenadine


text: Category:Other cocktails

title: Category:Other cocktails


text:
Category:User ml

ja:Category:User ml

title: Category:User ml


text: Category:Book:Movie Making Manual/You the filmmaker


text:
Category:Jordanian recipes

Recipes from Jordan.

title: Category:Jordanian recipes


text: Category:Book:5 in a Row

title: Category:Book:5 in a Row


text:
User:A R King

About A R King
My name is Alan R. King. I am a linguist, language teacher and translator. At present I work as a freelance translator. I studied linguistics formally in the United States and England.

Most of my linguistic work focuses in a variety of ways on languages and particularly on the study, development and support of minority or endangered languages in many parts of the world.

I am a Corresponding Member of the Royal Academy of the Basque Language and a Founding Member of Iniciativa para la Recuperación del Idioma Náhuat - Te Miki Tay Tupal.

I have written several books, articles, etc., principally on the Basque and Nawat (Pipil) languages.

I live in the Basque Country, a stateless nation in Europe. Other countries where I have lived for a year or longer are Catalonia, El Salvador, England (where I was born), the USA and Wales.

title: User:A R King


text:
Animal Behavior/Classical Conditioning

Classical conditioning, a form of associative learning. It requires an unconditioned reflex, where an unconditioned stimulus (US)brings about an automatic, unlearned (unconditioned) response (UR). If a neutral stimulus (NS) tends to precede it, an association is made and the conditioned response (CR) becomes transferred onto the (previously neutral) conditioned strimulus (CS); a conditioned reflex has been learned. For instance, food (US) elicits salivation (UR) in a dog as a natural response. If the sound of a bell (NS) frequently occurs before the food (US) is presented then the mere sound of the bell (CS) will elicit salivation (CR).

 * Little Albert

title: Animal Behavior/Classical Conditioning


text: Category:Book:Samba

title: Category:Book:Samba


text: Category:Book:Movie Making Manual/Preface


text: Category:Location user templates

title: Category:Location user templates


text: Category:Engineering chapter stubs

title: Category:Engineering chapter stubs


text: Category:Cocktails with coffee liqueur

title: Category:Cocktails with coffee liqueur


text: Category:User talk header templates

title: Category:User talk header templates


text:
Category:Citation templates

bg:Категория:Шаблони за цитати

title: Category:Citation templates


text:
A Beginner's Guide to D/Before We Begin.../Short Introduction to D

D is a language following in the footsteps of the C-language family. It has the same general syntax, so anyone familiar with C, C++, Java or C# should be able to easily pick up the language. You should see the language comparison page for more details.

Since this page is about a short introduction to D, why not start with the all-famous Hello World.

For the experienced C programmer, the import and writefln should look strange. We will discuss them in later chapters.


text:
A Beginner's Guide to D/Before We Begin.../Editors Supporting D

There is currently no finalized IDE tool ala Eclipse for D development. Vim and Emacs come bundled with D editing modes, and since D is syntactically very similar to the other C-style languages, any editor which supports those might rudimentally support D.

However, for an exhaustive list of D-supporting IDEs, please refer here.


text:
A Beginner's Guide to D/Before We Begin.../D Compiler

There are currently three versions of the D compiler available. Digital Mars provides the DMD compiler, while there is a front end for the GNU Compiler Collection available called GDC, and a front end for the LLVM compiler called ldc.

The DMD compiler supports Windows, Linux x86, and OS X, whereas GDC and LLVM support many more platforms.

At the time of writing, the homepage boasts support for:

 * Linux (tested on Fedora Core 5 x86 and PowerPC)
 * Mac OS X 10.3.x, 10.4.x, 10.5.x
 * FreeBSD 5.2.1
 * Cygwin
 * MinGW
 * AIX (tested on 5.1)

On January 2, 2007, DMD released version 1.0 of their compiler, and GDC released version 0.21, which is based on the specification for DMD 1.0.

On January 9, 2009, the ldc project released a D frontend for the LLVM compiler. It supports OS X, Windows and Linux.

On February 11, 2009, DMD released dmd 1.040 (GM) binaries for OS X 10.5, Windows x86 and Linux x86.

On February 14, 2009, DMD released dmd 2.025 (alpha) binaries for OS X 10.5, Windows x86 and Linux x86.


text:
Cookbook:Rhubarb Juice

| American cuisine | Vegetarian Cuisine | Beverages

Ingredients

 * 2 lb (about 1 kg) tender rhubarb, chopped
 * 5 cups water
 * ¼ cup lemon juice

Procedure

 * 1) Combine the rhubarb and water in a non-aluminum pot. Cook until mushy.
 * 2) Strain the mixture well, reserving only the juice.
 * 3) Mix in lemon juice.

Notes, tips, and variations

 * It's important to use a non-aluminum pot, because when combined with an acidic food like rhubarb, aluminum can impart an unpleasant flavor.

Use

 * For each cup of concentrate, add ⅓ cup sugar and ½ cup grapefruit juice, and chill well.
 * Just before serving, add 1 quart chilled ginger ale and stir well.

title: Cookbook:Rhubarb Juice


text:
Cookbook:Fruity White Sangria

 * American cuisine | Vegetarian Cuisine | Beverages | Alcoholic Drink

Ingredients

 * 2 quarts pineapple-orange-guava juice
 * 2 cups fruity white wine
 * ¼ cup orange-flavored liqueur
 * ¼ cup white granulated sugar
 * 1 orange, thinly sliced
 * 1 lime, thinly sliced
 * 2 cups sliced strawberries

Procedure

 * 1) Evenly combine all ingredients in 2 very large pitchers; cover and refrigerate for 2 hours to blend flavors.
 * 2) Serve over ice cubes.

title: Cookbook:Fruity White Sangria


text:
Cookbook:Hot Peach Drink

| American cuisine | Vegetarian Cuisine | Beverages | Alcoholic Drink

Ingredients

 * 1 bottle (40 ounces) pure peach drink
 * ¼ cup packed brown sugar
 * 2 cinnamon sticks
 * ½ cup peach schnapps (optional)
 * Cinnamon sticks for garnish (optional)

Procedure

 * 1) Combine juice, brown sugar, cinnamon sticks, and margarine in a Dutch Oven.
 * 2) Heat to boil.
 * 3) Remove from heat.
 * 4) Discard cinnamon sticks.
 * 5) Add schnapps, if desired.
 * 6) Garnish with additional cinnamon sticks, if desired.

title: Cookbook:Hot Peach Drink


text:
Blender 3D: Noob to Pro/Scripts/md3 import

New Updated Importer
It would appear that there is a new importer which can import animations as well as texture coordinates. However the texture must be imported manually: http://www.moddb.com/games/quake-iii-arena/downloads/blender-md3-import-export-tool

Default
Script Name: MD3 Import 234

Author: PhaethonH

Version: md3import234.py 0009 (2004.10.23), md3.py 0004 (2002.03.07)

Tooltip: Import ID Software MD3 format.

Installs in: Script Menu: 'Import'

Included in Blender 2.42a: No

Licence: Copyright 2004 PhaethonH. Permission granted to use, copy, distribute, and modify, provided this copyright notice remains intact. Software is provided as-is, with absolutely no warranty of any kind.

Link: http://www.icculus.org/~phaethon/q3/md3import/md3import.html

Blender Version: 2.34

Python Version:

Files: md3import234.py, md3.py

Executable: md3import234.py

Bpy modules: ..Bpy data: ..Dependencies:

Usage guide
Animation is not imported yet.

Textures and texture coordinates are not imported.


text:
User:Franko2nd

I am 18 and a student at Glasgow University where I study Geography.

Fraser

Currently working on

 * Basic Geography

title: User:Franko2nd


text:
Template:Microprocessor Design

Microprocessor Design

title: Template:Microprocessor Design


text: Category:Book:Microprocessor Design

title: Category:Book:Microprocessor Design


text:
Microprocessor Design/Introduction

About This Book
Computers and computer systems are a pervasive part of the modern world. Aside from just the common desktop PC, there are a number of other types of specialized computer systems that pop up in many different places. The central component of these computers and computer systems is the microprocessor, or the CPU. The CPU (short for "Central Processing Unit") is essentially the brains behind the computer system, it is the component that "computes". This book is going to discuss what microprocessor units do, how they do it, and how they are designed.

This book is going to discuss the design of microprocessor units, but it will not discuss the design of complete computer systems nor the design of other computer components or peripherals. Some microprocessor designs will be implemented and synthesized in Hardware Description Languages, such as Verilog or VHDL. The book will be organized to discuss simple designs and concepts first, and expand the initial designs to include more complicated concepts as the book progresses.

This book will attempt to discuss the basic concepts and theory of microprocessor design from an abstract level, and give real-world examples as necessary. This book will not focus on studying any particular processor architecture, although several of the most common architectures will appear frequently in examples and notes.

How Will This Book Be Organized?
The first section of the book will review computer architecture, and will give a brief overview of the components of a computer, the components of a microprocessor, and some of the basic architectures of modern microprocessors.

The second section will discuss in some detail the individual components of a microcontroller, what they do, and how they are designed.

The third section will focus in on the ALU and FPU, and will discuss implementation of particular mathematical operations.

The fourth section will discuss the various design paradigms, starting with the most simple single cycle machine to more complicated exotic architectures such as vector and VLIW machines.

Additional chapters will serve as extensions and support chapters for concepts discussed in the first four sections.

Prerequisites
This book will rely on some important background information that is currently covered in a number of other local wikibooks. Readers of this book will find the following prerequisites important to understand the material in this book:

 * Digital Circuits
 * Programmable Logic
 * Embedded Systems
 * Assembly Language

All readers must be familiar with binary numbers and also hexadecimal numbers. These notations will be used throughout the book without any prior explanation. Readers of this book should be familiar with at least one assembly language, and should also be familiar with a hardware description language. This book will use both types of languages in the main narrative of the text without offering explanation beforehand. Appendices might be included that contain primers on this material.

Readers of this book will also find some pieces of software helpful in examples. Specifically, assemblers and assembly language simulators will help with many of the examples. Likewise, HDL compilers and simulators will be useful in the design examples. If free versions of these software programs can be found, links will be added in an appendix.

Who Is This Book For?
This book is designed to accompany an advanced undergraduate or graduate study in the field of microprocessor design. Students in the areas of Electrical Engineering, Computer Engineering, or Computer Science will likely find this book to be the most useful. The basic subjects in this field will be covered, and more advanced topics will be included depending on the proficiencies of the authors. Many of the topics considered in this book will apply to the design of many different types of digital hardware, including ASICs. However, the main narrative of the book, and the ultimate goals of the book will be focused on microcontrollers and microprocessors, not other ASICs.

What This Book Will Not Cover
This book is about the design of micro-controllers and microprocessors only. This book will not cover the following topics in any detail, although some mention might be made of them as a matter of interest:

 * Transistor mechanics, semiconductors, or integrated circuit fabrication (Microtechnology)
 * Digital Circuit Logic, Design or Layout (Programmable Logic)
 * Design or interfacing with other computer components or peripherals (Embedded Systems)
 * Design or implementation of communication protocols used to communicate between computer components (Serial Programming)
 * Design or creation of computer software (Computer Programming)
 * Design of System-on-a-Chip hardware or any device with an integrated micro-controller
 * How to select an off-the-shelf CPU (How To Assemble A Desktop PC/Choosing the parts/CPU)

Terminology
Throughout the book, the words "Microprocessor", "Microcontroller", "Processor", and "CPU" will all generally be used interchangeably to denote a digital processing element capable of performing arithmetic and quantitative comparisons. We may differentiate between these terms in individual sections, but an explanation of the differences will always be provided.

title: Microprocessor Design/Introduction


text: Template:Breed id

title: Template:Breed id


text:
User talk:Franko2nd

Hello and welcome to Wikibooks!

Here are some tips to help you get started:
 * You should sign your name on Talk and vote pages using four tildes, like this: ~~~~.
 * Remember to conduct any editing experiments in the sandbox.
 * If you're a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Staff Lounge with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be an idea if you add this page to your "watchlist" so that you can see when any new information is posted there.

Good luck! User:Iamunknown 23:19, 16 January 2007 (UTC)

Page blanking
Please can you explain what you are doing - thank you -- Herby talk thyme 16:25, 17 January 2007 (UTC)

moving to a new name Basic Geography from Pre-university Geography Franko2nd 16:32, 17 January 2007 (UTC)
 * OK - no problem - do you want the old ones deleted? Thanks -- Herby  talk thyme 16:38, 17 January 2007 (UTC)

yes please, i decided the old name was naff Franko2nd 16:38, 17 January 2007 (UTC)
 * Consider it done. Check out the Templates available as you would be able to mark it yourself then (in case no one was around).  Equally it is quite possible to "move" pages to a new name - may be useful in the future.  Finally replying is usually an either or thing - each others talk pages or all on one of them - personally it doesn't worry me and I will find an answer most places.  Let me know if I can help - regards -- Herby  talk thyme 16:42, 17 January 2007 (UTC)

cheers, can you forward me the page were these templates are plus how do you move pages to a new name? Franko2nd 16:44, 17 January 2007 (UTC)
 * "Move" - you are going to kick yourself - look at the top of the page (assuming monobook), tab marked "move" ... Just rename there (tho don't make a habit of it). Template messages is the other.  Hope this helps -- Herby  talk thyme 17:13, 17 January 2007 (UTC)

While you were gone...
Some of your images at Wikimedia Commons were deleted, in particular Image:Weather symbols.gif, as they were apparent copyright violations. Because Image:Weather symbols.gif was rather trivial, you could likely create a non-derivative version yourself and upload it. I would like to help. If you want help, just ask here or at my talk page. Thanks, Iamunknown 20:17, 27 February 2007 (UTC)

Copyright problem with Image:HadleyCross-sec.jpg

 * – Mike.lifeguard  | talk 15:41, 21 September 2007 (UTC)

title: User talk:Franko2nd


text:
Microprocessor Design/Microprocessors

Microprocessors
Microprocessors are the devices in a computer which make things happen. Microprocessors are capable of performing basic arithmetic operations, moving data from place to place, and making basic decisions based on the quantity of certain values.

Types of Processors
The vast majority of microprocessors can be found in embedded high microcontrollers. The second most common type of processors are common desktop processors, such as Intel's Pentium or AMD's Athlon. Less common are the extremely powerful processors used in high-end servers, such as Sun's SPARC, IBM's Power, or Intel's Itanium.

Historically, microprocessors and microcontrollers have come in "standard sizes" of 8 bits, 16 bits, 32 bits, and 64 bits. These sizes are common, but that does not mean that other sizes are not available. Some microcontrollers (usually specially designed embedded chips) can come in other "non-standard" sizes such as 4 bits, 12 bits, 18 bits, or 24 bits. The number of bits represent how much physical memory can be directly addressed by the CPU. It also represents the amount of bits that can be read by one read/write operation. In some circumstances, these are different; for instance, many 8 bit microprocessors have an 8 bit data bus and a 16 bit address bus.
 * 8 bit processors can read/write 1 byte at a time and can directly address 256 bytes
 * 16 bit processors can read/write 2 bytes at a time, and can address 65,536 bytes (64 Kilobytes)
 * 32 bit processors can read/write 4 bytes at a time, and can address 4,294,967,295 bytes (4 Gigabytes)
 * 64 bit processors can read/write 8 bytes at a time, and can address 18,446,744,073,709,551,616 bytes (16 Exabytes)

General Purpose Versus Specific Use
Microprocessors that are capable of performing a wide range of tasks are called general purpose microprocessors. General purpose microprocessors are typically the kind of CPUs found in desktop computer systems. These chips typically are capable of a wide range of tasks (integer and floating point arithmetic, external memory interface, general I/O, etc). We will discuss some of the other types of processor units available:

 * General Purpose:A general purpose processing unit, typically referred to as a "microprocessor" is a chip that is designed to be integrated into a larger system with peripherals and external RAM. These chips can typically be used with a very wide array of software.

 * DSP:A Digital Signal Processor, or DSP for short, is a chip that is specifically designed for fast arithmetic operations, especially addition and multiplication. These chips are designed with processing speed in mind, and don't typically have the same flexibility as general purpose microprocessors. DSPs also have special address generation units that can manage circular buffers, perform bit-reversed addressing, and simultaneously access multiple memory spaces with little to no overhead.  They also support zero-overhead looping, and a single-cycle multiply-accumulate instruction.  They are not typically more powerful than general purpose microprocessors, but can perform signal processing tasks using far less power (as in watts).
 * Embedded Controller:Embedded controllers, or "microcontrollers" are microprocessors with additional hardware integrated into a single chip. Many microcontrollers have RAM, ROM, A/D and D/A converters, interrupt controllers, timers, and even oscillators built into the chip itself. These controllers are designed to be used in situations where a whole computer system isn't available, and only a small amount of simple processing needs to be performed.
 * Programmable State Machines:The most simplistic of processors, programmable state machines are a minimalist microprocessor that is designed for very small and simple operations. PSMs typically have very small amount of program ROM available, limited scratch-pad RAM, and they are also typically limited in the type and number of instructions that they can perform. PSMs can either be used stand-alone, or (more frequently) they are embedded directly into the design of a larger chip.

 * Graphics Processing Units:Computer graphics are so complicated that functions to process the visuals of video and game applications have been offloaded to a special type of processor known as a GPU. GPUs typically require specialized hardware to implement matrix multiplications and vector arithmetic. GPUs are typically also highly parallelized, performing shading calculations on multiple pixels and surfaces simultaneously.

Types of Use
Microcontrollers and Microprocessors are used for a number of different types of applications. People may be the most familiar with the desktop PC, but the fact is that desktop PCs make up only a small fraction of all microprocessors in use today. We will list here some of the basic uses for microprocessors:

$$\mbox{Clock Time} = \frac{1}{\mbox{Clock Rate}}$$
 * Signal Processing:Signal processing is an area that demands high performance from microcontroller chips to perform complex mathematical tasks. Signal processing systems typically need to have low latency, and are very deadline driven. An example of a signal processing application is the decoding of digital television and radio signals.
 * Real Time Applications:Some tasks need to be performed so quickly that even the slightest delay or inefficiency can be detrimental. These applications are known as "real time systems", and timing is of the utmost importance. An example of a real-time system is the anti-lock braking system (ABS) controller in modern automobiles.
 * Throughput and Routing:Throughput and routing is the use of a processor where data is moved from one particular input to an output, without necessarily requiring any processing. An example is an internet router, that reads in data packets and sends them out on a different port.
 * Sensor monitoring:Many processors, especially small embedded processors are used to monitor sensors. The microprocessor will either digitize and filter the sensor signals, or it will read the signals and produce status outputs (the sensor is good, the sensor is bad). An example of a sensor monitoring processor is the processor inside an antilock brake system: This processor reads the brake sensor to determine when the brakes have locked up, and then outputs a control signal to activate the rest of the system.
 * General Computing:A general purpose processor is like the kind of processor that is typically found inside a desktop PC. Names such as Intel and AMD are typically associated with this type of processor, and this is also the kind of processor that the public is most familiar with.
 * Graphics:Processing of digital graphics is an area where specialized processor units are frequently employed. With the advent of digital television, graphics processors are becoming more common. Graphics processors need to be able to perform multiple simultaneous operations. In digital video, for instance, a million pixels or more will need to be processed for every single frame, and a particular signal may have 60 frames per second! To the benefit of graphics processors, the color value of a pixel is typically not dependent on the values of surrounding pixels, and therefore many pixels can typically be computed in parallel.

Abstraction Layers
Computer systems are developed in layers known as layers of abstraction. Layers of abstraction allow people to develop computer components (hardware and software) without having to worry about the internal design of the other layers in the system. At the highest level are the user-interface programs that people use on their computers. At the lowest level are the transistor layouts of the individual computer components. Some of the layers in a computer system are (listed from highest to lowest):
 * 1) Application
 * 2) Operating System
 * 3) Firmware
 * 4) Instruction Set Architecture
 * 5) Microprocessor Control Logic
 * 6) Physical Circuit Layout

This book will be mostly concerned with the Instruction Set Architecture (ISA), and the Microprocessor Control Logic but we will also describe the Operating System (OS) in brief. Topics above these are typically the realm of computer programmers. The bottom layer, the Physical Circuit Layout is the job of hardware and VLSI engineers.

Operating System
Operating System is a program which acts as an interface between the system user and the computer hardware and controls the execution of application programs. It is the program running at all times on the computer, usually called the Kernel.

ISA
The Instruction Set Architecture is a long name for the assembly language of a particular machine, and the associated machine code for that assembly language. We will discuss this below.

Assembly Language
An assembly language is a small language that contains a short word or "mnemonic" for each individual command that a microcontroller can follow. Each command gets a single mnemonic, and each mnemonic corresponds to a single machine command. Assembly language gets converted (by a program called an "assembler") into the binary machine code. The machine code is specific to each different type of machine.

Common ISAs
Some of the most common ISAs, listed in order of popularity (most popular first) are:

 * ARM
 * IA-32 (Intel x86)
 * MIPS
 * Motorola 68K
 * PowerPC
 * Hitachi SH
 * SPARC
 * RISC-V

Moore's Law
A common law that governs the world of microprocessors is Moore's Law. Moore's Law, originally by Dr. Carver Mead at Caltech, and summarized famously by Intel Founder Gordon Moore. Moore's Law states that the number of transistors on a single chip at the same price will double every 18 to 24 months. This law has held without fail since it was originally stated in 1965. Current microprocessor chips contain millions of transistors and the number is growing rapidly. Here is Moore's summarization of the law from Electronics Magazine in 1965:

"The complexity for minimum component costs has increased at a rate of roughly a factor of two per year...Certainly over the short term this rate can be expected to continue, if not to increase. Over the longer term, the rate of increase is a bit more uncertain, although there is no reason to believe it will not remain nearly constant for at least 10 years. That means by 1975, the number of components per integrated circuit for minimum cost will be 65,000. I believe that such a large circuit can be built on a single wafer."

- Gordon Moore

Moore's Law has been used incorrectly to calculate the speed of an integrated circuit, or even to calculate its power consumption, but neither of these interpretations are true. Also, Moore's law is talking about the number of transistors on a chip for a "minimum component cost", which means that the number of transistors on a chip, for the same price, will double. This goes to show that chips for less price can have fewer transistors, and that chips at a higher price can have more transistors. On an economic note, a consequence of Moore's Law is that companies need to continue to innovate and integrate more transistors onto a single chip, without being able to increase prices.

Moore's Law does not require that the speed of the chip increase along with the number of transistors on the chip. However, the two measurements are typically related. Some points to keep in mind about transistors and Moore's Law are:
 * 1) Smaller Transistors typically switch faster than larger transistors.
 * 2) To get more transistors on a single chip, the chip needs to be made larger, or the transistors need to be made smaller. Typically, the transistors get smaller.
 * 3) Transistors tend to leak electrical current as they get smaller. This means that smaller transistors require more power to operate, and they generate more heat.
 * 4) Transistors tend to generate heat as a function of frequencies. Higher clock rates tend to generate more heat.

Moore's law is occasionally misinterpreted to mean that the speed of processors, in hertz will double every 18 months. This is not strictly true, although the speed of processors does tend to increase as transistors are made smaller and more compact. With the advent of multi-core processors, some people have used Moore's law to mean that processor throughput increases with time, which is not strictly the case either (although it is a likely side effect of Moore's law).

Clock Rates
Microprocessors are typically discussed in terms of their clock speed. The clock speed is measured in hertz (or megahertz, or gigahertz). A hertz is a "cycle per second". Each cycle, a microprocessor will perform certain tasks, although the amount of work performed in a single cycle will be different for different types of processors. The amount of work that a processor can complete in a single cycle is measured in "instructions per cycle". For some systems, such as MIPS, there is 1 instruction per cycle. For other systems, such as modern x86 chips, there are typically very many instructions per cycle. The clock rate is equated as such:

 * $$\mbox{Clock Time} = \frac{1}{\mbox{Clock Rate}}$$

This means that the amount of time for a cycle is inversely proportional to the clock rate. A computer with a 1MHz clock rate will have a clock time of 1 microsecond. A modern desktop computer with a 3.2 GHz processor will have a clock time of approximately 3× 10-10 seconds, or 300 picoseconds. 300 picoseconds is an incredibly small amount of time, and there is a lot that needs to happen inside the processor in each clock cycle.

Basic Elements of a Computer
There are a few basic elements that are common to all computers. These elements are:

 * CPU
 * Memory
 * Input Devices
 * Output Devices

Depending on the particular computer architecture, these elements may be available in various sizes, and they may be accompanied by additional elements.

title: Microprocessor Design/Microprocessors


text:
Microprocessor Design/Computer Architecture

Von Neumann Architecture
Early on in the days of computer science, computer programs were hard-wired, only using memory to store data. Reprogramming computers involved changing hardware switches manually, taking ridiculous amounts of time and having a high potential for coding errors. As a workaround to these problems, mathematician and computer scientist John von Neumann proposed what is now known as the von Neumann architecture, which stores programs in memory, thereby avoiding the need to hard-wire them.

Microprocessor Execution
In a von Neumann architecture, a circuit called a microprocessor is used to process program instructions and execute them. To execute a program, the microprocessor first fetches a programs' instructions from memory and the data necessary to run them. Then, the microprocessor decodes and separates the instructions and data and activates the necessary components and pathways needed to run the program. Finally, the microprocessor executes the program, running through the instructions, manipulating the data, and storing the results.

Control Units and Datapaths
This three-step process of fetching, decoding, and executing is typically implemented with two hardware components: a control unit and a datapath. If data is thought of as water, then the datapath acts as a canal with many branches, and the control unit acts as a series of locks. The control unit reads instructions fetched from memory and uses them to direct where data flows in the datapath. Along the way, different branches of the datapath will contain different mechanisms for modifying and transforming the data flowing through it. These mechanisms are termed Arithmetic Logic Units (ALUs) (discussed in more depth later on), and they perform arithmetic operations (such as addition, subtraction, shifting, and inverting) and logic operations (such as AND and OR) on data flowing through the datapath.

A more nuanced discussion of control units and datapaths will be had in a later section, conveniently titled ../Control and Datapath/.

Harvard Architecture
In a Harvard Architecture machine, the computer system's memory is separated into two discrete parts: data and instructions. In a pure Harvard system, the two different memories occupy separate memory modules, and instructions can only be executed from the instruction memory.

Many DSPs are modified Harvard architectures, designed to simultaneously access three distinct memory areas: the program instructions, the signal data samples, and the filter coefficients (often called the P, X, and Y memories).

In theory, such three-way Harvard architectures can be three times as fast as a Von Neumann architecture that is forced to read the instruction, the data sample, and the filter coefficient, one at a time.

Modern Computers
Modern desktop computers, especially computers based on the Intel x86 ISA are not Harvard computers, although the newer variants have features that are "Harvard-Like". All information, program instructions, and data are stored in the same RAM areas. However, a modern feature called "paging" allows the physical memory to be segmented into large blocks of memory called "pages". Each page of memory can either be instructions or data, but not both.

Modern embedded computers, however, are typically based on a Harvard architecture. Instructions are stored in a different addressable memory block than the data is, and there is no way for the microprocessor to interchange data and instructions.

RISC and CISC and DSP
Historically, the first type of ISA (Instruction Set Architecture) was the complex instruction set computers (CISC), and the second type was the reduced instruction set computers (RISC). It is a common misunderstanding that RISC systems typically have a small ISA (fewer instructions) but make up for it with faster hardware. RISC system actually have "reduced instructions", in the sense that each instruction does so little that it takes very little time to execute it. It is a common misunderstanding that CISC systems have more instructions, but typically pay a steep performance penalty for the added versatility. CISC systems actually have "complex instructions", in the sense that at least one instruction takes a long time to execute -- for example, the "double indirect" addressing mode inherently requires two memory cycles to execute, and a few CPUs have a "string copy" instruction that may require hundreds of memory cycles to execute. MIPS and SPARC are examples of RISC computers. Intel x86 is an example of a CISC computer.

Some people group stack machines with the RISC machines; others group stack machines with the CISC machines; some people, describe stack machines as neither RISC nor CISC.

Other ISA types include DSPs, stack machines, VLIW machines, MISC machines, TTA architectures, massively parallel processor arrays, etc.

We will discuss these terms and concepts in more detail later.

Microprocessor Components
Some of the common components of a microprocessor are:

 * Control Unit
 * I/O Units
 * Arithmetic Logic Unit (ALU)
 * Registers
 * Cache

A brief introduction to these components is placed below.

Control processer Unit
The control processer unit, as described above, reads the instructions, and generates the necessary digital signals to operate the other components. An instruction to add two numbers together would cause the Control Unit to activate the addition module, for instance.

I/O Units
The processor needs to be able to communicate with the rest of the computer system. This communication occurs through the I/O ports. The I/O ports will interface with the system memory (RAM), and also the other peripherals of a computer.

ALU
The Arithmetic Logic Unit, or ALU is the part of the microprocessor that performs arithmetic operations. ALUs can typically add, subtract, divide, multiply, and perform the logical operations of two numbers (and, or, nor, not, etc).

ALU will be discussed in far more detail in a later chapter, ../ALU/.

Registers
There are different kinds of registers. Hopefully it will be obvious which kind of register we are talking about from the context.

The most general meaning is a "hardware register": anything that can be used to store bits of information, in a way that all the bits of the register can be written to or read out simultaneously. Since registers outside of a CPU are also outside the scope of the book, this book will only discuss processor registers, which are hardware registers that happen to be inside a CPU. But usually we will refer to a more specific kind of register.

Registers are mentioned in far more detail in a later chapter, ../Register File/.

programmer-visible registers
The programmer-visible registers, also called the user-accessible registers, also called the architectural registers, often simply called "the registers", are the registers that are directly encoded as part of at least one instruction in the instruction set.

The registers are the fastest accessible memory locations, and because they are so fast, there are typically very few of them. In most processors, there are fewer than 32 registers. The size of the registers defines the size of the computer. For instance, a "32 bit computer" has registers that are 32 bits long. The length of a register is known as the word length of the computer.

There are several factors limiting the number of registers, including:

 * It is very convenient for a new CPU to be software-compatible with an old CPU. This requires the new chip to have exactly the same number of programmer-visible registers as the old chip.
 * Doubling the number general-purpose registers requires adding another bit to each instruction that selects a particular register. Each 3-operand instruction (that specify 2 source operands and a destination operand) would expand by 3 bits. Modern chip manufacturing processes could put a million registers on a chip; that would make each and every 3-operand instruction require 60 bits just to select the registers, not counting the bits required to specify what to do with those operands.
 * Adding more registers adds more wires to the critical path, adding capacitance, which reduces the maximum clock speed of the CPU.
 * Historically, CPUs were designed with few registers, because each additional register increased the cost of the CPU significantly. But now that modern chip manufacturing can put tens of millions of bits of storage on a single commodity CPU chip, this is less of an issue.

Microprocessors typically contain a large number of registers, but only a small number of them are accessible by the programmer. The registers that can be used by the programmer to store arbitrary data, as needed, are called general purpose registers. Registers that cannot be accessed by the programmer directly are known as reserved registers.

Some computers have highly specialized registers -- memory addresses always came from the program counter or "the" index register or "the" stack pointer; one ALU input was always hooked to data coming from memory, the other ALU input was always hooked to "the" accumulator; etc.

Other computers have more general-purpose registers -- any instruction that access memory can use any address register as a index register or as a stack pointer; any instruction that uses the ALU can use any data register.

Other computers have completely general-purpose registers -- any register can be used as data or an address in any instruction, without restriction.

microarchitectural registers
Besides the programmer-visible registers, all CPUs have other registers that are not programmer-visible, called "microarchitectural registers" or "physical registers".

These registers include:
 * memory address register
 * memory data register
 * instruction register
 * microinstruction register
 * microprogram counter
 * pipeline registers

 * extra physical registers to support register renaming

 * the prefetch input queue
 * writable control stores (We will discuss the control store in the Microprocessor Design/Control Unit and Microprocessor Design/Microcode)
 * Some people consider on-chip cache to be part of the microarchitectural registers; others consider it "outside" the CPU.

There are a wide variety of ways to implement any one instruction set. The vast majority of these microarchitectural registers are technically not "necessary". A designer could choose to design a CPU that had almost no physical registers other than the programmer-visible registers. However, many designers choose to design a CPU with lots of physical registers, using them in ways that make the CPU execute the same given instruction set much faster than a CPU that lacks those registers.

Cache
Most CPUs manufactured do not have any cache.

Cache is memory that is located on the chip, but that is not considered registers. The cache is used because reading external memory is very slow (compared to the speed of the processor), and reading a local cache is much faster. In modern processors, the cache can take up as much as 50% or more of the total area of the chip. The following table shows the relationship between different types of memory:

Cache typically comes in 2 or 3 "levels", depending on the chip. Level 1 (L1) cache is smaller and faster than Level 2 (L2) cache, which is larger and slower. Some chips have Level 3 (L3) cache as well, which is larger still than the L2 cache (although L3 cache is still much faster than external RAM).

We discuss cache in far more detail in a later chapter, ../Cache/.

Endian
Different computers order their multi-byte data words (i.e., 16-, 32-, or 64-bit words) in different ways in RAM. Each individual byte in a multi-byte word is still separately addressable. Some computers order their data with the most significant byte of a word in the lowest address, while others order their data with the most significant byte of a word in the highest address. There is logic behind both approaches, and this was formerly a topic of heated debate.

This distinction is known as endianness. Computers that order data with the least significant byte in the lowest address are known as "Little Endian", and computers that order the data with the most significant byte in the lowest address are known as "Big Endian". It is easier for a human (typically a programmer) to view multi-word data dumped to a screen one byte at a time if it is ordered as Big Endian. However it makes more sense to others to store the LS data at the LS address.

When using a computer this distinction is typically transparent; that is that the user cannot tell the difference between computers that use the different formats. However, difficulty arises when different types of computers attempt to communicate with one another over a network.

With a big-endian 68K sort of machine, address increases > -- > data  : 74 65 73 74 00 00 00 05 is the string "test" followed by the 32-bit integer 5. The little-endian x86 sort of machine would interpret the last part as the integer 0x0500_0000.

When communicating over a network composed of both big-endian and little-endian machines, the network hardware (should) apply the Address Invariance principle, to avoid scrambling text (avoiding the NUXI problem). High-level software (should) format packets of data to be transmitted over the network in Network Byte Order. High-level software (should) be written as "endian clean" -- always reading and writing 16 bit integers as whole 16 bit integers, 32 bit integers as whole 32 bit integers, etc. -- so no changes are needed to re-compile it for big-endian or little-endian machines. Software that is not "endian clean" -- software that writes integers, but then reads them out as 8 bit octets or integers of some other length -- usually fails when re-compiled for another computer.

A few computers -- including nearly all DSPs -- are "neither-endian". They always read and write complete aligned words, and don't have any hardware for dealing with individual bytes. Systems build on top of such computers often *do* have a particular endianness -- but that endianness is written into the software, and can be switched by re-compiling for the opposite endianness.

Stack
A stack is a block of memory that is used as a scratchpad area. The stack is a sequential set of memory locations that is set to act like a LIFO (last in, first out) buffer. Data is added to the top of the stack in a "push" operation, and the top data item is removed from the stack during a "pop" operation. Most computer architectures include at least a register that is usually reserved for the stack pointer.

Some microprocessors include a small hardware stack built into the CPU, independent from the rest of the RAM.

Some people claim that a processor must have a hardware stack in order to run C programs.

Most computer architectures have hardware support for a recursive "call" instruction in their ../Assembly Language/. Some architectures (such as the ARM, the Freescale RS08, etc.) implement "call" like this: Some architectures (such as the 6502, the x86, etc.) implement "call" like this: A few architectures (such as the PIC16, the RISC I processor, the Novix NC4016, many LISP machines, etc.) implement "call" like this:
 * the "call" instruction pushes a return address into a link register and jumps to the subroutine. A separate instruction near the beginning of the subroutine pushes the contents of the link register to a stack in main memory, to free up the link register so that subroutine can then recursively call other subroutines.
 * the "call" instruction pushes a return address onto the stack in main memory and jumps to the subroutine.
 * The "call" instruction pushes a return address into a dedicated return stack, separate from main memory, and jumps to the subroutine.