心境

凡夫取境,智者取心。心境双亡,乃是真法。
随笔 - 81, 评论 - 402, 引用 - 0

导航

关于

xinyu出没于山水之间,信服读万卷书不如行万里路之道理,并遍寻各山之高人雅士,欲求赐人间正道,廿二载而不可得,始悟人间正道存乎其心。乃有云:人心皆谓道也!

标签

每月存档

最新留言

广告

【第1页/共6页,88条】
首页
前页
1
2004年10月11日

今天下午参加了 Microsoft 开发技术大会(成都站),感觉讲得太浅显,展望的目的达到了,不过深入了解还谈不上。

第一部分的内容比较枯燥,讲地都是 Smart Client 的概念性东西,占用的时间比较多,可能因此开心老大在讲 Offline Application Block 的时候就有意无意地有点抢时间了。

最出彩的部分应该就是开心大哥讲 Offline Application Block 了,不过我才刚入味就结束了,如果能把第一部分压缩一下,多讲一些 OAB 的细节就完美了(不过赠的光盘内容很丰富,弥补了这一遗憾)。

整场会议总的来说还不错,就是技术性的东西少了些,对 Smart Client 的渲染比较重,希望有机会参加杭州和福州站的朋友不要错过了机会。

还小小的追了一把星,在填写调查表的间隙,冲上台和开心合影。:-)

posted on 2004-10-11 18:17:00 by hxinyu  评论(19) 阅读(1049)

 
2004年09月27日

但愿《2046》能让我真正放下,这是我第一次想远离思念,远离令我无助和彷徨的思念。

虽然答应陪我看《2046》,但语气中的感情令我感到寒意。“你没有忘记我,是时间忘了带走我”。这一刻,我想到了酒,一种令人丢不下的东西,宁愿酒醒后强烈的失落与身体的疲惫,也要在那不值一提的迷醉中忘却。

也许,周慕云一生都在期望远离苏丽珍给他的羁绊,结果却又在期望的同时,一次又一次地追寻着苏丽珍的影子,纠缠不休。孤独伴随着他的灵魂,得到的永远都只是影子,只为世上唯一的苏丽珍,一个令他如此累如此酸如此痛的苏丽珍。

打碎无形的枷锁,给渴望飞翔的心一对自由的翅膀。在世界的尽头,没有光,自然也没有影。终于,不再无助,不再彷徨...

posted on 2004-09-27 23:34:00 by hxinyu  评论(0) 阅读(545)

 

22岁的男孩子知道什么是爱情?
也许这是一个悖论!

王家卫是寂寞的,寂寞的只能再一次用王家卫式的《2046》来表现他眼中的黑白世界。

周慕云为什么要苦苦恋着注定会失去的苏丽珍?王家卫知道,只是他不肯说,他只是让一些似有似无的影子,一些不知道是不是影子的影子,从周慕云那火柴般短暂的永恒中,从无法看见的周慕云的泪水中,悄悄的淌了出来。

如果有下辈子,希望王家卫能依旧如此寂寞,寂寞得只有在没有星的夜,寂寞得只有在飘雨的夜展现他的才华,让男人读懂他的心,让伤害过别人也被别人伤害过的人读懂他的心。

在那一瞬间,我看到了永恒的烟火,在片刻就消逝的干干净净,仿佛不曾出现过一般...

posted on 2004-09-27 22:06:00 by hxinyu  评论(0) 阅读(520)

 
2004年09月14日

在试用 .Net 2.0 时,碰到了一个疑问,就是如何在一个????泛型的方法中返回 null ,如果直接 return 肯定是不可以的,根本无法通过编译,在 IDE 的智能提示下我发现了 System.Nullable ,但是我首先想到的是继承它,结果当然是失败了。后来经过询问装配脑袋后,找到了解决方法,之后更看到了装配脑袋的这篇文章。于是问题解决了,就像这样:
public System.Nullable<ItemType> Pop()
或者
public ItemType? Pop()

而 ItemType 也是之前定义的:
public class Stact<ItemType>

这样第一、二句就变成了泛型的泛型??该怎么说?

posted on 2004-09-14 10:07:00 by hxinyu  评论(15) 阅读(894)

 
2004年09月08日

在硬盘上不知呆了多久的 VS.Net 7.0 被删除了。

一直以来 VS.Net 7.0 和 VS.Net 2003 都相安无事,偶尔兴起我也会回味一下 7.0 的感觉。就像今天我也是想比较下 7.0 和 2003 在智能提示上的异同,结果使用不到三分钟,接连出现了不同的错误。一怒之下就把用了很久的 7.0 给咔嚓了。

