太阳是黑色的

少年听雨歌楼上,红烛昏罗帐.壮年听雨客舟中,江阔云低断雁叫西风. 而今听雨僧庐下,鬓已星星也! 悲欢离合总无情,一任阶前点滴到天明.

开始工作

今天正式开始工作了。应该说,两个人在一起的效率的确很高,至少要比一个人要高很多。第一天还是有一些收获的。比如先是做了一个dll,然后把数据库操作封装到了这个dll里面。再在一个web application里面调用这个dll。这个做的还是很成功的。中间有一个小问题就是,在dll里面,如何得到当前的工作路径。没有解决!只有从web application里面把这个路径传过去。当然这也是一种折中的方法。然后开始试验动态载入程序集。应该说,动态载入本身是没有难度的,关键是如何运行类里面的方法。这个就不是那么容易了。试验了很多,都不行。在网上查了一下,发现有很多类似的问题被大家都讨论过了。看看明天能不能解决这个问题。

吉列尔斯的格里格

当亚瑟 鲁宾斯坦在火车站看见那个红发少年的时候,他也许还不能预见到这个少年未来所能达到的高度。几年后,在一次钢琴大赛上,鲁宾斯坦再次和这个年轻人相遇,是的,就是这个年轻人拿走了这次比赛的第一名。对于鲁宾斯坦这样的大师来说,有才华,有天赋的青年钢琴家肯定见多了。不过,吉列尔斯绝对是一个例外。鲁宾斯坦给涅高思说,一定要把这个年轻人弄到彼得堡来。吉列尔斯的天赋不是里赫特那样的狂放,也不是基辛那样的锋芒毕露,而是一种智慧般的内敛。以前通过布拉姆斯的钢琴协奏曲和贝多芬的奏鸣曲就已经认识了吉列尔斯的伟大。但是,很多大师可以通过小品的演奏来得以检验。Pletnev的格里格是色彩飞扬的,是一种很造型化的美。吉列尔斯的格里格来得就自然得多。没有了太多做作,只有不经意间的微笑和叹息。其实,像格里格这种曲子,每个人似乎都可以去尝试,但是并不是每个人都能把这些曲子激发出火花。吉列尔斯做到了,通过一个个小曲子来,窥视宇宙。这种充满灵性的演奏很让人陶醉。吉列尔斯,果然就是奇迹。

灵山游(一)

其实,我很不习惯出去旅游的。因为对于我来说,旅游是一种很奢侈的事情。是的,就像她说的那样,我从小生活在城市里,而且是最典型的城市生活。典型,是的,又不是。我的生活谈不上。不过,旅游这种很自由的事情的确离我很远。在我这么多年的日子里面,真的很难寻觅出我旅游的踪迹。而且从总体上来说,我也不是一个很能够欣赏自然美景的人。这倒不是说我没有能力去辨别自然的美,而是说这种美不在我的审美范围内。因为,我总觉得,那种悲怆的美,那种死亡的味道更符合我的性格。说实话,我在去之前心里很怀疑自己能不能够找到一种感觉。当然,我就要禁不住问自己,自己寻找的是一种什么感觉呢?也许是自由?也许是放松。但也许什么都不是。其实,也有可能只是想和她有一段属于我们自己的时间和空间。对,一切都有可能。不过,这次去旅游真的给我很多以前从没有的感触。我突然觉得城市的生活非常的灰暗。不是说城市的生活是没有乐趣的,只是在钢筋混泥土的世界里生活太久也就像这些灰色的楼房一样刻板而没有活力。哦,对,灵山,北京的最高峰。启程很普通,可以说就像去哪个博物馆,抑或是逛街。前面的一切都是未知的。自己出行就是要去操心很多很多。行车确实是一个问题。当然,北京的交通已经是算方便的了。不过对于灵山这种景点来说,是不是应该有专门的旅游线路呢?最大的问题可能就是,除了夏季这几天可以是一个旅游的旺季,平时灵山根本没人问津。当然,也就没有必要去专门开设一个旅游专线。门头沟的山很有四川的味道。让我想起了都江堰往西走的那种山谷之美。不过,四川的山水更加灵秀些,更加隽永。北方的山水更加粗犷,豪放。拥挤在类似于八十年代的公交车里,在蜿蜒的山路中行驶,身体前前后后,左左右右的摇晃着,似乎要摇晃掉那都市的晦气。三个小时的路途到达了一个小山村,双塘涧,很秀丽的名字,却没有想象中的溪流和凉爽。十九公里的山路带着我和她来到了灵山脚下。其实,灵山很普通,也可以说就是一座没有什么特点的山。这种山放在南方,会很不起眼,根本就没有人问津。但是,这里是北方,是首都。所以,灵山就像它的名字一样有着南方般的身段。住宿,花了很一段时间才安顿下来。山民其实很纯朴,纯朴得把那种赚钱心切的心情暴露的那么明显,让人觉得可恨,可怜。最终,在一个类似住家般的招待所住下了。老实说,我还是很满意的,至少有热水,有电视。而且感觉几个管理人员的态度都很不错。柳开始很担心那关不好的窗子,不过我却少有的没那么害怕。因为,一种说不清楚的感觉告诉我,旅游嘛,并不是绝对的都很安全的。不过这些小插曲的确很有意思,恩,一种很生活化的意味。晚上的菜很贵,但是很家常。柳责怪我花了太多的钱,是的,要是我们在外面吃,或者是自己来得时候多带一些东西,可能花费要小一些。但是呢,我还是觉得这个吃的开销是值得的。这可能就是柳说我的过好日子过惯了吧。是啊,我这种在都市生活了十九年的人,走在哪里都是带着都市的味道。本来在灵山这种地方看见满天的星星应该是不足为奇的,但是当看到满天繁星的时候,还是有一种的激动。我忽然觉得贝多芬的《第九交响曲》就在天上。黑黑的画布上镶嵌着深浅不一的星星,也许我也是其中的一员。尘世的很多东西都忘却了。当然,最重要的还是和她在一起。在星空下,两个人的世界真的是那么美妙而短暂。是啊,往往美丽的东西,也是短暂的。在旅店的平台上,很冷的空气,却让我觉得有一种爱的灼烧。是的,我感到压抑了很久的爱终于可以去释放,给能够接受它的人。这种良辰美景真的是很让人觉得不现实。不过幸福是肯定的。我从没有和一个人单独出去过,她也肯定是。很难说这样的情景以后还会不会有,但是我觉得,有过就已经说明了爱的伟大。灵山,但愿给我和她的爱带来灵性。

