text:
Parrot Virtual Machine/Squaak Tutorial/Hash Tables and Arrays

Welcome to Episode 8! This is the second-last episode in this tutorial. After this episode, we'll have a complete implementation of our Squaak language. This episode focuses on aggregate data structures: arrays and hashtables. We'll discuss the syntax to assign to them and to construct them. We'll see that implementing the action methods is really easy, almost trivial. After that, we'll make some notes on aggregates as arguments, and how they differ from the basic data types when passing them around as subroutine arguments.

Arrays and Hashtables
Besides basic data types such as integer, floating-point and string, Squaak has two aggregate data types: array and hashtable. An array is an object that can store a sequence of values. The values in this sequence can be of different types, unlike some languages that require all elements of an array to be the same type. An example of using arrays is shown below:

grades[0] = "A" grades[1] = "A+" grades[2] = "B+" grades[3] = "C+"

A hashtable stores key-value pairs; the key is used as index to store a value. Keys must be string constants, but the value can be of any type. An example is shown below:

lastnames{"larry"}  = "wall" lastnames{"allison"} = "randal"

Array constructors
Just as there are integer literals (42) and string literals ("hello world") that can be assigned to variables, you can have array literals. Below is the grammar rule for this:

rule array_constructor { '[' [ [',' ]*]? ']'      {*}    }

Some examples are shown below:

foo = [] bar = [1, "hi", 3.14] baz = [1, [2, 3, 4] ]

The first example creates an empty array and assigns this to foo. The second example shows the construction of three elements, assigning the array to bar. Note that the elements of one array can be of different types. The third example shows the construction of nested arrays. This means that element  evaluates to the value 2 (indexing starts at 0).

Hashtable constructors
Besides array literals, Squaak supports hashtable literals, that can be constructed through a hashtable constructor. The syntax for this is expressed below:

rule hash_constructor { '{' [ [',' ]* ]? '}'        {*}    }

rule named_field {  '=>' {*}   }

Some examples are shown below:

foo = {} bar = { "larry" => "wall", "allison" => "randal" } baz = { "a" => { "b" => 42} }

The first line creates an empty hashtable and assigns this to foo. The second creates a hashtable with two fields: "larry" and "allison". Their respective values are: "wall" and "randal". The third line shows that hashtables can be nested, too. There, a hashtable is constructed that has one field, called "a", and its value is another hashtable, containing a field "b" that has the value 42.

Implementation
You might think implementing support for arrays and hashtables looks rather difficult. Well, it's not. Actually, the implementation is rather straightforward. First, we're going to update the grammar rule for primary:

rule primary { * {*}   }

rule postfix_expression { | {*}  #= index | {*}    #= key }

rule index { '[' ']'       {*}    }

rule key { '{' '}'       {*}    }

A primary object is now an identifier followed by any number of postfix-expressions. A postfix expression is either a hashtable key or an array index. Allowing any number of postfix expressions allows to nest arrays and hashtables in each other, allowing us to write, for instance:

foo{"key"}[42][0]{"hi"}

Of course, you as a Squaak programmer must make sure that foo is actually a hashtable, and that  yields an array, and so forth. Implementing this is actually quite simple. First, let us see how to implement the action method index.

method index($/) { my $index := $( $ );

my $past := PAST::Var.new( $index,                                :scope('keyed'),                                 :viviself('Undef'),                                 :vivibase('ResizablePMCArray'),                                 :node($/) ); make $past; }

First, we retrieve the PAST node for expression. Then, we create a keyed variable access operation, by creating a PAST::Var node and setting its scope to 'keyed'. If a PAST::Var node has keyed scope, then the first child is evaluated as the aggregate object, and the second child is evaluated as the index on that aggregate.

But wait! The PAST::Var node we just created has only one child!

Here's where the updated action method for primary comes in. This is shown below.

method primary($/) { my $past := $( $ );

for $ { my $expr := $( $_ ); $expr.unshift( $past ); $past := $expr; }       make $past; }

First, the PAST node for identifier is retrieved. Then, for each postfix-expression, we get the PAST node, and unshift the (current)  onto it. Effectively, the (current) $past is set as the first child of. And you know what  contains: that's the keyed variable access node, that was created in the action method index.

After that,  is set to  ; either there's another postfix-expression, in which case this $past will be set as the first child of that next postfix-expression, or, the current $past is set as the result object.

Implementing Constructors
To implement the array and hashtable constructors, we're going to take advantage of Parrot's Calling Conventions (PCC). The PCC supports, amongst others, optional parameters, named parameters and slurpy parameters. If you're Dutch, you might think that slurpy parameters make a lot of noise ("slurpen" is a Dutch verb meaning drinking carefully, which you usually do if your beverage is hot, making noise in the process), but you would be wrong. Slurpy parameters will store all remaining arguments that have not yet been stored in other parameters (implying that there can only be one slurpy (positional) parameter, and it should come after all normal (positional) parameters). Parrot will automatically create an aggregate to store these remaining arguments. Besides positional slurpy parameters, you can also define a named slurpy parameter, which will store all remaining named parameters, after all normal (named) arguments have been stored.

You might be confused by now.

Let's look at an example, as this issue is worth a few brain cells to store.

.sub foo .param pmc a     .param pmc b      .param pmc c :slurpy .param pmc k :named('x') .param pmc l :named('y') .param pmc m :named :slurpy

.end

foo(1, 2, 3, 4, 6 :named('y'), 5 :named('x'), 7 :named('p'), 8 :named('q') )

This will result in the following mapping:

a: 1 b: 2 c: {3, 4} k: 5 l: 6 m: {"p"=>7, "q"=>8}

So, after the positional parameters (a, b), c is declared as a slurpy parameters, storing all remaining positional parameters. Parameters k and l are declared as named parameters, which have the respective names "x" and "y". Using these names, values can be passed. After the named parameters, there's the parameter m, which is both flagged as named and slurpy. This parameter will store all remaining named arguments that have not yet been stored by the normal named parameters.

The interesting parameters for us are "c" and "m". For the positional slurpy parameter, Parrot creates an array, while for the named slurpy parameter a hashtable is created. This happens to be exactly what we need! Implementing the array and hash constructors becomes trivial:

.sub '!array' .param pmc fields :slurpy .return (fields) .end

.sub '!hash' .param pmc fields :named :slurpy .return (fields) .end

Array and hashtable constructors can then be compiled into subroutine calls to the respective Parrot subroutines, passing all fields as arguments. (Note that these names start with a "!", which is not a valid Squaak identifier. This prevents us from calling these subs in normal Squaak code).

Basic data types and Aggregates as arguments
All data types, both basic and aggregate data types are represented by Parrot Magic Cookies (PMCs). The PMC is one of the four built-in data types that Parrot can handle; the others are integer, floating-point and string. Currently, the PCT can only generate code to handle PMCs, not the other basic data types. Parrot has registers for each its four built-in data types. The integer, floating-point and string registers store the actual data value, while PMC registers store a reference to the PMC object. This has consequences for how PMCs are handled when passing them as arguments. When passing a PMC as an argument, the invoked subroutine gets access to the PMC reference; in other words, PMCs are passed by reference. This means that the subroutine can change the original argument that was passed by the caller. Of course, it depends what instructions are being generated, what the invoked subroutine does to the references. In Squaak, when passing basic data values, these cannot be changed by the invoked subroutine. When assigning a new value to a parameter, a whole new object is created and bound to the parameter identifier. No changes are made to the original argument. Aggregate data types are handled differently, however. When an invoked subroutine assigns to an index or hashtable field of a parameter, then the original argument is affected. In other words, basic data types have by value semantics, while aggregate data types have by reference semantics. A short example to demonstrate this:

sub foo(a,b,c) a      = 42 b[0]   = 1 c{"hi"} = 2 end

var a = 0 var b = [] var c = {} foo(a,b,c)

print(a, b[0], c{"hi"} ) # prints 0, 1, 2

What's Next?
This was the last episode to discuss implementation details to make Parrot (run) Squaak. After doing this episode's exercises, your implementation should be fairly complete. Next episode will be the last of this series, in which we'll recap what we did, and demonstrate our language with a nice demo program.


text:
Parrot Virtual Machine/Squaak Tutorial/Wrap-Up and Conclusion

Welcome to the final Episode of the Parrot Compiler Tools Tutorial! Let's review the previous episodes, and summarize this tutorial.

Review
In Episode 1, we introduced the Parrot Compiler Tools (PCT), gave a high-level feature overview of Squaak, the case study language that we are implementing in this tutorial, and we generated a language shell that we use as a foundation to implement Squaak.

Episode 2 discussed the general structure of PCT-based compilers. After this, we described each of the four default compilation stages: parse phase, parse tree to PAST, PAST to POST and POST to PIR. We also added a command line banner and command line prompt to the interactive language shell.

In Episode 3, we introduced the full grammar of the Squaak language. After this, we started implementing the first bits, after which we were able to generate code for (simple) assignments.

In Episode 4 we discussed the construction of Parrot Abstract Syntax Tree nodes in more detail, after which we implemented the if-statement and throw-statement.

Episode 5 focused on variable declarations and variable scope. We implemented the necessary infrastructure to handle global and local variables correctly. In Episode 6 we continued the discussion of scope, but now in the context of subroutines. After this we implemented subroutine invocation.

Episode 7 extended our grammar to handle complex expressions that allows us to use arithmetic and other operators. We discussed how to use PCT's built-in support for handling operator precedence.

In the previous episode, Episode 8, we discussed the grammar and action methods for handling the aggregate data types of Squaak: arrays and hashes. We also touched on the topic of argument passing by reference and by value.

If you followed the tutorial and did the exercises, your implementation should be complete. Although a lot of the implementation was discussed, some parts were left as the proverbial exercise to the reader. This is to stimulate you to get your hands dirty and figure out things for yourself, while the text contained enough hints (in my opinion) to solve the given problems. Sure enough, this approach requires you to spend more time and think for yourself, but I think you're reading all this stuff to learn something. The extra time spent is well worth it, in my opinion.

Now it's time to see what we can do with this language. Squaak is more than just the average calculator example, which is often provided in beginner's discussions on parsers; it's a complete programming language.

What's Next?
This is the last episode of the Parrot Compiler Tools tutorial. We showed how we implemented a complete language for the Parrot virtual machine in only a few hundred lines of source code. Surely, this must be the proof that the PCT really is an effective toolkit for implementing languages. At the moment of writing, the PCT still lacks efficient support for certain language constructs. Therefore, we focused on the parts that are easy to build with the PCT. Once the PCT is feature complete, there's bound to be another tutorial on advanced features. Think of object-oriented programming, closures, coroutines, and advanced control-flow such as return statements. Most of them can be done already, but are too complex for this tutorial's level.

The Game of Life
You might have noticed that Squaak looks a bit like Lua, although it does differ in some points. This is not entirely accidental. In the distribution of the Lua source code, there's an example called "life.lua", which implements Conway's "Game of Life". This is a nice demonstration program, and it's easy to port it to Squaak. Its implementation is shown below. Run it, and enjoy!

## John Conway's Game of Life ## Implementation based on life.lua, found in Lua's distribution. ##   var width          = 40    # width of "board" var height        = 20    # height of "board" var generation    = 1     # generation couner var numgenerations = 50   # how often should we evolve?

## initialize board to all zeroes sub initboard(board) for var y = 0, height do           for var x = 0, width do                board[y][x] = 0 end end end

## spawn new life in board, at position (left, top), ## the life data is stored in shapedata, and shape width and ## height are specified. sub spawn(board, left, top, shapew, shapeh, shapedata) for var y = 0, shapeh - 1 do           for var x = 0, shapew - 1 do                board[top + y][left + x] = shapedata[y * shapew + x]            end end end

## calculate the next generation. sub evolve(thisgen, nextgen) var ym1 = height - 1 var y  = height var yp1 = 1 var yi = height

while yi > 0 do           var xm1 = width-1 var x  = width var xp1 = 1 var xi = width

while xi > 0 do

var sum = thisgen[ym1][xm1] + thisgen[ym1][x] + thisgen[ym1][xp1] + thisgen[y][xm1] + thisgen[y][xp1] + thisgen[yp1][xm1] + thisgen[yp1][x] + thisgen[yp1][xp1]

nextgen[y][x] = sum==2 and thisgen[y][x] or sum==3

xm1 = x               x   = xp1 xp1 = xp1 + 1 xi = xi - 1 end

ym1 = y           y   = yp1 yp1 = yp1 + 1 yi = yi - 1

end end

## display thisgen to stdout. sub display(thisgen) var line = "" for var y = 0, height do           for var x = 0, width do                if thisgen[y][x] == 0 then line = line .. "-"               else line = line .. "O" end

end line = line .. "\n" end print(line, "\nLife - generation: ", generation) end

## main program sub main var heart  = [1,0,1,1,0,1,1,1,1] var glider = [0,0,1,1,0,1,0,1,1] var explode = [0,1,0,1,1,1,1,0,1,0,1,0]

var thisgen = [] initboard(thisgen)

var nextgen = [] initboard(nextgen)

spawn(thisgen,3,5,3,3,heart) spawn(thisgen,5,4,3,3,glider) spawn(thisgen,25,10,3,4,explode)

while generation <= numgenerations do           evolve(thisgen, nextgen) display(thisgen) generation = generation + 1

## prevent switching nextgen and thisgen around, ## just call evolve with arguments switched. evolve(nextgen, thisgen) display(nextgen) generation = generation + 1

end end

## start here. main

Note the use of a subroutine "print". Check out the file src/builtins/say.pir, and rename the sub "say" (which was generated by the language shell creation script) to "print".

Solution
If you don't feel like doing exercises or just want to see what it looks like without doing any trouble, here's what it looks like (this is life generation 9).

-   -    -    -O--- OO--- --OO--O-- -OO-- --OOOOO--OOO- O---O ---O-O--- --O---O---O-- --O--O-O--O-- --O---O---O-- ---O-O--- O---O -OOO- -   -    -    -    -

Life - generation: 9 But really, it doesn't compare to seeing this program run on Parrot :-)

Exercises
Squaak was designed to be a simple language, offering enough features to get some work done, but at the same time keeping it simple. Of course, after reading this tutorial, You are an expert too ;-) If you feel like adding more features, here are some suggestions.

 * Implement prefix and postfix increment/decrement operators, allowing you to write "generation++" instead of "generation = generation + 1".
 * Implement augmenting assign operators, such as "+=" and friends.
 * Extend the grammar to allow multiple variable declarations in one statement, allowing you to write "var x = 1, y, z =3". Of course, the initialization part should still be optional. How do you make sure that the identifier and initialization expression are kept together?
 * Implement a mechanism (such as an "import" statement) to include or load another Squaak file, so Squaak programs can be split into multiple files. The PCT does not have any support for this, so you'll need to write a bit of PIR to do this.
 * Improve the for-statement, to allow for a negative step. Note that the loop condition becomes more complex when doing so.

