有等号还是没等号

初学者往往搞不清楚“以”上是 “>” 还是 “≥”,简单总结一下:凡是“以x” 一般都是包含分界点的。

汉语和日语的情况类似,甚至是有法律规定的: 《中华人民共和国民法通则》 第一百五十五条 民法所称的”以上” 、 “以下” 、 “以内” 、 “届满” ,包括本数;所称的” 不满” 、 “以外” ,不包括本数。

参考文献:

契約書用語: 以前・以後・以降・前・後・以内・内・間
契約書用語: 以上・以下・超・未満
中华人民共和国民法通则

转载还是链接,这是一个问题

今天整理旧的资料,发现过去收藏的好多网站不是没了,就是变成了成人网站。我又想起了 keso 大侠的文章 《与其转载,不如链接。但是时间证明,copy 还是 link,不是那么简单的一个问题。

是的,互联网很强大,大量的转载,导致互联网上出现大量的冗余信息。但我还是不能在同意 “转载基本上没有意义”这种说法。可能对于知识性的文章,还是 copy + link 才是正解。冗余=备份。知识需要备份。

Google 了一下,原来早就有人受过同样的伤了:只能转载,不能链接

完美解决 Windows 7 中的 VMware 的网络问题

装在 Windows 7 中的 VMware 6.5 内的 Client 是无法上网的。前些天在 www.pcbeta.com 的 wwwlywj 网友的个帖子的启发下,找到了较为完美的解决方法:

所用软件

  • Windows 7 build 6801
  • VMware 6.5.1 build-126130
  1. 用“Run as Administrator”方式启动 VMware。
  2. Edit -> Virtual Network Editor
  3. 在 DHCP 里面删掉所有内容,按 Apply 来禁用 VMware 自带的 DHCP 服务。
  4. 进入控制面板 Control Panel\Network and Internet\Network Connections。
  5. 右击本地连接,选“Properties”。
  6. 在 Sharing 选项卡里面选中“Allow other network users to connect through this computer’s Internet connection”。下面选VMnet1。按“OK”。
  7. 只要把 Client 的网络类型选成 Host-only 就可以正常上网了。

希望 VMware 的下一个版本能够解决这个问题。

参考文献:http://bbs.pcbeta.com/viewthread.php?tid=348087&highlight=vmware

实战给 Windows 服务器升级硬盘

单位的服务器250G硬盘满了。新买了2个1T的。目前没有域,如果重装系统的话,不得不重新建用户,设权限,很麻烦。幸好可以借助Windows Server 的镜像卷(软 RAID1)功能实现无缝升级。

步骤0:先把原来的 RAID0分区给备份掉。这个没法镜像。反正也没啥重要的东西,直接copy出去就行了。
步骤1:把原来的硬盘2拿掉,换上一个新硬盘。

step1
刚换上一个硬盘的样子

步骤2:在磁盘管理里面删掉原来的硬盘2。给启动分区和数据分区做镜像。
我在这一步走了一点弯路:

step2 wrong
错误的分区
step2 right
正确的分区

看出来错在哪儿了没?对,启动镜像的首扇区必须和原来的启动盘的相同,否则可能无法启动。
原来的盘有个31M的DELL的分区,所以新的盘也必须预留出来这一块。

步骤3:拿掉旧的硬盘1,尝试用新的硬盘启动。
如果这一步成功,基本上就万事大吉了。不成功参见步骤2。

步骤4:从磁盘管理删掉纳掉的旧硬盘,扩展数据分区。(如果先镜像了,就不让扩展了。)

步骤5:挂上第2块新硬盘,继续给启动分区和数据分区镜像。并重建 RAID0 分区, 把原来的RAID0分区的数据copy回来。

大功告成
大功告成

整个过程耗时半天左右。除了中间1次重新启动以外,整个过程并不影响服务器的使用。这个办法对于仅有一块硬盘的服务器也同样适用,只是省了步骤4和步骤1的一部分。

