天天EOS

经验与您分享
构客网首页  博客  论坛

 
  用户信息
 
帐号:  新手必读
密码: 保存密码
 
  分类列表
全部类别(118 篇)
EOS(59 篇)
灌水(11 篇)
心情(13 篇)
学习(8 篇)
amii成长记(10 篇)
SOA(10 篇)
热点(4 篇)
思考(2 篇)
马拉松(1 篇)
  按月归档
2007年-11月(40 篇)
2008年-01月(60 篇)
2008年-10月(9 篇)
2009年-06月(5 篇)
2009年-10月(4 篇)
  SOA2007 - SOA实践
我们何时迈向SOA
——SOA在中国的整体发展现状究竟如何?
我们如何迈向SOA
——中国企业如何迈出实施SOA的第一步?
我们应采用何种技术
——SOA国际标准SCA/SDO的具体内涵?
我们还需要何种技能
——SOA将如何改变系统架构设计以及项目管理过程?

显示第 1-10 条记录,共 118 条记录 首页 前页 后页 尾页  到第 页,共 12

早上跑了4km,先冷后热

发布时间:2009年11月17日 作者:powerise

阅读次数:1139次 类别:马拉松 永久链接 Trackback 
早上7:00就起来了,偷完qq农场别人的东西,做完准备活动,出去跑步去。

上身穿了一件运动型长袖T恤,套一件运动外套,下面穿一条运动长裤,脚穿一双有网眼的跑步鞋,手上戴了一双手套,带上mp3就出门了。

刚出门,乖乖,一阵冷风啊,直往脖子里面钻,赶紧把外套的领口扣得更紧,然后开始慢跑。

跑了1公里多一些的时候,感觉身上就开始热起来,慢慢把外套的领口打开一些,随着跑步的持续,领口被慢慢拉大,不过拉开的领口还是有冷风灌进来,不是很舒服。

今天的训练距离不长,只有4公里,不过跑完的时候,手感觉很热,回家后打开手套一看,里面都有点润湿了,看来,这个手套太过于保温啊,呵呵。

开始有点期待厦门马拉松了

发布时间:2009年11月16日 作者:powerise

阅读次数:1499次 类别:心情 永久链接 Trackback 

跑了个15公里,用时1小时30分,离我“完成半程马拉松”的目标越来越近了

今天起了个大早,7:00就起床了【最近几天都是7:00起,因为最近玩QQ农场比较疯,早上起来偷人家农场的东西,】,一看,天空晴朗,万里无云啊,这好的天,最近难得看到啊,赶紧跑步去吧,一周的训练都不系统了。

 

做完准备活动,走到海淀公园【一般在海淀公园跑步,外圈5km,内圈800m】,7:38,沿着外圈开始跑,30分钟后完成第一圈,中间停了3次,都是因为狗。这些遛狗的人不给狗牵绳子,也不给带口罩,有一次也是这么跑,突然腿踢到一个毛乎乎、软绵绵的东西,接着就“汪汪”,从此落下了阴影,看到狗就停下来,慢慢走到前面去,走出去30-50米后再跑,还要边跑边回头看,痛苦啊,首都人民原来也有不文明遛狗的哈

 

外圈有问题,那就跑内圈啊,海淀公园不知道是不是有规定,反正里面我没看到过狗狗,倒是给我弄了个跑步的环境,感谢下海淀公园的管理者,跑了6圈过后,看看手表,8:38,又一个30分钟。

 

当时身体条件感觉还不错,喝了口水,接着跑,又跑了6圈半,看看手表,9:08.

 

算一下,跑步距离在15km左右,时间1:30:00,跑完后,身体感觉还不错,感觉再跑个6km应该没啥问题,所以我的半程马拉松,应该没什么问题,接下来就是按部就班的训练,不要受伤就行了。

 

开始有点期待厦门马拉松了


第一次马拉松活动总结

发布时间:2009年10月28日 作者:powerise

阅读次数:1446次 类别:EOS 永久链接 Trackback 
第一次马拉松成功跑完9km,可是回来发现有些问题需要改进