Note that these are suggestions, and I did not implement them myself, so I won't have a solution for you at the end.

Final words and Acknowledgments
By now, you should have got a good impression of the PCT and you should be able to work on other languages targeting Parrot. Currently, work has been done on ECMAScript, Python, Ruby and of course Perl 6. Most of them are not complete yet (hint, hint).

I hope you enjoyed reading this tutorial and learned enough to feel confident about working on other (existing) languages targeting Parrot. The Perl 6 implementation can still use more contributors!

Many thanks to all who read this tutorial and provided me with hints, tips and feedback! Thank You for reading this!

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


text:
Backpack Camping and Woodland Survival/Skills/Hunting and gathering/Primitive Fishing

Hand fishing
It is possible to fish with minimal equipment by using only the hands. In the British Isles, the practice of catching trout by hand is known as trout tickling; it is an art mentioned several times in the plays of Shakespeare.

Trout binning is a method of fishing, possibly fictional, performed with a sledgehammer.

Divers can catch lobsters by hand.

Pearl diving is the practice of hunting for oysters by free-diving to depths of up to 30 m.

Hand-line fishing is a technique requiring a fishing line with a weight and one or more lure-like hooks.

Noodling or Stump Fishing is a technique in which the fisher holds the bait in his or her hand and waits for a large catfish to attempt to eat it; when the fish bites, the fisher pulls his or her arm, along with the fish, from the water.

Seafood can be found in coastal zones as well as rivers and lakes around the world. Seafood suitable for gathering by hand includes aquatic invertebrates such as molluscs, crustaceans, and echinoderms as well as aquatic plants. Some molluscs (shellfish) commonly gathered are oysters, clams, scallops and cockles. Some crustaceans commonly gathered are lobster, crayfish, and crabs. A common plant gathered is kelp. Echinoderms are not gathered as much as mollusks and crustaceans. In Asia, sea cucumber and sea urchins are gathered.

Very little, or no specialized equipment is required to gather many of these sea foods. We would expect to see evidence for shellfish consumption in prehistory, since the discarded shell can remain for long periods. In fact the earliest evidence for shellfish consumption dates back to a 300,000 year old site in France called Terra Amata. This is a hominid site as modern Homo sapiens did not appear until around 50,000 years ago. The importance of shellfish in prehistoric diet has been the source of much debate in archaeology. Sometimes they are referred to as a famine food and their nutritional value is played down at the expense of terrestrial or non-marine food sources.

Some shellfish are gathered by diving. Pearl diving is the practice of hunting for oysters by free-diving to depths of up to thirty metres. Abalone are also gathered by diving. Divers can also catch lobsters by hand.

Spearfishing
The methods and locations freedive spearfishers use vary greatly around the world. This variation extends to the species of fish sought and the gear used.

Shore diving
Shore diving is perhaps the most common form of spearfishing and simply involves entering and exiting the sea from beaches or headlands and hunting around ocean architecture, usually reef, but also rocks, kelp or sand. Usually shore divers hunt between 5 and 25 meters (about 17 to 83 feet) depth, though it depends on location. In some locations in the South Pacific, divers can experience huge drop-offs from 5 meters up to 30 or 40 meters very close to the shore line. Sharks and reef fish can be abundant in these locations. In more subtropical areas, sharks may be less common, but other challenges face the shore diver, such as entering and exiting the water in the presence of big waves. Headlands are favored for entry because of their proximity to deeper water, but timing entries and exits is important so the diver does not get pushed onto rocks by waves. Beach entry can be safer, but more difficult due the need to consistently dive through the waves until the surf line is crossed.

Shore dives can produce a mixed bag of fish, mainly reef fish, but ocean going pelagic fish are caught from shore dives too, and can be specifically targeted.

Shore diving can be done with trigger-less spears such as pole spears or Hawaiian slings, but more commonly triggered devices such as spearguns. Speargun setups to catch and store fish include speed rigs, fish stringers.

The use of catch bags worn close to the body is discouraged because the bag can inhibit movement, especially descent or ascent on deeper freedives. Moreover, in waters known to contain sharks, it is positively dangerous and can greatly increase the risk of attack. The better option is to tow a float behind, to which is attached a line onto which a catch can be threaded. Tying the float line to the speargun can be of great assistance in the event of a large catch, or if the speargun should be dropped or knocked out of reach.

Blue water hunting
Blue water hunting is the area of most interest to elite spearfishers, but has increased in popularity generally in recent years. It involves accessing usually very deep and clear water and trolling, chumming for large pelagic fish species such as marlin, tuna, or giant trevally. Blue water hunting is often conducted in drifts; the boat driver will drop one or more divers and allow them to drift in the current for up to several kilometers before collecting them. Blue water hunters can go for hours without seeing any fish, and without any ocean structure or a visible bottom the divers can experience sensory deprivation. It can be difficult to determine the true size of a solitary fish when sighted due to the lack of ocean structure for comparison. One technique to overcome this is to note the size of the fish's eye in relation to its body - large examples of their species will have a relatively smaller eye.

Notably, blue water hunters make use of breakaway rigs and large multi band wooden guns to catch and subdue their prey. If the prey is large and still has fight left after being subdued, a second gun can be used to provide a kill shot at a safe distance from the fish. This is acceptable to IBSRC and IUSA regulations as long as the spearfisher loads it himself in the water.

Blue water hunting is conducted world wide, but notable hot spots include South Africa (yellow fin tuna) and the South Pacific (dog-tooth snapper). Blue water pioneers like Jack Prodanavich and Hal Lewis of San Diego were some of the first to go after large species of fast moving fish like Tuna.

Without diving
These methods have been used for thousands of years. A fisher wades in shallow salt or fresh water with a hand spear. The fisher must account for optical refraction at the water's surface, which makes the fish appear to be further away. By experience, the fisher learns to aim lower to hit the target. Calm and shallow waters are favored for spearing fish from above the surface.

Fish traps
A fishtrap is a trap resembling a fishing weir or a lobster trap. It consists of a frame of thick steel wire, usually in the shape of a heart, with chicken wire stretched around it. The mesh wraps around the frame and then tapers into the inside of the trap. When a fish swims inside through this opening, it cannot get out, as the chicken wire opening bends back into its original narrowness. A fishing weir is an ancient type of fish trap that is traceable back to Roman times in the UK. It is also a technology used by, among others, North American Natives and early settlers to catch fish for trade and to feed their communities.

The fishtrap is best placed in shallow water near rocks, where pikes in particular like to lie. The trap is usually very effective for an amateur fisher, if placed correctly. It is usually not necessary to check the trap daily, since the fish remain alive inside the trap, relatively unhurt. Because of this, the trap also allows for the release of undersized fish as per fishing regulations.

Formerly, it has also been constructed of wood and/or wood splints.


text:
User talk:12.205.159.23

--ЗAНИA talk 23:01, 8 April 2008 (UTC)

You have been blocked from editing Wikibooks for a period of 1 day because of repeated vandalism.

--ЗAНИA talk 23:12, 8 April 2008 (UTC)

title: User talk:12.205.159.23


text:
User talk:81.242.245.51

Join Us!
-- – Mike.lifeguard  | talk 00:00, 9 April 2008 (UTC)

S’il vous plaît créer un compte pour administrer un robot. Merci. – Mike.lifeguard  | talk 00:12, 9 April 2008 (UTC)

title: User talk:81.242.245.51


text:
User talk:70.143.92.124

--ЗAНИA talk 00:08, 9 April 2008 (UTC)

