随笔-124  评论-194  文章-0  trackbacks-0
 
     摘要: 本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。
  阅读全文
posted @ 2007-09-10 18:24 我爱佳娃 阅读(431) | 评论 (0)编辑 收藏

 

posted @ 2007-09-10 17:54 我爱佳娃 阅读(500) | 评论 (0)编辑 收藏

今天被SWFObject困扰一天,发现:

  1. SWFObject通过本地HTML用不成功,必须通过WEB在线方式取。
  2. 直接用ADOBE的OBJECT标签都可以。但是如果一旦加入EXT-YUI的使用,在IE下不行,FF可以。所以还是用SWFObject稳妥些。
  3. 就算是在线取,如果在嵌套IE的浏览工具里(如TT)也会不成功,FF没有问题。
  4. 用SWFObject时还要注意,如果要访问FLASH的函数,输出完FLASH后,并不能马上取得指针使用,而要在其它函数中使用,比如:通过某个按钮事件激发。

也就是,把这部分放在初始化中:

var so = new SWFObject(format_path ("swf/hehe.swf"), "mytopo", "800", "600", "8", "#FFFFFFFF");
so.write("flashcontent");
this._topo = thisMovie("mytopo");

 

使用的语句放在另一处:

_topo.setBK(format_path ("images/pic3.jpg"));

 

归根结底,FLASH函数调用的调试,目前实验成功的:一是要用SWF,二是要在线调试。

posted @ 2007-09-08 22:02 我爱佳娃 阅读(877) | 评论 (0)编辑 收藏
上一篇文章中的问题,今天又再试了下,居然解决了,看来把遇到问题放一放是有好处的。

第一,是要用对CXF的库,在一行代码未变的情况下,只要使用最新的库。看来在最新库里解决了数组问题:
2.1-incubator-SNAPSHOT
就没问题,如果是用:
2.0-incubator
就会出现上篇文章的情况。我使用MAVEN2,就写成:
      <!--for cxf-->
    
<dependency>
        
<groupId>org.apache.cxf</groupId>
        
<artifactId>cxf-rt-frontend-jaxws</artifactId>
        
<version>2.1-incubator-SNAPSHOT</version>
        
<!-- version>2.0-incubator</version-->
    
</dependency>
    
<dependency>
        
<groupId>org.apache.cxf</groupId>
        
<artifactId>cxf-rt-transports-http</artifactId>
        
<version>2.1-incubator-SNAPSHOT</version>
    
</dependency>
    
<dependency>
        
<groupId>org.apache.cxf</groupId>
        
<artifactId>cxf-rt-databinding-aegis</artifactId>
        
<version>2.1-incubator-SNAPSHOT</version>
    
</dependency>


第二,对SOAP::Lite的改变,SOAP::Lite不支持doc/literal,但通过阅读
"NET-based Web Service Using the SOAP::Lite Perl Library".
我的上篇文章有链接,我写的PERL程序在某些情况下依然不行。
这次再加了两处改动后就可以了:(注意:CXF里不要使用aegisDatabinding,用默认的即可)
my $soap = SOAP::Lite
       
-> uri('http://magic.nms.exchangebit.com/')
       
-> on_action( subjoin '/', 'http://www.alfredbr.com', $_[1] })
       
-> proxy('http://127.0.0.1:8080/ebnms/NotifyService')
           
->autotype(0);


其中的autotype(0)非常重要。另外一处改动是,程序中的根变量名改成"arg0",即与WSDL中定义一致。
实验发现,带不带attr中的xmlns都可以。完整代码如下:
 use SOAP::Lite ( +trace => all, maptype => {} );

my $soap = SOAP::Lite
       
-> uri('http://magic.nms.exchangebit.com/')
       
-> on_action( subjoin '/', 'http://www.alfredbr.com', $_[1] })
       
-> proxy('http://127.0.0.1:8080/ebnms/NotifyService')
           
->autotype(0);

#$soap->sendAlarmString ("good");

#$soap->sendAlarm (SOAP::Data->name(arg0=>{devName=>"hehe", devIp=>"ip1"}));


{
# call send alarm
    my @params = (
    
#   $header,
       SOAP::Data->name(arg0 => goodhehe) 
    );
    
    
my $method = SOAP::Data->name('ns1:sendAlarmString')
       
->attr({"xmlns:ns1" => 'http://magic.nms.exchangebit.com/'});
    
    
my $result = $soap->call($method => @params);
    
    
print "\nsend string alarm result:\n";
    
if ($result->fault)
    {
       
print $result->faultstring;
    }
    
else
    {
       
print $result->result;
    }
    
print "\nn";
}

