0%

  1. 基础

HideRun.vbs

1
CreateObject("WScript.Shell").Run "cmd /cD:\test.bat",0

其中D:\test.bat是你的批处理路径

HideRun.bat

1
2
3
echo CreateObject("WScript.Shell").Run "cmd /cD:\test.bat",0>$tmp.vbs
cscript.exe /e:vbscript $tmp.vbs
del $tmp.vbs

这个批处理其实不能使其批处理本身隐藏,但是下面大部分隐藏调用批处理的原理和基础。

HideRun.js

1
new ActiveXObject('WScript.Shell').Run('cmd /cD:\Test.bat',0);

用Javascript有什么好处呢?js的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 ; 分隔写成一行。要注意的是:js要区分大小写,方法必须用括号,结尾必须有分号。所以就成了下面的命令:

1
mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /cD:\test.bat',0);window.close()"
Read more »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
create function dbo.regexReplace
(
@source varchar(5000), –原字符串
@regexp varchar(1000), –正則表換式
@replace varchar(1000), –替換值
@globalReplace bit = 0, –是否是全局替換
@ignoreCase bit = 0 –是否忽略大小寫
)
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end

return @result
end
GO

UTF-8 这种编码已经是大势所趋,但是还有不少中文的文档保留着老式的 GB2312编码,而且只要你要和 Windows 打交道,就免不了要处理 GB2312 的问题,比如处理从 Windows 下拷过来的程序源代码、文本文件、字母文件之类。

编码转换的方法估计大多数同学都知道了,不过还是有必要再强调一下,我就是老忘。

Linux 下的 iconv 命令可以来处理字符编码的转换,基本命令格式如下:

1
iconv -f 原始编码 -t 目标编码 文件名 > 新文件名

-f 代表 from,-t 代表 to。

假设我要把 text.txt 从 GB2312 编码转换成 UTF-8,并且保存为 text-utf-8.txt 的话,那么命令如下:

1
iconv -f GB2312 -t utf-8 text.txt > text-utf-8.txt

不过有的时候,转换会报错,很可能的原因是原文件中有些字符超过了 GB2312 的范围,那么,这个时候,我们可以把 GB2312 改成它的超集 GB18030,一般就解决问题了:

1
iconv -f gb18030 -t utf-8 text.txt > text-utf-8.txt

首先进行声明
use Encode;

  • gbk转uft-8:
    $line = encode("utf-8",decode("gbk",$line));

    $line = encode_utf8(decode("gbk",$line));

  • utf-8转gbk:
    $line = encode("gbk", decode("utf8", $line));

  • uft-8转gb2312:
    $line = encode("gb2312", decode("utf8", $line));

测试可用!by:Neeao


perl中对URL地址进行编码
URL中如果有中文的字符,要先对其进行编码才能进行下一步的处理。

  • 用替换方法进行编码:

Url encode:对 \n 不转码

1
perl -pe 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2x",ord($1))/eg' keywords.list
  • 用替换方法进行解码:

Url Decode:

1
perl -pe 's/%(..)/pack("c", hex($1))/eg' keywords.list
  • 用URI::URL模块进行编码
1
2
3
4
use URI::URL;
my $str = "http://www.google.com/lxmxn's blog&b=Hello,perl";
my $url = URI::URL->new( $str );
print $url;
  • 用URI::Escape模块进行编码
1
2
3
4
5
use URI::Escape;
my $str='北极神话';
print uri_escape($str);

#result:%B1%B1%BC%AB%C9%F1%BB%B0

mysqldump怎么样才能够将导出的sql中,每条记录对应一个insert语句,默认总是导出一个长的insert语句,如下所示:

1
2
3
4
5
6
7
[zzx@localhost ~]$ mysqldump –compact -uroot test t1> a
[zzx@localhost ~]$ more a
CREATE TABLE `t1` (
`id` int(10) default NULL,
UNIQUE KEY `idx_1` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `t1` VALUES (1),(2),(3);

我们希望把导出语句中的insert改为:

1
2
3
INSERT INTO `t1` VALUES (1);
INSERT INTO `t1` VALUES (2);
INSERT INTO `t1` VALUES (3);

这样在不支持insert多值的数据库中,可以很方便的进行迁移,其实方法很简单,只需要加 –extented-insert=false即可:

1
2
3
4
5
6
7
8
9
[zzx@localhost ~]$ mysqldump –compact –extended-insert=false -uroot test t1> a
[zzx@localhost ~]$ more a
CREATE TABLE `t1` (
`id` int(10) default NULL,
UNIQUE KEY `idx_1` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `t1` VALUES (1);
INSERT INTO `t1` VALUES (2);
INSERT INTO `t1` VALUES (3);

我们从mysqldump中可以看到此参数的默认值为true:

1
2
3
4
[zzx@localhost ~]$ mysqldump –help|grep extended-insert
......
extended-insert TRUE
......

  1. 输出时使用printf
  2. 输出后,利用 tr -d 'n' 实现替换换行
  3. awk 'BEGIN{ORS=""}{print $0;}' //推荐
  4. awk '{printf("%s",$0);}'

命令
nice(1): 以指定优先级运行程序

1
2
nice [OPTION] [COMMAND [ARG]…]
nice –n 1 ls

renice(8): 调整运行进程的优先级

1
2
renice priority [[-p] pid …] [[-g] pgrp …] [[-u] user …]
renice +1 987 -u daemon root -p 32

API
nice(2): 改变进程优先级

1
int nice(int inc);

getpriority(2): 获取优先级

1
int getpriority(int which, int who);

setpriority(2): 设置优先级

1
int setpriority(int which, int who, int prio);

Reference:
http://unix-cd.com/unixcd12/article_4602.html

不用还不知道,原来设定filezilla的虚拟路径还有语法。关键处解决了,设定就简单多了。

方法如下:
按下filezilla server的「edit」下拉选单选择「user」,进入user窗口之后,找到「shared folders」。设定好主要的目录(home dir)后,就可以设定其它次要的目录。

设定其它目录的方法如下,首先点选「Add」键,依次把其余的目录设置。但要注意的是,如果仅仅把别的目录添加进 去,那么从远程登入连接后,会发现除了主目录和它的子目录之外,另外设置的目录是看不见。
为了解决这个问题,必需要透过filezilla server内建的「虚拟路径」(Aliases)的设置。

虚拟路径,就是在客户端看到的目录结构。由于一个用户只能有一个主目录,别的目录如果不映像成虚拟目录的话,客户端将看不到它。所以只有把除了主目录之 外的其它目录,虚拟成主目录的子目录,这样在客户端才能看到。

所 以为了要让其它目录能够顺利在的客户端显示,当放置新的目录之后,都要对其作「虚拟路径」的设定,设定的方式假设主目录为C:FTP,新设置的目录为 E:UPLOAD。在新设置的目录按下鼠标右键,在下拉选单中选择「Edit aliases」就可以编辑「虚拟路径」。

编辑的规则:要把E:\UPLOAD目录作为客户端uploae的目录,在「Edit aliases」输入「C:\FTP\upload」按下「ok」确定就可以了。上述的例子中,编写的规则在于路径的前面必须是主目录的路径。如此一来当使用者登入到ftp server时,才能顺利的显示出upload数据夹。

和其他高级程序设计语言一样,Shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令创建非常复杂的程序。

与传统语言不同的是,Shell用于指定条件值的不是布尔运算式,而是命令和字串。

  1. 测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件3个方面的测试,其测试符和相应的功能分别如下。

  • 数值测试:
    -eq 等于则为真。
    -ne 不等于则为真。
    -gt 大于则为真。
    -ge 大于等于则为真。
    -lt 小于则为真。
    -le 小于等于则为真。

  • 字串测试:
    = 等于则为真。
    != 不相等则为真。
    -z 字串 字串长度伪则为真。
    -n 字串 字串长度不伪则为真。

Read more »

Windows 7 测试版中添加了好几种新字体, 其中大部分是为了解决某一种语言的显示问题而制作, 不过这一款 Gabriola 则是额外献给大家的礼物. Gabriola 由 Tiro Typeworks 的 John Hudson 所设计, 属于 TT-OT 字体, 其中包含了相当多的花体字母, 花饰, 连字, 以及配套的扩展拉丁字母, 体积达到了 3MB 之巨… 微软在 PDC 大会上还特地介绍到它. 刚装了 Windows 7, 找出来分享给大家.

点击下载