title: User talk:70.143.92.124


text:
User:Pythie~enwikibooks

Hello, i'm french I help on the "Livre de cuisine" French Cookbook.

title: User:Pythie~enwikibooks


text:
User talk:Pythie~enwikibooks

Welcome, Pythie!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.

Salute, Mike has already greeted you but welcome to Wikibooks anyway.

--ЗAНИA talk 00:12, 9 April 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 Pythie. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Pythie~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:38, 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:23, 19 April 2015 (UTC)

title: User talk:Pythie~enwikibooks


text:
Futurebasic/Language/Reference/mouse position

Description
If your program does not do any kind of event-trapping using the  statement, then you can use the   function to determine whether the mouse button is currently down. In these circumstances,  returns  is the button is down, or   otherwise.

The  function will not work if your program traps events using. Since most well-designed programs trap events this way, the  function is probably of limited usefulness. See the functions to learn how to respond to mouse clicks using event trapping.

Note: You can also use the Toolbox function  to determine whether the mouse is currently down. works regardless of whether your program uses event trapping.


text: User talk:70.21.152.210

title: User talk:70.21.152.210


text:
Futurebasic/Language/Reference/handleevents

Syntax
HANDLEEVENTS

Description
performs a number of important functions that affect the user's experience. It examines the system event queue, as well as FutureBasic's internal event queues, to see whether any recent events have occurred for your program, that have not yet been handled. If any such events are found,  removes them from the queue and responds to them. also performs the important function of turning over control to the Process Manager. The Process Manager oversees the execution of all processes on your Macintosh; once it has control, the Process Manager may allow another application to run for a short time before returning control to your application.

responds to some kinds of user actions by calling functions that you have designated in your program. It responds to other kinds of user actions in predetermined, "automatic" ways.

"Automatic" responses by  Allows the Process Manager to bring another process to the front, if the user has selected it in the Applications menu or clicked in one of its windows.

Opens menus and tracks selection, if user has clicked on the menu bar.

Activates an inactive window, if the user has clicked on the window's structure region (e.g. its title bar). (This action is inhibited if the window's  attribute is set.)

Handles dragging & resizing of the active window.

Performs "standard" handling of mouseclicks and keystrokes in the currently active edit field (if any).

Highlights & tracks various objects when they're clicked (e.g. buttons, window close box, etc.)

For any window that requires updating: redraws all buttons, scrollbars, edit fields and picture fields (unless the window's  feature is set). Also redraws certain parts of the window's structure region.

If the user presses cmd-period, and no  function has been identified, then   displays a dialog asking whether the user wants to stop or to continue. If the user elects to stop, FB then calls your designated  function (if any), and then halts the program.

NOTE: You can inhibit and/or alter these responses by trapping low-level events (especially the  event) in a system event-handling function. See below for more details.

"Programmed" responses by  There are many kinds of common user actions, such as button clicks and menu selections, which you will want to explicitly handle with program statements. When you write a function that is to handle events of a certain type, you designate it as an event-handling function by executing statements like, or. Once you've designated your event-handling function(s) this way,  will examine recent user actions to determine whether any of them are of the kind that your function(s) can handle. If any such events are found,  calls the appropriate event-handling function once for each such event. See the descriptions of the various statements, to learn what types of user actions can be handled.

If you haven't identified a function to handle a certain class of user actions, then  just ignores actions of that class. For example, if you have not identified any function with the  statement, then   will ignore button clicks and other similar actions. will still perform the "automatic" responses listed above, however.

Intercepting system events There may be times when you need greater control over how  responds to certain events. For example, you may want to inhibit or alter some of the "automatic" responses that  normally performs. To do this, you should designate one of your functions as a "system event-handling function," by using the statement. Once you've designated such a function,  calls that function first, before it executes any of its "automatic" responses and before it calls any of the other event-handling functions you may have designated. either passes a system event to your function (if there's an event in the queue), or it passes a "null event" to your function (if there are no events in the queue).

After your system event-handling function returns,  continues to handle that same event, unless it was a null event. Depending on what the event was,  may perform some of its "automatic" responses, or it may call another one of your event-handling functions. If you don't want  to continue handling the event after your system event-handling function exits, then you need to "trick" FB into thinking that the event was a null event. You do this by executing a line like the following, in your system event-handling function, after you've handled the event:

where  is a pointer to the event record.

In order to provide the user with snappy response to actions, and to share execution time with other processes, your program should call  as often as possible. Most well-designed programs contain a "main event loop" which calls  repeatedly for as long as the program is executing, allowing   to call the various event-handling functions as events occur.


text:
Talk:Linux Guide/Installing (basic)

Started with Ubuntu, had to skim on details a little. Will add Red Hat / Fedora later. (Could an OpenSuse user join in to? that should cover the bases).

Sure!
I'd be glad to help write this page. I will try to provide pictures, too! Thedjatclubrock (talk) 00:05, 13 November 2008 (UTC)

title: Talk:Linux Guide/Installing (basic)


text:
Futurebasic/Language/Reference/handshake

Syntax
HANDSHAKE portID, handshakeType

Description: Sets the handshaking parameter for the open serial port specified by  (which can be either   or  ). The handshaking parameter determines how i/o operations will be negotiated when your program subsequently writes to or reads from the specified port. can take any of the following values:

INSERT IMAGE HERE!!!!!!

To determine the best handshaking format for a device, see the device's manual.

Note: You must open the serial port (use the ... statement) before executing the   statement.

Powerbooks require an initialization setting of  to preset the serial port properly.


text:
Futurebasic/Language/Reference/hexstring

Syntax
hexString$ = HEX$(expr)

Description
This function returns a string of hexadecimal digits which represent the integer value of. The returned string will consist of either 2, 4 or 8 characters, depending on which of,   or   is currently in effect. Note that if the value of  is too large to fit in a hex string of the currently selected size, the string returned by   will not represent the true value of.

In FB, integers are stored in standard "2's-complement" format, and the values returned by  reflect this storage scheme. You need to keep this in mind when interpreting the results of, especially when   is a negative number. For example:  returns " " when   is in effect; " " when   is in effect; and " " when   is in effect.

Note: To convert a string of hex digits into an integer, use the following technique:

can be a (signed or unsigned) byte variable, short-integer variable or long-integer variable. Byte variables can handle a  up to 2 characters in length; short-integer variables can handle a   up to 4 characters in length; long-integer variables can handle a   up to 8 characters in length.


text:
Linux Guide/Installing (basic)

Here, we will cover installing an Ubuntu system to your hard drive. Most other distributions use a very similar installation process. If the differences between this documentation and your distro are too great, check the documentation provided for your distro.

Ubuntu Linux has quickly become the golden boy of open source and is considered by some as being the first truly easy-to-use Linux operating system. This is largely because of the installation process which allows the user to run the operating system prior to installation.

Boot the LiveCD
To start an install, place the Ubuntu CD (or DVD) in your computer and reboot.

When the computer starts again, it should display a screen with the Ubuntu logo displayed on it and a list of options. If your computer does not do so, you may need to set the BIOS to boot from CD.

Select the first option in the menu to boot into an Ubuntu desktop session. If you wish, you can get to know the Ubuntu operating system at this point. Using it in roughly the same manner that you would when fully installed (though it is advised not to log out).

Once you feel prepared to start installation, click on the "install" icon on the desktop.

Begin installation
Answer the questions on the first few screens of the installation window (language, location, etc.).

(Re-)Partitioning

 * For dual-boot systems, see ../Installing (dual-boot).
 * For advanced partitioning schemes, see ../Installing (advanced).

When you get to a screen asking which hard disk you wish to install to, select automatic partitioning unless you have planned in advance not to use this one. This will erase everything on your hard drive!

If you want to use one hard drive for multiple operating systems (for example, Windows and Linux), see ../Installing (dual-boot).

If you want to use multiple partitions for your linux operating system (it is recommended to use separate partitions for  and   at least), see ../Installing (advanced).

Set up your user account
Continue to the next screen and then fill in your name and desired password. This will become your administrative account. If you do not want to use such on a daily basis, fill in your name as master user or such and place an appropriate account name in its text box. Using this account, you can create further accounts on the computer (note that the name Administrator is not available).

Once you have done this, click on Next, check the details are correct and click Next again to start the actual installation process which will likely take around 20 to 30 minutes at the most.

After this a prompt will appear saying that you should reboot. After doing so, Ubuntu is ready to be used.

title: Linux Guide/Installing (basic)


text:
Futurebasic/Language/Reference/kill appleevent

Syntax
KILL APPLEEVENT eventType&, eventClass&

Revised
May, 2001 (Release 5)

Description
Once established, an Apple Event remains in effect for the life of your program. This includes event handlers that you create as well as event handlers that are created by the runtime. One example might be the apple event that opens a document. Its event type is  and its class is. If you wanted to override these established settings you would begin by removing the old version.

Now you are ready to establish a new vector.

Example: INSERT IMAGE HERE!!!!  CD Example: AppleEvents Folder


text:
User talk:Iwasapenguin

Welcome to Wikibooks, Iwasapenguin! – Mike.lifeguard  | talk 01:28, 9 April 2008 (UTC)

title: User talk:Iwasapenguin


text:
User talk:Chuckstopher

Welcome to Wikibooks, Chuckstopher! – Mike.lifeguard  | talk 01:28, 9 April 2008 (UTC)

title: User talk:Chuckstopher


text:
Wikibooks:Chess

Chess Books on wikibooks
The wikibooks about chess are currently:
 * Chess
 * Chess Opening Theory
 * Arimaa (Chess variant)
 * Chess Strategy

Suggested things to work on
Do whatever you find interesting, here are some suggestions.

 * Any of the Chess stubs, which can be found Category:Chess stub, especially those stub pages of Top or High importance.

 * Add any page that is red linked in ECO Volume A, Volume B, Volume C, Volume D, Volume E.

 * Complete remaining lines in ECO E00--E99

Nuvola_apps_kuser.png Participants
This is a list of Chess Wikibookians who are committed to this Wikibooks:Chess Project. If you’re interested in helping, feel free to join by adding your name to the list below. If you wish, comment about your special interests on this project followed by your signature with or four titles ~.
 * SubCreator (talk | contribs) 16:37, 2 April 2008 (UTC)
 * Νεοπτόλεμος ( talk | email | contribs ) 17:16, 8 April 2008 (UTC) - not an expert on the game by any means, but interested in learning and helping out with this project.
 * Tomson (talk) 00:12, 30 April 2008 (UTC)
 * Anonymouse (talk) I excel at the game but am next to clueless on how to actually put the articles up. 21:47, 28 May 2008 (UTC)
 * Chi Sigma (talk) 19:30, 23 September 2008 (UTC)
 * Greenman (talk) For now mostly working on opening theory, starting with the Caro Kann. Greenman (talk) 08:39, 27 January 2009 (UTC)
 * ThreeE (talk) 12:43, 11 June 2009 (UTC) Love what you all have accomplished here to date.
 * Download (talk) 05:19, 24 June 2009 (UTC) Very interested in chess; devoted to working on pages related to chess openings.
 * Tommy Kronkvist (talk) – I would like to contribute to articles related to endgame theory, and texts regarding the "grammar" of algebraic notation. – 21:53, 16 March 2010 (UTC).
 * Drieux (talk)I'm an old correspondence (postcards!) and OTB player working to get my ICCF/Fide ratings back over the 2000 line. Mostly interested in the 'how to improve' morass and openings/tactics/endings. I hope to lend a hand (and library) as time occurs. --Drieux (talk) 06:38, 10 July 2010 (UTC)
 * What no2000 (talk) 10:47, 22 July 2010 (UTC) – I have tried to improve the main chess wikibook.
 * Whoop whoop pull up (talk) 12:17, 13 March 2011 (UTC)
 * User:ploucroux (talk) - Most work in the Accelerated Dragon, some other lines also. 19 November 2014
 * Aljechin7 (discuss • contribs) 00:45, 2 December 2017 (UTC) - Working on opening theory, primarily the English Opening.
 * Dexxor (discuss • contribs) 19:00, 3 February 2022 (UTC) – Opening Theory, maintenance, templates