被 UnInstall 的 VS.Net 7.0 还是几年前买 CSDN 程序员大本营 .Net 版中附赠的 Beta2 呢,已经算得上是老古董了。

.Net 诞生快四年了吧,时间过得真快啊,还常常怀念以前使用的 MFC 呢......

VS.Net 7.0 Beta2 起始页面

创建和打开项目

错误

设置“编辑并继续”选项

......

posted on 2004-09-08 15:43:00 by hxinyu  评论(3) 阅读(788)

 
2004年09月01日

虽然tbl.Rows和tbl.Select(“”)有时候很像,也会返回相同的结果,但Delete某行后,二者的区别就出来了。

tbl.Rows[index].Delete();
foreach(System.Data.DataRow row in tbl.Rows)//编译通过
    ...

foreach(System.Data.DataRow row in tbl.Select(“”))
    ...

虽然两者都顺利通过了编译,但在运行时前者抛出了DeletedRowInaccessibleException...

posted on 2004-09-01 08:15:00 by hxinyu  评论(0) 阅读(830)

 
2004年08月18日

昨天运行良好的代码今天就出问题了。在很偶然的情况我发现今天新添加到数据库的时间都变成了2001-01-01,那个急啊......

在询问了所有可能修改我代码的同事之后终于发现了问题所在,下面是问题解决前和解决后的代码:


某君把我构造日期的代码放到了一个返回bool的方法中,但却忘记了为DateTime参数添加了out关键字(个人估计是忘了DateTime是值类型了),导致新的DateTime无法返回主调。添加out并修改相应的调用部分后,问题解决。

令我疑惑的是DateTime是为什么要以用2001-1-1做默认值呢?

posted on 2004-08-18 13:36:00 by hxinyu  评论(6) 阅读(884)

 
2004年08月16日

客户决定查看哪些字段,并且其中有一些字段是ForeignKey,所以在Table中显示数据时并不知道是否存在应该显示parent数据的列。

不想使用DataGird,于是写出了下面的代码,但是因为效率的原因,正考虑替代方案呢。

  /// <summary>
  ///
  /// </summary>
  /// <param name="fk">二维数组</param>
  /// <param name="val">欲查找的值</param>
  /// <returns>-1未找到</returns>
  private System.Int32 IndexOf(System.String[,] fk,
   System.String val)
  {
   for(System.Int32 i = 0; i < fk.GetLength(0); i++)
    if(val == fk[i, 2])
     return i;

   return -1;
  }

  /// <summary>
  ///
  /// </summary>
  /// <param name="fields"></param>
  /// <param name="fkIndex">fk列在Table中的cell索引(cell显示顺序和待查询字段顺序相同)</param>
  /// <returns>true:待查询字段中存在fk</returns>
  private System.Boolean GetFK(System.String[] fields,
   out System.Int32[] fkIndex,
   out System.String[,] fkFields)
  {
   if(fields.Length == 0)//空查询字段
   {
    fkIndex = new System.Int32[0];
    fkFields = new System.String[0,0];
    return false;
   }

   System.String[,] fk = new System.String[2, 3];
   fk[0, 0] = "iTTT";  //fk的父键某列名称
   fk[0, 1] = "Rel_ttt"; //关系名称
   fk[0, 2] = "iTTT";  //fk的列名称
   fk[1, 0] = "txt";
   fk[1, 1] = "REL_depID";
   fk[1, 2] = "department";
   ......

   System.Int32 numCurrent = 0;//待查询字段中存在的fk数量
   System.Int32 num = fk.GetLength(0);

   for(System.Int32 i2 = 0; i2 < num; i2++)
    if(System.Array.IndexOf(fields, fk[i2, 2]) != -1)//fk
     ++numCurrent;
   
   if(numCurrent == 0)//待查询字段中不包括fk
   {
    fkIndex = new System.Int32[0];
    fkFields = new System.String[0, 0];
    return false;
   }

   fkIndex = new System.Int32[numCurrent];
   fkFields = new System.String[numCurrent, 2];
   for(System.Int32 i3 = 0, iCurrent = -1; i3 < num; i3++)
   {
    System.Int32 index = System.Array.IndexOf(fields, fk[i3, 2]);//得到该fk在待查询字段中的索引

    if(index == -1)//待查询字段中不包括该fk
     continue;

    fkIndex[++iCurrent] = index;        //cell索引
    fkFields[iCurrent, 0] = fk[this.IndexOf(fk, fk[i3, 2]), 0]; //在Table中显示该parent列
    fkFields[iCurrent, 1] = fk[this.IndexOf(fk, fk[i3, 2]), 1]; //关系
   }

   return true;
  }
  
  /// <summary>
  ///
  /// </summary>
  /// <param name="rows"></param>
  /// <param name="fields">待查询字段</param>
  private void DisplayWebTable(System.Data.DataRow[] rows,
   System.String[] fields)
  {
   this.DisplayWebTableHeader(fields);//打印表头
   
   System.Boolean blnColor = true;

   System.Int32[] ptIndex;  //fk的cell索引
   System.String[,] ptFields; //parent和relation
   System.Boolean blnParent = this.GetFK(fields, out ptIndex, out ptFields);

   for(System.Int32 fri = 0; fri < rows.Length; fri++)//行
   {
    ...

    for(System.Int32 fci = 0; fci < fields.Length; fci++)//列
    {
     System.Web.UI.WebControls.TableCell cell = new System.Web.UI.WebControls.TableCell();

     if(!blnParent)//没有fk
     {
      cell.Controls.Add(
       new System.Web.UI.LiteralControl(
        rows[fri][fields[fci]].ToString()));
     }
     else
     {
      System.Int32 thisIndex = System.Array.IndexOf(ptIndex, fci);
      if(thisIndex == -1)//cell不是fk cell
      {
       cell.Controls.Add(
        new System.Web.UI.LiteralControl(
         rows[fri][fields[fci]].ToString()));
      }
      else
      {
       System.Data.DataRow ptRow = rows[fri].GetParentRow(ptFields[thisIndex, 1]);
       if(ptRow == null)
       {
        this.debug.Text = "发生致命错误";
        return;
       }

       cell.Controls.Add(
        new System.Web.UI.LiteralControl(
         ptRow[ptFields[thisIndex, 0]].ToString()));
      }
     }

     row.Cells.Add(cell);
    }

    this.resultTable.Rows.Add(row);
    ...
    
    }
    ...
    
   }

