今天因为需要找了一个可以关闭光驱的VB Script,把下列代码保存为CloseCDROM.vbs就可使用

Set wmp = CreateObject("WMPlayer.OCX.7")
Set cdrom = wmp.cdromCollection
If cdrom.Count >= 1 then
 For z = 0 to cdrom.Count – 1
  cdrom.Item(z).Eject
 Next
 For z = 0 to cdrom.Count – 1
  cdrom.Item(z).Eject
 Next
End If

该Script有问题,不能使用

      逆光拍摄是摄影用光中的一种手段。广义上的逆光应包括全逆光和侧逆光两种。它的基本特征是:从光位看,全逆光是对着相机,从被摄体的背面照射过来的光,也称“背光”;侧逆光是从相机左、右135°的后侧面射向被摄体的光,被摄体的受光面占1/3,背光面占2/3。从光比看,被摄体和背景处在暗处或2/3面积在暗处,因此明与暗的光比大,反差强烈。从光效看,逆光对不透明物体产生轮廓光;对透明或半透明物体产生透射光;对液体或水面产生闪烁光。

  如果我们能将逆光摄影的手段运用得当,对增强摄影创作的艺术效果无疑是很有价值的。

  在逆光的场景下,人物的发丝会更明显、更漂亮,身体的边缘线也会呈现出来,整个人物会变的更立体。这也就是在摄影领域中,许多人喜欢逆光进行拍摄的一个重要原因。以下,我们再针对逆光的拍摄,做一个整理及说明:

  以拍摄人像为例,太阳(或光线)在人像的后方,整个场景的光线分布,人像的脸部、正面,会呈现相对较暗的情况,这便是所谓的「逆光拍摄」。

      大部份的相机会预设以全部的取景画面做为测光的依据,由于逆光环境,人像的后方光线已相对较强,在平均计算之后,相机便会认为人像的正面之阴暗情况是正常的,这也就是逆光环境,会拍出『大黑脸』的原因.

      解决方案

      1. 我们可以使用「曝光补偿」的观念,来处理「逆光的摄影」,也就是增加曝光量来让脸部更亮一些,但是这种方法,会提升整张相片的亮度,所以不但脸部变得亮一些,背景也会跟着变亮,而导致背景的细节有所丧失。

      2. 比较好的方法,是使用反光板,将光线反射在人物的脸部。例如下图,由于光线从模特儿的后面射入,我们在模特儿的前面以反光板,将光线反射在人物的脸部。便可以轻易地达成脸部的光线,为正常的曝光情况。

      反光板的选择

    在艳阳下,可以使用白色的反光板,以求光线的柔和,在阴天,则可使用银色或金黄色的反光板,以求反射更多的光线。事实上,你也可以自制反光板,利用保丽龙板,银色的纸,剪贴成自制的反光板。

    逆光的摄影是一常用的手法,妥善地应用反光板或其它的补光器材,会让拍摄结果有意想不到的效果!

前言

  java是跨平台语言,一般来说对网络的操作都在IP层以上,也就是只能对tcp/udp进行操作,当然也可以设置部分tcp/udp的option,如果想再往IP层或者数据link层操作就无能为力了,必须依靠jni使用本地OS的socket部分接口。很幸运,我在知道有winpcap的时候同时也知道有人在开发jpcap,此包可以方便的操作网络底层应用协议,以下详细描述。

  实施步骤

  下载需要的包:http://netresearch.ics.uci.edu/kfujii/jpcap/doc/index.html上可以下到最新的jpcap,你只需要把lib中的dll文件拷贝到jre的bin目录,同时lib中的jar文件拷贝到jre中的lib/ext目录下就安装完整,当然你可以使用exe安装包进行安装,这样会更加的简单。

  编码

  你可以使用任何你喜欢的ide工具,但是必须把jpcap.jar加到classpath中,否则无法编译通过,以下为代码详细。

import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.Arrays;

import jpcap.*;
import jpcap.packet.*;

