以下内容只针对vmware(我只在Server上试过),不知道其他软件怎么样。
遇到的问题是这样的,有朋友的虚拟机出了点问题,想让我帮忙看看,可是如果通过 QQ远程连上去,再打开虚拟机会很卡,所以想到,是否可以让我直接SSH连接上,但因为虚拟机是NAT方式的连接,即IP是私有的,无法直接连上,找了些资料,发现NAT端口映射可以搞定。
以下是资料介绍:原文来自:http://www.linuxso.com/linuxrumen/141.html
NAT中隐藏的端口映射,说明一下环境,利用当然是VMnet8网络连接,在虚拟机中架设win2003的WEB服务器利用WEB默认80端 口,IP为192.168.10.4,真实主机winxp系统有两个IP,内网连接192.168.10.1,外网上IP为 221.196.193.220。外网其他计算机,可以通过访问我的真实主机221.196.193.220,访问到win2003的WEB。
首先说下原理,因为WEB服务是利用80端口,所以在Win2003上建立了WEB服务,80也就自动被打开,因为Win03是内网 ip(192.168.10.4),外网无法通过访问这个地址,找到我的web服务,但是可以通过外网地址(221.196.193.220)访问我的 XP系统,XP又能连接到Win2003,所以把80映射到我的Winxp的系统上是有可能的!
那么废话了,现在说实际操作,打开--编辑--虚拟网络设置--NAT选项卡,如下图:

选择编辑,打开NAT设置,这里保持默认就可以,如果你对你自己的网络很熟悉,可以更改网关等项目

直接打开端口转递,这里就是NAT的端口映射配置了,用实例的WEB服务举例,因为WEB属TCP连接,所以在TCP和UDP上我都做了,转换,点击添加

主机端口,填入真实主机要被转换的端口,这里我用FTP又举了个例子,在真实的主机上1021上建立了FTP服务,这样访问时就需要ip后加:,如ftp://192.168.1.1:1021便可正常访问了,这里因为我的XP上没有web服务所以主机端口添的依旧是80.
虚拟机IP地址,填入内网虚拟机的IP,这个是Win2003的IP,服务端口,对应那个服务就填入哪个端口,你可以参考其他文章,常用端口.
描述,无所谓了,写个自己能看懂的就行,不些也没问题啊~
这样一来,你的朋友就可以在IE下输入http://221.196.193.220/ 访问到你虚拟机中Win2003下的WEB服务了,什么?还不可以?自己访问成功可是其他人都不行?
呵呵,不要急,如果你是WINXP SP2的系统,去看看你的防火墙设置吧,添加端口,不用我说了吧,安全起见,把TCP和UDP都加到例外中,就ok了~
PS:1、在虚拟机里配置好IIS和动态域名解析软件
2、如果你的主机处于内网中,请在路由器上设置端口映射,如果主机直接连接互联网,可以忽略此步骤。
-------
嗯,我是作了22端口映射,然后ssh主机的IP,果然能够连上,这下子操作起来访问很多了。
这篇 文章已经是07年的了,不过,我一直没有关注过drupal的db类,所以对于这方面我也根本 就没有在意过。8过,我在我的siterpc中,我也是采用了sprintf的写法,不是为了安全,而是为了格式化。因为在siterpc里我们几乎不接受外部变量,所有的变量都是由我们自己传入,所以对于安全方便忽略了很多。但还是用sprintf来格式化SQL语句了。
因此看到这篇drupal的db_query安全过滤,突然发现,可以让我的代码少写很多了。(参数可变时请使用vsprintf)
以下是原文 :
Drupal通过C风格的字符串输出格式实现了对sql语句的安全过滤。
使用方法:
PHP代码
- db_query("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type);
-
- db_query(sprintf("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type));
drupal db_query核心代码如下:
PHP代码
-
-
-
- define('DB_QUERY_REGEXP', '/(%d|%s|%%|%f|%b)/');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- function db_query($query) {
- $args = func_get_args();
- array_shift($args);
- $query = db_prefix_tables($query);
- if (isset($args[0]) and is_array($args[0])) {
- $args = $args[0];
- }
- _db_query_callback($args, TRUE);
- $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
- return _db_query($query);
- }
-
-
-
-
- function _db_query_callback($match, $init = FALSE) {
- static $args = NULL;
- if ($init) {
- $args = $match;
- return;
- }
-
- switch ($match[1]) {
- case '%d':
- return (int) array_shift($args);
- case '%s':
- return db_escape_string(array_shift($args));
- case '%%':
- return '%';
- case '%f':
- return (float) array_shift($args);
- case '%b':
- return db_encode_blob(array_shift($args));
- }
- }
简单的对一些输入做了处理。参考:
http://drupal.org/node/101496
原文来自于:http://www.luochunhui.com/id/315
项目要求写小结,其实我也很奇怪,不过想想这是领导安排的任务,这还是要完成的。
项目从10月份开始,1月1日上线,共经历了整整 三个月,在这三个月内,我深刻贯彻项目小组领导的精神,按照需求根据进度逐步开展代码的编写工作。
在项目初期需求尚未明确的时候,领导给予了我们充分的授权,但这也使得我们在没有人带领下而出现了迷惘。正所谓,大海航行靠舵手,领导在中后期果断的介入了项目,使得我们在迷惘的灰雾里找到方向。
正是由于领导的后期介入,我们在需求分析、系统评估、代码编写、小组协作方面得到了充分的支持,使得项目的进展极其顺利,最终我们在项目上线前一星期完成了编码工作,并留下了一周的充分时间交由测试小组进行测试并进行程序的BUG修复工作。
在这次的项目过程中,我充分学习到了如何进行小组协作,并在小组协作方面有了一定的心得,对于项目的控制、协调也有了一定的了解。在小组协作的时候,PHP与JAVA代码之间的通讯、协议的制定等也有了长足的进步,可以毫不夸张的说,在下次进行协作的时候,小组之间的联调效率可以上升100%左右。
在项目的进行中,也曾因为理念不同以及小组协作方面与领导产生一定的分歧,但由于领导的大度使得这些问题最终都得到了解决。同时为了照顾加班的同志,领导与加班人员共进退,来得最早走的最晚,使得在加班的时候不显得孤独。
通过三个月的项目进程,使得我在代码编写能力、小组协作能力、进度管理经验、需求分析等方面有了极大的提高,迫切希望下一次项目的到来,可以让我在公司能够学到更多的知识。