You can subscribe to this list here.
2000 |
Jan
(101) |
Feb
(112) |
Mar
(82) |
Apr
(52) |
May
(52) |
Jun
(19) |
Jul
(25) |
Aug
(27) |
Sep
(7) |
Oct
(32) |
Nov
(114) |
Dec
(89) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(174) |
Feb
(70) |
Mar
(58) |
Apr
(60) |
May
(73) |
Jun
(38) |
Jul
(11) |
Aug
(4) |
Sep
(2) |
Oct
(12) |
Nov
(7) |
Dec
(10) |
2002 |
Jan
|
Feb
(3) |
Mar
(2) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2003 |
Jan
(1) |
Feb
(6) |
Mar
(3) |
Apr
(5) |
May
(2) |
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
(6) |
Nov
(4) |
Dec
|
From: ¿ì¸®¾Æ±â´åÄÄ <ur...@ko...> - 2002-05-17 15:37:12
|
<html> <head> <title>::::::우리아기닷컴::::::</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <style type="text/css"> <!-- td {font-family: 굴림; font-size: 9pt; color:#000000; text-decoration: none}; //--> </style> </head> <body bgcolor="#ffffff" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="http://www.uryagi.com/images/se_back_01.gif"> <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> <tr> <td align="middle" valign="top"> </td> </tr> <tr> <td align="middle" valign="top"> <table width="522" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="697" height="25"><a href="http://www.uryagi.com"><img src="http://www.uryagi.com/email_html/images/intro_20.gif" width="522" height="60" border="0" alt="우리아기닷컴으로 가기"></a></td> </tr> <tr> <td width="697" height="150" background="http://www.uryagi.com/email_html/images/email_w522_1.gif"> <div align="center">어느 덧.....<br> 계절의 여왕 5월이 성큼 다가왔습니다.<br> 일본 뇌염 등 벌레에 의한 질병에 주의 하여 주세요<br> <br> "우리아기닷컴의 회원님은 고객이 아니라 우리아기닷컴의 주인입니다."<br> 진정한 육아사이트가 되기 위하여 아직도 해야 할 것이 너무 많습니다.<br> 부족한 것은 질타해 주시고, <A href="mailto:web...@ur...?subject=임신/출산/육아/놀이감 컨텐츠&body= 아래와 같이 내용을 보냅니다.(내용을 검토한 후 마일리지로 보답드리겠습니다.)">임신/출산/육아 등등 필요한 것은 올려주십시요. </A><br> 여러분들의 사랑으로 커나가는 우리아기닷컴이 되겠습니다.<br> -감사합니다.-</div> </td> </tr> <tr> <td width="697" height="1" bgcolor="#397bcc"></td> </tr> <tr> <td width="697" height="76"><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"><a href="http://www.uryagi.com/myBaby/Age/Age.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu2_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Doctor/Doctor.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu3_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Goods/Goods.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu4_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"></td> </tr> <tr> <td width="697" height="50"><img src="http://www.uryagi.com/email_html/images/intro_21.gif" width="522" height="50"></td> </tr> <tr> <td width="697" height="76"><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"><a href="http://www.uryagi.com/myBaby/Playing/Playing.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu5_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Community/Community.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu7_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/index2.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu8_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"></td> </tr> <tr> <td width="697" height="50"><img src="http://www.uryagi.com/email_html/images/intro_22.gif" width="522" height="50"></td> </tr> <tr> <td width="697"><img src="http://www.uryagi.com/email_html/images/intro_23.gif" width="522" height="20"></td> </tr> <tr> <td height="150" valign="top" background="http://www.uryagi.com/email_html/images/intro_24.gif"><br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">회원가입은 무료서비스 합니다.(마일리지 1000점 행사 !!)<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">Safety 1st / 분유 / 기저귀 최저가 판매 단행!!<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">"우리아기 잘 키우기"를 위한 육아 컨텐츠형 쇼핑몰 "우리아기닷컴"<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">유아용 특선 비디오 빅세일 단행 !!<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">카시트 최저가 "히트경매" 단행 !!</td> </tr> <tr> <td width="697" height="5"> </td> </tr> <tr> <td width="697"> <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#333399"> <tr> <td background="http://www.uryagi.com/images/se_back_01.gif"> <font color="#333333"> 고객님에게 허락없이 본 메일을 보내게 되서 사과드립니다.<br> 본메일은 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제 50조에 의거한 [광고] 메일이며,<br> "우리아기닷컴" open 안내를 위하여 보내지는 발송전용 메일입니다.<br> 본 메일을 원하지 않으시면 <A href="mailto:ur...@ko...?subject=귀사의 메일 수신을 거부합니다.&body= 다음부터는 메일을 보내지 말아주세요."><b>회신메일(Refuse Mail)</b></A>을 보내주시거나 <font color="#0000cc">아래의 <b>수신거부</b></font>를 누르시면 더 이상은 보내어지지 않습니다.<br> 또한 고객님의 e-mail 주소는 인터넷상에서 취득하였으며, 주소 외 어떠한 개인 정보도 가지고 있지 않습니다. 감사합니다.</font> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <div align="center">| 미디어엠(주) 우리아기닷컴사업부|<br> Copyright ⓒ 2001, <a href="http://www.uryagi.com" target="_blank">우리아기닷컴</a> all rights reserved</div> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table><center><a href='http://itnsoft.com/~mailtouch/user/touch.cgi?cmd=refuse_view&usercode=hkilfnkx-jnojln-Ffkim&group=10&name=&mail=thr...@li...'><img src='http://itnsoft.com/~mailtouch/user/mail-refuse.gif' border=0)></center> </td> </tr> </table> </body> </html> |
From: Eric B. <eb...@us...> - 2002-04-24 21:34:22
|
Thought I would pass this on as another related project. Don't remember if it had already been posted. http://www.interreality.org/about/index.html Eric |
From: yassy<yas...@or...> - 2002-04-24 08:00:55
|
<html> <head> <title>hicdcd</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> </head> <body bgcolor="#FFFFFF" text="#000000"><HR color=#8bb5e2> <DIV align=center><FONT face=굴림 color=ff3333 size=3>100일간의 행사진행중 모든구매 고객께 사은품 증정<br> 100원경매 진행중<br> 삼성무선키보드,무선흴 마우스,공동구매진행중 ,,,,많은 참여 바랍니다<br> <DIV align=center><FONT face=굴림 color=#8bb5e2 size=2> 본 메일은 글머리에 광 고 라 표기한 발신전용 Client로 발송된 메일로 수신거부는 서버에서 자동으로 분류되어 수신거부처리가 됩니다.<BR> 수신거부시 <B>하단의 수신거부 버튼을 클릭</B>하시거나 보내시는메일의 제목에 <B>[수신거부]</B>라는 글귀가 말머리에 있어야 만이 수신거부 등록이 처리 됩니다<br>혹시 메일로 인해 기분이상하셨다면양해바랍니다 저희는 이메일 주소외에 어떠한 정보도 가지고 있지 않습니다<br>수신을 원하지 않으시면 맨아래에있는 수신거부 버튼을눌러 주세요 다시는 메일이 가지 않을겁니다혹시 실수로 메일이 또 왔으면 사과말씀드립니다<br> </FONT> <table width="800" border="0" cellspacing="0" cellpadding="0"> <tr> <td><a href="http://www.hicdcd.com" target="_blank"> <img src="http://www.hicdcd.com/design/damanuri/mail/pic01.gif" width="806" height="385" border="0"></a></td> </tr> <tr> <td><a href="http://www.hicdcd.com" target="_blank"> <img src="http://www.hicdcd.com/design/damanuri/mail/pic02.gif" width="806" height="243" border="0"></a></td> </tr> <tr> <td><a href="http://www.hicdcd.com" target="_blank"> <img src="http://www.hicdcd.com/design/damanuri/mail/pic03.gif" width="806" height="305" border="0"></a></td> </tr> <tr> <td><a href="http://www.hicdcd.com" target="_blank"> <img src="http://www.hicdcd.com/design/damanuri/mail/pic04.gif" width="806" height="285" border="0"></a></td> </tr> <tr> <td><a href="http://www.hicdcd.com" target="_blank"> <img src="http://www.hicdcd.com/design/damanuri/mail/pic05.gif" width="806" height="255" border="0"></a></td> </tr> </table> <HR color=#8bb5e2> <DIV align=center><FONT face=굴림 color=#8bb5e2 size=2>본 메일은 정보통신부 권고 사항에 의거 제목에 [광고]라 표시된 광고 메일입니다.<br>혹시 메일로 인해 기분이 상하셨다면 양해바랍니다 </FONT><form method='post' action=http://freeboard.info/hicdcd/reject/RejectMail.php target='_blank'> <input type='hidden' NAME='SERVICE_CODE' value=Ae233fc76e6bba39f4742066f0ac0ac68f1a81d><br> <input type='hidden' NAME='user_email' value=cy...@ko...><br> <input type='submit' value='수신거부' style='font-size:9pt;color:white; background-color:rgb(153,102,255); border-color:white'> 버튼을 클릭하시면 수신거부처리가 이루어 집니다.</form> </DIV> <HR color=#8bb5e2></body> </html> |
From: catsman<ca...@ha...> - 2002-03-31 14:02:15
|
<html><head> <meta http-equiv="content-type" content="text/html; charset=euc-kr"> <title>www.hicdcd.com</title> <meta name="generator" content="Namo WebEditor v5.0"> </head> <BODY text=black vLink=purple aLink=red link=blue bgColor=white> <TABLE cellSpacing=0 cellPadding=0 width=790 align=center> <TBODY> <TR> <TD align=middle width=800> <TABLE cellSpacing=0 borderColorDark=white width=750 borderColorLight=black border=1> <TBODY> <TR> <TD width=750 boder="0"> <P><FONT size=2>- 수신거부시 아래의 <STRONG>수신거부</STRONG> 버튼을<STRONG> </STRONG><FONT color=#ff0000><FONT color=#0080ff><STRONG>클릭</STRONG></FONT></FONT><FONT color=#000000>하셔서 메일을 주셔야 수신거부 처리가 됩니다.<BR></FONT></FONT><FONT size=2>- 수신거부시 회신 또는 답변등으로 하실경우 제목 말어리에 [<STRONG><FONT color=#ff0000>수신거부]</FONT></STRONG>라고 꼭~! 달아주시기 바랍니다.한메일,다음 야후사용자는 원문보기나첨부파일보기를 꼭눌러주세요</FONT></P></TD></TR></TBODY></TABLE> <TR> <TD vAlign=center align=middle width="100%" height=0> <P><IFRAME id=gframe border=0 name=gframei marginWidth=0 frameSpacing=0 marginHeight=0 src="http://www.hicdcd.com" frameBorder=0 width=787 scrolling=no height=1300></IFRAME></P></TD></TR></TBODY></TABLE> <HR color=#8bb5e2> <HR color=#8bb5e2> <HR color=#8bb5e2> <DIV align=center> <FONT face=굴림 size=2 color=#8bb5e2>본 메일은 정보통신부 권고 사항에 의거 제목에 [광고]라 표시된 광고 메일입니다.</FONT><BR> <A style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 12px; PADDING-BOTTOM: 3px; COLOR: #ffff00; PADDING-TOP: 3px; FONT-FAMILY: 굴림; BACKGROUND-COLOR: #8bb5e2; TEXT-DECORATION: none" href="mailto:hic...@ya...">수신거부</A> <FONT color=#8bb5e2 size=2 color=#8bb5e2>버튼을 클릭하시면 수신거부처리가 이루어 집니다.</FONT> </DIV> <HR color=#8bb5e2> </BODY></html> |
From: <web...@mb...> - 2002-03-11 21:56:47
|
VW50aXRsZWQgRG9jdW1lbnQgICAgICAgICAgICC+yLPnx8+8vL/kLg0KICAgILmruvHA17Hb uK69rCDA1LTPtNkuDQogICC5q7rxwNex27iuvay0wiC8vLDowPvAziC/+cautfDB7rTPu+e/ zSC75773wabI3rfOILjWxry5zLXwvu4gIMXrx9Wx4rz6wLsgwMy/68fRDQogICDD1sO3tNwg tfDB9sXQILGzwOe3ziC1pcDMxc0gvtDD4LnmvcTAziBNUEVHuKYgsbjH9sfPv6kgILi4tem+ +r3AtM+02S4gv6mx4r+htMIgxLi8x7HitMnAzCDDt7ChDQogILXHvu4ov7W5rsDauLcsIMfR sdjA2ri3LCC5q8DauLcpvLHFw7D6IERJQ1RBVElPTiCx4rTJwMwgIMO3sKG1x77uIMHvvK6/ obytILXoseK0ybfCICDG8rChuKYNCiAgx9IgvPYgwNa1tbfPILHiyLm1x776vcC0z7TZLiAg DQogIL+pt6+60LKyIMDnuczA1rDUv7W+7rD4us64piDH0iC89iDA1rTCICCx4si4uKYgteW4 s7TPtNkuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPMPivcPA2yC51yC787+1wNs+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgPMPivcPA2yC51yC787+1wNs+ICAgICAgICAgICAg ICAgICAgIDy9xcO7vK3A27y6PiAgICAgILmruvHA17HbuK69rCDBpsewwLsgucy4riC757/r x9gguri9x7z2ICDA1r3AtM+02S4gvcXDu8fYwda9w7jpILmrt+FjZLimILnfvNvH2LXluK6w 2r3AtM+02S4NCsioxuTAzMH2IDogIHd3dy5tYmNtb3ZpZWVuZ2xpc2guY28ua3INCiAgICAg ICC6uyC43sDPwLogwaS6uMXrvcW6ziCxx7DtILvzx9e/oSDAx7DFICBbsaSw7V228yDHpb3D tcgguN7Az8DUtM+02S4NCrT1wMy78yC43sDPwLsgv/jEob7KwLi9w7jpILz2vcWwxbrOuKYg ILStt6/B1ry8v+QuDQogDQog |
From: ¿ì¸®¾Æ±â´åÄÄ <ur...@ko...> - 2002-02-23 10:09:08
|
<html> <head> <title>::::::우리아기닷컴::::::</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <style type="text/css"> <!-- td {font-family: 굴림; font-size: 9pt; color:#000000; text-decoration: none}; //--> </style> </head> <body bgcolor="#ffffff" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="http://www.uryagi.com/images/se_back_01.gif"> <DIV align=center> <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%" align=center> <tr> <td align="middle" valign="top"> <table width="522" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="697" height="25"> </td> </tr> <tr> <td width="697"> <table width="522" border="0" cellspacing="0" cellpadding="0"> <tr> <td><a href="http://www.uryagi.com"><img src="http://www.uryagi.com/email_html/images/intro_20.gif" width="522" height="60" border="0" alt="우리아기닷컴으로 가기"></a></td> </tr> </table> </td> </tr> <tr> <td width="697" height="76"><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"><a href="http://www.uryagi.com/myBaby/Age/Age.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu2_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Doctor/Doctor.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu3_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Goods/Goods.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu4_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"></td> </tr> <tr> <td width="697" height="50"><img src="http://www.uryagi.com/email_html/images/intro_21.gif" width="522" height="50"></td> </tr> <tr> <td width="697" height="76"><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"><a href="http://www.uryagi.com/myBaby/Playing/Playing.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu5_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/myBaby/Community/Community.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu7_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/email_html/images/menu_img_w14.gif" width="14" height="76"><a href="http://www.uryagi.com/index2.asp" target="_blank"><img src="http://www.uryagi.com/email_html/images/menu8_ad.gif" width="164" height="76" border="0"></a><img src="http://www.uryagi.com/images/line_01.gif" width="1" height="76"></td> </tr> <tr> <td width="697" height="50"><img src="http://www.uryagi.com/email_html/images/intro_22.gif" width="522" height="50"></td> </tr> <tr> <td width="697"><img src="http://www.uryagi.com/email_html/images/intro_23.gif" width="522" height="20"></td> </tr> <tr> <td height="150" valign="top" background="http://www.uryagi.com/email_html/images/intro_24.gif"><br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">회원가입은 무료서비스 합니다.<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">Safety 1st / 분유 / 기저귀 최저가 판매 단행!!<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">"우리아기 잘 키우기"를 위한 육아 컨텐츠형 쇼핑몰 "우리아기닷컴"<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom"> 국내 최저가 판매 실현을 위한 최고율의 마일리지 쇼핑몰 "우리아기닷컴"<br> <img src="http://www.uryagi.com/images/arrow.gif" width="71" height="25" align="absBottom">코크린 고급형(신형 SC-2000) 최저가 판매단행 !! </td> </tr> <tr> <td width="697" height="5"> </td> </tr> <tr> <td width="697"> <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#333399"> <tr> <td background="http://www.uryagi.com/images/se_back_01.gif"> <font color="#333333"> 고객님에게 허락없이 본 메일을 보내게 되서 사과드립니다.<br> 본메일은 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제 50조에 의거한 [광고] 메일이며,<br> "우리아기닷컴" open 안내를 위하여 보내지는 발송전용 메일입니다.<br> 본 메일을 원하지 않으시면 <A href="mailto:ur...@ko...?subject=귀사의 메일 수신을 거부합니다.&body= 다음부터는 메일을 보내지 말아주세요."><b>회신메일(Refuse Mail)</b></A>을 보내주시거나 <font color="#0000cc">아래의 <b>수신거부</b></font>를 누르시면 더 이상은 보내어지지 않습니다.<br> 또한 고객님의 e-mail 주소는 인터넷상에서 취득하였으며, 주소 외 어떠한 개인 정보도 가지고 있지 않습니다. 감사합니다.</font> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="5"> </td> </tr> <tr> <td> <div align="center">| 미디어엠(주) 우리아기닷컴사업부|<br> Copyright ⓒ 2001, <a href="http://www.uryagi.com" target="_blank">우리아기닷컴</a> all rights reserved</div> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table><center><a href='http://uryagi.codns.com:9080/refuse/refuse?cmd=view&group=21&name=&mail=thr...@li...'><img src='http://uryagi.codns.com:9080/refuse/mail-refuse.gif' border=0)></center> </td> </tr> </table></DIV> </body> </html> |
From: <P2P...@ne...> - 2002-02-07 21:37:36
|
This message can only be viewed in HTML |
From: Josip A. <jo...@vr...> - 2002-02-04 01:00:26
|
Hi, a massive multiuser distributed environment, c++, GPL: http://www.nevrax.org/ Regards... |
From: Josip A. <jo...@vr...> - 2001-12-27 20:51:58
|
Eric Bresie wrote: > > Your stuff looks good.. Thanks, I'll pass the word to designers :) > Just curious...is your work VRML based? I see what looks like a VRML > browser navigator bar, which is why I ask. In the past the 3Dsia team has > been trying to avoid VRML, but maybe this will cause some more interest. Yes, we use VRML client, with a thin network/scene management layer on top of it. But our work is not VRML _based_... architects use their favourite authoring tools, they all export VRML - it's a _standard_. IMHO you should provide at least vrml model importer. Should not be a problem, there's all you need at http://www.openvrml.org/ > I think if you look back in the mailing list archives, we have some > discussion on interpretations of networks. You might want to look there.. > ( http://www.geocrawler.com/lists/3/SourceForge/690/0/ ) TNX, btw this reminded me of an article, Charting Virtual Worlds: http://www.wired.com/news/culture/0,1284,46412,00.html Regards... |
From: Alexander F. <xa...@us...> - 2001-12-26 10:39:02
|
Update of /cvsroot/threedsia/3Dsia/server In directory usw-pr-cvs1:/tmp/cvs-serv29988/server Modified Files: clientThread.cpp Log Message: It compiles now with the current ODB. For some reason it doesn't work correctly, avatars seem not to be visible. But my will to invest time in that code is very low... diff -d -u -r1.33 -r1.34 --- clientThread.cpp 2000/06/18 17:08:58 1.33 +++ clientThread.cpp 2001/12/26 10:38:59 1.34 @@ -40,7 +40,7 @@ #include "clientControlThread.h" #include "frontEnd.h" -#include <odb/odatabase.h> +//#include <odb/odatabase.h> #include <odb/generic.h> |
From: Alexander F. <xa...@us...> - 2001-12-26 10:39:02
|
Update of /cvsroot/threedsia/3Dsia/common In directory usw-pr-cvs1:/tmp/cvs-serv29988/common Modified Files: generic.h matrixThread.cpp Log Message: It compiles now with the current ODB. For some reason it doesn't work correctly, avatars seem not to be visible. But my will to invest time in that code is very low... diff -d -u -r1.3 -r1.4 --- generic.h 2000/06/06 18:50:33 1.3 +++ generic.h 2001/12/26 10:38:59 1.4 @@ -9,10 +9,12 @@ #include <fstream> #include <sys/time.h> +#include <odb/odb.h> #define UNUSED_ARGUMENT(a) a = a; using namespace std; +using namespace odb; diff -d -u -r1.31 -r1.32 --- matrixThread.cpp 2000/07/02 22:15:52 1.31 +++ matrixThread.cpp 2001/12/26 10:38:59 1.32 @@ -32,8 +32,9 @@ #include <unistd.h> #include <odb/generic.h> -#include <odb/odatabase.h> -#include <odb/odbadbinary.h> +#include <odb/odb.h> +#include <odb/atom.h> +#include <odb/atomdatabinary.h> #define DEBUG2 #define DEBUG5 @@ -75,12 +76,12 @@ void* MatrixThread ( void* ) { - CODatabase matrixDB; + CODB matrixDB; Buffer* looseAtomBuffer = new Buffer(); - map<int,CODBReason*> reasonType; - map<int,CODBClass*> classT; //<------- THIS SHALL BECOME THE REAL CLASSTYPE + map<int,CReason*> reasonType; + map<int,CClass*> classT; //<------- THIS SHALL BECOME THE REAL CLASSTYPE map<int,string> classType; //<<----- AND THAT SHALL BECOME OBSOLETE! map<int,string> atomType; @@ -188,8 +189,8 @@ long objectID = (long) pak->h.header[2]; - CODBObject* poObject = 0; - CODBClass* poClass = (CODBClass*) *matrixDB.GetClass ( _T(classType[classID])).begin(); //gets the pointer to the class with the name defined by classType + CObject* poObject = 0; + CClass* poClass = (CClass*) *matrixDB.GetClass ( _T(classType[classID])).begin(); //gets the pointer to the class with the name defined by classType if ( objectID >= 0 ) //this is just allowed on client side: the local database of the client uses the same ID foro objects as the database on the server { @@ -205,7 +206,7 @@ fprintf(stderr,"[mT] ID-src: %d, ID-dst: %d\n", objectID, (int)poObject->ID()); #endif - poObject = new CODBObject ( objectID, false); //creates the object with the given ID + poObject = new CObject ( objectID, false); //creates the object with the given ID poObject = matrixDB.Add ( poObject ); //adds it to the matrix } /* @@ -226,7 +227,7 @@ } else { - poObject = matrixDB.Add ( new CODBObject ( _T(pak->data), poClass ) ); //creates a new object with a new ID and adds it to the matrix + poObject = matrixDB.Add ( new CObject ( _T(pak->data), poClass ) ); //creates a new object with a new ID and adds it to the matrix #ifdef DEBUG fprintf(stderr,"[mT] created a new object with the ID: %d\n",(int)poObject->ID()); #endif @@ -278,7 +279,7 @@ fprintf (stderr,"[mT] adding atom (type %li) to object %li - request from %d\n", aType, objectID, from ); #endif - CODBObject* poObject = matrixDB.Id2PtrObject(objectID); //gets the object which matches the ID + CObject* poObject = matrixDB.Id2PtrObject(objectID); //gets the object which matches the ID if ( !poObject ) //don't have that object THAT IS CONSIDERED AS A BUG IF THAT HAPPENS!! { @@ -297,9 +298,9 @@ break; } - CVectorAtom oVA = poObject->AtomGet ( atomSign[aType], userSignSpecific ); //get the atom that matches exactly the usersign + CVectorAtom oVA = poObject->AtomGetBySign ( atomSign[aType], userSignSpecific ); //get the atom that matches exactly the usersign - CODBAtom* poAtom = 0; + CAtom* poAtom = 0; if ( oVA.size() > 0 ) //there is already an atom with that usersign connected to that object { @@ -337,12 +338,12 @@ } else { - poAtom = matrixDB.Add ( new CODBAtom ( atomID ) ); //Creates an atom with a given ID and adds it to the database + poAtom = matrixDB.Add ( new CAtom ( atomID ) ); //Creates an atom with a given ID and adds it to the database } } else { - poAtom = matrixDB.Add ( new CODBAtom () ); //Creates an empty atom and adds it to the database - the database will assign an ID to the atom + poAtom = matrixDB.Add ( new CAtom () ); //Creates an empty atom and adds it to the database - the database will assign an ID to the atom } } @@ -364,7 +365,7 @@ case ODB_TYPE_BINARY: { long temp = pak->data.length(); - *poAtom = new CODBADBinary ( const_cast<char*>(pak->data.data()), temp ); + *poAtom = new CAtomDataBinary ( const_cast<char*>(pak->data.data()), temp ); break; } @@ -440,7 +441,7 @@ case _Object: //its an object!! ;) { wasChanged = true; - CODBObject* poObject = (CODBObject*)*it; + CObject* poObject = (CObject*)*it; #ifdef DEBUG cerr << "[mT] rtti-info -> _Object " << poObject->ID() << "\n"; @@ -451,7 +452,7 @@ poObject->Dump(); #endif - CODBClass* poClass = poObject->ClassGet(); //gets the pointer to the class + CClass* poClass = poObject->ClassGet(); //gets the pointer to the class if ( !poClass ) { @@ -492,7 +493,7 @@ case _Atom: { - CODBAtom* poAtom = (CODBAtom*)*it; + CAtom* poAtom = (CAtom*)*it; #ifdef DEBUG cerr << "[mT] rtti-info -> _Atom " << poAtom->ID() << "\n"; @@ -651,7 +652,7 @@ header[2] classID ++*****************************************************/ - CODBObject* poObject = matrixDB.Id2PtrObject(pak->h.header[1]); + CObject* poObject = matrixDB.Id2PtrObject(pak->h.header[1]); #ifdef DEBUG fprintf(stderr,"[mT] ODB_GET_OBJECT %d - %p\n",pak->h.header[1],poObject); #endif @@ -686,7 +687,7 @@ delete pak; pak = 0; - CODBAtom* poAtom = matrixDB.Id2PtrAtom(atomID); + CAtom* poAtom = matrixDB.Id2PtrAtom(atomID); if ( !poAtom ) { @@ -750,8 +751,8 @@ long objectIDb = (long) pak->h.header[2]; int reason = pak->h.header[3]; - CODBObject* poObjectA = matrixDB.Id2PtrObject ( objectIDa ); - CODBObject* poObjectB = matrixDB.Id2PtrObject ( objectIDb ); + CObject* poObjectA = matrixDB.Id2PtrObject ( objectIDa ); + CObject* poObjectB = matrixDB.Id2PtrObject ( objectIDb ); if ( poObjectA == 0 ) { @@ -804,8 +805,8 @@ long objectIDb = (long) pak->h.header[2]; int reason = pak->h.header[3]; - CODBObject* poObjectA = matrixDB.Id2PtrObject ( objectIDa ); - CODBObject* poObjectB = matrixDB.Id2PtrObject ( objectIDb ); + CObject* poObjectA = matrixDB.Id2PtrObject ( objectIDa ); + CObject* poObjectB = matrixDB.Id2PtrObject ( objectIDb ); if ( poObjectA && poObjectB ) { |
From: Alexander F. <xa...@us...> - 2001-12-26 10:39:01
|
Update of /cvsroot/threedsia/3Dsia In directory usw-pr-cvs1:/tmp/cvs-serv29988 Modified Files: configure.in Log Message: It compiles now with the current ODB. For some reason it doesn't work correctly, avatars seem not to be visible. But my will to invest time in that code is very low... diff -d -u -r1.8 -r1.9 --- configure.in 2000/06/27 16:47:46 1.8 +++ configure.in 2001/12/26 10:38:59 1.9 @@ -61,7 +61,18 @@ cflags="$cflags -DDEBUG" fi +AC_ARG_WITH(odb-lib, [ --with-odb-lib Path to ODB library directory], +ODB_LIB=$withval,[ODB_LIB=/usr/lib]) +AC_SUBST(ODB_LIB) +AC_DEFINE_UNQUOTED(ODB_LIB, "$ODB_LIB", [Path to ODB library directory]) + +AC_ARG_WITH(odb-headers, [ --with-odb-headers Path to ODB header directory], +ODB_INCLUDE=$withval,[ODB_INCLUDE=/usr/include/odb]) +AC_SUBST(ODB_INCLUDE) +AC_DEFINE_UNQUOTED(ODB_INCLUDE, "$ODB_INCLUDE", [Path to ODB header directory]) + + AC_CACHE_SAVE AC_CHECK_LIB(pthread, pthread_create, lflags="$lflags -lpthread") @@ -73,7 +84,11 @@ lflags="$lflags -lstdc++" dnl //XXX there ought to be a better way... -AC_HAVE_LIBRARY(libodb.a, [odbAvail="yes" AC_CHECK_HEADER(odb/odatabase.h, odbHAvail="yes") lflags="$lflags -lodb"]) +dnl AC_HAVE_LIBRARY(libodb.a, [odbAvail="yes" AC_CHECK_HEADER(odb/odb.h, odbHAvail="yes") lflags="$lflags -lodb"]) + +AC_CHECK_LIB(odb, exit, [odbAvail="yes" lflags="$lflags -L$ODB_LIB -lodb"], [], -lstdc++ -L$ODB_LIB) +AC_CHECK_FILE($ODB_INCLUDE/odb.h, [odbHAvail="yes" CPPFLAGS="$CPPFLAGS -I$ODB_INCLUDE"]) + AC_CHECK_LIB(ncurses, _init, [lflags="$lflags -lncurses" AC_CHECK_HEADER(ncurses.h, ,ncursesHAvail="yes")]) AC_CHECK_LIB(slang, _init, AC_CHECK_HEADER(slang.h, ,slangHAvail="yes")) |
From: Alexander F. <xa...@us...> - 2001-12-17 11:27:49
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Marc, On Tuesday 11 December 2001 17:27, you wrote: > Hi folks, > I just wanted to compile the current CVS version of Hvergelmir (CVS > package 'base') and have a big problem related to autoconf, maybe someone > of you has an idea how to solve this: > > I had to delete everything automake/autoconf related except Makefile.am, > config.h.in and configure.in. Then I did 'aclocal ; automake -a ; autoconf' > and everything seemed to be fine... but the resulting 'configure' script > has a big flaw: > > rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files that seems very odd to me, how come it wants to delete core, but not plugins or anything similar. Which directories are being processed is defined in Makefile.am anyway, do these files share information? i doubt.. > This deletes the 'core' directory everytime the 'configure' script is > called. I think have to rename the 'core' directory because of that, but > does anyone know a solution without this ? Does this happen on your > machines, too ? I was not able to observe this, but that is due to the odb header and lib problem, this stops the execution of the script before it comes to the 'rm'. It appears to me that applying the path to headers and lib from the shell to the configure script has no effect. > My autoconf version is 2.52 mine is 2.13.. i will apt-get the current version today, i'm not quite sure why my Debian/Sid installation kept this obsolete version. anyway, i'll see what happens then byebye xandi - -- xa...@us... - Alexander Feder - Vienna/Austria personal: http://members.blackbox.net/xandi/ project: http://threedsia.sourceforge.net community: http://www.3Dsia.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iEYEARECAAYFAjwd1RwACgkQvrjxEeSgXOD44gCfbzYvNeA9/DMRfrTyZJBnyf3c zcQAoIoeAUqMEED6v6GHXpxRmlF4DIPc =hw4a -----END PGP SIGNATURE----- |
From: Eric B. <eb...@us...> - 2001-12-11 22:44:48
|
I think in the RMC world, they are getting close to having a working system up...beta quality. I was suggesting on the irc channel, that maybe some development could be redone on the Visual client side, which would evenually use the rmc objects in place of the local objects. In other words, have an object pool of some type that contains all the objects in a given scene which is visualized, and when the RMC is used, the object pools would be RMC objects which could then handle/hide the remote nature of the client. On the irc channel, they indicated that they would still be using the existing 3D client in the Baloon branch, that was developed I believe. Anyone else want to add to that? Eric > From: n Behalf Of Marc Haisenko > Sent: Thursday, November 08, 2001 3:40 PM > > Hi folks, > it's been a while... hell, I've got a life outside of PC's, what an > experience :-) > > First of all, my current status: it's been a lazy summer, few coding to > nothing outside my job, and now I want to code again. > I've lost my job last week because the company I worked for has some > financial problems (very uncommon these days ;-). But I have > three months in > which I'm still working and getting money, so it's no problem > finding another > job. > > This means that hopefully I've got enough time (if my RL allows > it ;-) and > will start getting into the code again soon and write some > improvements that > I want to implement. I have to look into the RMC which I still > haven't done > yet, is the code generator implemented yet ? If not, Manfred, > could you tell > me what language you're using for it (Python ?) and what has to be done. > > I really like to do some work and eventually see an avatar moving on my > screen :-) > And I like to get into C++ again. I've only used JavaScript for a > long time > now (with some rare Java) and you really go after gaga when using > too long ;-) > > While watching german television today I saw the end of an > "article" (what's > the TV equivalent ?) about some cool VR program made by Adobe > which seemed to > gear in 3Dsia's direction. Does anyone know more about it ? > > C'ya, > Marc > > --- > Marc Haisenko > The 3Dsia Project > mailto:ax...@cu... > > _______________________________________________ > Threedsia-dev mailing list > Thr...@li... > https://lists.sourceforge.net/lists/listinfo/threedsia-dev > |
From: Eric B. <eb...@us...> - 2001-12-11 22:38:07
|
Your stuff looks good.. Just curious...is your work VRML based? I see what looks like a VRML browser navigator bar, which is why I ask. In the past the 3Dsia team has been trying to avoid VRML, but maybe this will cause some more interest. I think if you look back in the mailing list archives, we have some discussion on interpretations of networks. You might want to look there.. ( http://www.geocrawler.com/lists/3/SourceForge/690/0/ ) Eric > From: On Behalf Of Josip Almasi > Sent: Saturday, December 08, 2001 7:39 AM > > I've been working on something that's more based on Stevenson than on Gibson. > But now it seems that now I'm getting somewhat closer to Gibson... > I.e. see http://www.vrspace.org/screens/demo2.jpg > The blonde is AliceBot AI (http://www.alicebot.org/), and stargate is > entrance to another server, the one displayed in right window. > Alice reminds me of Einstein and Freud AI characters as described by > Pohl... still, alice is also a server, and admin can turn it on or of or > issue some commands. > Now I'm about to add james (http://jakarta.apache.org/james/) to my > software/space, and that's where our projects come quite close - mail, > news, ldap etc admin. > > How do you plan to visualize this? > > I think I have a few good tricks. Here's how a server can look: > http://www.vrspace.org/screens/defaultFilter.jpg > Then, one can turn offline users display on/off: > http://www.vrspace.org/screens/ActiveClientFilter.jpg > Or turn any other object or class on/off, i.e. Gates to other servers: > http://www.vrspace.org/screens/ClassFilter-Gate.jpg > > So far, I'm fine when I'm on one server. But how to display a network, > in general? > Like, I want to make some servers larger or brighter. I suppose they > need to advertise their services and usage somehow, and so far I found > that only jxta (http://www.jxta.org/) can be used for the purpose. > What are your ideas about this? Do you know of/have another > protocol/software that can be used for advertising? > > And, is there a way to share our work somehow? VRSpace is java so afaik > we can't shX-Mozilla-Status: 0009 server administration should look the > same - james or sendmail, a smtp server is a smtp server... > > |
From: Marc H. <ax...@cu...> - 2001-12-11 16:27:29
|
Hi folks, I just wanted to compile the current CVS version of Hvergelmir (CVS package 'base') and have a big problem related to autoconf, maybe someone of you has an idea how to solve this: I had to delete everything automake/autoconf related except Makefile.am, config.h.in and configure.in. Then I did 'aclocal ; automake -a ; autoconf' and everything seemed to be fine... but the resulting 'configure' script has a big flaw: rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files This deletes the 'core' directory everytime the 'configure' script is called. I think have to rename the 'core' directory because of that, but does anyone know a solution without this ? Does this happen on your machines, too ? My autoconf version is 2.52 Thnx a lot, Marc |
From: Josip A. <jo...@vr...> - 2001-12-10 03:02:27
|
Hi, I've been working on something that's more based on Stevenson than on Gibson. But now it seems that now I'm getting somewhat closer to Gibson... I.e. see http://www.vrspace.org/screens/demo2.jpg The blonde is AliceBot AI (http://www.alicebot.org/), and stargate is entrance to another server, the one displayed in right window. Alice reminds me of Einstein and Freud AI characters as described by Pohl... still, alice is also a server, and admin can turn it on or of or issue some commands. Now I'm about to add james (http://jakarta.apache.org/james/) to my software/space, and that's where our projects come quite close - mail, news, ldap etc admin. How do you plan to visualize this? I think I have a few good tricks. Here's how a server can look: http://www.vrspace.org/screens/defaultFilter.jpg Then, one can turn offline users display on/off: http://www.vrspace.org/screens/ActiveClientFilter.jpg Or turn any other object or class on/off, i.e. Gates to other servers: http://www.vrspace.org/screens/ClassFilter-Gate.jpg So far, I'm fine when I'm on one server. But how to display a network, in general? Like, I want to make some servers larger or brighter. I suppose they need to advertise their services and usage somehow, and so far I found that only jxta (http://www.jxta.org/) can be used for the purpose. What are your ideas about this? Do you know of/have another protocol/software that can be used for advertising? And, is there a way to share our work somehow? VRSpace is java so afaik we can't share the code, but imho server administration should look the same - james or sendmail, a smtp server is a smtp server... Regards, Josip |
From: Josip A. <jo...@vr...> - 2001-12-10 03:02:24
|
Marc Haisenko wrote: > > While watching german television today I saw the end of an "article" (what's > the TV equivalent ?) about some cool VR program made by Adobe which seemed to > gear in 3Dsia's direction. Does anyone know more about it ? It's cool stuff, but all proprietary (r) and (tm). Seen discussion on www-vrml mailing list about it months ago. In general, 3d people like macromedia more couse it's open, although adobe seems to have better tech. Regards... |
From: Marc H. <ax...@cu...> - 2001-11-08 21:40:41
|
Hi folks, it's been a while... hell, I've got a life outside of PC's, what an experience :-) First of all, my current status: it's been a lazy summer, few coding to nothing outside my job, and now I want to code again. I've lost my job last week because the company I worked for has some financial problems (very uncommon these days ;-). But I have three months in which I'm still working and getting money, so it's no problem finding another job. This means that hopefully I've got enough time (if my RL allows it ;-) and will start getting into the code again soon and write some improvements that I want to implement. I have to look into the RMC which I still haven't done yet, is the code generator implemented yet ? If not, Manfred, could you tell me what language you're using for it (Python ?) and what has to be done. I really like to do some work and eventually see an avatar moving on my screen :-) And I like to get into C++ again. I've only used JavaScript for a long time now (with some rare Java) and you really go after gaga when using too long ;-) While watching german television today I saw the end of an "article" (what's the TV equivalent ?) about some cool VR program made by Adobe which seemed to gear in 3Dsia's direction. Does anyone know more about it ? C'ya, Marc --- Marc Haisenko The 3Dsia Project mailto:ax...@cu... |
From: Manfred M. <man...@gm...> - 2001-11-07 21:47:47
|
Hallo Eric, > Does KMail have a Reply All option instead of just Reply? I know there is > one in Outlook and it always seems that many of the KDE based apps borrow a > lot from MS products. Kmail seems to answer to the originator, no to the "answer to" address. But I'm not sure. The 3Dsia-Mailinglist-Adress is not in the receivers list, even if I "answer all". > On your diagrams part 1, what is the difference between watchdog, logger, > and monitor? I assume a logger takes all actions and logs it, monitor > watches a specific thing and a watchdog also watches a specific thing > (maybe based on the logged actions or maybe the queue...or is that the > difference? Maybe they can be derived classes (a watchdog and monitor are > derived from a signal handler or something along those lines).. These things are only examples of any other parts in the server. They mean nothings more as this. > On your diagram, each object has an id like 1oa1, 1oa2, etc...is there a > key to what each digit represents? Is this the Visum you mentioned? "1oa1" is a name to recognize the counterpart on the other side. But it has a meaning too, it means: "Object 1 of application 1" > Is Object 1oa1 in part 2 the same as Proxy Object 1oa1 in part 1? Not the same, but the counterpart. > In part 2, is this how the application sees it, when in fact it actually is > as presented in part 1? Or are you saying that (A) Server Application can > run on both Application Server and Client Application machine? Part 2 on Application 2 (2oa2) is a second object in application 2, that acceses the same application as 1oa1 on the server. There is no meaning about communication between applications 1 and application 2. Communication between client applications is a part outside RMC, it's up to the server application. > Are any of the incoming traffic in the Transport system in isolated queues > or anything to prevent one bad session from killing the whole applicaton > server? This is a question addressing the Transport library and depends (as I understand it) on the transport itself. I Don't know enought to tell about stability and vulnaribility of Sockets, but I believe, that sockets alone are almost stable. But it depends on the transport implementation, means: HTTP may be more stable because it should use "apache" as interface and simple "PUT" requests, they are handled seperated in any way. But I'm not sure, but I suggest to ask Xandi or Kaltan, they have to know how there transports work in this point. > Is it safe to say that basically a Proxy Object is a pointer or reference > to the real object which is contained in the stub object space? No, a proxy object is a object that is connected to a stub object. A proxy object believes it knows the stub object, but what it knows is only the interface. The interface of the stub object is compatible with the interface of the proxy object. The interface is the "RMC enabled" part in the object. >> Page1 shows you the technical view, Page2 shows you the view of the >> applications programmer. Greetings, KM |
From: Manfred M. <man...@gm...> - 2001-11-07 21:24:16
|
Hallo Eric >A stub usually refers to something that something is normal base of >something with more to be connected with it...a little bit of a bad example, >but a person with a missing arm has a stub where the full arm was once >connected..an artificial arm can be attached to the stub where the origi= nal >arm use to be. > >In programming, I believe this is were a basic interface is made which i= s >built upon...there maybe other interpretations as well. In Client/Server programming, a stub is a "thing" on the server side, whe= re a client will connect to. >>The client receives some information about this object. The >>object ID and the Visum. > >And on the client, this is stored in what class? Is this the same >class that is on the server? It is (logically) stored in the stub object for the client object. >So no identification of possible methods that can be performed on the object >are presented? Or are these method/procedures defined else where and ar= e >assumed to be known by the user of the object? No identification of possible methods that can be performed on the stub object are presented. The client knows his stub on the server side and is unable to request other methods than his RMC enalbed methods (he already knows) on the server side. >I guess what I am saying, is (and taking from UDDI and related standards= ), >you advertise the methods that can be executed on the object...and then >based on the interface to the object, use these methods. I'm not sure if I'm able to translate this correct, but I hope so. RMC do= es not explain anything about RMC enabled objects, neither over the net, nor against a application. >>The client uses the (_his very own_) remote object to access whatever t= his >>remote object will be able to access on the server site. Further, the > >client > >>object is allowed, to initiate the deletion of his stub. This will be d= one >>automatically in the destructor in the client sided object >> (=3D proxy object). > >Is (_his very own_) object on the client with the client application whi= ch >has a corresponding version on the server, or is it located only on the >server, accessible only through remote procedure calls? Each client object (proxy object) has it's _very own_ server object (stub object). >In other words: > >Client: > - Client Application (say an Chat application) > - Client Object (say a output Window[On Client] for the client) > * links to Client Object Stub > * object attributes > * object methods/procedures > - (the connection between client and server) The window object on the client side should use a communication object to communicate. This is for better structure af the cl=F6ient application an= d for better cross acces, because application windows are typical GUI dependend= , and server will (1) Not open any windows on the server side (2) Not run the same OS, the same GUI or anything other related to the GU= I >Server > - Object Factory > - Client Object Stub (output Window[On Server] for the client) > * links to Client's Client Object > * object attributes > * object methods/procedures > - Server Application (chat server which links chat clients) > + Chat Area Object > * object attributes > * object methods/procedures As suggested above, server objects has no use for any window. >When client makes a request to update the output Window[On Client] local= ly, >say with a Window[On Client].update("Hello World");, the method call is >called, then the the remote request is passed to be handed to the server >(maybe in a message queue or something) by the link between client serve= r >(RMC I'm guessing), makes a window[To Server].update("Hello World"), whi= ch >is received on the server, executed on the server as Window[On >Server].update("Hello World"), and finally possibly give them some retur= n >status information or return object information. Right, but the "window problem". > > (6) When a request is made by the client with a remote call to the > >server, > >> There is no previously existing object. The Stub object exists or not. >> Remember: The client application does not (need to) know, that an obje= ct > >on the > >> client site ist remotely connected - this is completely transparent fo= r > >the > >> application. The client application only uses objects, some may be > >connected to > >> a remote facility, some not. Remote calls are initiated by the methods= of > >an > >> RMC enabled object. And this object has a stub on the server site. > >But on the client side, a local object is present to allow access to the >object on the server...right? Or is this just a pointer to something in the >mechanism that links the remote object to the local object. There has to be a client sided object to access a server sided object. If the client sided object terminates, the server sided object terminates to= o. >I can see that when the object factory creates an object, it may return = a >pointer or reference to the object which is used by the client which wil= l >seem invisible to the local client based client application...right? See this value as "unique identifier of the serversided object". It will change it source and contents . >>A second and third client object registers and get new stub objects, ea= ch >>for his own. No client object does know anything about any other client >>object >>connected to the server. Each client object feels allown with his serve= r >>representant. And no one else as a specific proxy object knows or has >>access to the matching stub object. > >This still doesn't seem very practical in a database or object oriented >nature...If you are >creating a user interface and want the interface to communicate via a window >object (this is >just an abstract window object not 2d or 3d based), then you will have >multiple threads interacting >with that window object...say several buttons are part of that window >object, and when you press one >button it minimize the window and another it maximizes it...what if both are >at the same time? What happens? This is a problem for your application, that is to be solved in a way you have to solve it - if you are RMC'd or not. A clean software architecture will not allow Buttons to acces a record in a database. There are lots of models, like Document/View or Document/Object modell, to design your application. Look at your RMC-class as if it were your Database-API - thi= nk it's your ODBC-driver, if this is easier to you. The functionality to wor= k like a ODBC-driver has to be inserted to your RMC-class-pair by any you o= r programmer, but I think, the image from a RMC-object as an ODBC-driver is close to the theoretical truth. You may instanciate 100 client objects - but you have to be aware, that y= ou may deathlock your application on this way - as if you create a deathlock= on a local database using ODBC by using concurrent threads. >Okay, so Client2 registers, and has a Window2 Object which is on the ser= ver >and the client..now the 1 or 3 client can't access this because it is no= t >included in any way to have a way of interacting with it.. > >Do we have on the server a global Chat Area Object, that both Client1 an= d >Client2's Window Objects are a part of, then any changes which are part = of >the Client1 or Client2 Windows are passed to Chat Area Object which in t= urn >is based to everyone that is viewing the Chat Area Object? Yes, if the server is designed to provide interaction between remote objects, he needs anything "global" inside itself and some mechanisms to handle it. So, you can say: Remote object are able to interact each with = the other in the case, the server has implemented it. Remember, RMC is a "remote methode call" mechanism, not an application framework. RMC transports your object calls to other objects anywhere in = the net and let they do for what they are programmed. And RMC only handles th= e call and manages the instanciation and deletion of these objects. The mission of these objects, the services these objects and/or there server will provide is up to you. >> Chat-Demo / global Text-List > >So how is that permission to access the IRC-string list (say a global >object) given? > >Does the server application, take a reference to a client stub when the >client application >registers with the server application, which creates the link? The stub object lives in the server, the server may be programmed, to giv= e the stub object access to the text list. This is up to the programmer. In our sample, the text list is global in the server, so any RMC server obje= ct is able to access it freely. This is no security or stability problem, becasue server objects are full trusted. Which is an great advantage agai= nst CORBA and related. >SO are you saying there are RMC objects and transport objects? What is = the >difference? An RMC object is an object that is splitted in two parts, the client part and the server part. The client part resides in the client application an= d the server part resides in the server application/service. There is no mo= ve in this construction. A transported object resides anywhere and is movabl= e. The RMC mechanism provides the transport for transportable objects, but t= o drive them, you need any matching runtime environment. >Where is the proxy object again? Is this on the client? So the Proxy a= nd >the Stub are linked? The proxy is the thing that will connect to the stub. Because the stub is= in the server, the proxy is in the client. >Sorry, haven't looked in the code for a while...and forgive me if you ar= e >familiar with this but, are you using templates in C++?? yes >I seem to recall, with templates, you implement an abstract class and th= en >basically >substitute the actual variable type, which implments the real class usin= g >the specified variable class... This is, how templates work - but at compile time, not at runtime. >In otherword I make a link list abstract class (it is probably not reall= y an >abstract, i just >can't remember the real term for it), which then gets instanciated as li= nk >list using int for the >object that is contained by the linked list.. dependend on how you mean it, this is what RMC does over the net =3D polymophism. Greetings, KM ------------------------------------------------------- |
From: Manfred M. <man...@gm...> - 2001-11-07 21:24:10
|
Hi Eric, >I look forward to the design diagram... >My opinions do not necessarily reflect the opinions of other >developers...so >I hope I am not confusing the whole project but hopefully helping the whole >project :-) Any discussion, question and proposal helps all members of the list understanding the project or the discussed part of the project. >I think I understant the basic concepts you are trying to >implement...basically an RMC based object can be local or remote with how a >method or procedure is actually called being handled by the RMC background >services, which could be similar to a CORBA based server, a DCE based >server, or even the whole .NET based services that are coming out of >Microsoft now... In the past, I expressed, that RMC has not only the potential to become faster and smaller than CORBA, OLE or (new) .NET, but it works other way. Formerly, I was unsure how to explain this, but now, I think, I found the point: CORBA and friends are focused on the network business. Means, they have "object like network mechanics". But at the end of the line is not a real object in the sense of OOP, there are "Business objects" in the sense of OLE. This means: A call end on a door, where an request interpreter is waiting and this interpreter descides how to handle the request. That's why, these requests are generic "Business requests" and the interpreter has to be able to interprete all possible statements in the control part of the data package received. RMC on the other side does not use such structure. We will not send "interpretable requests" over the net. RMC sends directly object requests. The only interpretable part of the RMC calls is the identification of the remote object. The rest is only interpretable by a class (in the sense of OOP) that is instanciated for the requestor. This makes the overhead for ftransmport much smaller and we willnot need any "Request interpreter" on the server, because the addresses object knows what to do and the other part of the server is not interested in on the network package. Inside the server, the communication goes of these (slim/smart) objects by direct calls. Our Servers wil provide services, ad CORBA server also do, but in RMC, security, data and service access, caching, privat data are all are going over the stub objects. This is not only a point for speed and downsizing network traffic, this is also a security option. RMC server are not simply vulnarible, because no one from the outside is able to access anything from the inside without a suitable object. After you found out, what objects are available in the server (which is unable by querying the server from the outside) you have to authorize your remote (stub) object against the server. And this mechanism is not a "security package" like in DCE-RPC, it is naturaly given by design, without any overhead. >So from that stand point, you have basically on every box that communicates >via RMC a service which receives and transmits RMC objects...and any RMC >based object communicates via these RMC services. Services are only necessary on servers, what is a typical mission for a server ;-). RMC sends and receives only requests, not RMC-objects. And because server objects are polymorph, a client can't know, what object is instanciated on the server side. He only know, that this object is compatibel with his own (proxy) object. As you can see on the diagram, communications "service" (as usual in RPC and CORBA) are not used. And implementor may change this behavior, but RMC is not dependend on communication services like the competitors. >I can see that each RMC Object has to have a source process which is located >at a source machine executed by a source user executing a source >method/procedure call, the method call is passed to the RMC service on the >local machine, and is passed to a destination box (which can be local or >remote), which executes the method call on the object, gets the result of >the call, and passes the result to the original process. Correct. >In other words, is it safe to say that it is as follows: (1) Application starts (2) RMC Object instanciated by application (3) Application makes a Method Call on the RMC Object +-------------------------------------------------------- |(4) Local RMC Servere "Receives" the method call and pass | to the RMC Router |(5) RMC Router "Sends" the method call to the local or | remote RMC Router for execution |(6) Local/Remote RMC Router "Receives" the method call | and passes it to the RMC Server |(7) Local/Remote RMC Server Executes the method call |(8) Local/Remote RMC Server gets the Result |(9) Local/Remote RMC Server "Sends" the Result to | the RMC Router |(10) RMC Router "Receives" the Result and "Sends" to the | Original RMC Server +-------------------------------------------------------- (11) Originator RMC Service "Receives" the Result and "Sends" it back to the Original Application (which was called in step (3). (12) Application "Receives" the result and continues execution <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4..10 are not correct (see at the end of this mail) From the users prospective, they only really see steps (1), (2), (3), (11) >and (12), with the remaining stepsbeing handled by the RMC >infrastructure... Correct. >When an RMC Object is instanciated, the RMC services are started up, if they >are not already active... This is one option - e.g. by using inetd - but typically, a server runs all the time. >I am sure many of the terms I have used have another name so if there is one >let me know so I use the right terms... Names are not relevant, the point is, how it works. >Does such a RMC Router exist and does it maintain a directory of methods >and/or destinations? No, and will not. The client object knows his properties, and so the properties of his representant on the server. There is nothings to explain or interprete, neither by the client, nor by the server. >Is there more to what I've just described? Mhm - I don't know, for me this seems to be almost complete. >Do the RMC services get registered with (on the unix side) the services and >port manager, like say the ftp daemon? In a real RMC environment, the selected transports are to be anabled by the network administrator. Means, if you use socket, the client admin has to enable sockets as specified/configured on the client system and on the server side, he has to open the configured ports. >Hey...one more thing....can you reply to the mailing lists as well as me? I >think some of what you have to say in these responses can be appropriate for >either the RMC list or the 3Dsia list...that way the information can be >archived... Seems, Kmail has problems doing this. I have to enter the adress by hand, but I try to do so in the future. >I guess ultimately, I need to get the RMC and 3Dsia code again and try >working some on it so I don't ask so many questions that could be answered >by looking at the code :-) Questions are alway good for understanding. >Although sometimes having an outside opinion can sometimes be good since >you've been looking so intensely at it that you don't see the problem when >it's right in front of you...like when you have been looking so much at some >code and can't see that your missing a semicolon or have a , in place of a . >or something like that... Yes, this is a major problem for any project. Greetings, KM ------------------------------------------------------- |
From: Eric B. <eb...@us...> - 2001-11-06 21:55:14
|
Hey...saw this one on Slashdot.org and thought I would post it here: http://slashdot.org/article.pl?sid=01/11/06/1541243&mode=flat Eric |
From: Eric B. <eb...@us...> - 2001-11-02 17:04:39
|
I look forward to the design diagram... My opinions do not necessarily reflect the opinions of other developers...so I hope I am not confusing the whole project but hopefully helping the whole project :-) I think I understant the basic concepts you are trying to implement...basically an RMC based object can be local or remote with how a method or procedure is actually called being handled by the RMC background services, which could be similar to a CORBA based server, a DCE based server, or even the whole .NET based services that are coming out of Microsoft now... So from that stand point, you have basically on every box that communicates via RMC a service which receives and transmits RMC objects...and any RMC based object communicates via these RMC services. I can see that each RMC Object has to have a source process which is located at a source machine executed by a source user executing a source method/procedure call, the method call is passed to the RMC service on the local machine, and is passed to a destination box (which can be local or remote), which executes the method call on the object, gets the result of the call, and passes the result to the original process. In other words, is it safe to say that it is as follows: (1) Application starts (2) RMC Object instanciated by application (3) Application makes a Method Call on the RMC Object +-------------------------------------------------------- |(4) Local RMC Servere "Receives" the method call and pass | to the RMC Router |(5) RMC Router "Sends" the method call to the local or | remote RMC Router for execution |(6) Local/Remote RMC Router "Receives" the method call | and passes it to the RMC Server |(7) Local/Remote RMC Server Executes the method call |(8) Local/Remote RMC Server gets the Result |(9) Local/Remote RMC Server "Sends" the Result to | the RMC Router |(10) RMC Router "Receives" the Result and "Sends" to the | Original RMC Server +-------------------------------------------------------- (11) Originator RMC Service "Receives" the Result and "Sends" it back to the Original Application (which was called in step (3). (12) Application "Receives" the result and continues execution From the users prospective, they only really see steps (1), (2), (3), (11) and (12), with the remaining steps being handled by the RMC infrastructure... When an RMC Object is instanciated, the RMC services are started up, if they are not already active... I am sure many of the terms I have used have another name so if there is one let me know so I use the right terms... Does such a RMC Router exist and does it maintain a directory of methods and/or destinations? Is there more to what I've just described? Do the RMC services get registered with (on the unix side) the services and port manager, like say the ftp daemon? Hey...one more thing....can you reply to the mailing lists as well as me? I think some of what you have to say in these responses can be appropriate for either the RMC list or the 3Dsia list...that way the information can be archived... I guess ultimately, I need to get the RMC and 3Dsia code again and try working some on it so I don't ask so many questions that could be answered by looking at the code :-) Although sometimes having an outside opinion can sometimes be good since you've been looking so intensely at it that you don't see the problem when it's right in front of you...like when you have been looking so much at some code and can't see that your missing a semicolon or have a , in place of a . or something like that... Eric > -----Original Message----- > From: Manfred Morgner [mailto:Man...@gm...] > Sent: Friday, November 02, 2001 1:12 AM > To: Eric Bresie > Subject: RE: FW: [Threedsia-dev] RMC & 3Dsia network attack > vulnerability > > > Hallo Eric, > > I hope I know, what kind of misunderstanding you (and of course most members > of the project) may have. Now, I will create a picture to explain this > problem in better way. My problem was, that I didn't understand, what others didn't > understand and a picture give only a single dimensioned view of the project > problem. So, I think, your question were outstanding helpfull to localize the > basic questions and the main point of view of peoples, not involved in the > RMC project and so not involved in the philosophy of it. > > Further, our discussion helped me, the understand the difference between > CORBA and RMC from your point of view. Today I will create one or more gaphics > to show, how RMC works and whats behind the code and the code generator. > > Greetings, > KM. > > > -- > GMX - Die Kommunikationsplattform im Internet. > http://www.gmx.net > > |
From: Eric B. <eb...@us...> - 2001-11-01 21:53:28
|
I am forwarding this from Manfred..as well as making some comments.. Hey Manfred...can you do a reply all next time so that these comments make it to the mailing list instead of to just me...I think it is all useful information all around... > From: Manfred Morgner [mailto:Man...@gm...] > Sent: Wednesday, October 31, 2001 12:32 PM > > I hate it, but I have to correct you a bit: That's okay...I was hoping you would to make sure my understanding is the same as yours.. > > (1) On the Server, we have the server application running, which includes > > Object Factorying running in a thread on the server. > ok > > (2) On the Client, we have the client application running, which registers > > with the server. > ok > > (3) When a client registers, the server, using the object factory, creates a > > client site object (via the Client Stub on the server), which is passed back > > to the client application...this kind of represents the interface to the > > server. > > When a client object registers on the server, the object factory (residing > in the server), creates a stub object, that represents the client object on > the server site (what is the meaning of the word "stub") A stub usually refers to something that something is normal base of something with more to be connected with it...a little bit of a bad example, but a person with a missing arm has a stub where the full arm was once connected..an artificial arm can be attached to the stub where the original arm use to be. In programming, I believe this is were a basic interface is made which is built upon...there maybe other interpretations as well. > > (4) The client receives the client site object and its corresponding methods > > that it can execute. > > The client receives some information about this object. The object ID and > the Visum. And on the client, this is stored in what class? Is this the same class that is on the server? So no identification of possible methods that can be performed on the object are presented? Or are these method/procedures defined else where and are assumed to be known by the user of the object? I guess what I am saying, is (and taking from UDDI and related standards), you advertise the methods that can be executed on the object...and then based on the interface to the object, use these methods. > > (5) The client makes requests for creation, deletion, modification, or > > getting of a client objects via the client site object using a corresponding > > remote call. > > The client uses the (_his very own_) remote object to access whatever this > remote object will be able to access on the server site. Further, the client > object is allowed, to initiate the deletion of his stub. This will be done > automatically in the destructor in the client site object (= > proxy object). Is (_his very own_) object on the client with the client application which has a corresponding version on the server, or is it located only on the server, accessible only through remote procedure calls? In other words: Client: - Client Application (say an Chat application) - Client Object (say a output Window[On Client] for the client) * links to Client Object Stub * object attributes * object methods/procedures - (the connection between client and server) Server - Object Factory - Client Object Stub (output Window[On Server] for the client) * links to Client's Client Object * object attributes * object methods/procedures - Server Application (chat server which links chat clients) + Chat Area Object * object attributes * object methods/procedures When client makes a request to update the output Window[On Client] locally, say with a Window[On Client].update("Hello World");, the method call is called, then the the remote request is passed to be handed to the server (maybe in a message queue or something) by the link between client server (RMC I'm guessing), makes a window[To Server].update("Hello World"), which is received on the server, executed on the server as Window[On Server].update("Hello World"), and finally possibly give them some return status information or return object information. > > (6) When a request is made by the client with a remote call to the server, > > it is made to the client site object via the remote calls, which in turn > > will interact with the Object Factory on the Server(does it also provide > > access to previously existing objects?) > > There is no previously existing object. The Stub object exists or not. > Remember: The client application does not (need to) know, that an object on the > client site ist remotely connected - this is completely transparent for the > application. The client application only uses objects, some may be connected to > an remote facility, some not. Remote calls are initiated by the methods of an > RMC enabled object. And this object has a stub on the server site. But on the client side, a local object is present to allow access to the object on the server...right? Or is this just a pointer to something in the mechanism that links the remote object to the local object. I can see that when the object factor creates an object, it may return a pointer or reference to the object which is used by the client which will seem invisible to the local client based client application...right? > > (7) A second and third client registers and gets a client site object from > > the server object factor, so now three client site objects have access to > > the first client object. For this example, say the object is a list > > containing (1,2,3,4). > > A second and third client object registers and get new stub objects, each > for his own. No client object does know anything about any other client object > connected to the server. Each client object feels allown with his server > representant. And no one else as a specific proxy object knows or has access to > the matching stub object. This still doesn't seem very practical in a database or object oriented nature...If you are creating a user interface and want the interface to communicate via a window object (this is just an abstract window object not 2d or 3d based), then you will have multiple threads interacting with that window object...say several buttons are part of that window object, and when you press one button it minimize the window and another it maximizes it...what if both are at the same time? What happens? Okay, so Client2 registers, and has a Window2 Object which is on the server and the client..now the 1 or 3 client can't access this because it is not included in any way to have a way of interacting with it.. Do we have on the server a global Chat Area Object, that both Client1 and Client2's Window Objects are a part of, then any changes which are part of the Client1 or Client2 Windows are passed to Chat Area Object which in turn is based to everyone that is viewing the Chat Area Object? > --- > > In our client Demo, the clients are only able to access the IRC-string-list > because the access to this list (which is owned by the server) is given to > the stub objects by the server application. Deletions and insertions to this > list is controlled by the server and - if sensefull - by the object itself. > (currently not implemented - the current demo does not allow any client to > delete anything in the text-list) So how is that permission to access the IRC-string list (say a global object) given? Does the server application, take a reference to a client stub when the client application registers with the server application, which creates the link? > Further - we do not transport RMC enabled object. The if we transport > objectes, this objects are transported objects. SO are you saying there are RMC objects and transport objects? What is the difference? > The real stub objects are unknown be the proxy objects. Where is the proxy object again? Is this on the client? So the Proxy and the Stub are linked? > e.g.: The proxy object registers a "meter" on a measure device. This devices > measures a temperature. If the proxy object (client site) calle "String > GetValue()", it will receive a temperature, because the server instantiated a > "CThermoMeter" as answer to the request of the "CMeter" from the > client. The definition is, that the stub object has to be inherited from the proxy class > definition. If the client object (= proxy object) connects to any other "meter", the > server will instantiate any other CXxxMeter - object. There is no reason to > give the client object more information as his methodes and the implementation > of his stub object allowes him. > > > Or does a copy of the object never get passed to the clients? > yes > > Or does any request for modification happen via a remote call which does not > > actually have the object, just accessing functions?... > > A client object is not allowed (and RMC is unable) to manipulate the stub > object in any way. Only the server has the power to do anything unexpected with > his children. The goal of RMC is, to propagate encapsulation, inheritance > and polymorphy via a network. > > Basically, and this is not far from the real, we are not language dependend. > So - a matching pair of classes is able to cooperate, even if the stub > object is programmed in an other language or is no object as we understand it - > may be, the stub object appears in real as a "stub module". But whatever the > server does with the request, he has to drive > > () encapsulated instances of <anything> for each proxy object Sorry, haven't looked in the code for a while...and forgive me if you are familiar with this but, are you using templates in C++?? I seem to recall, with templates, you implement an abstract class and then basically substitute the actual variable type, which implments the real class using the specified variable class... In otherword I make a link list abstract class (it is probably not really an abstract, i just can't remember the real term for it), which then gets instanciated as link list using int for the object that is contained by the linked list.. > () <anything> is to derive or has to know the structure of the proxy base class > () <anything> should do any specific task, that the client object is unable to do > I hope you guys don't mind me babbling some...it helps me understand these things and hopefully others on the list will be able to understand it outside of source code and your head ;-) Eric |