分类目录归档:技术文献

VHDX 虚拟磁盘格式结构

Windows 8中支持的VHDX虚拟磁盘格式,以下是虚拟磁盘结构代码。

 

ReFS文件系统结构

        ReFS文件系统是微软为新的服务器版本准备的文件系统,具体介绍可以参阅“ReFS文件系统介绍”,里面介绍的非常详细,目前还没有发现针对ReFS文件系统研究的资料,以下是我自己摸索出来的,仅供参考。
        ReFS文件系统使用的分区类型描述依然是07,与NTFS一样,DBR部分如下所示,把我做的WinHex模板贴出来。

 

/*------------------------------------------------------------------------------------------*/

template "Boot Sector ReFS"
description "Boot sector of an ReFS partition"
applies_to disk
sector-aligned

requires 0x03 "52 65 46 53" // ID must be "ReFS"

begin
 move 3
 char[4]    "File system ID"
 move 9
 char[4]    "FSRS"
 uint16    "Bytes per sector ?"
 hex 2     "Unknown"
 int64     "Total sectors"
 uint32    "Bytes per sector ?"
 uint32    "Sectors per cluster"
 hex 8     "01 01 00 00 00 00 00 00"
 move 8
 hex 4     "32-bit serial number (hex)"
 move -4
 hex 8     "64-bit serial number (hex)"
end

/*------------------------------------------------------------------------------------------*/

 

httpd.ini 伪静态设置

什么是网页的伪静态技术?

使用ISAPI Rewrite与Apache Rewrite是有区别的,主要是URL重写规则细节上,ISAPI[一般是windows系统]重写需要使用httpd.ini文件,而Apache[一般是unix系统]则使用.htaccess文件,通过对URL重写实例谈谈使用httpd.ini文件基于ISAPI Rewrite重写URL路径。目前使用的是wordpress程序,虽然前台已经全部重新架构,但URL路径还是使用原有简单的URL,如一篇文章的URL路径:http://www.adminjet.com/?p=1119,分类使用?cat=162等。

本文以httpd.ini重写文章URL路径为例,其它URL重写原理一样。

重写前URL路径:http://www.adminjet.com/p1119.html[这是需要实现的URL地址]
重写后URL路径:http://www.adminjet.com/?p=1119[这也是当前的URL地址]

一,新建httpd.ini文件

二,打开httpd.ini文件并增加如下重写规则

  1. [ISAPI_Rewrite]
  2. RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]

注意其中的一些细节,反斜杠\部分,这个非常重要[或许你会漏掉这句话,但如果你看到了将会省很多的调试时间],对于特殊字符要使用反斜杠\。

  1. RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]

其规则为匹配使有p开头的字符,其中参数部分$1只能是数字[0-9],并以.html结束,如p1119.html,就会匹配为index.php?p=1119,这样程序就能正常的读取ID为1119的文章。

三,上传到你空间的根目录

四,开始调试,调试过程可多刷新页面

同样的URL重写,如果是在apache下的.htaccess则使用如下语句:

  1. RewriteEngine on
  2. RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]

现在来对比这两者的区别:

  1. ISAPI Rewrite:
  2. RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]
  1. Apache Rewrite:
  2. RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]

区别就是一些反斜杠,这对于调试非常重要,其它具体的知识大家可参考相应的文档,简单实现你的ISAPI Rewrite重写URL路径。

ASP网站程序在国内运用很广,但是类似于im286.asp?id=20050307213811这样的URL有点不利于搜索引擎的收录,也就是说不符合友好URL(URLs-Friendly)的标准,那么我们用ISAPI_Rewrite打造一个Clean URL,

1.下载ISAPI_Rewrite.ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com /download/,就是那Lite Version (free)啦.

2.安装.msi的文件,和装一般程序一样装就可以了,俺就装在D:\ISAPI_Rewrite.

3.接下来一步比较重要哦,看仔细喽.打开Internet 信息服务,右键,web站点属性,电ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定ISAPI_Rewrite.dll,然后确定.

 

 

4.来测试一下.新建一个1ting.asp,里面写上

   <%=request.querystring("inso")%>
 

,效果就是执行的时候1ting.asp?inso=*浏览器显示*.

5.这一步很重要哦,开始添加rewrite规则.正则,好头痛,幸亏这个例子比较简单.
找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.我们要把1ting.asp?inso=im286映射成为1ting-im286.html这样的类型,需要在httpd.ini里加上这么一行:
   
RewriteRule /1ting-([0-9,a-z]*).html /1ting.asp\?inso=$1

,保存.

6.来来来,到浏览器里查看一下效果吧.输入http://127.0.0.1/1ting.asp?inso=im286http://127.0.0.1/1ting-im286.html,显示的内容是不是都是im286?这就证明成功啦!

