text:
User talk:JWSchmidt

Wikiversity Course
You gave me a bunch of info on wikiversity, so I thought you'd be interested in this:

School of Mathematics:Calculus

If you could advertise somehow, that would be nice. Fephisto 04:10, 9 July 2006 (UTC)

In response to your reply on my board. To be honest, I don't know what "A Practical Approach" was doing there (I got rid of it now), I had actually pirated the page from the existing "Calculus Course" details that had nothing going on. I will, however, be distinguishing from those who want to know Calculus fully and formally (a train of thought like Partitions -> Riemann Darbouex Sums -> Upper and Lower Sums -> Formal integrals for example, although they'd have to go through some set theory and it'd be a hard ride) and those who want to know Calculus intuitively (more or less, an integral is the area underneath a curve, for example).

What are you getting at with the modules though? Are you looking to get Calculus with some more practical examples, or are you suggesting some other sort of synthesis action? Fephisto 00:36, 10 July 2006 (UTC)

Yeah, that's some highly probable synthesis action, I really doubt that many students are going to want to study in-depth set-theoretical Calculus, so the intuitive examples you're looking for will probably pop up in my course sooner or later, and I'll try to let you know when they do. However, I still need students, 8/. Fephisto 03:39, 11 July 2006 (UTC)

I've got one really dedicated student so far, but unfortunately for you he opted for in-depth set theoretical Calculus. If you want to check for material, check sometime after August 21 (or check until August 21, whatever fits your fancy), that's when I'm ending class. However, I really doubt you'll get much material worth in a week. Fephisto 06:19, 10 August 2006 (UTC)

The course has already ended, there was a whopping one person (technically two people) that participated. If you're interested in the format or results check it out: School of Mathematics:Calculus.Fephisto 23:51, 19 August 2006 (UTC)

Image use
Hi. I would like to use under the CC-By-SA-2 licence. I will use it on my site. Thanks, answer to my talk page at en.wikipedia. It's a great pic. Www.wikinerds.org 02:14, 24 Feb 2005 (UTC)

 * "You must attribute the work in the manner specified by the author or licensor." - An HTML link back to the source of the image where it says JWSchmidt (JWSurf, John Schmidt) is fine. --JWSurf 16:46, 20 Jun 2005 (UTC)

Wiki theory as subsets of epistemology and sociology
Hi, I see you've done some excellent work on the tentative first steps of providing a theoretical explanation of the [google.com/search?q=Wiki | success of Wiki] in general and [alexa.com/wikipedia.org | Wikimedia projects] in particular. I have quite a few ideas that I believe will revolutionise the world, and they will do this by proving ambitious statements backed by a comprehensive theory of Wiki that is universally agreeable. I know my ideas are revolutionary (subject to some major or minor tweaking), but I need people like you to I am very good at understanding things, but as a result, I am incredibly poor at explaining them to people who are less lucky fortunate in their comprehension abilities than I. You appear to have the talent of exposition. Together, we will change the world. Please come to my team builing area and associate your interest with some or all of my solution sets. Nsh 17:17, 11 Apr 2005 (UTC)
 * understand them, and
 * explain them.

 * I did not find much at your page. --JWSurf 16:46, 20 Jun 2005 (UTC)

Wikiversity
Just wanted to reciprocate that nice little golden box :-) Sorry - had forgottten that you wouldn't have got it yourself, as I put my message on your main page, doh! Wikiversity really could blossom into something amazing - it just needs a few initiatives. Read the m:Talk:Wikiversity and Research pages for some people who are interested in the general field - and, as always, if you have an idea/initiative, just get it going and invite as many people as possible to take a look. I will for a start. Cormaggio 16:10, 20 August 2005 (UTC)

 * And thanks again - I replied on my talk page but likewise wanted to say that I really appreciate your input on Talk:Wikiversity:About - it's been really stimulating. We just need to keep this conversation going, and who knows what'll come of it or how soon..? Cormaggio 12:10, 23 August 2005 (UTC)

Replying to what you've left on my discussion board. My basis for checking out the statis was whether there would be anything to stop an unaccredited me to teach an unaccredited class, but hopefully still accurate (I'm pretty confident that I know what the hell I'm doing); and it doesn't look like there is anything from stopping me to do this from what I've read, so I should be able to send out a mailing to the discussion pages of students from the current participation list, get people who want to start this Summer, and go from there, right? Also from what I've read, however, teaching styles vary, and I'd rather perform a tutor-style non-factory method. I know this doesn't match up with learning community, but I should be able to try it, see if it works out, encourage more support for Wikiversity. --Fephisto 17:46, 20 April 2006 (UTC)

Definitely Mathematics, and I will try Calculus I. There won't be a guarentee that what's usually covered in Calc I will all be covered, or even if it will be for the entire semester; but I wouldn't mind helping with that. --Fephisto 21:31, 25 April 2006 (UTC)

I remember working extensively on the 3-D Calculus section, but so long as it has a formal definition of limit it's probably O.K. (that and even if it wasn't there I'd probably add it in just to fit with the class). And I don't think I'd be forcing students to go look up a Calculus reference through Google anyways; but why do you ask? --Fephisto 00:42, 26 April 2006 (UTC)

Consciousness studies
I moved your interesting item on Ned Block's ideas to the module on nineteenth and twentieth century philosophy and put a notice pointing to it in the section on phenomenal and access consciousness. See http://en.wikibooks.org/wiki/Consciousness_studies:_The_conflict2#Phenomenal_consciousness_and_access_consciousness RobinH 09:42, 25 August 2005 (UTC)

Request for Adminship
JW, I've requested adminship in Wikibooks to help out more with the Wikiversity and other Wikibooks projects. Any support you could provide would be greatly appreciated. Thanks.--Mfinney 10:20, 1 March 2006 (UTC)

Looking to Help out
John, Looking to help out with the wikiversity, think it is a great idea. Am fairly new to Wiki sites as far as contributing to them, but am eager to begin helping. I have degrees in Physiological Sciences and Biomedical Engineering and focused in Immunology. Let me know how I can help. Thanks. Ferralangel 20:04, 17 April 2006 (UTC)ferralangel

Policy review
Policy is not the most exciting subject at Wikibooks but we do have some major unresolved issues.

The most important issue, in my opinion, is Dispute resolution which starts by declaring that:

"Currently there is no official organized process to resolve disputes between users"

The suggested remedy for this is: Ad hoc administration committee which puts into place the absolute minimum in terms of an enforcement apparatus.

The second most important is No personal attacks where a vote has recommended the policy be enforced but it still languishes as "proposed".

The third policy that is needed and which will prevent edit disputes from getting out of hand is Editing disputes policy.

Other policies that need consideration are at: Policies and guidelines.

Please spare a minute or two to peruse these issues and add a comment and/or a vote. RobinH 12:49, 28 April 2006 (UTC)

Heya! Im new to Wikiversity
Hello there! Im rather new to wikiversity and wanted to drop a line with you. My name is Tyson and I'm looking to help out over in History. Very nice work on your Cell Biology course! I hope you don't mind but I'll probably be using your course as a guide for formatting a course for Ancient Egypt!

Looking forward to working with you on the Wikiversity project!

Sincerely! -- T.Myhres 03:20, 30 June 2006 (UTC)

Wikiversity and Wikimedia
I'm a little confused. Why would it be better for Wikiversity to become a Wikimedia project? Is it like a test webstie right now? It doesn't seem to belong to any particular part of Wikipedia. I guess I'm just new to all this and a tad confused.

"Why would it be better for Wikiversity to become a Wikimedia project?" <-- Wikimedia has a broader goal than Wikipedia: ".....a world in which every single person is given free access to the sum of all human knowledge". Wikipedia is important, but it routinely rejects content that does not belong in an encyclopedia. Right now, Wikiversity is just an idea. The people who run Wikibooks do not want it there. In order to exist, Wikiversity needs its own website domain.....it needs to become a Wikimedia sister project.

RE: I see. Why don't people in Wikibooks want Wikiversity there? I think the two are critically bound together. Wikiversity seems like a place to collect authors to write the texts for Wikibooks... I don't understand why they don't want Wikiversity as part of Wikibooks. However, it would be cool for Wikiversity to become its own website. Thanks for your info! Endless melee 18:06, 15 July 2006 (UTC)

Do you like our Human Physiology wikibook?
About 5 weeks ago I decided that instead of a traditional class, I would have my students create a Human Physiology textbook. I'm proud of the work they have done so far, and hope we can really polish it up in the next few weeks. We would love any input you can give on the book and hope that if you have a talent or interest in a particular chapter that you will give us some feedback or make improvements.

Thanks! Provophys 22:29, 21 August 2006 (UTC)

Noncommercial images
I have marked images like Image:Chromosomes2.jpg for speedy deletion. --Derbeth talk 09:35, 15 September 2006 (UTC)
 * Can you replace text "Permission is granted to copy..." with GFDL template? Use of dedicated template makes some automatic tasks (like searching for images without copyright information) easier.
 * And another thing: are you aware of problems that GFDL license makes when applied to images? If not, consider reading . --Derbeth talk 15:01, 15 September 2006 (UTC)

while you're here...
Hi John,

Would you mind weighing on on Wikibooks:Request for enabling special:import? Wikimedia tech asked for a show of hands :) -- SB_Johnny | talk 23:51, 12 October 2006 (UTC)

