2008年4月30日
摘要: 系统 WINXP+IIS+PHP5+MYSQL51. 安装首先安装PEAR, 进入DOS命令行,进入PHP目录,运行go-pear,一切默认吧,安装完成.然后安装PEAR PACKAGEpear install dbpear install mdb2pear install mdb2 (之后会有提示,安装MySQL模块)pear install db_dataobject安装完成后,安装包如下C:...
阅读全文
2007年12月5日
2007年9月6日
像 Visual Studio 2005 编译出来的 bin, obj 目录和 *.suo 文件都没有必要添加到 Repository 中。每次试编译后 bin, obj 目录都会改变。而 *.suo 文件(它和 *.sln 文件同目录,但是为隐藏属性)甚至在每次用 VS (Visual Studio) 打开时都会被更新一次。要取消对它们的版本化,必须在第一次提交时就不要提交它们,但是提交所有其它应该被版本化的文件。然后,在文件管理器里右键点击你要排除的目录或文件,比如 bin,点击 TortoiseSVN->Add to ignore list->bin 就行了。
还有一种方法就是在提交完应该版本化的文件后,用资源管理器浏览到 bin,右键点击属性。在弹出来的对话框里点击 Subversion->Properties...->Add。Property name 选 svn:ignore,值里写 bin 就行了。如果在同一个目录下你要排除多个文件或目录,用回车来分隔各个文件名和目录名。
如果你已经把你不需要的文件或目录添加到 Repository 里了,那么下面的方法会解决这个问题。
比如要剔除 *.suo 文件,把 *.suo 文件移动到另一个安全的目录里,比如桌面,然后提交更改。再把它移回来,然后将 *.suo 添加到 ignore list 就行了。对于目录,可以这么做:
1. →
2007年8月31日
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。
本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。
本教程分为以下几个部门,不仅仅是快速入门,最后我们还有一些高级功能的说明,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用,对于UNIX环境下,区别并不大。
软件下载
服务器和客户端安装
建立版本库(Repository)
配置用户和权限
运行独立服务器
初始化导入
基本客户端操作
1,软件下载
下载Subversion服务器程序。
到官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择" this directory ",这样我们可以看到许多下载的内容,目前可以下载 svn-1.4.0-setup.exe 。
下载Subversion的Windows客户端TortoiseSVN。
TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。
官方网站是TortoiseSVN ,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi。
2,服务器和客户端安装
服务器安装,直接运行svn-1.4.0-setup.exe ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。
安装TortoiseSVN,同样直接运行TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。
3,建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:
svnadmin create E:\svndemo\repository
就会在目录E:\svndemo\repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。
4,配置用户和权限
来到E:\svndemo\repository\conf目录,修改svnserve.conf:
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd 然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret
5,运行独立服务器
在任意目录下运行:
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。
6,初始化导入
来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:
右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/”
ok
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/”。
7,基本客户端操作
取出版本库到一个工作拷贝:
来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/,这样我们就得到了一份工作拷贝。
在工作拷贝中作出修改并提交:
打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。
察看所作的修改:
readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。
最后,所有的内容都已经录制为动画文件,大家可以参考。
关于本教程大家有什么意见,可以在论坛里讨论 。
转载地址:http://www.subversion.org.cn/index.php?option=com_content&task=view&id=56&Itemid=9
PS
Subversion安装成service
sc create SVNService binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service -r E:\svndemo" DisplayName= "SVNService" depend= Tcpip start= auto
2007年8月12日
最近在测试smarty的时候,刚开始没有问题,后来发现display出来的页面总是会出现CSS的错乱问题,后来直接把TPL输出为HTML没有任何问题,但是一旦使用SMARTY输出就会出现问题,查HTML SOURCE并没有发现什么异常的问题,最后无奈用ue把输出的HTML SOURCE和TPL进行对发现经过SMARTY输出的页面头前面多了四个空格,就是这该死的四个空格导致了问题,在网上查了差资料,发现是UTF8的BOM问题引起的,由于PHP不支持BOM,它不会忽略UTF-8编码的文件开头BOM的那三个字符,找到问题所在后解决问题很简单,打开UE把文件保存为UTF不带BOM即可,这个简单的问题困扰了我三天,郁闷,做个记录
2007年6月15日
原文:http://www.adobe.com/devnet/flex/quickstart/adding_drag_and_drop/,本文翻译只是备忘,有错误的地方多多谅解。
对于一些控件如DataGrid,HorizontalList,List,Menu,PrintDataGrid,TileList,Tree等,我们可以通过设置控件属性dragEnabled,dropEnabled,dragMoveEnabled来很方便的实现拖放效果,但是当我们面临一些不是基于列表控件(non-list-based)的组件
或者容器时,我们该如何使之支持拖放事件呢? FLEX为我们提供了一些类和事件来让我们可以手工写出支持拖放事件的代码,我们可以通过DragManager,DragSource和DragEvent来实现拖放操作.
拖曳初始化事件(Drag initiator events)
当我们想把一个控件当作一个拖曳控件(Drag initiator)来使用,我们可以通过mouseDown,mouseMove,dragComplete事件来控制拖放操作.
鼠标锁定事件和鼠标移动事件(mouseDown events and mouseMove events)
鼠标锁定事件在当你选择住某个控件并且一直按住鼠标按钮时被触发.
鼠标移动事件在当你鼠标移动时触发.
以下的例子里使用图片控件(Image control)内嵌了4张图片(1分,2分,5分和10分硬币的图片).对于每一个图片控件,我们都定义了mouseMove事件,并且定义了一个事件处理方法dragIt()来处理这个事件. 在dragIt()方法里,我们获得一个指向当前硬币图片事件的引用,该引用指到该事件对象的currentTarget属性.我们把它保存为本地对象并命名为dragInitiator.
接下来我们创建一个DragSource的实例,在其中创建一个addData()方法获取由dragIt()方法传过来的value参数,这个参数用于以后处理Drop事件时使用.
当我们拖动目标时,我们想让这个硬币图片跟随鼠标移动,我们可以通过创建一个图片实例(Image instance),把这个实例的source属性指到当前拖动的图片目标上去,我们把新创建这个图片实例保存为本地变量dragProxy
最后我们通过使用DragManager类中的静态方法doDrag(),然后指定相关的drag initiator, drag source, event object, 就可以开始拖曳操作了.
在这个例子里,你可以拖动图片对象到任何地方,但是无法放置, 因为我们并没有指定任何被放置的对象.
1
<?xml version="1.0" encoding="utf-8"?>
2
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
3
width="500" height="160">
4
5
<mx:Script>
6
<![CDATA[
7
import mx.controls.Image;
8
import mx.managers.DragManager;
9
import mx.core.DragSource;
10
11
[Embed('assets/1c.png')]
12
[Bindable]
13
public var OneCent:Class;
14
15
[Embed('assets/2c.png')]
16
[Bindable]
17
public var TwoCents:Class;
18
19
[Embed('assets/5c.png')]
20
[Bindable]
21
public var FiveCents:Class;
22
23
[Embed('assets/10c.png')]
24
[Bindable]
25
public var TenCents:Class;
26
27
private function dragIt(event:MouseEvent, value:uint):void {
28
var dragInitiator:Image = event.target as Image;
29
30
var dragSource:DragSource = new DragSource();
31
dragSource.addData(value,'value');
32
33
var dragProxy:Image = new Image();
34
dragProxy.source = event.currentTarget.source;
35
36
DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
37
}
38
]]>
39
</mx:Script>
40
41
<mx:HBox>
42
43
<mx:Image
44
id="oneCent" source="{OneCent}"
45
mouseMove="dragIt(event, 1);"
46
47
/>
48
<mx:Image
49
id="twoCents" source="{TwoCents}"
50
mouseMove="dragIt(event, 2);"
51
52
/>
53
<mx:Image
54
id="fiveCents" source="{FiveCents}"
55
mouseMove="dragIt(event, 5);"
56
57
/>
58
<mx:Image
59
id="tenCents" source="{TenCents}"
60
mouseMove="dragIt(event, 10);"
61
62
/>
63
</mx:HBox>
64
65
</mx:Application>
66
想实践的话随便搞4张差不多的图片放到flex项目的assets下,对应好命名,就可使用.
2007年6月11日
2007年6月5日
只是简单的备忘作用,最近记性很差.
Flex2中的代码片段,用于实现拍照功能.
1
private function getSnapshotJPEG():void
{
2
var jpegEnc:JPEGEncoder = new JPEGEncoder(100);
3
var jpegData:ByteArray = jpegEnc.encode(cameraStream.getSnapshotBitmapData());
4
5
//var req:URLRequest = new URLRequest('http://127.0.0.1/php/UploadImg.php');
6
var req:URLRequest = new URLRequest('http://127.0.0.1/dotnet/FlexWebCam.aspx');
7
var loader:URLLoader = new URLLoader();
8
saveImageListeners(loader);
9
//loader.addEventListener('complete', onComplete);
10
11
req.contentType = 'applicatoin/octet-stream';
12
//req.contentType = 'multipart/form-data';
13
req.method = URLRequestMethod.POST;
14
req.data = jpegData;
15
16
try
{
17
loader.load(req);
18
}
19
catch (error:Error)
{
20
trace('unable to load request');
21
}
22
23
function saveImageListeners(dispatcher:IEventDispatcher):void
{
24
dispatcher.addEventListener(Event.COMPLETE, onComplete);
25
}
26
27
function onComplete(e:Event):void
{
28
//navigateToURL(new URLRequest("http://127.0.0.1/php/UploadImg.php"),"_self");
29
var loader:URLLoader = URLLoader(e.target);
30
trace('返回数据:'+loader.data);
31
}
32
}
FLEX实现抓取图像,通过JPEGEncoder转换成ByteArray,返回.
剩下的工作简单了,获取图像保存而已
php 实现
1
$fp = fopen('php.jpg', 'wb');
2
fwrite($fp, $GLOBALS['HTTP_RAW_POST_DATA']);
3
fclose($fp);
C# 实现
1
System.Drawing.Image img = System.Drawing.Image.FromStream(Request.InputStream);
2
img.Save(@"D:\path\asp.jpg");
2007年5月11日
摘要: 最近因为工作需要,需要一个UBB的在线网页编辑器,从网上找了一些,效果都不太理想,而且对FIREFOX的支持性不是太好,于是决定自己写个算了,支持IE&FIREFOX,功能我只是根据我自己需要写了一些,代码倒不是太复杂,也算是拿过来顺便对jQuery练练手,欢迎有兴趣的朋友一起探讨。
代码如下:
阅读全文
2007年4月28日
摘要: 本文主要实现两个功能,第一使用图片代替html checkbox一成不变的样式并可以使用checkbox的正常功能,其次是前者的基础之上实现checkbox的全选,全不选和反选.同时也捎带介绍了jQuery最基本的插件写法.
阅读全文