1、 马拉松活动结束后,发现自己潜力很大,决定以后继续参加相关马拉松训练和活动;

2、 回来的路上路遇一参加马拉松的美女,经过指点,知道有一个叫run友堂的民间组织,很多喜欢马拉松的人都在参与;

3、 加入了北京run友堂

4、 经过了解,发现自己的训练计划有问题,所以,从别的地方找了一个训练计划过来作为自己的参考。


我的第一次马拉松之旅

发布时间:2009年10月28日 作者:powerise

阅读次数:1267次 类别:EOS 永久链接 Trackback 

第一参加的马拉松是北京马拉松。

1、 今年10月18日参加的北京马拉松9KM赛事,是我第一次参加马拉松比赛

2、 从7月份开始准备,到10月18日比赛,进行了3个多月。

3、 第一次开始训练的时候,只能跑800米,之后腰酸背疼了好几天

4、 1个月之后,可以跑上2KM了,感觉是非常大的进步,当场给LP打电话报告,开心啊

5、 2个月之后,可以跑上4KM了,觉得跑完9KM应该是没什么问题了;

6、 10月12日,正式参赛前一个星期六,从海淀桥跑到香山,想测试下自己是否真的能跑9KM,结果坚持下来了,后面还顺便爬了趟香山

7、 从香山回来后小腿有点疼

8、 10月17日晚,兴奋啊,基本没怎么睡觉,晚上3点还起来喝水

9、 10月18日晨,赶到天安门广场,那家伙,people moutain people sea啊,好不容易挤到了起跑区

10、走了10分钟,才走出天安门广场

11、 一出天安门广场,有一大批人憋不住,对着长安街北边的城墙嘘嘘【同志们,一定要注意,出发前少喝水啊】

12、 4-5公里后,感觉有些不舒服,所以停下来走了一段,

13、 1:00:28秒后,冲过9KM的终点,第一次马拉松之旅顺利结束。


EOS6中的DataCell扩展之二: 为DataCell提供类似Excel的公式计算功能,包括sum、avg等公式

发布时间:2009年06月30日 作者:powerise

阅读次数:1883次 类别:EOS 永久链接 Trackback 
有一个客户在看到DataCell之后,提出要让DataCell像Excel一样,支持公式计算等,考察DataCell后,我认为这是可行的,这里把解决方案提供给大家,有兴趣的朋友可以自己去做一下试试。我已经完成了部分代码,可以支持"A1+B2+SUM[c3:c6]-avg[D1:D6,D7]"这样复杂的表达式。

在DataCell中,我们可以使用下面的这段代码来获取一个单元格的值:
var datacell1 = $id("cell1");
var cell = datacell1.getCell(rowNo-1,cellNo-1);
var cellvalue = datacell1.getCellValue(cell);

要完成对类似Excel中公司编辑器的支持,我们要做的其实就是提供一个公式解析器,然后把公式解析出来的算法对应到一个个的单元格上面去,
对于DataCell而言,Excel中的A1、B2这样的表示很容易就可以映射到一个cell上,因此,要解决这个问题的最大难点,其实就在于如何解析公
式上,我想了一个简单的办法来处理这个问题,虽然比较笨,不过执行起来还行:

1、 如何解析和运算基本公式?

        这个比较简单,直接通过+、-、×、/、之类的解析就可以了,算法也是基本算法调用,JS本身就支持。

2、 如何处理公式?

        公式就直接采用词法解析,比如先判断表达式中是否有sum字符,有的话就先计算它。

3、 如何处理D1:D3,D6这种表达式?

       3.1  如果全是","隔开的,好办,一个一个取出来加上就可以了。

        3.2 如果是用":"隔开的,呵呵,我用的是比较笨的方法,就直接给他转换为","隔开的字符串,比如把D1:D3转换为"D1,D2,D3“,再调用3.1中针对","的处理就好了

有兴趣的朋友,你可以试试看看是否能够成功.

