Archive for the '脚本之美' Category

ruby 汉字转拼音的类。

Tuesday, February 26th, 2008

好久没写日志,嘿嘿。
前几天由于实际需要,网上又找到没有适合的,于是从perl的Lingua::Han::PinYin包port了个汉字转拼音的ruby类。(包括UniHan的数据都是从Lingua::Han::PinYin拿的)。
感谢Lingua::Han::PinYin原作者
(www.fayland.org/journal/Han-PinYin.html)的工作.
功能就是:
汉字转拼音,汉字缩写,名字缩写,中文标题转拼音permlink( 这个这么翻译来着?).
现在只实现utf-8版本,如果是其他编码的应用请自行使用iconv转换编码。
其实我没有系统的学习过ruby,只是看了2个文档,写写简单rails应用还凑合,其他的还真拿不出手,写的不好,满放上来 …..
Rdoc
下载
看了看以前还写过这方面的东西。http://www.upulife.com/leo/?p=117

将汉字转换为拼音或是五笔码

Tuesday, January 10th, 2006

自己没有这个需求,突然有人提起,说说想法。
通常我们都很习惯用五笔或是拼音打字,但是如果程序里想将汉字转成拼音怎么做呢?当然方法有复杂有简单,最简单的就是我们反向思维一下(唉,谁叫我们叫做”思维驱动”呢,哈哈吹一下牛),既然我们打拼音”da”能变成汉字”大”,然而汉字编码又不能说明如何对应的关系,那么输入法中必然存在一种从拼音到汉字(或是汉字到拼音,以及五笔等等)的对应关系。我们只要找到这种对应的列表相互转换不就解决了。
看了看我机子上装的两种输入法,紫光拼音和万能五笔,发现紫光拼音的字库是二进制文件一时无法利用,然后发现万能五笔的安装目录下有很多xxx.txt的文件,打开一看果然就各种编码的对应关系。比如:qpzima.txt(想来应该是”全拼字码”)的内容为:啊 a阿 a埃 ai挨 ai哎 ai唉 ai哀 ai皑 ai癌 ai蔼 ai矮 ai略…………这不就是汉字与拼音的对应关系嘛。既然有了这个字库我们简单的写个程序,很容易就实现从汉字到拼音的转换了(代码就不写了)
万能五笔目录下还包括很多字库请自行研究,当然这里只是提供一种思路至于用不用它的字库,还是你自己决定,不过提醒您注意版权(如果这个有版权的话)。
为了负责起见,特意上网搜了一下,在search.cpan.org上找到一个国人写的perl的汉字转拼音模块Lingua::Han::PinYin ,有兴趣的朋友可以下来试试,它就是用Unicode:UniHan的对照表来实现的,不过我试了试转换整个文档,似乎效果不是那么的好,特别是遇到全角字符时转换完成后会成乱码。
从Lingua::Han::PinYin作者主页了解到Unicode.org提供拼音对照表:Unicode::Unihan 下载,而且里面提供的对照还包含(1,2,3,4)四种声调(实在是不懂怎么描述了,音标?)详见:http://www.fayland.org/journal/Han-PinYin.html

定义与执行Sybase中的存储过程

Saturday, August 13th, 2005

  Sybase中的存储过程大大增强了SQL语言的功能和灵活性。Sybase中的存储过程可以有传入参数和传出参数,但它只支持IN和OUT(也可写成INPUT和OPTPUT)参数模式,不能使用象其它一些数据库系统支持的INOUT参数模式。下面我们通过举例来讲解在PowerBuilder中定义与执行Sybase中的存储过程的方法:
为Sybase数据库创建存储过程
在PowerBuilder应用中定义存储过程
执行存储过程
  下例将介绍在PowerBuilder中创建、定义和执行Sybase中的存储过程auths_sp的方法,该存储过程将接受一个传入参数,传入参数的值将作为检索条件来统计作家表中性别为该值的作家人数。下面是本例的操作过程(该例在Sybase 11.9.2 / 11.9.3环境中实验通过):