You can also show your interest in chess by adding to your user page.

Categories

 * :
 * :
 * :
 * /Templates
 * Category:Chess stub
 * Category:Wikibooks Chess participants

Similar Projects
WikiProject Chess

title: Wikibooks:Chess


text:
Wikibooks talk:Chess

Skip to: Bottom of page

To do

 * List of chess topics ✅
 * Create a Wikibooks Chess user box. ✅
 * Rename the WPChess navigation template. ✅
 * Get a working ChessOpenings template. Template:ChessOpenings ✅
 * Links opening names to relevant page with redirect.
 * 1) Sicilian Defence redirects to Chess Opening Theory/1. e4/1...c5 etc. All that exist are done. Full list of redirects on Talk:List_of_chess_topics ✅
 * 2) Chess Opening Theory/Sicilian Defence redirects to Chess Opening Theory/1. e4/1...c5 for use with Wikibookspar template. Skip this part going to create another template to avoid extra redirects.
 * Talk page template. This page is within wikibooks chess etc. ✅
 * Diagram template to have Heading bar with optional opening name/line. ✅
 * Convert all positions to standard layout, upgraded diagram, opening navigation list etc. ✅
 * Document recent new templates so anyone can understand them. ❌
 * Redirects so opening names can be without 's when possessive. ❌
 * Finish Elements of chess strategy. ✅

Uncategorised pages to categorise
Add category and add to Chess Topics ChessCreator (talk) 00:18, 3 April 2008 (UTC)
 * Chess/Development ✅
 * Chess/Mobility ✅
 * Chess/The center ✅
 * Chess/The positions of the kings ✅
 * Chess/Variants/Chinese Chess ✅
 * Plus
 * Elements of chess strategy ✅
 * Weak and strong squares (Redlink) ✅
 * Arimaa (A chess variant) ✅

ChessCreator (talk) 11:22, 3 April 2008 (UTC)

Needed to be recategorized

 * Elements of chess strategy ✅
 * Chess/Development ✅
 * Chess/Mobility ✅
 * Chess/The center ✅
 * Chess/The positions of the kings ✅

Suggested New Section
I was wondering wether any would be interested in collaborating on a book about the history of chess that would explain how all the accepted theories came to be formed and what the major movements were in chess thinking. Maybe from the lives of the great chess masters and what new ideas they brought to the game. I am always surprised at how differently chess was played 200 years ago when all out attack was considered the only way to victory and I think it is important and interesting to understand the developements. I am by no means an expert or even a well read amatuer bu I would be happy to help research and organise if anyone else would be interested. Storeye (talk) 10:02, 25 June 2008 (UTC)

 * I might consider doing that later. However, it's probably going to be delayed, what with all my other projects

Anonymouse--nerd and proud of it (talk) 01:14, 26 June 2008 (UTC)

title: Wikibooks talk:Chess


text:
Futurebasic/Language/Reference/kill dynamic

Syntax
KILL DYNAMIC arrayName

Revised
May, 2001 (Release 5)

Description
This statement releases the memory allocated for use by a dynamic array. The array may still be used after the  statement is executed and will begin to grow once again as information is added.


text:
Futurebasic/Language/Reference/kill field

Syntax
KILL FIELD handle&

Description
This statement disposes of the specified handle. This means that the memory block referenced by  gets released, and the value in   is thereafter no longer a valid handle. is commonly used with handles returned by or , but it can dispose of any kind of handle. However, you should specifically NOT use it to dispose of resources, regions, window controls, and other "standard" kinds of Macintosh objects which are created and managed by the MacOS. Instead, you should use the appropriate Toolbox routine (ReleaseResource, DisposeRgn, DisposeControl, etc.) to dispose of such objects.

is similar to the Toolbox call, except that it (like the   statement) checks for   handles and sets the   variable to zero.


text:
Futurebasic/Language/Reference/kill picture

Syntax
KILL PICTURE pictureHandle&

Description
This statement calls the Toolbox procedure KillPicture, which releases the memory occupied by the picture which is specified by. This should be a handle that your program created using the,   statements (or the Toolbox routines OpenPicture and ClosePicture), or the   statement. You should not use  to release a picture handle that was created by other means (for example, a picture resource handle).

Warning: Do not use  to kill a picture that is currently being displayed in a picture field. You must close the picture field first (using the statement) before calling.

Warning: You should make sure that  does not equal zero before calling. Disposing of a "nil handle" can cause problems on some older systems.


text: User talk:203.14.53.15

title: User talk:203.14.53.15


text:
Futurebasic/Language/Reference/kill preferences

Syntax
KILL PREFERENCES prefFileName$

Revised
Feb 2002 (Release 6)

Description
This routine locates and deletes a file with the specified name in the preference folder. If the file does not exist, this statement does nothing.

A full example of using the new  commands can be found on the   reference page.


text:
Futurebasic/Language/Reference/kill resources

Syntax
KILL RESOURCES "resType", resID%, ["resType", resID%...]

Revised
October 19, 2000 (Release 4)

Description
This statement will store specified resource types and IDs in an internal list. When one of these resources is encountered by the compiler, it will not be added to the built application.

There are two important reasons for a call like this. The first is that resources normally included in the runtime shells may be considered unnecessary by a programmer may easily be deleted from the finished product. The second is that multiple resource files may be used and unnecessary resources may be eliminated programmatically.

Example: To prevent a picture resource with an ID of 8001 from being added to the compiled application, the syntax would be:


text:
Futurebasic/Language/Reference/kill

Syntax
KILL path$ [,refNum% [,dirID&]]

Description
This statement deletes a (closed, unlocked) file or folder from the disk. The parameter can be either a full or partial pathname; the   parameter can be a working directory reference number, a volume reference number, a drive ID number, or zero. The  parameter is a directory ID number of the item's parent directory. If  is not specified, then the current   value (if nonzero) is used instead. resets the  value to zero after the item is deleted.

The easiest way to use this statement is to specify the item's name in, the volume reference number of its volume in  , and the ID number of its parent directory in. For other ways to use these parameters, see Appendix A: Specifying Files and Folders.

Note: You cannot delete a folder if it has any contents, nor if the folder is "open." A folder is considered "open" if your program has executed any statement which returned a working directory reference number for the folder, and has not subsequently closed it using the  statement.

title: Futurebasic/Language/Reference/kill


text:
User talk:Hcir614

Welcome message
Welcome, Hcir614!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Webaware talk 03:11, 9 April 2008 (UTC)

title: User talk:Hcir614


text:
User talk:129.21.196.109

Join Us!
--Webaware talk 03:15, 9 April 2008 (UTC)

title: User talk:129.21.196.109


text: User talk:69.62.138.240

title: User talk:69.62.138.240


text: Unicode/Character reference/1F000-1FFFF

title: Unicode/Character reference/1F000-1FFFF


text:
Royal Australasian College of Physicians Examinations/Introduction

This page is a place-holder for the general introductory text for this book.

/About this book/

/Disclaimers/


text:
Futurebasic/Language/Reference/cvi

= CVI function =

Function
✔ Appearance ✔  Standard ✔  Console

Description
This function converts the bytes in  into an integer value which has the same internal bit-pattern that   has. If  consists of 4 or more bytes, only its first 4 bytes are considered. If  consists of 1, 2 or 3 bytes, then   returns an 8-bit, 16-bit or 24-bit integer, respectively. If  is a null string, then   returns zero.

This function is useful for finding the integer form of such things as file types, creator signatures and resource types. For example:

After executing the above,  is then suitable for passing to a Toolbox routine which requires a file-type parameter. will also have the same value as the integer constant

The size (in bytes) of the value returned by  depends on the length of. It does not depend on the current setting of. Therefore, if you want to assign the return value of  to a short integer variable, you must make sure that   is not longer than 2 bytes; otherwise, you'll get an unexpected value in your short integer variable. Similarly, if you want to correctly assign 's return value to a byte variable, you should make sure that   is not longer than 1 byte.

The  function is the inverse of. Note, however, that the output of  does depend on the current setting of.

Note
If  is 1 byte long, then   returns the same value as.

title: Futurebasic/Language/Reference/cvi


text:
Futurebasic/Language/Reference/csrlin

= CSRLIN function =

function
✔ Appearance ✔  Standard ✔  Console

Description
This function returns the number of the "current" text line (that is, the text line which contains the current pen position) for the current window. The text line at the top of the window is considered Line #0.

does not necessarily reflect the number of text lines which have actually been displayed. It is calculated based on the current pen position and the size of the current font.

Example
FB Lite behavior: When you use the "FB Lite" runtime,  switches to the Text Window before executing. The value returned is the actual line number in the edit field and remains accurate even when the field is scrolled.

title: Futurebasic/Language/Reference/csrlin


text:
Talk:C++ Programming/About the Book

There is a grammatical error in the following sentence:

However if this is your first contact with programming then continue on reading, and take in consideration that the Programming Paradigms section can be hard to digest if you lack some bases, don't despair, the relevant points will be extended when other concept are introduced, that section is provided to give you a mental framework to help you not only to understand C++, but to let you easily adapt to (and from) other languages that share those concepts.

Should be "...when other concepts are introduced..."

Note that concept is singular in the current form, which creates a disagreement with the following word, "are"

 * Txs for spotting that... I have corrected it now. --Panic (talk) 14:13, 9 April 2008 (UTC)

Conflicting goals?
It looks like there has been some conflict about what this book is suppose to be, the oldest charter I could find indicated that this was intended to be a reference book, the structure of this book seems to follow one that of an expanded reference book, but this statement contradicts this:

''This book covers the C++ programming language, its interactions with software design and real life use of the language. It is presented as an introductory to advance course but can be used as reference book.''

