Exactly who gave you the authority to prohibit GOD from using HIS method of
creation, i.e. evolution?
As if that were not enough, you further command HIM to retroactively not do the
creation (evolution) that HE has been doing for billions of years, that
culminated in the creation of you!
What if HE would comply?
I seems to me that the best mark of a false religion is one
which makes a claim to an essential dogma and that dogma is
proven false. Fundamentalism claims that God created the
Earth and all life in two days of sudden magical conjuring
and that all species present now were present then.
Well that has been refuted in many ways. We know that many
species predated humans by millions and even billions of
years. The fossil record shows sequential changes over
billions of years. There are rocks older than the Biblical
6000years by 4 billion years. We know from sea floor
spreading and laser mesurements of continental drift that
Pangaea separated about 240 million years ago. Fossils of
early reptiles were found on opposite sides of the atlantic
ocean in similar rocks in West Africa and Eastern Brazil.
Humans did not arise until 3 million years ago from
Ardipithecus whol arose from Ankaropithecus etc. So
creationism is a proven falsehood. Any religion based on a
lie must also be false.
If all of the evidence supports evolution and none supports
magical creation, then it is obvious that the Theist must
accept evolution as God's method. This make fundamentalists
the greatest of modern heretics.
The genuine theist must recognise that nature is God's
revelation uncensored by human superstition. The Bible is a
superstitious, self-contradictory, obscene, and frankly evil
book that has been blamed on God in an act of blasphemy.
Eolai
Eolai
That's pushing it. The Bible is no evil book. Do you think that Hebrew
peasants 4000 years ago would understand evolution if it were explained
to them? The creation story was the backdrop for an explanation (albeit
probably not a literal one) for the origin of sin. That's the point the
first few chapters of Genesis is trying to make. The problem is that
fundamentalists refuse to accept that the Bible, when closely examined,
does not pretend to be a scientific document. It does not try to explain
how God created the universe, but rather the fact that He did so. A
literal interpretation, however, bogs us down in debates of this kind and
prevents us from understanding the true genius of the universe God
created and continues to create.
Jim
: The Bible is no evil book.
I don't know... "Evil is as evil does", as Gump said, and in
competition with such blood-soaked books such as Das Kapital, Mein
Kampf and the Koran it is still numero uno.
: Jim
MVH: Mike Noreen |"Cold as the northern winds
Net: ev-mi...@nrm.se | in December mornings,
| Cold is the cry that rings
| from this far distant shore."
Per the FCA, this email address may not be added to
any commercial mail list. So up yours, mail-spammers!
>Jim
It is hard to understand how stubborn some people are with their
'holy' books. We are no longer in the middle ages. Let's face the hard
truth. We are not going to live forever. There is no god. Thinking
otherwise may be better for your peace of mind -but less realistic,
too-. Yes, with god gone, the concepts of good and evil are hard to
sustain. But Schopenhauer studied the matter more than a century ago,
getting some unpleasant conclusions. It is sad that reality is
unpleasant, but it is so. I would also like to think that my late
father is alive somewhere, and that -some day- we shall stroll
together by the meadows of paradise. It may be poetic, but -sorry,
not true-.
Javier Susaeta
The Bible may not be a book of science period and it does not tell us
exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
DAYS with each day having "an evening and a morning."
GC
>There is no god.
Kindly prove it.
I find certainty in the non-existance of god(s) to be every bit as
arrogant, ignorant and bit more intellectually dishonest as the absolute
certainty of certain fundimentalists.
>Yes, with god gone, the concepts of good and evil are hard to
>sustain.
I don't follow. The Bible may be a useful referance, but is hardly
required to make the distinction.
>Javier Susaeta
bye, got real work to do.
Robert
Real Men change diapers
What you say "we know" is the topic of dispute.
GC
Maybe they would have understood, if it were explained to them. They
just did not have the imagination and perspective to think of it out of
the blue.
Neither has science now, of course. We are just trying to make sense
of fossil finds, and their relation to living nature.
--
Regards, Cees Roos.
I think it's much more interesting to live not knowing than
to have answers which might be wrong. Richard Feynman 1981
: : The Bible is no evil book.
: I don't know... "Evil is as evil does", as Gump said, and in
: competition with such blood-soaked books such as Das Kapital, Mein
: Kampf and the Koran it is still numero uno.
Aw, c'mon. The Old Testament's had over 4000 years in which to work, and
the New Testament's had 2000. The Koran's only had about a millenium or
so, Das Kapital only about a century, and Mein Kampf has only had a measly
70 years. Going by victims per century, I think you'll find the Bible is
"only" in the middle of the pack.
Further proof that there's nothing on this planet so good that it can't be
twisted into evil.
--
Michael Agney
>The Bible may not be a book of science period and it does not tell us
>exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
>DAYS with each day having "an evening and a morning."
It also says that the value of pi is 3.
Roger Musson
British Geological Survey
e_r...@va.nmh.ac.uk
Oooh...but that might have been the old Babylonian
base-pi[4/3] measure, so it's right...;)
Or at least that's the theologically "safe" way.
Cheers...Disraeli (on a remote server)
sys...@niuhep.physics.niu.edu, in <4vfd4t$b...@corn.cso.niu.edu>:
>In article <4vetaq$n...@artemis.ibernet.es>, amar...@intercom.es writes:
>>There is no god.
>Kindly prove it.
define god, and i'll give it a shot.
>I find certainty in the non-existance of god(s) to be every bit as
>arrogant, ignorant and bit more intellectually dishonest as the absolute
>certainty of certain fundimentalists.
i am completely certain that no being which _I_ would call a god
(using _my_ definition of "god") exists, simply because such things
are impossible by definition.
but then again, i'll be the first to admit i'm an arrogant ignoramus.
the dishonesty charge gets me pissed, though, so watch your arse or
i'll flame it off your sorry carcass.
--
"look on the bright side, is suicide" -- Nirvana
: >The Bible may not be a book of science period and it does not tell us
: >exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
: >DAYS with each day having "an evening and a morning."
:
: It also says that the value of pi is 3.
It does? Where?
(BTW: are you implying that 6 days to 5 billion years is a simple
rounding off error?)
: Roger Musson
[deletia]
>The Bible may not be a book of science period and it does not tell us
>exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
>DAYS with each day having "an evening and a morning."
So?
We're interested science, not religion.......
----------------------------
Steve "Chris" Price
Associate Professor of Computational Aesthetics
Amish Chair of Electrical Engineering
University of Ediacara "A fine tradition since 530,000,000 BC"
ra...@kaiwan.com
I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
quoting from memory here -- I did a maths problem on it eons ago. The bath was
described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
ergo, pi = 3.
With any measurement there is some error. Perhaps the difference between
3 and 3.14 would fall with in it. I don't remember seeing real numbers
in the Bible, only integers. How about you?
Mike Supp
In article <4vv0uh$3...@mo6.rc.tudelft.nl>, maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) says:
>
>MikeNoreen (removed_...@mail.spammers) wrote:
>: Replying to e_r...@va.nmh.ac.uk (Roger Musson)
>:
>: : >The Bible may not be a book of science period and it does not tell us
>: : >exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
>: : >DAYS with each day having "an evening and a morning."
>: :
>: : It also says that the value of pi is 3.
>:
>: It does? Where?
>
>I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
>quoting from memory here -- I did a maths problem on it eons ago. The bath was
>described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
>ergo, pi = 3.
>
I guess you've never called an in-ground pool company and gotten estimates before, eh?
Even in modern times (meaning within the last few years) I have never had a contractor
give macro measurments into the decimals. That biblical reference (if it exists) would
be on par with what a pool installer would say to the average customer. Most customers
aren't concerned with the .14159 or more decimal fraction of inaccuracy. If you can find
the original reference, I'd be willing to bet the the measurements were not the main topic
of that section of text and were only thrown in to set up a particular scene. I can easily
envision this circular pool and the added decimal places would not make a bit of difference
to the image in my head.
By the way, there are halos from radioactive elements embedded in all the worlds granite that
come from three very short lived isotopes of pallonium. These halos are each specific to their
particular type of atomic material and to the individual isotopes of each material.
The halos were found without halos from their usual 'parent' elements which means that they
were the original element placed at that position in the granite. These pallonium isotopes have
half lives ranging from 3 minutes to a few millionths of a second. If they had been deposited
deep within molten rock there would be no recorded evidence of their existance. Therefore, the
granite had to have been in place in solid form and recording their decay within the time of
7 half-lives of the shortest half-life isotope.
This evidence would seem to indicate that the "foundations of the earth" were instantaneously
created. If the recording medium were not in place, the evidence could not have been so recorded.
Something to think about. The bible makes it pretty clear that God exists outside our little
bubble of a universe and He is not restricted to working within our idea of time/space any more
than you must climb inside a test tube and be an internal part of a lab experiment. You can affect
and observe your experiment from outside it's controlled 'universe'.
What I suggest is that God built our universe in a fully functional state and then set it in
motion, much the same way a watchmaker builds a watch and then sets it in motion after it's been
completed.
God was living on Earth at the time?
Kind of tricky during that first day.
--
James A. Carr <j...@scri.fsu.edu> | "Tolerance is not always a
http://www.scri.fsu.edu/~jac/ | virtue."
Supercomputer Computations Res. Inst. | Phyllis Schlafly
Florida State, Tallahassee FL 32306 |
I Kings 7:23 (NIV translation)
He made the Sea of cast metal, circular in shape, measuring ten cubits
from rim to rim and five cubits high. It took a line of thirty cubits to
measure around it.
The Bible Gateway web site is a good resource for these things. It has
multiple translations and search facilities.
http://www.gospelcom.net/bible
--
John Thompson
Jet Propulsion Laboratory email: jo...@haagar.jpl.nasa.gov
4800 Oak Grove Drive tel: 818-354-4587
Pasadena, Ca. 91109-8099 fax: 818-393-3013
>In article <4vv0uh$3...@mo6.rc.tudelft.nl> maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) writes:
<snip>
>>I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
>>quoting from memory here -- I did a maths problem on it eons ago. The bath was
>>described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
>>ergo, pi = 3.
>>
>I Kings 7:23 (NIV translation)
> He made the Sea of cast metal, circular in shape, measuring ten cubits
> from rim to rim and five cubits high. It took a line of thirty cubits to
> measure around it.
Obviously an early error in translation. I'm sure the original passage
must have read 31.415928 cubits. Either that or they inadvertently
measured a chord rather than the diameter. Or maybe the walls were
707964 cubits thick, and they gave outside diameter and inside
circumference. See how easy it is to rationalize from mythology?
Jeff/addesign
I guess he was fairly fireproof. If anyone can give me a mechanism by
which a god created the heaven and the earth in six days, then I'll
consider it as a theory. Whereas I can certainly give you a
half-decent mechanism of creation of everything as it stands now that
explains lots of other little details (cosmic background radiation etc)
and leads you right up to the unexplicable event one, without all that
woman made from man rubbish.
If you're going to literally translate a translation of a translation of
a translation (etc for the past 2000+ years) then you deserve all the
ridicule you get.
--
Johnny Marr - wadh...@sable.ox.ac.uk
Webpage at- http://www.wadham.ox.ac.uk/~jstacey
I left the North again, I travelled South again
I am going to do to you what evolutionists do to creationists. Please
document that the Bible is "a translation of a translation of
a translation." I don't believe your statement. Proof REQUIRED.
Without such proof we can conclude that you join with the other
evolutionist "liars." I understand that the New Testament was originally
written in Greek. English translations are FROM THE ORIGINAL GREEK. You
speak of three translations, even leaving open the possibility of an
infinite regress. Very misleading, don't you think?
GC
The bible was also written in Latin, there's three. Also, you forgot that
the English language evolves very quickly, and what was English when it first
started looks like a foreign language to anyone who speaks modern english. (try to
read 'Beowulf' in it's original English form).
Go in peace little grasshopper,
KungFu
>Replying to e_r...@va.nmh.ac.uk (Roger Musson)
>: >The Bible may not be a book of science period and it does not tell us
>: >exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
>: >DAYS with each day having "an evening and a morning."
>:
>: It also says that the value of pi is 3.
>It does? Where?
2 Chronicles 4:2
He made the Sea of cast metal, circular in shape, measuring ten cubits
from rim to rim and five cubits high. It took a line of thirty cubits
to measure around it.
1 Kings 7:23
He made the Sea of cast metal, circular in shape, measuring ten cubits
from rim to rim and five cubits high. It took a line of thirty cubits
to measure around it.
[splat]
>>I Kings 7:23 (NIV translation)
>> He made the Sea of cast metal, circular in shape, measuring ten cubits
>> from rim to rim and five cubits high. It took a line of thirty cubits to
>> measure around it.
>Obviously an early error in translation. I'm sure the original passage
>must have read 31.415928 cubits. Either that or they inadvertently
>measured a chord rather than the diameter. Or maybe the walls were
>707964 cubits thick, and they gave outside diameter and inside
>circumference. See how easy it is to rationalize from mythology?
See how silly things get when you expect passages written in a poetic form
thousands of years ago to be accurate to more than two significant digits?
Remember, Round(Pi) = 3
>Jeff/addesign
Heathen (Charles W. Johnson)
--
Heathen on IRC ---- Undernet #atheism channel operator
--
These opinions are mine. They may not be those of my employer or my internet
provider. They are almost certainly not those of the Christian Coalition.
--
Per the FCA, this email address may not be added to any commercial mail list.
Violators will have complaints sent to their postmasters. DIE, you
scum-sucking braindead scourges of society!
--
More from the man that brought us trickle-down economics and the Gulf "War":
The following exchange took place at the Chicago airport between
Robert I. Sherman of American Atheist Press and George Bush, on August
27 1988. Sherman is a fully accredited reporter, and was present by
invitation as a member of the press corps. The Republican presidential
nominee was there to announce federal disaster relief for Illinois.
The discussion turned to the presidential primary:
RS: "What will you do to win the votes of Americans who are
atheists?"
GB: "I guess I'm pretty weak in the atheist community. Faith in God
is important to me."
RS: "Surely you recognize the equal citizenship and patriotism of
Americans who are atheists?"
GB: "No, I don't know that atheists should be considered as
citizens, nor should they be considered patriots. This is one
nation under God."
RS: "Do you support as a sound constitutional principle the
separation of state and church?"
GB: "Yes, I support the separation of church and state. I'm just
not very high on atheists."
Ok. You have some vague implications as to Pi. But that is not fair.
For you had the solution in hand. Solve a problem that needs to be
solved!
Let me calrify. You used Pi as an example. So we are talking
calculations here
. No herding sheep to greener pastures etc.etc. What is inside a black
hole?
Where does an electron go in between jumps? Is light a wave, particle
or both? You say predictions, however putting yourself in a perspective
of the past. That is not playing fair.
>Thusly spake Jeff (adde...@interaccess.com) unto alt.atheism:
>>jo...@haagar.jpl.nasa.gov (John Thompson) wrote:
>[splat]
>>>I Kings 7:23 (NIV translation)
>>> He made the Sea of cast metal, circular in shape, measuring ten cubits
>>> from rim to rim and five cubits high. It took a line of thirty cubits to
>>> measure around it.
>>Obviously an early error in translation. I'm sure the original passage
>>must have read 31.415928 cubits. Either that or they inadvertently
>>measured a chord rather than the diameter. Or maybe the walls were
>>707964 cubits thick, and they gave outside diameter and inside
>>circumference. See how easy it is to rationalize from mythology?
>See how silly things get when you expect passages written in a poetic form
>thousands of years ago to be accurate to more than two significant digits?
>Remember, Round(Pi) = 3
We went through this on talk.origins (and probably elsewhere) just a
few months ago. IMO what the passage shows, in not a poor value for
Pi, but an ignorance of its existence. They gave two measures because
they did not know that giving one implied the other.
Matt Silberstein
===========================================
Because I am human, nothing human is beyond me.
Saint Augustine.
The Bible and the New Testment were written in Hebrew, not Latin
Nor Greek. Unlike English, the Hebrew did not change much so I can
still read the Bible in the originqal Hebrew.
+The Bible and the New Testment were written in Hebrew, not Latin
+Nor Greek. Unlike English, the Hebrew did not change much so I can
+still read the Bible in the originqal Hebrew.
Gulp. Most of Jewish scripture is in Hebrew; some is in Aramaic.
The New Testament is entirely in Greek. The standard Christian
canon (Orthodox and Catholic) includes books of Jewish scripture
not in the Masoretic canon, but included (in Greek) in the Septuagint.
These are the books sometimes called "deutero-canonical" and excluded
in some Protestant denominations' list of Old Testament scriputre.
These books are also in Greek but were (at least mostly) originally
in Hebrew, but the Hebrew originals are no longer extant.
--
Michael L. Siemon m...@panix.com
"sempiternal, though sodden towards sundown."
| KungFu <adam...@earthlink.net> wrote:
| >(snippage)
| >George Cooper driveled unto alt.atheism (as well as other ngs that he
doesn't belong in):
| >>
| >> I am going to do to you what evolutionists do to creationists. Please
| >> document that the Bible is "a translation of a translation of
| >> a translation." I don't believe your statement. Proof REQUIRED.
| >> Without such proof we can conclude that you join with the other
| >> evolutionist "liars." I understand that the New Testament was originally
| >> written in Greek. English translations are FROM THE ORIGINAL GREEK. You
| >> speak of three translations, even leaving open the possibility of an
| >> infinite regress. Very misleading, don't you think?
| >>
| >> GC
| >
| >The bible was also written in Latin, there's three. Also, you forgot that
| >the English language evolves very quickly, and what was English when it
first
| >started looks like a foreign language to anyone who speaks modern
english. (try to
| >read 'Beowulf' in it's original English form).
| >
| > Go in peace little grasshopper,
| > KungFu
|
| The Bible and the New Testment were written in Hebrew, not Latin
| Nor Greek. Unlike English, the Hebrew did not change much so I can
| still read the Bible in the originqal Hebrew.
The New Testament was written in Koine Greek, with some evidence of
earlier Aramaic drafts in Mark and the Synoptics. The standard of the
Greek runs from cultured, as in Luke-Acts and Paul's echt epistles to
rustic, as in Mark and Matthew.
And before Herb asks for bibliographical references, just about any review
of NT scholarship in the past fifty years should mention this.
--
John Wilkins, Head of Communication Services, Walter and Eliza
Hall Institute of Medical Research
<http://www.wehi.edu.au/~wilkins/www.html><mailto:wil...@wehi.edu.au>
It is the glory of science that it finds the patterns
in spite of the noise - Daniel Dennett
>Also, you forgot that
>the English language evolves very quickly, and what was English when it first
>started looks like a foreign language to anyone who speaks modern english. (try to
>read 'Beowulf' in it's original English form).
I've read it -- it's quite a nice poem in Old English. Do you have a
point? Surely you're not suggesting that modern English versions are
translated from Old English ones, are you?
Steve Schaffner ssc...@slac.stanford.edu
Opinions expressed may be mine, and || Immediate assurance is an excellent sign
may not be those of SLAC, || of probable lack of insight into the
Stanford University, or the DOE. || topic. Josiah Royce
Anyone ever hear of significant digits? If I asked you the value of pi,
what would you answer? 3.14? or maybe 3.1415? Possibly 3.141592654?
Which is the correct answer? None of them. And all of them. It depends on
the number of significant digits you decide to compute to. An answer
of 3 is correct if you are only calculating to 1 significant digit.
It is believed that Biblical cubits were related to to the measurement from the
tip of the index finger to the elbow...roughly 18-19 inches. Now, I'm sure the
author of 1 Kings would not have specified the circumference as 3 cubits plus
a knuckle! They would simply have rounded off to the nearest cubit...one
significant digit. And this would be a correct record of the measurement.
As an engineer, I round off all the time. So, hopefully this little note
puts this ridiculous pi issue with the Bible to rest.
In article <505fpu$g...@nntp.interaccess.com>, adde...@interaccess.com (Jeff) writes:
|> jo...@haagar.jpl.nasa.gov (John Thompson) wrote:
|>
|> >In article <4vv0uh$3...@mo6.rc.tudelft.nl> maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) writes:
|> <snip>
|> >>I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
|> >>quoting from memory here -- I did a maths problem on it eons ago. The bath was
|> >>described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
|> >>ergo, pi = 3.
|> >>
|>
|> >I Kings 7:23 (NIV translation)
|>
|> > He made the Sea of cast metal, circular in shape, measuring ten cubits
|> > from rim to rim and five cubits high. It took a line of thirty cubits to
|> > measure around it.
|>
|> Obviously an early error in translation. I'm sure the original passage
|> must have read 31.415928 cubits. Either that or they inadvertently
|> measured a chord rather than the diameter. Or maybe the walls were
|> 707964 cubits thick, and they gave outside diameter and inside
|> circumference. See how easy it is to rationalize from mythology?
|>
|> Jeff/addesign
|>
--
Mark Christensen ascom-Nexion
email: ma...@nexen.com 289 Great Road
ph: (508) 266-2315 Acton, MA 01720
Tom Wilson
Flagstaff, Arizona
Landis D. Ragon <Landis...@ibm.net> wrote in article
<50bc2v$20...@news-s01.ny.us.ibm.net>...
> removed_...@mail.spammers (MikeNoreen) wrote:
>
> >Replying to e_r...@va.nmh.ac.uk (Roger Musson)
>
> >: >The Bible may not be a book of science period and it does not tell us
> >: >exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
> >: >DAYS with each day having "an evening and a morning."
> >:
> >: It also says that the value of pi is 3.
>
> >It does? Where?
>
> 2 Chronicles 4:2
> He made the Sea of cast metal, circular in shape, measuring ten cubits
> from rim to rim and five cubits high. It took a line of thirty cubits
> to measure around it.
>
>
> 1 Kings 7:23
> He made the Sea of cast metal, circular in shape, measuring ten cubits
> from rim to rim and five cubits high. It took a line of thirty cubits
> to measure around it.
>
>
> >(BTW: are you implying that 6 days to 5 billion years is a simple
> >rounding off error?)
> >
> >: Roger Musson
>
>
> >MVH: Mike Noreen |"Cold as the northern winds
> >Net: ev-mi...@nrm.se | in December mornings,
> > | Cold is the cry that rings
> > | from this far distant shore."
>
> >Per the FCA, this email address may not be added to
> >any commercial mail list. So up yours, mail-spammers!
>
>
>
>
In article <32277A...@madison.tec.wi.us>,
George Cooper <gwc...@madison.tec.wi.us> wrote:
>Johnny Marr wrote:
>>
>> Jim Carr wrote:
>> >
>> > George Cooper <gwc...@madison.tec.wi.us> writes:
>> > >
>> > >The Bible may not be a book of science period and it does not tell us
>> > >exactly how God created, but IT DOES SAY THAT THE JOB WAS DONE IN SIX
>> > >DAYS with each day having "an evening and a morning."
>> >
>> > God was living on Earth at the time?
>> >
>> > Kind of tricky during that first day.
>>
>> I guess he was fairly fireproof. If anyone can give me a mechanism by
>> which a god created the heaven and the earth in six days, then I'll
>> consider it as a theory. Whereas I can certainly give you a
>> half-decent mechanism of creation of everything as it stands now that
>> explains lots of other little details (cosmic background radiation etc)
>> and leads you right up to the unexplicable event one, without all that
>> woman made from man rubbish.
>>
>> If you're going to literally translate (etc for the past 2000+ years) then you deserve all the
>> ridicule you get.
>>
>> --
>> Johnny Marr - wadh...@sable.ox.ac.uk
>> Webpage at- http://www.wadham.ox.ac.uk/~jstacey
>> I left the North again, I travelled South again
>
>I am going to do to you what evolutionists do to creationists. Please
>document that the Bible is "a translation of a translation of
>a translation." I don't believe your statement. Proof REQUIRED.
>Without such proof we can conclude that you join with the other
>evolutionist "liars." I understand that the New Testament was originally
>written in Greek. English translations are FROM THE ORIGINAL GREEK. You
>speak of three translations, even leaving open the possibility of an
>infinite regress. Very misleading, don't you think?
I'm not a Bibliophile, but I'm curious about something.
You say that NT was translated from Greek to English. But,
the Greeks had to at least do translations from x (Hebrew?) to Greek.
You don't mean that Paul and Friends spoke Greek, do you?
+You say that NT was translated from Greek to English. But,
+the Greeks had to at least do translations from x (Hebrew?) to Greek.
+
+You don't mean that Paul and Friends spoke Greek, do you?
Paul and friends spoke Greek (whether Jesus did is uncertain,
but entirely possible; some NT Greek is quite good -- Paul &
Matthew in particular -- and some pretty bad -- Mark, e.g.
It is plausible that there was some original Aramaic "sayings"
source behind the gospels, but there is no substantial trace
of that in our sources: the sayings source posited as common
to Luke and Matthew was in Greek.
>In article <32277A...@madison.tec.wi.us>,
>George Cooper <gwc...@madison.tec.wi.us> wrote:
>>I am going to do to you what evolutionists do to creationists. Please
>>document that the Bible is "a translation of a translation of
>>a translation." I don't believe your statement. Proof REQUIRED.
>>Without such proof we can conclude that you join with the other
>>evolutionist "liars." I understand that the New Testament was originally
>>written in Greek. English translations are FROM THE ORIGINAL GREEK. You
>>speak of three translations, even leaving open the possibility of an
>>infinite regress. Very misleading, don't you think?
>I'm not a Bibliophile, but I'm curious about something.
>You say that NT was translated from Greek to English. But,
>the Greeks had to at least do translations from x (Hebrew?) to Greek.
Aramaic, most likely, since that was the common tongue at the time, in
that region.
>You don't mean that Paul and Friends spoke Greek, do you?
They might have, but not to the hoi poloi, who wouldn't have
understood them.
And, did they WRITE their books, or merely expound upon the ideas,
with the actual "ink-on-paper" being done in later years, by a scribe
or two? The common man, in those days, could neither read nor write.
BTW, if the KJE is a translation from the original Greek, how come no
one bothered to translate the Book of Mary, which still exists in the
original Greek?
(The KJE is, actually, a translation from the Latin.)
--
Al
No, this is where I ask "Which museum is storing the autographs?"
--
-- Herb Huston
-- hus...@access.digex.net
-- http://www.access.digex.net/~huston
>Anyone ever hear of significant digits? If I asked you the value of pi,
>what would you answer? 3.14? or maybe 3.1415? Possibly 3.141592654?
>Which is the correct answer? None of them. And all of them. It depends on
>the number of significant digits you decide to compute to. An answer
>of 3 is correct if you are only calculating to 1 significant digit.
>It is believed that Biblical cubits were related to to the measurement from the
>tip of the index finger to the elbow...roughly 18-19 inches. Now, I'm sure the
>author of 1 Kings would not have specified the circumference as 3 cubits plus
>a knuckle! They would simply have rounded off to the nearest cubit...one
>significant digit. And this would be a correct record of the measurement.
>As an engineer, I round off all the time. So, hopefully this little note
>puts this ridiculous pi issue with the Bible to rest.
Mark, I think you miss-read something. It doesn't say 3 cubits. It
says ( and the exact references are below) 30 cubits and SHOULD have
said 31.4 or 31 1/2 or 31+ or even 31 or 32 if rounded to the nearest
cubit.
But as an engineer, would you EVER round PI to 3.0?
I don't think so.
>In article <505fpu$g...@nntp.interaccess.com>, adde...@interaccess.com (Jeff) writes:
>|> jo...@haagar.jpl.nasa.gov (John Thompson) wrote:
>|>
>|> >In article <4vv0uh$3...@mo6.rc.tudelft.nl> maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) writes:
>|> <snip>
>|> >>I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
>|> >>quoting from memory here -- I did a maths problem on it eons ago. The bath was
>|> >>described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
>|> >>ergo, pi = 3.
>|> >>
>|>
>|> >I Kings 7:23 (NIV translation)
>|>
>|> > He made the Sea of cast metal, circular in shape, measuring ten cubits
>|> > from rim to rim and five cubits high. It took a line of thirty cubits to
>|> > measure around it.
>|>
Landis D. Ragon
The above is the author's personal opinion and is not the opinion or
policy of his employer nor of the little green men that have been
following him all day.
You are growing sleepy...very sleepy.
You cannot keep your eyes open...
Your eyelids are getting heavy... very heavy...
SEND ALL OF YOUR MONEY TO LANDIS RAGON...
sleepy... very sleepy... you will remember nothing...
In article <mls-050996...@mls.dialup.access.net>,
m...@panix.com (Michael L. Siemon) wrote:
>In article <k0HLywZH...@kaiwan.com>, ra...@kaiwan.com (/\/\ ) wrote:
>
>
>+You say that NT was translated from Greek to English. But,
>+the Greeks had to at least do translations from x (Hebrew?) to Greek.
>+
>+You don't mean that Paul and Friends spoke Greek, do you?
>
>Paul and friends spoke Greek (whether Jesus did is uncertain,
>but entirely possible; some NT Greek is quite good -- Paul &
>Matthew in particular -- and some pretty bad -- Mark, e.g.
>
>It is plausible that there was some original Aramaic "sayings"
>source behind the gospels, but there is no substantial trace
>of that in our sources: the sayings source posited as common
>to Luke and Matthew was in Greek.
Now I know. Thanks. :)
-----------------------------
"I don't think I can know." - ksjj
"Now I know." - raven
I believe that current scholarship holds that the Pauline letters
were originally written in Greek. Remember that neither the Pauline
letters nor the Gospels themselves are contemporaneous accounts of
Jesus' life; there's at least a decade of oral tradition between the
(purported) date of the Crucifixion and the (estimated) date of
the writing of the first Gospel (Mark)
>BTW, if the KJE is a translation from the original Greek, how come no
>one bothered to translate the Book of Mary, which still exists in the
>original Greek?
Because the Book of Mary is a heretical document associated with
the Gnostics. It got lost along with a half-dozen other Gospels
in the early church. We only found the Gospel of Mary this century,
I believe as part of the Nag Hammadi documents; before that there were
no examples known -- and we don't even have the complete Marian Gospel.
>(The KJE is, actually, a translation from the Latin.)
It's more complex than that. The primary sources for the KJE are
the Vulgate (Latin) Bible, Erasamus' Greek version, and the German
version penned by Luther. There's also the "polyglot" Bible which was
circulating at that time, which actually had a better and more accurate
version of the Greek, but that wasn't nearly as popular as Erasamus'.
Most of the scholars I've read claim that *the* primary source for
KJE was indeed Erasemus' Greek, with significantly less influence from
either the Vulgate or Lutheran versions.
Patrick
>Mark, I think you miss-read something. It doesn't say 3 cubits. It
>says ( and the exact references are below) 30 cubits and SHOULD have
>said 31.4 or 31 1/2 or 31+ or even 31 or 32 if rounded to the nearest
>cubit.
>
> But as an engineer, would you EVER round PI to 3.0?
>
>I don't think so.
Hey, I often round pi to 3. Doesn't everyone? Suppose you
were buying mulch for a circular garden, how many digits would
you use? Can you really control the depth of mulch to better
than one part in 30?
But if you consider a bowl with a rim, then the rim goes around
the outside edge of the bowl. So suppose when you measure
around the inside of the bowl you get 30 cubits. This means
that the diameter of the inside of the bowl was about 9.55
cubits.
So, there are two solutions. Clearly rounding the diameter to
the nearest cubit gives a diameter of 10 cubits. But also, if
the rim were 0.225 cubits or so in width (about 4 inches, pretty
reasonable for a bowl about 15 feet in diameter) then the
measurement from rim to rim (meaning that the outside diameter is
being measured) would come out exactly 10 cubits.
>>|> >I Kings 7:23 (NIV translation)
>>|>
>>|> > He made the Sea of cast metal, circular in shape, measuring ten cubits
>>|> > from rim to rim and five cubits high. It took a line of thirty cubits to
>>|> > measure around it.
Shack
> Mark, I think you miss-read something. It doesn't say 3 cubits. It
> says ( and the exact references are below) 30 cubits and SHOULD have
> said 31.4 or 31 1/2 or 31+ or even 31 or 32 if rounded to the nearest
> cubit.
My understanding of the basin is that it was like a bowl with a brim
with a double row of "knops" (King James version) or flower buds beneath
the brim. Reasoning to support the Bible's accuracy might say the
diameter
was measured from outside the brim to outside the brim (the greatest
real
distance, and easy to measure) and the circumference was measured
underneath the brim (easy to measure and reflecting the real volume
of the basin). That could allow a diameter of 10 (measuring an area
outside the circumference) and a circumference of 30 (measured under
the brim - why measure along the edge of the brim?)
If the brim did indeed extend beyond the circumference of the basin
(there
may be a way to know) and if it extended 4 inches, and was measured as
indicated here, then the math may be right. In any case, I don't
question
the Bible on the basis of ancient measures and I don't questions it in
any
case. When the Bible includes the words of someone who was wrong, the
question
is whether I understood that.
Admitted - these "what if's" choose assumptions for benefit.
The people who wrote these amounts weren't trying to accomplish
something
mathematically; they were describing an object.
Totally different topic -
I am looking for information about philosophers not regarding Ayn Rand's
philosophy
very highly. In particular, I remember a philosophy professor or
graduate student
named John L. (maybe) who used to write to the
alt.philosophy.objectivism newsgroup
a few years ago. I would appreciate related information via email.
> >In article <505fpu$g...@nntp.interaccess.com>, adde...@interaccess.com (Jeff) writes:
> >|> jo...@haagar.jpl.nasa.gov (John Thompson) wrote:
> >|>
> >|> >In article <4vv0uh$3...@mo6.rc.tudelft.nl> maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) writes:
> >|> <snip>
> >|> >>I dunno the exact reference, but I think it was the bath in Salomon's temple. I'm
> >|> >>quoting from memory here -- I did a maths problem on it eons ago. The bath was
> >|> >>described as 10 'x' in diameter, while it was 30 'x' in circumference. O = pi*d,
> >|> >>ergo, pi = 3.
> >|>
> >|> >I Kings 7:23 (NIV translation)
> >|>
> >|> > He made the Sea of cast metal, circular in shape, measuring ten cubits
> >|> > from rim to rim and five cubits high. It took a line of thirty cubits to
> >|> > measure around it.
1 Kings (Project Gutenberg King James Version)
007:024 And under the brim of it round about there were knops
compassing it, ten in a cubit, compassing the sea round about:
the knops were cast in two rows, when it was cast.
Have a nice day
John Paul Fullerton
j...@myriad.net
>BTW, if the KJE is a translation from the original Greek, how come no
>one bothered to translate the Book of Mary, which still exists in the
>original Greek?
There were lots of books in Greek that they didn't bother to translate;
they only translated the ones that anyone thought were canonical. And
since there is no Book of Mary extent in Greek (at least as far as
I can determine), I'm having trouble understanding your point (there
are fragments of a Gospel of Mary (Magdelene), but no Book of Mary).
>
>(The KJE is, actually, a translation from the Latin.)
The KJ is, actually, a translation out ot the Original Tongues and
with the Former Translations diligently compared.
THE LEGEND OF PISSPOT PETE
Now gather round children, and I'll tell a story of old,
When men were brave, and women were bold.
It all started a way out west,
To settle the bet of who was best.
Now Old Lill fucked everything that crawled or creeped,
And piled her victims in a great big heap.
There wasn't a man for miles around
With a big enough rod to fuck her down.
Now news of this boast traveled far and wide;
Thousands of rod-toters came and died;
When down from Knoxville came Pisspot Pete,
With eighteen pounds of Swinging Meat.
Eighteen pounds of meat, and thirty pounds of cod;
He wasn't a boy--he was a MAN, by God!
Pete laid it out on the Blue Balls Bar;
I'll swear it stretched from thar to...........thar.
Stunk like shit, I thought I'd die;
But he just laughed and let it lie.
Gentlemen, countrymen, boys in blue,
Came to witness this terrible screw.
People came from miles afar,
To place their bets at the Blue Balls Bar.
They met the next morning in the middle of the street,
The Mangey Whore and Piss Pot Pete.
Pete greased his dick with a tub of lard,
And he killed a mule trying to work up a hard!
Old Lill warmed up on an old cross-tie;
Oh my God how the splinters did fly!
Pete came down Main Street like a south-bound freight,
And Old Lill knew she had met her fate.
All she could do was to take a seat,
And let old Pete sink his meat.
With a stretching of flesh, and tearing of skin,
Old Pete drove the first two feet in.
Old Lill screamed and clawed at the grass,
And yelled like a panther with a turpentined ass!
Lill let out a scream, "I can't take any more!"
But Pete pounded away on the smelly old whore.
The earth shook, and dark came to the sun;
Pete's eyes rolled back, and he fired off his gun.
When the battle was over, and the dust had cleared,
Over forty acres, Lill's ass was smeared.
Gallons of love were spilled out in the street.
It was so damn sticky, you couldn't pick up your feet!
Land was torn up for miles around,
Where Old Pete's balls had drug the ground.
Pete reeled in his dick, and pounded his chest;
Got on two horses, and rode off West.
As a lasting memory to the great Old Whore,
They hung her drawers on the Bar Room door.
And all the soap this side of hell,
Couldn't wash away that whorehouse smell!
Now Old Pete died and went to hell:
Fucked the devil and his wife as well!
The little imps screamed and climbed the wall,
Yelling, "Get him out of here before he fucks us all!"
He fucked ninety-eight, and his balls turned blue,
Then he backed off, jacked off, and fucked the other two!
>In article <505fpu$g...@nntp.interaccess.com>,
dde...@interaccess.com (Jeff) writes:
>|> jo...@haagar.jpl.nasa.gov (John Thompson) wrote:
>|>
>|> >In article <4vv0uh$3...@mo6.rc.tudelft.nl>
maa...@cpt6.stm.tudelft.nl (Jong Maarten_de) writes:
>|> <snip>
>|> >>I dunno the exact reference, but I think it was the bath in
Salomon's temple. I'm
>|> >>quoting from memory here -- I did a maths problem on it eons
ago. The bath was
>|> >>described as 10 'x' in diameter, while it was 30 'x' in
circumference. O = pi*d,
>|> >>ergo, pi = 3.
>|>
>|> >I Kings 7:23 (NIV translation)
>|>
>|> > He made the Sea of cast metal, circular in shape, measuring en
>>(The KJE is, actually, a translation from the Latin.)
>
>The KJ is, actually, a translation out ot the Original Tongues and
>with the Former Translations diligently compared.
I heard that the AE (KJV) was, despite the preface, basically ripped off
from Tyndale's translation. This may explain why it was such a beautiful
translation and didn't read like a work by committee.
---
It is seldom that liberty of any kind is lost all at once. - David Hume
+On 8 Sep 1996 03:05:05 GMT, ssc...@roc.SLAC.Stanford.EDU (Stephen F.
+Schaffner) wrote:
+
+>>(The KJE is, actually, a translation from the Latin.)
+>
+>The KJ is, actually, a translation out ot the Original Tongues and
+>with the Former Translations diligently compared.
+
+I heard that the AE (KJV) was, despite the preface, basically ripped off
+from Tyndale's translation. This may explain why it was such a beautiful
+translation and didn't read like a work by committee.
What do you think they meant by "diligently compared"? :-)
Tyndale's was indeed the main prior translation used, with the Bishop's
Bible (itself with a Tyndale influence) and a gaggle of lesser ones.
1. URL Monikers
1.1. Introduction
The World Wide Web uses Uniform Resource Locators (URLs) to encode the
names and addresses of objects on the Internet. Refer to the
following pages for background material about URLs:
· Uniform Resource Locators (URL)
(http://ds.internic.net/rfc/rfc1738.txt)
· Relative Uniform Resource Locators
(http://ds.internic.net/rfc/rfc1808.txt)
· Universal Resource Identifiers in WWW (RFC1630)
(http://ds.internic.net/rfc/rfc1630.txt)
· Names and Addresses, URIs, URLs, URNs, URCs
(http://www.w3.org/pub/WWW/Addressing/Addressing.html)
· IETF - Hypertext Transfer Protocol (HTTP) Working Group
(http://www.ics.uci.edu/pub/ietf/http)
URL syntax was fundamentally designed to be
· Extensible, such that new naming schemes could be added later.
· Complete, such that it is possible to encode any naming scheme.
· Printable, such that it is possible to express any URL string using
7-bit ASCII characters so that URLs can, if necessary, be passed using
pen and ink.
Due to these simple goals, the OLE moniker architecture in fact offers
a convenient programming model for working with URLs in practice. The
moniker architecture supports extensible and complete name parsing
through the MkParseDisplayName(Ex) API and the IParseDisplayName and
IMoniker interfaces, as well as printable names through
IMoniker::GetDisplayName method. Monikers allow applications to spend
time and resources on what they want to do with objects and resources
and to leverage an extensible infrastructure that takes care of how
things actually gets done, such as downloading files, finding and
launching code, or encoding or decoding raw data into appropriate
formats. The IMoniker interface is the way you actually use URLs you
encounter, and building components that fit into the moniker
architecture is the way to actually extend URL namespaces in practice.
This document describes a new system-provided moniker class, the URL
Moniker, which provides a framework for building and using certain
URLs. Since URLs frequently refer to resources across high-latency
networks, the URL Moniker supports asynchronous as well as synchronous
binding. Refer to the Asynchronous Moniker specification for low-level
details about asynchronous binding; this document assumes a working
knowledge of that specification.
1.2. Overview
The following diagram shows the components involved in using URL
monikers. All of these components should be familiar from the
Asynchronous Moniker specification.
Figure 1. Components Involved in using URL Moniker (small light-gray
boxes), who they are implemented by (larger dark-gray boxes), and
their references to one-another (dotted lines).
As shown in the diagram, a client or user of URL monikers typically
creates and holds a reference to the moniker as well as the
bind-context to be used during binding (BindToStorage or
BindToObject). This is identical to normal moniker usage. To support
asynchronous binding, the client can implement a bind-status-callback
object supporting IBindStatusCallback and register it with the
bind-context using RegisterBindStatusCallback. This object will
receive the IBinding interface of the transport during
IBindStatusCallback::OnStartBinding. The URL moniker identifies the
protocol by the URL prefix and retrieves the IBinding interface from
the transport layer. The client uses IBinding to support pausing,
cancellation, and prioritization of the binding operation. The
callback object also receives progress notification through
IBindStatusCallback::OnProgress, data availability notification
through IBindStatusCallback::OnDataAvailable, as well as various other
notifications from the transport about the status of the binding. The
URL moniker or specific transport layers may also request extended
information from the client via IBindStatusCallback::QueryInterface,
allowing the client to provide protocol-specific information that will
affect the bind operation. To support media-type negotiation the
client can register a format enumerator implementing the
IEnumFORMATETC interface on the bind-context using
RegisterFormatEnumerator. URL Moniker translates these formats into
MIME Types when performing binding to HTTP URLs.
1.2.1. Callback Synchronization
The asynchronous WinInet API (used for the most common protocols)
leave the synchronization of the callback mechanism and the calling
application as an exercise for the client. This is intentional as it
allows the greatest degree of flexibility. The default protocols and
the URL moniker implementation perform this synchronization and
guarantee that single- and apartment-threaded applications will never
have to deal with free-thread style contention. That is, the client’s
IEnumFORMATETC and IBindStatusCallback interfaces are only ever called
on their proper thread. This feature is transparent to the user of the
URL moniker as long the thread that calls BindToStorage and
BindToObject have a message queue.
1.2.2. Fine-grain Priority Control
The Asynchronous Moniker specification requires a finer grain control
over the prioritization and management of downloads than allowed for
at either the WinSock or WinInet level. URL Moniker actually manages
all the downloads for any given caller’s thread and using – as part of
its synchronization – a priority scheme based on the IBinding
specification.
1.3. MIME
Many application-level Internet protocols are based on the exchange
of messages in a simple, flexible format known as MIME, or
Multipurpose Internet Mail Extensions. This format was developed for
exchanging electronic mail messages with rich content across
heterogeneous networking, machine, and e-mail environments. MIME has
since been adopted in numerous non-mail applications, and several of
its useful core features extended by further protocols, such as
Hyper-Text Transfer Protocol (HTTP). For an overview of MIME and its
use in HTTP, refer to the following pages:
· MIME Overview (http://ds.internic.net/rfc/rfc1630.txt)
· Media Type Registration Procedure
(http://ds.internic.net/rfc/rfc1590.txt)
· IETF - Hypertext Transfer Protocol (HTTP) Working Group
(http://www.ics.uci.edu/pub/ietf/http)
1.3.1. Media Types (MIME Content Types)
One recurring construct, the MIME Content Type, or Media Type for
short, is used extensively in Web applications to allow data format
negotiation between a client and an object or resource. Media Types
are simple strings which denote a type and subtype (such as
"text/plain" or "text/html") and are used to label data or qualify a
request. A Web browser, for example, lists as part of an HTTP
request-for-data (Get Request-Line) or request-for-info (Head
Request-Line) that it is requesting "image/gif" or "image/jpeg" Media
Types, to which a Web server responds by returning (as a Response) the
Media Type label of "image/gif" and optionally the image data itself
in the GIF format if the call was a request-for-data.
Media type negotiation is often similar to how existing desktop
applications negotiate with the system clipboard to determine which
data format to paste when the users chooses Edit/Paste or when they
query for formats when they receive an IDataObject during
drag-and-drop. The subtle difference in HTTP media type negotiation is
that the client lists media types in fidelity order up-front and the
server responds with the best available format rather than the client
knowing up-front which formats the server has available.
1.3.2. Media Type Negotiation with URL Moniker
URL monikers support Media Type negotiation in order to allow clients
to negotiate the data format to be downloaded in BindToStorage
scenarios.
Requesting Media Types
The possible media types requested by the client are represented to
URL monikers through FORMATETC structures available from the
IEnumFORMATETC enumerator registered by the caller on the
bind-context:
// implement enumfmtetc to hold a set of FORMATETCs, then do
the following or
// use CreateAsyncBindCtx, which encapsulates this
functionality
CreateBindCtx(0, &pbc);
RegisterFormatEnumerator(pbc, &enumfmtetc, 0);
Each FORMATETC specifies a clipboard format identifying the media
type, a NULL target device, DVASPECT_CONTENT, a value of -1 for
lindex, and TYMED_NULL, for example:
FORMATETC fmtetc;
fmtetc.cfFormat = RegisterClipboardFormat(CF_MIME_POSTSCRIPT);
fmtetc.ptd = NULL;
fmtetc.dwAspect = DVASPECT_CONTENT;
fmtetc.lindex = -1;
fmtetc.tymed = TYMED_NULL;
A special clipboard format value, CF_NULL, is used to indicate that
the default media type of the resource pointed to by the URL should be
retrieved. This FORMATETC can be placed anywhere within the enumerator
to indicate the priority which the client places on the default media
type, although it is typically the last format the client is
interested in if it is bothering to list formats it prefers. When no
enumerator is registered with the bind context, URL Moniker works as
if an enumerator containing a single FORMATETC with cfFormat=CF_NULL
is available; that is, URL Moniker will automatically bind to or
download the default media-type of the resource, which is a common
case.
Receiving Media Types
In all cases, the client is notified of the actual media type (if
applicable) that it receives during BindToStorage through the
pformatetc argument on its IBindStatusCallback::OnDataAvailable
method.
Overriding Default Viewers
When using IMoniker::BindToObject, it is possible to override the
object registered as the default class for handling a particular media
type. This is useful, for example, when binding to a .txt file within
a web browser¾the web browser should be used to view the "text/plain"
MIME type even though there is a default viewer registered as the
class for .txt files. Note, however, that this function must be used
with special care, and it is only advised for advanced programmers.
The RegisterMediaTypeClass API may be used to register a mapping of
media types to CLSIDs with a bind context. When binding to objects
using this bind context, this mapping overrides the default mapping of
file types to CLSIDs. The FindMediaTypeClass API may be used to query
the particular CLSID registered on a bind context as the appropriate
class for a given media type.
1.3.3. Complex Media Types
How important are Media Type parameters, i.e. "image/jpeg;
quality=low"? If parameters are generally used more in a global sense
rather than on a per-transfer basis, they should be established
elsewhere, perhaps as strings floating around on another object on the
bind-context. If not, putting them in the clipboard format by
concatenating strings and then using RegisterClipboardFormat is not
unreasonable (there are >16000 clipboard formats available to
RegisterClipboardFormat)
Also, should clients be able to specify Content-Transfer-Encoding? The
answer appears to be no from the client perspective, as it should
really be mostly transparent. Will eventually describe how
Content-Transfer-Encodings are bound into the HTTP protocol, and how
you build a custom decode piece for media-types.
1.4. Examples
1.4.1. Downloading an Image from a Full URL
// register the clipboard formats and create an IEnumFORMATETC
object around them, enumfmtetc
// this is probably such a common form of request that this
will be a global object that is multi-usable
cfGIF = RegisterClipboardFormat(CFSTR_MIME_GIF);
cfJPEG = RegisterClipboardFormat(CFSTR_MIME_JPEG);
// create some enumfmtetc object based on the above formats
// create a bind-status-callback object, bsc, that supports
IBindStatusCallback
CreateURLMoniker(NULL, L"http://www.foo.com/some_image",
&pmk);
// create the bind-context for the bind operation
CreateAsyncBindCtx(0, &bsc, &enumfmtetc, &pbc)
// start the binding operation.
pmk->BindToStorage(pbc, NULL, IID_IStream, &pstm);
pbc->Release();
pmk->Release();
// the actual work to interpret the data stream will occur
during ::OnDataAvailable to bsc
// at some later date, at which point the transport will tell
us which media type is actually
// being downloaded and chunks of it will begin arriving.
// over the duration of the download, IBindStatusCallback will
be receiving progress
// notifications as well, which we can use to update our UI’s
progress meter
1.4.2. Downloading an Image from a Relative/Partial URL
// as above, except that the created URL moniker is a partial
URL…
CreateURLMoniker(NULL, L"./some_other_image", &pmk);
// …and furthermore the caller registers the full URL of the
current document with the bind-context
// before binding so that the partial URL can pull context
from the document’s full URL, which is
// "http://www.foo.com/main.html"
pbc->RegisterObjectParam(SZ_URLCONTEXT,
&m_pmkCurrentDocument);
// as before, except that pmk will end up binding to
"http://www.foo.com/some_other_image"
pmk->BindToStorage(pbc, NULL, IID_IStream, &pstm);
…
1.5. Technical Details of URL Monikers
// CLSID_URLMoniker: {79EAC9E0-BAF9-11CE-8C82-00AA004BA90B}
DEFINE_GUID(CLSID_URLMoniker, 0x79eac9e0, 0xbaf9, 0x11ce,
0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b);
HRESULT CreateURLMoniker([in] IMoniker* pmkContext, [in]
LPWSTR szURL, [out] IMoniker** ppmk);
HRESULT IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);
HRESULT RegisterMediaTypes([in] UINT ctypes, [in,
length_is(ctypes)] LPTSTR* rgszTypes,
[out, length_is(ctypes)]
CLIPFORMAT* rgcfTypes);
HRESULT CreateFormatEnumerator([in] UINT cfmtetc, [in,
length_is(cfmtetc)] FORMATETC* rgfmtetc,
[out] IEnumFORMATETC**
ppenumfmtetc);
HRESULT RegisterFormatEnumerator( [in] LPBC pBC, [in]
IEnumFORMATETC* pEFetc, [in] DWORD dwReserved);
HRESULT RevokeFormatEnumerator( [in] LPBC pBC, [in]
IEnumFORMATETC* pEFetc);
HRESULT RegisterMediaTypeClass( [in] LPBC pBC, [in] UINT
ctypes, [in] const LPCSTR* rgszTypes,
[in] CLSID *rgclsID, [in]
DWORD dwReserved);
HRESULT FindMediaTypeClass( [in] LPBC pBC, [in] LPCSTR szType,
[out] CLSID *pclsID, [in] DWORD dwReserved);
HRESULT UrlMkSetSessionOption( [in] DWORD dwOption, [in]
LPVOID pBuffer,
[in] DWORD dwBufferLength,
[in] DWORD dwReserved);
#define CF_NULL 0
#define SZ_URLCONTEXT (L"URL
Context")
#define CFSTR_MIME_FRACTALS
(TEXT("application/fractals"))
#define CFSTR_MIME_RAWDATA
(TEXT("application/octet"))
#define CFSTR_MIME_POSTSCRIPT
(TEXT("application/postscript"))
#define CFSTR_MIME_AIFF
(TEXT("audio/aiff"))
#define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
#define CFSTR_MIME_WAV (TEXT("audio/wav"))
#define CFSTR_MIME_X_AIIF
(TEXT("audio/x-aiif"))
#define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
#define CFSTR_MIME_X_WAV
(TEXT("audio/x-wav"))
#define CFSTR_MIME_BMP (TEXT("image/bmp"))
#define CFSTR_MIME_GIF
(TEXT("image/gif"))
#define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
#define CFSTR_MIME_TIFF (TEXT("image/tiff"))
#define CFSTR_MIME_XBM (TEXT("image/xbm"))
#define CFSTR_MIME_X_BITMAP
(TEXT("image/x-bitmap"))
#define CFSTR_MIME_HTML (TEXT("text/html"))
#define CFSTR_MIME_TEXT (TEXT("text/plain"))
#define CFSTR_MIME_AVI
(TEXT("video/avi"))
#define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
#define CFSTR_MIME_QUICKTIME
(TEXT("video/quicktime"))
#define CFSTR_MIME_X_MSVIDEO
(TEXT("video/x-msvideo"))
#define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
// URL Moniker possible error return values - returned in
IBindStatusCallback::OnStopBinding
INET_E_INVALID_URL
INET_E_NO_SESSION
INET_E_CANNOT_CONNECT
INET_E_RESOURCE_NOT_FOUND
INET_E_OBJECT_NOT_FOUND
INET_E_DATA_NOT_AVAILABLE
INET_E_DOWNLOAD_FAILURE
INET_E_AUTHENTICATION_REQUIRED
INET_E_NO_VALID_MEDIA
INET_E_CONNECTION_TIMEOUT
INET_E_INVALID_REQUEST
INET_E_UNKNOWN_PROTOCOL
1.5.1.1. IsValidURL
HRESULT IsValidURL(pBC, szURL, dwReserved);
This simple API is used to determine if a given string szURL is a
valid absolute URL that may be used to construct a URL moniker. Note:
relative URLs are not considered "valid" by this API.
Argument Type Description
pBC IBindCtx * Optional bind context parameter. Currently
ignored, should be set to NULL.
szURL LPCWSTR The URL to check for validity.
dwReserved DWORD Reserved, must be set to zero.
Returns S_OK The szURL is a valid URL address.
S_FALSE The szURL is not a valid URL address.
E_INVALIDARG One or more arguments are invalid.
1.5.1.2. RegisterMediaTypes
HRESULT RegisterMediaTypes(ctypes, rgszTypes, rgcfTypes);
Registers media types strings.
Argument Type Description
ctypes UINT The number of media type strings in the rgszTypes
array. May not be zero.
rgszTypes LPTSTR* Array of strings identifying the media types
to be registered. None may be NULL.
rgcfTypes CLIPFORMAT* An array of 32-bit values that should
be assigned to the corresponding media types in rgszTypes.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.1.3. CreateFormatEnumerator
HRESULT CreateFormatEnumerator(cfmtetc, rgfmtetc, ppenumfmtetc);
Creates an object which implements IEnumFORMATETC over a static array
of cfmtetc FORMATETCs.
Argument Type Description
cfmtetc UINT The number of FORMATETCs in rgfmtetc. May not be zero.
rgfmtetc CLIPFORMAT* Static array of formats.
ppenumfmtetc IEnumFORMATETC** Location to return the
IEnumFORMATETC interface of the enumerator.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.1.4. RegisterFormatEnumerator
HRESULT RegisterFormatEnumerator(pbc, pEFetc, dwReserved);
Registers a format enumerator object onto the given bind context. This
format enumerator is used to determine what format types are prefered
for the bind operation.
Argument Type Description
pbc LPBC The pointer to the bind context.
pEFetc IEnumFORMATETC * The format enumerator.
dwReserved DWORD Reserved for future use, must be zero.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.1.5. RevokeFormatEnumerator
HRESULT RevokeFormatEnumerator(pbc, pEFetc);
Removes a format enumerator from the given bind context.
Argument Type Description
pbc LPBC The pointer to the bind context.
pEFetc IEnumFORMATETC * The format enumerator.
Returns S_OK Success - the format enumerator was removed.
E_INVALIDARG One or more arguments are invalid.
1.5.1.6. RegisterMediaTypeClass
HRESULT RegisterMediaTypeClass(pbc, ctypes, rgszTypes, rgclsid,
dwReserved);
Registers a mapping of media types to CLSIDs to override the default
mapping when binding to objects using the given bind context. This
function is primarily used by moniker clients (e.g. web browsers) that
wish to override the default registry file-type to CLSID mapping. The
function creates an object that is registered on the bind context and
is used by monikers when choosing the class to instantiate as the
result of a IMoniker::BindToObject operation. Note: this function is
only intended for use by very advanced users!
Argument Type Description
pbc LPBC The pointer to the bind context.
ctypes UINT The number of media type strings in the rgszTypes
array. May not be zero.
rgszTypes LPCSTR * Array of strings identifying the media
types to be registered. None may be NULL.
rgszclsid CLSID * Array of CLSIDs corresponding to the given
media types.
dwReserved DWORD Reserved for future use, must be zero.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.1.7. FindMediaTypeClass
HRESULT FindMediaTypeClass(pbc, szType, pclsID, dwReserved);
Queries the particular CLSID registered on a bind context as the
appropriate class for a given media type. This function is primarily
used by a moniker implementation when servicing a call to
BindToObject.
Argument Type Description
pbc LPBC The pointer to the bind context.
szType LPCSTR A string identifying the media types. May not be NULL.
pclsid CLSID * On return, this contains the corresponding CLSID.
dwReserved DWORD Reserved for future use, must be zero.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.1.8. UrlMkSetSessionOption
HRESULT UrlMkSetSessionOption(dwOption, pBuffer, dwBufferLength,
dwReserved);
This API can be used by URL Moniker clients to set options for the
current "internet session". This function maps directly to the Windows
Internet API InternetSetOption(), although this API only allows
session global options to be set. Note: in order to use this function
the client code muse #include the "wininet.h" header file which
declares values for the dwOption parameter and structures for the
pBuffer parameter.
Argument Type Description
dwOption DWORD The session option to set. For instance, a
value of INTERNET_OPTION_PROXY allows the client to overwrite the
current proxy settings
pBuffer LPVOID Buffer containing new session settings. May not be
NULL.
dwBufferLength DWORD The size of pBuffer.
dwReserved DWORD Reserved for future use, must be zero.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.5.2. URL Moniker class
1.5.2.1. CreateURLMoniker
HRESULT CreateURLMoniker(pmkContext, szURL, ppmk);
Creates a URL moniker from either a full URL string or from a base
context URL moniker and a partial URL string.
Partial URLs are similar to relative paths within file systems in that
resolution to an object requires context outside the partial string
alone, whereas full URL strings are like fully-qualified paths –
self-contained and often location independent. When creating an URL
moniker from a partial URL string, the caller may specify through
pmkContext the URL moniker to draw context from when creating a full
URL string from the partial URL string. In this case, CreateURLMoniker
retrieves the display name of pmkContext (via
IMoniker::GetDisplayName) and manually composes it with szURL
according to URL composition rules. The caller may alternately create
a moniker from a partial URL string without context (pmkContext=NULL),
in which case the resulting moniker will draw further context during
binding (IMoniker::BindToObject and IMoniker::BindToStorage) by
looking first in the passed IBindCtx for a contextual URL moniker
object parameter by using IBindCtx::GetObjectParam(SZ_URLCONTEXT,
(IUnknown**)&pmkContext), and next to its left for another URL Moniker
from which to draw context.
Argument Type Description
pmkContext IMoniker* The URL to use as the base context
when szURL is a partial URL string. NULL when szURL is a full URL
string or if this moniker will retrieve full URL context from its left
or from the bind-context during IMoniker::BindToObject or
IMoniker::BindToStorage.
szURL LPWSTR The display name to be parsed.
ppmk IMoniker** Location to return a moniker if successful.
Returns S_OK Success.
E_OUTOFMEMORY Out of memory.
MK_E_SYNTAX A moniker could not be created because szURL does not
correspond to valid URL syntax for a full or partial URL. This is
uncommon, since most parsing of the URL occurs during binding and also
since the syntax for URLs is extremely flexible.
1.5.2.2. URL Moniker–IUnknown::QueryInterface
URL Moniker supports IUnknown, IAsyncMoniker, IPersist,
IPersistStream, and IMoniker. Recall that IMonikerAsync is simply
IUnknown (there are no actual methods), and is used to allow clients
to determine transparently if a moniker supports asynchronous binding.
1.5.2.3. URL Moniker–IPersist::GetClassID
Returns CLSID_StdURLMoniker.
1.5.2.4. URL Moniker–IPersistStream::IsDirty
Returns S_OK if the Moniker has changed since it was last saved
(IPersistStream::Save with fClearDirty==TRUE), S_FALSE otherwise.
1.5.2.5. URL Moniker–IPersistStream::Load
Initializes a URL moniker from data within a stream, usually stored
there previously using its IPersistStream::Save (via OleSaveToStream
or OleSaveToStreamEx). The binary format of URL Moniker is its URL
string in Unicodeâ„¢ (may be a full or partial URL string, see
CreateURLMoniker for details). This is represented as a ULONG (32-bit)
count of characters followed by that many Unicode characters.
1.5.2.6. URL Moniker–IPersistStream::Save
Saves a URL moniker to a stream. The binary format of URL Moniker is
its URL string in Unicode (may be a full or partial URL string, see
CreateURLMoniker for details). This is represented as a ULONG (32-bit)
count of characters followed by that many Unicodeâ„¢ characters.
1.5.2.7. URL Moniker–IPersistStream::GetSizeMax
Returns the maximum number of bytes in the stream that will be
required by a subsequent call to IPersistStream::Save. This value is
SIZEOF(ULONG)==4 plus SIZEOF(WCHAR)*n where n is the length of the
full or partial URL string including the NULL terminator.
1.5.2.8. URL Moniker–IMoniker::BindToObject
Since the URL Moniker supports asynchronous binding, the actual return
value of its BindToObject may vary depending on the object parameters
established in the bind-context, however the semantics of the bind
operation are identical regardless of synchronous or asynchronous
usage, and are as follows:
1. URL Moniker pulls further information for the bind operation from
the bind-context (for example, the IBindStatusCallback and
IEnumFORMATETC interfaces).
2. It next checks the Running Object Table of the bind-context to
determine if it is already running, using
IBindCtx::GetRunningObjectTable(&prot) followed by
prot->IsRunning(this). If it is already running, it retrieves the
running object with prot->GetObject(this, &punk) and QueryInterface’s
for the requested interface.
3. Otherwise, it queries the client in
IBindStatusCallback::GetBindInfo, initiates the bind operation, and
passes the resulting IBinding to the client via
IBindStatusCallback::OnStartBinding.
4. If in step 1 it was determined that this was an asynchronous bind,
BindToObject returns MK_S_ASYNCHRONOUS at this point with NULL in ppv.
The caller will receive the actual object pointer during
IBindStatusCallback::OnObjectAvailable at some later point. The
following steps then occur asynchronously to the caller, typically on
another thread of execution.
5. The class of the resource designated by the URL Moniker is next
determined in one of the following ways:
· In the case of HTTP, the initial HTTP response packet header may
contain the CLSID of the actual (Get) or referred to (Head) resource
as an extension-header to the Entity Header section of the
Full-Response message of the form:
CLSID = "CLSID" ": " stringized-clsid
where stringized-clsid can be created using StringFromCLSID and
interpreted using CLSIDFromString. New HTTP servers can support this
functionality readily.
· URL Moniker examines the media type of the data. If the media type
is "application/x-oleobject" the first 16-bytes of the actual data
(Content-Body) contain the CLSID of the resource and subsequent data
is to be interpreted by the class itself. For all other media types,
URL Moniker looks in the system registry for the
HKEY_CLASSES_ROOT\MIME\Database\Content-Type\<media-type>\CLSID key.
· URL Moniker matches portions of arriving data to patterns registered
in the system registry under HKEY_CLASSES_ROOT\FileTypes.
· Finally, if all else fails, URL Moniker correlates the trailing
extension of the resource, if any, to a CLSID using the
HKEY_CLASSES_ROOT\.??? keys in the system registry, as is done by
GetClassFile and the shell.
6. Having determined the class, URL moniker creates an instance using
CoCreateInstance of CLSCTX_SERVER asking for the IUnknown interface.
7. URL Moniker next QueryInterfaces the newly created object for
IPersistMoniker and if successful calls IPersistMoniker::Load passing
itself (this) as the moniker parameter. The object typically turns
around and calls IMoniker::BindToStorage asking for the storage
interface that they’re interested in.
8. Otherwise, URL Moniker QueryInterfaces for IPersistStream and if
successful calls IPersistStream::Load, passing the object an IStream
which is being filled asynchronously by the transport. If the class
being called is not marked with the category CATID_AsyncAware, calls
to IStream::Read or IStream::Write which reference data not yet
available block until the data becomes available. If the class is
marked with the category CATID_AsyncAware, calls to IStream::Read or
IStream::Write which reference data not yet available return
E_PENDING.
9. Otherwise, URL Moniker asks for QueryInterfaces for IPersistFile,
and if successful completes the download into a temporary file and
then calls IPersistFile::Load. The created file is cached along with
other Internet-downloaded data. The client must be sure not to delete
this file.
10. When the object returns from one of the various IPersistXXX::Load
calls above, URL Moniker returns the client the interface pointer
originally requested in IMoniker::BindToObject using the callback
IBindStatusCallBack::OnObjectAvailable.
1.5.2.9. URL Moniker–IMoniker::BindToStorage
The system implementation of URL Moniker supports BindToStorage for
IStream on all URLs and for IStorage in the case where the designated
resource is in fact a compound file.
Since the URL Moniker supports asynchronous binding, the actual return
value of its BindToStorage may vary depending on the object parameters
established in the bind-context, however the semantics of the bind
operation are identical regardless of synchronous or asynchronous
usage, and are as follows:
1. URL Moniker pulls further information for the bind operation from
the bind context (for example, the IBindStatusCallback and the
IEnumFORMATETC interfaces). The Moniker then queries the client in
IBindStatusCallback::GetBindInfo, initiates the bind operation with
the transport, and passes the resulting IBinding to the client via
IBindStatusCallback::OnStartBinding.
2. If the caller requested an asynchronous IStream or IStorage via the
BINDF_ASYNCSTORAGE flag in the BINDINFO retrieved from
IBindStatsCallback::GetBindInfo, URL Moniker returns the object as
soon as possible. Calls to these IStorage or IStream objects which
reference data not yet available return E_PENDING.
3. If the caller does not specify asynchronous IStream or IStorage as
described above, URL Moniker will still return an object through
IBindStatusCallback::OnDataAvailable as soon as possible. However
calls to these objects which reference data not yet available will
block until the data becomes available. For some applications this
will require the least modification of their existing I/O code, yet
may still result in improved performance depending on their
access-patterns.
1.5.2.10. URL Moniker–IMoniker::Reduce
Returns MK_S_REDUCED_TO_SELF and itself (this) in *ppmkReduced.
1.5.2.11. URL Moniker–IMoniker::ComposeWith
URL Monikers support composition of two URLs (a base URL composed with
a relative URL). This composition is done according to the RFC on
relative URLs . URL monikers do not currently support the composition
of a base URL moniker with a relative file moniker, although this may
be supported in the future. However, URL Monikers do support generic
composition. If fOnlyIfNotGeneric==FALSE, this method returns
CreateGenericComposite(this, pmkRight, ppmkComposite). See the Win32
documentation about IMoniker::ComposeWith for details.
1.5.2.12. URL Moniker–IMoniker::Enum
Returns S_OK and sets *ppenumMoniker to NULL, indicating that the
moniker does not contain sub-monikers.
1.5.2.13. URL Moniker–IMoniker::IsEqual
Returns S_FALSE if the other moniker (pmkOtherMoniker) is not a URL
moniker, which it checks using IPersist::GetClassID to see if the
CLSID is CLSID_URLMoniker. If the other moniker is an URL moniker, it
compares the display names of the monikers for equality, returning
either S_OK if they are identical or S_FALSE if not.
1.5.2.14. URL Moniker–IMoniker::Hash
Creates a hash value based on the URL string of the moniker. This hash
value is identical when URL strings are identical, although it may
also be identical for different URL strings. This method is used to
speed up comparisons by reducing the amount of time that it is
necessary to call IsEqual.
1.5.2.15. URL Moniker–IMoniker::IsRunning
Returns S_OK if this moniker is currently "running", otherwise returns
S_FALSE. URL Moniker determines if it is running by first checking if
it is equal to the newly running moniker (by calling
pmkNewlyRunning->IsEqual(this) which is typically an inexpensive
operation) and next by checking if it is registered with the Running
Object Table of the passed-in bind-context.
1.5.2.16. URL Moniker–IMoniker::GetTimeOfLastChange
Returns the time of last change of an object that is registered in the
running object table
1.5.2.17. URL Moniker–IMoniker::Inverse
Returns MK_E_NOINVERSE.
1.5.2.18. URL Moniker–IMoniker::CommonPrefixWith
Currently returns E_NOTIMPL. May in the future properly compute the
proper common prefix of two URL monikers. See the Win32 documentation
about IMoniker::CommonPrefixWith for details.
1.5.2.19. URL Moniker–IMoniker::RelativePathTo
Returns E_NOTIMPL. May in the future properly compute the relative
path between two URL monikers. See the Win32 documentation about
IMoniker::RelativePathTo for details.
1.5.2.20. URL Moniker–IMoniker::GetDisplayName
URL Moniker attempts to return its full URL string. If the moniker was
created with a partial URL string (see CreateURLMoniker), it will
first attempt to find an URL moniker in the bind-context under
SZ_URLCONTEXT, and will next look to the moniker to its left for
contextual information. If it can not return its full URL string, it
will return its partial URL string.
1.5.2.21. URL Moniker–IMoniker::ParseDisplayName
Parses a full or partial URL string into a result moniker (ppmkOut).
If szDisplayName represents a full URL string (i.e.
"http://foo.com/default.html"), the result is a new full URL moniker.
If szDisplayName represents a partial URL string (i.e.
"..\default.html"), the result is a full URL that takes its context
from either the bind-context’s SZ_URLCONTEXT object-parameter or from
this URL moniker (i.e., if the context moniker was
"http://foo.com/pub/list.html" and szDisplayName was
"..\default.html", the resulting URL moniker would represent
"http://foo.com/default.html").
1.5.2.22. URL Moniker–IMoniker::IsSystemMoniker
Returns S_OK and MKSYS_URLMONIKER in *pdwMksys.
1.6. Extension services requested during a bind operation
A URL bind may require additional services from the client in order to
complete negotiations necessary for a download operation. These
services may be additional callbacks that are implemented by the
client and are requested by the moniker. These callback extensions are
commonly requested using IBindStatusCallback::QueryInterface. However,
a moniker client may also provide these extension callback interfaces
via an IServiceProvider interface. After the moniker uses
IBindStatusCallback::QueryInterface to directly query the client for
an extension interface, the moniker will then query for the
IServiceProvider interface, and will then try using
IServiceProvider::QueryService to query for the desired extension
interface.
Two such extension callback services that may be needed for URL
downloads are authentication and "generic HTTP negotiation". The
corresponding interfaces requested in
IBindStatusCallback::QueryInterface or IServiceProvider::QueryService
are IAuthenticate and IHttpNegotiate. A more generic interface is
IWindowForBindingUI, an interface which is requested from the client
when the moniker wishes to display UI. Another extension callback is
IHttpSecurity, an interface which a client may implement in order to
provide custom UI or UI-less operation when HTTP security issues
arise. Note that for all these extension callbacks, if there are
multiple clients for an asynchronous moniker bind operation (e.g. an
OLE object and its container are both receiving callbacks), it is
usually the responsibility of the container to implement the extension
callbacks, thus relieving the contained object (e.g. controls) of
extra work.
Alternatively, a client may request protocol-specific services from
the URL moniker during a bind operation. Such services are requested
by querying for additional interfaces from the IBinding object
corresponding to a particular bind operation. Two such
protocol-specific service are IWinInetInfo and IWinInetHttpInfo,
interfaces used for querying specific information related to Internet
protocols.
1.6.1. IWindowForBindingUI
This simple interface is implemented by URL Moniker clients that wish
to allow the moniker to display UI when necessary. As with other
callback extension interfaces, this interface is usually implemented
by OLE containers that also implement the IBindHost interface. Note:
the URL Moniker will not request this interface from clients unless
the bind context BIND_OPTS specify the grfFlags value of
BIND_MAYBOTHERUSER using IBindCtx::SetBindOptions. The
IWindowForBindingUI interface is very similar to the existing
IOleWindow interface. A new interface is used here because IOleWindow
is semantically used only for in-place activation.
interface IWindowForBindingUI : IUnknown {
HRESULT GetWindow([in] REFGUID rguidReason, [out]
HWND* phwnd);
};
1.6.1.1. IWindowForBindingUI::GetWindow
This function is called by the URL Moniker when it needs a window to
present UI during a bind operation.
Argument Type Description
rguidReason REFGUID The reason why the moniker is requesting to
display UI during a bind operation. This value may be one of
IID_IAuthenticate, IID_IHttpSecurity, IID_ICodeInstall, or any other
future reasons for displaying UI.
phwnd HWND * Client-provided HWND of the parent window to use for
displaying UI.
Returns S_OK Success.
S_FALSE No window is available for UI.
E_INVALIDARG One or more arguments are invalid.
1.6.2. IAuthenticate
This interface is implemented by URL Moniker clients that are
interested in participating in user authentication. This interface
allows clients a chance to display custom UI or use a custom
password-list to specify a username and password for accessing secure
Internet resources. Note: this interface should only be implemented by
URL Moniker clients that wish to display custom authentication UI or
wish to do UI-less authentication. If default UI is acceptable,
implementing IWindowForBindingUI is all that is needed to make sure
bind operations go smoothly.
interface IAuthenticate : IUnknown {
HRESULT Authenticate( [out] HWND* phwnd, [out] LPWSTR
*pszUsername, [out] LPWSTR *pszPassword);
};
1.6.2.1. IAuthenticate::Authenticate
This function is called by the URL Moniker when it needs basic
authentication information from a bind client. The client may choose
to return username and password strings, or it may provide an HWND
that is used to present default authentication UI.
Argument Type Description
phwnd HWND * Client-provided HWND of the parent window for default
authentication UI. If no UI is desired, the client must provide a
username and password in the other parameters, and this handle.is set
to the value -1.
pszUsername LPWSTR * Client-provided username for
authentication. If the client returns a value here it should also set
*phwnd = -1.
pszPassword LPWSTR * Client-provided password for
authentication. If the client returns a value here it should also set
*phwnd = -1.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.6.3. IHttpNegotiate
This interface is implemented by those moniker clients that are
interested in participating in the HTTP negotiations that take place
when binding to "http:" URLs. The callbacks in this interface provide
clients with the opportunity to add headers to HTTP requests and to
examine HTTP response headers. Note that this callback may be sent to
multiple clients of an HTTP bind operation¾each client may participate
in the HTTP negotiation process by looking at existing request headers
and adding additional ones.
interface IHttpNegotate : IUnknown {
HRESULT BeginningTransaction( [in] LPCWSTR szURL, [in]
DWORD dwReserved,
[in]
LPCWSTR szHeaders, [out] LPWSTR *pszAdditionalHeaders);
HRESULT OnResponse( [in] DWORD dwResponseCode, [in]
LPCWSTR szResponseHeaders,
[in]
LPCWSTR szRequestHeaders, [out] LPWSTR *pszAdditionalRequestHeaders);
};
1.6.3.1. IHttpNegotiate::BeginningTransaction
This function is called by the URL Moniker before sending an HTTP
request. It notifies the client of the URL being bound to at the
beginning of the HTTP transaction. It also allows the client to add
additional headers (such as Accept-Language) to the request.
Argument Type Description
szURL LPCWSTR The URL for the HTTP transaction.
dwReserved DWORD Reserved for future use.
szHeaders LPCWSTR The current request headers.
pszAdditionalHeaders LPWSTR * Optional additional headers to
append to the HTTP request. If these conflict with existing values in
szHeaders, then the new request headers take precedence. Note: if no
headers are provided, then no headers are appended to the HTTP
request.
Returns S_OK Success, append the headers (if any) in
pszAdditionalHeaders to the HTTP request headers.
E_INVALIDARG The argument is invalid.
E_ABORT Abort the HTTP transaction.
1.6.3.2. IHttpNegotiate::OnResponse
This function is called upon receiving a response to an HTTP request.
In success cases, this callback allows the client of a bind operation
to examine the response headers and possibly abort the bind operation.
In error cases (errors that cannot be resolved using default
behavior), this callback allows the client to add HTTP headers to the
request before it is sent again.
Argument Type Description
dwResponseCode DWORD HTTP response code (see HTTP specification).
szResponseHeaders LPCWSTR Response headers from the HTTP server.
szRequestHeaders LPCWSTR In dwResponseCode error cases, the
HTTP headers that will be used when the request is resent.
pszAdditionalRequestHeaders
LPWSTR * In dwResponseCode error cases, the client may
use this optional parameter to add to the request headers before
resending. If the specified header value conflicts with existing
values in szRequestHeaders, then the new request headers take
precedence. Note: if no headers are provided in this parameter, then
no headers are appended to the HTTP request.
Returns S_OK Success. In dwResponseCode error cases, append
pszAdditionalRequestHeaders (if any) to the resent request headers.
E_INVALIDARG The argument is invalid.
E_ABORT Abort the HTTP transaction.
1.6.4. IHttpSecurity
This interface is implemented by URL Moniker clients that are
interested in hearing about HTTP security problems. This interface
allows clients a chance to display custom UI or make decisions about
whether or not to ignore various security issues. Note: this interface
should only be implemented by URL Moniker clients that wish to display
custom UI or wish to make security decisions without displaying UI. If
default UI is acceptable, implementing IWindowForBindingUI is all that
is needed to make sure bind operations go smoothly. URL Moniker will
query for this interface and use it to resolve security issues if it
is implemented by the client, but if the interface is absent the URL
Moniker will resort to using IWindowForBindingUI in order to display
default UI. Note: in order to use this interface, client code must
also #include the wininet.h header file because of flag definitions in
that header file.
interface IHttpSecurity : IWindowForBindingUI {
HRESULT OnSecurityProblem( [in] DWORD dwProblem);
};
1.6.4.1. IHttpSecurity::OnSecurityProblem
This function is called by the URL Moniker when it needs to decide
whether or not to abort a bind operation when a security problem has
occured. The client may choose to abort the bind operation, continue
the operation, or "claim ignorance". Note that an URL Moniker client
may choose to ignore all security issues by specifying
BINDF_IGNORESECURITYPROBLEM during IBindStatusCallback::GetBindInfo
Argument Type Description
dwProblem DWORD Identifies the security problem that has
occurred. Possible values are the security related error return values
from the Windows Internet API InternetSendRequest(), such as
ERROR_INTERNET_SEC_CERT_DATE_INVALID,
ERROR_INTERNET_SEC_CERT_CN_INVALID,
ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR,
ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR.
Returns S_OK The client wishes to continue the bind operation.
S_FALSE The client does not understand the security problem.
E_ABORT The client wishes to abort the bind operation..
1.6.5. IWinInetInfo
This interface is implemented by the IBinding object for standard
Internet protocols. An URL Moniker client may request this interface
via IBinding::QueryInterface, and may then query protocol-specific
information from the IBinding object. Note: in order to use this
interface, client code must also #include the wininet.h header file
because of flags and structure definitions in that header file.
interface IWinInetInfo : IUnknown {
HRESULT QueryOption([in] DWORD dwOption, [out] LPVOID
pBuffer, [in/out] DWORD *pcbBuf);
};
1.6.5.1. IWinInetInfo::QueryOption
This function is called by a client of URL Moniker in order to query
protocol-specific information pertaining to Internet bind operations.
The implementation of this method maps directly to the Windows
Internet InternetQueryOption() API.
Argument Type Description
dwOption DWORD Specifies what information to query. Valid
values are documented along with InternetQueryOption.
pBuffer LPVOID Buffer to receive the result of the query.
pcbBuf DWORD * Pointer to the size of the given buffer. Upon return,
this contains the length of the data written into pBuffer.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.6.6. IWinInetHttpInfo
This interface is implemented by the IBinding object for bind
operations to HTTP URLs. An URL Moniker client may request this
interface via IBinding::QueryInterface, and may then query
HTTP-specific information from the IBinding object. Note: in order to
use this interface, client code must also #include the wininet.h
header file because of flags and structure definitions in that header
file.
interface IWinInetHttpInfo : IWinInetInfo {
HRESULT QueryInfo([in] DWORD dwOption, [out] LPVOID
pBuffer, [in/out] DWORD *pcbBuf,
[in/out] DWORD *pdwFlags, [in] DWORD dwReserved);
};
1.6.6.1. IWinInetHttpInfo::QueryInfo
This function is called by a client of URL Moniker in order to query
HTTP-specific information pertaining to Internet bind operations. The
implementation of this method maps directly to the Windows Internet
HttpQueryInfo() API.
Argument Type Description
dwOption DWORD Specifies what information to query and flags
which modify the request. Valid values are documented along with
HttpQueryInfo.
pBuffer LPVOID Buffer to receive the result of the query.
pcbBuf DWORD * Pointer to the size of the given buffer. Upon return,
this contains the length of the data written into pBuffer.
pdwIndex DWORD * A pointer to a zero-based index. See
documentation for HttpQueryInfo for details.
dwReserved DWORD Reserved for future use, must be zero.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
1.7. Technical Review of Monikers
interface IParseDisplayName : IUnknown {
HRESULT ParseDisplayName([in] IBindCtx* pbc, [in]
LPWSTR szDisplayName, [out] ULONG* pcchEaten, [out] IMoniker**
ppmkOut);
};
HRESULT MkParseDisplayNameEx([in] IBindCtx* pbc, [in] LPWSTR
szDisplayName, [out] ULONG* pcchEaten, [out] IMoniker** ppmk);
1.7.1. MkParseDisplayNameEx
HRESULT MkParseDisplayNameEx(pbc, szDisplayName, pcchEaten, ppmk);
Given a string, this function returns a mon-iker of the object that
the string denotes. This operation is known as parsing. A display name
is parsed into a moniker; it is resolved into its component moniker
parts.
If a syntax error occurs, than an indication of how much of the string
was successfully parsed is returned in pcchEaten and NULL is returned
through ppmk. Otherwise, the value returned through pcchEaten
indi-cates the entire size of the display name.
This API differs from the original MkParseDisplayName in that it
supports Universal Resource Indicator (URI) syntax as established in
IETF RFC1630 (http://ds.internic.net/rfc/rfc1590.txt).
Argument Type Description
pbc IBindCtx* The binding context in which to accumulate
bound objects.
szDisplayName LPCWSTR The display name to be parsed.
pcchEaten ULONG* On exit the number of characters of the
display name that was successfully parsed. Most useful on syntax
error, when a non-zero value is often returned and therefore a
subsequent call to MkParseDisplayNameEx with the same pbc and a
shortened szDisplayName should return a valid moniker.
ppmk IMoniker** Location to return a moniker if successful.
Returns S_OK Success.
MK_E_SYNTAX Parsing failed because szDisplayName could only be
partially resolved into a moniker. In this case, *pcchEaten holds the
number of characters that were successfully resolved into a moniker
prefix.
E_OUTOFMEMORY Out of memory.
Parsing a display name may in some cases be as expensive as binding to
the object that it denotes, since along the way various non-trivial
name space managers (such as a spreadsheet application that can parse
into ranges in its sheets) need to be connected to by the parsing
mechanism to succeed. As might be expected, objects are not released
by the parsing operation itself, but are instead handed over to the
passed-in binding context (via IBindCtx::RegisterObjectBound). Thus,
if the moniker resulting from the parse is immediately bound using
this same binding con-text, redundant loading of objects is maximally
avoided.
In many other cases, however, parsing a display name may be quite
inexpensive since a single name-space manager may quickly return a
moniker that will perform further expensive analysis on any acceptable
name during IMoniker::BindToObject or other methods. An example of
such an inexpensive parser is the Win32 implementation of a File
Moniker. A theoretical example would be a naïve URL moniker which
parsed from any valid URL strings (i.e., "http:…", "file:…") and only
during binding took time to resolve the string against the Internet, a
potentially expensive operation.
The parsing process is an inductive one, in that there is an initial
step that gets the process going, fol-lowed by the repeated
applica-tion of an inductive step. At any point after the beginning of
the parse, a cer-tain prefix of sz-DisplayName has been parsed into a
moniker, and a suffix of the display name remains not understood. This
is illustra-ted in Figure 2.
Figure 2. Intermediate stage in parsing a display name into a moniker.
The inductive step asks the moniker-so-far using
IMoniker::ParseDisplayName to consume as much as it would like of the
remaining suffix and return the corresponding moniker and the new
suffix. The moniker is composed onto the end of the existing
moniker-so-far, and the process repeats.
Implementations of IMoniker::ParseDisplayName vary in exactly where
the knowledge of how to carry out the parsing is kept. Some monikers
by their nature are only used in particular kinds of containers. It is
likely that these monikers themselves have the knowledge of the legal
display name syntax within the objects that they themselves denote,
and so they can carry out the processes completely within
IMoniker-::-Parse-DisplayName. The common case, however, is that the
moniker-so-far is generic in the sense that is not specific to one
kind of container, and thus cannot know the legal syntax for elements
within the con-tain-er. File monikers are an example of these, as are
Item Monikers. These monikers in general employ the following strategy
to carry out parsing. First, the moniker connects to the class of
object that it currently denotes, asking for IParseDisplayName
interface. If that suc-ceeds, then it uses the obtained interface
pointer to attempt to carry out the parse. If the class refuses to
handle the parse, then the moniker binds to the object it denotes,
asking again for IParseDisplayName interface. If this fails, then the
parse is aborted.
The effect is that ultimately an object always gets to be in control
of the syntax of elements contained inside of itself. It’s just that
objects of a certain nature can carry out parsing more efficiently by
having a moniker or their class do the parsing on their behalf.
Notice that since MkParseDisplayNameEx knows nothing of the legal
syntax of display names (with the exception of the initial parsing
step; see below). It is of course beneficial to the user that display
names in different contexts not have gratuitously different syntax.
While there some rare situations which call for special purpose
syntax, it is recommended that, unless there are compelling reasons to
do otherwise, the syntax for display names should be the same as or
similar to the native file system syntax; the aim is to build on user
familiarity. Most important about this are the characters allowed for
the delimiters used to separate the display name of one of the
component monikers from the next. Unless through some special
cir-cum-stances they have very good reason not to, all moniker
imple-mentations should use inter-moniker delimiters from the
character set:
\ / : ! [
Standardization in delimiters promotes usability. But more
importantly, notice that the parsing algorithm has the characteristic
that a given container consumes as much as it can of the string being
parsed before passing the remainder on to the designated object inside
themselves. If the delimiter expected of the next-to-be-generated
mon-iker in fact forms (part of) a valid display name in the
container, then the container’s parse will consume it!
Monikers and objects which have implementations on more than one
platform (such as File Monikers) should always parse according to the
syntax of the platform on which they are currently running. When asked
for their display name, monikers should also show delimiters
appropriate to the platform on which they are currently running, even
if they were originally created on a different platform. In total,
users will always deal with delimiters appropriate for the host
platform.
The initial step of the parsing process is a bit tricky, in that it
needs to somehow determine the initial moniker-so-far.
MkParseDisplayNameEx is omniscient with respect to the syntax with
which the display name of a moniker may legally begin, and it uses
this omniscience to choose the initial moniker.
The initial moniker is determined by trying the following strategies
in order, using the first to succeed.
1. "ProgID:" Case: If a prefix of szDisplayName conforms to the legal
ProgID syntax, is more than 1 character long, and is followed by a
colon (‘:’), the ProgID is converted to a CLSID with CLSIDFromProgID,
an instance of this class is asked for the IParseDisplayName
interface, and IParseDisplayName:ParseDisplayName is called with the
entire szDisplayName.
2. ROT Case: All prefixes of szDisplayName that consist solely of
valid file name characters are consulted as file monikers in the
Running Object Table.
3. File-System Case: The file system is consulted to check if a prefix
of szDisplayName matches an existing file. Said file name may be drive
absolute, drive relative, working-directory relative, or begin with an
explicit network share name. This is a common case.
4. "@ProgID" Case: If the initial character of szDisplayName is ‘@’,
then the maximal string immediately fol-low-ing the ‘@’ which conforms
to the legal ProgID syntax is determined. This is converted to a CLSID
with CLSIDFromProgID. An instance of this class is asked in turn for
IParseDisplayName interface; the IParseDisplayName interface so found
is then given the whole string (starting with the ‘@’) to continue
parsing.
1.7.2. IParseDisplayName Interface
The IParseDisplayName interface is implemented by objects supporting
their own namespace and with custom requirements for parsing it.
1.7.2.1. IParseDisplayName::ParseDisplayName
HRESULT IParseDisplayName::ParseDisplayName(pbc, szDisplayName,
pcchEaten, ppmkOut)
Parse szDisplayName and return a moniker representing it. In general,
the maximal prefix of szDisplayName which is syntactically valid and
which currently represents an existing object should be consumed.
The initial step of MkParseDisplayName(Ex) may retrieve this interface
directly from an instance of the class identified with either
"@ProgID" or "ProgID:" notation, or later parsing steps may request
this object on an intermediary object.
The main loop of MkParseDisplayName(Ex) finds the next piece moniker
piece by calling the IMoniker-equivalent function
(IMoniker::ParseDisplayName) on the moniker-so-far that it holds on
to, passing NULL through pmkToLeft. In the case that the
moniker-so-far is a generic composite, this is forwarded by that
composite onto its last piece, passing the prefix of the composite to
the left of the piece in pmkToLeft.
Some moniker classes will be able to handle this parsing internally to
themselves since they are designed to designate only certain kinds of
objects. Others will need to bind to the object that they designate in
or-der to accomplish the parsing process. As is usual, these objects
should not be released by IMoniker::-Parse-DisplayName but instead
should be transferred to the bind context (via
IBindCtx::RegisterObjectBound or IBindCtx::GetRunningObjectTable
followed by IRunningObjectTable::Register) for release at a later
time.
If a syntax error occurs, then NULL should be returned through ppmkOut
and MK_E_SYNTAX returned. In addition, the number of characters of the
display name that were successfully parsed should be returned through
pcchEaten.
Argument Type Description
pbc IBindCtx* The binding context in which to accumulate
bound objects.
szDisplayName LPWSTR The display name to be parsed.
pcchEaten ULONG* The number of characters of the input name
that this parse consumed.
ppmkOut IMoniker* Location to return a result moniker if
successful.
Returns S_OK Success.
E_INVALIDARG One or more arguments are invalid.
MK_E_SYNTAX Parsing failed because szDisplayName could only be
partially resolved into a moniker. In this case, *pcchEaten holds the
number of characters that were successfully resolved into a moniker
prefix.
We know so much about the bible and how it came to be. This information
is agreed upon by everyone except some of the more extreme
fundamentalists who believe that God wrote the bible in the King James
Version. Look it up!
I can't think that many people who know what they're talking about would
disagree with the following statements:
-Mark was the first gospel written, probably around 65CE, after the
deaths of Peter & Paul.
-Matthew & Luke drew heavily on Mark and the proposed Q (for Quelle)
source.
-John was possibly written later still. Maybe as late as 100CE.
-The Synoptic gospel writers may well have written in Aramaic, which
would logically have been their language and that of Jesus. We know that
Mark also drew on the Septuagint which was a Greek translation of the
OT, and the Septuagint (LXX) would also have been available to
subsequent writers, of course)
So to analyse, for example, how Mark gets into a modern bible, we would
see a language structure something like this:
Mark writes in Aramaic. He quotes from the OT which he gets from a Greek
source, but maybe also Hebrew, etc. Subsequently his writings appear in
Greek and are translated into Latin through many different versions, to
the Douai-Rheims bible in 16th century.
Then the King James appears in the early 17th (?). Modern versions are
drawn form different combinations of a whole myriad of sources,
including King James, Septuagint and other Latin and Greek sources,
Hebrew, Aramaic, and a stack of other languages.
So "a translation of a translation of a translation" is in fact probably
about spot on. When we read Mark quoting Isaiah, this is probably
actually an English translation of an Aramaic writing which quoted from
the Greek translation of a Hebrew source.
Cheers,
Clive.
--
------------------------------------------------------------
"Where is the Life we have lost in living?
Where is the wisdom we have lost in knowledge?
Where is the knowledge we have lost in information?
-- T S Eliot, "Choruses from The Rock"
------------------------------------------------------------
cliv...@world.net is
Clive Conway Creative Pty Ltd, Adelaide, South Australia
At Clive Conway Creative, we write. When we're not
rewriting our e-mail signature in search of a Booker Prize,
we write business policies & procedures, technical
documentation & training material.
As well as words on paper, we also do all that nerdy stuff
like computer based training, process re-engineering,
multimedia, on-line help, elctronic books, web development
& specialist software and hardware sales in all these areas.
Phew! Thanks for reading this far.
------------------------------------------------------------
Take the SCI groups out of the headers.Take the SCI groups out
of the headers.Take the SCI groups out of the headers.Take the
SCI groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the
headers.Take the SCI groups out of the headers.Take the SCI
groups out of the headers.Take the SCI groups out of the headers.
JeffMo
Can you please teach puddin the rudiments of posting to
APPROPRIATE newsgroups?
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
Remove the SCI headers from these posts..
Remove the SCI headers from these posts..Remove the SCI headers
from these posts..Remove the SCI headers from these posts..Remove
the SCI headers from these posts..Remove the SCI headers from
these posts..Remove the SCI headers from these posts..Remove the
SCI headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..Remove the SCI headers from these
posts..Remove the SCI headers from these posts..Remove the SCI
headers from these posts..
>I can't think that many people who know what they're talking about would
>disagree with the following statements:
>
>-Mark was the first gospel written, probably around 65CE, after the
>deaths of Peter & Paul.
>
>-Matthew & Luke drew heavily on Mark and the proposed Q (for Quelle)
>source.
>
>-John was possibly written later still. Maybe as late as 100CE.
>
>-The Synoptic gospel writers may well have written in Aramaic, which
>would logically have been their language and that of Jesus. We know that
From the grammer it seems likely that Matthew originally wrote in Hebrew.
Greek was far more used than Aramaic and it is quite possible that
Luke (written with a(the) Gentile(s) as a target audience) was originally
written in Greek. Mark I am not sure about how the evidence comes out,
but I don't think it can be ruled out that he originally wrote in Greek.
>So to analyse, for example, how Mark gets into a modern bible, we would
>see a language structure something like this:
>Mark writes in Aramaic. He quotes from the OT which he gets from a Greek
>source, but maybe also Hebrew, etc.
>Modern versions are drawn form different combinations of a whole myriad
>of sources,
>including King James,
Kindly defend the statement that modern scholarly Bibles use the King James
as a source.
>Septuagint and other Latin and Greek sources,
>Hebrew, Aramaic, and a stack of other languages.
If we take a worst case scenario: that it was originally written in Aramaic,
we have parts of the book that are A-G-modern language and all of the book
that is available via A-G-L-modern. And we probably have a number of
overlapping sections of more than one Greek and/or Latin translation
where the various translations can be compared.
Today there are probably at least 4 good English translations available.
>So "a translation of a translation of a translation" is in fact probably
>about spot on.
But the implication that certain anti-Christians would make is not. If
we are interested in a single word one might argue that there is a problem
in determining what is meant. But for most of the book and the book as
a whole (and the Bible as a whole) the translation issue is not nearly as
significant as it is sometimes made out to be. If you take a single
English translation then yes it can be a problem, but as a whole
I don't think so.
>Cheers,
>
>Clive.
Real Men change diapers
You are correct, as an engineer *I* would never round Pi to 3.0 (or even
3 for that matter). But it doesn't matter what *I* think or what *you*
think. What matters is what the author thought. Unfortunately it would
be rather difficult to get an answer out of him right now...
--
Jim Batka Email: jim....@sdrc.com
It's good to keep an open mind,
Just not so open that your brains fall out.
-Unknown Usenet Poster
+>-The Synoptic gospel writers may well have written in Aramaic, which
+>would logically have been their language and that of Jesus. We know that
+
+From the grammer it seems likely that Matthew originally wrote in Hebrew.
Neither statement is plausible. Matthew's grammar is quite decent koine
Greek, in fact (and he has a commendable grasp of classical Greek rhetoric,
well shown in set pieces like the Sermon on the Mount.) There are various
idioms and phrases that are called "Semitisms" and may reflect Aramaic or
Hebrew origins; but these can arise as easily from imitation of the LXX
[just as moderns tend to use obsolete or even incorrect 16th century
English in attempts to sound "religious"]. Note that a good many of these
instances are in the nativity material in Luke, whom no one considers to
have bad Greek grammar.
+>Mark writes in Aramaic. He quotes from the OT which he gets from a Greek
+>source, but maybe also Hebrew, etc.
No. Mark writes in Greek. So do the others, including all reconstructible
source documents. Speculatively, one may guess at the existence of one
or more Aramaic (not Hebrew, which is wildly unlikely) sources "behind"
the existing Greek -- but there is no evidence to this effect in the
sources. Rather, Mark's bad Greek is like some of the bad English on
the Net: just a sign of incomplete fluency in the language he *was*
writing in.
+>Modern versions are drawn form different combinations of a whole myriad
+>of sources,
+
+>including King James,
Nope; except for some idiotic cultists who have no grasp of issues
and seem to be of the opinion that Jesus originally spoke English in
the same idiom as Tyndale.
>(snippage)
>George Cooper driveled unto alt.atheism (as well as other ngs that he doesn't belong in):
>>
>> I am going to do to you what evolutionists do to creationists. Please
>> document that the Bible is "a translation of a translation of
>> a translation." I don't believe your statement. Proof REQUIRED.
>> Without such proof we can conclude that you join with the other
>> evolutionist "liars." I understand that the New Testament was originally
>> written in Greek. English translations are FROM THE ORIGINAL GREEK. You
>> speak of three translations, even leaving open the possibility of an
>> infinite regress. Very misleading, don't you think?
>>
>> GC
>The bible was also written in Latin, there's three. Also, you forgot that
>the English language evolves very quickly, and what was English when it first
>started looks like a foreign language to anyone who speaks modern english. (try to
>read 'Beowulf' in it's original English form).
> Go in peace little grasshopper,
> KungFu
No part of the Bible was written in Latin. Most of the Old Testament
was written in Hebrew and part of it in Aramaic. The entire New
Testament was written in Greek.
> No part of the Bible was written in Latin. Most of the Old Testament
> was written in Hebrew and part of it in Aramaic. The entire New
> Testament was written in Greek.
Whoa, Time out!
Most of the Old Testament was in Hebrew The OT was translated into other
languages, such as Greek and Latin, But the Hebrew originals remain.
There do exist some variances in the text. Also some content existed in
other cultures before the parts of the OT that contains them was written.
That content was translated from the languages of its source cultures.
As for the New Testament, the oldest copies are in Greek. It has been
tranlated into virtually every existing language, including Esperanto. I
understand a project is under way to translate it into Klingon. Still, the
translations are from the Greek copies. The NT probably wasn't *written*
in any other language before Greek. Greek was commonly spoken in that
place and time. But many early Christians spoke and thought in Aramaic,
and some linguists suggest they were thinking in aramaic and translating
as they wrote, much as we all do, if we have to write in a foreighn
language.
My personal knowledge is not great enough to argue.
>+>Mark writes in Aramaic. He quotes from the OT which he gets from a Greek
>+>source, but maybe also Hebrew, etc.
>
>Rather, Mark's bad Greek is like some of the bad English on
>the Net: just a sign of incomplete fluency in the language he *was*
>writing in.
It has been suggested that (in another parallel with the 'net) he wrote
it in a great deal of a hurry.
In either case one has to ask why he didn't find a Christian with a
good command of Greek to help him.
>some idiotic cultists
I would argue that some are merely ignorant. (and I would differ on the
overly general use of the word "cultists"... OTOH for _many_ of those making
such a claim...)
>who have no grasp of issues seem to be of the opinion that Jesus
>originally spoke English in the same idiom as Tyndale.
>--
>Michael L. Siemon m...@panix.com
Robert
>Remove the SCI headers from these posts..
[snip--238 more lines of that]
There aren't any SCI headers in these posts, idiot.
Mike Turk
--
Shooting out a control panel on a Trek series can have multiple uses. Among them, it can: open a closed door, close an opened door, keep a closed door from opening, keep an opened door from closing, activate a force-field, deactivate a force-field, render local sensors inoperable, render local sensors more able to detect the disturbance, set the warp core into a breach, set the warp core into controlled shutdown, and disable a hologram. It all depends on what the writers need.
<meta http-equiv="GeekCode" version="2.1">
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|d? H s:++ g? p7+ !au a17 w+++ v- C++++ UL+ P+ L+ 3 E--- N+++ K (W+ and W---) |
|(M and M--) V-- po--- Y+ t+++ 5+ j++ R G'' tv+++ b++ D--- B--- e* (u--- and u*)|
|h! f+ !r n---- y** |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
</meta>
[snip]
>See how silly things get when you expect passages written in a poetic form
>thousands of years ago to be accurate to more than two significant digits?
>Remember, Round(Pi) = 3
Actually, Round() in any language takes a real number. Pi is not a
real number. If the computer were *actually* working with pi,
round(pi) would give an 'invalid argument' error.
>Heathen (Charles W. Johnson)
>--
>Heathen on IRC ---- Undernet #atheism channel operator
>--
>These opinions are mine. They may not be those of my employer or my internet
>provider. They are almost certainly not those of the Christian Coalition.
>--
>Per the FCA, this email address may not be added to any commercial mail list.
>Violators will have complaints sent to their postmasters. DIE, you
>scum-sucking braindead scourges of society!
>--
>More from the man that brought us trickle-down economics and the Gulf "War":
> The following exchange took place at the Chicago airport between
> Robert I. Sherman of American Atheist Press and George Bush, on August
> 27 1988. Sherman is a fully accredited reporter, and was present by
> invitation as a member of the press corps. The Republican presidential
> nominee was there to announce federal disaster relief for Illinois.
> The discussion turned to the presidential primary:
>
> RS: "What will you do to win the votes of Americans who are
> atheists?"
>
> GB: "I guess I'm pretty weak in the atheist community. Faith in God
> is important to me."
>
> RS: "Surely you recognize the equal citizenship and patriotism of
> Americans who are atheists?"
>
> GB: "No, I don't know that atheists should be considered as
> citizens, nor should they be considered patriots. This is one
> nation under God."
>
> RS: "Do you support as a sound constitutional principle the
> separation of state and church?"
>
> GB: "Yes, I support the separation of church and state. I'm just
> not very high on atheists."
I always knew that GB was stupid. Even before I saw this. But he isn't
as bad as Pat Buchanan. Pat Buchanan just *exudes* evil. See a parody
of his campaign at http://www.buchanan96.org/
They do? In which museum are they kept?
--
-- Herb Huston
-- hus...@access.digex.net
-- http://www.access.digex.net/~huston
Isreal reportedly gas some old copies. Plus the orthodox jews have
been using the same version since god gave it to them. Any jewish book
store should have a good copy, they have only two or three arguments
as far as the spelling of some words.
>Actually, Round() in any language takes a real number. Pi is not a
>real number. If the computer were *actually* working with pi,
>round(pi) would give an 'invalid argument' error.
When did Pi stop being a real number. I think that you are
either confusing the reals and the rationals or else you are
confusing the implementation of real numbers in most computer
systems (but not all) with the definition of real numbers.
In most computer software, the *real* data type is a
representation of a certain subset of the rational numbers. The
idea, I believe, is that real numbers within a certain range can
be represented accurately to a certain specified level of
precision. Some computer software, however, keeps track of
transcendental numbers (such as pi) exactly, by doing
manipulations algebraically rather than arithmetically. If my
memory serves from when I was doing such things, one popular such
program was called REDUCE.
But this software is less commonly used as most people are
interested in numerical answers rather than in reducing
equations.
Shack
:/On the date of Sun, 1 Sep 1996 09:18:53 GMT, cw...@eskimo.com (Charles
:W. Johnson) did inscribe into the group alt.atheism and unto the ether
:thereof:\
:
:[snip]
:
:>See how silly things get when you expect passages written in a poetic form
:>thousands of years ago to be accurate to more than two significant digits?
:>Remember, Round(Pi) = 3
:
:Actually, Round() in any language takes a real number. Pi is not a
:real number. If the computer were *actually* working with pi,
:round(pi) would give an 'invalid argument' error.
Pi is a real number.
HTH
Aaron
--
Aaron Bergman -- aber...@minerva.cis.yale.edu
<http://pantheon.yale.edu/~abergman/>
Smoke a cigarette. Slit your throat. Same concept.
1) it is an irrational number. i.e. To state it accurately in in any
number base is impossible (unless the number base is Pi, but that
gives problems expressing other numbers exactly). The value of Pi can
be evaluted as the sum of series. The problem is that the series is
infinite. It does tend to a value (limit). This limit is never exact.
I believe the problem is caused by the fact that there are numbers
that are impossible to express as fractions using integers (even if
infinity is involved) - no, i don't fully understand it - i just take
it as a given.
The confusion over 'REAL' number types in computer usage is common.
'REAL' number types, also called 'float' in 'C', are an approximation.
They are represented as a fixed number of digits and and power of a
number base.
Any functions used on 'REAL's or Floating Point Numbers will always
return an approximation.
This problem with floating point numbers used in computers causes a
lot of confusion due to this lack of appreciation when programming
with them. This is outside the scope of this reply.
Graham - trying to be helpful.
PS: I do understand the limitations of floating point numbers. It is
described in many text books. Yes, I am a computer programmer.
No, i am not a mathematician.
aber...@minerva.cis.yale.edu (Aaron Bergman) wrote:
Opinions expressed are mine, they are free, and worth exactly what they cost.