1) 先将这个存储过程的创建语句指定给一个PowerBuilder的字符串型的变量,并执行Execute Immediate命令将这个存储过程创建在服务器上。在PowerBuilder中,DDL(数据定义语言)只能用动态SQL的方式来执行,因此这里我们用到了Execute Immediate命令。语句如下:
String sp_syntax
sp_syntax = &
“create procedure auths_sp @sex int,as”+&
“Begin “+&
” select count(author_code) “+&
” from auths “+&
” where sex = @sex “+&
“End ”
SQLCA.AutoCommit = True //Sybase中,在执行创建存储过程的语句前一定要
//先将AutoCommit设置为True。
Execute Immediate :sp_syntax;
MessageBox(”创建Sybase存储过程”, +&
” SqlCode= “+String(SQLCA.SqlCode)+&
“~n SqlDBCode= “+String(SQLCA.SqlDBCode)+&
“~nSqlErrText= “+SQLCA.SqlErrText)
2) 定义存储过程(即在PowerBuilder中声明这个存储过程)。注意,在定义时,不能定义传出参数,只有传入参数可以在Declare语句中定义。
integer InArg, OutArg
//定义存储过程
DECLARE MyProc PROCEDURE FOR SYSTEM.AUTHS_SP (:InArg) ;
3) 执行这个存储过程。存储过程执行以后,就可以用Fetch命令传出参数到本地变量中。注意,在执行存储过程前一定要先为传入参数赋值。
InArg = 0 //为传入参数InArg赋值,0表示将来统计的是女性作家
Execute MyProc; //执行存储过程,这里不能带任何参数
Fetch MyProc […]

让Ruby on Rails 跑在apache上

Wednesday, August 10th, 2005

早些时间开时对Ruby感兴趣了,前些时间又发现Ruby on Rails,加上大家吹Web 2.0,所以准备试试,看介绍文章看Rails跑在Apache的fastcgi模式最快,所以今天试了试apache上的配置,经过实验成功了,不过发现它跑在fasgcgi模式上并不比在webrick上快甚至感觉还比较慢(只是感觉),安装过程是看文档一步步做的,没什么好说的。大家看文档。
http://wiki.rubyonrails.com/rails/show/Fast%20CGI%20and%20Apache2%20for%20Windows%20XP
安装过程大致是:
1.安装ruby,apache,mysql等。
2.安装Ruby for Apache(上面那个文档里有链接)里的fastcgi模块,下载FastCGI(上面那个文档里有链接)到apache的module目录,配置httpd.conf 及.htaccess
完了。呵呵,如果遇到问题可以与我联系。。应该不会有问题。

perl读写文件。

Thursday, July 28th, 2005

perl学了不少时间了,可是我发现我现在忘记的速度比记忆的速度快了许多,努力了很久一段时间没用后发现全忘记光了(以前不是这样子的啊!!看来真老了:(,呵呵),今天要统计一个文件里的不同类别的内容的条数,又花了不少时间才搞定,还是决定记录下来。

版权声明:可以任意转载,转载时请务必标明文章原始出处、作者及本声明:http://www.upulife.com
虽然perl给我的感觉不是那么好,对它也不是那么熟悉,不过我不是决定用perl来开发下一个功能,为什么呢?因为perl的解析器不用安装—我用的大部份操作系统无论是sun,ibm,hp还是别的什么,几乎都默认安装perl,而像php,python基本是没有的,更不用说什么ruby之类的了。
文件读写操作,其实很简单,列一下代码再简单的说明一下吧,下次再用的时候方便查找(这方面我是初学者有些描述可能用得不对):

sub ProcessFile
{
#以数组方式获取参数,这是有两个参数,输入和输出文件
my ($in_file,$out_file) = @_;

#定义变量
my %param;
my @lines;
my @data;

open( FILE, $in_file );#打开文件读
#将整个文件按行载入到数组lines,类似于php的file()函数.
#注:此处《》应该改为<>,wordpress的问题
@lines = FILE;

[…]