Was there any official consensus on this? Phosgram (talk) 19:45, 5 October 2010 (UTC)

 * It was the result of a administrative forced merge of 2 works, even if I was the only one to object to the merge, we can state that it was a consensus as restoring to the previous situation is impossible now.
 * In any case there is no active conflict now. --Panic (talk) 19:56, 5 October 2010 (UTC)

 * Ah, that explains things. To pose a different question then, would starting a new book with the goal of being strictly a complete and detailed reference of the standard library (basic descriptions \ prototypes \ example code) be acceptable?  There might be a lot of overlap with this book and I'm not sure if it would violate the "Wikibooks is not" guidelines, but if this book is intended to become a introductory to advanced "learn C++" book I'm thinking trying to make it back into a detailed reference book would be "chasing two hares". Phosgram (talk) 02:22, 6 October 2010 (UTC)

 * There is already one Understanding C++ (standard restricted) if you need only to stick to the standard if not and you are intending to duplicate content then extend this one. Take a look on the C Standard part of this book, I think that is what you are proposing, notice that since there is no real editorial control it would be extremely difficult to keep it clean (without the theory part) you can already notice some creep on the C standard library.
 * See if you would like to complete the C++ Programming/Programming Languages/C++/Code/Keywords, I have been doing that slowly as to make it fit the rest of the book the result seems to be what you are after.
 * C++ Programming/Programming Languages/C++/Code/Keywords/union and C++ Programming/Unions can give you an idea. --Panic (talk) 05:31, 6 October 2010 (UTC)

 * Understanding C++ isn't what I'm considering, you are correct about something similar to C Standard part.
 * See if you would like to complete the Keywords...
 * So the goal of having a full standard reference as part of this book is still being pursued? I guess I'm finding the current guidelines a bit ambiguous as to what scope(s) this book is intending to cover (a "kitchen sink" style C Primer Plus, a K&R-like general overview, an "expanded reference", or something else?). I didn't think a "kitchen-sink" approach would be desirable for the reason you listed (no strict control making it difficult to keep clean). It would be quite difficult to keep the unrelated subsections, such as the reference part of the book and the individual lessons, from mixing together into a tangled mess as new contributors add new content. Phosgram (talk) 09:08, 7 October 2010 (UTC)

 * The keywords, data types, etc, aren't the a full standard reference...
 * If you have a copy of the standard you can see that it has lots of theory but it can't be used directly to learn the language as it takes for granted that the reader already "knows" the language, it is a reference text. Well it could but it would be extremely difficult to rely only on it for learning the language...
 * To me the scope of this book is all things C++ (until very recently this was the only wikibook on the C++ language), with the concern in the ordering and interconnecting the material in a way it can be used as a learning textbook, so far we have managed that. As I said see if you can work on the keywords for now, I will help you out with making it fit with the rest of the text... --Panic (talk) 14:22, 7 October 2010 (UTC)

 * I'm guessing, from the earlier discussions I was able to find, it was suppose to be a reference on the essential features of the language rather then the whole standard. Probably a mistake on my part, but I can't find the page I was reading that proposed the book be a reference guide.
 * I don't think having an "all things C++" scope is realistic if you ever want this book to be finished. There is a near infinite number of topics that could fall under that scope. Phosgram (talk) 22:59, 9 October 2010 (UTC)

 * We can certainly limit what goes into the book but by definition a Wikibook is never finished at best it will be in a usable state and that can be archived at different states of development, a strict limitation will be harder to implement that leaving it open ended to participation. So far there is much of the basic still missing for example locale and streams have almost no work done. --Panic (talk) 00:30, 10 October 2010 (UTC)

title: Talk:C++ Programming/About the Book


text:
Royal Australasian College of Physicians Examinations/Resources/Clinical Exam/Short Cases

This page will hopefully be a collection of summaries for various short cases - both the procedure to follow for the examinations, and also a card for each common short case, listing the things to look out for.

 * Neurology
 * Examination of the Lower Limb
 * The Eye Examination

 * Example Case Presentations


text:
Royal Australasian College of Physicians Examinations/Resources/Clinical Exam/Short Cases/Neurology

This collection of cards has been put together from the Neurology short case tutorials at Princess Alexandra Hospital in 2008, given by Senior Staff Neurologist Dr Rick Boyle.

The Eye Examination

The Lower Limb Exam


text:
Royal Australasian College of Physicians Examinations/Resources/Clinical Exam/Short Cases/Neurology/The Lower Limb Examination

Work in progress!

This card is a suggested method for the neurological examination of the lower limb.

Example Stem: "This patient has noticed difficulty walking.  Please examine him."

Initial Inspection

 * Wash your hands
 * Introduce yourself to the patient and shake their hand
 * Ask the patient to undress to their underwear
 * With the patient standing upright in front of the examination couch, perform a general inspection
 * Look for wasting or asymmetry
 * Look for unsteadiness of their posture at rest
 * Ask them if they usually require a walking aid
 * Get them to walk a few steps away from you, assessing their gait
 * Ask them to turn and walk back towards you
 * Test their Rhomberg's sign by asking them to stand with their feet together, then close their eyes
 * Make sure they are standing away from the couch / wall so they cannot lean against it
 * Be seen to be ready to catch them if they are Rhomberg's positive
 * If their gait was normal and there was no obvious weakness, test proximal strength by asking them to squat, then rise from squatting
 * If this is normal, then ask them to repeat, looking for fatiguability suggesting myaesthenia
 * If the patient is able to do this, the abnormality is probably not in the motor system
 * While they are standing, examine their lower back for scars or tender areas
 * Ask them to lie supine on the couch
 * At rest, examine proximally for fasiculations in the thigh muscles

Assess Tone

 * Ask the patient to try and relax completely. Explain you will move their leg, but you do not want them to help at all
 * Dorsiflex and plantarflex one ankle a few times to assess their relaxation. Once happy they are relaxed, forcefully dorsiflex (not too hard!) to look for clonus


text:
User:Hitsthings

Hey I probably won't edit here much. Just wanted to fix some blatant issues with Logic_puzzles --Hitsthings (talk) 06:27, 9 April 2008 (UTC)

title: User:Hitsthings


text:
User:Bikrammca08

Partial Classes

As the name indicates, partial class definitions can be split up across multiple physical files. To the compiler, this does not make a difference as all the fragments of the partial class are grouped and the compiler treats it as a single class. One common usage of partial classes is the separation of automatically generated code from programmer written code.

Below is the example of a partial class. Listing 1: Entire class definition in one file (file1.cs)

public class Node {   public bool Delete {   }

public bool Create {   } }

Listing 2: Class split across multiple files

(file1.cs)

public partial class Node {   public bool Delete {   } }

(file2.cs)

public partial class Node {   public bool Create {   } }

title: User:Bikrammca08


text:
A-level Physics (Advancing Physics)/Finding the Distance of a Remote Object

In the final section (Section C) of the exam, you have to be able to write about how waves are used to find the distance of a remote object. I would recommend that you pick a method, and then answer the following questions about it:

1. What sort of wave does your system use? What is an approximate wavelength of this wave?

2. What sort of distance is it usually used to measure? What sort of length would you expect the distance to be?

3. Why is measuring this distance useful to society?

4. Draw a labelled diagram of your system.

5. Explain how the system works, and what data is collected.

6. Explain how the distance to the object is calculated using the data collected.

7. What limitations does your system have? (e.g. accuracy, consistency)

8. What percentage error would you expect these limitations to cause?

9. How might these problems be solved?

Examples
Some example answers to these questions are given in the following pages:

 * /Radar/
 * /Sonar/


text:
A-level Physics (Advancing Physics)/Finding the Distance of a Remote Object/Radar

'''1. What sort of wave does your system use? What is an approximate wavelength of this wave?'''

Radio waves, with a wavelength ranging from 2.7mm to 100m.

'''2. What sort of distance is it usually used to measure? What sort of length would you expect the distance to be?'''

The distance to an object within the radio horizon. This width is given by the formula:

$$\mathrm{horizon}_\mathrm{km} = 3.569 \times \sqrt{\mathrm{height}_\mathrm{metres}}.$$

So, a radar 10m above the Earth's surface has a range of 11.3 km.

3. Why is measuring this distance useful to society?

e.g. Radar is used at airports to locate aeroplanes and co-ordinate them so that they can land safely, avoiding collisions.

4. Draw a labelled diagram of your system.

5. Explain how the system works, and what data are collected.

The 'dish' rotates, and the transmitter on it transmits a pulse of radio waves. The waves, if they hit an aircraft, are reflected by it. The dish reflects the reflected radio pulse onto a receiver (allowing for some variety in incoming angles due to varying distances of aircraft). The time taken for the signal to travel to the aircraft and back is recorded, and the speed of the radio pulse (3 x 108ms−1) is already known.

6. Explain how the distance to the object is calculated using the data collected.

$$v = \frac{s}{t}$$

$$s = tv\,$$,

where s = distance, t = time and v = velocity. In this case, the time taken to travel to the aircraft t is half of the total time taken to travel to the aircraft and back T, so:

$$s = \frac{Tv}{2}$$

'''7. What limitations does your system have? (e.g. accuracy, consistency)'''

 * Random noise e.g. birds, weather
 * Deliberate attempts to evade radar detection e.g. radio-wave-absorbent paint
 * The aircraft are moving, so, in the time taken for the signal to return to the radar station and be processed, the aircraft will no longer be in the position calculated.

8. What percentage error would you expect these limitations to cause?

If we assume a distance from station to aircraft as 5 km, the speed of EM waves as 3 x 108ms−1 and the aircraft's speed as 500kmh−1, the time taken for the signal to return from the aircraft would be 1.67 x 10−5s. 500kmh−1 = 500000mh−1 = 139ms−1. Therefore, the aircraft would have moved 2.31mm in the time taken for the signal to return to the radar station. This means that there is a ±0.0000463% potential for error in the distance reading, depending on the direction of the aircraft's travel. This may seem insignificant, but readings are only taken once every rotation of the dish, so this potential error gets a lot larger in reality.

9. How might these problems be solved?

Take multiple readings over a period of time, and use a computer to predict where the aircraft will be next given the aircraft's current trajectory.


text:
A-level Physics (Advancing Physics)/Finding the Distance of a Remote Object/Sonar

'''1. What sort of wave does your system use? What is an approximate wavelength of this wave?'''

Sound waves travelling in water, with an approximate wavelength of the order of 100μm.

'''2. What sort of distance is it usually used to measure? What sort of length would you expect the distance to be?'''

Distances to things under water, so up to 11 km.

3. Why is measuring this distance useful to society?

It enables fishing trawlers to find schools of fish, which can be used to feed people.

4. Draw a labelled diagram of your system.

5. Explain how the system works, and what data are collected.

A sonar pulse of known velocity is transmitted down into the sea bed. It is reflected of an object, and returns to the ship-board receiver. The time taken to travel there and back is recorded.

6. Explain how the distance to the object is calculated using the data collected.

$$v = \frac{r}{t}$$

$$r = tv\,$$,

where r = distance, t = time and v = velocity. In this case, the time taken to travel to the object (e.g. fish) t is half of the total time taken to travel to the object and back T, so:

$$r = \frac{Tv}{2}$$

'''7. What limitations does your system have? (e.g. accuracy, consistency)'''

All sorts of weird things happen with different shapes of object and different frequencies. Accuracy is inversely proportional to the width of the range of frequencies used.

8. What percentage error would you expect these limitations to cause?

9. How might these problems be solved?

Use a narrower band of sound.


text:
Talk:Muggles' Guide to Harry Potter/Books/Chamber of Secrets/Chapter 1

1.when is harry potter brithday?

July 31, 1980. Chazz (talk) 00:47, 27 May 2008 (UTC)


text:
User talk:Ndhuang

Welcome message
Welcome, Ndhuang!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Webaware talk 11:13, 9 April 2008 (UTC)

