2007年3月6日星期二
传统之大略——《我的哲学之路》笔录
汤教授将中国传统哲学的理论体系梳理为三个层次:普遍和谐观念——宇宙人生论;内在超越精神——境界修养论;内圣外王之道——政治教化论。其中所蕴含的古 代朴素辨证法都是从日常生活经验中得来的。汤教授认为普遍和谐是:自然的和谐,人与自然的和谐,人与人的和谐(社会生活的和谐)以及人自我身心内外的和 谐。而中国哲学(包括儒家、道家和中国化的佛教)与西方哲学最大的不同是它是以“内在超越”为特征的;其价值在于把“人”看成是具有超越自我和世俗限制能 力的主体。如此通观古今,为当代之大家。
汤教授如是研究传统哲学的目的在于将其有价思想元素应用于现代社会。他认为哲学是文化的核心,深刻地反映着一个时代的精神面貌。所以研究并提炼哲学观念可 以总结人类社会文化精华。虽然汤教授认为:自古以来,我们的社会是一个以家族为本位的农业宗法专制社会,这种社会是缺乏开拓性的,比较注重守成,因此不大 注意向外输出自己的文化,在制度和观念上都压制着开拓精神,但他提出:“己所不欲,勿施于人”是可以为不同文化传统的民族和国家所共同接受的伦理准则;他 提倡“和而不同”,其意思是要承认“不同”,在“不同”基础之上形成的“和”(“和谐”或“融合”),才能使事物得到发展;从人类社会发展到今天看,任何 文化不受外来文化的影响是不可能的,也是不可取的。但是只有充分发挥其原有文化的内涵精神,才可以更好地吸收外来文化以滋养本土文化。由此看来汤教授是主 张一种“包容”的“拿来观”与“弘扬”的“送去观”,这比较现在许多困守故纸堆的“保守派学者”要开明许多。
2007年2月27日星期二
ADSL MODEM 设置
1. 故障表现为 ADSL MODEM 的 ADSL 灯不亮, ISP 技术工程师重新刷新电信端口。
2. 在刷新端口后故障仍未解决。技术工程师问我是否重新启动过该 MODEM,这样
会造成该 MODEM 的工作模式与网络设置不匹配。需要重新设置 MODEM 模式。
(1) 将本机 IP 设置为 192.168.1.11 ,网关设为 192.168.1.1
(2) IE 登录 192.168.1. 1,修改"基本设置-ADSL模式"为 标准 " G.dmt"模
式。保存后,系统会提示"重启"。用软件重启该 MODEM 。
3. 原因是:该 MODEM 长期不用,造成端口无法与远程计算机进行同步操作,且在
本网络中只能使用 G.dmt 模式。
2007年2月25日星期日
EPS图片绘制与转换
EPS 输出,所以我要重新寻找合适的 EPS 图片绘制与转换工具 。
【绘制】
Metapost 和 Asymptote : Metapost 是 Latex 平台使用最广泛的图片绘制环
境,其语法还是很容易学习的。但在 CTex 套件中的 Metapost 在 WinXP2 平台下
编译似乎并不好,有时会出错。所以我最常用的绘制环境是 Asymptote, 其优点
是编译稳定,且是类 C 语法,对于程序员更容易上手。但其支持文档很少,其帮
助文件中对于支持包的解释更少,常常需要直接阅读 asy 代码。
【转换】
(1) bmeps: CTex 套件中这个工具可以将 JPG/TIFF/PNG 格式的图片转换到
EPS 格式。由于在编译 Latex 之前总要进行对应的转换,可以用下面的 Windows
命令行来批处理(保存在 BAT 文件中运行)。
for %%f in (*.jpg) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t jpg %%f
%%~nf.eps
for %%f in (*.png) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t png %%f
%%~nf.eps
for %%f in (*.tiff) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t tiff
%%f %%~nf.eps
(2) 我使用了 eps2png(linux)、AdvanceBatchConverter(Windows)和
ReaConvert(Windows)这三个软件来进行 EPS 到 JPG/PNG 格式的转换,但效果
都不是很好,会出现锯齿感。
【数据可视化】
gnuplot:在编写 Latex 文件中,常要将一些数据进行图表化。我以前的方法
是在 Excel 中导入数据绘制图表,然后导出为 JPG 文件,再转换为 EPS 格式。
如果遇到大规模数据则在 Matlab 中编写个小程序来绘制。现在看来这都是很"笨
拙"的方法。现在我使用 gnuplot 来进行数据绘制,该软件是一个数据绘制环境,
可以对数据进行2D/3D绘制,并提供多种图片格式输出(如JPG/EPS),甚至可直接
输出 Latex/Metapost等代码。
2007年2月24日星期六
Delphi中的UI组件控制
Delphi中,继承自TControl的UI组件可以在运行期进行遍历并能够修改其属性。比
如常见的选择框样例,某个选择框的点选决定了一个GroupBox中多个组件的状态。
我写了一个简单的Delphi函数来完成这个功能。
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
ComCtrls, StdCtrls, ExtCtrls;
procedure SwitchGroupBoxState(CheckBox: TCheckBox; ParentObj: TControl );
implementation
{ TComponentDisplay }
procedure ChangeEditDisplay(aEdit: TEdit;
State: Boolean);
begin
aEdit.Enabled := State;
if State then begin
aEdit.Color := clWindow;
end
else begin
aEdit.Color := clBtnFace;
end;
end;
procedure ChangeButtonDisplay( aButton:TButton; State:Boolean );
begin
aButton.Enabled := State;
end;
procedure ChangeCheckBoxDisplay( aCheckBox:TCheckBox; State:Boolean );
begin
aCheckBox.Enabled := State;
end;
procedure ChangeRadioButtonDisplay( aRadioButton:TRadioButton;
State:Boolean );
begin
aRadioButton.Enabled := State;
end;
procedure ChangeProgressBarDisplay( aProgressBar:TProgressBar;
State:Boolean );
begin
aProgressBar.Enabled := State;
end;
procedure ChangeTrackBarDisplay( aTrackBar:TTrackBar; State:Boolean );
begin
aTrackBar.Enabled := State;
end;
procedure ChangeListBoxDisplay( aListBox:TListBox; State:Boolean );
begin
aListBox.Enabled := State;
if State then begin
aListBox.Color := clWindow;
end
else begin
aListBox.Color := clBtnFace;
end;
end;
procedure ChangeComboBoxDisplay( aComboBox:TComboBox; State:Boolean );
begin
aComboBox.Enabled := State;
end;
procedure ChangeMemoDisplay( aMemo:TMemo; State:Boolean );
begin
aMemo.Enabled := State;
if State then begin
aMemo.Color := clWindow;
end
else begin
aMemo.Color := clBtnFace;
end;
end;
procedure SwitchGroupBoxState(CheckBox: TCheckBox; ParentObj: TControl );
var
I: Integer;
TempObj : TComponent;
begin
for I := 0 to CheckBox.Owner.ComponentCount - 1 do begin // Iterate
TempObj := CheckBox.Owner.Components[I] ;
if (TempObj is TControl) then begin
if (TempObj as TControl).Parent = ParentObj then begin
if ( TempObj is TEdit ) then begin // TEdit State Switch
ChangeEditDisplay( (TempObj as TEdit), CheckBox.Checked );
continue;
end;
if ( TempObj is TButton ) then begin
ChangeButtonDisplay( (TempObj as TButton), CheckBox.Checked );
end;
if ( TempObj is TCheckBox ) then begin
ChangeCheckBoxDisplay( (TempObj as TCheckBox), CheckBox.Checked );
continue;
end;
if ( TempObj is TRadioButton ) then begin
ChangeRadioButtonDisplay( (TempObj as TRadioButton),
CheckBox.Checked);
continue;
end;
if ( TempObj is TProgressBar ) then begin
ChangeProgressBarDisplay( (TempObj as TProgressBar),
CheckBox.Checked);
continue;
end;
if ( TempObj is TTrackBar ) then begin
ChangeTrackBarDisplay( (TempObj as TTrackBar), CheckBox.Checked);
continue;
end;
if ( TempObj is TListBox ) then begin
ChangeListBoxDisplay( (TempObj as TListBox), CheckBox.Checked);
continue;
end;
if ( TempObj is TComboBox ) then begin
ChangeComboBoxDisplay( (TempObj as TComboBox), CheckBox.Checked);
continue;
end;
if ( TempObj is TMemo ) then begin
ChangeMemoDisplay( (TempObj as TMemo), CheckBox.Checked);
continue;
end;
end;
end;
end; // for
ParentObj.Enabled := CheckBox.Checked ;
end;
end.
其调用方法是:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
SwitchGroupBoxState( ( Sender as TCheckBox ), GroupBox1 );
end;
2007年2月2日星期五
为何不去作文章?
首先我排除了 Word ,虽然其是许多人管理发布文档的"标准手段",我却不欣赏。Word 在编辑数学公式与版式设计上是如此的繁琐,而且由于 DOC 文件是二进制文件,其不能用 CVS 来进行版本管理与文本比对,实在不适合进行多个文档的长期的交叉式的编辑。这时 Latex 进入我的学习视线。 Latex 是采用标识语法符号来进行排版,其类似于程序编写,很适合我;而且其是文本编辑,可以进行 CVS 版本管理。优点多多,而且在不断地使用中会有更深刻的认知与更高明的技巧,实在是"可玩"的文档排版方案。所以我对 Latex 进行 了近2个月的系统学习,有些"玩物丧志"了。
但这至多解决了文档排版的问题,如何记录自己思想的点滴,并能进行方便地汇总呢?我尝试了几种方案:一是用 DiaryOne 电 子笔记本进行记录。 DiaryOne 笔记本很方便,而且可以添加附件与录音。但其在信息组织上很是简陋,只能按目录进行存放,不适合多线交叉管理。然后我又用了 Wiki 。 Wiki 是一种非常利于进行非线性编辑的工具,其可以将所写文档以链接的方式进行交叉管理;由于我多是用来记录文本,所以在尝试了一些需要安装或需要 PHP 支持的 Wiki 程序后,最后确定使用 TiddlyWiki ——这个单文件的 Wiki 作为记录之用。很神奇的一个小软件,将 JavaScript 显示技巧应用得很出色。我建议每个学习使用 Wiki 的人最好从 TiddlyWiki 开始。要使用好这个软件,应安装 Firefox,否则无法实现其强大的信息管理功 能。但可惜的是 TiddlyWiki 不支持附件,这给我带来太多的困扰。思量很久,终放弃。随后我将目光转动近年来如火如荼的 Blog 上。虽然我有许多的 Blog ,但使用率并不高,主要原因是其需要太多的 Web 编辑时间,而只有 MSNSpace 与 Blogger 支持我最喜爱的电邮发布。 MSNSpace 虽然是个很好的 Blog 系统,但其最大的问题是访问速度。可能 MS 将其与操作系统捆绑太多,或是国内访问较慢,每次我登录它都要等待很长时间。而 Blogger 的国内访问以前一直不稳定,我申请后就未认真打理。但这次我重新评估 Blogger ,不仅它的 beta 字样消失了,而且其在国内访问速度很快,与 Google 的 Gmail、Doc 等结合的更好。在新版本中 Blogger 提供了全方位的模板代码编辑与电邮输入输出功能,这强烈地吸引了我。我手写了模板 CSS 代码,并且定义了电邮发布与电邮输出,从而可以同步更新 Blogger 和 MSNSpace ,这是太好了。经过上面的一番探索,我决定采用 Email 的方式来发布 Blog 。利用 Blog 的 TAG 功能来组织自己的思想片段。
在 Windows 平台上最常用的电邮工具是 OutLook 。虽然它很好用,但我仍不满意,因为它不支持 HTML 代码输入,就是不能在编写 HTML 邮件正文中直接插入 HTML 代码。于是我想到 Foxmail,它曾是我经常使用的电邮工具。我下载了最新版的 Foxmail 6,可惜它也不支 持 HTML 代码直接插入功能。最后我发现 Firefox 阵营的 Thunderbird ,它虽然没有 Firefox 那样有名,但其品质却很出众。不仅有强大的自定义的 Filter 功能,而且支持 HTML 代码插入。更出色的是它也是基于 Add-On 的,可以从网上下载许多有用的小插件,自己也可以编写一个。我下载了一个 pasteCode 的插件,其可以在粘贴 C、C+ +、Java 代码时自动为关键字等加上高亮颜色,很有趣。
"磨刀不误砍柴工",通过前面的探索,现在我对自己的这一系列编辑方案进行总结,就是 Thunderbird + Gmail + Blogger + Latex(CTex) + Editplus 。其间的交流与联动,我写了一些 Python 小程序来完成。对于流程图,我试用了不少工具,但目前看来还是 MS 的 Visio 最好,只是一想到它竟然不能发布为 EPS 格式就很切齿。
BCB中的计时与显示
// timer interval callback function
iTimerCount ++ ;
if ( iTimerCount > 1000 ) { Timer1->Enabled = false; }
}
startTime = Time();//< startTime 是一个 TDataTime 变量
// timer interval callback function
double msValue = MilliSecondsBetween( Time(),startTime );
Label5->Caption = AnsiString( msValue / 1000.0 );
iTimerCount ++ ;
if ( iTimerCount > 1000 ) { Timer1->Enabled = false; }
}