05:32.11 |
*** join/#brlcad elite01
(n=omg@unaffiliated/elite01) |
06:24.26 |
*** join/#brlcad PrezKennnedy
(i=Matthew@whitecalf.net) |
08:20.48 |
*** join/#brlcad clock_
(n=clock@84-72-91-240.dclient.hispeed.ch) |
09:34.44 |
*** join/#brlcad Bariton
(n=Bary@p5B14FC70.dip.t-dialin.net) |
11:19.44 |
*** join/#brlcad mafm
(n=mafm@elnet-111.lip.pt) |
11:20.42 |
mafm |
hai pplz |
12:00.43 |
AFK-claymore |
Mornin! |
12:09.46 |
claymore |
has a titan to play with
now... MUWAHAHAHAHAHA. |
12:13.59 |
*** join/#brlcad Bariton
(n=Bary@p5B14FC70.dip.t-dialin.net) |
12:14.21 |
*** join/#brlcad Ralith
(n=ralith@216.162.199.202) |
12:56.08 |
*** join/#brlcad geocalc
(n=geocalc@91-171-212-221.rev.libertysurf.net) |
13:41.32 |
claymore |
brlcad: You in today? |
13:43.41 |
CIA-24 |
BRL-CAD: 03bob1961 * r33106
10/brlcad/trunk/src/conv/bot_dump.c: Print out what's in the result
string. |
14:47.55 |
brlcad |
claymore: I take it you see your
note |
14:48.14 |
claymore |
From Ed? |
14:48.18 |
brlcad |
yea |
14:48.29 |
brlcad |
or you asking for some other reason? |
14:48.35 |
claymore |
Yea, I was in for a bit on Friday. Took care
of all that. |
14:49.05 |
claymore |
General BRLCAD coding questions ;) reading
through libged, trying to get a handle on things. |
14:49.36 |
brlcad |
well ask away! :) |
14:49.43 |
claymore |
I have a good class layout for the GS, just
need to start getting the specifics worked out now. |
14:50.09 |
``Erik_ |
the blue pill |
14:50.42 |
claymore |
but, I need to see how deep the rabit hole
goes. |
14:50.43 |
``Erik_ |
if y ou just have the descriptor and want the
handle, use fdopen() :D *duck* |
14:51.49 |
claymore |
get his 11 peice set and
performs a rimshot... badoom ching. |
14:57.10 |
``Erik_ |
interesting, http://pastebin.bzflag.bz/d6384593 |
15:11.52 |
*** join/#brlcad elmom
(n=elmom@hoasnet-ff04dd00-187.dhcp.inet.fi) |
15:11.54 |
*** join/#brlcad ``Erik_
(i=erik@c-68-54-174-162.hsd1.md.comcast.net) [NETSPLIT
VICTIM] |
15:14.15 |
louipc |
yeah tkhtml3 isn't installing in the brlcad
directory |
15:32.19 |
*** join/#brlcad elite01
(n=omg@unaffiliated/elite01) |
15:35.26 |
*** join/#brlcad ``Erik_
(i=erik@c-68-54-174-162.hsd1.md.comcast.net) [NETSPLIT
VICTIM] |
16:00.31 |
CIA-24 |
BRL-CAD: 03bob1961 * r33107 10/brlcad/trunk/
(19 files in 9 dirs): Moved g_qa functionality to libged. Port g_qa
to windows. |
16:22.58 |
clock_ |
"you'll have enough sleep in the grave" -
brlcad is a tough guy |
16:23.08 |
clock_ |
likes this reckless
aggressive creativity |
16:28.46 |
brlcad |
doesn't think it's
reckless |
16:29.40 |
clock_ |
Recklessness (psychology), a state of mind in
which a persons acts without caring what the consequences may
be |
16:29.45 |
clock_ |
Doesn't apply for this case>? |
16:35.23 |
claymore |
brlcad: When it comes to the Geometry
Service: What had you invisioned for the in-memory representation
of geometry? Using the existing c structs? |
16:35.55 |
claymore |
If so, would the svn store then be full of
mini-.g files? |
16:35.57 |
brlcad |
claymore: yes, librt already manages
geometry |
16:36.43 |
brlcad |
there's some value wrapping them in objects,
but still the actual geometry still being via librt |
16:36.47 |
claymore |
I am trying to find the line between librt and
a GeometryManager/CachManager is.... |
16:37.06 |
claymore |
CacheManager even. |
16:39.18 |
brlcad |
yeah, svn store consists of .g files broken
out |
16:40.00 |
claymore |
Now, is that also a long term solution? Or
would we want a slightly more efficient binary format for the
geometry fragments in the svn store? |
16:40.58 |
brlcad |
for now it is, our format is actually really
compact and efficient as it is |
16:41.30 |
brlcad |
doesn't get much more streamlined than a
straight-up binary serialization of the exact data |
16:41.49 |
claymore |
Right, understood. I was just wondering how
much could be gained by slimming down the header/footer for the
future bin format... thats all ;) |
16:42.28 |
brlcad |
actually for long-term, there would likely be
more benefits by using a more flexible non-binary backend store ..
but that's a long ways out and would require a lot of
testing |
16:42.47 |
brlcad |
current header/footer is like 100
*bytes* |
16:43.14 |
claymore |
pure wastefulness. tsk tsk. A byte is a byte
no matter how small. ;) |
16:43.15 |
brlcad |
add a text attribute on an object and you use
up more space than that |
16:44.05 |
clock_ |
PDP had like 9 bit bytes didn't |
16:45.23 |
claymore |
Different question then: Since I am
relatively unfamiliar with librt, does librt contain the list/tree
of db_internals or is that managed external to librt? |
16:47.54 |
brlcad |
I'm expecting our average "object" size to be
around 1k for implicits, 10k for spline breps, and 100k for
polygonal breps (includes attribute and revision changeset
data) |
16:48.38 |
brlcad |
so the .1k wrapper isn't going to amount to
much, less than 99% of the data being stored -- and if it is a
problem, it can of course be looked into then |
16:54.59 |
claymore |
Different question then: Since I am
relatively unfamiliar with librt, does librt contain the list/tree
of db_internals or is that managed external to librt? |
16:57.38 |
brlcad |
no, it provides it -- when you open a .g file,
you get back a "database instance" |
16:57.44 |
claymore |
1k for implicits.... really? Are you talking
on average? Seems to me that a sphere would be much smaller than
1k |
16:58.14 |
brlcad |
that dbi gives you a handle on a variety of
routines, one being a "directory" that you can lookup |
16:58.36 |
claymore |
thinks. |
16:59.16 |
claymore |
I dunno how well that is going to translate to
a the way I am envisioning the 'shared geometry'
concepts... |
17:00.02 |
claymore |
.... perhaps the cachemanager will simply be
holding an array/list/set of db instances? |
17:01.31 |
brlcad |
hm, it could but I didn't envision the GS
talking much to librt directly |
17:01.48 |
brlcad |
almost entirely via libged and (even moreso)
the GE |
17:02.36 |
claymore |
My current design is that the GE wraps up all
of libged functionality and the GE also contains the
GeometryManager |
17:03.08 |
starseeker |
``Erik: You're specifying your tcl and tk in
/usr/local - tkhtml3 is a tcl/tk package, so it's going to try to
install in the "correct" place for tcl/tk packages on that system -
I'm assuming that's the TEA behavior |
17:03.17 |
claymore |
the GeometryManager is what is doing all the
caching and IO of the geomtery, regardless of its source or
destination. |
17:03.34 |
starseeker |
as I understand it, that behavior is necessary
for package require ... to function correctly |
17:03.35 |
brlcad |
that sounds reasonable |
17:04.51 |
claymore |
brlcad: now, besides the fact that we will be
using libged, we will still need a way to store (cache) and
correlate the bits of geometry so as to provide multi-user access.
So, I am stuck on what data struct the GeometryManager (GeoMan)
will be caching... db internals? |
17:05.52 |
brlcad |
Geometry objects -- enter data containers that
GE needs to have |
17:05.59 |
starseeker |
growls at his
email |
17:06.27 |
brlcad |
those geometry objects utilize db
internals |
17:07.25 |
claymore |
starseeker: I think i figured out what was
wrong with the way we were doing the email thing. Swing by and I
think we can make it work! |
17:08.22 |
claymore |
brlcad: So a GeometryObject will: a) replace
everthing a db internal has/can do, or b) have a db internal as an
aggregate and just add some extra fields? |
17:08.42 |
brlcad |
some mix of b) and c) |
17:08.44 |
starseeker |
claymore: thanks! on my way |
17:09.19 |
brlcad |
it has a handle on the geometry via librt
representation |
17:09.41 |
brlcad |
we might add extra fields, but all I/O should
still be going through librt so I'm not sure they'd be
extra |
17:10.40 |
brlcad |
two things that are useful to read up on are
what's already in rt^3 for the geometry engine that daniel's worked
on as well as what is in the jbrlcad module and how it structures
object management |
17:11.12 |
*** join/#brlcad geocalc
(n=geocalc@91-171-212-221.rev.libertysurf.net) |
17:11.17 |
brlcad |
I've not been able to review daniel's latest
work in detail, but what I've seen quickly looking has been
good |
17:11.39 |
brlcad |
I have read john's jbrlcad layout in detail
and *really* like it |
17:11.52 |
brlcad |
it's an outstanding OO organization of
librt |
17:12.02 |
brlcad |
just incomplete |
17:12.12 |
brlcad |
and in the wrong language :) |
17:18.37 |
claymore |
brlcad: Okay, I looked at jbrlcad about a
year ago, but I need to refresh my memory. I'll look at what
daniel has done. |
17:19.48 |
brlcad |
from your perspective, I think the take-home
point is just going to be that there's going to be "some" object
that represents/links/is geometry and it is that object that you
could cache |
17:19.58 |
claymore |
also, we will need a way to keep all the
geomitry bits unique, so I was thinking of using a long for the
OID... which we would have to piggyback as an attribute for
now. |
17:20.43 |
brlcad |
yeah, something like that |
17:20.43 |
claymore |
understood, just trying to find the logical
point in which to plan to so I am not re-creating work :/ |
17:20.52 |
brlcad |
though longs aren't probably going to be long
enough for a UUID |
17:21.26 |
brlcad |
and UUID's are possibly/probably the way to go
-- not that they'd get exposed at the GS level though |
17:21.52 |
claymore |
... why not at the GS level? |
17:22.19 |
claymore |
oh, when I say long, I am referring to an
int64 (sorry) |
17:23.55 |
claymore |
I am thinking that 18,446,744,073,709,551,615
unique peices of geometry should be enough.... don't you? |
17:24.32 |
brlcad |
one of the problems i'm hoping to resolve with
the new geometry interfaces is having a unified handle system
without having the problems of id->name mappings |
17:25.07 |
brlcad |
the difference between uuid's and urls and
what they imply on referencing as a system of content
management |
17:26.22 |
claymore |
not sure what you are trying to say besides:
each geometry bit needs to be able to be universally and uniquely
identified.... |
17:26.52 |
brlcad |
claymore: perhaps, but UUID's are 128-bit --
even less chance for collision and can be used as auto-generated
hashes |
17:27.16 |
brlcad |
claymore: yeah, I'm saying that -- but there
are ways you can do that |
17:27.28 |
brlcad |
take for example how regions are presently
identified |
17:27.45 |
brlcad |
there is an integer that is attached to an
object |
17:28.14 |
claymore |
What did you have in mind for the uuid
control? Centralized worldwide server? or will the UUID's only be
Unique and Universal inside the bounds of the an SVN
store? |
17:28.16 |
brlcad |
that integer is then reported by our engine
and referenced by the analysis codes to identify objects |
17:29.29 |
claymore |
stares in horror at his use
of ingrish. |
17:29.31 |
brlcad |
don't need/want a centralized server for
uuid's -- there are plenty of algorithms that allow for distributed
ID generation |
17:31.31 |
brlcad |
even if you used purely random generation, the
chance for collision is something on the order of 2^122
probability |
17:31.39 |
claymore |
Okay, back to my question of "why wouldn't the
uuid be exposed at the GS level?" I don't see how it couldn't be
exposed. If we are going to not want any ID<->Name mappings,
then aren't we going to use the uuid as the sole means of object
Lookup and Identification? |
17:31.56 |
claymore |
those are good odds ;) |
17:32.20 |
brlcad |
pretty damn good odds, and if there is a
conflict, you'd probably know about it :) |
17:32.26 |
brlcad |
and you could just ask for another |
17:32.54 |
brlcad |
or you'd be just as likely to never run into
the duplicate |
17:33.33 |
brlcad |
right, we'd either have to solely use UUID's
as the sole means (when just isn't user friendly) or use the name
as the sole means (which I'm much more inclined to sort
out) |
17:34.27 |
brlcad |
sorting out a global resource identifier that
localizes and can map 1-1 with a UUID on the backend (but only on
the backend, e.g. svn-level) |
17:34.51 |
claymore |
Why not have the code use the UUID as the sole
means while any User Interactive aspect just calls the
MyGeoObject.getName() function and displays the string? |
17:35.24 |
brlcad |
that's entirely possible .. just less than
ideal |
17:35.35 |
brlcad |
i mean it's the same problem of region idents
now |
17:35.40 |
brlcad |
they were meant to be used that way |
17:35.43 |
brlcad |
but they're not |
17:35.59 |
claymore |
But region id's are not unique.... |
17:36.07 |
brlcad |
they crept into common use through most tools,
exposed everywhere through the ui's |
17:36.08 |
claymore |
so, I think thats a different case. |
17:36.55 |
brlcad |
it is a different case, but the fact that
there's a non 1-1 mapping is part of the problem |
17:37.40 |
claymore |
In existing BRLCAD databases, the string Name
is unique, but the Region ID isn't. I am proposing that each bit
of geometry has a UUID as its 'global' identifier and the Name is
just an attribute to be accessed whenever needed. |
17:37.50 |
brlcad |
if the 1-1 problem is taken care of, then
there's a lot less incentive for ui creeping |
17:38.55 |
claymore |
just to understand: the 1-1 problem is: We
can have to things named 'Bolt' but with different UUIDs. |
17:39.10 |
brlcad |
right |
17:39.53 |
brlcad |
and I get what you're suggesting -- that's
certainly doable, but it doesn't address the problem and has a lot
to be desired for data management |
17:40.05 |
claymore |
Further: From a user perspective, the only
way to ditinguish between both 'Bolt's is to look at the UUID...
and thats the 'creep' you are speaking of? |
17:40.15 |
brlcad |
all I'm suggesting that'd be different,
actually is a name that includes context so that the names are also
unique |
17:40.41 |
brlcad |
right, that'd be one way |
17:40.48 |
brlcad |
there are other ways for that uuid to creep
in |
17:41.28 |
brlcad |
but then if you can make the "name" actually
include context (think URL context or namespace context in code)
then you have a 1-1 mapping |
17:41.52 |
claymore |
Hrm, what about this: |
17:41.54 |
brlcad |
and possible don't even need the uuid, but
it's a really efficient hash |
17:42.53 |
claymore |
Each and every peice of geometry will exist
stand alone, but sorted into categories and subcategories. Think
of a large parts wherehouse. |
17:44.47 |
claymore |
THe next werehouse over contains lots of
'parts lists' that refer to the individual parts in the first
werehouse |
17:45.37 |
claymore |
so, a 'bolt' isnt a bolt, but rather:
'/hardware/faseners/9.16th/3in/aluminum/bolt.g' |
17:46.08 |
brlcad |
that's exactly the url context I was referring
to :) |
17:46.27 |
claymore |
well then.... GOOD IDEA ;) |
17:46.48 |
brlcad |
there are still problems to be solved with
that, though |
17:47.02 |
claymore |
doesn't like the amount of
effort it will take to populate the initial parts werehouse
:/ |
17:47.02 |
brlcad |
uniqueness guarantees are a problem, but
potentially minimized |
17:47.32 |
claymore |
problems like? |
17:50.23 |
brlcad |
well that works well for stuff that gets
organized as such down the road, but for uniqueness you still want
to be able to distinguish between my bolt and your bolt |
17:51.01 |
brlcad |
or even at a very basic level -- I make a
sphere, you make a sphere -- how can I refer to one vs the other
(and potentially still call them both 'sph') |
17:52.10 |
brlcad |
that's where the rest of a URL comes into the
picture, there's an implicit username, working host, and port that
are part of every url |
17:52.16 |
claymore |
but if each object that is checked into the
parts werehouse is issued a UUID, then shouldn't that take care of
the 'my /hardware/faseners/9.16th/3in/aluminum/bolt.g' vs 'your
/hardware/faseners/9.16th/3in/aluminum/bolt.g' ? |
17:53.04 |
brlcad |
that would, but then it's not 1-1 and you are
back to the same problem of having an insufficient context to
distinguish objects |
17:55.49 |
claymore |
So, to capture yor thoughts, you are ideally
thinking that a GeoObject will have a UUID for speed of lookup AND
a UUname for easy human identification? |
17:55.51 |
brlcad |
it's not a huge issue, the problem has been
pretty much solved for distributed cms and distributed
scm's |
17:56.12 |
brlcad |
yeah, basically |
17:57.04 |
claymore |
Just to re-inforce my
understanding.... |
17:57.56 |
brlcad |
even if only a portion of the UUname is
displayed most of the time (e.g. "bolt" instead of
"cad://loman@fe80::21b:63ff:fe03:3cdf%en1/hardware/faseners/9.16th/3in/aluminum/bolt") |
17:59.25 |
claymore |
Okay, I understand that. But how/where will
the svn side look when its all checked in? Where will the username
and host be stored? |
18:00.25 |
claymore |
in a
/hardware/faseners/9.16th/3in/aluminum/versions.file' ? |
18:05.52 |
brlcad |
that's all TBD, but the UUID could be useful
there |
18:06.13 |
brlcad |
e.g. using a non-hierarchical or simple
two-level hierarchy instead of having the entire hierarchy on disk
as a hierarchy (because it's technically not a hierarchy, it's a
graph) |
18:07.57 |
brlcad |
I think that'll be more apparent once we start
hooking in the svn libs |
18:09.15 |
claymore |
Hrm, okay. Got time for more Brain
picking? |
18:10.50 |
brlcad |
is just coding, been coding
non-stop since friday |
18:11.16 |
brlcad |
unfortunately in a non-compile state that
entire time, or there would have been dozens of commits .. but just
about to start the flow back up :) |
18:12.20 |
claymore |
far be it for me to slow your roll, but I'll
keep firing Q's then ;) |
18:12.55 |
brlcad |
sings, "it's a small world"
..
http://www.flickr.com/photos/36383814@N00/2989996039/sizes/o/in/pool-930035@N21/ |
18:15.37 |
claymore |
I see two troublemakers.... |
18:16.20 |
louipc |
wow that's trippy |
18:16.58 |
claymore |
actually feels like throwing
up now. |
18:18.02 |
claymore |
not enough chicks imo. |
18:18.11 |
brlcad |
indeed |
18:18.16 |
brlcad |
http://www.flickr.com/photos/halostatue/2996087302/sizes/o/in/pool-930035@N21/ |
18:18.18 |
claymore |
wonders when he gets to go to
a conference..... |
18:18.47 |
brlcad |
http://www.flickr.com/photos/halostatue/2996023060/sizes/o/in/pool-930035@N21/ |
18:20.18 |
claymore |
well hell, did you all do anything else
besides take pictures?! |
18:22.01 |
claymore |
brlcad: where was that held? |
18:24.21 |
brlcad |
at the googleplex |
18:24.32 |
brlcad |
mountain view, CA |
18:24.53 |
brlcad |
there are a bunch of other pictures on flickr
from others |
18:25.30 |
brlcad |
http://www.flickr.com/photos/tags/googlesummerofcode/ |
18:26.28 |
brlcad |
there are other better tags, but that's a
jumping point |
18:28.17 |
brlcad |
http://www.flickr.com/groups/930035@N21/ |
18:29.05 |
claymore |
Looks like fun. Big of a sausage fest, but
still fun :P |
18:29.16 |
claymore |
big = bit. |
18:29.35 |
brlcad |
yeah, huge sausage fest |
18:30.39 |
brlcad |
actually above industry average .. I think it
was quoted as around 6% at the summit, but average for OSS is
something like 2.5% |
18:31.27 |
louipc |
more guys into open source? |
18:31.40 |
brlcad |
yeah, a lot more |
18:31.55 |
brlcad |
average for CS is in the low teens
iirc |
18:37.38 |
*** join/#brlcad MB3
(i=Matthew@whitecalf.net) |
18:37.42 |
claymore |
brlcad: Back to the GS: To simplify things,
would making the .g file name the same as the object in it be a
smart thing to do? aka Bolt.g has /Bolt.s inside it? |
18:39.05 |
``Erik_ |
*burp* |
18:41.37 |
brlcad |
claymore: hm, why does that matter?
:) |
18:42.19 |
claymore |
You're right. If we are going to do it
stupid, we're going to do it MY WAY. MUWAHAHAHA. |
18:43.03 |
claymore |
Also, how are we going to represent
combinations and regions? Text files? |
18:44.01 |
brlcad |
objects like all others, they way they
presently are |
18:44.36 |
claymore |
I ment how in the svn repository? |
18:44.44 |
brlcad |
does too :) |
18:45.26 |
brlcad |
they have most of the same requirements as any
other objects |
18:45.37 |
claymore |
so, a region will be its own .g, with no
geometry in it? If thats the case, how do we link the Region
members to the geometry, via the UUID or the UUName? |
18:47.03 |
brlcad |
it is "geometry", just potentially without an
evaluated form (or maybe it does exist) |
18:47.56 |
brlcad |
they way it presently works is via locally
scoped (file-scoped) name references -- that would have to change
to a UUName |
18:48.45 |
claymore |
Will the current character-rules allow us to
use all the characters in the 'url' in an BRL-CAD object
name? |
18:50.09 |
brlcad |
oh, there may be some things that need slight
changing, but there aren't any at the moment that jump out as being
a problem |
18:51.30 |
claymore |
Okay. Now when it comes to the svn
'heirarchy' were you saying that there shouldn't be a heirarchy? I
got confused with what you were saying. |
18:52.12 |
brlcad |
they get stored as plan c-strings, so pretty
much anything goes at the storage level -- it'd only be places in
the processing that might need to be changed |
18:52.28 |
*** join/#brlcad elite01
(n=omg@unaffiliated/elite01) |
18:52.50 |
brlcad |
there isn't exactly a geoemtry hierarchy, so
representing geometry hierarchically in the revision store is
problematic |
18:53.28 |
brlcad |
if we required a filestore that supported hard
links of directories, that might be possible, or if we stash some
form of soft links it might work |
18:53.47 |
claymore |
soft link? |
18:53.54 |
brlcad |
we talk about it as a hierarchy, but it's
really an acyclic graph |
18:55.21 |
claymore |
'what' is a dag? |
18:55.26 |
brlcad |
soft links are probably the way to go, just
because it'll be really cool to check out entire subtree categories
of geometry .. but it'll be tricky |
18:55.47 |
brlcad |
hm? |
18:56.00 |
brlcad |
directed acyclic graph .. |
18:56.09 |
claymore |
thinking heirarchially (is that a
word?): |
18:56.23 |
brlcad |
http://en.wikipedia.org/wiki/Directed_acyclic_graph |
18:56.32 |
claymore |
I am seeing two top level groups: /parts and
/models |
18:56.59 |
claymore |
inside parts are mere organizational
subdirectories... as many as are needed. |
18:57.16 |
claymore |
at the bottom level of the /parts 'tree' are
the actual .g files. |
18:57.29 |
claymore |
and all the vairous versions of individual .g
files. |
18:57.37 |
brlcad |
the line between parts and models is really
context-driven |
18:57.44 |
claymore |
exactly. |
18:57.59 |
mafm |
I go home, take care |
18:58.56 |
brlcad |
for one domain, it's one level, for another
it's entirely different -- so I'm really not inclined to say "that
line is here" in the geometry or even to prescribe an organization
-- that can be up to users to a large extent |
18:59.26 |
claymore |
now inside '/models' are all the subdirectorys
to organize however the 'company in question' wants to organize
it. |
18:59.28 |
brlcad |
from a geometry management perspective, the
issues worth tracking are when something goes from being a shape to
representing something solid |
18:59.48 |
brlcad |
and whether the geometry is fully-resolved,
fully-constrained, etc |
19:01.44 |
claymore |
the problem is, I see a 'chicken or the egg'
scenario here. We can't fully abstract the data store methodolgy.
There has to be some standards set down. |
19:02.19 |
brlcad |
"We can't fully abstract the data store
methodolgy" .. means what? |
19:02.29 |
brlcad |
we're using a fully abstracted data store for
the revision control |
19:02.56 |
brlcad |
so by default that would extend to us, we only
constrain it on our end via what we support or don't
support |
19:03.05 |
claymore |
is
thinking... |
19:04.48 |
claymore |
Okay, Understanding that SVN will do whatever
we want... |
19:05.24 |
claymore |
and that we intend to store Combination.g's
Region.g's and Solid.g's |
19:05.46 |
claymore |
in what ever heirarchy we want. |
19:05.48 |
brlcad |
don't think of them in that regard -- they're
just "objects" |
19:05.55 |
brlcad |
we have geometry objects and non-geometry
objects |
19:06.30 |
brlcad |
those objects become files (or maybe
directories) in the revision store |
19:07.14 |
brlcad |
but yeah, any hierarchy or non-hierarhy we
want -- I mean we could store absolutely everything in one massive
.g file, all revisions, all data, and that would actually
work |
19:07.29 |
brlcad |
it's just unclean and would be ill-constructed
(particularly for revision tracking) |
19:07.42 |
claymore |
BrlcadObj is the abstract then. GeoObj isa
BrlcadObj, NonGeoObj isa BrlcadObj, Comb isa GeoObj, etc,
etc... |
19:08.35 |
brlcad |
s/Brlcad/Database/ I believe is how it's been
referred to thusfar |
19:08.54 |
brlcad |
but yeah, sorta |
19:09.12 |
brlcad |
that's where a lot of that is already sorted
out (or at least should be sorted out) on the GE side of
things |
19:09.13 |
claymore |
' s/Brlcad/Database/' = ??? |
19:09.31 |
brlcad |
ah, s/// is a substitution pattern
:) |
19:09.42 |
brlcad |
substitute this for that |
19:10.03 |
claymore |
you just lost me. |
19:10.07 |
brlcad |
echo "substitute this for that" | sed
's/this/that/' |
19:10.12 |
brlcad |
substitute that for that |
19:10.31 |
claymore |
got that, just failing to see how it applied
:/ |
19:10.58 |
brlcad |
common ircism -- means referring to some
previous statement, apply the replacement |
19:11.20 |
``Erik_ |
vi ftw |
19:11.30 |
claymore |
is fixing the train of
thought derailment in is head.... one moment please
:) |
19:11.33 |
brlcad |
your statement in that case -- they've been
referred to as DatabaseObject's |
19:12.00 |
claymore |
who reffered to them as that? |
19:12.01 |
brlcad |
there's little value in using our name over
saying what we think it is |
19:12.10 |
brlcad |
librt refers to them as that |
19:12.47 |
claymore |
ah, okay. |
19:12.56 |
brlcad |
jbrlcad does as well, don't recall whether
daniel preserved that |
19:13.05 |
claymore |
where is daniels work? |
19:13.56 |
brlcad |
just saying from a nomenclature perspective,
really should avoid pronouns in the name where they describe a more
general concept |
19:14.42 |
brlcad |
that's a general point of rule for any system
really, they usually end up being turds or opaque objects an
external viewer |
19:14.47 |
``Erik_ |
class Thing :: Stuff { |
19:14.54 |
brlcad |
e.g. our few "MUVES" routines in librt.. very
turdish |
19:15.21 |
brlcad |
there is an underlying concept that they
represent, that should have been used to name them instead of "the
way those guys do it" |
19:16.57 |
brlcad |
thinks he should push a
tarball before merging his changes |
19:17.08 |
claymore |
okay, back on track: Pertaining to the svn
store, if all the combination and region objects contain references
to other UUNames (aka fully qualified paths) then is it still a
dag? |
19:17.28 |
claymore |
reword: |
19:17.39 |
claymore |
okay, back on track: Pertaining to the svn
store, if all the combination and region objects contain references
to other objects via UUNames (aka fully qualified paths) then is it
still a dag? |
19:18.29 |
brlcad |
yep, it still represents the same
thing |
19:19.34 |
claymore |
recap: Svn lookup should be via the UUName
but inmemory referencing should be via the UUID for
speed? |
19:19.56 |
brlcad |
CSG construction is (usually) inherintly
described by a DAG, when can be restructured or displayed as a
tree, even a binary tree -- but they're non-unique nodes |
19:21.12 |
brlcad |
probably, but i don't think that's a decision
that has to be made now really |
19:21.19 |
brlcad |
just more designing it such that the user
never has to see/know that there's a UUID as a constraint |
19:22.02 |
brlcad |
solving local naming (i.e. UUnames) for the
usability aspects |
19:22.22 |
brlcad |
and then using UUIDs where it makes sense (for
performance or ease of management, etc) |
19:24.18 |
claymore |
where is Daniels GE work? |
19:24.29 |
brlcad |
he checked it in |
19:25.06 |
claymore |
brlcad, rt^3 ? |
19:25.11 |
brlcad |
yes |
19:27.26 |
claymore |
just not used to the layout of directories
yet... difficult to see where one aspect starts and the other
stops.... |
19:28.21 |
brlcad |
it's not cleaned up yet, it's rather lacking
unification |
19:29.53 |
brlcad |
it's common "nibm"itiz .. everyone that's been
committing has been ignoring what everyone else does |
19:36.50 |
claymore |
needs
caffine..... |
19:40.03 |
claymore |
In relation to the GS: Could you
compare/contrast a single proces, multithreaded approach to a
multiprocess approach? |
19:41.27 |
brlcad |
for what we're doing, the difference is pretty
insignficant (and if either is done well, it becomes even less
important) |
19:41.59 |
brlcad |
multiprocess is easier to stab up on *nix
platforms, but interprocess communication is a pita |
19:42.54 |
brlcad |
multithreaded is easier to intercommunicate if
needed and better for portability, but can quickly get mired in
deadlock and obscure bugs |
19:47.00 |
brlcad |
pervasive multithreaded is usually *very* hard
to do well and even harder to maintain, high-level parallelism is
usually a lot easier to manage over a long haul |
19:49.03 |
claymore |
if you had a choice, whats yoru
pick? |
19:55.03 |
brlcad |
high-level parallelism where it's useful,
where you have fairly independent tasks |
19:56.04 |
brlcad |
if it's high-level, it doesn't really matter
if you use threads or forked processes |
19:56.29 |
brlcad |
e.g. bu_parallel is meant for such a level of
parallelism during ray-tracing |
19:57.08 |
brlcad |
the backend implementation uses both threads
and procs, depending on the platform, performance, simplicity,
etc |
20:07.23 |
CIA-24 |
BRL-CAD: 03bob1961 * r33108
10/brlcad/trunk/src/libtclcad/ged_obj.c: Turn init routines for the
older tcl interfaces back on for now. |
20:20.58 |
claymore |
what is the advantage to having both db
internal and db external structs? |
20:22.37 |
CIA-24 |
BRL-CAD: 03brlcad * r33109
10/brlcad/trunk/src/libgcv/: ignore generated files/dirs |
20:23.55 |
brlcad |
external is fully serialized, 1-1 mapping with
disk data |
20:24.30 |
brlcad |
internal is uncracked just enough to serve as
an object directory so you can see what is on disk |
20:25.00 |
brlcad |
big impact on performance |
20:25.00 |
claymore |
so External is a 'bookmark' of
sorts? |
20:25.15 |
brlcad |
mm, doesn't sound right |
20:25.28 |
brlcad |
more of an opaque bag of bytes |
20:25.43 |
claymore |
can a dbExternal write to disk? |
20:26.05 |
brlcad |
i don't know what you're looking at |
20:26.25 |
brlcad |
in general for librt, though, a db_external is
(exactly) what is written to disk |
20:26.46 |
claymore |
I am correlating jBrlcad with brlcad |
20:27.25 |
brlcad |
it only correlates with (a small portion) of
librt, but okay :) |
20:27.53 |
claymore |
So in an OO setting, a DB_external *could*
write itself to disk, but in straight C, something writes the the
db_external to disk. |
20:28.08 |
brlcad |
right |
20:28.34 |
brlcad |
librt being procedural and data-driven, there
are structures and collections of routines that work on those
structures and go to/from other structures |
20:28.53 |
brlcad |
so there are a slew of routines that deal with
db_externals .. and another set that deal with
db_internals |
20:30.39 |
claymore |
I am just wondering, in an OO setting like
jBrlcad, wouldn't it make sense to combine db_internals and
db_externals? They are very close to being the same.... |
20:33.29 |
brlcad |
they're just as close to being the same on the
procedural side |
20:33.38 |
brlcad |
being OO doesn't change that one bit |
20:34.31 |
claymore |
okay.. regardless, wouldn't it simplifiy
things a bit? |
20:34.54 |
brlcad |
removing functionality usually does |
20:35.24 |
claymore |
how would merging the two structs remove
functionality? |
20:36.31 |
brlcad |
well, let me ask you -- why do you suppose the
effort would have been taken to separate them out in the first
place? |
20:38.05 |
claymore |
I don't know, thats why I am asking you. They
could have been seperate by design from the begining and have just
never been refactored due to time required... |
20:39.11 |
brlcad |
nah, v5 databases are the fifth major
refactoring of the geometry I/O layer |
20:39.44 |
brlcad |
the performance impact is really substantial,
you only unpack exactly what is needed when you need it |
20:40.40 |
claymore |
So, at any given time, there is a db_internal
instance and a db_external instance for every object in the
db? |
20:40.41 |
brlcad |
the alternate is usually unpacking everything
or storing data unserialized |
20:41.26 |
brlcad |
no, internals only if they're actively being
used for something |
20:42.04 |
claymore |
ah, now *that* makes sense. thanks
;) |
20:42.19 |
brlcad |
externals are the pointers to the disk
records |
20:42.52 |
brlcad |
and can actually be the exact bytes on disk,
you could memory map a file, point some pointers to the data, and
they'll be valid externals |
20:45.34 |
claymore |
has thought/learned himself
into a headache. Time for home. |
20:45.37 |
claymore |
lata |
20:45.42 |
brlcad |
cya! |
20:54.18 |
starseeker |
brlcad: Are you building a release
tarball? |
20:54.35 |
starseeker |
doesn't know if he should
commit more man1 pages right now... |
21:01.50 |
``Erik_ |
three hundred forty undecillion two hundred
eighty-two decillion three hundred sixty-six nonillion nine hundred
twenty octillion nine hundred thirty-eight septillion four hundred
sixty-three sextillion four hundred sixty-three quintillion three
hundred seventy-four quadrillion six hundred seven trillion four
hundred thirty-one billion seven hundred sixty-eight million two
hundred eleven thousand four hundred and fifty-six is
sufficient, |
21:02.17 |
starseeker |
sufficient what? hard disk space? |
21:02.30 |
``Erik_ |
unique pieces of geometry |
21:02.36 |
starseeker |
ah |
21:05.44 |
*** join/#brlcad clock_
(n=clock@77-56-69-135.dclient.hispeed.ch) |
21:16.23 |
brlcad |
starseeker: trying to |
21:16.27 |
brlcad |
doing testing now |
21:18.31 |
starseeker |
OK - should I hold commits for a
bit? |
21:19.59 |
CIA-24 |
BRL-CAD: 03brlcad * r33110
10/brlcad/trunk/src/ (conv/dxf/ libgcv/): more ignores |
21:20.34 |
brlcad |
starseeker: ideally |
21:20.36 |
CIA-24 |
BRL-CAD: 03brlcad * r33111
10/brlcad/trunk/src/proc-db/: ignore metaball product |
21:20.41 |
starseeker |
ok |
21:20.45 |
starseeker |
will do |
21:20.47 |
brlcad |
unless they're cleanup/fixes |
21:20.55 |
starseeker |
did you suck in bob's g_qa changes? |
21:21.11 |
brlcad |
yeah :/ |
21:21.15 |
brlcad |
had to start all over |
21:21.41 |
starseeker |
that should probably be a NEWS item unless you
want to back up to the revision before that |
21:21.51 |
starseeker |
apparently he ported it to Windows |
21:22.30 |
CIA-24 |
BRL-CAD: 03brlcad * r33112
10/brlcad/trunk/src/other/tkhtml3/: ignore Makefile |
21:22.57 |
brlcad |
depends if the tests pass |
21:45.17 |
brlcad |
aaand, fail |
21:45.23 |
brlcad |
gqa crashes |
21:45.28 |
brlcad |
fails basic regression test |
22:13.36 |
*** join/#brlcad Bariton
(n=Bary@p5B14FC70.dip.t-dialin.net) |
22:15.40 |
brlcad |
sighs |
22:43.05 |
CIA-24 |
BRL-CAD: 03brlcad * r33113 10/brlcad/trunk/
(18 files in 9 dirs): revert the g_qa port to windows and addition
to g_qa until after this release (revert r33107). it's crashing and
infinite looping on at least Mac and Linux (and the regression
tests are epic fail). |
23:03.54 |
``Erik_ |
http://fc47.deviantart.com/fs14/f/2007/005/e/0/The_Simpsonzu_by_spacecoyote.jpg
O.o |
23:11.44 |
``Erik |
do we guarantee acyclicity of the graph?
O.o |
23:38.05 |
CIA-24 |
BRL-CAD: 03brlcad * r33114
10/brlcad/trunk/src/librt/wdb.c: wdb_fflush is unnecessary. all db
io operations are automatically flushed all the time after every
db_write and during db_close. |
23:39.34 |
``Erik_ |
poo |