直接下载的CHM文件打开无法显示内容的解决办法

今天下载了个CHM文档,打开后一片空白,原以为下载的文件有问题,去下载页面重新时发现上面附有一个解决方案的链接,摘抄整理如下,以供参考。

 下载的CHM文档,在NTFS分区打开无法显示其内容,点开任何一个页面都是一片空白。解决办法:

1、上传文件时将chm打包为rar、zip或7z等压缩文件格式

2、修改直接下载后的CHM文件属性:鼠标右键菜单打开文件属性,你会发现下面有这样的安全提示:“此文件来自其他计算机 可能被阻止以帮助保护该计算机”,右边有个解除锁定的按钮,点击一下,再点确定按钮,再次打开这个CHM文档,就一切正常了。

PHP框架大全

PHP的框架不少,先弄个列表,有空慢慢了解。

1. Yii,是一个基于组件的高性能的PHP的框架,用于开发大规模Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主体化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。而且这个框架的价格也并不太高。

2. Symfony 2

3. Laravel

4. CakePHP

5. Zend Framework:

6. Kohana

7. FuelPHP

8. Prado

9. Phalcon

10. Aura

11.CodeIgniter,比较容易上手的PHP框架。CodeIgniter是一个应用开发框架——一个为建立PHP网站的人们所设计的工具包。其目标在于快速的开发项目:它提供了丰富的库组以完成常见的任务,以及简单的界面,富有条理性的架构来访问这些库。使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间。

12.ThinkPHP,国人开发的PHP框架

13.Yaf,鸟哥用C开发的PHP扩展框架,也是国人的

SVN的trunk、branch与tag的用法

 Subversion有一个很标准的目录结构,是这样的。

比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是

svn://proj/|+-trunk+-branches+-tags

这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。

 

对于这几个开发目录,一般的使用方法有两种。我更多的是从软件产品的角度出发(比如freebsd),因为互联网的开发模式是完全不一样的。

第一种方法,使用trunk作为主要的开发目录。

一般的,我们的所有的开发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。当下一个版本/阶段的开发任务开始,继续在trunk进行开发。

此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。

例如,刚刚发布1.0,正在开发2.0,此时要在1.0的基础上进行bug修正。

按照时间的顺序

 

1.0开发完毕,代码冻结 

基于已经冻结的trunk,为release1.0打tag

此时的目录结构为

svn://proj/

             +trunk/ (freeze)

             +branches/

             +tags/

                     +tag_release_1.0 (copy from trunk) 

2.0开始开发,trunk此时为2.0的开发版 

发现1.0有bug,需要修改,基于1.0的tag做branch

此时的目录结构为

svn://proj/

             +trunk/ ( dev 2.0 )

             +branches/

                           +dev_1.0_bugfix (copy from tag/release_1.0)

             +tags/

                     +release_1.0 (copy from trunk) 

在1.0 bugfix branch进行1.0 bugfix开发,在trunk进行2.0开发 

在1.0 bugfix 完成之后,基于dev_1.0_bugfix的branch做release等 

根据需要选择性的把dev_1.0_bugfix这个分支merge回trunk(什么时候进行这步操作,要根据具体情况) 

这是一种很标准的开发模式,很多的公司都是采用这种模式进行开发的。trunk永远是开发的主要目录。

 

第二种方法,在每一个release的branch中进行各自的开发,trunk只做发布使用。

这种开发模式当中,trunk是不承担具体开发任务的,一个版本/阶段的开发任务在开始的时候,根据已经release的版本做新的开发分支,并且基于这个分支进行开发。还是举上面的例子,这里面的时序关系是。

 

1.0开发,做dev1.0的branch

此时的目录结构

svn://proj/

             +trunk/ (不担负开发任务 )

             +branches/

                           +dev_1.0 (copy from trunk)

             +tags/ 

1.0开发完成,merge dev1.0到trunk

此时的目录结构

