随笔-12  评论-161  文章-0  trackbacks-7
  2009年2月27日

 1class Program
 2    {
 3        static void Main(string[] args)
 4        {
 5            //异步委托方法一
 6            Func<intint> func = new Func<intint>(Square);
 7            IAsyncResult ar1= func.BeginInvoke(10nullnull);
 8            while (!ar1.IsCompleted)
 9                Console.WriteLine(func.EndInvoke(ar1));
10
11            //异步委托方法二
12            IAsyncResult ar2 = func.BeginInvoke(20nullnull);
13            ar2.AsyncWaitHandle.WaitOne();
14            Console.WriteLine(func.EndInvoke(ar2));
15
16            //异步委托方法三
17            IAsyncResult ar3 = func.BeginInvoke(30,
18                result =>
19                {
20                    if (result.IsCompleted)
21                        Console.WriteLine(func.EndInvoke(result));
22                }
,
23                func);
24
25            //后台线程方法
26            BackgroundWorker worker = new BackgroundWorker();
27            worker.DoWork += (s,e) => e.Result = Square((int)e.Argument);
28            worker.RunWorkerCompleted += (s,e) => Console.WriteLine(e.Result);
29            worker.RunWorkerAsync(40);
30
31            //多线程方法
32            Thread thread = new Thread(new ThreadStart(() => Console.WriteLine(Square(50))));
33            thread.Start();
34
35            Console.ReadLine();           
36        }

37
38        //可以为耗时的操作
39        private static int Square(int x)
40        {
41            return x * x;
42        }

43    }

http://files.cnblogs.com/guozili/CodeTimer.rar

 

1.15.4寸 1280*800,2.52的点距 用了4年,识别文字比看书还辛苦,把我的视力搞的严重下降了,还是在公司用台式机爽,2.9的点距,中距离看着不累。

2.现在的14.1 16:9 用1366的分辨率太不爽了,搞的我都不知道怎么换笔记本了,如果14.1 1280 * 720的分辨率就完美了,刚好是720p。

3.我们这里有一台搞图形设计的32寸的专业显示器,但是色彩和字迹的清晰度太爽了,隔着1米外都看的很清楚很亮丽。

4.另外我觉得笔记本应该向高对比度,高色彩,点距大但是清晰发展,而不是向高分辨率,高亮度。

 

posted @ 2009-02-27 17:45 guozili@163.com 阅读(32) | 评论 (0)编辑
  2008年11月23日

接上篇“基于Silverlight的精简框架之解析”,最近研究了ExtJs,发现其虽然外观很酷,但是开发难度比较大,大量JS不易维护,于是乎想起基于EasySL框架,实现ExtJs的部分功能。比较起来SL的UI和异步机制很容易实现,特别是SL类似于winform的控件开发方式,给开发丰富的RIA提供强大的支持。

一、此次主要是展示一个后台管理UI:

1. 登陆、列表、分页、添加、修改、删除,使用了双向绑定机制,界面元素和实体进行绑定,自动对界面进行取值赋值;

2. 其异步数据交互应用了此框架(EasySL)的简洁请求方式,只需传方法名和参数名到有同样方法签名的业务层,至于数据层暂时用的是假数据,推荐用db4o、linq to sql或SubSonic。

二、本次升级主要加入了一些常用的实用控件:

1. ImageButton: 你只需赋值normal、hover、click、enable四张图片即可
2. VisualPager: 原理和传统分页控件差不多,实现了比较久,主要是翻页的效果
3. Alert: 使用Window.Alert(string msg)
4. Confirm: 使用Window.Confirm(string msg, OnConfirm onConfirm)
5. Loading: 使用Window.ShowLoading(string msg)和Window.HideLoading()
6. DialogPanel: 使用Window.ShowOpPanel(string title, UserControl panel, OnSubmit onSubmit)
7. DragHelper: 提供拖拽支持

 三、一些实现方法还不是很好,后面将完善代码,欢迎大家加入到SL的开发行列一起讨论
 1. 预览地址:http://hz88a8.hz88a.wxdlpt.com/EasySL.htm

 2. 且源代码:http://files.cnblogs.com/guozili/EasySL.zip
 
 四、附:应用截图

1.用户登陆
EasySl (1).jpg

2.验证用户(loading control)
EasySl (2).jpg

3.加载第一页数据
EasySl (3).jpg

4.产品列表(visual pager control)
EasySl (4).jpg

5.确认删除(confirm control)
EasySl (5).jpg

6.添加产品(dialog panel control)
EasySl (6).jpg

7.升级产品(two-way bind)
EasySl (7).jpg

8.警告(Alert control)
EasySl (8).jpg

posted @ 2008-11-23 19:01 guozili@163.com 阅读(3711) | 评论 (46)编辑
  2008年11月7日

