using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using Shiji.Base;
using Shiji.HR.Dal;
namespace Test.Bll
{
/// <summary>
/// PythonTest 的摘要说明
/// </summary>
[TestClass]
public class PythonTest
{
ScriptEngine engine;
ScriptScope scope;
public PythonTest()
{
engine = Python.CreateEngine();
scope = engine.CreateScope();
}
private TestContext testContextInstance;
/// <summary>
///获取或设置测试上下文,该上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
[TestMethod]
public void 测试简单表达式()
{
var strExpression = "1+2";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
var actual = sourceCode.Execute<int>();
Assert.AreEqual(3, actual);
}
[TestMethod]
public void 测试传入变量()
{
var strExpression = "\"Hello:\" + str";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("str", "Python");
var actual = sourceCode.Execute<string>(scope);
scope.RemoveVariable("str");
Assert.AreEqual("Hello:Python", actual);
}
[TestMethod]
public void 测试C引用Python函数()
{
var strExpression = @"
def MyFunction(n):
return 2*n
";
var sourceCode = engine.CreateScriptSourceFromString(strExpression).Compile().Execute(scope);
var func = engine.GetVariable<Func<int, int>>(scope, "MyFunction");
Assert.AreEqual(0, func(0));
Assert.AreEqual(2, func(1));
Assert.AreEqual(4, func(2));
}
[TestMethod]
public void 测试Python引用C函数()
{
var strExpression = "CMethod('Python')";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("CMethod", (Func<string, string>)TMethod);
var actual = sourceCode.Execute<string>(scope);
scope.RemoveVariable("CMethod");
Assert.AreEqual("Hello:Python", actual);
}
public string TMethod(string info)
{
return "Hello:" + info;
}
[TestMethod]
public void 测试Python引用C函数2()
{
var strExpression = "CMethod('Python')";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("CMethod", (Func<string, string>)T2Method);
var actual = sourceCode.Execute<string>(scope);
scope.RemoveVariable("CMethod");
Assert.AreEqual("Hello:Python", actual);
}
public string T2Method(string info)
{
return TMethod(info);
}
[TestMethod]
public void 测试Linq1()
{
var mc = App.DB.GetTable<HR_MetaClass>().First(p => p.Code == "HR_Catalog");
//mc.HR_MetaProperty.Count
//此处调用属性
var strExpression = "mc.HR_MetaProperty.Count";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("mc", mc);
var actual = sourceCode.Execute<int>(scope);
scope.RemoveVariable("mc");
Assert.AreEqual(12, actual);
}
[TestMethod]
public void 测试Linq2()
{
var mc = App.DB.GetTable<HR_MetaClass>().First(p => p.Code == "HR_Catalog");
//mc.HR_MetaProperty.Count
//此处调用方法,具体可以参看http://blogs.msdn.com/sreekarc/archive/2007/05/01/extension-methods-and-delegates.aspx
var strExpression = @"
import clr
clr.AddReference('System.Core')
from System.Linq import*
Enumerable.Count(mc.HR_MetaProperty)";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("mc", mc);
var actual = sourceCode.Execute<int>(scope);
scope.RemoveVariable("mc");
Assert.AreEqual(12, actual);
}
[TestMethod]
public void 测试Linq3()
{
var mc = App.DB.GetTable<HR_MetaClass>().First(p => p.Code == "HR_Catalog");
var strExpression = @"
import clr
clr.AddReference('System.Core')
from System.Linq import*
Enumerable.First(mc.HR_MetaProperty,lambda p:p.Code=='Code')";
var sourceCode = engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("mc", mc);
var actual = sourceCode.Execute<HR_MetaProperty>(scope);
scope.RemoveVariable("mc");
Assert.AreEqual("Code", actual.Code);
}
}
}
posted @
2010-01-18 18:26 I'm CY 阅读(7) |
评论(0) |
编辑
Dim wb As New WebBrowser()
'屏蔽脚本错误消息。
wb.ScriptErrorsSuppressed = True
wb.Navigate("about:blank")
wb.Document.Write(htmlString)
posted @
2010-01-07 23:05 I'm CY 阅读(119) |
评论(0) |
编辑
http://blogs.msdn.com/dsimmons/pages/ef-faq-query.aspx
C#
static Expression<Func<TElement, bool>> BuildContainsExpression<TElement, TValue>(
Expression<Func<TElement, TValue>> valueSelector, IEnumerable<TValue> values)
{
if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); }
if (null == values) { throw new ArgumentNullException("values"); }
ParameterExpression p = valueSelector.Parameters.Single();
// p => valueSelector(p) == values[0] || valueSelector(p) == ...
if (!values.Any())
{
return e => false;
}
var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
return Expression.Lambda<Func<TElement, bool>>(body, p);
}
var query2 = context.Entities.Where(
BuildContainsExpression<Entity, int>(e => e.ID, ids));
VB.NET
Private Function BuildContainsExpression(Of TElement, TValue) _
(ByVal valueSelector As Expressions.Expression(Of Func(Of TElement, TValue)), _
ByVal values As IEnumerable(Of TValue)) _
As Expressions.Expression(Of Func(Of TElement, Boolean))
If valueSelector Is Nothing Then
Throw New ArgumentNullException("valueSelector")
End If
If values Is Nothing Then
Throw New ArgumentNullException("values")
End If
If Not values.Any() Then
Return Function(n) False
End If
Dim equals = values.Select(Function(n) Expressions.Expression.Equal _
(valueSelector.Body, Expressions.Expression.Constant(n, GetType(TValue))))
Dim body = equals.Aggregate( _
(Function(n1, n2) Expressions.Expression.Or(n1, n2)))
Dim p As Expressions.ParameterExpression = valueSelector.Parameters.Single()
Return Expressions.Expression.Lambda(Of Func(Of TElement, Boolean))(body, p)
End Function
posted @
2010-01-07 21:02 I'm CY 阅读(68) |
评论(0) |
编辑
测试方法 TestProject1.SysTest.HtmlAnalysisTest12 引发异常: System.Data.UpdateException: 更新项时出错。有关详细信息,请参阅“InnerException”。 ---> System.Data.SqlClient.SqlException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 6 ("@3"): 数据类型 0xA7 的数据长度或元数据长度无效。。
========================
将数据中varchar(max)改为nvarchar(max)刷新模型,问题解决。
原因未知。
posted @
2010-01-03 21:24 I'm CY 阅读(45) |
评论(0) |
编辑