title: User talk:Ndhuang


text:
User talk:194.72.50.162

GCSE Science/Uses of static electricity
G'day, can you please provide a source for the copy and paste claim? If it is a copyright violation, it needs to be removed from Wikibooks. thanks, Webaware talk 11:18, 9 April 2008 (UTC)

Test
--Pmlineditor (t · c · l) 14:58, 18 March 2011 (UTC)

June 2011
We welcome and appreciate your contributions, but your recent edits to Wikijunior:Big Book of Fun Science Experiments/Paper Helicopter had to be undone. Please see What is Wikibooks? to learn more about what contributions are beneficial to Wikibooks. Please be aware that some edits can be considered vandalism, use the sandbox for any test edits you would like to make, and read the welcome page to learn more about contributing constructively to this project. Thank you. – Adrignola discuss 13:10, 20 June 2011 (UTC)

title: User talk:194.72.50.162


text: User talk:72.10.98.4

title: User talk:72.10.98.4


text:
Backpack Camping and Woodland Survival/Skills/Hunting and gathering

Navigation Historical, subsistence and sport hunting techniques can differ radically, with modern hunting regulations often addressing issues of where, when and how hunts are conducted. Techniques may vary depending on government regulations, a hunter's personal ethics, local custom, firearms and the animal being hunted. Often a hunter will use a combination of more than one technique, and some are used primarily in poaching and wildlife management, explicitly forbidden to sport hunters.
 * Primitive fishing
 * /Hunting/
 * /Tracking/
 * Traps and snares
 * /Seasons/
 * Safety and laws
 * /Gutting/
 * /Skinning/
 * /Butchering/
 * /Cleaning/
 * Field dressing
 * /Gathering/
 * /Plants/
 * /Medicine/

 * Baiting is the use of decoys, lures, scent or food to attract animals
 * Blind or stand hunting is waiting for animals from a concealed or elevated position
 * Calling is the use of animal noises to attract or drive animals
 * Camouflage is the use of visual concealment (or scent) to blend with the environment
 * Dogs may be used to course or to help flush, herd, drive, track, point at, pursue or retrieve prey
 * Driving is the herding of animals in a particular direction, usually toward another hunter in the group
 * Flushing is the practice of scaring animals from concealed areas
 * Glassing is the use of optics (such as binoculars) to more easily locate animals
 * Glue is an indiscriminate passive form to kill birds
 * Netting, including active netting with the use of cannon nets and rocket nets
 * Scouting includes a variety of tasks and techniques for finding animals to hunt
 * Spotlighting or Shining is the use of artificial light to find or blind animals * before killing
 * Stalking is the practice of walking quietly, often in pursuit of an identified animal
 * Still Hunting is the practice of walking quietly in search of animals
 * Tracking is the practice of reading physical evidence in pursuing animals
 * Trapping is the use of devices (snares, pits, deadfalls) to capture or kill an animal


text:
Backpack Camping and Woodland Survival/Emergency Techniques/Emergency Kits

Include the following supplies for specific kinds of disasters in addition to the general supplies.

Earthquakes
Below is list of commonly recommended items for an emergency earthquake kit:

 * Food to last at least three days
 * Water purification tablets/portable water filter
 * Heavy-duty gloves
 * A first-aid kit
 * A minimum of 100$ in cash, at least half of which should be in coins
 * Family photos and descriptions (to aid emergency personnel in finding missing people)
 * Copies of personal identification and important papers such as insurance documents, driver's license, etc.
 * A flashlight and portable (or solar-powered) radio
 * Extra batteries
 * Goggles and dust mask
 * A personal commode with sanitary bags

Hurricanes
For hurricanes, National Oceanic and Atmospheric Administration (NOAA) recommends that the 'disaster bag' includes:
 * a flashlight with spare batteries;
 * a battery operated portable radio (and spare batteries);
 * a battery operated NOAA weather radio (and spare batteries);
 * First aid kit and manual;
 * prescription medicines;
 * cash and a credit card;
 * a cell phone with a fully charged spare battery;
 * spare keys;
 * high energy non-perishable food;
 * one blanket or sleeping bag per person;
 * special items for infant, elderly or disabled family members;
 * change of clothing.

Helpful items

 * Develop an understanding of food rationing.
 * Non-electric can opener
 * Essential medicines
 * Cash and credit cards
 * Raincoats, rubber boots (or waders).
 * underwear, toothbrush, toothpaste, comb/brush
 * Infants; diapers, premixed formula, medical and toiletry supplies, blankets, baby wipes, baby food
 * Young children: favourite toy, crayons and colouring books, books
 * Youths: music players, card games, snacks (i.e. peanut butter or hard candy), books
 * Elderly; nutritious drinks, sweater, coat and/or blanket, books


text:
When It Hits the Fan/Personal Strategies and Know-how/Path Selection

Path Selection
Deciding how to go form point A to B is extremely important. It is part of the planing process of movement, most of the time we do not even realize this simple process but at times that significant effort and resources will be consumed on the task planning how to proceed should be the second step after deciding for a destination. Path selection is a decision making process by which one alternative is selected over another. Several procedures for making decisions have been outlined in effort to minimize inefficiencies or redundancies. These are idealized (or normative) processes, and describe how decisions might be made in an ideal world, and how they are described in official documents. Real-world processes are not as orderly.

Planning starts by selecting or deciding for a specific destination choice (this selection may in itself depend on many factors) fallowed by mode and route choices. The route selected my constrain or be depended on the modes of locomotion available.

It can be hard to decide if a path selection starts by establishing a destination, since all other components at some point have the same strength on the decision process. But undoubtedly if one is not required to go somewhere that there is no need to move, except if one is forced to move and then the destination may even be irrelevant. It all depends on the specificity of the situation that motivates the choice of a path.

In long trips, making a trip distribution (or intermediary destination choice or zonal interchange analysis). This step matches several origins and destinations to develop a “trip table” a matrix that displays the number of trips going from each origin to each destination. Priorities and resources available as well as costs (even effort) must be taken in account. This is basically turning any complex voyage in a sequence of smaller steps as to reach the final objective.

Trip distribution's zonal interchange analysis yields a set of origin destination tables which tells where the trips will be made, mode choice analysis allows the modeler to determine what mode of transport will be used. Mode choice analysis follows destination choice and may affect route choice.

Route assignment, route choice, or traffic assignment concerns the selection of routes (alternative called paths) between origins and destinations in transportation networks. To determine facility needs and costs and benefits, we need to know the number of travelers on each route and link of the network (a route is simply a chain of links between an origin and destination).

The Fundamentals of Transportation wikibook is a good work to examine in detail the complexity and analysis behind planning transportation.


text:
French History

French History

Table of contents

 * /Gaul/
 * /Franks/
 * Merovingian Dynasty
 * Carolingian Dynasty
 * /Middle Ages/
 * Capetian Dynasty
 * /Valois Dynasty/
 * Hundred Years War
 * French Wars of Religion
 * /Bourbon Dynasty/
 * Grand Alliance
 * /French Revolution/
 * /First French Empire/
 * /French Restoration/
 * /Second Republic/
 * /Second French Empire/
 * Crimean War
 * Franco-Prussian War
 * /Third Republic/
 * World War 1
 * /World War II/
 * /Fourth Republic/
 * /Fifth Republic/
 * European Union

Histoire de France

title: French History


text:
Template:Block

Use, Limitations, Parameters and Options
Not to be confused with Template:Blocked.

Use
The template has one parameter: Content; unformatted text for the box. The default state produces a pale blue band across the page for a centered Courier text entry; it is useful to emphasise a single code line.

The options can be used in a more elaborate way to assemble a page with contiguous coloured background sections; see the example, which includes an image. The code to call the template into use and the result of doing so is seen below:

 * Which in easier on the eyes mode, including added whitespace to let elements 'POP':instead of being all jammed together like we are all programmers or have young eyesight!
 * which generates