用 Javascript 控制记事本

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.AppActivate("notepad");
WshShell.Run("notepad", 1, false);
WScript.Sleep(500);
WScript.Sleep(300);
WshShell.SendKeys("1{+}");
WScript.Sleep(150);
WshShell.SendKeys("2");
WScript.Sleep(150);
WshShell.SendKeys("~");
WScript.Sleep(150);
WshShell.SendKeys("*3");
WScript.Sleep(150);
WshShell.SendKeys("~");
WScript.Sleep(250);

Vim 笔记

关于 \t 和 \n 要注意的是,如果你要匹配它们,也就是说出现在匹配串中的时候
要写 \t 和 \n,但是如果你要替换成它们,就不应该直接写 \t \n,而要用 Ctrl+V
或者 输入一个蓝色的特殊字符。

例如:
:s/\n/ABC^M/g
:s/\t/^T^T/g

而下面两个写法都是不对的:
:s/\n/ABC\n/g
:s/^T/^T^T/g

备份 Oracle

  1. 表单位
    1. 备份指定表
      exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 file=exp_icdmain_table_yyyymmdd.dmp log=exp_icdmain_table_yyyymmdd.log tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    2. 恢复所有的表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log
    3. 恢复其中一部分表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log tables=commoninformation,serviceinfo
  2. 用户单位
    1. 备份指定用户的所有对象
      exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 owner=icdmain file=exp_icdmain_user_yyyymmdd.dmp log=exp_icdmain_user_yyyymmdd.log
    2. 恢复指定用户的所有对象
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log
    3. 恢复指定用户的的一部分表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log tables=commoninformation,serviceinfo
  3. 整体备份
    1. 备份整个数据库
      exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y inctype=complete file=exp_fulldb_yyyymmdd.dmp log=exp_fulldb_yyyymmdd.log
    2. 整个数据库的增量备份
      exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y inctype=incremental file=exp_fulldb_zl_yyyymmdd.dmp log=exp_fulldb_zl_yyyymmdd.log
    3. 从整体备份恢复所有对象
      imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y full=y file=exp_fulldb_yyyymmdd.dmp log=imp_fulldb_yyyymmdd.log
    4. 从增量备份恢复所有对象
      imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y full=y inctype=restore file=exp_fulldb_zl_yyyymmdd.dmp log=imp_fulldb_zl_yyyymmdd.log

缩小 Oracle 表空间

———– maxshrink.sql ———————————-

SET verify off
COLUMN file_name format a50 word_wrapped
COLUMN smallest format 999,990 heading "Smallest|Size|Poss."
COLUMN currsize format 999,990 heading "Current|Size"
COLUMN savings  format 999,990 heading "Poss.|Savings"
break ON report
compute SUM OF savings ON report
 
COLUMN VALUE new_val blksize
SELECT VALUE FROM v$parameter WHERE name = 'db_block_size'
/
 
SELECT file_name,
       CEIL( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
       CEIL( blocks*&&blksize/1024/1024) currsize,
       CEIL( blocks*&&blksize/1024/1024) -
       CEIL( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
FROM dba_data_files a,
     ( SELECT file_id, MAX(block_id+blocks-1) hwm
         FROM dba_extents
        GROUP BY file_id ) b
WHERE a.file_id = b.file_id(+)
/
 
COLUMN cmd format a75 word_wrapped
 
SELECT 'alter database datafile '''||file_name||''' resize ' ||
       CEIL( (nvl(hwm,1)*&&blksize)/1024/1024 )  || 'm;' cmd
FROM dba_data_files a,
     ( SELECT file_id, MAX(block_id+blocks-1) hwm
         FROM dba_extents
        GROUP BY file_id ) b
WHERE a.file_id = b.file_id(+)
  AND CEIL( blocks*&&blksize/1024/1024) -
      CEIL( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/

转移 Oracle 的表空间

1.将表空间置于只读

只读状态可以使数据仍然可为用户访问.

ALTER tablespace tablespace_name READ ONLY;

2.物理拷贝文件

3.将表空间offline

ALTER tablespace tablespace_name offline;

4.rename数据文件

ALTER DATABASE RENAME file 'old_dir_file' TO 'new_dir_file';

5.将表空间联机

ALTER tablespace tablespace_name online;

6.将表空间置于read write模式

ALTER tablespace tablespace_name READ WRITE;