本小博昨日下午被暂停

13 1 月, 2010

原因是2007年8月28日转的一篇文章引起的,说是涉及到政治所以被要求删除,见图:

截图留贴以示怀念。

顺便转一个链接:《CNNIC公布:规定所有CN域名须在公司名下》 http://is.gd/5ZCK8

不知这个cn域名能否活过这个月,反正不会为了存活而找公司挂靠的,死了就死了。已预先在www.GoDaddy.com注册了lordong.net域名,决定放弃国内域名了。

“Cannot modify header information”的解决方法

11 1 月, 2010

在PHP空间部署wordpress时遇到这条警告:"Warning: Cannot modify header information – headers already sent by ….",网上搜索解决办法,有不少解决方案,这里说说我用到的方法。

PHP代码里经常用到include或者requir来包含文件,注意检查这些被包含文件<?php … ?> 后面没有空白行。不少问题是这些空白行导致的。

有些情况空白不会引起这个问题,我发现php文件如果存成UTF-8也会因为第一行头两个字节不是以“<?”开头的,所以导致这个问题,解决办法是用记事本打开,然后另存成ANSI文件即可。

如果文件内部有双字节的字符,比如汉字等,直接用记事本把UTF-8编码的文件转存成ANSI会导致浏览器里打开的汉字是乱码,解决办法是还是保存成UTF-8格式,不过需要用第三方工具把文件前的UTF-8编码特征字符去掉,比如用DreamWeaver打开,点Modify菜单里的Page Properties子菜单,选中“Title/Encoding”,然后把Encoding改成“Unicode(UTF-8)”,把"Include Unicode Signature(BOM)"前的钩去掉,最后保存即可。也可以用UltraEdit打开文件,然后切换到十六进制模式,把前三个字节“EF BB BF”剪切掉,最后保存即可。

我之所以碰到这种情况,是因为我图方便,改用记事本打开源码进行编辑,保存后文件就会自动加上“EF BB BF”前缀,看来以后在慎用记事本来修改页面文件了。

新年新气象,未来的路在何方?

1 1 月, 2010

一转眼,本博已进入第4个自然年,随着墙内对网络的严打,这个虽已备案的cn域不知哪天就归西了,在她西去之前就先将就着用吧。

2010年注定还是不平凡的一年,走着瞧吧……

Windows 桌面万年历

23 12 月, 2009

在网上可以找到各式各样的万年历,可没找到用于Windows桌面的独立的而面文件,于是就在一些页面的基础上做了修改,生成了一个相对较小的“万年历.htm”文件,然后可以直接放到Windows的桌面上。

添加方法:右击桌面,选择“属性”,在弹出的“显示属性”窗体里切换到“桌面”标签,点最下面的“自定义桌面”会弹出另一个“桌面项目”窗体,切换到“Web”标签,点“新建”按钮,然后浏览找到下载到本地的“万年历.htm”文件,把“锁定桌面项”前的钩去掉,然后一路确认。

修改桌面上万年历的大小或位置方法:将鼠标指针移到在桌面显示的图片上侧,会显示出一个窗口边框,此时把鼠标指针指向边框,当光标变成双箭头时拖动即可直接调整显示图片的大小。把鼠标指向其标题栏,按住左键拖动可以调整图片在屏幕中的位置。

效果见图:

“万年历.htm”文件下载:万年历.htm.txt (保存到本地时后把.txt后缀去掉)

CuteFTP设置的一点小技巧

15 12 月, 2009

CuteFTP是比较常用的FTP上传下载工具,合理设置好传输选项可以提高上传下载的速度。

启用CuteFTP的智能覆盖可以跳过一些不变化的内容,从而减少上传下载的理,也就提高了速度。

下图是我的设置:

Read the rest of this entry »

PHP空间远程下载后的配套删除代码

15 12 月, 2009

上篇《PHP空间远程下载代码》解决了在远程PHP空间下载软件的问题,一般来说下载完并通过http方式把已下载到服务器的文件下载到本地后就要把远程服务器上的文件删除,通常情况是通过ftp连接到服务器上去删除对应的文件,可是有时没有使用FTP的条件怎么办?

我这里写了一个删除已经下载文件的PHP代码,跟上篇的downfile.php放在服务上同一个目录下即可,临时目录还是temp。

实现代码:
<?php
// folder to save downloaded files to. must end with slash
$destination_folder = ‘temp/’;

if (isset($_POST[‘submit’]))
Read the rest of this entry »

PHP空间远程下载代码

11 12 月, 2009

源码:

<form method=”post”>
<input name=”url” size=”50″ />
<input name=”submit” type=”submit”  value=”Download”/>
</form>

<?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST[‘submit’])) die();

// folder to save downloaded files to. must end with slash
$destination_folder = ‘temp/’;

$url = $_POST[‘url’];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, “rb”);
Read the rest of this entry »

魔方贴纸的贴法教程

30 11 月, 2009

常见的配色:

上黄-下白前蓝-后绿左橙-右红

 材料分类:
1、PET(纸质过胶)贴纸(如R记、东贤及国丙原配的),玩久了会脱皮褪色。玩家一般是不喜欢这种贴纸的。
2、PVC贴纸,就是广告店用的那种颜色贴纸,风吹雨打也不会褪色,魔友们一般喜欢这种贴纸,至于为何那些R记、东贤品牌魔方不用这种,据说是PVC贴纸不环保的原因。

单张得转贴法:
第一步:清理魔方表面的灰尘与油污!
    我们先把透明胶或转贴纸在魔方上反复做一个动作,贴上撕下,再贴上再撕下,这样做是为了把魔方表面的脏东西去除掉,使得我们贴上去的贴纸能更牢固。
第二步:贴贴纸!
    先把单个贴纸撕下来,把撕下来的贴纸的一个小角贴在边上。然后把单个贴纸摆放好位置后贴上,再把边角料抽走。

更多内容请参考:http://bbs.ztno.com/thread-8049-1-1.html

InstallShield更新系统路径脚本

19 11 月, 2009

prototype LONG User32.SendMessageTimeout(HWND,LONG,LONG,LONG,LONG,LONG,LONG); 

//The SetEnvironmentVariable function sets the contents of the specified environment variable for the current process.
//This function has no effect on the system environment variables or the environment variables of other processes.
prototype BOOL KERNEL32.SetEnvironmentVariable(BYVAL STRING,BYVAL STRING);

#define WM_SETTINGCHANGE 0x1A
#define SMTO_ABORTIFHUNG 0x2   

prototype UpdateSystemPath(BOOL);
function UpdateSystemPath(bAdd)
    NUMBER nRootKey, nResult, nvSize, nvType;
    POINTER pParam, pResult;
    LONG lResult;
    STRING szParam, szPath, szWinDir; 
begin
    Disable(LOGGING);
   
    nRootKey = HKEY_LOCAL_MACHINE;
    if RegDBSetDefaultRoot(nRootKey) = 0 then   
        nvSize = 1; 
        nvType =  REGDB_STRING;
        nResult =  RegDBGetKeyValueEx("SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment", "Path", nvType, szPath, nvSize); 
       
        szWinDir = WINDIR;
        StrRemoveLastSlash(szWinDir);
        StrReplace(szPath, "%SystemRoot%", szWinDir, 0);
       
        PathSet(szPath);
        if bAdd then
            PathAdd(TARGETDIR ^ "Bin", "", FULL, AFTER); 
        else
            PathDelete(TARGETDIR ^ "Bin", FULL);
        endif;
        PathGet(szPath);         
        RegDBSetKeyValueEx("SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment", "Path", REGDB_STRING, szPath, -1);
       
        szParam     = "Environment";
        pParam      = &szParam;
        pResult     = &lResult;
        SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, pParam, SMTO_ABORTIFHUNG, 100, pResult);
       
        //set environment variable for current process
        SetEnvironmentVariable("PATH",szPath);
    endif;  
    Enable(LOGGING);
end;

InstallShield判断DotNetFramework指定版本是否安装的脚本代码

19 11 月, 2009

// @param szVersion Version to check, e.g. "v2.0", "v3.5" and so on.

function DetectDotNet(szVersion)
    NUMBER nRootKey, nResult;
    LIST lstVersions;
    BOOL bRet;
    STRING szString;
begin
    bRet = FALSE;
    nRootKey = HKEY_LOCAL_MACHINE;
    lstVersions = ListCreate(STRINGLIST);
    if (lstVersions = LIST_NULL) then
        MessageBox ("Unable to create necessary lists.", SEVERE);
        abort;
    endif;
   
    if (RegDBSetDefaultRoot(nRootKey) = 0) then
        nResult = RegDBQueryKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP",
            REGDB_KEYS, lstVersions);
        if (nResult = 0) then
            // Get the first string in the list.
            nResult = ListGetFirstString(lstVersions, szString);
   
            // Loop while list items continue to be retrieved.
            while (nResult != END_OF_LIST)
                // Detect the current element.
                if (StrFind(szString, szVersion) = 0) then
                    bRet = TRUE;
                    nResult = END_OF_LIST;  // Force to exit
                else
                    // Get the next string in the list.
                    nResult = ListGetNextString(lstVersions, szString);
                endif;
            endwhile;
        endif;
    endif;
   
    ListDestroy(lstVersions);  

    return bRet;
end;

无人值守安装.Net Framework 3.5的批处理脚本(传入参数是dotnetfx35.exe所在的绝对目录,解决自动连网下载的问题):

@echo off
setlocal

set INSTALLER31="%~1WindowsInstaller-KB893803-v2-x86.exe"
set DOTNETFX35="%~1dotnetfx35.exe"
set NDP35SP1="%~1NDP35SP1-KB958484-x86.exe"

echo Installing %INSTALLER31%
%INSTALLER31% /quiet /norestart /nobackup

echo Extracting %DOTNETFX35%
%DOTNETFX35% /x:%TEMP% /passive

cd /d "%TEMP%\wcu\dotNetFramework"

echo Installing dotNetFx35setup.exe
dotNetFx35setup.exe /lang:ENU /norestart /passive

echo Removing extracted files
cd /d "%TEMP%"
rd /s /q wcu

echo Installing %NDP35SP1%
%NDP35SP1% /norestart /passive

endlocal