Limitations
It is not possible for the parameter text to start with a wikitext heading, ( ==Heading== ); use the HTML form instead, ( Heading.

A Wikitext table will not render at all well. Use an HTML table instead and avoid having the table at the start of the parameter.

At times which are not yet clarified, using the named parameter form, ( 1= The parameter text... ), works well when the unnamed equivalent,( The parameter text... ) does not.

Options
In exploring Wikibook templates there are a number of shorthands used as parameters. The capitals herein were added as alternative mnemonic 'timesaver' options since they are variables also used in quite a few other formatting and box templates found here on Wikibooks... and on the commons.

The defaults produce a pale ivory band in the page for a centered text entry, in a monospaced font.
 * AS:  menomically 'ANY STYLE COMMAND' — an added option for some parameter not in the list below. Last thing in the style format string, it should override any default it contends with earlier in the string.  Defaults to a nil string, contaminating nothing by leaving behind a lonely semi-colon.
 * display: display mode, default block, can be set to inline for wrapped text sections. First item in the style string.
 * background, BG:  background color, pale blue
 * color, CO:  font color, black
 * ff, FF, FACE:  font family or face, Courier
 * fs, FS, SIZE:  font size, 10pt
 * ta, ALN:  text alignment, center
 * lh, LH:  line height, 1.4em
 * M:   margin, auto
 * MW:  max-width, 100%
 * padding, P: content padding.

 * The smoke and mirrors ...
 * does not really exist. These templates merely reduce somewhat painstaking repetitive html code wrappings to a user friendly .  These perform the coding needed to generate portable standard html for bulleted paragraphs:

Note the use of  elements, firstly says they expect a table element wrapper. Secondly suggests they can be alternated within  wrappers to form a line with multiple columns, creating first a table with specific width parameters so they follow the leader, and stay in their own lane on each subsequent line.

 * See related templates... often use this as a lead wrapper...
 * Use Lul and Dul to make the bullet lead strips of light and dark alternating color text blocks.
 * Use Lightul and Darkul without a container, in a stack for full page widths or when the amount of text is sufficient to form more than one line for every bullet point.
 * Use container to include and bound combinations of the above listed beside an image, and with this template. (See example in container.

title: Template:Block


text: Category:Book:History of Islamic Civilization


text: User talk:64.92.178.194

title: User talk:64.92.178.194


text: User talk:91.163.131.34

title: User talk:91.163.131.34


text:
Ido/Lesson III2

Religio (Religion)
Words marked with * are not official.

title: Ido/Lesson III2


text:
Template talk:Reflist

من هو شخص
ابي حظرة في كل البرامج بسرعه 2A02:CB80:4044:1FFD:2537:228D:3863:C671 (discuss) 01:59, 18 February 2022 (UTC)

title: Template talk:Reflist


text:
Template:Result

Use
The template has one parameter: Content; unformatted text for the box. Produces a pale grey band in the page for a centered text entry.

The code to call the template into use and the result of doing so is seen below:

Options

 * background:  background color, pale grey
 * color:  font color, black
 * ff:  font family or face, Arial
 * fs:  font size, 10pt
 * ta:  text alignment, left
 * lh:  line height, 1.4em

The defaults produce a pale grey band in the page for a centered text entry.

title: Template:Result


text: Category:Book:History of Greece

title: Category:Book:History of Greece


text:
Talk:International Relations/Core Concepts of International Relations

i am humaira farooqui


text: User talk:71.166.241.10

title: User talk:71.166.241.10


text:
Chess Opening Theory/1. e4/1...b5

= O'Neill Gambit =

1...b5?
This is considered a dubious response to 1. e4 because it allows 2. Bxb5, and if White plays accurately, Black does not get sufficient compensation for the sacrificed b-pawn. As a result, the O'Neill gambit is almost never used, and is the least played response to 1. e4. Despite this, there is some try for an advantage with the Lila Attack, where if white does not play carefully they could end up severely disadvantaged.

'''1. e4 b5 2. Bxb5 Bb7 3. Nc3 f5!?'''

And here, if white plays '''4. exf5? black wins a pawn with 4... Bxg2.

Theory table

 * 1. e4 b5

title: Chess Opening Theory/1. e4/1...b5


text:
User talk:202.28.27.4

reeom/chat/images/cust_img/thumbs/nrroeldom.html

title: User talk:202.28.27.4


text:
MINC/SoftwareDevelopment/Benchmarks

A bunch of non scientific tests aiming to do a bit of benchmarking

Predominately this is a bit of a "mine is faster than yours" type of page, but hopefully it might be useful to someone who is trying to ascertain just what system to buy to do MINC stuff. If this is you, as a rule of thumb MINC type processing is more than often I/O bound with multiple file I/O's going on all the time. This means you should buy a motherboard with a fast FSB (Front side bus) instead of just a fast processor and fair chunk of RAM to avoid having to use swap/virtual memory.

The command we use to compute a rough indication of execution time is this:

time /usr/local/bic/bin/minctracc -clobber -debug -nonlinear -step 2 2 2 \ /usr/local/bic/share/mni-models/icbm_avg_152_t1_tal_lin.mnc \ /usr/local/bic/share/mni-models/icbm_avg_152_t1_tal_lin.mnc \ /tmp/out.xfm

Results
ARMv6 700MHz BCM2835      128KB cache   512MB RAM  Raspbian 8              88m 13.12s  Raspberry PI1  VF - wall time was 2:07:24 with 70% CPU utilization Intel 450MHz Pent II      512KB cache   256MB RAM  Debian Sarge            53m 54.20s  lorax          AJ Intel 450MHz  Pent III     512KB cache   386MB RAM  Debian Sarge            49m 47.55s  feeble         AJ MIPS  400MHz, R12000    8MB/32KB cache    28GB RAM  IRIX 6.5.x              28m 12.95s  yorick         AJ IBM   1.5GHz  G4           512KB cache     1GB RAM  OS X 10.3.9             21m 07.00s  PowerBook G4   LC AMD   1.2Ghz  Athlon L110  512KB cache     2GB RAM  Ubuntu Koala            19m 34.78s  Gateway LT31   VF - gcc 4.1.2 32 bit AMD  1.3GHz  Athlon XP    512KB cache     2GB RAM  Debian Sarge            17m 59.26s  audrey         AJ Intel 1.5GHz  Itanium 2 8MB/256K cache     4GB RAM  Debian Sarge            17m 48.50s  aeneas         JFM - gcc 3.4.4 IBM  2.0GHz  G5(1core)    512KB cache     2GB RAM  OS X 10.4.3             15m 15.35s  mrspc          MD Intel 1.4GHz  Pent III     512KB cache     4GB RAM  Debian Sarge            15m 24.73s  Dell-1650      JFM IBM  2.0Ghz  G5(2core)   1024KB cache   2.5GB RAM  OS X 10.4.8             15m 37.30s                 OW AMD   1.2Ghz  Athlon L110  512KB cache     2GB RAM  Ubuntu Koala            13m 23.87s  Gateway LT31   VF - gcc 4.3.3 64 bit Intel 1.7GHz Pent M      2048KB cache  1.25GB RAM  Cygwin under XP         13m 17.27s  T42 Thinkpad   AJ Intel 1.7GHz  Pent M      2048KB cache  1.25GB RAM  vmware Ubuntu under XP  12m 56.22s  T42 Thinkpad   AJ Intel 2.8GHz  Pent 4       512KB cache  1.25GB RAM  Ubuntu Hardy            12m 33.51s  Satellite 2450 AZ Intel 1.5GHz  Celeron M   1024KB cache     1GB RAM  Ubuntu Dapper           12m 31.08s  Aspire 3610    VF Intel 1.6GHz  Pent M      1024KB cache   512MB RAM  Ubuntu Dapper           12m 11.60s  Satellite M30  VF AMD   1.5GHz  Athlon XP    512KB cache     1GB RAM  Debian Sarge            12m 06.94s  orsino         MD Intel 1.6GHz  Pent M      2048KB cache   512MB RAM  Ubuntu Edgy             11m 49.92s  Tecra M3       VF Intel 1.7GHz  Pent M      2048KB cache  1.25GB RAM  Ubuntu Dapper           11m 39.49s  T42 Thinkpad   AJ AMD   1.6GHz  Athlon XP    256KB cache     1GB RAM  Ubuntu Edgy             11m 33.11s                 VF Intel 1.8GHz  Pent M      2048KB cache     2GB RAM  Ubuntu Dapper           11m 33.03s  Qosmio F10     KM AMD   2.0GHz  Athlon MP    512KB cache     2GB RAM  Debian Sarge            11m 10.65s  angus          KM AMD   2.0GHz  Athlon MP    512KB cache     2GB RAM  Debian Sarge            10m 46.00s  node0          VF Intel 1.7GHz  Core Duo    2048KB cache     2GB RAM  Cygwin under XP         10m 39.22s  X60s Thinkpad  MD Intel 1.5GHz  Itanium 2 8MB/256K cache     4GB RAM  Debian Sarge            10m 47.89s  aeneas,icc -O3 VF - Intel Compiler 9.1.042 AMD  2.1GHz  Athlon MP    512KB cache     2GB RAM  Debian Sarge            10m 15.93s  dromio         MF Intel 3.0GHz  Xeon        2048KB cache     3GB RAM  Debian Sarge             9m 58.31s  grumpy         AJ AMD   2.1Ghz  Athlon 64    512KB cache     2GB RAM  Debian Sarge             9m 39.11s  portia         VF AMD   2.1GHz  Athlon XP    512KB cache     2GB RAM  Debian Sarge             9m 26.84s  gonzalo        VF AMD   2.0GHz  Opteron 246 1034KB cache     3GB RAM  Debian Sarge             9m 17.63s  banquo         AJ Intel 1.7GHz  Core Duo    2048KB cache     2GB RAM  Ubuntu Edgy              9m  7.96s  X60s Thinkpad  MD Intel 1.6Ghz  Xeon E5310  4096KB cache     3GB RAM  Debian Sarge             8m 55.97s  2xQuad Xeon    VF Intel 1.6GHz  Core2Duo    4096KB cache     3GB RAM  Ubuntu Hardy i386        8m 44.41s  X61 Thinkpad   AZ Intel 1.8GHz  Pent M      2048KB cache     2GB RAM  Cygwin under XP          8m 28.85s  Qosmio F10     KM AMD   2.2Ghz  Athlon 64    512KB cache     2GB RAM  Debian Sarge             8m 21.52s  pluto          VF AMD   2.2Ghz  Athlon MP    512KB cache     2GB RAM  Red Hat Valhalla         8m 21.47s  homer          AG Intel 3.4GHz  Pent D 945  2048KB cache     3GB RAM  Debian Sarge             8m  3.19s  denney         AJ Intel 3.4GHz  P4 HT        512KB cache   0.5GB RAM  Debian Sarge             7m 56.77s  owen           AJ Intel 1.83Ghz Core2Duo    2048KB cache     1GB RAM  Ubuntu Edgy              7m 46.36s  Compaq NX7400  OW AMD   2.6Ghz  Opteron 252 1024KB cache     8GB RAM  Ubuntu Dapper            7m 44.63s                 JPL AMD  1.7GHz  Athlon 64X2  256KB cache     1GB RAM  Ubuntu Gutsy             7m 38.28s  Gateway laptop AZ AMD   2.0GHz  Athlon 64X2  512KB cache     2GB RAM  Debian Sarge             7m 35.39s  newhomer       ACV Intel 2.13GHz Core2Duo   2048KB cache     2GB RAM  Ubuntu Edgy              6m 31.37s                 VF Intel 2.13GHz Core2Duo    2048KB cache     3GB RAM  Debian Sarge             6m 30.11s                 AJ Intel 2.33GHz Core2Duo    2048KB cache     2GB RAM  OS X 10.4.8              6m 18.60s  blork          SM Intel 2.2GHz  Core2Duo    4096KB cache     2GB RAM  OS X 10.5.0              6m 14.53s  MacBook Pro    JH  - gcc 4.0.1 32bit Intel 3.20Ghz Xeon       2048KB cache     8GB RAM  Red Hat EL smp           6m  1.37s  ANU - APAC     AJ  - Intel-cc 9.1.047 AMD  2.2Ghz  Opteron 875 1024KB cache    32GB RAM  Red Hat EL AS 4          5m 58.63s  CLUMEQ:krylov  VF  - gcc 3.4.4 64bit Intel 2.3Ghz XeonE5345 2x4096KB cache   3.2GB RAM  Ubuntu Feisty            5m 51.48s  ANU - murdoch  AJ  - gcc 4.1.2 32bit Intel 1.6GHz Core2Duo    4096KB cache     3GB RAM  Ubuntu Hardy amd64       5m 46.23s  X61 Thinkpad   AZ Intel 2.4Ghz  Core2Quad   4096KB cache     4GB RAM  Feisty i386 bigiron      5m 35.01s  ANU - ben      AJ  - gcc 4.1.2 32bit AMD  2.8GHz  Athlon 64X2  512KB cache     4GB RAM  Debian 4.0               5m 24.79s  lorentz        ACV Intel 2.13GHz Core2Duo   4096KB cache     2GB RAM  Feisty amd64             5m 12.88s                 JH  - gcc 4.1.2 64bit Intel 1.87GHz QEMU       4096KB cache    10GB RAM  Centos 6                 5m 11.586s nrx3 VM        HEA - gcc 4.4.7 64bit (minctoolkit 0.3.16) Intel 2.66GHz Core2Duo   4096KB cache     2GB RAM  Debian Etch              5m 04.68s  taylor         MF  - gcc 4.1.2 32bit Intel 3.16Ghz Core2Duo   6144KB cache     8GB RAM  Ubuntu Hardy i386        4m 54.74s  igns           VF  - AJ's deb for Hardy i386 Intel 2.2GHz Core2Duo    4096KB cache     2GB RAM  OS X 10.5.2              4m 49.32s  MacBook Pro    ACV - 64bit Minc2 AMD  2.6Ghz  Opteron 2435   6MB cache    16GB RAM  CentOS                   4m 40.63s  TACC           VF  - gcc 4.3.3 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.8GHz Core2Quad 2x6144KB cache     8GB RAM  Debian Etch              4m 37.48s  paris          KM  - gcc 4.1.2 32bit Intel 2.2GHz Core2Duo    4096KB cache     2GB RAM  OS X 10.5.2              4m 35.99s  MacBook Pro    ACV - 64bit Minc1 Intel 2.2GHz Core2Duo    4096KB cache     2GB RAM  OS X 10.5.0              4m 34.93s  MacBook Pro    JH  - gcc 4.0.1 64bit Intel 2.80Ghz i7-860     8192KB cache     10GB RAM  Ubuntu odroid             4m 06.07s  william      KM  - gcc 4.4.7 64bit (minc 2.1.10, mni_autoreg 0.99.6) Intel 2.33GHz XeonE5345  4096KB cache    16GB RAM  Ubuntu Gutsy amd64       4m 04.48s  2xQuad Xeon    AZ  - gcc 4.2 64bit Intel 2.26GHz Core2Duo   3072KB cache     4GB RAM  Ubuntu Jaunty            4m 00.81s  Tecra M10      MF  - gcc 4.3.3 64bit Intel 2.27GHz XeonL5520  8192KB cache    12GB RAM  CentOS                   3m 54.75s  TACC           VF  - gcc 4.3.3 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.33GHz XeonE5410 2x6144KB cache   16GB RAM  Ubuntu Gutsy amd64       3m 49.43s  2xQuad Xeon    VF  - AJ's .deb for amd64 Intel 2.4GHz Core2Quad 2x4096KB cache     8GB RAM  Ubuntu Gutsy amd64       3m 47.12s                 VF  - AJ's .deb for amd64 Intel 2.6Ghz Core2Duo  2x6144KB cache     2GB RAM  OS X 10.5.2              3m 46.74s  MacBook Pro    SN  - gcc 4.0.1 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.4Ghz Core2Quad 2x4096KB cache     4GB RAM  Ubuntu Feisty amd64      3m 46.46s  ANU - ben      AJ  - gcc 4.1.2 64bit Intel 2.6Ghz XeonE5355 2x4096KB cache    16GB RAM  Ubuntu Gutsy amd64       3m 43.35s  opus           MD  - AJ's .deb for amd64 Intel 2.6Ghz Core2Duo  2x6144KB cache     2GB RAM  OS X 10.5.2              3m 42.54s  MacBook Pro    SN  - gcc 4.0.1 64bit (minc 1.5.1, mni_autoreg 0.99.3) Intel 2.8Ghz XeonE5400 2x6144KB cache     2GB RAM  OS X 10.5.2              3m 34.90s  MacPro-mrspc   ACV - gcc 4.0.1 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.8Ghz XeonE5400 2x6144KB cache    14GB RAM  OS X 10.5.2              3m 34.83s  MacPro-mrspc   ACV - gcc 4.0.1 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.6Ghz Core2Quad   4096KB cache    16GB RAM  Ubuntu Gutsy amd64       3m 31.55s  v8             SM  - gcc 4.2 64bit Intel 2.8Ghz XeonE5400 2x6144KB cache    14GB RAM  OS X 10.5.2              3m 30.52s  MacPro-mrspc   ACV - gcc 4.0.1 64bit (minc 1.5.1, mni_autoreg 0.99.3) Intel 2.8Ghz XeonE5400 2x6144KB cache     2GB RAM  OS X 10.5.2              3m 30.30s  MacPro-mrspc   ACV - gcc 4.0.1 64bit (minc 1.5.1, mni_autoreg 0.99.3) Intel 2.66GHz XeonE5430 2x6144KB cache   32GB RAM  Debian Etch amd64        3m 29.99s  Tyan 2xQuad    JFM - gcc 4.1.2 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.5Ghz XeonE5420 2x6144KB cache     8GB RAM  Ubuntu Hardy amd64       3m 27.75s  loki           EG  - AJ's deb for amd64 Intel 3.00GHz XeonE5450 2x6144KB cache    8GB RAM  CentOS                   3m 21.12s  TACC           VF  - gcc 4.3.3 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.80GHz Core2Quad 2x6144KB cache    8GB RAM  Debian Lenny (4.1.1-21)  3m 14.35s  paris          KM  - gcc 4.1.2 64bit (minc 2.0.18, mni_autoreg 0.99.3) Intel 2.80GHz XeonE5462 2x6144KB cache   16GB RAM  CentOS                   3m 12.35s  RQCHP          CL  - gcc 4.1.2 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.80Ghz i7-860     8192KB cache     4GB RAM  Ubuntu 10.04             3m  1.66s  new snug       VF  - gcc 4.4.3 64bit (minc 2.0.18, mni_autoreg 0.99.6) Intel 3.33Ghz XeonX5260  6144KB cache     8GB RAM  CentOS                   3m 2.690s  TACC           VF  - gcc 4.3.3 64bit (minc 2.0.15, mni_autoreg 0.99.3) Intel 2.66Ghz i7-920     8192KB cache     6GB RAM  Ubuntu Karmic amd64      2m 52.18s  ANU - bertie   AJ  - gcc 4.4.1 30GB OCZ Vertex SSD HDD Intel 3.16Ghz Core2Duo   6144KB cache     8GB RAM  Ubuntu Intrepid amd64    2m 50.41s  new igns       VF  - AJ's deb for Intrepid amd64 Intel 3.33Ghz i5-660     4096KB cache     4GB RAM  Debian 5                 2m 43.92s  vernon         VF  - gcc 4.3.4 64bit (minc 2.0.18, mni_autoreg 0.99.6) Intel 3.06Ghz i7-950     8192KB cache     6GB RAM  Debian 5                 2m 40.86s  romeo          VF  - gcc 4.3.4 64bit (minc 2.0.18, mni_autoreg 0.99.6) Intel 3.40Ghz i7-6700    8192 KB cache   16GB RAM  Ubuntu Xenial Xerus      2m 37.48s  KM - angus2    KM    minc-toolkit-1.9.11-20160202 ST1000DM003-1SB102 average-sata Intel 3.06Ghz i7-950     8192KB cache    12GB RAM  Ubuntu Karmic amd64      2m 31.76s  ANU - harold   AJ  - gcc 4.4.1 30GB OCZ Vertex SSD HDD Intel 2.67Ghz Xeon X5650 12288KB cache   48GB RAM  Ubuntu Karmic amd64      2m 28.72s  2x six-core    AZ  - AJ's debs for karmic Intel 4.00Ghz i7-950 (OC) 8192KB cache   12GB RAM  Ubuntu Karmic amd64      2m 02.23s  ANU - harold   AJ  - gcc 4.4.1 30GB OCZ Vertex SSD HDD (Overclocked) Intel 3.70Ghz E5-1630   10240KB cache    65GB RAM  Ubuntu Trusty amd64      1m 48.79s  CAI - zeep     AJ  - minc-toolkt-itk4 1.9.10 (minctracc 0.99.60) Apple M1 Max                             64GB RAM  macOS 12.6.1  arm64      1m 14.97s   Mac Studio    VF  - Rosetta + x86-64 build minc-toolkit-v2  1.9.18 AMD  3.40Ghz 5950X         64MB cache   128GB RAM  Ubuntu 20.04  amd64         57.97s   gonzalo       VF  - minc-toolkit-v2 1.9.18 Apple M1 Max                             64GB RAM  macOS 12.6.1  arm64         49.82s   Mac Studio    VF  - Native arm64 build minc-toolkit-v2  1.9.19

ACV - Alexandre Carmel-Veilleux AJ - Andrew Janke AZ - Alex Zijdenbos EG - Elias Gedamu HEA - Haz-Edine Assemlal JFM - JF Malouin JH - Jonathan Harlap JPL - Jason Pygswallyshaw Lerch KM - Kelvin Mok LC - Louis Collins MD - Mishkin Derakhshan OW - Oliver Winz VF - Vladimir Fonov SM - Sebastian Muehlboeck MF - Mike Ferreira SN - Sridar Narayanan CL - Claude Lepage

Feel free to add your own results.

title: MINC/SoftwareDevelopment/Benchmarks


text:
Ido/Lesson II4

Exemplo-frazi

 * Ube es la strado Couturat? Where is Couturat Street?
 * Kande departos la sequanta treno a Madrid? When will the next train for Madrid depart?
 * Montrez a me la *metropoliteno en la mapo. Show (to) me the metro (subway/underground) in the map.
 * Ho! La treno jus departis. Oh! The train just left.

title: Ido/Lesson II4


text:
MINC/Resources

minclookup
Here is an example of a double ended lookup table that you can use with files output from programs like mincblob to make pretty images.

0.000 0.8 0.8 1.0 0.125 0.4 0.8 1.0 0.250 0.0 0.4 1.0 0.375 0.0 0.0 0.5 0.500 0.0 0.0 0.0 0.625 0.5 0.0 0.0 0.750 1.0 0.4 0.0 0.825 1.0 0.8 0.4 1.000 1.0 0.8 0.8

Note that in order to use this you will have to ensure that your input file to minclookup has a symmetric range (ie: ranges from -x to x).

title: MINC/Resources


text:
MINC/Atlases

Atlases are marvellous things and everyone should have one.

/Atlases/History/ - A short history of the various atlases that have been produced at the BIC (McConnell Brain Imaging Center, Montreal Neurological Institute).

ICBM152 Linear

This is a linear average.

In 2001, within the context of the ICBM project (19) a concerted effort was undertaken by three sites (MNI, UCLA, RIC) to collect a set of full- brain volumetric images from a normative population specifically for the purposes of generating a model. 152 new subjects were scanned using T1, T2 and PD sequences as the MNI’s part of the ICBM project using a specific protocol (27). These images were acquired at a higher resolution than the original average 305 data and exhibit improved contrast due predominately to advances in imaging technology. Each individual was linearly registered to the average 305 and a new model was formed. In total, three models were created at the MNI, the ICBM152_T1, ICBM152_T2 and ICBM152_PD from 152 normal subjects. This resulting model is now known as the ICBM152 (although the model itself has not been published). One advantage of this model is that it exhibits better contrast and better definition of the top of the brain and the bottom of the cerebellum due to the increased coverage during acquisition.

The entirely automatic analysis pipeline of this data also included grey/white matter segmentation via spatial priors (41). The averaged results of these segmentations formed the first MNI parametric maps of grey and white matter. The maps were never made publicly available in isolation but have formed parts of other packages for some time including SPM, FSL AIR and as models of grey matter for EEG source location in VARETTA and BRAINWAVE.

Again, as these models are an approximation of Talairach space, there are differences in varying areas, to continue our use of origin shift as an example, the ICBM models are approximately

152: – +3.5mm in Z and +-co-ordinate -3.5mm and 2.0mm in Y as compared to the original Talairach origin.

In addition to the standard analysis performed on the ICBM data, 64 of the subjects data were segmented using model based segmentation. 64 of the original 305 were manually outlined and a resulting parametric VOI atlas built.

The native data from these acquisitions was 256x256 with 1mm slices. The final image resolution of this data was 181x217x181 with 1mm isotropic voxels.

And here is a link to it: ICBM152 linear model

Latest Version: ICBM152 Symmetric Non Linear 2009c

Official Location of files

Which should I use?
ICBM152 NonLinear: If you are fitting an individual to model and do not care about left/right comparisons

title: MINC/Atlases


text:
The Science of Programming/SwayPresentations/Objects/Examples2

 Examples

How about aspects?

Here's a stack:

function stack {       var store = :null; function push(item) {           store = cons(item,store); item; }       function pop {           var item = car(store); store = cdr(store); item; }       function empty? {           store == :null; }       this; }

Next Previous Top