Wand的布鲁克纳第七

Wand的演奏永远是纯粹的德国。和乔希姆的指挥相比,Wand要理智很多。这种理智不是冷酷,而是在恰到好处的地方不过分的去流露浪漫和温情。布鲁克纳的《第七交响曲》常常被滥情。的确,从第一分钟就开始的那种温馨,那种庄严是很多指挥家的最爱,同时过于慢的速度,使本来就很长的曲子显得更加冗长。Wand的开始非常灵巧,一点也不拖泥带水。弦乐的流动性特别好。平衡感也特别好。第一乐章的结尾处理得非常宏伟。不知道为什么,这种庄严给我一种十分悲壮的感觉。第二乐章和第一乐章相比,布鲁克纳显得更加加诙谐。当然还是建立在一种庄严的基础上的诙谐。Wand的演奏很大气,这种大气带来的就是乐队的跳动。第三乐章很美,也很静。第四乐章舞曲的节奏被Wand充分的调动起来了。总之,布鲁克纳的《第七交响曲》在Wand手中经历了伟大的创造的过程。其实,Wand应该是一个大家的,可能是那种本性,决定了这位伟大的指挥家的低调和睿智。

乌戈尔斯基的穆索尔斯基

听乌戈尔斯基的”Pictures at the exhibition”绝对是一种不同的感觉。是的,这种感觉是不同里赫特的,也是不同于基辛的。乌戈尔斯基一开始就是一种悲情,一种庄严。穆索尔斯基的这个作品绝对是一部杰作。任何一个人都可以有不同的诠释。关键是这种诠释的基础是什么?是图画本身?还是展览?乌戈尔斯基的演奏使本来很雄壮的地方格外的悲凉。和Pletnev相比,乌戈尔斯基更侧重的是一种情感。而Pletnev的演奏很有造型感。一种塑造的感觉。这点和Horowitz是差不多的。俄罗斯钢琴中间的几个很有造形艺术的钢琴家都对《图画展览会》有惊人的诠释。乌戈尔斯基的演奏是貌不惊人的。“古堡”那段是哀而不伤。有诉说不完的惆怅。“漫步”主题十分的无奈,但是又有一种很奇怪的坚定。这就是一种很深的功底。说实话,听乌戈尔斯基的《图画展览会》给我一种心中完美诠释的典范。一直以来我都对很多钢琴家对这首曲子的演奏不太满意。现在,我终于找到了这么一种演奏。现在,我很想听的就是乌戈尔斯基的舒曼的《童年憧憬》。以前看过《爱乐》介绍过。看来,一些不太知名的钢琴家中并不是没有大师。