嘿嘿,1ting-im286.html这样的页面要比1ting.asp?inso=im286容易收入,所以现在还在用动态方式的朋友可以尝试一下这样的静态映射效果. IIS Rewrite也可以实现这样的功能。

------------------------------------------------------

ASP之URL重写

下载ISAPI_Rewrite解压到任意文件夹安装,给IIS用户读取权限,在IIS右键点击一个站点,属性,ISAPI筛选器,添加,筛选器名称一定得叫 re,可执行文件就点浏览找到你解压的目录Rewrite.dll加上即可。

  重启IIS后应该就能支持URL重写规则了。

  需要修改解压目录中的httpd.ini这个文件

RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I]

这句话就可以把提交的地址http://www.xxx.com/info_122.htm映射到真正的地址 http://www.xxx.com/info.asp?id=122

如果你在处理数据翻页,那么写法是:

More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)
表现形式:More_1_95.html

如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:
More_3_95.html,以此类推。

不过你需要在httpd.ini文件中增加以下代码:
RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]

如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:

RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]

翻页处理表现形式是:More_1_95.html

如果想把http://www.xxx.com/info.asp?id=50#abc 转换成静态的网页
因为#abc是程序处理了ID=50这个变量生成静态页面之后按锚点又做了一次页内链接,所以应该这么做映射
http://www.xxx.com/info.asp?id=50#abc69

换成http://www.xxx.com/info_50.htm#abc,重写规则如下:
RewriteRule /info_(\d+)\.htm#(\d+) /info\.asp\?id=$1#$2 [N,I]

注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite进行动态链接重写HTML静态网址,

硬盘变小恢复方法

我的硬盘的容量莫名其妙的减小了!怎样可以恢复它的原始容量?

有下面几种原因会导致你的硬盘丢失数M甚至数G的空间:

  • 你的操作系统不支持LBA48位寻址模式
  • 你混淆了二进制和十进制的表示方法
  • 你的电脑主板在你的硬盘上创建了一个隐藏的区域用来备份二进制代码
  • 你的电脑/笔记本电脑生产商在你的硬盘上创建了一个隐藏的区域来备份操作系统的安装文件(系统自动恢复)
  • 你使用了某种软件设置了HPA(Host Protected Area,主机保护区),破坏了DCO(Device Configuration Overlay,设备配置代码),或者关闭了LBA48的支持
  • 跳线设置错误
  • 硬盘的故障

现在我将逐条的进行详细分析。

  • 操作系统不支持LBA-48位寻址模式

Windows 95,Windows98和Windows ME即使安装了所有的补丁也不能支持大硬盘(>137GB)。虽然有方法可以解决这个问题,但是由于现在很少使用这些系统了,所有就没有必要再啰嗦了。

Windows 2000,2003,和XP默认设置是不支持大硬盘的;你必须安装最新的补丁包来支持大硬盘。Windows XP SP2版可以完美的支持大硬盘;

Windows 2000必须安装补丁文件。

Windows Vista可以完美的支持大硬盘。

  • 二进制和十进制的表示方法

硬盘生产商使用十进制来表示,而操作系统使用二进制来表示。十进制的G表示1,000,000,000个字节(1000 x 1000 x 1000),而二进制的G表示1,073,741,824字节(1024 x 1024 x 1024)--相差7%!所以,你的300GB的硬盘在Windows系统中会显示为279GB。

  • 主板创建了HPA

主板再硬盘上创建了一个主机保护区来存储数据。通常这个区域不会大于10M,所以不用为此担心。

  • 电脑/笔记本生产商创建了HPA

电脑生产商在你的硬盘商创建了一个主机保护区来存储操作系统和程序的镜像。当进行系统恢复时就会用到这个区域中的护具。通常这个区域比较大(8-20GB)。

在这种情况下,使用一些专业的工具,如HDD Capacity Restore或MHDD可以恢复硬盘的原始容量。要进行此操作,需要将硬盘从原来的主机上拆卸下来安装到其它主机上因为原来的主机为了防止破坏隐藏区域,可能会禁用HPA/DCO指令。

  • 可以设置HPA和DCO的软件

例如,MHDD。MHDD可以在硬盘上设置HPA,因此硬盘的容量无论在BIOS中还是在操作系统中都会减小。MHDD还可以访问DCO(设备配置码),它不但可以更改硬盘的容量,还可以设置硬盘的功能,例如LBA48支持,加密指令等。

有些生产商(如Dell和HP)由于市场的原因人为使用DCO来减小硬盘容量。例如:他们要生产1,000,000台配置40GB硬盘的计算机,但是他们的仓库里只有80GB的硬盘。他们就会使用他们自己的DCO工具来将硬盘的容量锁定为40GB。

  • 跳线设置硬盘的容量