posted on 2004-08-16 11:25:00 by hxinyu  评论(0) 阅读(729)

 
2004年05月17日

最近很忙,也没有什么感想,结果导致很久没有更新 Blog 了。

 

Sir说发表是最好的记忆(原话是什么?我记不太清了),所以准备把自己代码中的一些细节记录下来,以便和大家分享,有什么错误或理解不当之处也好请大家指正。

 

关于 Adapter 的连接

 

……

System.Data.OleDb.OleDbAdapter ada1 = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

System.Data.OleDb.OleDbAdapter ada2 = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

System.Data.OleDb.OleDbAdapter adaN = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

 

如果期望使用同一个连接来创建各个 Adapter 对象,恐怕会让您失望,.Net 无法准确判断您的意图(猛一看,想必就算是人也无法得知上面代码段的作者准确的想法)。所以,.Net采取了最直接的办法,为每个 Adapter 创建一个连接(Connection)。为了达到使用同一个 Connection 创建 Adapter 的目的,采取了如下代码:

 

……

System.Data.OleDb.OleDbConnection objCon = new System.Data.OleDb.OleDbConnection(strCon);

System.Data.OleDb.OleDbAdapter ada1, ada2, adaN;

ada1 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

ada2 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

adaN = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

 

System.Data.DataSet dataset = new System.Data.DataSet();

ada1.Fill(dataset);

ada2.Fill(dataset);

adaN.Fill(dataset);

 

虽然没有显示调用 objCon.Open() 但上面代码段依然能正常运行,因为 .Net Adapter 上自动打开了连接,但是在效率方面,上面的代码段不够理想。由于没有显示 objCon.Open() 方法调用(没有已打开的连接),造成在调用 Fill 方法的过程中,.Net 频繁的打开、关闭 Connection,从而影响了性能。如果在 Fill 前,存在打开的连接,在调用完成后 .Net 并不会关闭该连接。所以,只要对 Open 进行显示调用即可解决该问题。

 

……

System.Data.OleDb.OleDbConnection objCon = new System.Data.OleDb.OleDbConnection(strCon);

objCon.Open();

 

System.Data.OleDb.OleDbAdapter ada1, ada2, adaN;

ada1 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

ada2 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

adaN = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

 

System.Data.DataSet dataset = new System.Data.DataSet();

ada1.Fill(dataset);

ada2.Fill(dataset);

adaN.Fill(dataset);

 

objCon.Close();

 

……

posted on 2004-05-17 16:16:00 by hxinyu  评论(2) 阅读(936)

 
2004年04月10日