如果希望了解更多细节,可以给我留言,大家一起探讨。


EOS6中的DataCell扩展之一: 如何让DataCell支持让用户选择显示哪几列?

发布时间:2009年06月30日 作者:powerise

阅读次数:1774次 类别:EOS 永久链接 Trackback 
在业务场景中,DataCell中往往显示了开发者指定的所有列,但是针对某一个具体的使用者,他可能只是希望显示其中的某几列就够了,DataCell默认提供的功能中没有提供这个能力,这里我就介绍一下如何去扩展这个能力的几个关键点,有兴趣的朋友可以自己去扩展下。

其实要达到这个能力,主要有以下几个问题需要解决:

1、 如何显示所有列,让用户选择;

         这个问题好解决,DataCell中提供了一个fields属性,它包含了所有列的信息。

2、 如何隐藏指定的列。

        这个问题稍微难一些,通过咨询我们研发部门,他们提供了一个解决方案: $id("emps").getField("empid").rules.style.display="none"

解决了这两个问题,我们就可以循着下面的步骤来解决这个问题了:

1、 在DataCell中插入自己的按钮;请参考DataCell的帮助;

2、 该图标onclick事件对应的JS方法中弹出一个div,显示所有列,让用户选择要显示的列;

3、 在用户选择完成后,通过控制DataCell的列的style.display,将不需要显示的列隐藏起来即可。


VC++开发的ActiveX如何通过JavaScript脚本和EOS应用交互

发布时间:2009年06月29日 作者:powerise

阅读次数:2063次 类别:EOS 永久链接 Trackback 
由于一些特殊的业务场景,用EOS开发的应用需要采用VC++开发的ActiveX控件,下面介绍如何采用在ActiveX控件中,用过JavaScript脚本实现和EOS应用的交互。
1.1   如何从ActiveX中访问HTML中的JS方法
1.1.1   在JS中设计一个方法
function testFunc(a,b){
              alert("调用JavaScript中方法(连接字符串):"+( a+b));
}
1.1.2   为CDemoDialog增加新的方法
void CDemoDialog::CalJSFunction(const CString &funcName,DISPPARAMS &dispparams){
//这里描述了如何让ocx与ie进行交互
       CDemoCtrl* pCtrl = (CDemoCtrl*)GetParent();
       if(pCtrl)
       {
              CComPtr<IOleClientSite> pSite;
              pSite = pCtrl->GetClientSite();
              if(pSite)
              {
                     CComPtr<IOleContainer> pContainer;
                     HRESULT hr = pSite->GetContainer(&pContainer);
                     if(FAILED(hr))
                     {
                            return;
                     }           
                     CComQIPtr<IHTMLDocument2> pDoc(pContainer);
                     if(!pDoc)
                     {
                            return;
                     }
                     CComPtr<IDispatch> pScript;
                     pDoc->get_Script((IDispatch**) &pScript);
                     if(FAILED(hr))
                     {
                            return;
                     }
                     CComBSTR bstrMember(funcName); //传入JS的函数名
                     DISPID dispid;
                     hr = pScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
                     if(FAILED(hr))
                     {
                            return;
                     }
                     EXCEPINFO excepInfo;
                     memset(&excepInfo, 0, sizeof(excepInfo));
                     CComVariant vaResult;
                     UINT nArgErr = (UINT)-1; // initialize to invalid arg
                     hr = pScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &excepInfo, &nArgErr);
              }
       }
}
1.1.3   为CDemoDialog的按钮增加事件
DISPPARAMS dispparams;
       memset(&dispparams, 0, sizeof(dispparams));
       dispparams.cArgs=2;   // 设置参数个数
       dispparams.rgvarg=new VARIANTARG[2]; // 初始化参数数组
       dispparams.rgvarg[0].vt=VT_BSTR; // 第一个参数的类型
       dispparams.rgvarg[0].bstrVal=::SysAllocString(L"One Dream"); //第一个参数的值
 
       dispparams.rgvarg[1].vt=VT_BSTR;   //第二个参数的类型
       dispparams.rgvarg[1].bstrVal=::SysAllocString(L"One World "); //第二个参数的值
       CalJSFunction("testFunc",dispparams); // testFunc是要调用JS的函数名
 
       SysFreeString(dispparams.rgvarg[0].bstrVal);
       SysFreeString(dispparams.rgvarg[1].bstrVal);