{
# call send dev alarm
    my @params = (SOAP::Data->name(arg0=>{devName=>"hehe", devIp=>"ip1"}));
    
    
my $method = SOAP::Data->name('sendAlarm');
#       ->attr({"xmlns:ns1" => 'http://magic.nms.exchangebit.com/'});
    
    
my $result = $soap->call($method => @params);
    
    
print "\nsend string alarm result:\n";
    
if ($result->fault)
    {
       
print $result->faultstring;
    }
    
else
    {
       
print $result->result;
    }
    
print "\n\n";
}

{
# call send arr alarm
    my @params = (
       SOAP
::Data->name(arg0 => [
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe1", devIp=>"ip1"}, 
       {devName
=>"hehe2", devIp=>"ip2"}])
    );
    
    
my $method = SOAP::Data->name('sendAlarmArr');
    
    
my $result = $soap->call($method => @params);
    
    
print "\nsend string alarm result:\n";
    
if ($result->fault)
    {
       
print $result->faultstring;
    }
    
else
    {
       
my @a = @{$result->result->{item}};
       
foreach $i (@a) {
               
print "ele: $i->{devName}, $i->{devIp}\n";
       }
    }
    
print "\n\n";
}
posted @ 2007-08-23 14:13 我爱佳娃 阅读(1414) | 评论 (1)编辑 收藏
     摘要: 最近需要一个能根据请求数变化的线程池,JAVA有这样的东西,可是C++下好像一般只是固定大小的线程池。所以就基于ACE写了个,只做了初步测试。 主要思想是:1. 重载ACE_Task,这相当于是个固定线程池,用一个信号量(ACE_Thread_Semaphore)来记数空闲线程数。2. 初始化时根据用户的输入,确定最少线程数minnum和最大线程数maxnum,当多个请求到来,并且无空闲线程(信...  阅读全文
posted @ 2007-08-14 17:56 我爱佳娃 阅读(6068) | 评论 (4)编辑 收藏

编译指南:

http://support.hyperic.com/confluence/display/DOCSHQ30/Build+Instructions

 

直接按照这个走,设置一些变量:

JBOSS_HOME=C:\Program Files\server-3.1.0\hq-engine

 

JAVA_HOME = %SDKS_HOME%\jdk1.5.0_04

JAVA_OPTS = "-ea"

 

ANT_HOME = %TOOLS_HOME%\apache-ant-1.6.5

ANT_OPTS = -Xmx256M -XX:MaxPermSize=128m

 

 

发现SERVER起不来,后来不用自己下载的JBOSS,而是直接下载个可以直接解压的HQ安装包,然后把JBOSS_HOME改到安装目录(如上)。然后再运行ant deploy就安过去了。

AGENT没有发现问题,编译出来的直接运行就好了,在build/agent目录下。

posted @ 2007-08-12 15:59 我爱佳娃 阅读(486) | 评论 (0)编辑 收藏
     摘要: 最近因为用HYPERIC产品,装了一下Postgres数据库,下面简说下在WINDOWS下安装的情况。   下载那个直接解压版,解压 在"$PG"目录下创建一个rootpass.txt文件,内容为数据库的超级用户密码。可以填个“p”,方便后面登陆。准备工作到此结束,下面的步骤以管理员身份执行。 移动DLL文件[8.1.5及以上版本不需要这一步骤]: cd...  阅读全文
posted @ 2007-08-12 15:56 我爱佳娃 阅读(5723) | 评论 (0)编辑 收藏
最近想用PERL通过SOAP与JAVA通信,想到了XFIRE,现在叫CXF提供的服务。但总是差一点成功。

第一步,
由于用了SPRING,所以最先看了这篇文章:Writing a service with Spring
服务是建成功了,PERL和JAVA是可以正常通信了,详见上篇文章
可是CXF自己的CLIENT生成代码却访问“自定义结构数组”的函数不成功:
 public List<DeviceValue> sendAlarmArr (List<DeviceValue> arr);

第二步,
左试右试不成功,甚至去试了Axis2,但那个生成的WSDL把上面的结构变成AnyType,估计不对。
又回来,看了Aegis绑定,我还找到将它用到SPRING里的方法:
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:jaxws
="http://cxf.apache.org/jaxws"
 xsi:schemaLocation
="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>

 
<import resource="classpath:META-INF/cxf/cxf.xml" />
 
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

   
<bean id="serviceClass" class="com.exchangebit.nms.magic.NotifyServiceImpl"/>
  
    
<bean id="aegisDatabinding" class="org.apache.cxf.aegis.databinding.AegisDatabinding"/>
          
    
<bean id="serviceFactory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
        
<property name="dataBinding" ref="aegisDatabinding"/>
    
</bean>
    
    
<bean id="serverBeanFactory" class="org.apache.cxf.frontend.ServerFactoryBean" init-method="create">
        
<property name="address" value="/NotifyService"/>
        
<property name="bindingId" value="http://schemas.xmlsoap.org/soap/"/>
        
<property name="serviceBean" ref="serviceClass"/>
        
<property name="serviceFactory" ref="serviceFactory"/>
    
</bean>

    
<jaxws:endpoint 
      
id="notifyService" 
      implementor
="com.exchangebit.nms.magic.NotifyServiceImpl" 
      address
="/NotifyService">
         
<!--jaxws:serviceFactory>
            <ref bean="serviceFactory"/>
         </jaxws:serviceFactory
-->
     
</jaxws:endpoint>
   
</beans>


其实,跟前一种JAX-WS的方式转换非常简单,把其中的注释去掉就是Aegis绑定,注释掉就是JAX-WS。
客户端没有在SPRING里试成功,但写代码也相当简单,Aegis真好:
        getBean ("notifyClient");
        
        ClientProxyFactoryBean factory 
= new ClientProxyFactoryBean();
        factory.setServiceClass(NotifyService.
class);
        factory.setAddress(
"http://127.0.0.1:8080/ebnms/NotifyService");
        factory.getServiceFactory().setDataBinding(
new AegisDatabinding());
        NotifyService client 
= (NotifyService) factory.create();
        DoTest (client);


这次,到是CXF的SERVER和CLIENT都可以正常通信了。但我不说也知道啦,PERL又出问题了!

 

第三步,
又进一步搜,才知道Document, Literal, RPC, Encoding对SOAP消息的影响,这篇文章(中文的)相当好!
大义是RPC/Encoding将方法名称放入了operation节中,并且消息里含有类型信息,不方便检验。
而Document/Literal通过增加WSDL复杂度,将方法名、参数类型全部放入了types一节,方便了处理。
而SOAP::Lite只支持RPC/Encoding的方式,但也有办法让它形成Doc/Lit的消息:点这里
但,这种方法只支持JAX-WS的服务,Aegis的PERL就会出错了。

所以,不管用哪种要么JAVA的CLIENT和SERVER通信有问题,不然就是把PERL拒之门外。我怀疑是不是CXF的JAX-WS的数组处理有问题,不然Aegis为何不出错?另外,Aegis对PERL的消息不够宽容,本已是Doc/Lit格式,只是带有TYPE信息也会出错。
不知如何解,先记在此,以后回过头来再研究了。
posted @ 2007-08-07 21:39 我爱佳娃 阅读(2902) | 评论 (1)编辑 收藏
     摘要: SOAP::Lite的Lite是说其好用,其实它的实现并不“轻量”,功能也非常强大,所以我们要用好它。 在调用服务时,有时遇到有复杂结构或者数组时,还是有点小麻烦,下面以调用以下三个函数为例分别写出SOAP::Lite如何组合它们的参数,其它情况也应该能迎刃而解。 public class DeviceValue {  &nbs...  阅读全文
posted @ 2007-08-03 22:37 我爱佳娃 阅读(2864) | 评论 (0)编辑 收藏

一般bat只能运行一个程序,有时需要在电脑启动或者自己有多个程序要启动时,编辑一个bat实现一组程序的启动。可以使用start语句。

它不支持带空格的目录名,可以先CD到程序目录,再start,举例如下:

cd "C:\Program Files\Tor\"
start tor.exe
cd "C:\Program Files\Privoxy\"
start privoxy.exe
cd "C:\Program Files\Mozilla Firefox\"
start firefox.exe

posted @ 2007-07-29 10:36 我爱佳娃 阅读(4526) | 评论 (0)编辑 收藏
仅列出标题
共13页: First 上一页 4 5 6 7 8 9 10 11 12 下一页 Last