"Light Makes Right"
November 4, 1988
Volume 1, Number 11
Compiled by
All contents are copyright (c) 1988, all rights reserved by the individual authors
Archive locations: anonymous FTP at
ftp://ftp-graphics.stanford.edu/pub/Graphics/RTNews/,
wuarchive.wustl.edu:/graphics/graphics/RTNews, and many others.
You may also want to check out the Ray Tracing News issue guide and the ray tracing FAQ.
back to contents
# Kelvin Thompson - hierarchy schemes, procedural objects, animation
# The University of Texas at Austin
# 4412 Ave A. #208
# Austin, TX 78751-3622
alias kelvin_thompson<EMAIL_ADDRESS>I'm a PhD student in graphics at the University of Texas. I received a BSEE from Rice University in 1983, and a Master's in EE from UT in 1984. My doctoral project is on hierarchical, multi-scale databases for computer graphics, and I'm building a ray-tracer as part of my work on that project. I'm also interested in motion and animation. I never plan on becoming President of the United States of America.
-- Kelvin Thompson, Lone Rider of the Apocalypse<EMAIL_ADDRESS>{...,uunet}!cs.utexas.edu!kelvin
# A. T. Campbell, III - shading models, animation
# Department of Computer Sciences
# University of Texas
# Austin, Texas 78712
#<PHONE_NUMBER>
alias at_campbell<EMAIL_ADDRESS>I am in the PhD program in Computer Sciences at the University of Texas. My research area is developing a more sophisticated illumination model than those currently in widespread use. A modified form of distributed ray tracing is one of the methods I am considering to evaluate my model.
Animation is another of my interests. I am putting myself through school by producing computer graphics animations for a small engineering company. Sometimes I am called upon to create special effects such as motion blur and atmospheric effects. Based on what I heard at this year's ray tracing round table at SIGGRAPH, it looks as if ray tracing can solve most of my problems.
# Tim O'Connor
# Staff, Cornell Program of Computer Graphics
# 120 Rand Hall
# Ithaca, NY 14853
alias tim_oconnor<EMAIL_ADDRESS>back to contents
A while back, there was a posting concerning ray/triangle intersection. The goal was to determine if a ray intersects a triangle, and if so, what are the barycentric coordinates. For the uninitiated, barycentric coordinates are three values (r,s,t) all in the range zero to one. Also, the sum of the values is one. These values can be used as interpolation parameters for data which is known at the triangle vertices (i.e. normals, colors, uv).
The algorithm presented previously involved a matrix inversion. The math went something like this: Since (r,s,t) are interpolation values, then the intersection point (P) must be a combination of the triangle vertices scaled by (r,s,t).
[ x1 y1 z1 ] [ r ] [ Px ] [ r ] [ Px ] [ x2 y2 z2 ] [ s ] = [ Py ] [ s ] = [ Py ] ~V [ x3 y3 z3 ] [ t ] [ Pz ] [ t ] [ Pz ]
So, by inverting the vertex matrix (V -> ~V), and given any point in the plane of the triangle, we can determine (r,s,t). If they are in the range zero to one, the point is in the triangle.
The only problem with this method is numerical instability. If one vertex is the origin, the matrix won't invert. If the triangle lies in a coordinate plane, the matrix won't invert. In fact, for any triangle which lies in a plane through the origin, the matrix won't invert. (The vertex vectors don't span R3.) The reason this method is so unstable is because it tries to solve a 2D problem in 3D. Once the ray/plane intersection point is known, the barycentric coordinates solution is a 2D issue.
Another way to think of barycentric coordinates is by the relative areas of the subtriangles defined by the intersection point and the triangle vertices.
1 If the area of triangle 123 is A, then the area of /|\ P23 is rA. Area 12P is sA and area 1P3 is tA. / | \ With this image, it is obvious that r+s+t must equal / | \ one. If r, s, or t go outside the range zero to one, / t | s \ P will be outside the triangle. / _-P-_ \ / _- -_ \ /_- r -_\ 2---------------3
By using the above are relationships, the following equations define r, s and t.
N = triangle normal = (vec(1 2) cross vec(1 3)) (vec(1 P) cross vec(1 3)) dot N s = ------------------------------- (length N)^2 (vec(1 2) cross vec(1 P)) dot N t = ------------------------------- (length N)^2 r = 1 - (s + t)
In actual code, it is better to avoid the divide and the square root. So, you can set s equal to the numerator, and then test if s is less than zero or greater than sqr(length N). For added efficiency, preprocess the data and store sqr( length N) in the triangle data structure. Even for extremely long thin triangles, this method is accurate and numerically stable.
RGB Living life in the fast lane, eight items or less. ({ihnp4,decvax}!utah-cs!bogart<EMAIL_ADDRESS>________
From<EMAIL_ADDRESS>(Jeff Arenberg)
Subject: Re: Ray/Triangle Intersection with Barycentric Coordinates
[from USENET]
Ok, here is how I handle this calculation in my ray tracing program. I think it is quite efficient.
Let a triangle be represented in the following manner :
|\ | \ p1 | \ | \ O ------------> |________\ p0 p2
where p0 is the vector from the origin to one vertex and p1, p2 are the vectors from the first vertex to the other two vertices.
Let N = p1 X p2 be the normal to the triangle. ------- | p1 X p2 |
Construct the matrices
b = | p1 | , bb = inv(b) = | bb[0] | | p2 | | bb[1] | | N | | bb[2] |
and store away bb.
Let the intersecting ray be parameterizes as
r = t * D + P
Now you can quickly intersect the ray with the triangle using the following pseudo code. ( . means vector dot product)
Den = D . bb[2] if (Den == 0) then ray parallel to triangle plane, so return
Num = (p0 - P) . bb[2]
t = Num / Den if (t <= 0) then on or behind triangle, so return
p = t * D + P - p0
a = p . bb[0] b = p . bb[1]
if (a < 0.0 || b < 0.0 || a + b > 1.0) then not in triangle and return
b1 = 1 - a - b /* barycentric coordinates */ b2 = a b3 = b
The idea here is that the matrix bb transforms to a coordinate frame where the sides of the triangle form the X,Y axes and the normal the Z axis of the frame and the sides have been scaled to unit length. The variable Den represents the dZ component of the ray in this frame. If dZ is zero, then the ray must be parallel to the X,Y plane. Num is the Z location of the ray origin in the new frame and t is simply the parameter in both frames required to intersect the ray with the triangle's plane. Once t is known, the intersection point is found in the original frame, saved for latter use, and the X,Y coordinates of this point are found in the triangle's frame. A simple comparison is then made to determine if the point is inside the triangle. The barycenter coordinates are also easily found.
I haven't seen this algorithm in any of the literature, but then I haven't really looked either. If anyone knows if this approach has been published before, I'd really like to know about it.
Jeff Arenberg -------------------------------- UUCP : ( ucbvax, ihnp4, uscvax ) !trwrb!csed-pyramid!arenberg GEnie: shifty --------------------------------
back to contents
Was skimming the back issues of the RT News and your memo on transforming normals caught my eye. Another way of looking at the problem is to recall that a polygonal volume is made up of planes that divide space into two parts. The columns of the volume matrix are formed from the coefficients of the plane equations. Transforming a volume matrix requires that you premultiply by the inverse of the manipulation matrix. The components of a normal are the first three coefficients of the plane equation. Hence the same idea should apply. (see PECG Sec. 4-3 on Robert's algorithm pp 211-213). Surprising what you can learn from Roberts' algorithm yet most people discount it.
Dave Rogers
back to contents
An answer to the question of Jack Ritter, RT-News October 3, 1988, by Jack van Wijk
Jack Ritter proposes a method to improve the efficiency by testing the ray-point against a 2-D box. This method has been published before:
Bronsvoort, W.F., J.J. van Wijk, and F.W. Jansen, "Two methods for Improving the Efficiency of Ray Casting in Solid Modelling", Computer-Aided Design, 16(1), January 1984, pp. 51-55.
The method is used hierarchically here for CSG-defined models, in the spirit of Roth. The gain of the method is significant, but not dramatically. Probably in our system the cost of the floating point intersection calculations was much bigger than the box-test.
back to contents
I hate to say it, but I use my own (less, I feel, but still ugly) text format that does have a binary format as well as an ascii numerical format. You are welcome to it if you want, but I would doubt it. It's different in that algebraic expressions are possible in place of any constant, plus it includes flow control, tests, some computer algebra-type primitives and macros. Plus, a historyer, command line editing, etc. It looks a lot like an interactive F77 interpreter with massive numbers of bizarre graphics commands.
Perhaps you can instigate an effort to create a sensible object description language and (maybe) supply an interpreter and some compiled formats. It would be worthwhile. Perhaps just setting up an effort to spec one out would be good enough. Whatever.
________
Reply From: Eric Haines
I guess I didn't make it clear - NFF has been in use about a year now. It's the format that the SPD benchmarking package uses. I should have written a better preface, obviously: I wanted to get the point across that this is supposed to be absolutely minimal, and that no one should be using it for modeling, but only for transferring the final database to a renderer. There could indeed be an NFF++ language which would not be user hostile, like NFF is.  This makes it accessible to almost anyone who simply wants to read in a scene database without too much hassle (even now, though, I'm getting questions like "what's hither?" from people on USENET).
Anyway, I like your ideas for algebraic expressions - I could use it right now in my other language, which is a tad more user friendly and is what I use when I want to munge around by hand.
________
Reply From: Jeff Goldsmith
Hmmm. If you are trying to find an interface that can be used by professionals, then it is probably not the same interface that might be used by USENET-types. Both problems might be worth addressing, but I'd say (from gross personal bias) that the high-end problem is worth doing more. Simply so that I can trade databases more easily. Simply so that code can be shared more easily. I'm really not all that concerned about getting computer graphics capabilities out to high schoolers and other randoms quite yet. In fact, I doubt that graphics will have that sort of distribution in its current "modeler-renderer" form. I suspect that Mac interface and high-quality user-interfaces will be the medium for that type of technology dissemination. Eventually, we'll have programs that are called "Graphics Processors" or some other nonsense and will be transmitting reasonably complex graphics capabilities to anyone who wants to do it. Artists will be the primary users, though managers and engineers will use them in both technical and non- technical efforts. Joe six-pack just doesn't have that much use/interest/capacity for generating pictures out of thin air.
It would be really nice if there were a standardish graphics language kernel. Since just about everybody has their own interpreter that does just about the same set of very basic things, plus, of course, their set of enhancements, why not create a spec that would still allow all the enhancements, but cover the basics thoroughly. It might stifle creativity a bit, but I doubt it.
For transmission between modelers and renders, why not use the same language as input to modelers? Remove some options (or don't) and keep the files the same. If you are worried about speed, then a binary complied version is necessary in any event. (Case in point: my current project is Hubble Space Telescope. The uncompiled model takes 17! minutes to read in. The compiled one takes about 35 seconds.) It might also be worth considering that some people out there do use Fortran and that some things are hard to parse (NFF, for example) in Fortran. In fact, it's hard to parse anything that isn't fixed field formatted in Fortran. (I've got an ugly version like that, too. Really ugly. .7 Fixmans maybe even.)
back to contents
> On the RT news: I would like to see practical applications of ray tracing
> described here. What applications really require mirror reflections,
> refraction etc. Haven't seen applications where ray tracing was the way
> to go.
Applications for ray tracing (besides "realistic" image synthesis):
MCAD (3D solids modeling)
Material property calculations (mass, center of gravity, moments of inertia, etc.)
Lens design (geometric optics)
Toolpath planning for numerical-controlled milling
Weapons research (ballistics analysis)
Vulnerability assessments (collision detection between a projectile and an object)
Nuclear reactors (determination of neutron distributions in reactor cores)
Astrophysics (eg., diffusion of light through stellar atmospheres; penetration of light through planetary atmospheres)
IN SUMMARY: Just about anything that requires solving a linear (and non-linear w/restrictions) particle transport problem is a candidate application for ray-tracing/ray-casting algorithms.
Cary Scofield - Apollo Computer Inc. - Graphics Software R&D UUCP: [decwrl!decvax,mit-eddie,attunix]!apollo!scofield ARPA<EMAIL_ADDRESS>USMAIL: 270 Billerica Rd., Chelmsford, MA 01824 PHONE:<PHONE_NUMBER> x7744
back to contents
Somewhere in the RT news you mentioned that the hierarchy is optimized only for primary rays from the eye?
In their paper, they mention that the probability of hitting a bounding volume is proportional to the solid angle of the bounding volume presented at the eye and if the eye is sufficiently far away, then this can be approximated by the surface area of the bounding volume of the object(s).
Is this the reason that the hierarchy is not the best for secondary rays? If that is so, what if the eye is somewhere within the scene? In this case, the assumption is again violated.
K.R.Subramanian Department of Computer Sciences The University of Texas at Austin Austin, Tx-78712<EMAIL_ADDRESS>{uunet}!cs.utexas.edu!subramn
________
Reply From: Eric Haines
Jeff Goldsmith and I were discussing in the latest RT News whether the eye location might be used to help out the hierarchy made by the Goldsmith/ Salmon algorithm. Essentially, Jeff finds that since so many of his rays are eye rays, he might want to try to test intersection of the objects closer to the eye first. In other words, after the G-S hierarchy is created, go through and sort the sons of each bounding volume by the additional criterion of distance to the eye. This is an added fillip to the G-S algorithm: normally (i.e. in the original article) they do not pay attention to the order of the sons of a bounding volume. The idea is that if you test the closer object first and hit it, you can often quickly reject the further object when it is tested (since you now have a maximum bound on the distance the ray is shot). For example, say you have a list: polygon, sphere. The closest approach (or the center, or whatever criterion you decide to use) of the sphere is closer than that of the polygon, so you reorder the son list: sphere, polygon. If you now test a ray against this list you get four possibilities:
1) Sphere missed, polygon missed - no savings is accrued by sorting. 2) Sphere missed, polygon hit - no savings is accrued by sorting. 3) Sphere hit, polygon missed - by hitting the sphere, we now have a maximum bound on the ray's (really the line segment's) length. Now when the polygon is tested it might be quickly rejected. Say we hit the polygon plane beyond the maximum distance. In this case, we can stop testing the polygon without doing the inside- outside testing. If we had intersected in the order "polygon, sphere", we would have had to do this inside-outside test, then gone on to test the sphere - extra work we could have avoided. 4) Sphere hit, polygon hit - Pretty much the same as case (3), except even more so: in this case time is saved by (a) not having to to do the inside-outside test, (b) not having to store information about the intersected polygon, and (c) it is all the more likely that a polygon beyond the sphere which is actually hit has the intersection distance beyond the sphere's intersection distance (vs. a missed polygon, where the intersection distance is somewhere on an infinite plane which could easily be in front of the sphere).
My idea for ordering the son lists was simply object size: within a son list, sort from largest to smallest area, on the theory that larger objects will tend to get hit more often and so get you an intersection point quickly. The savings are based more on probability of hits, but the idea makes for G-S hierarchy trees that are not eye-dependent (I use item buffering, so eye rays are minimized). Another idea is to order the lists by difficulty of calculation: test spheres before splines, test triangles before 100-sided polygons, etc.
The idea of ordering lists by either size or difficulty is valid for other efficiency schemes, too. Octree lists and SEADS might benefit from ordering the lists in a sensible fashion. Has anyone else out there tried such schemes?
________
Reply From<EMAIL_ADDRESS>(K.R.Subramanian.)
Yes, I understood these discussions and they are all valid. Somehow just trying to optimize the eye rays doesn't impress me very much because you yourself have mentioned the item buffer for eye rays and the light buffer for doing shadow rays from the first level intersections. It is not very clear to me if the above schemes you mention will bear a great improvement. Anyhow, I am really interested in secondary rays since that's what ray tracing is all about. In very complex scenes like the Cornell rings or Cornell mountain databases (SPD data bases) its the secondary rays that are dominant.
My real question was trying to figure out if Jeff's approximation in using the surface area of the bounding volumes to figure out the conditional probabilities was valid for all rays, primary and secondary. There he said something like 'if you are far away, you can approximate ........'. Does this refer to the ray length ?
K.R.Subramanian Department of Computer Sciences The University of Texas at Austin Austin, Tx-78712<EMAIL_ADDRESS>{uunet}!cs.utexas.edu!subramn
________
Reply From: Eric Haines
Indeed, Jeff's optimization for eye rays doesn't thrill me. But how do you feel about optimizing on size or on intersection complexity (or both)? Seems like this has a good chance of validity for secondary rays, too.
I will pass on your comments to Jeff and see how he responds. You might just want to write him directly at:
alias jeff_goldsmith<EMAIL_ADDRESS>I should clear up an important point: the SPD databases are in no way connected with Cornell. I designed them in August 1987, more than a year and a half after leaving Cornell. I hope that nowhere in the document I imply that Cornell is associated with these. Why the fuss? Partly because Don Greenberg, my president (at 3D/Eye Inc) is very firm about separating work done at 3D/Eye and work done at the Cornell graphics lab (which he also runs). Another reason is that Cornell doesn't "endorse" these databases - Don would be pretty bugged at me if it was said that they did. So, please just refer to the SPD databases, or the 3D/Eye SPD databases. 'Nuff said, and thanks.
________
Reply From: KR Subramanian
> Indeed, Jeff's optimization for eye rays doesn't thrill me. But
> how do you feel about optimizing on size or on intersection complexity
> (or both)? Seems like this has a good chance of validity for
> secondary rays, too.
You are right. Using size or intersection cost in ordering your intersections will do good, especially in shadow ray computation. As far as the pixel or reflection rays are concerned, this depends on the method used. I have a modified version of the BSP tree where the search goes very close to the path of the ray and only on collection of unordered objects can we take advantage of the above 2 facts.
Also, this is basically a hack (well, I wouldn't go quite that far). But size as presented to a ray depends on the direction of the ray, since projected area on to a ray varies. A polygon could present its entire area to a ray orthogonal to it or almost nothing if its parallel to it.
For shadow rays, if you have a mix of complex objects (patches, splines etc) and simple objects like polygons, spheres you better do this in the order of their complexity. That will definitely save a lot of work especially when there are multiple light sources and lots of spawned rays.
________
Reply From: Jeff Goldsmith
Ok. Optimizations.
1) The only reason that I suggest ordering from the eye is that there are eye rays in all scenes. Not true for secondary. Besides, most secondary rays get other kludges. More importantly, they are somewhat random, so it's tough to optimize for them.
2) What he is confusing with the above is the heuristic for "probability" determination. That is not based on eye rays, but assumes a uniform distribution of ray directions throughout the scene. This is not the case, but we haven't dealt with more complicated heuristics other than to decide that they are a bit more tricky than they might seem.
3) There is a factor in the tree combination heuristic (the one that adds up the node costs into a tree cost) that is biased for primary rays. I call the tree cost the sum of the node costs. This isn't strictly true for secondary rays, because they emanate from a leaf node, thereby adding some additional cost to the big nodes. We tried accounting for this by using a formulation that takes internal emanation costs into account. Yes, it was more accurate. Not by enough to bother with. I think the difference was on the order of a few percent. It was definitely well under the noise level. We don't use it anymore for no particular reason. Don't bother to code it, except as an intellectual exercise. (Not a bad one at that.)
back to contents
RGB
back to contents
I am currently working on a simple raytracer (VERY simple--so far it only models triangles) and have a major problem. For shadow calculations I need to know if there are any light sources which could shine on a point. The problem? With mirrors in the scene, it's possible to have reflected light illuminate some section that would normally be in shadow, e. g.:
Light-> O | O' \------ | ------/ \------ | ------/ \------ | ------/ \------ | M ------/ +-----+ \-\| i | | /-/| r |object /------ | r | | /------ | o | | SSSS | r ----------------------------------------|
Then the area covered by the S's would not be in shadow, even though it isn't directly illuminated by the light O. I know how to solve the problem using "virtual" lights; that is, a light that you would obtain if you reflected the Light at O in the mirror above; it would appear at O'. Multiple reflections can be handled by re-reflecting virtual lights, etc. So what's my problem? Simple: if you have M mirrors and reflections can go up to depth K, you need O(M^K) virtual lights for each "real" light. Is there any way I might be able to eliminate, for a given point, some combinations of reflections without having to do much testing?
Steven Stadnicki<EMAIL_ADDRESS>P.S. The "virtual lights" idea came from a wonderful book: "A Companion to Concrete Analysis", by Melzak.
back to contents
If anyone is looking for the analysis of a regular subdivision ray tracing method, see:
journal: Visual Computer July 1988 title: Analysis of an Algorithm for Fast Ray Tracing Using Uniform Space Subdivision authors: Cleary, J and Wyvill, G
What the paper does is to describe the voxel traversal algorithm that Cleary developed and that I use in my ray tracer, and then a theoretical analysis is presented. It is a convincing argument for using regular voxel subdivision (although my method - submitted to CGI '89 in UK - works better for scenes where polygons are not evenly distributed throughout a scene).
Visual Computer is published by Springer Verlag. Unfortunately it doesn't enjoy the circulation of CG&A or TOG so it is pretty (outrageously?) expensive (like $160 US for 6 issues!).
The design of our Mesh Machine is in: journal: Proc CIPS Graphics Interface '83, 33-34, Edmonton, Alberta, May title: Design and Analysis of a Parallel Ray Tracing Computer authors: John Cleary and Brian Wyvill and Graham Birtwistle and Reddy Vatti
--------(second article appended)
In article (4589@polyslo.CalPoly.EDU<EMAIL_ADDRESS>(Mr Booga (detonate)) writes:
> I have a request similar to Randy Ray's (Raytracing introduction). I am
> starting a project in parallel raytracing using a Sequent Balance 8000 and
> a couple of color Sun 3's running X. I have virtually exhausted the
> local resources on raytracing and am in need of basic ray tracing algorithms
> and simple optimization algorithms.
Our university (the U. of Calgary) has significant experience in parallel ray tracing. Professors Cleary and Wyvill developed a mesh machine for raytracing several years ago. Graduate student (now working at Alias) Andrew Pearce implemented a parallel raytracer for the mesh machine that also ran on a network of Corvus'.
I implemented a parallel ray tracing algorithm for polygons and implicit surfaces earlier in the year on a BBN Butterfly. I used regular spatial subdivision combined with adaptive (octree) subdivision to converge on the surfaces. Up to 10 nodes I got almost linear speedup, and on a 70 node system I was still getting 50% from each new node added.
If anyone else is interested in references on parallel raytracing (the mesh machine articles, Pearces Masters thesis, or others such as Dippe in Siggraph 86 etc) you can send me mail and I can send a list or copies of some of t
"behind these eyes that say I still exist..."
David Jevans, U of Calgary Computer Science, Calgary AB T2N 1N4 Canada uucp: ...{ubc-cs,utai,alberta}!calgary!jevans
________
From<EMAIL_ADDRESS>(Subrata Dasgupta) Subject: Re: Basics of raytracing [from USENET]
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(David Jevans) writes:
>
>Our university (the U. of Calgary) has significant experience in parallel
>ray tracing. Professors Cleary and Wyvill developed a mesh machine for
>raytracing several years ago. Graduate student (now working at Alias)
>Andrew Pearce implemented a parallel raytracer for the mesh machine
>that also ran on a network of Corvus'.
This all sounds very interesting! A few articles back a person inquired about a paper on an algorithm analysis by Profs. Wyvill and Cleary. I am trying to track that paper down but the reason for sending you this letter is to request some info. on the mesh machine for ray- tracing developed at your univ. If you can refer me to a recent paper on this machine it will be great. At Duke we are developing what has come to be known as the Raycasting machine which computes intersection of an array of parallel rays with primitives and then uses constructive solid geometry to compute the shape, volume and other parameters of an arbitrary object. Thus I would be very much interested in any work in this area.
>If anyone else is interested in references on parallel raytracing
>(the mesh machine articles, Pearces Masters thesis, or others
>such as Dippe in Siggraph 86 etc) you can send me mail and I can send
>a list or copies of some of t
Any other info. in this area would be very much appreciated. Thanks!
Subrata Dasgupta
Department of Computer Science, Duke University, Durham, NC 27706 ARPA<EMAIL_ADDRESS>CSNET: sdg@duke UUCP: decvax!duke!sdg
back to contents
Organization: Pixar -- Marin County, California [from USENET]
I'm writing the RenderMan book, so I guess I'm qualified to clear up a couple of things from this posting:
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Keith Fish) writes:
>
>I'm sure PIXAR is more than willing to send you a spec of Renderman ...
>just ask them. Also, there may be something available through the
>Siggraph 88 proceedings.
There's nothing in the SIGGRAPH 88 proceedings about RenderMan. You can get a copy of the spec by sending $15 (yes, I know it's a pain, but we've sent out ~1000 specs so far, and it got kind of expensive; this is the real cost) to Pixar 3240 Kerner Blvd. San Rafael, Ca. 94901
>
>((( The following is MY understanding of Renderman )))
>
>Renderman is an attempt by PIXAR to force a de facto standard interface in the
>Graphics Rendering/Imaging arena. My understanding is that this interface
>is based on tools/routines that they have developed throughout the years for
>use on their hardware. Because it was not designed for general/varying
>graphics architectures, many companies wonder if it will only work well on
>their systems -- hence, making their hardware also the de facto standard.
RenderMan is based on about six years' research at Pixar and Lucasfilm on how to get quasi-photographic realism into computer graphics. The effort has encompassed algorithms, software and hardware, and much of what is in the standard has been proven to work by actually implementing it; so in some sense the above is a correct statement. However, there is an implication here that RenderMan is some in-house methodology that Pixar is trying to foist off on the rest of the industry. That is definitely untrue. Pat Hanrahan and Tom Porter spent about six months talking to other companies in the industry, trying to establish a consensus and ensure that the standard is technically sound. The best evidence I have of how much it changed as a result is the amount of work I had to put into changing my book between Versions 2 and 3 of the spec.
As for the standard being specific to some particular hardware or software configuration, you just have to look at the standard itself. From the geometric standpoint, it is a simple protocol for describing scenes, as generic as can be, and deliberately so. It is essentially a superset of PHIGS+, with two differences: there is no provision for changing model descriptions once defined (you have to respecify scenes from one frame to another), and there are extensions for realism like the shading language, motion blur and depth-of-field. The hardware- specificity is a canard, pure and simple. The current (incomplete) version of our software runs on Sun, Silicon Graphics and '386-based Compaq machines, as well as on Transputer-based hardware accelerators in all three.
More specifically, I can tell you that Pat went to a lot of trouble to make the interface standard independent of even the basic rendering algorithm. That is, RenderMan is consistent with scanline-based methods as well as ray tracing; standard shading models as well as radiosity techniques. That wasn't easy.
>More importantly, PIXAR already has the software written for this "standard"
>so if this becomes a standard, any competitor of PIXAR would have to make the
>$$$ investment to write this software -- a good way to limit your competition.
Sorry. I'm working closely with the software group in trying to generate pictures and example programs for my book, and I can testify that the software, while quite far along, is not "already written", largely because of extensions to the standard that came out of discussions with other companies. True enough, we probably have a head start on others, but the standard has been out there for five months now, and will probably have been around for close to a year before Pixar has its stuff on the market.
Besides, the standard specifies nine capabilities which are optional for any particular implementation. No renderer should have any trouble meeting the RenderMan standard if it supports PHIGS primitives and performs such quality calculations as anti-aliasing and gamma correction.
>PIXAR made a big push for Renderman at Siggraph 88. Although a few companies
>agreed to endorse this package (SUN, of course ... they'd endorse anything to
>get their name in lights ;-), many took a more intelligent approach and said
>that they would evaluate it. PIXAR basically used a lot of marketing hype
>to get support initially and even listed supporters who, when you would
>walk up to their booth at Siggraph and ask them, said they did not support it.
This comment is borderline offensive to me, partly because it is admittedly based on speculation and partly because I was around during the process I mentioned above, and I know what a painful and elaborate job Pat had to get the proposal into shape to win the support of the companies he did. There is a difference between endorsement and support. Endorsement means "we have evaluated this; it is sound and we believe this is the way the industry should go". Support means "we have hardware and/or software which implements this standard". You would expect the latter to be a subset of the former.
Nineteen companies endorsed the RenderMan standard at rollout. The main holdouts at this point are Silicon Graphics and Wavefront. My personal suspicion (not to be taken as the views of Pixar) is that Wavefront perceives RenderMan as a threat to their rendering market because it supports features which would be difficult or impossible to implement using their rendering algorithm. And Wavefront software runs on SGI machines.
>Many (most ?) of the companies who looked at Renderman have decided that it
>still needs a lot of work before it can be considered as even a base to start
>the development of a standard in the rendering/imaging arena.
Who are these "many companies"?? What is this "lot of work"?? We would love to hear about. There is a RenderMan Advisory Council made up of industry representatives whose job it is to hear complaints like that.
I don't expect to hear too many of them, however. As I said before, RenderMan is basically a simple-minded extension of PHIGS (read: EXTENSION. Meaning "If PHIGS is good enough for you, so should be RenderMan") adding constructs for supporting realistic graphics. It has gone through the mill of two major rewrites as a result of consultations with "many companies".
>There are
>several problems in the area of getting Renderman to mesh with other current
>standard graphics environments (eg. phigs, cgi, ...) so that it becomes a
>natural extension to the less-interesting/fancy graphics people do today.
What are these problems?? Can you be more specific??
>Even for the niche market of image-rendering, Renderman does not include
>many (any ?) ideas from the companies that have been in this business for
>years ... Wavefront, Alias Research, Neo-Visuals, Disney, etc.
What are these ideas?? Come to think of it, what ideas has Disney contributed to image rendering?
>Keith Fish
>
>PS. I'm not cutting down PIXAR -- I think that the work they do is
> fantastic (literally)! I just don't like marketing ploys to degrade
> what should be good technology, and this is what the Renderman-hype
> seems to be.
I appreciate your appreciation, but I wish I knew where these impressions of yours came from.
> I think that the industry can develop a good imaging
> interface standard if everyone (animation software companies,
> universities, graphics hardware companies, etc.) gets to contribute.
Again, I thought that's exactly what we did.
If anyone on the net is interested in more information on RenderMan without investing $15 in a spec, the current issue of Unix Review includes an article I wrote discussing the major aspects of the standard. Also, the November issue of Dr. Dobb's Journal has a cover story on the shading language, which is RenderMan's doorway for extensibility.
Steve Upstill
back to contents
From<EMAIL_ADDRESS>(Eugene Miya) Subject: A little announcement (part 1 of 3) Organization: NASA Ames Research Center, Calif. [from USENET]
For a long time now, a lot of people have been asking simple information queries in places like comp.graphics. This resulted in the inevitable repeating of topics, flood of inane news messages (many of which are wrong), and a repeating cycle which bring disillusionment.
Computer graphics, unlike a lot of disciplines, has an overseer of the literature. If you open up an ACM/SIGGRAPH proceedings you will notice a reference to "References" to Baldev Singh (currently at MCC). Baldev has has published significant references in the Computer Graphics Quarterly for a couple of years (and is preparing for another shortly). These bibliographies:
%A Baldev Singh %T Computer Grap[hics Literature for 1986: A Bibliography %J Computer Graphics %V 21 %N 3 %D June 1987 %P 189-208
and
%A Baldev Singh %A Gunther Schrack %T Computer Grap[hics Literature for 1985: A Bibliography %J Computer Graphics %V 20 %N 3 %D July 1986 %P 85-145
Coverage in the field (for graphics) is quite good. I know, I am trying to maintain a comprehensive study of another field (see postings in comp.arch or comp.parallel). The problem is searching for literature on a paper database is difficult (I won't get into details, take my word). Frequently entries are also wrong (not as bad as the net however).
A machine readable form however, solves many of these problems. You can update a machine readable form. The problem becomes then of distribution and search, surprise! something computers are good for! It is with this back ground that we in the Bay Area Association for Computing Machinery's Special Interest Group on Computer Graphics announce the availability of Singh's ACM/SIGGRAPH bibliography in a machine readable form.
While Baldev will oversee the collection and quality of entries, we with a generous donation of cycles and disk space from the Digital Equipment Corporation (DEC) will help oversee the redistribution of the computer graphics bibliography.
This first article will describe how hosts on the Internet can retrieve the computer graphics bibliography. Two other optional means for those not on the Internet will be presented over the next two days (but clearly Internet is the superior way to do this).
THERE ARE TWO DANGERS inherent in all of these means. The bibliography is kind of big. It's not a megabyte, but it's getting there.  So before you copy, agree who at your site will oversee obtaining it. One copy per site please.
The second danger is everybody copying at the same time. The information which follows will illustrate the problem. The DEC host which you be copying from is DEC's gateway to the Internet. It will be a tragedy to abuse this gateway if every site tried to copy at once. I know, we provide the 9600 baud IMP port to DEC. So let's not abuse this, let's be patient and take our turns. 1) copy the computer graphics bibliography only during the weekends or evenings Pacific Daylight or Standard time. 2) copy on a randomly determined evening of the week. How? Flip a coin 3 times (say HTH, make Head == 0, Tails == 1, this translates to 010 binary or 2 base 10). Using Sunday as 1, make Monday 2, copy Monday evening P[SD]T. (HHH or 000, retry). If this is confusing, wait for the weekend. AGAIN copy only in the evenings.
Now the questions you have all been patiently waiting for and I have been rambling: where do I get, and how do I get it. The Internet host is the machine gatekeeper.dec.com [<IP_ADDRESS>]. Please respect this machine (hacker ethic) for the assistance DEC is providing. We don't wish to yank the bibliography from this machine. Don't try to break in, please.
Old time ARPAnet hackers will know where to go from here. The "how" is a process called anonymous FTP (File Transfer Protocol or Program, hasn't changed since 1973 ;-)] Don't all do this at once. Below is a sample session with annotation as to how this works. Catch the names of the subdirectories and files below. A lot of people aren't familiar with distributed systems other than Email, so we've made the language oversimplistic, if you have problems consult your local network guru.
Note the bibliographies exist in a data compressed binary form. Use the Unix uncompress(1) command to decode them. Not on a Unix system? Tough for the time being. Try to find one. The further format of individual entries is Unix refer format (a sample, see the two references above). This is how Singh has them, and also how my bibliography is stored. Refer has lots of advantages over other systems: free-format, widely available on Unix systems, uses a minimum of space, ASCII, fully machine and human readable (it separates the binary data from the text), fairly easy to learn, easily converted to other formats (like [bib]TeX, Scribe, etc.)
Start script eos % ftp gatekeeper.dec.com ^^^^^^^^^^^^^^^^^^^^^^ issue this command, after some time you get: Connected to gatekeeper.dec.com. 220 gatekeeper.dec.com FTP server (Version 4.28 Name (gatekeeper.dec.com:######): anonymous ^^^^^^^^^ use this name 331 Guest login ok, send ident as password. Password: ^^^^^^^^ does not echo, I typed "guest," doesn't matter 230 Guest login ok, access restrictions apply. ftp> cd pub/graf-bib ^^^^^^^^^^^^^^^ change directory to pub/graf-bib 200 CWD command okay. ftp> binary ^^^^^^ very important, you are getting compressed binary files 200 Type set to I. ftp> ls ^^ optional just to should you what you are getting ('dir' is okay, too) 200 PORT command okay. 150 Opening data connection for /bin/ls (<IP_ADDRESS>,1118) (0 bytes). bib85.Z bib86.Z 226 Transfer complete. ^^^^^^^ those two filenames are what you want! 18 bytes received in 0.2 seconds (0.09 Kbytes/s) ftp> mget * ^^^^^^ asks for all (star) files mget bib85.Z? mget bib86.Z? ^ you type "y <cr>" or "n <cr>" if you want them. NOTE: THIS WILL TAKE SOME TIME. ftp> quit ^^^^ done 221 Goodbye. eos % # Now you can uncompress bib85.Z, etc. end script
If you don't have a network guru, send mail to siggraph, not the poster of this note below. (Illiterates will type "reply" or "follow-up" to news. Sorry, I'm very tired of this. That's why I'm doing this.) Big thanks are due to Brian Reid and Jamie Painter (at DEC for this work). Rick Beach okay'ed ACM copyrights. This is not for profit. Please ACK the above people and organizations (in particular, Baldev) when citing. As I hope you can tell, we are really trying to advance the state of the art in computer graphics. This should benefit experts as well as students alike. It also shows the use of technologies other than graphics to our (graphics) benefit.
________
Subject: A little announcement (part 2 of 3)
I described the advantages of searching and reformatting. I described anonymous FTP. This is the way to go if you are a major Internet site like most universities. The problem is: what about more casual users, poor people with small disks? Well, the files reside of DEC's disk. Just LEAVE THEM THERE. Let Bay Area ACM/SIGGRAPH and Singh maintain them. Then how do you access it? By electronic mail.
A similar system exists at the Argonne National Labs (and AT&T Bell Labs): netlib numerical software distribution [CACM ref. if you need it]. A similar set up for benchmarks exists at the NBS (See latest IEEE Computer). Why not do this for graphics references?
With a generous donation of cycles and disk space from the Digital Equipment Corporation (DEC) and some software from CSIL at Stanford we have done just this.
THERE ARE TWO DANGERS inherent: The bibliography is kind of big. The second danger is everybody copying at the same time.
The DEC host which you be copying from is DEC's gateway to the Internet. It will be a tragedy to abuse this gateway if every site tried to copy at once. So let's not abuse this, let's be patient and take our turns.
1) retrieve references only during the weekends or evenings Pacific Daylight or Standard time.
2) copy on a randomly determined evening of the week. How? Flip a coin 3 times (say THT make Head == 0, Tails == 1, this translates to 101 binary or 5 base 10). Using Sunday as 1, make Thursday 5, copy Thursday evening P[SD]T. (HHH or 000, retry). If this is confusing, wait for the weekend. AGAIN copy only in the evenings.
Where, okay here goes the dangerous information: send mail to<EMAIL_ADDRESS>This can also be {your favorite UUCP path}!decwrl!graf-bib-server or if you work for DEC and have ENET access: DECWRL::graf-bib-server
Your mailer should ask for a "Subject:" field. This is important. If your mailer doesn't (and lots don't) ask your system folk about mailrc file or mh_profiles or how to invoke this field. Because you should place the keywords in that subject field. One special keyword is "help."  Make the first alphanumeric (don't give "years"). Additional keywords are conjective (and's) causing a smaller and smaller search. The contents aren't perfect, but give us time.
Your mail is answered by the server daemon. It searches and tries to find relevant cited keywords (up to 6 significant first characters. Choose carefully. Don't ask for all references with "computer graphics." Hope you understand why. Just try "help" as your first keyword unless you know what you are looking for. The information comes back in the aforementioned (yesterday) refer format.
If you don't have a network guru, send mail to siggraph, not the poster of this note below. (Illiterates will type "reply" or "follow-up" to news. Sorry, I'm very tired of this. That's why I'm doing this.) Big thanks are due to Brian Reid and Jamie Painter (at DEC for this work). Rick Beach okay'ed ACM copyrights. This is not for profit. Please ACK the above people and organizations (in particular, Baldev) when citing. As I hope you can tell, we are really trying to advance the state of the art in computer graphics. This should benefit experts as well as students alike. It also shows the use of technologies other than graphics to our (graphics) benefit.
Our last note will concern one more way of getting references: just asking for a floppy (low tech). We in the Bay Area ACM/SIGGRAPH local group will be adding to these. Reference contributions and corrections are welcome. It's only possible if we work together to see this through.
________
From<EMAIL_ADDRESS>(Eugene Miya) Subject: Re: bib notation question
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Ping Kang Hsiung) writes:
>I got Eugene Miya's bib files over the weekend. There are some
>notations used in the files that I don't understand:
>
>1. Some \(em or (em in the %J field. What these mean?
>(and why they don't have the closing ")".)
>
>2. In the key field, there are some numbers:
> %K I3m educational computing
> %K I3m mechanical engineering computing
> %K I35 modeling systems
>How do I interpret/use these I3m, I35 numbers?
>
>3. Some acronyms: CGF, CAMP, ISATA. They are not defined in the files.
Oops! Sorry. I got other mail on this. I forgot all about them. The BACKSLASH macros are troff-isms. There are tools like deroff to take them out or r2bib to convert things into bibTeX. These macros are 4 characters in size \(em is a slightly longer dash. They aren't a significant problem, write sed filter.
The I fields are ACM Classification codes. You can either get them from ACM Computing Reviews (blue and white things, that most don't get) or you can get the hardcopy versions of these bibliographies (they have the CR classification scheme for graphics).
The acronyms are unfortunately a long term problems. We can get a table to use use U. AZ's bib program to fill them out.
I hope you are all finding some use of this stuff. We NEED people around the country to help us update this. There are earlier years. Also new papers are being written all the time. They have to get entered (even finding them is hard). I don't deserve the credit, I'm only pissed off that I have to read queries over and over. The credit belongs to the crew of Bay Area ACM/SIGGRAPH working on this project. (other volunteers are welcome: especially key entry help)
Another gross generalization from
--eugene miya, NASA Ames Research Center<EMAIL_ADDRESS>ex-Lame-duck Prez. Bay Area ACM/SIGGRAPH resident cynic at the Rock of Ages Home for Retired Hackers: "Mailers?! HA!", "If my mail does not reach you, please accept my apology." {uunet,hplabs,ncar,decwrl,allegra,tektronix}!ames!aurora!eugene "Send mail, avoid follow-ups. If enough, I'll summarize."
back to contents
alias jim_arvo<EMAIL_ADDRESS>alias al_barr<EMAIL_ADDRESS>alias brian_barsky<EMAIL_ADDRESS>alias daniel_bass<EMAIL_ADDRESS>alias rod_bogart<EMAIL_ADDRESS>alias wim_bronsvoort<EMAIL_ADDRESS>alias at_campbell<EMAIL_ADDRESS>alias john_chapman<EMAIL_ADDRESS>alias chuan_chee<EMAIL_ADDRESS>alias michael_cohen<EMAIL_ADDRESS>alias jim_ferwerda<EMAIL_ADDRESS>alias fred_fisher<EMAIL_ADDRESS>alias john_francis<EMAIL_ADDRESS>alias phil_getto<EMAIL_ADDRESS>alias andrew_glassner<EMAIL_ADDRESS>alias jeff_goldsmith<EMAIL_ADDRESS>alias chuck_grant<EMAIL_ADDRESS>alias paul_haeberli<EMAIL_ADDRESS>alias eric_haines<EMAIL_ADDRESS>alias roy_hall<EMAIL_ADDRESS>alias pat_hanrahan<EMAIL_ADDRESS>alias paul_heckbert<EMAIL_ADDRESS>alias michael_hohmeyer<EMAIL_ADDRESS>alias jeff_hultquist<EMAIL_ADDRESS>alias erik_jansen<EMAIL_ADDRESS>alias ken_joy<EMAIL_ADDRESS>alias mike_kaplan<EMAIL_ADDRESS>alias tim_kay<EMAIL_ADDRESS>alias dave_kirk<EMAIL_ADDRESS>alias roman_kuchkuda<EMAIL_ADDRESS>alias george_kyriazis<EMAIL_ADDRESS>alias david_lister<EMAIL_ADDRESS>alias pete_litwinowicz<EMAIL_ADDRESS>alias gray_lorig<EMAIL_ADDRESS>alias wayne_lytle<EMAIL_ADDRESS>alias tom_malley<EMAIL_ADDRESS>alias don_marsh<EMAIL_ADDRESS>alias michael_natkin<EMAIL_ADDRESS>alias tim_oconnor<EMAIL_ADDRESS>alias masataka_ohta<EMAIL_ADDRESS>alias tom_palmer<EMAIL_ADDRESS>alias darwyn_peachey<EMAIL_ADDRESS>alias john_peterson<EMAIL_ADDRESS>alias frits_post<EMAIL_ADDRESS>alias pierre_poulin<EMAIL_ADDRESS>alias thierry_priol<EMAIL_ADDRESS>alias panu_rekola<EMAIL_ADDRESS>alias david_rogers<EMAIL_ADDRESS>alias linda_roy<EMAIL_ADDRESS>alias cary_scofield<EMAIL_ADDRESS>alias pete_segal<EMAIL_ADDRESS>alias scott_senften<EMAIL_ADDRESS>alias cliff_shaffer<EMAIL_ADDRESS>alias susan_spach<EMAIL_ADDRESS>alias rick_speer<EMAIL_ADDRESS>alias stephen_spencer<EMAIL_ADDRESS>alias steve_stepoway<EMAIL_ADDRESS>alias mike_stevens<EMAIL_ADDRESS>alias paul_strauss<EMAIL_ADDRESS>alias kr_subramanian<EMAIL_ADDRESS>alias kelvin_thompson<EMAIL_ADDRESS>alias russ_tuck<EMAIL_ADDRESS>alias greg_turk<EMAIL_ADDRESS>alias ben_trumbore<EMAIL_ADDRESS>alias mark_vandewettering<EMAIL_ADDRESS>alias jack_van_wijk<EMAIL_ADDRESS>alias greg_ward<EMAIL_ADDRESS>alias bob_webber<EMAIL_ADDRESS>alias lee_westover<EMAIL_ADDRESS>alias andrew_woo<EMAIL_ADDRESS>back to contents


Database interface and 'PostgreSQL' driver for 'R'.
This package provides a Database Interface 'DBI' compliant
driver for 'R' to access 'PostgreSQL' database systems.
In order to build and install this package from source, 'PostgreSQL'
itself must be present your system to provide 'PostgreSQL' functionality
via its libraries and header files. These files are provided as
'postgresql-devel' package under some Linux distributions.
On 'macOS' and 'Microsoft Windows' system the attached 'libpq' library source will be used.
| Version: |
0.6-2 |
| Depends: |
R (≥ 2.9.0), methods, DBI (≥ 0.3) |
| Published: |
2017-06-24 |
| Author: |
Joe Conway, Dirk Eddelbuettel, Tomoaki Nishiyama, Sameer Kumar Prayaga (during 2008), Neil Tiffin |
| Maintainer: |
Tomoaki Nishiyama <tomoakin at staff.kanazawa-u.ac.jp> |
| License: |
GPL-2 | file LICENSE |
| Copyright: |
Authors listed above, PostgreSQL Global Development Group,
and The Regents of the University of California |
| URL: |
https://github.com/tomoakin/RPostgreSQL,
https://cran.r-project.org/package=DBI,
http://www.postgresql.org |
| NeedsCompilation: |
yes |
| Materials: |
NEWS ChangeLog |
| In views: |
Databases, Spatial |
| CRAN checks: |
RPostgreSQL results |


Time to play the game!!
Hello {{username}}, so as you know the rules of the game were explained previously.
Here is the random country: {{country}}
Enter the country below
Country Name:


In this page, you can use nostr-tools in your browser's DevTools.
Or: Show simple console (for mobile browsers. using Eruda)
Settings
Use simple console (for mobile browsers) (TODO: make it uncheckable)
nostr-tools version (leave blank to use latest version): Reload
Author: heguro
This page is licensed under the Unlicense (public domain).


The PatientSearchInputBox control allows the user to enter textual search data for a patient in what appears to be a standard textbox. A parsing method allows the text search criteria to be parsed and exposed as properties.
Additional information relating to this control can be found on the corresponding MSCUI control page.


--- layout: post title: 'Paint Me a Poem: Poems Inspired by Masterpieces of Art by Justine Rowden' date: 2011-12-31 12:13:24.000000000 -08:00 type: post parent_id: '0' published: true pd: '' status: publish categories: - Book Reviews - Classroom Talk - Guest Posts tags: - kidlit - paint me a poem by Justine Rowden - poetry for children author: login: k email: k@k display_name: mcary first_name: '' last_name: '' ---
Guest Post by Dawn Little
Paint Me a Poem: Poems Inspired by Masterpieces of Art is one of my favorite books to read with my children because I like the premise of the book. As the author walked through the National Gallery of Art one day, she was inspired by the paintings she saw, and in her head began to hear music. The music became a poem and this book is a collection of thirteen poems inspired by famous artwork.
Activity: Read aloud this book with your child and talk about the pictures and how the author wrote the poetry. If you have an art museum nearby, consider taking your child to it and peruse the paintings. Determine a favorite painting and purchase a small postcard in the gift shop of that painting. When home, encourage your child to write a poem based on the painting. If your child can’t write yet, ask him to dictate a poem to you. If you don’t have a museum nearby, use a piece of your child’s own artwork to inspire a poem. Or, use photographs or pictures from magazines.
It’s not the poem that matters, but the experience of relating a picture into words.  All Amazon links are affiliate links and may result in my receiving a small commission. This is at no additional cost to you.


{# title = More About Contexts #} {# foo = 1234.5 #} {# bar = [ 100, 200, "Hello World" ] #}
{# title = More About Context #}
{% endverbatim %}
at the top of the HTML page will create the variable title
that
can be used in the page as {% verbatim %}{{ page.title }}
{% endverbatim %}
to produce: {{page.title}}
To add more variables list them one on each line. To add data beyond a simple string use the JSON format:
{% code "django-comments" %}
Note that in the last example for bar
gets turned into python list accessible as
{% verbatim %}{{ page.bar }}
{% endverbatim %}
to produce {{page.bar}}.
The {% verbatim %}{{ page.bar }}
{% endverbatim %} object can also be looped over with Django
to produce:
{% for elem in page.bar %}
* {{ elem }}
{% endfor %}
### Advanced Context
The second method of getting context into a page is a python module named context.py
placed in the directory root. This may contain
any python construct. Make sure that this python module can be executed without errors.
The content of this module will be visible under the parameter data
{% verbatim %}{{ context }}
{% endverbatim %} variable name.
Example supposed that the `context.py` file contains the following:
{% code "context.py" lang='python' %}
This file has to be in the root location of the site. We can now access the contents of this module
via `context` variable like
so {% verbatim %}{{ context.greeting }}
{% endverbatim %} will produce: {{ context.greeting }}
Go back to: {% link "index.html" "Home Page" %}.
{% endmarkdown %}


Sprint 3 - Cultural
Emotional Intelligence
Being super smart and having a high IQ doesn't necessarily mean that you will get that job.
The good news is: You can learn to be an emotional intelligent person. Lucky you!
But let's actually have a closer look at what Emotional Intelligence means.
What is Emotional Intelligence?
 It also involves being aware of how others are feeling and responding.
Here are a few examples of signs that emotionally intelligent people show:
- understand their actions and behaviours
- great listeners
- excellent problem solver
- can get along with people in different situations
- able to shake off a bad moment and move on
- accept contstructive criticism
- not afraid of being vulnerable
- not afraid to admit mistakes and apologise
For some people emotional intelligence comes just naturally, others need to learn it.
The American psychologist Daniel Goleman has worked out five key elements that are critical to emotional intelligence:
- Self-Awareness: Being fully aware of how you feel and understanding the effect your
feelings and your actions can have on people around you.
- Self-Regulation: Controling, regulating and expressing your emotions appropriately.
- Social Skills: Interacting and communicationg well with others.
- Empathy: Being able to understand how others are feeling.
- Motivation: Being action-oriented and working towards your own goals as well as
motivating others.
How is Emotional Intelligence different to IQ?
First of all it is different by how it is measured. The intelligence quotient is a score derived from standardized tests
designed to measure intelligence.
An IQ relates directly to a persons intellectual and cognitive abilities and measures how well someone can use information
and logic to answer questions or make predictions. The results are then compared to average scores of people in the same
age group.
People with higher IQs can think more abstractly. In the workplace, people with high IQ are more successful with
challenging tasks and the ability to analyze.
Emotional Intelligence is very different. Those with high emotional intelligence are able to manage their emotions
and use their emotions to facilitate their thinking and to understand the emotions of others.
When it comes to the workplace, emotional intelligence seems to be more beneficial for one's career.
Emotional intelligent people are usually better team players and leaders, are service oriented and show initiative.
Why is Emotional Intelligence so important?
The world is constantly changing. It is a complex and uncertain place. Emotional intelligence can help us in our
personal and in our work lives.
Personal life:
It can assist us to look after our mental and physical health and well-being, to manage relationships
effectively and to solve conflicts.
If we can't manage our emotions, we will most likely not be able to manage stress either.
This can ultimately lead to physical health problems like high blood pressure, suppressed immune system,
risk of heart attacks, etc.
It can also have an impact on our mental health, leading to anxiety and depression, or being unable to form
strong relationships and feeling lonely and isolated.
If we learn to understand and control our emotions, we are better to express our feelings and have empathy
with others which leads to more effective communication and forms stronger relationships.
Workplace:
Today's workplaces are a melting pot of different personalities, skills, strengths and emotions.
Employers want to make sure they choose candidates who will mesh well with their existing team and navigate
the workplace effectively.
EQ is particularly important in leadership roles and vital for success. If leaders lack emotional intelligence,
it could result in lower employee engagement and higher turnover rate as a consequence.
Even the smartest person needs good people skills to succeed these days. High intelligence is no
longer guarantee for success in life.


Ireland
(2)
Search Results: Ireland
Event
Location
Date
Find Tickets
Allianz GAA Football League Division 3 & 4 Finals 2017
Croke Park
Dublin, IE
Sat 08/04/17
15:00
View Tickets
Allianz GAA Football League Division 1 & 2 Finals 2017
Croke Park
Dublin, IE
Sun 09/04/17
14:00
View Tickets
Dates Scheduled in Other Countries
Search Results: Dates Scheduled in Other Countries
Event
Location
Date
Find Tickets


US cinema chain fires workers who racially profiled black women at ‘Harriet’ screening
AMC will also give mandatory customer service and anti-racism training to staff.
US cinema chain AMC has fired three employees after a group of attendees claimed they were racially profiled during a screening of Harriet.
African American women’s group the 504 Queens alleged the incident occurred when 15 of their members were attending a screening of the movie at AMC Clearview Palace 12 in Metairie, Louisiana on November 7.
In a letter from the organisation’s lawyer, it is claimed that the screening was interrupted numerous times by three employees who asked about their tickets and seating assignments (via WDSU).
It further claims that the lights were turned on during the showing and that an audience member asked one of the group members to leave, and members of the group later approached AMC’s management, who offered free movie tickets for a future visit in response.
However, the charity rejected the proposal, demanding that the three employees be fired and that the company give mandatory customer service and anti-racism training to the staff, as well as issue a written apology.
‘Harriet’ stars Cynthia Erivo as American abolitionist Harriet Tubman
They also asked for free Harriet tickets to be given to surrounding high school students in order to educate them about abolitionist Harriet Tubman, give 200 free tickets to the charity so they can take young girls to the movies, and that AMC donate proceeds from Clearview’s Black Friday sale to 504 Queens to purchase holiday meals for those in need.
AMC’s senior vice president has since apologised to the group and has agreed to the requests.
Harriet stars Cynthia Erivo as the abolitionist, though controversy arose last week after the film’s writer revealed that a studio boss suggested back in 1994 that Julia Roberts play Tubman.


NTFSINFO(8) NTFSINFO(8) NAME ntfsinfo - dump a file's attributes SYNOPSIS ntfsinfo [options] device DESCRIPTION ntfsinfo will dump the attributes of inode inode-number or the file path-filename and/or information about the mft ( -m option). Run ntfs‐ info without arguments for a full list of options. OPTIONS Below is a summary of all the options that ntfsinfo accepts. Nearly all options have two equivalent names. The short name is preceded by - and the long name is preceded by --. Any single letter options, that don't take an argument, can be combined into a single command, e.g. -fv is equivalent to -f -v. Long named options can be abbreviated to any unique prefix of their name. -F, --file FILE Show information about this file -f, --force This will override some sensible defaults, such as not overwriting an existing file. Use this option with caution. -h, --help Show a list of options with a brief description of each one. -i, --inode NUM Show information about this inode. -m, --mft Show information about the volume. -q, --quiet Produce less output. -t, --notime Do not display timestamps in the output. -v, --verbose Increase the amount of output that ntfsinfo prints. -V, --version Show the version number, copyright and license. BUGS There are no known problems with ntfsinfo. If you find a bug please send an email describing the problem to the development team<EMAIL_ADDRESS>AUTHORS ntfsinfo was written by Matthew J. Fanto, Anton Altaparmakov, Richard Russon, Szabolcs Szakacsits, Yuval Fledel, Yura Pakhuchiy and Cristian Klein. It was ported to ntfs-3g by Erik Larsson and Jean-Pierre Andre. AVAILABILITY ntfsinfo is part of the ntfs-3g package and is available from: http://www.tuxera.com/community/ SEE ALSO ntfsprogs(8) ntfs-3g 2012.1.15AR.5 April 2006 NTFSINFO(8)


Best
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name
당일발송
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name
Hot
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name
BrandName
Product Name


sell products
Subscribe and Review
About Us
Investor relations
Home
Stock photos
Developers
Suppliers
Designers
Manufacturers
Consumers
on facebook
on Instagram


We propose a generic framework for time-series forecasting called DeepTrace, which com- prises three main task-specific components - Convolutional Block, Recurrent Block, and Linear Block. The framework involves the use of these components in a specific order and is defined for certain permu- tations, described as architectural variants in the paper. We also introduce a novel training methodology of using future contextual frames to train the framework. The genericness of the framework is tested by evaluating the performance on real-world time series datasets across diverse domains. The future con- textual frames are dropped during the testing phase to simulate the real-world conditions, which helps us verify the robustness of DeepTrace in real-world scenarios. We use an optimizer to offset the loss incurred due to the non-provision of future contextual frames. We conducted substantial experiments by applying the proposed framework across the datasets considered and comparing the performance to benchmark results for those datasets. These experiments show the effectiveness of the proposed frame- work that outperforms the existing state-of-art methods.
{% endblock %}


---
layout: page
title: "Something About Me"
description: "Hey there, welcome to my page！"
header-img: "img/post-bg-rwd.jpg"
---
Snow nothing,
reap nothing.
Hey，my name is Shuai Gao (Leo).
I am a formal mapping engineer, current Master of Data Science graduate from RMIT.
I am familiar with Python, Excel, R, Java and SQL, skilful in time series analysis,
data mining, machine learning and statistics. I am also acclimated to big data and cloud computing technologies.
e.g. Google cloud, MapReduce, Hadoop.
Download my CV here
Download Chinese CV
Education
SKILLS AND CERTIFICATE
•
Certified machine learning analyst by ITman
•
Language: English (Sophisticated), Mandarin (MT)
•
Software:
Proficient in
Excel and
Python; familiar with
SQL,
JAVA and
R; familiar with
SAS
•
Keywords:
Supervised | Unsupervised | Semisupervised | Reinforcement Learning | MapReduce | Time Series Analysis |Regression | SVM | Random Forest | Feature Selection | Dimensionality reduction | Data Collection | Scrappy |
Artificial Neural Network | Lasso Regression | Ridge Regression | Data Pre-processing | Cloud computing |
Logistic Regression | K Means | DB SCAN | Crawl |
Working Experience
Coles
Coles Supermarkets Australia Pty Ltd, trading as Coles, is an Australian supermarket,
retail and consumer services chain,
headquartered in Melbourne as part of the Coles Group.
Advanced Analytics Internship
• Used unsupervised machine learning algorithms for user information grouping based on the purchase behavior and personal information statistics of users in Australia;
• Responsible for data processing, including extracting data from SQL, cleaning data, feature selection and statistical analysis as well as data visualization;
• Results: Scored the user value according to the user's RFM (recent purchase, purchase frequency, purchase expenses), which was recognized by the team. Grouped the information such as discount tendency, quality requirement,
purchase quantity and prices, etc., laying the basis for advertisement placement;
Melbourne, Australia
MAR 2019 – Present
IT MAN
Leading IT Consulting Agency in Melbourne. Affordable IT professionals for crafting amazing websites,
mobile apps. We are also experts in digital marketing and providing excellent IT solutions
to help the business grow faster
Data Scientist Intern
• Independently researched the Beijing job market and used machine learning algorithms for salary forecasting;
• Grabbed job related data from 51Job, performing statistical analysis and feature selection for data cleaning and processing;
• Used deep learning methods (Random Forest, SVM, etc.) to build a machine learning model to predict job salary levels;
• Results: The salary level can be basically predicted given a description of the position information, and the prediction accuracy reached over 80%;
Melbourne, Australia
JUN 2018 – FEB 2019
Project
•
End to end data analysis of regional job market:
Data collection, data pre-processing, words cloud, modelling and association finding. Analyze the information about the job market in Beijing, China.
•
Scrapy project:
Crawling data from popular websites.
•
Wechat Robot:
By using Mini Batch K-Means algorithm to covert picture received from WeChat to reduce the size of the picture without distortion, and send back picture to the
friend.
•
Web analysis based on Request package:
Using Request package to get the information from HTML sit.
•
Australian Workforce (Full-time/Part-time) Male-Female Ratio Shinny App Data Visualization :
• Description: Visualized the historical trends of the number of employees in various industries/positions in
Australia and analyzed trends and proportions of male and female practitioners;
• Completed data selection, cleaning, grouping, and created interactive charts independently;
• Found out through the interactive chart that women still occupied a small proportion in most industries.
Although the total number of male and female employees in some industries was almost the same, men were
more likely to hold full-time jobs; developed interactive light applications through Shinny app to share
visualization results through url;
• ranked top 5% in the class;
•
Interactive visualization:
Interactive visualization of the relationship between population life expectancy and the gross domestic product has changed over time.
•
Cloud-based application:
Web application for analysis health indicator of every country in serval years. Using serval web tech to collect, analysis data and track users' action.


AUD/USD technical analysis: Off lows, but flag breakdown is still valid
by Omkar Godbole- The 4-hour chart shows a bear flag breakdown, a bearish continuation pattern.
- The pair remains on the defensive with scope for a drop below 0.67.
AUD/USD has recovered from session lows, but the bulls are not out of the woods yet as a bearish pattern on the 4-hour chart is still valid.
The currency pair is currently trading at 0.68, representing a 0.10% drop on the day, having hit a low of 0.6786 earlier today.
However, it is still too early to call a bullish reversal, as the bear flag breakdown on the 4-hour chart confirmed during the US trading hours on Wednesday is still valid.
The flag breakdown has created room for a drop to 0.6675 (target as per the measured move method).
Supporting the bearish case is the below-50 reading on the 14-day relative strength index (RSI). The MACD histogram is also printing deeper bars below the zero line.
The immediate outlook would turn bullish if and when the pair finds acceptance above 0.6835, invalidating the bearish lower highs setup.
4-hour chart
Trend: Bearish
Technical levels
AUD/USD
| Overview | |
|---|---|
| Today last price | 0.6797 |
| Today Daily Change | -0.0001 |
| Today Daily Change % | -0.01 |
| Today daily open | 0.6798 |
| Trends | |
|---|---|
| Daily SMA20 | 0.6852 |
| Daily SMA50 | 0.6814 |
| Daily SMA100 | 0.6836 |
| Daily SMA200 | 0.6935 |
| Levels | |
|---|---|
| Previous Daily High | 0.6832 |
| Previous Daily Low | 0.6789 |
| Previous Weekly High | 0.6866 |
| Previous Weekly Low | 0.6769 |
| Previous Monthly High | 0.693 |
| Previous Monthly Low | 0.667 |
| Daily Fibonacci 38.2% | 0.6805 |
| Daily Fibonacci 61.8% | 0.6816 |
| Daily Pivot Point S1 | 0.6781 |
| Daily Pivot Point S2 | 0.6763 |
| Daily Pivot Point S3 | 0.6738 |
| Daily Pivot Point R1 | 0.6824 |
| Daily Pivot Point R2 | 0.6849 |
| Daily Pivot Point R3 | 0.6867 |


--- layout: default --- {% include servicesbanner.html %}
We build scalabale, resilient, elastic, event-driven, distributed custom software using scala, akka, java, play framework, lagom, functional programming and other libraries existing in java and scala ecosystem. We are here to build a team for your project and provides you state of the art development using cutting edge technologies. Since functional programming paradigm evolved, the way we write the application has changed a lot. The pattern we follow in funtional programming software design are totally different from object oriented one. We help companies to land them in the playground of functional programmimg.
We have an excellent and certified team of bigdata developers and provide big-data solutions using hadoop, flink, storm, hive, hdfs and spark ecosystem and Lightbend fast data platform ecosystem, We have built several custom distributed big data processing engines in past and we are experienced in processing TB's of data through complex computations using spark and storm. We delivered some of analytics solutions in social media, advertising, sentiment analysis and code recommendation engines. Spark core API integrates with scala seamlessely and it's very good to use with zeppelin for any exploratory analysis.
Now it's a time to break your monolith into microservices architecture. We provide reactive microservices development using Lagom framework which is a state of the art microservices framework in the market by Lightbend. The basic idea of microservices is that every system will be running a single microservice but lagom says that microservices does not work alone they also need to interact with other services that why Lagom as it's name suggests focus on breaking microservices into right sized peices and each group of microservices have their own bounded context. Lagom comes with Java and Scala API to develop microservices.
Are you willing to build your rest API using reactive technologies like Akka, Akka-http, Akka-streams, Playframework and http4s. We recommend you to use them to build your application http layer. Playframwork is a reactive framework build over top of concurrency framework akka gives you fast response through your rest services, it is a super simple framework to develop a web application backend. If you need only http layer for your application there is many options like http4s and akka-http etc. We have developed Rest API for shipping/logistics, telecom, marking analysis and integartes http layer to the core of applications.


Dear Sir/ Madam, I am Mr Daniel Abdul-Latif Dusba 21 years old from Republic of Rwanda In East Africa, legal first son of late Dr Mohammed Abdul-Latif Dusba, a once minister in Rwanda who was later killed during the war conflict in rwanda with my mother and only sister, now i am in Dakar Senegal under United Nations refugee protection with my kid brother. After the death of my father, my uncle started to persecute us about my fathers landed properties , which he later snatched from us under treat and duress .Now there is nothing we can do rather than to run away for our dear life' which is very important to us, now i and my brother are in critical condition here in Dakar Senegal,we are political assylum seekers , some one to be under refugee protection to compare with senegal a country where things are very hard and difficult, every thing is bad for us here,we need urgent assistance. You are the kind of person i and my brother are looking for for our future, which i know that you can not disapoint us in life.Now the only thing that makes me to feel happy at times is that my father left the sum of 4.600'000 US Dollars with a bank which i and my younger brother are the only persons aware , i am the next of kin to my late father and inheritted all his belongings. My late father loves me very much that was why he gave me every information about that money he deposited on my behalf as his first son before his death. On our arrival here,I extablished contact and ownership with the bank and the bank director told me that unless i have some body who will represent me as my late fathers foreign business associate and family representative with prove of status that their bank will not release the money. so this is why i am looking for who will go for it, somebody who will be honest and truthfull to me,someone who will not betray me nor cheat me in the future,somebody with the fear of God. i am hereby seeking for your assistance towards this matter, feel free to reply me or call me to indicate your intrest and willingness to assist me and my younger brother out of this suffering and transfer the money to your bank account in your country. After the transfer has been made to your bank account,you will send some money to me and my brother here to prepare our travelling documents and meet you over there and continue with our life and education again, while my brother will secure a better medical treatment,because he is very sick at the moment and hospitalised.please send me your reply on<EMAIL_ADDRESS>Thanks & remain blessed. Yours Faithfully, Daniel Abdul Latif Dusba


Before Change
"osmid": result["id"],
"geometry": point
}
if "tags" in result:
for tag in result["tags"]:
poi[tag] = result["tags"][tag]
pois[result["id"]] = poi
except Exception:
log("Point has invalid geometry: {}".format(result["id"]))
After Change
gdf_nodes = gpd.GeoDataFrame(pois).T
gdf_nodes.crs = {"init": "epsg:4326"}
gdf_ways = gpd.GeoDataFrame(poi_ways).T
gdf_ways.crs = {"init": "epsg:4326"}
// Parse relations (MultiPolygons) from "ways"
gdf_ways = parse_osm_relations(relations=relations, osm_way_df=gdf_ways)
return (gdf_nodes, gdf_ways)
def pois_from_point(point, distance=None, amenities=None, retain_invalid=False):
Get Point of interests (POIs) within some distance north, south, east, and west of


| Author: | Dave Kuhlman |
|---|---|
| Address: |<EMAIL_ADDRESS>http://www.rexx.com/~dkuhlman |
| Revision: | 1.3b |
| Date: | September 13, 2013 |
| Copyright: | Copyright (c) 2007 Dave Kuhlman. All Rights Reserved. This software is subject to the provisions of the MIT License http://www.opensource.org/licenses/mit-license.php. |
|---|---|
| Abstract: | This document provides exercises for an introductory course on programming in Python. |
Contents
Create (define) the following strings:
Use the string formatting operator to insert your name and the number of characters in your name into a string.
Build up a list of strings, then convert them to a single string with (1) two colons between the original strings, (2) a new-line between each string, (3) nothing between each string.
Create a list of integers. Now "join" them together to form a string of comma-separated values. (Hint: look at the map built-in function or consider using a list comprehension.)
Create a sample string, then try each of the following string methods:
Implement a function that takes a string as an argument. Split the string into "words". Return (1) a count of the number of words and (2) the list of words.
Given the following data:
Alice Appleby:501-511-5111:1.5:bird watching Bill Barnaby:501-511-5111:4009.2:gardening
Print a report that has column headers ("Name", "Phone", "Activity", and "Interest/hobby") and prints the data in aligned columns.
Open an existing file for input. Read in the entire contents of the file as a single string. Close the file. Print the contents.
Now, split the contents into lines. Then print each line.
Open an existing file for input. Read each line and print out each line in the file with a line number.
Now, add to this solution, code that splits each line on blanks and counts the "words" in the file. Or, for a CSV (comma separated value) file, split on comma.
Open a file (that does not exist) for output. Write 3 lines of text to your file. Close the file. Now, check the contents of your new file to see if it is as you expect.
Question: How can you check to ensure that the file you are about to write to does not already exist? Hint: Look in module os.path.
Open an existing file and append two lines of text to it.
Question: How do you obtain a list of files in a directory? Hint: Look at module glob.
Question: How do you obtain a list of files in a directory and its sub-directories? Hint: Look at the walk function in module os.path.
Create a file name in a platform independent way. Hint: Look at os.sep.
Write a script that reads standard input (sys.stdin) and writes to standard output (sys.stdout). Add the string "## " to the beginning of each line.
Perform the following import operations:
Write a function that takes no arguments and returns an integer.
Write a function that takes two strings as arguments and returns the concatenated value of those strings.
Write a function that has one regular argument and one argument with a default value. Print out both values. Now, call your function both with and without the optional, second argument.
Write a function that takes a string and a list as arguments. Search the list for the string. Return true if the string is in the list, else return false.
Call one of your functions using keyword arguments.
Write a function that takes two arguments: (1) a function that takes one argument and (2) a list. This (outer) function should apply the function argument to each item in the list argument. Next, define another function that takes one argument. Call the first function, passing it the second function.
Implement the a generator function -- The generator produced should yield all values from a list/iterable that satisfy a predicate. It should apply the transforms before return each value. The function takes these arguments:
values -- A list of values
predicate -- A function that takes a single argument, performs a test on that value, and returns True or False.
transforms -- (optional) A list of functions. Apply each function in this list and returns the resulting value. So, for example, if the function is called like this:
result = transforms([11, 22], p, [f, g])
then the resulting generator might return:
g(f(11))
Implement a very simple class containing no members.
Create an instance of your class; set and get a attribute x.
Implement a simple class containing getters and setters for data members name (a string) and size (an integer).
Create an instance of your class; set the name and size member variables; then get these values from your instance and print them.
Add a show method, which prints out the name and size.
Implement a simple class containing getters and setters for data members name (a string) and size (an integer). Add a constructor that initializes the name and size data members.
Implement a subclass of the above class. Add a description data member. Add getter and setter for description. Add a constructor that (1) calls the super-class ctor and (2) sets the description member variable.
Add show method to your sub-class, overriding the show method in the super-class. Also, call the super-class method from the sub-class.
Implement a class that represents a node in a binary tree. Each node should have a name and a left_child (a node) and right_child. Also implement a (recusive) method that displays the node and the two children under it.
Implement a tree data structure in one of the following ways:
Implement the Vehicle class hierarchy described by your instructor. Here is an outline of that hierarchy:
Suggestion: Try to think of your classes (and instances of them) as modeling objects (vehicles) out in the real world. Imagine that you are implementing the data model for a vehicle tracking system.
Implement a command line interface. Use (subclass) the cmd module in the Python standard library. Example:
import cmd class MySimpleCmd(cmd.Cmd):
Write a module that contains two (or more functions). Add one more function that calls these two functions. (1) Run your script from the command line. (2) Import your script from within the interactive interpreter, then call your functions.
Move your module to a sub-directory under your current directory. Now import your module and call a function in it. (Hint: You will need an __init__.py file.
Add a print statement to your __init__.py file, to show that it is really being evaluated.
Move your module to a separate directory that is not under your current directory. Now import your module and call a function in it. (Hint: You will need to add the path to your directory to your PYTHONPATH environment variable.)
Congratulations. You have implemented a Python/Python (mini-)package.
The remaining sections of this document describe additional Python exercises. These additional exercises focus on text processing, XML processing, processing several special file formats, object-oriented programming, and handling files and directories.
Find a .zip or .jar file or an ODF/.odt (OpenOfficeWriter). (1) Read the contents and print a list of the contents. (2) Create a Zip archive, add several files to it, and write it to disk.
Hint: The Python standard library contains a zipfile module.
The Zip file exercise above can also be performed using tarfile for archiving and one of gzip, bz2, or zlib for compression.
(Note: The csv module is in the Python standard library, but not (as of Jython 2.2.1) in the Jython standard library.)
Read a CSV (comma separated values) file. (1) Print out a report of the contents of file with columns that are 10 characters wide. (2) Create a CSV file, add several lines to it, and save it to disk.
Hints: The Python standard library contains a csv module. Consider using my_str_variable.ljust(n) (or .rjust()) to align columns.
Read a .ini file. Print out a report of the contents of this file. Hint: The Python standard library contains the ConfigParser module.
Example data:
[general] title: The Python Programming Language version: 2.5.1 [details] location: http://python.org/download/ formats: gzipped-tar bzipped-tar ms-windows-installer
Now, write a function that extracts a value, given the section name and option name entered on the command line.
Write the following scripts:
(Note: Jython support for ElementTree is not there yet. Consider using dom4j instead: http://www.dom4j.org/ )
Use xml.etree.ElementTree to read and parse an XML file. (1) Print out all the tags in the file. (2) Now, try to indent your print-out to show level of nesting. (3) Add display of the attributes.
Sample data:
<?xml version="1.0" encoding="UTF-8"?> <vegetables version="1.0"> <tomato id="001"> <name>Tomato</name> <colors> <color>pink</color> <color>red</color> <color>purple</color> </colors> </tomato> <eggplant id="002"> <name>Eggplant</name> <colors> <color>purple</color> </colors> </eggplant> </vegetables>
Now, write code that does each of the following tasks:
Extract the "id" attribute of the eggplant element.
Extract the text (character data) in the eggplant/name element.
Add a "<recipe>" element in the eggplant with attribute "category" and value "main course" and with character data "ratatouille", that is:
<recipe category="main course">ratatouille</recipe>
Add a node to the XML tree, for example, add an additional vegetable.. (1) From the XML tree producea string. (2) Then write the string representation out to disk.
Expand the Vehicle/Truck example. Add a Automobile class. Give one of your subclasses a method that overrides and calls a method in its superclass.
Implement a tree data structure in which each node has a value and any number of child nodes. Your Node class should implement the following methods:
Write a function that walks the tree and "shows" each node.
Delegation -- (1) Define an interface using a class containing empty methods. (2) Define two classes that implement this interface. (3) Implement a class whose constructor takes an object that satisfies the interface and delegates operations to it.
Modify your solution to the word count exercise so that it can take a command line argument that is either a path on the file system or a URL, for example:
file:///path/to/file.txt
or:
http://en.wikipedia.org/wiki/Python_(programming_language)
Modify the solution to the previous exercise so that it responds to the following command line options:
Implement a class hierarchy different from but similar to the Vehicle/Truck class hierarchy. For example:


Official Statistics
Children referred to and assessed by children's social services for the financial year ending March 2010.
Ref: OSR28/2010 PDF , 200KB , 26 pages
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
MS Excel Spreadsheet , 1.15MB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
ZIP , 53.2KB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
Plain text , 742Bytes
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
Reference Id: OSR28/2010
Publication Type: Statistical Release
Publication data: Underlying Statistical data
Local Authority data: LA data
Region: England
Release Date: 30 November 2010
Coverage status: Final
Publication Status: Published
It includes information on the characteristics of children in need and information on children who were the subject of a child protection plan for year ending March 2010.
This updates provisional information published in OSR24/2010 on 30 September 2010, as well as providing breakdowns of figures by new characteristics data for age, gender, ethnicity, disability, primary need, category of abuse, and reason for closure.
The key points from this release are:
As part of a Government drive for data transparency in official publications we have included supporting data for this publication as an additional table. The underlying data for this publication was made available on 17 December 2010.
Revision - The national figures in table 12 for the number of core assessments, the number of core assessments completed within 35 days, and the percentage of core assessments completed with 35 days were corrected in April 2011. There have been no changes to the local authority level data.
Graham Knox
01325 735413
Published: 30 November 2010


Oh fair and wondrous Github
thou art simple in thy complexity, and thine light illuminates the darkness. Once mine computer connected and humble account created, my eyes are opened; my productivity multiplied. My repositories are yours my love! My hopes and dreams with them! The only thing I possess worthy of thee, worth more than my very soul. But I would push my soul to thee if thine hast ever demanded it of me! Oh Github, thine art perfection. I bless each day I pull my thoughts and data from you. Each bit, resonating with the change others may have brought into my life and my webpage. And yet, you do ever more for mineself. Bestowing upon me a platform from which to reveal the outpouring of my soul. My clear syntax and crafty JavaScript bettered by your very existence.


Hey I am a Software Developer and a research analyst working for AI Probably.
I love to explore and learn new technologies, and my passion for technologies
motivate me to work hard each and every day.
For the time being i am working on building websites and helping people build
a portfolio of your own.
Working as a research analyst where my day to day responsibilities include coming up with content
for different advancement in our tech world, along with building education modules for all the young
future minds of the world.
Additionally I make some cool PROJECTS
for anyone looking to find a new interest in programming.
Worked on building automated projects, search engine optimization, consulting on stack choices of the company, worked as an end to end website developer.
Key Courses
Key Highlights
Key Highlights
We made a mobile number tracker using the OpencageGeocode API that showed the current location, along with carrier and the timezone of the phone number
View ProjectMade a GUI Based Youtube video Downloader using Tkinter and Pytube. This enables the user to take the URL from youtube and download the associated videos directly into the assigned directory
View Project


Monitor
Dashboard
Admin
Log out
Monitor
Dashboard
Admin
Log out
Device
Device ID:
{deviceInfo.id}
Model:
{deviceInfo.model}
Manufacturer:
{deviceInfo.manufacturer}
Operating System:
{deviceInfo.os}
My Details
User ID:
{userInfo.id}
Email:
{userInfo.email}
Edit
Battery
Download JSON
Some other stuff
Some other graph...


UC Davis Employment
University of California, Davis
[[item.title]]
Department:
[[item.department]]
No position information specified
Start Date:
[[item.startDate]]
[[item.department]]
Start Date:
[[item.startDate]]
Remove all from iD
Removing from record...
Cancel
Edit


| 1 | package fr.sii.ogham.assertion.sms; | |
| 2 | ||
| 3 | import java.util.Collection; | |
| 4 | import java.util.List; | |
| 5 | ||
| 6 | import org.hamcrest.Matcher; | |
| 7 | import org.hamcrest.MatcherAssert; | |
| 8 | ||
| 9 | import fr.sii.ogham.helper.sms.bean.SubmitSm; | |
| 10 | ||
| 11 | /** | |
| 12 | * Make assertions on received messages | |
| 13 | * | |
| 14 | * @author Aurélien Baudet | |
| 15 | * | |
| 16 | * @param <S> | |
| 17 | * the type of the {@link SubmitSm} to make assertions on | |
| 18 | */ | |
| 19 | public class ReceivedSmsAssert<S extends SubmitSm> { | |
| 20 | /** | |
| 21 | * List of received messages | |
| 22 | */ | |
| 23 | private final List<S> actual; | |
| 24 | ||
| 25 | /** | |
| 26 | * Initializes with the list of received messages | |
| 27 | * | |
| 28 | * @param actual | |
| 29 | * received messages | |
| 30 | */ | |
| 31 | public ReceivedSmsAssert(List<S> actual) { | |
| 32 | this.actual = actual; | |
| 33 | } | |
| 34 | ||
| 35 | /** | |
| 36 | * Access fluent API to write assertions on a particular received message. | |
| 37 | * | |
| 38 | * If you want to make assertions on several messages, you may prefer using: | |
| 39 | * | |
| 40 | * <pre> | |
| 41 | * .receivedMessages().message(0) | |
| 42 | * .content(is("foobar")) | |
| 43 | * .and() | |
| 44 | * .message(1) | |
| 45 | * .content(is("bar")) | |
| 46 | * </pre> | |
| 47 | * | |
| 48 | * @param index | |
| 49 | * the index of the received message | |
| 50 | * @return the fluent API for assertions on the particular message | |
| 51 | */ | |
| 52 | public SmsAssert<ReceivedSmsAssert<S>, S> receivedMessage(int index) { | |
| 53 |
1
1. receivedMessage : All method instructions replaced by: return null; → NO_COVERAGE |
return new SmsAssert<>(actual.get(index), this); |
| 54 | } | |
| 55 | ||
| 56 | /** | |
| 57 | * Fluent API to write assertions on received messages. | |
| 58 | * | |
| 59 | * You can write assertions for all messages or a particular message. | |
| 60 | * | |
| 61 | * For example, for writing assertion on a single message, you can write: | |
| 62 | * | |
| 63 | * <pre> | |
| 64 | * .receivedMessages().message(0) | |
| 65 | * .content(is("foobar")) | |
| 66 | * </pre> | |
| 67 | * | |
| 68 | * For writing assertions that are applied on every received message, you | |
| 69 | * can write: | |
| 70 | * | |
| 71 | * <pre> | |
| 72 | * .receivedMessages().every() | |
| 73 | * .content(is("foobar")) | |
| 74 | * </pre> | |
| 75 | * | |
| 76 | * Will check that content of every message is "foobar". | |
| 77 | * | |
| 78 | * <p> | |
| 79 | * You can use this method to factorize several assertions on a message and | |
| 80 | * then make dedicated assertions on some messages: | |
| 81 | * | |
| 82 | * <pre> | |
| 83 | * .receivedMessages().every() | |
| 84 | * .content(is("foobar")) | |
| 85 | * .and() | |
| 86 | * .message(0) | |
| 87 | * .from().number(is("+33102030405")) | |
| 88 | * </pre> | |
| 89 | * | |
| 90 | * Will check that content of every message is "foobar" and that phone | |
| 91 | * nuumber of sender of first received message is "+33102030405". | |
| 92 | * | |
| 93 | * @return the fluent API for assertions on messages | |
| 94 | */ | |
| 95 | public SmsListAssert<ReceivedSmsAssert<S>, S> receivedMessages() { | |
| 96 |
3
1. receivedMessages : All method instructions replaced by: return null; → NO_COVERAGE 2. receivedMessages : All method instructions replaced by: return null; → TIMED_OUT 3. receivedMessages : All method instructions replaced by: return null; → KILLED |
return new SmsListAssert<>(actual, this); |
| 97 | } | |
| 98 | ||
| 99 | /** | |
| 100 | * Fluent API to write assertions on received messages. | |
| 101 | * | |
| 102 | * Make an assertion on received messages list (JavaMail message). | |
| 103 | * | |
| 104 | * For example, for writing assertion on a single message, you can write: | |
| 105 | * | |
| 106 | * <pre> | |
| 107 | * .receivedMessages(is(Matchers.<Message>empty())) | |
| 108 | * </pre> | |
| 109 | * | |
| 110 | * @param matcher | |
| 111 | * the assertion to apply on message list | |
| 112 | * @return the fluent API for assertions on messages | |
| 113 | */ | |
| 114 | public SmsListAssert<ReceivedSmsAssert<S>, S> receivedMessages(Matcher<Collection<? extends S>> matcher) { | |
| 115 |
1
1. receivedMessages : All method instructions replaced by: return null; → NO_COVERAGE |
MatcherAssert.assertThat(actual, matcher); |
| 116 | return receivedMessages(); | |
| 117 | } | |
| 118 | ||
| 119 | } | |
Mutations | ||
| 53 |
1.1 |
|
| 96 |
1.1 2.2 3.3 |
|
| 115 |
1.1 |


About DEVDAY 2015
The DevIsland community is organizing DEVDAY again, an event for software developers.
In its sixth edition, the DEVDAY 2015 will bring together approximately 450 developers.
We will have professionals recognized by the national market that will share their knowledge in 20 lectures that make up the event agenda.
No developer can lose this event!
Code of Conduct.
The event in social networks