Sorry... one more vote please?
One more thing to smooth out the transwiki process... Wikibooks:Request_for_enabling_special:import. We're asking that "Transwiki:" be given namespace status so we can import to it directly. -- SB_Johnny | talk 19:58, 16 October 2006 (UTC)

Unsolved archive
Could you possibly clarify the Unsolved archive page? Your last edit of that page states it to be some sort of a "historical archive". Did this come from Unsolved problems in biology? Why was it put here (without any history). --Swift 18:38, 6 December 2006 (UTC)

 * The following comment moved from User:Swift --Swift 02:30, 8 December 2006 (UTC)
 * The origin of the "Unsolved archive" page is described at the top of the "Unsolved problems in biology" page. --JWSurf 05:05, 7 December 2006 (UTC)

 * Thanks. I had actually found as much out. I also saw your comment in the VfD discussion. Do you resent this being deleted. I think we are generally a reasonable bunch so if you would like to keep the page, please feel free to state why.
 * Wikibookians differ in how prone to deletionism they are. The arguments for deleting are partly un-cluttering the page structure. If you can convince a few people that it would benefit the project to keep the page, the page will most likely stay. --Swift 02:30, 8 December 2006 (UTC)

 * The following comment moved from User:Swift --Swift 04:12, 9 December 2006 (UTC)
 * "Do you resent this being deleted." <-- You are perceptive: I do have some resentments. But I have moved this material to another wiki where exploration of the unknown and the unsolved is more central to the mission. --JWSurf 18:36, 8 December 2006 (UTC)

 * I think you have misunderstood the arguments presented in the VfD discussion. Unsolved archive was not up for deletion out of any Wikibookians distaste have for "exploration of the unknown and the unsolved". Rather, the redundancy, possible confusion and likely violation of the GFDL.
 * Redundancy: As I mentioned in the discussion, this page is already archived in Wikipedia history at .
 * Confusion: Given the redundancy argument above and the existance of related content, this page will potentially confuse readers looking for information about this without providing them any benefits. As you can see from Unsolved problems in biology no-one is asking for this type of content to be deleted. It is largely a cleanup measure.
 * Copyrights: The GFDL states that you cannot create a derived work from a GFDL without citing past contributors. Every time you edit a wiki page copyrighted by GFDL you are creating a derived work. Since the database logs every edit, the edit history serves as a reference to past contributors. Since Unsolved archive was copied to Wikibooks without importing the history, it is currently in violation of the GFDL. This could possibly be fixed (I say possibly because I'm not sure about the legal status of the page's past versions) but it is cumbersome to maintain (but then again, you don't want this maintained ... ).

 * I hope this clarifies a few points. I hope you feel a little better and urge you to state any concerns you may still have. I have the feeling you have had to fight for this content in the past (my perceptive side again) but this is not a battle on that front. I fully support you in adding educational material about unsolved problems and the exploration thereof.
 * One final note: I'd like to ask you not to require your collegues to be perceptive. Even if I was a very perceptive person, I'd feel uncomfortable constantly having to judge insinuated opinions and emotions in an environment where misunderstandings can have very negative consequences. --Swift 04:12, 9 December 2006 (UTC)

 * The following comment moved from User:Swift --Swift 05:50, 10 December 2006 (UTC)
 * "I'd like to ask you not to require your collegues to be perceptive." <-- I agree that it is fruitless to expect wiki colleagues to be perceptive. Far too often irony goes unnoticed. I suppose the wikilawyers will eventually get around to making the use of irony a bannable offense. --JWSurf 04:40, 10 December 2006 (UTC)
 * "Far too often irony goes unnoticed." Exactly, so one can either adjust to the community or risk conflict. Even in the best case misunderstanding scenario where the collegue will do his best and assume good faith it will still take some time to sort the issues out — time and effort that could otherwise go into the project.
 * Irony is a literary device, not a constructive communicationt method. --Swift 05:50, 10 December 2006 (UTC)

Wikibooks Newsletter, Volume 1
(Wikibooks gazette home | Discuss | Bulletin board | Subscription list)

This is a short newsletter that is being distributed to all active wikibookians. You are getting this message because you are recognized as an established contributor to the project. This newsletter will be distributed on a regular basis to help share news, information, and tips. It comes from a bot account, User:The Staff. User:The Staff is currently operated by a team of wikibooks admins, the complete list of which is available on the user page of the bot. If you would like to not receive this newletter anymore, please remove your name from the list at Active wikibookians.

The work you do at Wikibooks is greatly appreciated. However there are plenty of other opportunities for you to get involved and help us to create a thriving Wikibooks community. We are sure that there are things we can do to help you and your understanding of Wikibooks and similarly there are certainly things you could do to help Wikibooks become a better place.

We would like to ask all wikibookians to add the Bulletin Board to your watchlists. The Bulletin Board is a fast and easy way for wikibookians to communicate important news and events to the entire community. If you have important news to share with the community, you can feel free to add your own entry to that page.

If you have general questions or comments about Wikibooks, you are welcome to post a message on The Staff Lounge, a free discussion area. Your input would also be welcomed in the Votes for Deletion and Requests for Adminship discussion pages. These pages are all active discussion areas that help to shape the Wikibooks community as a whole.

Sometimes it is easy to forget that the Wikibooks community is much larger and more diverse then the people who work in a single book, or on a single bookshelf. Hopefully, together we can all make Wikibooks a better place, and a more valuable educational resource.

The Staff 04:16, 19 December 2006 (UTC)

Cell Biology Textbook
Hey, I noticed that you made significant contributions to the Cell Biology textbook. I am working with the Saylor Foundation to develop a similar textbook. If you have the time and interest we would love for you check out our textbook- Saylor.org's Cell Biology- and make some contributions! --Azin (discuss • contribs) 21:22, 31 May 2012 (UTC)

title: User talk:JWSchmidt


text:
User talk:Www.wikinerds.org~enwikibooks

Do not enter your message here because I will never see it. Use email. In the email indicate who you are and where you come from (wikibooks)

username block
Please choose a non-promotional username. You have been blocked indefinitely. – Mike.lifeguard  | talk 17:02, 20 January 2008 (UTC)

Your account will be renamed
Hello,

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

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

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

Sorry for the inconvenience.

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

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

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

title: User talk:Www.wikinerds.org~enwikibooks


text:
Cookbook:Raisin

Raisins are dried grapes.

Raisins are normally a dark brown-purple color, from the original grape color made darker by oxidation.

When light-colored grapes are used and treated with sulfur dioxide, the resulting raisins will be yellow. They may then be called yellow raisins, golden raisins, or sultanas.

Recipes using raisins include

 * raisin oatmeal muffins
 * oatmeal raisin cookies
 * mincemeat tart
 * apple bundt cake
 * rice pudding

title: Cookbook:Raisin


text:
Cookbook:Units of measurement

Recipes from different parts of the world use different units of measurement. This page is a guide to those that are most commonly used in cooking which follow metric units, imperial units, and US customary units.

Metric

 * ml or mL, also milliliter, millilitre, cc (cubic centimeter)
 * l or L, also liter, litre,
 * dl or dL, also deciliter, decilitre

Imperial and US customary

 * teaspoon (also t or tsp.)
 * tablespoon (also T, tbl., tbs., or tbsp.)
 * fluid ounce (also fl oz)
 * gill (about 1/2 cup)
 * cup (also c)
 * pint (also p, pt, or fl pt)
 * quart (also q, qt, or fl qt)
 * gallon (also g or gal)

Metric

 * mg (also milligram or milligramme)
 * g (also gram or gramme)
 * kg (also kilogram or kilogramme)

Imperial and US customary

 * pound (also lb or #)
 * ounce (also oz)

Metric

 * mm (also millimeter or millimetre)
 * cm (also centimeter or centimetre)
 * m (also meter or metre)

Imperial and US customary

 * inch (also in or ")
 * yard

Temperature
See the oven temperature table.

Metric

 * °C (also degree celsius)

Imperial and US customary

 * °F (also degree Farenheit)

Other

 * Gas mark (informal temperature measurement on gas cookers)

Metric Units
Metric units are made up of a base unit and a scale modifier. Each type of measurement has its own base unit. The modifiers are shared between all units. The relevant base units for cooking are:
 * Mass: gram (g)
 * Length: meter (m)
 * Volume: cubic meter (m3)

Commonly used prefix modifiers are:
 * 1/1000 milli (m)
 * 1/100 centi (c)
 * 1/10 deci (d)
 * 100 hecto (h)
 * 1000 kilo (k)

In cooking the old unit Liter (l) is commonly used to measure volume. One liter is (exactly) equal to 0.001 cubic meters, or 1 cubic decimeter, written like: 1 l = 1 dm3. The prefix modifiers can be used with any unit and thus 1 cl (centiliter) is equal to 1/100 of a liter. The unit for volume is derived from the unit for length. Two lengths forms an area, which is length x length and has the derived unit square meter (m2). Three lengths forms the volume metric m3. This has the consequence that a m3 is equal to 1000 dm3, that is 103 = 10x10x10.

Examples relevant for cooking:
 * 1 l = 10 dl = 100 cl = 1000 ml = 1 dm3 = 0.264 US gallons
 * 1 kg = 10 hg = 1000 g = 2.2 pounds
 * 1 cm = 0.39 inches

Some recipes in Wikibooks Cookbook use American measurement units (pounds and ounces, Fahrenheit, fluid ounces and pints, etc.) and some recipes use metric units (grammes and kilograms, Celsius, milliliter, etc.). An attempt to ensure that all Cookbook recipes use metric units (alone or alongside American units) is an ongoing job. A list of recipes which have been confirmed as having metric units can be found here.

Volume

 * American (US) units:
 * 1 T = 3 t = 1/2 fl oz
 * 2 T = 1 fl oz
 * 1 cup = 16 T = 8 fl oz
 * 1 pint = 2 cups = 16 fl oz
 * 1 qt = 2 pints
 * 1 gal = 4 qt

Mass

 * 1 lb = 16 oz

Mass/Volume conversions
Approximate conversions based on water density. These conversions are useful for more than just water. Although other things have different densities, they are good enough for most estimates.
 * 1 fl oz = 1 oz
 * 1 pint = 1 lb
 * 2 cups = 1 lb

Water has a density of exactly 1 g/cm³
 * 1 ml = 1 g
 * 1 L = 1 kg

An American stick of butter is 1/4 lb, and is divided into 8 tablespoons. So, 1 tbsp butter = 1/2 oz butter.

Nigeria
Empty tins of saturated milk are commonly used in Nigeria as a dry measure for foodstuff such as rice, beans and flour. This might cause some confusion when examining recipes from this region. Usually, the recipe will specify "two milk cups of beans" or "two milk tins of rice." Guidelines to convert these figures into more familiar ones are widely available online.

Sweden
Sweden uses the following standard set of volume measures in recipes. (In the picture, from left to right, deciliter, tablespoon, teaspoon and milliliter.) All are metric, with the tablespoon defined as exactly 15 ml and the teaspoon as exactly 5 ml.

 * deciliter (dl) = 100 ml
 * tablespoon ("matsked", msk) = 15 ml
 * teaspoon ("tesked", tsk) = 5 ml
 * milliliter ("kryddmått", krm) = 1 ml

Finland
Finland uses the following abbreviations.
 * tablespoon ("ruokalusikka", rkl) = 15 ml
 * teaspoon ("teelusikka", tl) = 5 ml

title: Cookbook:Units of measurement


text:
Cookbook talk:Spanish Omelet

major change
Note the edit by 82.69.190.150 on 23 Feb 2005. I'm not sure if the recipe got any better or worse, but the method sure did change. This affects skill level, speed, and dirty dishes, along with a minor (?) change in the result.

suggested edit
I think one liter of oil is too much for an omlette. I know that olive oil is good for you but the are limits...

Olive oil
I'm Spanish and I've made a lot of tortillas de patata. I think that a liter of olive oil is too much. 250 ml is enough. And you can reuse the olive oil, since it is used for frying the potatoes.

I aslo suggest another change. Olive oil is the only oil you can use. Otherwise the taste is going to be worse. I know that outside Spain is expensive but is worth it!

title: Cookbook talk:Spanish Omelet


text:
Ukrainian/Words

See also Ukrainian phrasebook on Wikivoyage.

Nouns
Ukrainian nouns are classified as ____ (masculine, feminine, etc.).

Vocabulary: Тато - Tato - dad Мама - Mama - mom Батько - Batko - father Матір - Matir - mother Дід, дідо - Did, dido - grandfather Баба, бабця, бабуся - Baba, babtsya, babusya - grandmother Син - Syn - son Діти, дитина - Dity / dytyna - children / child; Дочка, донька - Dochka, don'ka - daughter Рік, день, тиждень - Rik / den' / tyzhden - year / day / week Небо - Nebo - sky Ліс - Lis - forest Сонце - Sontse - sun Місяць - Misiats - moon, month Річка - Richka - river Міст - Mist - bridge Місто - Misto - city Вулиця - Vulytsya - street

Verbs
Verbs can be conjugated into the past, present, and future tenses of time. They are conjugated based on ____(stem rules).

Infinitives
An infinitive verb has the -ти ("-ti") ending.

The Ukrainian language also utilizes reflexive verbs. -ся is ended at the end of these verbs in their infinitive form, creating a -тися ending.

title: Ukrainian/Words


text:
User talk:Dan-aka-jack/Business ideas

Fantastic! This book seems to be attracting lots of ideas...

...to keep the formatting readable, I think we should use separate sub-pages for the main bodies of each idea... use the front page as a table of contents with a quite bit of blurb to catch peoples' attention. Dan AKA Jack 10:00 24 Feb 2005 GMT

I'm not very good at formating so feel free to modify my ideas.

It might be a smartidea to load the book automatically with enriched text. If a student has a question about the meaning of a word, he can click on that word and a dictionary description pops up

Was I logged in when I posted my ideas?

Transwiki history
The section "GPS map wiki" has been merged from Business ideas-GPS map wiki.

 * 08:13, 1 March 2005 DavidCary (related wiki)
 * 02:44, 19 February 2005 Dan-aka-jack

The section "Web-based SMS service" has been merged from Business ideas-SMS.

 * 18:52, 9 March 2005 220.235.116.43
 * 18:47, 9 March 2005 220.235.116.43
 * 05:30, 21 February 2005 Dan-aka-jack
 * 03:02, 19 February 2005 Dan-aka-jack
 * 02:39, 19 February 2005 Dan-aka-jack

title: User talk:Dan-aka-jack/Business ideas


text:
Talk:Web Development

Check out Section 3.1, it's a nice model page to base the others on. Note the nice amount of coherent content, the correct wiki formatting, a snazzy box at the top and a summary of the information in the section in another box.

Thanks for the contributions thus far, and keep on truckin'! LockeShocke 01:50, 10 Mar 2005 (UTC)

title: Talk:Web Development


text:
C Programming/Stream IO

Introduction
The  header declares a broad assortment of functions that perform input and output to files and devices such as the console. It was one of the earliest headers to appear in the C library. It declares more functions than any other standard header and also requires more explanation because of the complex machinery that underlies the functions.

The device-independent model of input and output has seen dramatic improvement over the years and has received little recognition for its success. FORTRAN II was touted as a machine-independent language in the 1960s, yet it was essentially impossible to move a FORTRAN program between architectures without some change. In FORTRAN II, you named the device you were talking to right in the FORTRAN statement in the middle of your FORTRAN code. So, you said  on a tape-oriented IBM 7090 but   to read a card image on other machines. FORTRAN IV had more generic  and   statements, specifying a logical unit number (LUN) instead of the device name. The era of device-independent I/O had dawned.

Peripheral devices such as printers still had fairly strong notions about what they were asked to do. And then, peripheral interchange utilities were invented to handle bizarre devices. When cathode-ray tubes came onto the scene, each manufacturer of consoles solved problems such as console cursor movement in an independent manner, causing further headaches.

It was into this atmosphere that Unix was born. Ken Thompson and Dennis Ritchie, the developers of Unix, deserve credit for packing any number of bright ideas into the operating system. Their approach to device independence was one of the brightest.

The ANSI C  library is based on the original Unix file I/O primitives but casts a wider net to accommodate the least-common denominator across varied systems.

Streams
Input and output, whether to or from physical devices such as terminals and tape drives, or whether to or from files supported on structured storage devices, are mapped into logical data streams, whose properties are more uniform than their various inputs and outputs. Two forms of mapping are supported: text streams and binary streams.

A text stream consists of one or more lines. A line in a text stream consists of zero or more characters plus a terminating new-line character. (The only exception is that in some implementations the last line of a file does not require a terminating new-line character.) Unix adopted a standard internal format for all text streams. Each line of text is terminated by a new-line character. That's what any program expects when it reads text, and that's what any program produces when it writes text. (This is the most basic convention, and if it doesn't meet the needs of a text-oriented peripheral attached to a Unix machine, then the fix-up occurs out at the edges of the system. Nothing in between needs to change.) The string of characters that go into, or come out of a text stream may have to be modified to conform to specific conventions. This results in a possible difference between the data that go into a text stream and the data that come out. For instance, in some implementations when a space-character precedes a new-line character in the input, the space character gets removed out of the output. In general, when the data only consists of printable characters and control characters like horizontal tab and new-line, the input and output of a text stream are equal.

Compared to a text stream, a binary stream is pretty straight forward. A binary stream is an ordered sequence of characters that can transparently record internal data. Data written to a binary stream shall always equal the data that gets read out under the same implementation. Binary streams, however, may have an implementation-defined number of null characters appended to the end of the stream. There are no further conventions which need to be considered.

Nothing in Unix prevents the program from writing arbitrary 8-bit binary codes to any open file, or reading them back unchanged from an adequate repository. Thus, Unix obliterated the long-standing distinction between text streams and binary streams.

Standard Streams
When a C program starts its execution the program automatically opens three standard streams named ,, and. These are attached for every C program.

The first standard stream is used for input buffering and the other two are used for output. These streams are sequences of bytes.

Consider the following program:

By default  points to the keyboard and   and   point to the screen. It is possible under Unix and may be possible under other operating systems to redirect input from or output to a file or both.

Pointers to streams
The  header contains a definition for a type   (usually via a  ) which is capable of processing all the information needed to exercise control over a stream, including its file position indicator, a pointer to the associated buffer (if any), an error indicator that records whether a read/write error has occurred, and an end-of-file indicator that records whether the end of the file has been reached.

It is considered bad form to access the contents of  directly unless the programmer is writing an implementation of   and its contents. Better access to the contents of  is provided via the functions in. It can be said that the  type is an early example of object-oriented programming.

Opening and Closing Files
To open and close files, the  library has three functions: ,  , and.

Opening Files
and  opens the file whose name is in the string pointed to by   and associates a stream with it. Both return a pointer to the object controlling the stream, or, if the open operation fails, a null pointer. The error and end-of-file indicators are cleared, and if the open operation fails error is set. differs from  in that the file pointed to by   is closed first when already open and any close errors are ignored.

for both functions points to a string beginning with one of the following sequences (additional characters may follow the sequences):

r          open a text file for reading w          truncate to zero length or create a text file for writing a          append; open or create text file for writing at end-of-file rb         open binary file for reading wb         truncate to zero length or create a binary file for writing ab         append; open or create binary file for writing at end-of-file r+         open text file for update (reading and writing) w+         truncate to zero length or create a text file for update a+         append; open or create text file for update r+b or rb+ open binary file for update (reading and writing) w+b or wb+ truncate to zero length or create a binary file for update a+b or ab+ append; open or create binary file for update

Opening a file with read mode (' ' as the first character in the  argument) fails if the file does not exist or cannot be read.

Opening a file with append mode (' ' as the first character in the  argument) causes all subsequent writes to the file to be forced to the then-current end-of-file, regardless of intervening calls to the   function. In some implementations, opening a binary file with append mode (' ' as the second or third character in the above list of  arguments) may initially position the file position indicator for the stream beyond the last data written, because of null character padding.

When a file is opened with update mode (' ' as the second or third character in the above list of  argument values), both input and output may be performed on the associated stream. However, output may not be directly followed by input without an intervening call to the  function or to a file positioning function (,  , or  ), and input may not be directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file. Opening (or creating) a text file with update mode may instead open (or create) a binary stream in some implementations.

When opened, a stream is fully buffered if and only if it can be determined not to refer to an interactive device.

Closing Files
The  function causes the stream pointed to by   to be flushed and the associated file to be closed. Any unwritten buffered data for the stream are delivered to the host environment to be written to the file; any unread buffered data are discarded. The stream is disassociated from the file. If the associated buffer was automatically allocated, it is deallocated. The function returns zero if the stream was successfully closed or  if any errors were detected.

The function
If  points to an output stream or an update stream in which the most recent operation was not input, the   function causes any unwritten data for that stream to be deferred to the host environment to be written to the file. The behavior of fflush is undefined for input stream.

If  is a null pointer, the   function performs this flushing action on all streams for which the behavior is defined above.

The  functions returns   if a write error occurs, otherwise zero.

The reason for having a  function is because streams in C can have buffered input/output; that is, functions that write to a file actually write to a buffer inside the   structure. If the buffer is filled to capacity, the write functions will call  to actually "write" the data that is in the buffer to the file. Because  is only called every once in a while, calls to the operating system to do a raw write are minimized.

The function
Except that it returns no value, the  function is equivalent to the   function invoked with the values   for   and   for , or (if   is a null pointer) with the value   for.

The function
The  function may be used only after the stream pointed to by   has been associated with an open file and before any other operation is performed on the stream. The argument  determines how the stream will be buffered, as follows:   causes input/output to be fully buffered;   causes input/output to be line buffered;   causes input/output to be unbuffered. If  is not a null pointer, the array it points to may be used instead of a buffer associated by the   function. (The buffer must have a lifetime at least as great as the open stream, so the stream should be closed before a buffer that has automatic storage duration is deallocated upon block exit.) The argument  specifies the size of the array. The contents of the array at any time are indeterminate.

The  function returns zero on success, or nonzero if an invalid value is given for   or if the request cannot be honored.

Functions that Modify the File Position Indicator
The  library has five functions that affect the file position indicator besides those that do reading or writing: ,  ,  ,  , and.

The  and   functions are older than   and.

The and   functions
The  function stores the current value of the file position indicator for the stream pointed to by   in the object pointed to by. The value stored contains unspecified information usable by the  function for repositioning the stream to its position at the time of the call to the   function.

If successful, the  function returns zero; on failure, the   function returns nonzero and stores an implementation-defined positive value in.

The  function sets the file position indicator for the stream pointed to by   according to the value of the object pointed to by , which shall be a value obtained from an earlier call to the   function on the same stream.

A successful call to the  function clears the end-of-file indicator for the stream and undoes any effects of the   function on the same stream. After an  call, the next operation on an update stream may be either input or output.

If successful, the  function returns zero; on failure, the   function returns nonzero and stores an implementation-defined positive value in.

The and   functions
The  function sets the file position indicator for the stream pointed to by.

For a binary stream, the new position, measured in characters from the beginning of the file, is obtained by adding  to the position specified by. Three macros in  called ,  , and   expand to unique values. If the position specified by  is , the specified position is the beginning of the file; if   is  , the specified position is the end of the file; and if   is  , the specified position is the current file position. A binary stream need not meaningfully support  calls with a   value of.

For a text stream, either  shall be zero, or   shall be a value returned by an earlier call to the   function on the same stream and   shall be.

The  function returns nonzero only for a request that cannot be satisfied.

The  function obtains the current value of the file position indicator for the stream pointed to by. For a binary stream, the value is the number of characters from the beginning of the file; for a text stream, its file position indicator contains unspecified information, usable by the  function for returning the file position indicator for the stream to its position at the time of the   call; the difference between two such return values is not necessarily a meaningful measure of the number of characters written or read.

If successful, the  function returns the current value of the file position indicator for the stream. On failure, the  function returns   and stores an implementation-defined positive value in.

The function
The  function sets the file position indicator for the stream pointed to by   to the beginning of the file. It is equivalent to

(void)fseek(stream, 0L, SEEK_SET)

except that the error indicator for the stream is also cleared.

The function
The  function clears the end-of-file and error indicators for the stream pointed to by.

The function
The  function tests the end-of-file indicator for the stream pointed to by   and returns nonzero if and only if the end-of-file indicator is set for , otherwise it returns zero.

The function
The  function tests the error indicator for the stream pointed to by   and returns nonzero if and only if the error indicator is set for , otherwise it returns zero.

The function
The  function maps the error number in the integer expression   to an error message. It writes a sequence of characters to the standard error stream thus: first, if  is not a null pointer and the character pointed to by   is not the null character, the string pointed to by   followed by a colon (:) and a space; then an appropriate error message string followed by a new-line character. The contents of the error message are the same as those returned by the  function with the argument , which are implementation-defined.

Other Operations on Files
The  library has a variety of functions that do some operation on files besides reading and writing.

The function
The  function causes the file whose name is the string pointed to by   to be no longer accessible by that name. A subsequent attempt to open that file using that name will fail, unless it is created anew. If the file is open, the behavior of the  function is implementation-defined.

The  function returns zero if the operation succeeds, nonzero if it fails.

The function
The  function causes the file whose name is the string pointed to by   to be henceforth known by the name given by the string pointed to by. The file named  is no longer accessible by that name. If a file named by the string pointed to by  exists prior to the call to the   function, the behavior is implementation-defined.

The  function returns zero if the operation succeeds, nonzero if it fails, in which case if the file existed previously it is still known by its original name.

The function
The  function creates a temporary binary file that will automatically be removed when it is closed or at program termination. If the program terminates abnormally, whether an open temporary file is removed is implementation-defined. The file is opened for update with  mode.

The  function returns a pointer to the stream of the file that it created. If the file cannot be created, the  function returns a null pointer.

The function
The  function generates a string that is a valid file name and that is not the name of an existing file.

The  function generates a different string each time it is called, up to   times. ( is a macro defined in  .) If it is called more than   times, the behavior is implementation-defined.

The implementation shall behave as if no library function calls the  function.

If the argument is a null pointer, the  function leaves its result in an internal static object and returns a pointer to that object. Subsequent calls to the  function may modify the same object. If the argument is not a null pointer, it is assumed to point to an array of at least  characters (  is another macro in  ); the   function writes its result in that array and returns the argument as its value.

The value of the macro  must be at least 25.

The function
The  function obtains the next character (if present) as an   converted to an , from the stream pointed to by  , and advances the associated file position indicator for the stream (if defined).

The  function returns the next character from the stream pointed to by. If the stream is at end-of-file or a read error occurs,  returns   (  is a negative value defined in , usually  ). The routines  and   must be used to distinguish between end-of-file and error. If an error occurs, the global variable  is set to indicate the error.

The function
The  function reads at most one less than the number of characters specified by   from the stream pointed to by   into the array pointed to by. No additional characters are read after a new-line character (which is retained) or after end-of-file. A null character is written immediately after the last character read into the array.

The  function returns   if successful. If end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.

Warning: Different operating systems may use different character sequences to represent the end-of-line sequence. For example, some filesystems use the terminator  in text files;   may read those lines, removing the   but keeping the   as the last character of. This expurious character should be removed in the string  before the string is used for anything (unless the programmer doesn't care about it). Unixes typically use  as its end-of-line sequence, MS-DOS and Windows uses , and Mac OSes used   before OS X. Many compilers on operating systems other than Unix or Linux map newline sequences to   on input for text files; check your compiler's documentation to discover what it does in this situation.

The function
The  function is equivalent to , except that it may be implemented as a macro. If it is implemented as a macro, the  argument may be evaluated more than once, so the argument should never be an expression with side effects (i.e. have an assignment, increment, or decrement operators, or be a function call).

The  function returns the next character from the input stream pointed to by. If the stream is at end-of-file, the end-of-file indicator for the stream is set and  returns   (  is a negative value defined in , usually  ). If a read error occurs, the error indicator for the stream is set and  returns.

The function
The  function is equivalent to   with the argument.

The  function returns the next character from the input stream pointed to by. If  is at end-of-file, the end-of-file indicator for   is set and   returns   (  is a negative value defined in , usually  ). If a read error occurs, the error indicator for  is set and   returns.

The function
The  function reads characters from the input stream pointed to by   into the array pointed to by   until an end-of-file is encountered or a new-line character is read. Any new-line character is discarded, and a null character is written immediately after the last character read into the array.

The  function returns   if successful. If the end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.

This function and description is only included here for completeness. Most C programmers nowadays shy away from using, as there is no way for the function to know how big the buffer is that the programmer wants to read into.

Commandment #5 of Henry Spencer's The Ten Commandments for C Programmers (Annotated Edition) reads

"Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest foo someone someday shall type supercalifragilisticexpialidocious."

It mentions  in the annotation:

"As demonstrated by the deeds of the Great Worm, a consequence of this commandment is that robust production software should never make use of, for it is truly a tool of the Devil. Thy interfaces should always inform thy servants of the bounds of thy arrays, and servants who spurn such advice or quietly fail to follow it should be dispatched forthwith to the Land Of Rm, where they can do no further harm to thee."

Before the 2018 version of the C standard, the  function was deprecated. It is hoped that programmers would use the  function instead.

The function
The  function pushes the character specified by   (converted to an  ) back onto the input stream pointed to by stream. The pushed-back characters will be returned by subsequent reads on that stream in the reverse order of their pushing. A successful intervening call (with the stream pointed to by ) to a file-positioning function (,  , or  ) discards any pushed-back characters for the stream. The external storage corresponding to the stream is unchanged.

One character of pushback is guaranteed. If the  function is called too many times on the same stream without an intervening read or file positioning operation on that stream, the operation may fail.

If the value of  equals that of the macro , the operation fails and the input stream is unchanged.

A successful call to the  function clears the end-of-file indicator for the stream. The value of the file position indicator for the stream after reading or discarding all pushed-back characters shall be the same as it was before the characters were pushed back. For a text stream, the value of its file-position indicator after a successful call to the  function is unspecified until all pushed-back characters are read or discarded. For a binary stream, its file position indicator is decremented by each successful call to the  function; if its value was zero before a call, it is indeterminate after the call.

The  function returns the character pushed back after conversion, or   if the operation fails.

EOF pitfall
A mistake when using,  , or   is to assign the result to a variable of type   before comparing it to. The following code fragments exhibit this mistake, and then show the correct approach (using type int):

Consider a system in which the type  is 8 bits wide, representing 256 different values. may return any of the 256 possible characters, and it also may return  to indicate end-of-file, for a total of 257 different possible return values.

When 's result is assigned to a , which can represent only 256 different values, there is necessarily some loss of information—when packing 257 items into 256 slots, there must be a collision. The  value, when converted to , becomes indistinguishable from whichever one of the 256 characters shares its numerical value. If that character is found in the file, the above example may mistake it for an end-of-file indicator; or, just as bad, if type  is unsigned, then because   is negative, it can never be equal to any unsigned , so the above example will not terminate at end-of-file. It will loop forever, repeatedly printing the character which results from converting  to.

However, this looping failure mode does not occur if the char definition is signed (C makes the signedness of the default char type implementation-dependent), assuming the commonly used   value of -1. However, the fundamental issue remains that if the  value is defined outside of the range of the   type, when assigned to a   that value is sliced and will no longer match the full   value necessary to exit the loop. On the other hand, if  is within range of , this guarantees a collision between   and a char value. Thus, regardless of how system types are defined, never use  types when testing against.

On systems where  and   are the same size (i.e., systems incompatible with minimally the POSIX and C99 standards), even the "good" example will suffer from the indistinguishability of   and some character's value. The proper way to handle this situation is to check  and   after   returns. If  indicates that end-of-file has not been reached, and   indicates that no errors have occurred, then the   returned by   can be assumed to represent an actual character. These extra checks are rarely done, because most programmers assume that their code will never need to run on one of these "big " systems. Another way is to use a compile-time assertion to make sure that, which at least prevents a program with such an assumption from compiling in such a system.

Direct input function: the function
The  function reads, into the array pointed to by , up to   elements whose size is specified by  , from the stream pointed to by. The file position indicator for the stream (if defined) is advanced by the number of characters successfully read. If an error occurs, the resulting value of the file position indicator for the stream is indeterminate. If a partial element is read, its value is indeterminate.

The  function returns the number of elements successfully read, which may be less than   if a read error or end-of-file is encountered. If  or   is zero,   returns zero and the contents of the array and the state of the stream remain unchanged.

Formatted input functions: the family of functions
The  function reads input from the stream pointed to by , under control of the string pointed to by   that specifies the admissible sequences and how they are to be converted for assignment, using subsequent arguments as pointers to the objects to receive converted input. If there are insufficient arguments for the format, the behavior is undefined. If the format is exhausted while arguments remain, the excess arguments are evaluated (as always) but are otherwise ignored.

The format shall be a multibyte character sequence, beginning and ending in its initial shift state. The format is composed of zero or more directives: one or more white-space characters; an ordinary multibyte character (neither % or a white-space character); or a conversion specification. Each conversion specification is introduced by the character %. After the %, the following appear in sequence:
 * An optional assignment-suppressing character *.
 * An optional nonzero decimal integer that specifies the maximum field width.
 * An optional h, l (ell) or L indicating the size of the receiving object. The conversion specifiers <tt>d</tt>, <tt>i</tt>, and <tt>n</tt> shall be preceded by <tt>h</tt> if the corresponding argument is a pointer to  rather than a pointer to , or by <tt>l</tt> if it is a pointer to  . Similarly, the conversion specifiers <tt>o</tt>, <tt>u</tt>, and <tt>x</tt> shall be preceded by <tt>h</tt> if the corresponding argument is a pointer to   rather than  , or by <tt>l</tt> if it is a pointer to  . Finally, the conversion specifiers <tt>e</tt>, <tt>f</tt>, and <tt>g</tt> shall be preceded by <tt>l</tt> if the corresponding argument is a pointer to   rather than a pointer to  , or by <tt>L</tt> if it is a pointer to  . If an <tt>h</tt>, <tt>l</tt>, or <tt>L</tt> appears with any other format specifier, the behavior is undefined.
 * A character that specifies the type of conversion to be applied. The valid conversion specifiers are described below.

The  function executes each directive of the format in turn. If a directive fails, as detailed below, the  function returns. Failures are described as input failures (due to the unavailability of input characters) or matching failures (due to inappropriate input).

A directive composed of white-space character(s) is executed by reading input up to the first non-white-space character (which remains unread) or until no more characters remain unread.

A directive that is an ordinary multibyte character is executed by reading the next characters of the stream. If one of the characters differs from one comprising the directive, the directive fails, and the differing and subsequent characters remain unread.

A directive that is a conversion specification defines a set of matching input sequences, as described below for each specifier. A conversion specification is executed in the following steps:

Input white-space characters (as specified by the  function) are skipped, unless the specification includes a <tt>[</tt>, <tt>c</tt>, or <tt>n</tt> specifier. (The white-space characters are not counted against the specified field width.)

An input item is read from the stream, unless the specification includes an <tt>n</tt> specifier. An input item is defined as the longest matching sequences of input characters, unless that exceeds a specified field width, in which case it is the initial subsequence of that length in the sequence. The first character, if any, after the input item remains unread. If the length of the input item is zero, the execution of the directive fails; this condition is a matching failure, unless an error prevented input from the stream, in which case it is an input failure.

Except in the case of a <tt>%</tt> specifier, the input item (or, in the case of a <tt>%n</tt> directive, the count of input characters) is converted to a type appropriate to the conversion specifier. If the input item is not a matching sequence, the execution of the directive fails; this condition is a matching failure. Unless assignment suppression was indicated by a <tt>*</tt>, the result of the conversion is placed in the object pointed to by the first argument following the  argument that has not already received a conversion result. If this object does not have an appropriate type, or if the result of the conversion cannot be represented in the space provided, the behavior is undefined.

The following conversion specifiers are valid:

 * <tt>d</tt> : Matches an optionally signed decimal integer, whose format is the same as expected for the subject sequence of the  function with the value 10 for the   argument. The corresponding argument shall be a pointer to integer.

 * <tt>i</tt> : Matches an optionally signed integer, whose format is the same as expected for the subject sequence of the  function with the value 0 for the   argument. The corresponding argument shall be a pointer to integer.

 * <tt>o</tt> : Matches an optionally signed octal integer, whose format is the same as expected for the subject sequence of the  function with the value 8 for the   argument. The corresponding argument shall be a pointer to unsigned integer.

 * <tt>u</tt> : Matches an optionally signed decimal integer, whose format is the same as expected for the subject sequence of the  function with the value 10 for the   argument. The corresponding argument shall be a pointer to unsigned integer.

 * <tt>x</tt> : Matches an optionally signed hexadecimal integer, whose format is the same as expected for the subject sequence of the  function with the value 16 for the   argument. The corresponding argument shall be a pointer to unsigned integer.

 * <tt>e</tt>, <tt>f</tt>, <tt>g</tt> : Matches an optionally signed floating-point number, whose format is the same as expected for the subject string of the  function. The corresponding argument will be a pointer to floating.

 * <tt>s</tt> : Matches a sequence of non-white-space characters. (No special provisions are made for multibyte characters.) The corresponding argument shall be a pointer to the initial character of an array large enough to accept the sequence and a terminating null character, which will be added automatically.

 * <tt>[</tt> : Matches a nonempty sequence of characters (no special provisions are made for multibyte characters) from a set of expected characters (the scanset). The corresponding argument shall be a pointer to the initial character of an array large enough to accept the sequence and a terminating null character, which will be added automatically. The conversion specifier includes all subsequent characters in the  string, up to and including the matching right bracket (<tt>]</tt>). The characters between the brackets (the scanlist) comprise the scanset, unless the character after the left bracket is a circumflex (<tt>^</tt>), in which case the scanset contains all the characters that do not appear in the scanlist between the circumflex and the right bracket. If the conversion specifier begins with <tt>[]</tt> or <tt>[^]</tt>, the right-bracket character is in the scanlist and the next right bracket character is the matching right bracket that ends the specification; otherwise, the first right bracket character is the one that ends the specification. If a <tt>-</tt> character is in the scanlist and is not the first, nor the second where the first character is a <tt>^</tt>, nor the last character, the behavior is implementation-defined.

 * <tt>c</tt> : Matches a sequence of characters (no special provisions are made for multibyte characters) of the number specified by the field width (1 if no field width is present in the directive). The corresponding argument shall be a pointer to the initial character of an array large enough to accept the sequence. No null character is added.

 * <tt>p</tt> : Matches an implementation-defined set of sequences, which should be the same as the set of sequences that may be produced by the <tt>%p</tt> conversion of the  function. The corresponding argument shall be a pointer to  . The interpretation of the input then is implementation-defined. If the input item is a value converted earlier during the same program execution, the pointer that results shall compare equal to that value; otherwise the behavior of the <tt>%p</tt> conversion is undefined.

 * <tt>n</tt> : No input is consumed. The corresponding argument shall be a pointer to integer into which is to be written the number of characters read from the input stream so far by this call to the  function. Execution of a <tt>%n</tt> directive does not increment the assignment count returned at the completion of execution of the   function.

 * <tt>%</tt> : Matches a single <tt>%</tt>; no conversion or assignment occurs. The complete conversion specification shall be <tt>%%</tt>.

If a conversion specification is invalid, the behavior is undefined.

The conversion specifiers <tt>E</tt>, <tt>G</tt>, and <tt>X</tt> are also valid and behave the same as, respectively, <tt>e</tt>, <tt>g</tt>, and <tt>x</tt>.

If end-of-file is encountered during input, conversion is terminated. If end-of-file occurs before any characters matching the current directive have been read (other than leading white space, where permitted), execution of the current directive terminates with an input failure; otherwise, unless execution of the current directive is terminated with a matching failure, execution of the following directive (if any) is terminated with an input failure.

If conversion terminates on a conflicting input character, the offending input character is left unread in the input stream. Trailing white space (including new-line characters) is left unread unless matched by a directive. The success of literal matches and suppressed assignments is not directly determinable other than via the <tt>%n</tt> directive.

The  function returns the value of the macro   if an input failure occurs before any conversion. Otherwise, the  function returns the number of input items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure.

The  function is equivalent to   with the argument   interposed before the arguments to. Its return value is similar to that of.

The  function is equivalent to , except that the argument   specifies a string from which the input is to be obtained, rather than from a stream. Reaching the end of the string is equivalent to encountering the end-of-file for the  function. If copying takes place between objects that overlap, the behavior is undefined.

The function
int fputc(int c, FILE *stream);
 * 1) include <stdio.h>

The  function writes the character specified by   (converted to an  ) to the stream pointed to by   at the position indicated by the associated file position indicator (if defined), and advances the indicator appropriately. If the file cannot support positioning requests, or if the stream is opened with append mode, the character is appended to the output stream. The function returns the character written, unless a write error occurs, in which case the error indicator for the stream is set and  returns.

The function
int fputs(const char *s, FILE *stream);
 * 1) include <stdio.h>

The  function writes the string pointed to by   to the stream pointed to by. The terminating null character is not written. The function returns  if a write error occurs, otherwise it returns a nonnegative value.

The function
int putc(int c, FILE *stream);
 * 1) include <stdio.h>

The  function is equivalent to , except that if it is implemented as a macro, it may evaluate   more than once, so the argument should never be an expression with side effects. The function returns the character written, unless a write error occurs, in which case the error indicator for the stream is set and the function returns.

The function
int putchar(int c);
 * 1) include <stdio.h>

The  function is equivalent to   with the second argument. It returns the character written, unless a write error occurs, in which case the error indicator for  is set and the function returns.

The function
int puts(const char *s);
 * 1) include <stdio.h>

The  function writes the string pointed to by   to the stream pointed to by , and appends a new-line character to the output. The terminating null character is not written. The function returns  if a write error occurs; otherwise, it returns a nonnegative value.

Direct output function: the function
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
 * 1) include <stdio.h>