public class ARP {
 public static byte[] arp(InetAddress ip) throws java.io.IOException{
  //发现本机器的网络接口
  int i;
  NetworkInterface[] devices=JpcapCaptor.getDeviceList();
  NetworkInterface device=null;
  for (i = 0; i < devices.length; i++)
  {
   System.out.println(devices[i].description);
  }
  device = devices[2];//我的机器是第三个进行网络通信

  if(device==null)
   throw new IllegalArgumentException(ip+" is not a local address");

  //开启网络接口
  JpcapCaptor captor=JpcapCaptor.openDevice(device,2000,false,3000);
  captor.setFilter("arp",true);
  JpcapSender sender=captor.getJpcapSenderInstance();

  InetAddress srcip=null;
  //获得接口地址,这里考虑到一网络接口可能有多地址
  for(i = 0; i < device.addresses.length ; i++)
   if(device.addresses[i].address instanceof Inet4Address){
    srcip=device.addresses[i].address;
    break;
  }

  //填写全1广播mac目标地址
  byte[] broadcast=new byte[]{(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255};
  ARPPacket arp=new ARPPacket();
  arp.hardtype=ARPPacket.HARDTYPE_ETHER;
  arp.prototype=ARPPacket.PROTOTYPE_IP;
  arp.operation=ARPPacket.ARP_REQUEST;
  arp.hlen=6;
  arp.plen=4;
  arp.sender_hardaddr=device.mac_address;
  arp.sender_protoaddr=srcip.getAddress();
  arp.target_hardaddr=broadcast;
  arp.target_protoaddr=ip.getAddress();

  EthernetPacket ether=new EthernetPacket();
  ether.frametype=EthernetPacket.ETHERTYPE_ARP;
  ether.src_mac=device.mac_address;
  ether.dst_mac=broadcast;
  arp.datalink=ether;
  //发送
  sender.sendPacket(arp);
  //处理回复
  while(true){
   ARPPacket p=(ARPPacket)captor.getPacket();
   if(p==null){
    throw new IllegalArgumentException(ip+" is not a local address");
   }
   if(Arrays.equals(p.target_protoaddr,srcip.getAddress())){
    return p.sender_hardaddr;
   }
  }
 }

 public static void main(String[] args) throws Exception{
  int i;
  if(args.length<1){
   System.out.println("Usage: java ARP <ip address>");
  }else{
   byte[] mac=ARP.arp(InetAddress.getByName(args[0]));
   for (i = 0;i < mac.length; i++)
    System.out.print(Integer.toHexString(mac[i]&0xff) + ":");
   System.out.println();
   System.exit(0);
  }
 }
}

  运行:java ARP <ipaddr>

  本程序经过测试,在linux和win都可以正常运行。

项目经理团队(Program Management Team):

设计项目经理(Feature Design PM): 负责具体的产品设计,写Design Spec。PM 队伍中,80%的PM是做这个。
发行项目经理(Release PM): 负责整个项目的流程和进度管理,制定进度表等,协调整个团队的工作。大的PM 队伍中有一人专门做这个。这是整个项目的领头人。大型的项目的成功与否,常常靠得力的发行经理的领导。
协助项目经理(Supporting PM): 负责其它产品发行需要照顾到的事情,如客户交流、和市场开发人员交流、负责beta program (初版试行)、等等。大的PM 队伍中少不了这样的人。20%的PM是做这个。

开发团队(Development Team):

开发团队领导(Development Manager): 负责管理各个开发小组,并对开发编程的工作做总体的规划。
开发组长(Development Lead): 负责管理开发工程师,也参加对开发编程的工作做总体的规划。
开发工程师(Develop Engineer, or Developer): 负责具体的编程开发。
构架师(Architect): 大的产品团队有一两个资深工程师专门做整体系统的设计规划。

测试团队(Quality Assurance or Test Team):

测试团队领导(QA Manager): 负责管理测试小组
测试组长(Test Lead): 负责管理测试工程师, 制定测试计划等
测试工程师(Tester or Test Engineer): 负责具体的测试工作
测试开发工程师(Developer in Test, or STED): 负责测试工具的开发

产品可用性团队(Usability Team):

产品可用性工程师 (Usability Engineer): 做使用性能的调查和测试,采访客户或将客户邀请来做调查
界面设计师(UI Designer): 负责具体的界面设计
产品设计师(Product Designer): 负责产品的总体设计, 特别是硬件产品。

以上这个团队并不是所有的产品队伍都有。比较小的队伍就没有这些专人,有的时候向别的队伍借用,或雇佣临时工。

客户教育或文档团队(User Education, or UE Team):

文档组长(UE Lead): 负责管理文档小组
文档编辑(UE Editor): 负责具体的文档编辑和撰写

1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标,让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单,避免并隐藏了那些多余的复杂性。站在创建者的立场,可以想象Google的几乎没有内容的主页,还有del.icio.us的简单的线条。从最终用户的角度来看,与之齐名的就是Diggdot.us所提供的初始化页面。你能够并且希望加入更多功能,但是先做好最开始的。在一个时候只做一个特性,完成一个目标。这听起来很太过于单纯化了,但它将使你更加专注,而且你也会明白我的意思。