DateTime结构本身和UTC或本地时间都没有关系。构造DateTime时,指定的时间可能是UTC也可能是本地时间。

DateTime的Now和Today返回本地时间和日期,UtcNow则自动根据时区计算UTC。

UTC:
虽然格林威治标准时间是统一标准,但UTC(调整统一时间)将被认为是更精确的选择,因为UTC在全世界都是相同的,而本地时间则偏离于UTC,在格林威治西边的时区落后于UTC,东边的时区则超前于UTC。

选择:
System.DateTime datetime_UTC = datetime_Local.ToUniversalTime();
System.DateTime datetime_Local = datetime_UTC.ToLocalTime();

eMail 中关于“时间”的部分资料:
世界各地的人都认为太阳在天空中最高的时候为中午,而夜晚的中间是午夜。因为这两个事件在地球的各地不是同时发生的,所有在世界上不同地区居住的人对自己时钟的设置是不同的。以前非常混乱,后来发展成一般由国家政府设置的严格时区,并按照与格林威治标准时间一小时或半小时的差来计算。

英国格林威治在时间标准的发展过程中扮演了重要角色,因为它是皇家格林威治天文台的所在地。RGO建立于1675年,目的是为海上航行的船只开发天文导航技术。18世界60年代,天文台开始发布航海年鉴,并且为了方便将本初子午线定在格林威治。这个子午线系统在1884年最终被承认为世界标准。

在这之前,在1833年时格林威治天文学家开始在每天下午1:00在泰晤士河投放可以从船只上看得见的球。这是格林威治标准时间的起源。在19世纪40年代,格林威治标准时间被宣布为所有大不列颠的标准时间(我想起了我们的北京时间),以代替历史上发展出来的不同的本地时间。
虽然人们仍然以格林威治时间作为统一标准,但是使用“调整统一时间”(调整统一时间被缩写成UTC。这是英语单词词序CUT和法语单词词序TUC的综合)在科学上被认为更准确。根据1972年的国际协议,UTC在全世界都是相同的。

本地标准时间从正向或负向上偏离UTC。在格林威治西边的时区落后于UTC,在格林威治东边的时区超前于UTC。例如,东部标准时间是UTC减5小时。这与UTC加19小时不同。虽然都可以计算出正确的时间,但日期却不同)。

后来又有了“夏令时时间”的说法。当夏天来临时,太阳升起得越来越早,落下得越来越迟,所以起得早一点儿并在晚上享受一些阳光不是大问题。一些国家使用夏令时,而有些国家没有使用。那些使用的国家开始和结束它的日期也各不相同。甚至在一些国家,特别是美国……显然,对于特定的计算机,本地时间就是根据本地时区和夏令时的作用确定的与UTC的偏差。

……

posted on 2004-04-10 15:33:00 by hxinyu  评论(4) 阅读(2238)

 
2004年03月29日
有人跟我说爱情象茶,但茶越喝越有情趣而爱情却完全不是。以我个人的意见,爱情象酒,浅酌怡情大饮伤身的酒,酒有很多种就象爱情有很多种一样。

1.烈酒
三九天喝烈酒,如火炭入腹,四肢百骸都透出一股热气,浑身上下无一个毛孔不散发着舒爽,可惜除此再无其它。新婚之爱情正如此酒,烈则烈矣唯不持久也。

2.醇酒
尚启封之醇酒便满室生香,令人醺醺然而不醉,佳酿也。此酒如恩爱夫妻之爱情,羡煞旁人而不自知。

3.黄酒
调味之酒正如调味之爱情,醉心功名利禄之辈多好此酒,而功成名就之时饮此酒方可显其味,唯此酒亦不醉人也。

4.清酒
味绵远悠长,令人神往,耄耋名宿高人雅士之情属此酒也,羡煞二字不足显旁人倾慕之万一。于虽甚好此酒,然非吾孤意而可得,可遇而不可救也。

posted on 2004-03-29 12:33:00 by hxinyu  评论(1) 阅读(523)

 
2004年03月27日

一九四五年的一天,克力富兰的孤儿院里出现了一个神秘的女婴,没有人知道她的父母是谁。

她孤独地长大,没有任何人与她来往。 直到一九六三年的一天,她莫明其妙地爱上了一个流浪汉,情况才变得好起来。可是好景不长,不幸事件一个接一个的发生。