The  function writes, from the array pointed to by , up to   elements whose size is specified by   to the stream pointed to by. The file position indicator for the stream (if defined) is advanced by the number of characters successfully written. If an error occurs, the resulting value of the file position indicator for the stream is indeterminate. The function returns the number of elements successfully written, which will be less than  only if a write error is encountered.

Formatted output functions: the family of functions
int fprintf(FILE *stream, const char *format, ...); int printf(const char *format, ...); int sprintf(char *s, const char *format, ...); int vfprintf(FILE *stream, const char *format, va_list arg); int vprintf(const char *format, va_list arg); int vsprintf(char *s, const char *format, va_list arg);
 * 1) include <stdarg.h>
 * 2) include <stdio.h>

''Note: Some length specifiers and format specifiers are new in C99. These may not be available in older compilers and versions of the stdio library, which adhere to the C89/C90 standard. Wherever possible, the new ones will be marked with (C99).''

The  function writes output to the stream pointed to by   under control of the string pointed to by   that specifies how subsequent arguments are converted for output. If there are insufficient arguments for the format, the behavior is undefined. If the format is exhausted while arguments remain, the excess arguments are evaluated (as always) but are otherwise ignored. The  function returns when the end of the format string is encountered.

The format shall be a multibyte character sequence, beginning and ending in its initial shift state. The format is composed of zero or more directives: ordinary multibyte characters (not <tt>%</tt>), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments, converting them, if applicable, according to the corresponding conversion specifier, and then writing the result to the output stream.