大部分硬盘都有一个特别的跳线设置方法来将硬盘的容量限制为32GB或128(137)GB。

  • 硬盘故障

例如硬盘固件缺陷(这种现象是非常多的)。

另外,有时候MBR主引导区损坏也可能或导致BIOS或操作系统不能检测到正确的硬盘容量。在这种情况下需要使用清零工具来将MBR清零。

有时候,一个严重损坏的硬盘也可能会显示错误的容量。在这种情况下你无法修复它。

  • 解决方法:恢复硬盘容量

1、检查跳线。一般在硬盘的表面都有跳线设置说明,按照说明正确设置跳线。

2、检查你的操作系统,是否安装了所有的升级补丁?

3、检查硬盘分区。运行Windows磁盘管理器,查看是否有未分区的空间。

4、如果以上方法都没有解决问题,那么可以使用下面这个工具来分析你的硬盘的LBA48,HPA和DCO状态并将其恢复为原始设置。

HDD Capacity Restore程序

HDD Capacity Restore程序

你所需要做的即使运行它并点击Restore Capacity。然后此程序就会完成所有的工作。

强烈建议你在运行此程序之前先关闭计算机断电再启动。

如果此程序没有成功恢复硬盘空间,那么很可能是你的电脑主板阻止了HPA和DCO命令。你可以在BIOS设置中查看是否有DCO或HPA字样。如果还不行,就换一台电脑。如果你足够勇敢,你也可以这样做:运行程序,选择你的硬盘,然后当你看到Restore Capacity按钮时,关闭硬盘的电源然后再加电。注意:你要自己承担所有的后果!

当程序运行完毕后(3-20秒),你需要关闭你的电脑的电源,等待10-20秒钟再打开。

 

提供恢复:http://www.datarelab.com/blog/DataRecoveryServer.html

VirtualBox 安裝 Android-x86 4.0

首先要下載 VirtualBox 跟 Android 4.0 X86 ISO,記住要下載的是 android-x86-4.0-eeepc-20111209.iso這個版本,其他的版本可能會無法安裝在 VirtualBox 上。

電腦一台,作業系統 Windows XP, Windows 7, Linux, MacOS 都可以
Oracle VirtualBox
Android 4.0 x86 ISO
目前 Android-x86 4.0 iso 已經推出新版本(20120101),不過新版本有一些小問題,會無法進入系統。
舊版本(20111209)可以在這裡下載。

下載完 VirtualBox 直接安裝就可以了,不用多作設定。

新建一個虛擬機器

開啟 VirtualBox 可以看到 VirtualBox 的介面,目前是沒任何虛擬機器的,接著點選新增來新增一個虛擬機器。

接著再設定虛擬機器的作業系統要選擇 Linux 及 Linux 2.6 ,名稱的部份就可以自行設定,這裡院長設定成 Android 4.0。

預設的記憶體是256MB,如果要調整的話輸入想要的大小就可以,這裡院長調整成 768MB。

接下來的設定保持預設值一直下一步就可以了,接著到最後一步檢視剛剛作的設定,沒問題的話點選建立就會完成建立虛擬機器的步驟。

建立完虛擬機器後就會回到 VirtualBox 的主介面,同時也可以看到剛剛新增的虛擬機器已經出現在列表上了。

調整虛擬機器的設定

建立好虛擬機機器後還要調整一些設定才能讓我們順利地安裝 Android-x86。

選擇 Android 4.0 這個虛擬機器,接著再點選設定值開啟虛擬機器的設定畫面。

掛上ISO檔

切換到存放裝置分頁,選擇左邊IDE控制器下的*DVD光碟機,接著點選右邊光碟的圖示並點選選擇虛擬 CD/DVD 磁碟檔案…。

選擇 android-x86-4.00-eeepc-20111209.iso 這個 ISO 檔

接著就會回到設定畫面,同時可以看到 Android ISO 檔已經掛上虛擬機器上的光碟機了。

設定網路

接著切換到網路分頁,接著在介面1的部份修改成以下的設定,設定完點選確定就可以完成虛擬光碟及網路介面卡的設定,並且回到主介面。

安裝 Android 4.0 x86

回到主介面後,點選虛擬機器並且點選啟動就會開啟虛擬機器。

很快地就會進入安裝介面,在安裝介面中只能使用鍵盤來操作,上下左右是選擇選項,Enter 則是確認選項。

進入安裝畫面後選擇 Installation – Install Android-86 to harddisk 來安裝 Android-x86 4.0。

完成光碟啟動後,第一次安裝要先建立 partitions ,選擇Create/Modify partitions。