接上篇“基于Silverlight的精简框架之介绍”,Silverlight的数据请求需要架设wcf、webservice或者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署。

一、框架整体分为5块(界面、服务端、业务逻辑层、数据访问层、通用层),包含15个项目,通过配置web.config,其中的Remoting服务端可以去掉,变为界面层直接访问逻辑层.
可以参考下面此图:
EasySL1.jpg


二、下面是数据请求的过程
1.界面层通过Task发送Request请求,最终调用了HttpRequest请求一个httpHandle
2.httpHandle会截取到此请求,发送给remotingServer处理,
3.server会把此请求的数据直接发给业务逻辑层处理,
4.业务逻辑层会进行反序列化,提取请求中方法名和参数,通过method.invoke(DALImpl,Paras)动态执行数据层相应的方法
5.把method.invoke返回的实体装载到Response里,Response.ToJson()返回json结果
6.返回到界面层时会进行反序列化,还原Response,Response.data as entity即是数据层返回的entity

可以参考下面此图:
EasySL2.jpg

三、Core里面的核心3个对象:
EasySL3.jpg

EasySL4.jpg

EasySL5.jpg

下一篇将讲解使用的3种方式(Requestor、Task、TaskManager)
且源代码:http://files.cnblogs.com/guozili/EasySL.zip

posted @ 2008-11-07 16:25 guozili@163.com 阅读(1855) | 评论 (1)编辑
  2008年11月6日

Silverlight的数据请求需要架设wcf、webservice或者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署。

项目文件说明:
无标题-1.jpg

EasySL.Controls 封装了一些基于Silverlight的自定义控件,目前还没加进来
EasySL.Core   请求数据,返回数据的json序列化和反序列化机制,较之webservice xml性能好些
EasySL.Core.SL 和上面一样,Silverlight项目用
EasySL.Data 数据访问层实现
EasySL.Data.Interface 数据访问层接口
EasySL.Entity 实体层
EasySL.Service 业务逻辑,数据加工,缓存处理
EasySL.Share 一些常用helper
EasySL.Server Remoting server
EasySL.UI Silverlight主控件
EasySL.Web asp.net主页面

部署方式:
1.web.config里设置ServerEnable为false,将不需要开启remoting server,由web层直接请求业务逻辑层(EasySL.Service)
2.web.config里设置ServerEnable为true,然后启动remoting server(EasySL.Server),
将由remoting server代理访问业务逻辑层,易于分布式部署

简单使用:

//UI层page.xmal.cs
        
//初始化一个task
        this.getProductListTask = new Task();
        
//初始化请求数据
        getProductListTask.BeforeStart += new EventHandler<EventArgs>(getProductListTask_BeforeStart);
        
//回调时更新界面
        getProductListTask.Callback += new GetDataAsyncCompleted(GetProductListCallBack);

        
void getProductListTask_BeforeStart(object sender, EventArgs e)
        {           
            Task task 
= sender as Task;
            task.MethodName 
= "GetProductList";  //对应于数据层的方法名
            task.ReturnType = typeof(List<Product>); //对应于数据层的返回类型
            task.SetParameter("count"int.Parse(this.count.Text)); //对应于数据层的方法的参数
        }
        
        
public void GetProductListCallBack(Response response)
        {
             List
<Product> product = reponse.data as List<Product>;
             
//update UI.
        }
        
//所以你需要在数据访问层增加对应的方法:
        public List<Product> GetProductList(int count)
        {
             
//get data from xml or database
        }



  一些实现方法还不是很好,后面将完善代码,增加注释,发布新的版本,欢迎大家讨论
 附上此框架的一个应用:click
 且源代码:http://files.cnblogs.com/guozili/EasySL.zip
posted @ 2008-11-06 16:24 guozili@163.com 阅读(2107) | 评论 (14)编辑
  2008年4月30日
     摘要: 使用的是SL bete2,cpu占用快于js,差于flash,参考了jQuery实例:图片展示效果 的思想实现了一些网站首页的图片新闻展示效果。大概解析下(具体请参考代码注释):图片容器包括图片、底部文字、数字圆圈3部分和对应的3个动画,其定位和动画位移都是通过改变其Canvas.Top或Left属性,图片hover时通过改变DoubleAnimation.From和To属性实现位移动画,这些基础... 阅读全文
posted @ 2008-04-30 10:31 guozili@163.com 阅读(3000) | 评论 (14)编辑
  2008年4月23日
     摘要: 接上一篇:js应用-实现博客个性主页布局拖拽功能 已改造成JQuery插件形式,并新增了一些效果,由于jquery强大的DOM选择器和一些封装的效果,使得代码更加清晰和精简。引用上一篇:Jquery的Interface elements for jQuery里面的拖拽布局存在一些bug,效率也比较低,GoogleUI google_drag.js有些乱,不是很容易理解,Discuz!NT Spac... 阅读全文