Each conversion specification is introduced by the character <tt>%</tt>. After the <tt>%</tt>, the following appear in sequence:

 * Zero or more flags (in any order) that modify the meaning of the conversion specification.
 * An optional minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces (by default) on the left (or right, if the left adjustment flag, described later, has been given) to the field width. The field width takes the form of an asterisk <tt>*</tt> (described later) or a decimal integer. (Note that 0 is taken as a flag, not as the beginning of a field width.)
 * An optional precision that gives the minimum number of digits to appear for the <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, and <tt>X</tt> conversions, the number of digits to appear after the decimal-point character for <tt>a</tt>, <tt>A</tt>, <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, and <tt>F</tt> conversions, the maximum number of significant digits for the <tt>g</tt> and <tt>G</tt> conversions, or the maximum number of characters to be written from a string in <tt>s</tt> conversions. The precision takes the form of a period (<tt>.</tt>) followed either by an asterisk <tt>*</tt> (described later) or by an optional decimal integer; if only the period is specified, the precision is taken as zero. If a precision appears with any other conversion specifier, the behavior is undefined. Floating-point numbers are rounded to fit the precision; i.e. <tt>printf("%1.1f\n", 1.19);</tt> produces <tt>1.2</tt>.
 * An optional length modifier that specifies the size of the argument.
 * A conversion specifier character that specifies the type of conversion to be applied.