JavaScript脚本如何访问VC++开发的ActiveX中的方法

发布时间:2009年06月27日 作者:powerise

阅读次数:10516次 类别:EOS 永久链接 Trackback 
由于一些特殊的业务场景,用EOS开发的应用需要采用VC++开发的ActiveX控件,下面介绍如何采用JavaScript脚本实现和ActiveX控件的交互
1.1   JavaScript脚本如何访问VC控件中的方法
1.1.1   在ActiveX控件的接口上单击右键,选择增加新的方法:
1.1.2   在新弹出的页面中输入如下信息:
1.1.3   为Add方法提供实现:
long CDemoCtrl::Add(long a, long b)
{
       // TODO: Add your dispatch handler code here
       return a+b;
}
1.1.4   在HTML中增加JS方法 
function add(){
              alert(document.TestScript.Add(2, 3));
}
其中的TestScriptActivex控件在页面上的id

VC++开发的ActiveX如何加入安全机制,避免IE中提示“在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?”

发布时间:2009年06月27日 作者:powerise

阅读次数:13195次 类别:EOS 永久链接 Trackback 1条评论

由于工作的关系,最近一直超级忙,所以有一段时间买到这里来和大家见面了,不过今天给大家带来的东西可能不常用啊,是EOS6中使用VC++开发的ActiveX方面的,希望能够给需要的人提供帮助吧。

在EOS6的项目中,如果采用VC++开发的ActiveX,那么第一次运行的时候,IE中就会提示,“在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?”在网上找了很多资料,原理介绍的多,但是真正如何做,介绍的比较少,因此这里把实际的步骤一步一步的记录下来了,供大家参考。

1.1 去除ActiveX访问时的安全提示

ActiveX第一次被访问时,会出现如下提示框:

 

这是IE浏览器的安全机制造成的,我们可以采用下面的步骤来去除这个提示信息:

1.1.1 CDemoCtl的头文件.h中增加对objsave的引用

#include <objsafe.h> 

1.1.2 在其protected声明区增加如下内容:

//去掉安全警告 BEGIN

DECLARE_INTERFACE_MAP()

BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)

STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid, DWORD __RPC_FAR *pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions);

STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);

END_INTERFACE_PART(ObjectSafety)

//去掉安全警告 END

1.1.3 CDemoCtl的实现类.cppIMPLEMENT_DYNCREATE(CActivexFirstCtrl, COleControl)这一行后增加如下内容:

     

//去掉安全警告 BEGIN

BEGIN_INTERFACE_MAP(CDemoCtl, COleControl)

INTERFACE_PART(CDemoCtl, IID_IObjectSafety, ObjectSafety)

END_INTERFACE_MAP()

// Implementation of IObjectSafety

STDMETHODIMP CDemoCtl::XObjectSafety::GetInterfaceSafetyOptions(

REFIID riid,

DWORD __RPC_FAR *pdwSupportedOptions,

DWORD __RPC_FAR *pdwEnabledOptions)

{

METHOD_PROLOGUE_EX(CDemoCtl, ObjectSafety)

if (!pdwSupportedOptions || !pdwEnabledOptions)

{

return E_POINTER;

}

*pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;

*pdwEnabledOptions = 0;

if (NULL == pThis->GetInterface(&riid))

{

TRACE("Requested interface is not supported.\n");

return E_NOINTERFACE;

}

// What interface is being checked out anyhow?

OLECHAR szGUID[39];

int i = StringFromGUID2(riid, szGUID, 39);

if (riid == IID_IDispatch)

{

// Client wants to know if object is safe for scripting

*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;

return S_OK;

}

else if (riid == IID_IPersistPropertyBag

|| riid == IID_IPersistStreamInit

|| riid == IID_IPersistStorage

|| riid == IID_IPersistMemory)

{

// Those are the persistence interfaces COleControl derived controls support

// as indicated in AFXCTL.H

// Client wants to know if object is safe for initializing from persistent data

*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;

return S_OK;

}

else

{

// Find out what interface this is, and decide what options to enable

TRACE("We didn"t account for the safety of this interface, and it"s one we support...\n");

return E_NOINTERFACE;

}

}