  2、链接是最基础的思想。这就是我们称之为Web的一个理由。链接是把Web中各种实体连接起来的最基本的元素。你的信息、你的关系、你的导航,甚至是能够被写成URL的任何内容。这里有一个链接应该遵循的规则(其实你也不必严格的遵守):

  (1) Web上的任何东西都是可以被URI或者是URL所连接的。
  (2) 把所有的链接都保存为他的原始出处,这样可以让你与任何人、在任何地方、任何时候都能分享它。
  (3) 第二条中任何时候的前提是链接必须是持久的,它不会在没有任何缘由的情况下被改变或者是消失。
  (4)链接应该是人类可读的、稳定的、并且能够自我诠释的。

  3、数据应该属于创建它的人。是的,你听我的。任何用户创建的、贡献的或分享的都是他们自己的,除非他们很明显的放弃这个权力来让你自由处置。他们贡献到Web上的任何信息都应该是可编辑的、能被删除的、并且能够取消共享,无论在任何时候,只要用户愿意。这也包含了那些间接的数据,像他们所关心的记录、日志、浏览历史、网站访问信息,或者是任何可以被跟踪的信息。所有的网站必须清晰简单的陈诉那些信息是用户创建的,并且提供他们停止创建的方法,甚至是清除的方法。

  4、数据优先,体验与功能其次。无论它是文本、图片、音频还是视频,Web最终还是把这些解析为数据。换句话说,你无法脱离数据去呈现内容。所有这些数据都通过那些易于发现的URL来定位(参见第2条)。通过另一种形式来看待这些,Web最终是名词优先,动词其次,虽然最近正在向动词偏移。来看看名词的例子:日历的条目、家庭照片、股票价格。还有一些动词的例子:定一个约会、共享一张图片、买一份股票。

  5、做好积极分享一切的准备。尽可能的分享一切,你所拥有的所有数据,你所提供的所有服务。鼓励不遵循原有意图的使用,提倡贡献,不要那些需要分享的内容坚持设置为私有的。在分享与发现之后,提供易于使用的浏览方式是显而易见的需求。为什么呢:话说回来,你会从别人的共享之中受益匪浅。注意:这里没有许可让你去侵犯版权保护的法律,你不能够去分享你刻录的DVD或者是拥有商业版权音乐,因为你已经同意不会去分享这些东西。但是你可以发现并分享那些完全开放的媒体内容。一个小小的建议,你可以学习一下Creative Commons license(共创协议)。
  6、Web是一个平台;要让它成长。当然,我们还有很多其他的平台(Windows、Linux、Mac),但是那些已经不是重点了。换句话说,Web是无法脱离的平台,不会中断的平台,你可以通过各种方式去扩展的平台。你在Web上提供的数据与服务将会成为Web一部分,最终你会在Web平台的某一处扮演你的角色。扮演好你的角色并照顾好后来者。

  7、理解与信奉“阶梯性”。现在的Web越来越大,几乎蔓延到了全世界的所有国家,并且已经拥有了10亿用户。我的观点是Web的各个组成部分存在着细微的区别和不同,就像不同地方的用户那样。例如Web的设计部分:易用性永远优先于速度、可靠性、重用性与可集成性。你也应该提供同样的体验给你的用户。它已经被一次又一次的被人们在文档中强调,忠诚的用户很快会成为专业的用户,他们期待更快的速度还有更多。退一步支持他们。同样,也有很多很多的用户会进入这个阶梯的底端,如你所期待的那样。他们可能不会说你的语言,不熟悉你的文化,甚至不知道是如何到这里的。所以你需要向他们表达清楚。

  8、任何东西都是可编辑的。或者是它应该被编织的更好。要确定的是,只有很少的东西是不能被编辑的,剩下的都可以,这是一个可写的Web。这并不意味着原始内容的丢失,而通常被理解为用户能够很容易的对内容加以评论,或者评注内容是在那里发现的。如果你对此应用的好,他们能够比你所想象的做的更多(把内容串起来并且给予原始内容来创建自己的,等等)。