Code
private void t_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsDigit(e.KeyChar) || e.KeyChar == (char)8)
{
return;
}
else
{
var txt = (TextBox)sender;
var str = txt.Text.Insert(txt.SelectionStart,e.KeyChar.ToString() + "0");
decimal d;
if (!decimal.TryParse(str, out d))
{
e.Handled = true;
}
}
}
posted @
2009-11-06 23:00 I'm CY 阅读(101) |
评论(0) |
编辑
摘要: 在不同的机器打开有报表项目,会发生的异常:基类包括字段“ReportViewer1”,但其类型(Microsoft.Reporting.WebForms.ReportViewer)与控件(Microsoft.Reporting.WebForms.ReportViewer)的类型不兼容解决办法如下:Going to the Solution Explorer -> [P...
阅读全文
posted @
2009-10-15 11:23 I'm CY 阅读(140) |
评论(2) |
编辑
摘要: 按照 http://www.asp.net/learn/mvc/tutorial-21-cs.aspx学习MVC的过程中,添加一条记录的时候报错最后发现时Global.asax定义的Route中的Id和表中的Id有冲突引起的,修改Global.asax中的id为其它名称,或修改数据库Id字段的名称都可以解决问题Global.asax:修正前代码routes.MapRoute( _ "Default...
阅读全文
posted @
2009-10-14 23:03 I'm CY 阅读(89) |
评论(0) |
编辑
摘要: 1、通过报表显示列表(报表:ReportList.rdlc)2、点击报表导航到另外一个页面显示详细信息(报表:ReportDetail.rdlc)3、顺便学习一下MVC和VB.NETVBReport.rar
阅读全文
posted @
2009-10-14 22:37 I'm CY 阅读(184) |
评论(0) |
编辑
摘要: 自然模板模板,主要为用户提供快速输入,使软件更适用用户的操作。因此抓住模板的本质才能更好适用性一般性设计一提到模板一般性的思维就是:1、分析模板结构。2、针对分析结果设计类和数据库结构3、定义模板进行编程(模板定义、模板数据应用)这样的过程中规中矩的,没有什么问题,其实对于大多数的模板是可以优化的。自然模板模板设计的目的是提供快速录入,因此模板的数据结构大多数情况下和目标应用最终结果的数据结构是一...
阅读全文
posted @
2009-10-10 22:54 I'm CY 阅读(88) |
评论(0) |
编辑
摘要: 很有用类,总是忘,记录一下。默认情况下,Stopwatch 实例的运行时间值相当于所有测量的时间间隔的总和。每次调用 Start 时开始累计运行时间计数;每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。使用 Reset 方法可以清除现有 Stopwatch 实例中的累计运行时具体可以参看MSDN
阅读全文
posted @
2009-10-10 14:58 I'm CY 阅读(83) |
评论(0) |
编辑
摘要: This document is an authorized derivative of Frank McCown's "VB.NET and C# Comparison" (C) 2005 at http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.htmlThis work is licensed under a Cre...
阅读全文
posted @
2009-10-09 18:15 I'm CY 阅读(66) |
评论(0) |
编辑
摘要: 扩展字段设计 将类型也设计上,分类型存储,在统计和比较的时候省了不少麻烦。 FieldCodeFieldTypeFIntFDecimalFVarcharFDateTimeMSNVarcharxxx@msn.comSalaryDecimal2000.00xxxxxxxxxxxxx
阅读全文
posted @
2009-09-28 21:29 I'm CY 阅读(26) |
评论(0) |
编辑
摘要: 单据数据结构设计单据形式 企业中的表单(请假单、加班单等等)大多数完成两个功能:一、审批;二、产生业务记录。一般情况下,会根据表单上字段所处的位置,将其设计为单据头、单据体那样一对多的关系。通一个业务可能表单的形式不尽相同,以加班单为例:有一人多天加班、有多人一天加班,有多人多天的加班。不论怎么变化,只是数据的表现形式不一样而已,只有遵循一定的设计方法才能应付这种变化数据结构设计方法对字段进行分类...
阅读全文
posted @
2009-09-28 21:03 I'm CY 阅读(112) |
评论(0) |
编辑
摘要: 感受业务基本描述数据库范式、设计模式是从技术角度描述和优化业务,领域驱动从边界的角度描述业务,这些方法的目的都是为了让业务系统更稳定。现实却是:即使你用了这些设计方法可是设计的系统依然不是很稳定。其主要原因和程序设计经验没有太大关系,但却和如何理解业务有很大关系。感受业务业务人员描述的业务场景是有局限性的,需要设计人员去还原业务的本质。业务场景只是反应了业务的一个表象,可能还会有其他的。有时感觉业...
阅读全文
posted @
2009-09-26 22:12 I'm CY 阅读(12) |
评论(0) |
编辑
摘要: 工资表组织数据看似简单问题,如果设计的奇妙可以简化程序编程。本能设计工资记录当初我设计的工资表记录是根据用户提供的工资条进行设计,工资条设计如下:姓名实发应发基本资扣税请假扣加班费交通补扣养老扣失业张三而我的第一印象也就是设计了工资明细表Salary(表结构):EmpIDS01S02S03……………S99工资项目表SalaryDefine...
阅读全文
posted @
2009-09-26 15:31 I'm CY 阅读(142) |
评论(0) |
编辑
摘要: http://blog.sina.com.cn/s/blog_54830f070100cekm.html我很不愿意去J道或其它知名的技术站点看那里的讨论。整体上来说,在这些网站上也形成了不大不小的圈子,其活动者大体也是业界实实在在的实践者,包括各个层次的程序员以及高层设计人员。所以,理论上这些圈子应该代表中国软件业技术主流的水准。然而我的确无法恭维;让我最为沮丧的是一种充斥其间的神秘主义的氛围。所...
阅读全文
posted @
2009-09-16 13:30 I'm CY 阅读(11) |
评论(0) |
编辑
摘要: 给A项目组的建议:A项目组的问题:l 产品从专业角度给客户H的印象是不如B项目组A项目组产品实现了很多功能,但没有对功能进行归纳,B项目组这边做的还可以。从抽象的角度看问题、讨论问题、解决问题会避免过早的陷入细节,同时从抽象的角度进行沟通也更容易把握重点。B项目组将需求分解为诸如凭证、余额等概念,让提出需求的人从新审视自己提出需求,这也许是客户H认为B项目组比A项目组强的方面。l 代码重叠A项目组...
阅读全文
posted @
2009-09-14 18:38 I'm CY 阅读(18) |
评论(0) |
编辑
摘要: l 需求可控对用户的需求进行整理抽象,不要为完成功能而编程,用心分析肯定能够找到其核心需求、通过和以前已完成的功能进行对比,寻找相似的功能并重构。l 程序可控保持代码整洁、注释完整、结构清晰、边界隔离清楚,时刻保持警惕,不要随便实现。l 性能可控在保证了前两点的前提下,可以考虑性能了,其实我也不懂如何控制:-(
阅读全文
posted @
2009-09-08 21:37 I'm CY 阅读(10) |
评论(0) |
编辑
摘要: http://kelaocai.javaeye.com/blog/136859引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。 http://www.kpwang.com反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息...
阅读全文
posted @
2009-08-27 23:17 I'm CY 阅读(99) |
评论(0) |
编辑
摘要: 异常==========================用户代码未处理 System.Security.SecurityExceptionMessage="请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56...
阅读全文
posted @
2009-06-29 19:21 I'm CY 阅读(120) |
评论(0) |
编辑
摘要: http://timheuer.com/blog/archive/2009/05/20/silverlight-and-visual-studio-2010-beta.aspxInstall Visual Studio 2010 Beta 1Install Silverlight 2 SDK (if you attempt to run the Silverlight 2 tools instal...
阅读全文
posted @
2009-06-14 19:30 I'm CY 阅读(102) |
评论(0) |
编辑
摘要: http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/4482b083-72bd-4415-82be-8cccbd9eabba [代码] 应用 [代码]var bbb = con...
阅读全文
posted @
2009-06-09 13:37 I'm CY 阅读(97) |
评论(0) |
编辑
摘要: 测试项目中目录的形式为:TestResults\Administrator_*** 2008-09-24 15_25_32\Out VS菜单中选择:测试->编辑测试运行配置->本地测试运行(你的测试名称)->部署 添加文件,保存即可
阅读全文
posted @
2009-04-28 22:33 I'm CY 阅读(80) |
评论(0) |
编辑
摘要: “形”指的是软件要完成的功能,就像功夫的一招一式。“神”指的是软件给人的感觉,就像功夫的套路。一招一式你能看出优势吗,也许能但很难,但套路就不同,好坏立竿见影。练好形,抓住神,是我追求。
阅读全文
posted @
2009-04-21 22:27 I'm CY 阅读(80) |
评论(0) |
编辑
摘要: VS2008中设计.dbml文件时,如果选择“保存”“数据库连接字符串”,这些信息会存储在Propreties/Settings.settings.cs文件中。想在发布的时候更改连接字符串,该如何做?其实,秘密都在app.config文件中.VS2008在产生Settings.settings的同时,此文件中的信息已经存储在app.config,我们...
阅读全文
posted @
2009-04-18 07:36 I'm CY 阅读(560) |
评论(0) |
编辑
摘要: 加载或保存XML时引发的异常.System.ArgumentException: “”(十六进制值 0x1D)是无效的字符。产生原因是xml文件中包含低位非打印字符造成的处理方法:在产生xml文件的时候,过滤低位非打印字符把一个字符串中的 低序位 ASCII 字符 替换成 字符转换 ASCII 0 - 8 -> - 转换 ASCII 11 -...
阅读全文
posted @
2009-03-07 12:32 I'm CY 阅读(289) |
评论(0) |
编辑