2011.2.14 二月 22nd, 2011
这一天,准备了很久了
那一刻,各种情绪,紧张,兴奋,害怕……
直到那个“哦好”出现,我的心才稍稍平静下
并不是一时冲动,是经过深思熟虑
其实不算是一张白纸,因为曾经,所以上面也留下点点痕迹,但是是你为此画上一个圆满的圈
我希望没有终点,是永恒
这一刻我永远铭记
属于我的,根号三
SQL Server 2000的诡异问题[已解决] 十一月 9th, 2010
今天遇到一个问题,sql server在执行语句报错
从字符串转换为 datetime 时发生语法错误
CONVERT(DATETIME,'2010-11-11')
这真是神奇的问题啊
本地测完全没问题,服务器上之前也没问题,今天突然就报错了,服务器环境2003,IIS6,以前从来没遇到过,试了网上说的区域设置,注册表什么的,均无效
至今未能解决,我又多了一个心病……
谁能解决的或是遇到过的,告诉我一下,万分感谢!
2010-11-10:
今天终于解决了
ondate between CONVERT(DATETIME,'2010-11-8') and CONVERT(DATETIME,'2010-11-14')) 原来的语句中这句,后来我猜测会不会和ondate字段中的内容有关,结果有查到有的数据居然不是日期格式,看来这么写会自动将ondate转换成datetime格式。
调程序的小女孩 十月 16th, 2010
C# POST数据到指定url并返回结果页面内容 九月 3rd, 2010
using System.Net;
using System.Collections.Specialized;
....
public string getPostBackStream(string rUrl)
{
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
// Create a new NameValueCollection instance to hold
// some custom parameters to be posted to the URL.
NameValueCollection myNameValueCollection = new NameValueCollection();
myNameValueCollection.Add("title","this is title");
myNameValueCollection.Add("url","http://test.mending.cn/tb_client.aspx");
myNameValueCollection.Add("excerpt","this is excerpt");
byte[] responseArray = myWebClient.UploadValues(rUrl,"POST",myNameValueCollection);
return Encoding.ASCII.GetString(responseArray);
}
.Net解析JSON数据 九月 3rd, 2010
using System;
using System.Web.Script.Serialization;
using System.Collections.Generic;
public partial class Demo : System.Web.UI.Page
{
protected string JSON
{
get
{
return Request.QueryString["json"];
}
}
protected void Page_Load(object sender, EventArgs e)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(JSON);
object value;
if (json.TryGetValue("name", out value))
{
Response.Write(value.ToString());
}
}
}
Ubuntu9.10编译android-2.1_r2源码 七月 19th, 2010
先说一下我的环境,VMware虚拟机里纯净的Ubuntu 9.10,没装过任何东西
网上先查了写资料,做了点准备工作
启动终端
安装JDK 5.0
1)根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里我们使用jdk5
2)需要先更新源,在终端里执行 sudo vim /etc/apt/sources.list
3)在source.list里把以下2行拷贝到文档最后面:
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
保存退出。
4)执行 sudo apt-get update 更新源.
5)配置编译环境并下载JDK5:sudo apt-get install sun-java5-jdk
如果遇到dpkg was interrupted...错误的话,参见我上一篇日志
接下来
sudo apt-get install bison
sudo apt-get install build-essential
sudo apt-get install zlib1g-dev
sudo apt-get install flex
sudo apt-get install libncurses5-dev
sudo apt-get install libx11-dev
sudo apt-get install gperf
然后去准备下载2.1的源码
发现没装repo,汗一下- -|||||
下载repo
$ cd ~
$ mkdir bin
$ echo $PATH
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
结果又发现没装curl,再汗,运行sudo apt-get install curl
安装完之后,开始准备源码,下载编译最基本的android源码,无法在真机上使用(不能生成boot.img),只能在模拟器上使用。这是因为没有编译相关机型的内核和硬件驱动。以下介绍的是用android源码编译出对应HTC G1的版本,和烧写的过程(没办法,谁让我穷,只能用G1呢)。编译生成的版本除相机不能用之外,其它绝大部分功能都能正常使用,在G1上运行2.1版的速度也不错。
建立android源码编译目录
$ export ANDROID=/exports/android/android_2.1_cn/
$ mkdir -p $ANDROID
$ cd $ANDROID
然后源码下载,期间被linux权限搞得头晕目眩
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r2 #设定下载 2.1版代码
$ vi .repo/local_manifest.xml # 新建下载配置文件
编辑内容如下
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.29-donut"/>
<project path="vendor/htc/common-open" name="platform/vendor/htc/common-open" revision="master"/>
<project path="vendor/htc/dream-open" name="platform/vendor/htc/dream-open" revision="master"/>
<project path="vendor/htc/prebuilt-open" name="platform/vendor/htc/prebuilt-open" revision="master"/>
<project path="vendor/htc/sapphire-open" name="platform/vendor/htc/sapphire-open" revision="master"/>
<project path="vendor/qcom/android-open" name="platform/vendor/qcom/android-open" revision="master"/>
<project path="vendor/qcom/proprietary-open" name="platform/vendor/qcom/proprietary-open" revision="master"/>
<project path="vendor/pv-open" name="platform/vendor/pv-open" revision="master"/>
<project path="vendor/aosp" name="platform/vendor/aosp" revision="master"/>
<project path="hardware/htc/dream" name="platform/hardware/htc/dream" revision="master"/>
</manifest>
注意:其中msm是高通芯片组,path指明下载到源码目录中的位置,name指明git上的项目名
$ repo sync # 开始下载代码,此时需要等待较长时间,我家网速1Mbps,我挂了一个晚上
打补丁以支持动态壁纸(此为步骤为可选)
$ wget http://android-development-environment.googlecode.com/files/patch_devphone_eclair.tar.gz
$ tar zxvf patch_devphone_eclair.tar.gz
$ ./patch/eclair-build-patch.sh
编译内核及无线网络驱动
$ cd $ANDROID/kernel
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig # 设定默认的msm配置
$ vi .config # 修改新生成的配置文件,以重新设置CPU最高频率,修改如下:
修改CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX项为CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=528000
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- #编译内核
$ cd $ANDROID/system/wlan/ti/sta_dk_4_0_4_32
$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- KERNEL_DIR=$ANDROID/kernel #编译无线网络驱动
$ cp $ANDROID/kernel/arch/arm/boot/zImage $ANDROID/vendor/htc/dream-open/kernel
$ cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $ANDROID/vendor/htc/dream-open/wlan.ko
编译android源码
在HTC网站http://developer.htc.com/adp.html
下载名为signed-dream_devphone_userdebug-ota-14721.zip的包,并把它放在$ANDROID目录下
$ cd $ANDROID
$ source build/envsetup.sh
$ lunch aosp_dream_us-eng # 指明机型
$ cd vendor/htc/dream-open
$ ./unzip-files.sh # 解压htc相关驱动
$ cd $ANDROID
$ vi buildspec.mk # 新建配置文件
加入如下内容
CUSTOM_LOCALES:=zh_CN # 设置编译为中文系统
WITH_JIT:=true # 加入JIT支持,使得运算速度加快1-2倍
$ make -j2 # 编译android源码,需要等待较长时间,我T4200的芯片,VMware虚拟机下,编译了大概近4个小时。
今天为了编译Android,更新java5
运行了sudo apt-get install sun-java5-jdk
出现这么一个错误:
dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
网上查了查,运行,
sudo dpkg --configure -a
解决之
不使用JQuery的多行新闻滚动 七月 14th, 2010
最近写一个门户页面用到,用JQuery的话,IE6有点问题,就用了纯JS方法,朋友帮忙写的,现在拿出来分享。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
body {
font:normal 12px/1.5 Verdana, Geneva, sans-serif;
}
.container {
height:100px;
overflow:hidden;
position:relative;
}
.tab {
position:relative;
top:0;
border-collapse:collapse;
}
.tab td {
border:silver 1px solid;
height:20px;
}
</style>
</head>
<body>
<div class="container" id="di">
<table class="tab" id="test">
<tbody>
<tr>
<td>1</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>2</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>3</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>4</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>5</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>6</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>7</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>8</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>9</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
<tr>
<td>10</td>
<td>12321321312</td>
<td>sadfasdfsafd</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
function $(id){return document.getElementById(id)};
var x = function (int){return parseInt(int);}
var copy = function (tar){
//tar.innerHTML += tar.innerHTML;
var te;
for(var i=0; i<tar.childNodes.length; i++) {
if(tar.childNodes[i].nodeType == 1) te = tar.childNodes[i].cloneNode(true);
}
tar.appendChild(te);
}
var slide = function (tar, areaHei, tarHei, delay) {
var top = tar.style.top;
if(top == "") tar.style.top = 0;
else if(x(top) + tarHei < 0) tar.style.top = x(top) + tarHei + "px";
for(var i = 0; i<areaHei; i++) {
setTimeout("tar.style.top = parseInt(tar.style.top) - 1 + 'px'",delay*i);
}
}
var tar = $("test");
var tarHei = tar.clientHeight;
var areaHei = tar.parentNode.clientHeight;
copy(tar);
setInterval("slide(tar, areaHei, tarHei, 20);", 3000);
</script>
</body>
</html>
Subversion快速入门教程 四月 28th, 2010
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 到官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择Apache 2.0 或者 Apache 2.2,这样我们可以看到许多下载的内容,目前可以下载Setup-Subversion-1.5.3.msi 。 TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。 服务器安装,直接运行Setup-Subversion-1.5.3.msi ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。 安装TortoiseSVN,同样直接运行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。 运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如: 就会在目录E:\svndemo\repository下创建一个版本库。 我们也可以使用TortoiseSVN图形化的完成这一步: 来到E:\svndemo\repository\conf目录,修改svnserve.conf: 然后修改同目录的passwd文件,去掉下面三行的注释: 在passwd文件中,“=”前的字符就是用户名,后面的就是密码。还要注意“[users]”前面的注释“#”一定要删除掉。 在任意目录下运行: 来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件: 完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。 需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/trunk”。 取出版本库到一个工作拷贝: 来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/trunk,这样我们就得到了一份工作拷贝。 在工作拷贝中作出修改并提交: 打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。 察看所作的修改: readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。 最后,所有的内容都已经录制为动画文件,大家可以参考。
本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。
本教程分为以下几个部分,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用。在UNIX环境下,只是安装方式不同,命令执行并无太大区别。
1,软件下载
下载Subversion服务器程序。
下载Subversion的Windows客户端TortoiseSVN。
官方网站是TortoiseSVN ,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。2,服务器和客户端安装
3,建立版本库(Repository)
svnadmin create E:\svndemo\repository
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。
4,配置用户和权限
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret5,运行独立服务器
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。6,初始化导入
右键->TortoiseSVN->Import...
在URL of repository输入“svn://localhost/trunk”
在Import Message中输入你的日志信息7,基本客户端操作