As noted above, a field width, or precision, or both, may be indicated by an asterisk. In this case, an  argument supplies the field width or precision. The arguments specifying field width, or precision, or both, shall appear (in that order) before the argument (if any) to be converted. A negative field width argument is taken as a <tt>-</tt> flag followed by a positive field width. A negative precision argument is taken as if the precision were omitted.

The flag characters and their meanings are:
 * <tt>-</tt> : The result of the conversion is left-justified within the field. (It is right-justified if this flag is not specified.)
 * <tt>+</tt> : The result of a signed conversion always begins with a plus or minus sign. (It begins with a sign only when a negative value is converted if this flag is not specified. The results of all floating conversions of a negative zero, and of negative values that round to zero, include a minus sign.)
 * space : If the first character of a signed conversion is not a sign, or if a signed conversion results in no characters, a space is prefixed to the result. If the space and <tt>+</tt> flags both appear, the space flag is ignored.
 * <tt>#</tt> : The result is converted to an "alternative form". For <tt>o</tt> conversion, it increases the precision, if and only if necessary, to force the first digit of the result to be a zero (if the value and precision are both 0, a single 0 is printed). For <tt>x</tt> (or <tt>X</tt>) conversion, a nonzero result has <tt>0x</tt> (or <tt>0X</tt>) prefixed to it. For <tt>a</tt>, <tt>A</tt>, <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, <tt>F</tt>, <tt>g</tt>, and <tt>G</tt> conversions, the result always contains a decimal-point character, even if no digits follow it. (Normally, a decimal-point character appears in the result of these conversions only if a digit follows it.) For <tt>g</tt> and <tt>G</tt> conversions, trailing zeros are not removed from the result. For other conversions, the behavior is undefined.
 * <tt>0</tt> : For <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, <tt>X</tt>, <tt>a</tt>, <tt>A</tt>, <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, <tt>F</tt>, <tt>g</tt>, and <tt>G</tt> conversions, leading zeros (following any indication of sign or base) are used to pad to the field width; no space padding is performed. If the <tt>0</tt> and <tt>-</tt> flags both appear, the <tt>0</tt> flag is ignored. For <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, and <tt>X</tt> conversions, if a precision is specified, the <tt>0</tt> flag is ignored. For other conversions, the behavior is undefined.