svn://proj/

             +trunk/ (merge from branch dev_1.0)

             +branches/

                           +dev_1.0 (开发任务结束,freeze)

             +tags/ 

根据trunk做1.0的tag

此时的目录结构

svn://proj/

             +trunk/ (merge from branch dev_1.0)

             +branches/

                           +dev_1.0 (开发任务结束,freeze)

             +tags/

                     +tag_release_1.0 (copy from trunk) 

1.0开发,做dev2.0分支

此时的目录结构

svn://proj/

             +trunk/ 

             +branches/

                           +dev_1.0 (开发任务结束,freeze)

                           +dev_2.0 (进行2.0开发)

             +tags/

 

 

Call to undefined function curl_init()的解决方案

   最近在开发一个天猫医药馆接入的小页面。遇到一个PHP环境造成的错误,在使用curl时出现错误Fatal error: Call to undefined function curl_init()

  试了各种办法,即将放弃的时候终于找到了正确的解决办法,现摘录如下,以备不时之需。

今天部署一个PHP应用的时候碰到一个问题,打开网页的时候显示Fatal error: Call to undefined function curl_init(),解决的方法如下

1)在php.ini里把extension=php_curl.dll的注释解开,重启apache,然后页面显示依然显示。

2)检查一下php_curl.dll的依赖,结果发现下面这几行东西 

Module: php_curl.dll

===========================

   libeay32.dll    

ssleay32.dll 

将上面的两个DLL另存至C:WINDOWSsystem32目录下;再次重启apache,发现问题还是有。

 3) 想了想,最后经过Dependency Walker软件的帮助,终于分析出了相应的DLL文件没有,libeay32.dll和ssleay32.dll是php自有的,找出了没有zlib.dll文件,然后到BAIDU去找这个缺少的DLL下载后COPY到C:WINDOWSsystem32目录下。然后重启APACHE。—问题解决了。

 

 

PXE网络启动PE维护工具:小小强Pe工具箱PXE版

如果电脑出问题了,手上没光盘也没U盘,怎么办?

现在大部分网卡都支持网络启动,在BIOS里开启网卡的网络启动,并设为第一启动项。然后就可以用PXE来启动PE进行维护操作了。

自己折腾比较麻烦,有好多现成的可以使用,如:

小小强Pe工具箱PXE版V4.0,度娘上找了好久没找到,最后在GG上找到下载地址:http://dl.dbank.com/c09nr3vubg

 测试了下,用自带的haneWINDHCP客户机无法启动,改用TFTPd32,根据使用说明设置引导文件,能启动。功能挺丰富的。

点击任何链接弹出很多广告窗口问题的解决

  前几天,有一个反应同事电脑有问题,经常点击网页上的一个链接出现的不是该链接的页面,而是出现一个广告页面,同时还会弹出好多其它广告页面,经过杀毒软件查杀也没查出什么。

  我用其它工具也没找到可疑的文件,查看浏览器加载项,也没有不正常的项目。一时束手无策,只好暂时搁置。

  今天又有一个同事来反应也有这样的问题,这时另一个同事听到了,也反应说也遇到这问题。我想,难道是局域网里里病毒,劫持了网络?但是又有好多同事没问题。

  进到网关里,查看WAN状态,发现获取到的DNS服务器为106.186.28.68,查了下,是个日本的IP,看来问题出在这了,手动设定下,搞定。但是这个是拨号连接自动从电信那获取,为什么是这个呢?

VirtualBox 网络设置详解

VirtualBox 有6种网络模式,下面将逐一讲解。

1、NAT〈网络地址转换模式〉

  VirtualBox 中虚拟的主机(以下简称:虚拟主机)并不真实存在于网络中,宿主机和宿主机网络中的任何主机都不能直接访问虚拟主机,各虚拟主机也互不相通。虚拟主机能访 问宿主机,以及宿主机能访问的任何主机。虚拟主机访问网络是先通过 VirtualBox 转换后再发送出去的,数据接收也是先由 VirtualBox 接收后再转换转发到虚拟主机。

  为了解决其它主机不能访问虚拟主机的问题,VirtualBox 提供了端口转发功能,使得我们可以设置特定的端口供实体网络访问。

  虚拟主机网络参数默认从 VirtualBox 的虚拟 DHCP 服务器 获取。