posted @ 2008-04-23 12:58 guozili@163.com 阅读(4995) | 评论 (13)编辑
  2008年4月22日
     摘要: Jquery的Interface elements for jQuery里面的拖拽布局存在一些bug,效率也比较低,GoogleUI google_drag.js有些乱,不是很容易理解,Discuz!NT Space代码满天飞,所以自己参考GoogleUI的思想,简化和优化了一些操作代码,实现了博客系统基本的拖拽布局的效果,暂时未考虑其他浏览器的兼容性问题。下一步准备改造成Jquery的插件形式,... 阅读全文
posted @ 2008-04-22 10:43 guozili@163.com 阅读(4082) | 评论 (30)编辑
  2008年3月7日
2008-3-8-今日又去面试了,碰到一题,回来仔细写了下,不知道是不是这样效率最好:
ggg.jpg

2008-3-7-最近又开始面试了,由于长期做NET应用,导致基础算法不清,错失很多良机,故回家补习,列出几例,以便面试临时必备:
aaa.jpg
如Combind(new int[]{1,3,5}, new int[]{2,4},c)则得到,1,2,3,4,5

ccc.jpg
如a,b,c,则Permute(0)则得到abc, acb, bac,.......所有组合

ddd.jpg

eee.jpg

fff.jpg

猫叫,主人醒来,老鼠逃
bbb.jpg
posted @ 2008-03-07 14:42 guozili@163.com 阅读(2987) | 评论 (21)编辑
  2007年6月22日
     摘要: /Files/guozili/SiteOSFile2.rar模仿视频网站首页ajax分页,结合neverModules-slider +jquery form插件实现拖动滑动块进行AJAX分页,此方法较灵活,另外可用2.0里面的CallBack机制实现同样的功能,预览和代码请见下:(注释添加中.......)预览:代码:default.aspx<%@PageLanguage="C#"Auto... 阅读全文
posted @ 2007-06-22 14:44 guozili@163.com 阅读(3067) | 评论 (9)编辑
  2007年6月13日

最近在研究Interface elements for jQuery(http://interface.eyecon.ro/),此插件封装了一些拖拽效果,并且使用非常简单,能轻松实现拖拽排序、购物车、博客首页排版等UI,所以模仿和讯的图片排序做了一个简单样例:

预览:
 
代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Sortables demo - Interface plugin for jQuery</title>
        
<script type="text/javascript" src="jquery.js"></script>
        
<script type="text/javascript" src="interface.js"></script>
<style type="text/css" media="all">
body
{
    background
: #fff;
    height
: 100%;
    font-family
: Arial, Helvetica, sans-serif;
    font-size
: 10pt;
}

#sort1
{
    width
: 350px;
    height
: 200px;
}

div img 
{
    float
: left;
    width
: 60px;
    height
: 60px;
    margin
:10px;
    border
:solid 3px #ccc;
}

.sorthelper
{
    background-color
: #f5f5f5;
    float
: left;
    border
:4px solid #ccc;
}

.sortableactive
{
}

.sortablehover
{
}

</style>
</head>
<body>
<div id="sort1">
    
<img src="1.jpg" class="sortableitem" id="1" alt="1"/>
    
<img src="2.jpg" class="sortableitem" id="2" alt="2"/>
    
<img src="3.jpg" class="sortableitem" id="3" alt="3"/>
    
<img src="4.jpg" class="sortableitem" id="4" alt="4"/>
    
<img src="5.jpg" class="sortableitem" id="5" alt="5"/>
    
<img src="6.jpg" class="sortableitem" id="6" alt="6"/>

</div>
<div  class="serializer">
<href="#" onClick="serialize(); return false;" >提交排序</a>
</div>
<script type="text/javascript">
$(document).ready(
    
function () {
        $('#sort1').Sortable(
            
{
                accept :         'sortableitem',   
//拖拽元素class名
                helperclass :     'sorthelper',     //拖拽时投放位置的样式  
                activeclass :     'sortableactive', //拖拽时悬空时class
                hoverclass :     'sortablehover',  //拖拽时经过时class
                opacity:         0.5,              //拖拽时透明度     
                fx:                200,              //拖拽时回位速度
                revert:            true,
                floats:            
true,
                tolerance:        'pointer',
                onchange:       changedata         
//拖拽状态改变时触发事件
            }

        )
    }

);
function changedata()
{
}


function serialize(s)
{
    serial 
= $.SortSerialize(s);
    alert(serial.hash.replace(
/&sort1\[\]=/g,",").replace("sort1[]=",""));
    
/*这里可使用jquery form插件ajax提交
    (http://www.malsup.com/jquery/form/#code-samples)
       使用也非常方便
    
*/

}
;
</script>    
</body>
</html>
posted @ 2007-06-13 11:15 guozili@163.com 阅读(3976) | 评论 (9)编辑