The length modifiers and their meanings are:
 * <tt>hh</tt> : (C99) Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or   argument (the argument will have been promoted according to the integer promotions, but its value shall be converted to   or   before printing); or that a following <tt>n</tt> conversion specifier applies to a pointer to a   argument.

 * <tt>h</tt> : Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or   argument (the argument will have been promoted according to the integer promotions, but its value shall be converted to   or   before printing); or that a following <tt>n</tt> conversion specifier applies to a pointer to a   argument.

 * <tt>l</tt> (ell) : Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or   argument; that a following <tt>n</tt> conversion specifier applies to a pointer to a   argument; (C99) that a following <tt>c</tt> conversion specifier applies to a   argument; (C99) that a following <tt>s</tt> conversion specifier applies to a pointer to a   argument; or has no effect on a following <tt>a</tt>, <tt>A</tt>, <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, <tt>F</tt>, <tt>g</tt>, or <tt>G</tt> conversion specifier.

 * <tt>ll</tt> (ell-ell) : (C99) Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or   argument; or that a following <tt>n</tt> conversion specifier applies to a pointer to a   argument.

 * <tt>j</tt> : (C99) Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to an  or   argument; or that a following <tt>n</tt> conversion specifier applies to a pointer to an   argument.

 * <tt>z</tt> : (C99) Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or the corresponding signed integer type argument; or that a following <tt>n</tt> conversion specifier applies to a pointer to a signed integer type corresponding to   argument.

 * <tt>t</tt> : (C99) Specifies that a following <tt>d</tt>, <tt>i</tt>, <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, or <tt>X</tt> conversion specifier applies to a  or the corresponding unsigned integer type argument; or that a following <tt>n</tt> conversion specifier applies to a pointer to a   argument.

 * <tt>L</tt> : Specifies that a following <tt>a</tt>, <tt>A</tt>, <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, <tt>F</tt>, <tt>g</tt>, or <tt>G</tt> conversion specifier applies to a  argument.