進入 cfdisk 後,上方是目前有的磁區,下方是功能列,目前是沒有任何磁區的,選擇 NEW 來建立磁區。

設定磁區的屬性為 Primary

接著再設定磁區的大小,預設會是全部的容量,基本上不用變動直接 Enter 就可以了。

建立完後就會回到 cfdisk 的主畫面,一切正常的話,可以看到上方會出現剛剛建立的磁區。接著將這個磁區設定為 Bootable,這樣安裝完後就會以這個磁區作為開機磁區。

設定完開機磁區後會看到上方磁區在 Flags 欄位標記為 Boot 就表示已經設定完成,到了這邊還不算完成建立磁區的工作,還要進行最後一步,將剛剛磁區的設定寫入硬碟。

用鍵盤移動游標到 Write 選項,同時 按下 Enter。

在真正寫入硬碟前還會再詢問你一次,是否將設定寫入硬碟,在這個步驟必須使用鍵盤輸入 yes 並且按下 按下 Enter,這樣才會真正地將磁區設定寫入硬碟。

磁區寫入硬碟後會回到 cfdisk 的主畫面,這時就可以離開 cfdisk,選擇 Quit 就會離開 cfdisk

接著就會回到 Android-x86 的安裝畫面,這時就可以選擇剛剛建立好的磁區來安裝 Android-x86。

接著會詢問要格式化成那一種檔案格式,選擇 ext3 就可以了。

接著會再詢問你是否要格式化這個磁區,選擇 Yes 來格式化這個磁區。

接著會詢問是否安裝 GRUB,一樣 選擇 Yes。

接著會詢問是否將 /system 這個資料夾安裝成 read-write,這裡也一樣 選擇 Yes,接著就會開始安裝 Andorid-x86。

安裝的速度很快,同時安裝完後會詢問你是否要製作一個假的 SD Card 這裡當然要選擇 Yes

接著設定 SD Card 的大小,預設就是最大值 2047MB,只能往下調整,調整完 按下 Enter,就會進入製作 SD Card 的步驟。

製作完 SD Card 後,就正式安裝完 Android-x86 了,選擇 Reboot 讓虛擬機器重新開機吧!

重新開機後,因為預設還是光碟開機,所以在一開機時要按下 F12 選擇由 Primary Master 開機。

另外,也可以進入虛擬機器的設定裡的系統分頁,將開機順序調整成硬碟開機,這樣就不用每次都要按 F12 選擇開機磁碟。

開機後會進入 GRUB Boot loader,這裡直接選擇第一個就可以了。

接著就會進入 Android-x86 的開機畫面了。

另外,要停用虛擬機器與 Host 的滑鼠整合,這樣才能在 Android-x86 的虛擬機器中使用滑鼠。

稍待一會就會進入 Android-x86,一開始會跟第一次使用 Android 一樣。左邊的語言設定預設是 English,可以調整成繁體中文。

接下來的設定都可以直接下一步,不過到了設定 Google 帳戶這個階段,因為沒有網路連線所以選擇暫時不要。

設定完後就會進入 Android-x86 4.0 的桌面,進入後右上角就是 App 的清單

點選後就會開啟 App 的清單。

設定網路

剛安裝好的 Android-x86 4.0 是無法連線到網路的,因為還未設定網路的 IP 位址,這裡必須要手動地設定 IP 位置。

在 App 清單中開啟 Terminal Emulator。

開啟後會出現終端機介面,接著輸入 ip a 就會列出目前的網路卡。這裡可以看到 eth0 目前是還沒有設定 IP 的狀態

設定 IP 可以透過手動設定 IP 或者也可以透過 DHCP。

透過 DHCP 取得 IP

如果你的網路環境有 DHCP Server 的話,透過 DHCP 的方式取得 IP 是最簡單的方式。

在終端機輸入

su

dhcpcd eth0

接著就會自動取得 IP,可以再輸入 ip a,這時就會看到 eth0 已經透過 DHCP的方式取得 IP。

手動設定 IP

當然也可以透過手動設定 IP 的方式來設定 IP。

在終端機輸入

su ifconfig eth0 192.168.10.250 netmask 255.255.255.0 up route add default gw 192.168.10.1 dev eth0

設定 DNS Server

接著再設定 DNS Server

在終端機輸入

setprop net.dns1 8.8.8.8

設定完後就可以使用內建的瀏覽器上網試試看網路是否有設定成功。

到了這邊,安裝 Android-x86 4.0 的步驟就已經告一段落了,雖然可以上網,但是還是不能設定 Google 帳號,因為 Android-x86 4.0 只認得 WiFi 裝置,所以沒有 WiFi 裝置就會被當成沒有網路連線,希望這個功能可以在之後的版本被修正。