  9、Web上的身份是神圣的。不幸的是,这并不意味着你能够得到更多的隐私(这完全是上个世纪的想法)。但对身份的验证是必要的,你应该感谢那些只需一个邮件地址就能确定你身份的服务。这意味只要你对你的用户承诺了,你就必须保证他们的隐私安全。必要的时候,在这个世界的某处你还得为你的用户挺身而出,向当地的权威挑战。如果你没有打算那样做,你就得把实际情况告诉你的用户。另一方面,如果身份是必须的,不要试图伪装它,不然在某一天我们将会在Web上放弃我们的最后一点点隐私的权利。

  10、了解流行的标准并且使用他们。从一个消费者或者是创作者的立场来看,数据将会以不同的格式与任何一个人交换。同时这样的数据也会反过来促进标准的完善与采纳。这通常意味像RSS、 OPML、XHTML、Simple XML、JSON等简单标准的流行,而避免SOAP、XSD,还有RDF、ATOM也一样,使用它们会给我的内心带来痛苦。请你也为你所钟爱的标准投上一票来支持它们。

  11、遵循无意使用的规律。如果你把非常有趣的数据和服务用广泛使用的格式开放和共享出去,你将会得到你所应得的,其他人也将会基于你的那一块Web平台来构建。或许还会从别人那里得到更多,所以为这个做一下准备比较好。我已记不清有多少次我看到一个播客(podcasting)服务因为流行过渡而导致服务垮掉,就是因为他们被 Slashdot和del.icio.us给收录了。这一点要知道:网络上的大量化意味着如果一个内容非常有趣,即使是一个很小的角落也会得到惊人的访问量。鼓励使用这种方式,它还是非常有价值的,前提是你要有所准备。

  12、粒化你的数据与服务。我们应该在很早以前就明白这些,大规模集成的数据仅仅适用于无需管理的下载与批量操作。分解你的数据,让他们独立成可描述的URL地址,对你的服务也一样。反过来说,你不要创建一些巨大的、复杂的、像圣诞树那样的数据结构和服务。保持简单,要非常的简单。让这些分离的片断能够容易的被重组和发现。

  13、提供用户能够单独受益的数据和服务。渐渐依赖于这种社会化参与是存在风险的,你需要让你的用户有一点点动机来贡献时间、热情和信息,除非他们能够直接受益。社会化分享比个体行为的利益大很多,除非你能够激发用户的个人动机,否这你将无法享受这份厚礼。

  14、让用户组织并过滤信息。不一定是必须的,但却是非常重要的。让用户以他们自己的方式来标注和组织数据,因为你自己是永远无法及时的处理他们的。用户会按照他们自己理解的最佳方式来处理并构建。要保证你的Web服务能够按照用户所需所想的方式来工作。这也是标签(tagging)和通俗分类(folksonomies )的方式如此成功的主要因素。

  15、提供丰富的用户体验。Web一直都在和本地的应用程序进行着激烈的竞争。为什么?因为本地程序还是感觉上好一些,速度也快一些。但是这不会长久的(确信在5年或者15年后,这种竞争就不存在了)。是的,我在谈论Rich Internet Applications, Ajax, 还有那些不可思议的交互应用。他们让Web成为了一个真正的“无平台”的平台,如果你知道我是怎么想的。

  16、信奉并支持快速改进和反馈。这个通常意味着加快步伐,但也意味着使用轻量级的工具、技术和不要做出那些适得其反的痛苦决定(例如使用一个被层层环绕的Ajax框架来代替可以通过混合来实现的,或者用C++来构建所有的东西,其实使用Ruby会更好一些)。这同时也意味着需要一个非常快速的方式来处理错误报告,修复Bug,释放新版本。从一个用户的角度来看,报告你所发现的任何问题,还有那些你经常抱怨的地方,甚至那些都不是一个Bug。

  当然,Web 2.0是一个极其广泛和深奥的话题,没有一个人能够列举出它的所有重点和特征。如果你对此充满了兴趣,请花一点时间来补充我没有提到的地方。我想这就是Web 2.0的参与性吧!

  原作者的这个标题借鉴了Bruce Eckel的两本畅销书的名字:《Thinking in C++》和《Thinking in Java》,《C++编程思想》与《Java编程思想》,在此说明一下为什么要这样翻译这个题目:)