2、Bridged Adapter〈桥接模式〉

  虚拟主机通过 VirtualBox 桥接到宿主机的一个网卡中,就像真实存在于宿主机网络中的一台主机一样。虚拟主机能与宿主机和宿主机网络中的主机完美互通。被桥接的网卡会开启混杂模式。

  虚拟主机网络参数 : 手动配置成桥接的宿主机网卡的同一网段,或通过宿主机网络中的 DHCP Ser 获取。

  注意:1.需要加载模块vboxnetflt;2.如果宿主机在一个受限制的网络虚拟主机是不能访问互联网的,如:宿主机使用ADSL、使用使用代理或VPN、宿主机网关做了MAC地址限制……

3、Internal〈内部模式〉

  虚拟机与外界完全分开,虚拟机与宿主机网络不能互通,只有 同一名称(如:intnet)的内部网络模式的虚拟机之间才能互相访问 ,还有一个条件是在同一网段。

  虚拟主机网络参数 : 默认不分配IP,需要自已手动设置。

4、Host-only Adapter〈宿主机模式〉

  VirtualBox 在宿主机中虚拟一个 host-only 网卡,然后把虚拟主机桥接到 host-only 网卡上,我们可以通过设置 host-only 网卡(共享、桥接)来实现网络连接。

  虚拟主机网络参数 :默认从 VirtualBox 的虚拟 DHCP 服务器 获取,IP段为192.168.56.0/24

5、未指定

  如果你选择“未指定”,你将不能和任何主机通信,只能够自已 ping 自已

6、通用驱动

  这个不知道具体怎么用,有空再研究研究。

virtualbox虚拟机DHCP服务的关闭与开启设置

   今天有几个同事说上不了网,我发现是网卡设置为自动获取IP,获取到的IP段是192.168.56.0,且没有网关。原来是这几天我在用virtualbox研究ROS,virtualbox带有DHCP服务。网络上查了半天也没找到在哪关闭这个DHCP服务。后来摸索了半天,终于找到了设置的地方。

  在virtualbox管理器“管理”菜单下有个全局设定,在网络选项里编辑你的仅主机网络适配器(VirtualBox Host-Only)设置,将DHCP服务选项里启用服务器前的勾选去掉。如图:

  同时你要在其中的主机虚拟网络界面里设置好IP地址和网络掩码(原设置是0.0.0.0,从DHCP上自动获取IP)。

  如果你给虚拟主机添加了多个仅主机网络类型的虚拟网卡,都要按此方法设置。

  通过以上设置,VirtualBox的DHCP服务就被关闭了。

多线路环境virtualbox虚拟机装ROS当中转路由

局域网里有两个出口,网关分别为192.168.1.1和192.168.1.2,没有多网卡电脑可用来装ROS,怎么样用一台电脑来实现多出口的负载均衡呢?为了测试,我在我的电脑上的虚拟机里装上了ROS来测试,然后其它电脑将网关设置成该ROS的IP,成功实现负载均衡。设置要点:

1、虚拟机里ROS系统网卡IP要和局域网及各出口接入设备的局域网端IP要在同个网段

2、虚拟机网卡设置成桥接网卡。如果设置成仅主机(Host-Only),则需要桥接虚拟网卡和宿主机能上网的网卡。

3、ROS的IP设置里,设置两个网关(通过策略等进行负载平衡,探索中)

4、将其它电脑的网关设置为ROS的IP,或者配置ROS的DHCP,其它电脑自动获取,同时关闭各出口接入设备及其它设备的DHCP服务(或者将这些DHCP服务器的网设为ROS的IP,且IP范围不重复)。