If a length modifier appears with any conversion specifier other than as specified above, the behavior is undefined.

The conversion specifiers and their meanings are:

 * <tt>d</tt>, <tt>i</tt> : The  argument is converted to signed decimal in the style [<tt>−</tt>]dddd. The precision specifies the minimum number of digits to appear; if the value being converted can be represented in fewer digits, it is expanded with leading zeros. The default precision is 1. The result of converting a zero value with a precision of zero is no characters.

 * <tt>o</tt>, <tt>u</tt>, <tt>x</tt>, <tt>X</tt> : The  argument is converted to unsigned octal (<tt>o</tt>), unsigned decimal (<tt>u</tt>), or unsigned hexadecimal notation (<tt>x</tt> or <tt>X</tt>) in the style dddd; the letters <tt>abcdef</tt> are used for <tt>x</tt> conversion and the letters <tt>ABCDEF</tt> for <tt>X</tt> conversion. The precision specifies the minimum number of digits to appear; if the value being converted can be represented in fewer digits, it is expanded with leading zeros. The default precision is 1. The result of converting a zero value with a precision of zero is no characters.

 * <tt>f</tt>, <tt>F</tt> : A  argument representing a (finite) floating-point number is converted to decimal notation in the style [<tt>−</tt>]ddd<tt>.</tt>ddd, where the number of digits after the decimal-point character is equal to the precision specification. If the precision is missing, it is taken as 6; if the precision is zero and the <tt>#</tt> flag is not specified, no decimal-point character appears. If a decimal-point character appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. (C99) A   argument representing an infinity is converted in one of the styles [<tt>-</tt>]<tt>inf</tt> or [<tt>-</tt>]<tt>infinity</tt> — which style is implementation-defined. A double argument representing a NaN is converted in one of the styles [<tt>-</tt>]<tt>nan</tt> or [<tt>-</tt>]<tt>nan(</tt>n-char-sequence<tt>)</tt> — which style, and the meaning of any n-char-sequence, is implementation-defined. The <tt>F</tt> conversion specifier produces <tt>INF</tt>, <tt>INFINITY</tt>, or <tt>NAN</tt> instead of <tt>inf</tt>, <tt>infinity</tt>, or <tt>nan</tt>, respectively. (When applied to infinite and NaN values, the <tt>-</tt>, <tt>+</tt>, and space flags have their usual meaning; the <tt>#</tt> and <tt>0</tt> flags have no effect.)

 * <tt>e</tt>, <tt>E</tt> : A  argument representing a (finite) floating-point number is converted in the style [<tt>−</tt>]d<tt>.</tt>ddd<tt>e±</tt>dd, where there is one digit (which is nonzero if the argument is nonzero) before the decimal-point character and the number of digits after it is equal to the precision; if the precision is missing, it is taken as 6; if the precision is zero and the <tt>#</tt> flag is not specified, no decimal-point character appears. The value is rounded to the appropriate number of digits. The <tt>E</tt> conversion specifier produces a number with <tt>E</tt> instead of <tt>e</tt> introducing the exponent. The exponent always contains at least two digits, and only as many more digits as necessary to represent the exponent. If the value is zero, the exponent is zero. (C99) A   argument representing an infinity or NaN is converted in the style of an <tt>f</tt> or <tt>F</tt> conversion specifier.

 * <tt>g</tt>, <tt>G</tt> : A  argument representing a (finite) floating-point number is converted in style <tt>f</tt> or <tt>e</tt> (or in style <tt>F</tt> or <tt>E</tt> in the case of a <tt>G</tt> conversion specifier), with the precision specifying the number of significant digits. If the precision is zero, it is taken as 1. The style used depends on the value converted; style <tt>e</tt> (or <tt>E</tt>) is used only if the exponent resulting from such a conversion is less than –4 or greater than or equal to the precision. Trailing zeros are removed from the fractional portion of the result unless the <tt>#</tt> flag is specified; a decimal-point character appears only if it is followed by a digit. (C99) A   argument representing an infinity or NaN is converted in the style of an <tt>f</tt> or <tt>F</tt> conversion specifier.

 * <tt>a</tt>, <tt>A</tt> : (C99) A double argument representing a (finite) floating-point number is converted in the style [<tt>−</tt>]<tt>0x</tt>h<tt>.</tt>hhhh<tt>p±</tt>d, where there is one hexadecimal digit (which is nonzero if the argument is a normalized floating-point number and is otherwise unspecified) before the decimal-point character (Binary implementations can choose the hexadecimal digit to the left of the decimal-point character so that subsequent digits align to nibble [4-bit] boundaries.) and the number of hexadecimal digits after it is equal to the precision; if the precision is missing and  is a power of 2, then the precision is sufficient for an exact representation of the value; if the precision is missing and   is not a power of 2, then the precision is sufficient to distinguish (The precision p is sufficient to distinguish values of the source type if 16p–1 > bn where b is   and n is the number of base-b digits in the significand of the source type. A smaller p might suffice depending on the implementation's scheme for determining the digit to the left of the decimal-point character.) values of type , except that trailing zeros may be omitted; if the precision is zero and the <tt>#</tt> flag is not specified, no decimal-point character appears. The letters <tt>abcdef</tt> are used for <tt>a</tt> conversion and the letters <tt>ABCDEF</tt> for <tt>A</tt> conversion. The <tt>A</tt> conversion specifier produces a number with <tt>X</tt> and <tt>P</tt> instead of <tt>x</tt> and <tt>p</tt>. The exponent always contains at least one digit, and only as many more digits as necessary to represent the decimal exponent of 2. If the value is zero, the exponent is zero. A   argument representing an infinity or NaN is converted in the style of an <tt>f</tt> or <tt>F</tt> conversion specifier.

 * <tt>c</tt> : If no <tt>l</tt> length modifier is present, the  argument is converted to an , and the resulting character is written. (C99) If an <tt>l</tt> length modifier is present, the   argument is converted as if by an <tt>ls</tt> conversion specification with no precision and an argument that points to the initial element of a two-element array of  , the first element containing the   argument to the <tt>lc</tt> conversion specification and the second a null wide character.

 * <tt>s</tt> : If no <tt>l</tt> length modifier is present, the argument shall be a pointer to the initial element of an array of character type. (No special provisions are made for multibyte characters.) Characters from the array are written up to (but not including) the terminating null character. If the precision is specified, no more than that many characters are written. If the precision is not specified or is greater than the size of the array, the array shall contain a null character. (C99) If an <tt>l</tt> length modifier is present, the argument shall be a pointer to the initial element of an array of  type. Wide characters from the array are converted to multibyte characters (each as if by a call to the   function, with the conversion state described by an   object initialized to zero before the first wide character is converted) up to and including a terminating null wide character. The resulting multibyte characters are written up to (but not including) the terminating null character (byte). If no precision is specified, the array shall contain a null wide character. If a precision is specified, no more than that many characters (bytes) are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array. In no case is a partial multibyte character written. (Redundant shift sequences may result if multibyte characters have a state-dependent encoding.)

 * <tt>p</tt> : The argument shall be a pointer to . The value of the pointer is converted to a sequence of printable characters, in an implementation-defined manner.

 * <tt>n</tt> : The argument shall be a pointer to signed integer into which is written the number of characters written to the output stream so far by this call to . No argument is converted, but one is consumed. If the conversion specification includes any flags, a field width, or a precision, the behavior is undefined.

 * <tt>%</tt> : A <tt>%</tt> character is written. No argument is converted. The complete conversion specification shall be <tt>%%</tt>.

If a conversion specification is invalid, the behavior is undefined. If any argument is not the correct type for the corresponding coversion specification, the behavior is undefined.

In no case does a nonexistent or small field width cause truncation of a field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result.

For <tt>a</tt> and <tt>A</tt> conversions, if  is a power of 2, the value is correctly rounded to a hexadecimal floating number with the given precision.

It is recommended practice that if  is not a power of 2, the result should be one of the two adjacent numbers in hexadecimal floating style with the given precision, with the extra stipulation that the error should have a correct sign for the current rounding direction.

It is recommended practice that for <tt>e</tt>, <tt>E</tt>, <tt>f</tt>, <tt>F</tt>, <tt>g</tt>, and <tt>G</tt> conversions, if the number of significant decimal digits is at most, then the result should be correctly rounded. (For binary-to-decimal conversion, the result format's values are the numbers representable with the given format specifier. The number of significant digits is determined by the format specifier, and in the case of fixed-point conversion by the source value as well.) If the number of significant decimal digits is more than  but the source value is exactly representable with   digits, then the result should be an exact representation with trailing zeros. Otherwise, the source value is bounded by two adjacent decimal strings L < U, both having <tt>DECIMAL_DIG</tt> significant digits; the value of the resultant decimal string D should satisfy L ≤ D ≤ U, with the extra stipulation that the error should have a correct sign for the current rounding direction.

The  function returns the number of characters transmitted, or a negative value if an output or encoding error occurred.

The  function is equivalent to   with the argument   interposed before the arguments to. It returns the number of characters transmitted, or a negative value if an output error occurred.

The  function is equivalent to , except that the argument   specifies an array into which the generated input is to be written, rather than to a stream. A null character is written at the end of the characters written; it is not counted as part of the returned sum. If copying takes place between objects that overlap, the behavior is undefined. The function returns the number of characters written in the array, not counting the terminating null character.

The  function is equivalent to , with the variable argument list replaced by  , which shall have been initialized by the   macro (and possibly subsequent   calls). The  function does not invoke the   macro. The function returns the number of characters transmitted, or a negative value if an output error occurred.

The  function is equivalent to , with the variable argument list replaced by  , which shall have been initialized by the   macro (and possibly subsequent   calls). The  function does not invoke the   macro. The function returns the number of characters transmitted, or a negative value if an output error occurred.

The  function is equivalent to , with the variable argument list replaced by  , which shall have been initialized by the   macro (and possibly subsequent   calls). The  function does not invoke the   macro. If copying takes place between objects that overlap, the behavior is undefined. The function returns the number of characters written into the array, not counting the terminating null character.

title: C Programming/Stream IO


text:
User:Eduardoporcher~enwikibooks

I'm Eduardo Porcher, a student of applied mathematics. Visit my Wikipedia userpage.

title: User:Eduardoporcher~enwikibooks


text:
What You Should Know About Medicines/Antidepressants

Depression is a common condition. It may be situational, or may be due to an imbalance of hormones in the brain (Clinical Depression). Although there is no laboratory test for depression, and experienced clinician can make diagnosis based on history and observation, and recommend medication to correct a likely imbalance.

The most commonly prescribed antidepressants are currently the Selective Serotonin Reuptake Inhibitors (SSRI). This type of antidepressant has mostly replaced older ones (e.g. Monoamine Oxidase Inhibitors (MAOI), Tricyclic Antidepressants (TCAs)). The SSRIs are generally considered to be more effective than the older types, and are typically considered safer and therefore preferable for use in depressed patients who may feel suicidal. Prozac (fluoxetine) was the first SSRI in the United States (Luvox (Fluvoxamine) being the first worldwide).

One theory of depression is a depressed level of serotonin (there may also be an connection with an imbalance in other neurotransmitters such as dopamine and/or norepinephrine). SSRIs act by inhibiting the reuptake of serotonin elevating available serotonin levels (it does not cause more serotonin to be created). Antidepressants (including SSRIs) can alter the level of more than one neurotransmitter simultaneously. The affinity for other neurotransmitters will vary depending on the particular drug considered. Though some types of antidepressants have been designed to have a high affinity for multiple neurotransmitters (e.g. Effexor (venlafaxine) which inhibits the reuptake of both serotonin and norepinephrine).

Antidepressants usually take 2 to 6 weeks for take effect. Though treatment with an antidepressant should be reassessed at regular intervals (e.g. every couple of months) to see if continued usage is warranted.

Common side effects of SSRIs include (but are not limited to) dry mouth, nausea, sedation, headache, sweating, GI issues, weight gain/loss and issues with libido. These effects usually subside within a couple weeks, though the weight and libido issues may persist throughout the duration of treatment.

Some people may experience an increase in impulsivity or suicidal ideation with these medications. Thus, the prescribing physician should be contacted upon any such out of character mood or conduct.

Caution should be used when discontinuing an antidepressant. The dosage should be reduced gradually over time (dependent on the particular drugs half-life) to reduce the chances or severity of symptoms of a discontinuation syndrome.


text:
Ecology/How to use

The purpose of the A Study Guide to Basic Ecology is to weave—out of the information on Life Science contained in Wikipedia—a course of study for the student or layman. It is anticipated that this course will be either supplemental to instruction being received at a school or college, or will be self-directed. We hope to include, within each chapter, sufficient text to make clear the concepts important to understanding life on earth from an ecological perspective. However, acquiring this knowledge will require a careful reading of assigned articles in Wikipedia. Thus, each module presents one or more "reading assignments" of the form:

 * Read Ecology ( Links need not be pursued at this time )

Following (that is clicking on) the link (to Wikipedia "Ecology" article in this case) will open the article intended to provide the details of the Chapter subsection. Recommended articles should be read from top to bottom, and then re-read following some or all of the links embedded in the article to other articles for expanded elucidation or to clarify terms; that is, in most cases, completion of an "assignment" (recommended article) includes at least some or all articles linked to the first. Obviously, it cannot be the case that all links are followed to articles, whose links are then followed to articles, and so on until no new material is encountered. It is likely there would be no quick end to such a pursuit. The amount of time spent wandering beyond the original article is partly a personal matter of how much the reader is getting out of the foray than anything else. Realize it is certainly possible to wander well off the subject at hand. As in the example above, notes are provided with assignments giving some direction for pursuing links. An instruction NOT to pursue links simply means the additional material will likely be encountered later in the course of instruction, and going beyond the assigned article may provide too much detail for a course in "basic" ecology. The following example:

 * Read Science ( The following links are included: )
 * Scientific Method
 * Philosophy of Science

specifies that two other links ARE part of the assignment. Other links encountered may be followed to expand your knowledge or, as always, to aid in understanding of technical terms encountered. Occasional hyperlinks included within the text in the Guide (that is, separate from the assignments) are there simply for convenience, usually to topics somewhat peripheral to the main one or to terms you should be familiar with but may not be. In all cases, finding your way back to the Guide may be tricky, but we must leave this up to you to establish, beyond pointing out that your browser's Back button is intended for this purpose.

Note that at the beginning of each module, links are provided to both the previous chapter and the succeeding chapter, as well as to the main Table of Contents.

Final Note
As a final note, read the next Section and consider how you might even make a contribution to the Guide.

title: Ecology/How to use


text:
Cell Biology/Nucleolus

The nucleolus is the only structure in the nucleus that is detectable in a light microscope without staining. It is the site of rRNA synthesis. (rRNA or ribosomal RNA is an essential part of ribosomes, the structures in the Cytoplasma where proteins are made from mRNA templates.) The nucleolus contains many rDNA genes from which the rRNA is made. The human genome contains 10 chromosomes with arrays of rDNA genes (two copies of chromosomes 13, 14, 15, 21 and 22) but not all of these arrays are necessarily actively used in all cells.

title: Cell Biology/Nucleolus