C语言的问题

昨天把下雨的题终于编完了。对Graphics.h里面的一些函数有了一个初步的了解。我觉得我设计的这个程序是一种多线程的程序的雏形,因为两个雨滴是相互独立的,互不影响。这是放在一个数组里面实现的。目前的问题是如果把间隔时间设置的相对短些的话,动画要光滑些,但是有闪烁的感觉。这也是所有编程语言的擦坪函数所带来的,怎么解决,确实是一个问题。

附上源程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <stdio.h>
#include <math.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
#include <conio.h>
 
#define PI 3.1415926
 
#define RAINDROPLEN 15 /*  The length of a raindrop */
#define RAINTANGLE 0 /*  The tangle of each raindrop */
#define RAINDROPZ 0  /* The internal of each raindrop */
#define RAINCOLOR white /* The color of each raindrop */
#define RAINWAVELEVEL 40 /* The level of each wave */
#define DELAYTIME 2000 /* The internal of each flash of the screen */
 
/* Calculate the next X,Y of a raindrop */
#define RAINDROPNEXTX(n,m) (int)((RAINDROPLEN/m+n)*sin(RAINTANGLE*(PI/180)))
#define RAINDROPNEXTY(n,m) (int)((RAINDROPLEN/m+n)*cos(RAINTANGLE*(PI/180)))
 
#define RAINDROPS 100 /*  The total numbers of raindrops */
 
 
 
struct raindrop
{
 int posx;
 int posy;
 int state; /* The current state of raindrop. 1 for raindrop. 2 for wave. */
 int wavelevel; /* The current wave level */
};
 
void Init(struct raindrop *drops);
void DrawDrops(struct raindrop *drops); /* Draw all the raindrops */
void CalDrops(struct raindrop *drops); /* Calculate the next raindrops position */
 
 
 
int main(void)
{
 struct raindrop drops[RAINDROPS];
 int gdriver=DETECT,gmode,i=0;
 initgraph(&gdriver,&gmode,""); /* Init graphic mode */
 Init(drops);
 setbkcolor(0);
 while(!kbhit())
 {
  cleardevice();
  DrawDrops(drops);
  delay(DELAYTIME);
  CalDrops(drops);
 }
 return 0;
}
 
 
void Init(struct raindrop *drops)
{
 int i;
 randomize();
 for(i=0;i<RAINDROPS;i++,drops++)
 {
  drops->posx=random(600);
  drops->posy=random(300);
  drops->state=1;
  drops->wavelevel=0;
 }
}
 
void DrawDrops(struct raindrop *drops)
{
 int i;
 int endx,endy;
 setcolor(WHITE);
 for(i=0;i<RAINDROPS;i++,drops++)
 {
  if (drops->state==1)
  {
   endx=RAINDROPNEXTX(0,1);
   endy=RAINDROPNEXTY(0,1);
   line(drops->posx,drops->posy,drops->posx+endx,drops->posy+endy);
  }
  else
  {
 
    ellipse(drops->posx,drops->posy,0,360,1+(drops->wavelevel)*0.75,0.05+(drops->wavelevel)*0.15);
  }
 }
}
 
void CalDrops(struct raindrop *drops)
{
 int i;
 int endx,endy;
 int temp;
 for(i=0;i<RAINDROPS;i++,drops++)
 {
  if (drops->state==1)
  {
   endx=RAINDROPNEXTX(RAINDROPZ,10);
   endy=RAINDROPNEXTY(RAINDROPZ,10);
   if ((endx+drops->posx)>=640||(endy+drops->posy)>=400)
   {
    temp=random(100);
    if (temp%2==0||(endx+drops->posx)>=680||(endy+drops->posy)>=550)
    {
     drops->state=2;
     drops->wavelevel=1;
    }
    else
    {
     drops->posx=drops->posx+endx;
     drops->posy=drops->posy+endy;
    }
 
   }
   else
   {
    drops->posx=drops->posx+endx;
    drops->posy=drops->posy+endy;
   }
  }
  else
  {
   if ((drops->wavelevel)<RAINWAVELEVEL)
   {
 
     drops->wavelevel++;
   }
   else
   {
    drops->posx=random(600);
    drops->posy=random(100);
    drops->wavelevel=0;
    drops->state=1;
   }
  }
 }