当一个局域网中存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置路由器。如果花费上万元资金购买一台路由器,仅仅用于连接局域网中的两个网段,实在不值得。其实我们完全可以利用 Windows 2000中的软路由:

  软路由安装前的准备: 

  1、在欲设置为软路由的计算机中安装Windows 2000 Server。 

  2、在欲设置为软路由的计算机中安装两块网卡。 

  3、在欲设置为软路由的计算机中安装TCP/IP协议,并为两块网卡分别配置IP地址信息(例如,192.168.1.1/255.255.255.0和10.0.0.1/255.0.0.0),使两块网卡分别处于两个不同的IP网段。 

  软路由的安装步骤: 

  以域用户管理员的身份登录,并执行下述操作。 

  1、依次单击“开始/程序/管理工具/路由和远程访问”,打开“路由和远程访问”窗口。 

  2、单击“操作”菜单,选择“配置并启用路由和远程访问”命令,运行“路由和远程访问服务器安装向导”,单击[下一步]。  

  3、由于在这里要安装的是路由器,所以,选择“网络路由器”选项,并单击[下一步]。 

  4、通常情况下,局域网计算机中只安装TCP/IP协议和NetBEUI协议,而且只有TCP/IP协议拥有路由功能。AppleTalk协议仅用于苹果计算机之间的通讯。由于TCP/IP协议已经显示于“协议”列表之中,因此,选择“是,所有可用的协议都在列表上”选项,并单击[下一步]。 

  5、本例中不安装远程访问服务,因此,选择“否”,不使用请求拨号访问远程网络。单击[下一步]。

  6、完成“路由和远程访问服务器安装向导”,单击[完成]。 

  软路由的设置: 

  1、依次单击“开始/程序/管理工具/路由和远程访问”,打开“路由和远程访问”窗口。 

  2、右键单击要启用路由的服务器名,然后单击“属性”,显示“属性”对话框。 

  3、在“常规”选项卡上,选中“路由器”复选框,并选择“仅用于局域网(LAN)路由选择”选项,单击[确定]。

  4、在“路由和远程访问”窗口中,打开左侧目录树“IP路由选择”,右击“常规”,并在快捷菜单中选择“新路由选择协议”,显示“新路由选择协议”对话框。

  5、在“路由选择协议”列表中选中“用于Internet协议的RIP版本2”,并单击[确定]。注意,在中小型网络中建议选择RIP协议,在大型网络中则选择OSPF协议。 

  6、在目录树中右击“RIP”,并在快捷菜单中选择“新接口”,显示“用于Internet协议的RIP版本2的新接口”对话框。 

  7、在“接口”列表框中选择第一个网络接口,即“本地连接”,单击[确定],显示“RIP属性”对话框。 

  8、RIP属性取系统默认值即可,单击[确定]。 

  9、重复以上6至8操作,为RIP添加第二个网络接口,即“本地连接2”。 

  客户端的配置 

  若欲实现192.168.1.0和10.0.0.0两个IP地址段中计算机之间的互访,在安装并设置好IP路由后,还必须对客户机做相应的设置。对于 192.168.1.0地址段中的计算机,需将其默认网关设置为192.168.1.1,而对于10.0.0.0地址段中的计算机,则需将其默认网关设置为10.0.0.1。 

  设置方法如下:  

  1、依次打开“开始/控制面板/网络”,打开“网络”对话框。 

  2、在“配置”选项卡的“已经安装了下列网络组件”列表中,选择“TCP/IP”中已列出的设备,单击[属性]按钮,显示“TCP/IP属性”对话框。 

  3、选择“网关”选项卡,在“新网关”对话框中键入“192.168.1.1”(假如IP地址位于192.168.1.0~192.168.1.255 之间)或“10.0.0.1”(假如IP地址位于10.0.0.0~10..255.255.255之间),单击[添加]。 

  4、单击[确定],完成网关设置,并根据系统提示重新启动计算机。

Blog开通一个月了!自我祝贺一下!虽然没有多少的访问量,但是毕竟Blog是个记录自己感觉的地方,只要自己觉得开心就好。

其间我把Blog从C-Blog搬迁到了SaBlog-X上,因为C-Blog有个致命的问题就是会在(反斜杆)和"(英文双引号)前面自动的添加(反斜杆)。这使得我的许多程序代码出错,所以我不得不把Blog搬迁到SaBlog上。虽然SaBlog目前还没有留言簿和评论回复功能,不过相信它会尽一步的完善的。