首先,当她发现自己怀上了流浪汉的小孩时,流浪汉却突然失踪了。其次,她在医院生小孩时,医生发现她是双性人,也就是说她同时具有男女性器官。为了挽救她的生命,医院给她做了变性手术,她变成了他。最不幸的是,她刚刚生下的小女孩又被一个神秘的人给绑走了。

这一连串的打击使他从此一蹶不振,最后流落到街头变成了一个无家可归的流浪汉。直到一九七八年的一天,他醉熏熏地走进了一个小酒吧,把他一身不幸的遭遇告诉了一个比他年长的酒吧伙计。酒吧伙计很同情他,主动提出帮他找到那个使‘他’怀孕而又失踪的流浪汉。唯一的条件是他必须参加伙计他们的‘时间旅行特种部队’。他们一起进了‘时间飞车’。

飞车回到六三年时,伙计把流浪汉放了出去。流浪汉莫明其妙地爱上了一个孤儿院长大的姑娘,并使她怀了孕。伙计又乘‘时间飞车’前行九个多月,到医院抢走了刚刚出生的小女婴,并用‘时间飞车’把女婴带回到一九四五年,悄悄地把她放在克力富兰的一个孤儿院里。然后再把稀里糊涂的流浪汉向前带到了一九八五年,并且让他加入了他们的‘时间旅行特种部队’。

流浪汉有了正式工作以后,生活走上了正轨。并逐渐地在特种部队里混到了相当不错的地位。有一次,为了完成一个特殊任务,上级派他飞回一九七零年,化装成酒吧伙计去拉一个流浪汉加入他们的特种部队。

posted on 2004-03-27 15:05:00 by hxinyu  评论(0) 阅读(463)

 
2004年03月25日

读了 mvm 同志的 不make sense 心有所想,不吐不快。

在 E 星球上 A 国有一家叫做 M 的整车制造商,生产的车美观大方很得大众喜欢。但 M 为方便群众也为了节约一点成本,于是就自行生产了车载 CD、真皮座椅、安全气囊这些东西安装在汽车里,因为 M 制造的汽车在市场上占有率还算比较大,很快其它一些汽车 CD 制造商、座椅制造商就眼红甚至愤怒了,他们就联合了其它诸如油漆商、轮胎商等一起叱责 M 公司,说它扰乱了市场秩序,卖车就卖车干嘛还把座椅安上?干嘛还在车身上喷上油漆……,这不是借整车销售搞垄断嘛!

后来他们更把 M 告上了 E 联盟,E 联盟想要是 M 把钱赚足了那我们那些制造商还吃什么过活?于是 E 联盟就裁定 M 垄断是事实并让 M 公司在3天内把所有型号的汽车内的座椅、CD 等劳什子统统都拆卸下来,并恢复车身原貌去掉所有油漆。

……

posted on 2004-03-25 13:18:00 by hxinyu  评论(21) 阅读(1174)

 
2004年03月17日

最近的公文管理系统中,需要在内部网络上把公章和领导批示、落实情况等项目一起传输,不管是存储到 Sql Server 还是 XML ,反正俩给我的感觉都差不到多远,存储后的内容都是#¥%^,不知所谓!

 

偶调用 WriteBase64 把图片的二进制码转化为 base64 ,虽然是一个个可读可见和字符,但没什么美感也没阅读的必要,也就纯粹只是为了把图片和其它项目一起存储,以方便传输而已。

 源代码
 XML

 

btw:有没有看到博客堂首面最左下角,什么时候加上的?偶对全局的观察真是有够差的!:-)

posted on 2004-03-17 11:43:00 by hxinyu  评论(4) 阅读(999)

 

//图片:点这里

// ……
   System.IO.FileStream stream =
    new System.IO.FileStream(@".\F2003061015593507245.jpg", System.IO.FileMode.Open);
   System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);

   System.Xml.XmlTextWriter xmlTextWriter =
    new System.Xml.XmlTextWriter(@".\tt.xml", System.Text.Encoding.UTF8);

// ……   
   xmlTextWriter.WriteAttributeString("filename", "F2003061015593507245.jpg");

   /*
    * XML
    */

   System.Int32 get_byte = 0;
   System.Int32 read_byte = 100;
   System.Byte[] buffer = new System.Byte[read_byte];

   do
   {
    get_byte = reader.Read(buffer, 0, read_byte);
    xmlTextWriter.WriteBase64(buffer, 0, read_byte);
   }while(get_byte >= read_byte);

// ……

posted on 2004-03-17 11:26:00 by hxinyu  评论(0) 阅读(988)

 
【第1页/共6页,88条】
首页
前页
1

Powered by: Joycode.MVC引擎 0.5.2.0