STDMETHODIMP CDemoCtl::XObjectSafety::SetInterfaceSafetyOptions(

REFIID riid,

DWORD dwOptionSetMask,

DWORD dwEnabledOptions)

{

METHOD_PROLOGUE_EX(CDemoCtl, ObjectSafety)

OLECHAR szGUID[39];

// What is this interface anyway?

// We can do a quick lookup in the registry under HKEY_CLASSES_ROOT\Interface

int i = StringFromGUID2(riid, szGUID, 39);

if (0 == dwOptionSetMask && 0 == dwEnabledOptions)

{

// the control certainly supports NO requests through the specified interface

// so it"s safe to return S_OK even if the interface isn"t supported.

return S_OK;

}

// Do we support the specified interface?

if (NULL == pThis->GetInterface(&riid))

{

TRACE1("%s is not support.\n", szGUID);

return E_FAIL;

}

if (riid == IID_IDispatch)

{

TRACE("Client asking if it"s safe to call through IDispatch.\n");

TRACE("In other words, is the control safe for scripting?\n");

if (INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwEnabledOptions)

{

return S_OK;

}

else

{

return E_FAIL;

}

}

else if (riid == IID_IPersistPropertyBag

|| riid == IID_IPersistStreamInit

|| riid == IID_IPersistStorage

|| riid == IID_IPersistMemory)

{

TRACE("Client asking if it"s safe to call through IPersist*.\n");

TRACE("In other words, is the control safe for initializing from persistent data?\n");

if (INTERFACESAFE_FOR_UNTRUSTED_DATA == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_DATA == dwEnabledOptions)

{

return NOERROR;

}

else

{

return E_FAIL;

}

}

else

{

TRACE1("We didn"t account for the safety of %s, and it"s one we support...\n", szGUID);

return E_FAIL;

}

}

STDMETHODIMP_(ULONG) CDemoCtl::XObjectSafety::AddRef()

{

METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)

return (ULONG)pThis->ExternalAddRef();

}

STDMETHODIMP_(ULONG) CDemoCtl::XObjectSafety::Release()

{

METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)

return (ULONG)pThis->ExternalRelease();

}

STDMETHODIMP CDemoCtl::XObjectSafety::QueryInterface(

REFIID iid, LPVOID* ppvObj)

{

METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)

return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);

}

//去掉安全警告 END


终于又可以颠球100次了

发布时间:2008年12月21日 作者:powerise

阅读次数:455次 类别:灌水 永久链接 Trackback 

昨天下去搞锻炼,颠球的时候竟然超过了100次,简直是欣喜若狂啊,特上blog来,庆祝一下。

大学毕业之后,为了生活,四处奔波啊,足球虽然一直没有放下,技术退步非常明显,体能也是每况愈下,最近为了减掉身上多出来的肥肉【大学毕业100,现在140】,开始了艰苦的减肥运动,每天早上起来做一套简单的身体训练,如果时间来得及,还会慢跑8-10分钟,每周日找地方做身体训练:包括跑步、俯卧撑、跳绳、颠球,有时候也会增加一些器械训练。

经过1个多月的坚持,现在发现肉肉明显没有以前那么松弛了,腿上也比较有劲了,颠球技术也有了长进,昨天下去练习的时候,竟然一举突破了100次,这可是大学毕业之后从没有达到过的高度啊,太happy了,今天一定要庆祝一下去。

 

出发咯,88



显示第 1-10 条记录,共 118 条记录 首页 前页 后页 尾页  到第 页,共 12