原来的个人博客使用CN域名,众所周知CN域名相当麻烦,上次转移空间的时候一不小心捡了这个域名,所以就转移到这个域名了xuplus.com,新网站地址:http://xuplus.com,新RSS地址:http://xuplus.com/feed。如有收藏,请重新收藏。
智能变电站中在线监测系统一次设备监测参量和IEC 61850模型
分享一下:
1、一次设备监测参量
| 一次设备 | 监测参量 |
| 主变 | 顶层油温、底层油温、油箱油位、绕组温度、铁心接地电流、油中溶解气体、中性点直流、主变套管绝缘、环境温湿度、有载调压开关及在线滤油机监测、主变设备热像测温与故障定位巡视系统 |
| GIS | 局部放电、SF6气体密度、微水和温度、断路器参数(包括一次电压、一次电流(应可兼容电子式CT)、线圈电流、电机电流、三相同期、重合闸分析、预击穿时间、燃弧时间、触头磨损等)、避雷器泄漏电流和阻性电流 |
| 出线开关柜 | 触头温度、柜内温湿度、电能质量检测 |
| 出线并联电抗器 | 铁心接地电流、绕组温度 |
| 出线并联电容器 | 电容器故障、绝缘降低、电抗器故障、放电线圈故障、过压过流、投切录波 |
2、基本数据模型
-
变压器 YPTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 控制量 | ||||
| 冷却泵(Cooling Pumps) | Pumps | ISC | O | |
| 冷却风扇(Cooling Fans) | Fans | ISC | O | |
| 测量量 | ||||
| 绕组热点温度(Temperature of Winding hot point) | HPTemp | MV | O | |
| 绝缘水平(Level of Insulating Medium) | IMLev | MV | O | |
| H2 | H2 | MV | O | 绝缘液体介质中相对饱和湿度(百分数%表示) |
| CO2 | CO2 | MV | O | |
| CO | CO | MV | O | |
| CH4 | CH4 | MV | O | |
| C2H6 | C2H6 | MV | O | |
| C2H4 | C4H4 | MV | O | |
| C2H2 | C2H2 | MV | O | |
| 微水 | MicroH2O | MV | O | |
| 总烃 | TotHyd | MV | O | Total Hydrocarbon |
| 含气量(氧气O2+氮气N2) | PctO2N2 | MV | O | 百分数(%)表示单位 |
| Hydran仪复合气体 | PctHdrGas | MV | O | 百分数(%)表示单位 |
| 总可燃性气体(TCG)等各组分气体浓度 | TCGChm | MV | O | 百分数(%)表示单位 |
| 相对产气速率 | RlvGRte | MV | O | |
| 绝对产气速率 | AltGRte | MV | O | |
| 油温 | OilTmp | MV | O | |
| 色谱图 | CmtGram | MV | O | 表示色谱图的测量值 |
| CmtGramMad | SPS | O | 表示色谱图形成 | |
| 采样时间 | SMTmh | MV | O | 小时单位时间 |
| SMTmm | 分钟单位时间 | |||
| SMTms | 秒单位时间 | |||
| SMTmms | 毫秒单位时间 | |||
| SMTm | 其他时间单位 | |||
| 环境温度 | EnvTmp | MV | O | |
| 浓度报警 | DenAlm | SPS | O | |
| 铁心接地电流 | CGAmp | MV | O | 电流如果没有三相概念,则采用MV |
| CGA | WYE | O | 电流如果包含三相,则用WYE | |
| 顶层油温 | ToOilTmp | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
变压器分节头YLTC
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 压力(Pressure) | Pres | MV | O | |
| 绝缘介质温度(Temperature of Insulating Medium) | Lev | MV | O | |
| 驱动力矩(Drive torque) | Torq | MV | O | |
| 电机驱动电流(Motor drive current) | DrvMA | MV | O | |
| 循环油电机驱动电流(Oil circulation motor drive current) | OCMA | MV | O | |
| 可控点 | ||||
| 分接头位置(Tap position) | TapPos | IST | O | |
| 上升(Raise) | Raise | BST | O | |
| 下降(Lower) | Lower | BST | O | |
| 冷却泵(Cooling Pumps) | Pumps | ISC | O | |
| 状态量 | ||||
| 分接头上升到达最高档位置(End position raise reached) | EndPosR | SPS | M | |
| 分接头下降到达最低档位置(End position lower reached) | EndPosL | SPS | M | |
| 油过滤(Oil filtration) | OilFil | SPS | M | |
| 最高油位(Oil level maximum) | OLMax | SPS | M | |
| 最低油位(Oil level minimum) | OLMin | SPS | M | |
-
变压器套管YPRB
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | |
| 电容基值 | ReactVal | MV | O | |
-
局部放电监测和诊断 XPDC
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 局放噪声水平,单位db (Acoustic level of partial dischaarge in db) | AcuPaDsch | MV | M | |
-
断路器 XCBR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 操作计次数(Operation counter) | OperCnt | ISI | M | |
| 控制量 | ||||
| 开关位置(Switch position) | Pos | DPC | M | |
| 闭锁跳闸(Block opening) | BlkOpen | SPC | M | |
| 闭锁合闸(Block opening) | BlkClos | SPC | M | |
| 蓄能电动机允许(Charger motor enabled) | ChgmotorEn | SPC | O | |
| 测量量 | ||||
| 分合闸线圈电流(Opening and Closing Coil Current) | OpnClsColA | MV | O | |
| 线路电流(Line Current) | OvAVal | MV | O | |
| 累积I2T(Cumulative I2T) | CumI2T | MV | O | |
| 机械动作时间 | McaOpTms | MV | O | 以秒为单位 |
| McaOpTmms | MV | O | 以毫秒为单位 | |
| 拉弧时间 | CATms | MV | O | 以秒为单位 |
| CATmms | MV | O | 以毫秒为单位 | |
| 开断电流有效值 | OpnAmp | MV | O | |
| 温度 | Tmp | MV | O | |
| 绝对压力 | AltPres | MV | O | |
| 相对湿度 | RlvMst | MV | O | |
| 密度 | Den | MV | O | |
| 压力(20度) | Pres | MV | O | |
| 体积比 | VoluRatio | MV | O | |
| 质量比 | QtyRatio | MV | O | |
| 露点 | DewPVal | MV | O | |
| 储能时间长度 | SavPwTms | MV | O | 以秒为单位 |
| SavPwTmms | MV | O | 以毫秒为单位 | |
| 动作类型 | OpTyp | INS | ||
| 实时电流 | RealA | WYE | O | 电流如果包含三相,则用WYE |
| RealAmp | MV | O | 非三相电流,则采用MV | |
| 开关量 | NumPwrUp | INS | O | |
| 剩余电寿命 | ResPwr | MV | O | |
| 累计开断电流 | TotOpnAmp | MV | O | |
| 累计触头磨损量 | TotTapLos | MV | O | |
| 累计开断次数 | TotOpnCnt | MV | O | |
| 波形 | WavCrv | MV | O | |
-
开关(隔离刀闸) XSWI
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 操作计数(Operation counter) | OperCnt | ISI | M | |
| 控制量 | ||||
| 开关位置(Switch position) | Pos | DPC | M | |
| 闭锁跳闸(Block opening) | BlkOpen | SPC | M | |
| 闭锁合闸(Block opening) | BlkClos | SPC | M | |
| 蓄能电动机允许(Charger motor enabled) | ChgmotorEn | SPC | O | |
| 状态量 | ||||
| 断路器操作性能力(Circuit breaker operating Capability) | SwTyp | ISI | M | |
| 波形定点切换能力(Point On Wave switching capability) | SwOpCap | ISI | M | |
-
电缆 ZACB
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 绝缘电阻 | InsRis | MV | O | |
| 介质损耗因数 | LosFact | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
电容器 ZCAP
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 控制点 | ||||
| 电容器组设备状态(Capacitor bank device status) | CapDS | SPC | M | |
| 状态点 | ||||
| 由于放电引起的闭锁(Blocked due to discharge) | DschBlk | SPS | O | |
-
电抗器 ZREA
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| H2 | H2 | MV | O | 绝缘液体介质中相对饱和湿度(百分数%表示) |
| CO2 | CO2 | MV | O | |
| CO | CO | MV | O | |
| CH4 | CH4 | MV | O | |
| C2H6 | C2H6 | MV | O | |
| C2H4 | C4H4 | MV | O | |
| C2H2 | C2H2 | MV | O | |
| 微水 | MicroH2O | MV | O | |
| 油温 | OilTmp | MV | O | |
| 环境温度 | EnvTmp | MV | O | |
| 浓度报警 | DenAlm | SPS | O | |
| 铁心接地电流 | CGAmp | MV | O | 非三相电流,则采用MV |
| CGA | WYE | O | 电流如果包含三相,则用WYE | |
| 顶层油温 | ToOilTmp | MV | O | |
| 局部放电量最大值 | MaxPaDsch | MV | O | |
| 局部放电量最大值相位 | MaxPaDsAng | MV | O | |
| 局部放电量平均值 | AvPaDsch | MV | O | |
| 越限放电脉冲数 | DschPlsOv | INS | O | |
| 局部放电放电波形 | PaDschCrv | SPS | O | 波形已形成 |
| MV | O | 波形测量值 | ||
| 局部放电谱图 | PaDschGrap | SPS | O | 谱图已形成 |
| MV | O | 波形测量值 | ||
-
电流互感器 TCTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | React |
| 电容基值 | ReactVal | MV | O | ReactVal |
-
电压互感器 TVTR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 泄漏电流 | RelA | WYE | O | 电流如果包含三相,则用WYE |
| RelAmp | MV | O | 非三相电流,则采用MV | |
| 介质损耗因数 | LosFact | MV | O | |
| 电容量 | React | MV | M | React |
| 电容基值 | ReactVal | MV | O | ReactVal |
-
避雷器 ZATR
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 全电流(Total Current) | TolCur | MV | O | |
| 阻性电流(Fundamental Resistive Current) | FundRCur | MV | O | |
-
绝缘子 ZINL
| 描述 | 数据名 | CDC | M/O | 备注 |
| 模式(Mode) | Mode | ISC | M | |
| 性能(Behaviour) | Beh | ISI | M | |
| 健康(Health) | Health | ISI | M | |
| 铭牌(NamPlt) | Name | ISI | M | |
| 外部设备健康(External equipment health) | EEHealth | ISI | O | |
| 外部设备铭牌(External equipment name plate) | EEName | PLATE | O | |
| 运行小时数(Operation hours) | Operh | ISI | O | |
| 测量量 | ||||
| 温度(Temperature) | Tmp | MV | O | |
| 湿度(Humidity) | Hum | MV | O | |
| 报警(Alarm) | Alm | MV | O | |
| 电池电压(Battery Voltage) | BatVol | MV | O | |
| 等值盐密(salt density) | ESDD | MV | O | |
| 平均泄漏电流(Average leakage current) | AvAmp | MV | O | |
| 最大泄漏电流(Maximum leakage current) | MaxRelAmp | MV | O | |
用Postgresql作为BIND9 数据存储情况下TXT等包含空格记录的处理
前段时间尝试用PostgreSQL 作为BIND9的后端数据存储玩玩,发现真不错,需要的Postgresql数据库表结构简单,查询效率高、及时生效。SOA记录也是一条语句,但发送邮件需要的TXT记录出现了问题,按照SPF格式写入了以下TXT记录:“v=spf1 ip4:60.166.118.xxx include:xuplus.com -all”,结果使用nslookup查询出来的情况竟然是这样的:
服务器: google-public-dns-a.google.com
Address: 8.8.8.8非权威应答:
xuplus.com text ="v=spf1"
"ip4:60.166.118.xxx"
"include:xuplus.com"
"-all"
这样的记录是没有办法使用的,使用SPF记录测试工具(http://www.openspf.org/Tools)是没有办法通过。查阅了一番资料发现无法解决这个问题,翻阅bind9 源代码发现在rdata.c文件的dns_rdata_tofmttext函数中使用了的linebreak就是空格字符,那么向spf这种需要包含空格的记录怎么办呢?经过尝试可以添加斜线(\)作为转义字符,由于数据库记录中斜线也需要转义,所以将记录对应的rdata字段值改成 ‘v=spf1\\ ip4:60.166.118.xxx\\ include:xuplus.com\\ -all’这样的即可,这样之后再次nslookup就可以发现结果正常了:
服务器: cache2.ahwhtel.net.cn
Address: 202.102.199.68非权威应答:
xuplus.com text ="v=spf1 ip4:60.166.118.xxx include:xuplus.com -all"
xuplus.com nameserver = dns2.xuplus.com
xuplus.com nameserver = dns1.xuplus.com
dns1.gi-rms.com internet address = 60.166.118.xxx
dns2.gi-rms.com internet address = 60.166.118.xxx
BIND 9也有转移字符:斜线(\)。
PostgreSQL 9.0基于streaming replication的Primary/Standby集群安装典型配置文件
最近给PostgreSQL搞伤了,Debian 5默认PostgreSQL是8.4,本身是不支持Primary/Standby集群的。在经历尝试Slony的超级复杂配置和pgpool无法按照步骤成功的痛苦经历情况下,将PostgreSQL升级到9.0,但是根据网上一些手册还是配置不成功,经过摸索终于成功配置了,并将配置文件公布出来供参考。
安装指令如下,其中192.168.0.212作为Primary服务器,192.168.0.211作为Standby服务器
两台服务器共同执行部分:
-
修改apt源
vim /etc/apt/sources.list
在最后加入:
deb http://backports.debian.org/debian-backports lenny-backports main
deb http://backports.debian.org/debian-backports lenny-backports-sloppy main
apt-update
-
安装PostgreSQL数据库服务
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid15_1.5.1-1.1+b1_i386.deb
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid-dev_1.5.1-1.1+b1_i386.deb
dpkg -i libossp-uuid*.deb
apt-get install -t lenny-backports postgresql-common
apt-get install -t lenny-backports-sloppy postgresql-9.0 postgresql-client-9.0 postgresql-contrib-9.0 postgresql-server-dev-9.0
-
修改访问控制
vim /etc/postgresql/9.0/main/pg_hba.conf
最后加一行
host all all 192.168.0.0/24 md5
-
修改监听范围
vim /etc/postgresql/9.0/main/postgresql.conf
修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,如果前面有#号则需要删除#号
-
重新启动postgresql服务
/etc/init.d/postgresql restart
212 Primary服务器配置
-
设置同步账号
su – postgres
psql
create user repl superuser log in password ‘replpwd’ ;
-
修改访问控制
vim /etc/postgresql/9.0/main/pg_hba.conf
最后添加以下内容
host replication repl 192.168.0.211/32 md5
-
修改postgresql服务配置文件
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
archive_mode = on
archive_command = ‘cp -i %p /var/lib/postgresql/9.0/archivedir/%f </dev/null’
archive_timeout = 600
max_wal_senders = 5
wal_keep_segments = 32
-
建立归档目录
su – postgres
mkdir /var/lib/postgresql/9.0/archivedir/
-
重启服务
/etc/init.d/postgresql stop
/etc/init.d/postgresql start
211Standby服务器配置
-
修改postgresql服务配置文件
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
hot_standby = on
vim /etc/postgresql/9.0/main/recovery.conf
内容如下:
restore_command = ‘cp /var/lib/postgresql/9.0/archivedir/%f %p’ archive_cleanup_command = ‘pg_archivecleanup /var/lib/postgresql/9.0/archivedir %r’
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.0.212 port=5432 user=repl password=replpwd’
trigger_file = ‘/var/lib/postgresql/9.0/trigger_activestb’
cp /etc/postgresql/9.0/main/recovery.conf /var/lib/postgresql/9.0/main/
-
停止服务
/etc/init.d/postgresql stop
-
删除原数据目录下数据文件
su – postgres
cd /var/lib/postgresql/9.0/
rm –R –f main
mkdir main
chmod –R 700 main
传送数据文件到StandBy并启动集群
-
从212服务器中传送文件(在212服务器执行)
su – postgres
psql -c "SELECT pg_start_backup(‘label’,true);"
rsync -avz /var/lib/postgresql/9.0/main/* postgres@192.168.0.211:/var/lib/postgresql/9.0/main/
注意:这里rsync是没有办法执行的,需要先建立两个服务器之间关于postgres之间的ssh 密钥文件交换。
-
211服务器删除pid文件(在211服务器执行)
rm /var/lib/postgressql/9.0/main/postgresql.pid
/etc/init.d/postgresql restart
-
212服务器正式启动主从模式(在212服务器执行)
su – postgres
psql -c "SELECT * from pg_stop_backup();"
exit
/etc/init.d/postgresql restart
测试
在Primary服务器上建立一个数据库或者修改一个数据表,可以在StandBy数据库上看到同样的修改操作发生了。
配置参考文件
可直接使用的配置参考文件见:。注意前缀分别代表在那台服务器上的配置文件。
给CodeIgniter 2.0.1中的PostgreSQL 数据库驱动打两个补丁
近期帮朋友用CodeIgniter基于PostgreSQL做了个小东西,发现CodeIgniter2.0.0在实现PostgreSQL数据库驱动是有两个小缺陷。
一个是CI的数据库通用接口insert_batch,CI2.0发布包中的PosgreSQL驱动实现,并没有实现该接口,可以在system\database\drivers\postgre\postgre_driver.php文件中的_insert函数下添加如下函数。
// -------------------------------------------------------------------- /** * Insert_batch statement * * Generates a platform-specific insert string from the supplied data * * @access public * @param string the table name * @param array the insert keys * @param array the insert values * @return string */ function _insert_batch($table, $keys, $values) { return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES ".implode(', ', $values); } // --------------------------------------------------------------------
另一个是insert_id()函数,该函数如果在数据表没有serial字段可能无法返回数值,导致问题,特别是主从表而从表不需要serial字段的情况下。
如果碰到这个问题可以把原来的:
elseif ($table != null && $column != null && $v >= '8.0') { $sql = sprintf("SELECT pg_get_serial_sequence('%s','%s') as seq", $table, $column); $query = $this->query($sql); $row = $query->row(); $sql = sprintf("SELECT CURRVAL('%s') as ins_id", $row->seq); }
修改成:
elseif ($table != null && $column != null && $v >= '8.0') { $sql = sprintf("SELECT pg_get_serial_sequence('%s','%s') as seq", $table, $column); $query = $this->query($sql); $row = $query->row(); if($row->seq!='') $sql = sprintf("SELECT CURRVAL('%s') as ins_id", $row->seq); else $sql='SELECT LASTVAL() as ins_id'; }
2011年兔年个人计划
虎年平稳结束,在2010年发生了两件重要的事情,进入兔年后,正式迈入奔四时代,古人云:“三十而立”,而我马上就三十周岁了确什么也没有立起来,这就是2010年我焦虑了一整年的原因。2011年还是需要做很多事情的,写下来到龙年到来的时候看看做到了哪些。
1、工作方面
- 向电力自动化方向转型
- 进行个人收入、职位、能力方面提升
- 寻找下一个方向工作机会
2、家庭方面
- 敦促老婆完成两项资格考试和尝试新的方向
- 给小贝壳添置一台iPad或者平板作为她个人电脑
- 搞定父母一个人的养老保险
- 帮助表弟找一份工作
- 确保在老婆转型过程中家庭总收入不下降
3、个人方面
- 完成信息系统项目管理师之后的高级项目经理或者项目经理认证
- 进行一级建造师考试
- 添置一台新笔记本和替换现有手机
- 开始Android或者iOS开发学习
CentOS下redmine、apache、svn配置安装心得
CentOS默认开启了SELinux,安装Redmine、apache、svn之类的还是蛮复杂的,经过几次折腾之后,终于顺利将redmine折腾成功了,有些心得记录下来备查:
集成方案大体为:
a) svn和apache集成,通过http协议访问svn,svn使用域名svn.test.com,仓库访问路径为:http://svn.test.com/XXXX
b) svn通过Perl和redmine的数据库集成提供身份和权限认证,仓库访问用户名和密码由redmine中创建的用户和密码访问,可访问项目仓库受redmine控制
c) redmine用mongrel_rails 运行于3000端口
d) apache使用proxy模块将pms.image-pro.com.cn的80端口反向代理到redmine的3000端口
e) 每5分钟通过cron的形式将redmine中项目信息同步到svn中
1、不要使用passenger集成Apache,使用反向代理方式集成Apache
官方指南中使用passenger来和Apache集成,但是passenger跟SELinux集成是很困难正常运行的,解决办法需要将SELinux更改为permissive模式(编辑
/etc/sysconfig/selinux文件修改为SELINUX=permissive),然而使用Apache的反向代理向rails转发却简单得多。
这种方式需要开启redmine的“启用用于版本库管理的Web Service”功能,设置方式为安装完成之后,用admin账号登陆redmine,进入“管理”->“配置”->“版本库”设置页面开启“启用用于版本库管理的Web Service”选项,并生成一个API Key,这个API key有用。
相关virtualhost配置节点如下:
<VirtualHost *:80> ServerAdmin bbs@test.com DocumentRoot "/var/www/redmine" ServerName pms.test.com ErrorLog "logs/pms.test.com-error.log" CustomLog "logs/pms.test.com-access.log" combined <Location /sys> Order deny,allow Allow from 127.0.0.1 Deny from all </Location> ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ </VirtualHost>
注意:如果/etc/hosts文件中没有解析相关域名到127.0.0.1的话,最好在Allow from后面添加一行让服务器ip可以正常访问。
2、使用两个virtualhost,分别安装redmine和svn,并使用一个location配置svn
这样的好处是明显的,svn单独访问也足够间接,不使用svn和svn-private两个Location配置来分别供给SVN客户端和redmine使用。
相关virtualhost配置节点如下:
<VirtualHost *:80> ServerAdmin svn@test.com ServerName svn.test.com ErrorLog "logs/dummy-svn.test.com-error.log" CustomLog "logs/dummy-svn.test.com-access.log" combined PerlLoadModule Apache2::Redmine <Location /> DAV svn SVNParentPath "/var/svn" Order deny,allow Deny from all Satisfy any PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName "Redmine SVN Repository" #read-only access <Limit GET PROPFIND OPTIONS REPORT> Require valid-user Allow from 127.0.0.1 # Allow from another-ip Satisfy any </Limit> # write access <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> ## for mysql RedmineDSN "DBI:mysql:database=redmine;host=localhost" RedmineDbUser "redmine" RedmineDbPass "password" </Location> </VirtualHost>
这里Allow from跟上面说的一样,最好添加服务器的ip通过,这样一个Location节点即可完成SVN设置,保证redmine中看到的svn仓库地址和SVN客户端(例如:TortoiseSVN)中使用的svn仓库地址一致(都是http://svn.test.com/XXXXX,而不是一个/svn-private/XXX,一个/svn/XXXX),而且svn仓库地址也够简洁。
3、如果邮件使用GMail的服务,则需要使用ruby 1.8.7,rails要求2.3.5
如果默认安装的是ruby 1.8.6则发送邮件的时候会报错,要求先自行starttls命令。必须升级到1.8.7
相关命令:
ftp ftp.ruby-lang.org cd /pub/ruby get ruby-1.8.7.pXXX.tar.gz tar zxvf ruby-1.8.7.pXXX.tar.gz ruby-1.8.7.pXXX cd ruby-1.8.7.pXXX ./configure --prefix=/usr make make install ruby -v which ruby cd ..
这里XXX是对应的发布版本号,当前是330,需要注意的是有些版本不一定能够正常编译通过,我在测试的时候p160编译就通过不了。
4、相关SELinux权限设置
执行以下命令赋予相关目录正确的SELinux属性:
chcon -u system_u -R -t httpd_log_t /var/www/redmine/log chcon -u system_u -R -t httpd_tmpfs_t /var/www/redmine/tmp chcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/files chcon -u system_u -R -t httpd_sys_script_rw_t /var/www/redmine/public/plugin_assets
由于svn版本库的SELinux设置比较复杂,可以通过以下命令直接处理完毕
chcon -u system_u -R -h -t httpd_sys_script_rw_t /var/svn
5、redmine跟svn之间有关版本库通过可以通过cron来完成
cron执行内容如下:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/ruby /var/www/redmine/extra/svn/reposman.rb --redmine pms.test.com -k apikey --svn-dir /var/svn --owner apache --url http://svn.test.com/ >> /var/log/reposman.log
其中apikey内容为redmine后台生成的API key,这样每5分钟都会将redmine中的版本库信息同步到svn中(自动创建版本库)
6、redmine使用mongrel自启动
安装mongrel之后,使用cron来确保在启动时候自动启动mongrel_rails来启动redmine。
cron执行内容如下:
@reboot cd /var/www/redmine; rm -f log/mongrel.pid; /usr/bin/mongrel_rails start -p 3000 -d -e production
7、使用ImageMagick绘制甘特图,需要rMagick 1.5.17版本
执行以下命令:
yum install ImageMagick -y yum install ImageMagick-devel -y yum install freetype -y yum install gd-devel -y wget http://www.osresources.com/files/centos-windows-fonts/msfonts.tbz mkdir /usr/share/fonts/default/TrueType tar xvjpf msfonts.tbz -C /usr/share/fonts/default/TrueType/ gem install rmagick -v=1.15.17
8、Redmine.pm存放文字需要根据实际情况来定
x64位操作系统perl库文件位置是/usr/lib64/perl5下,perl5.10版本库位置不再是/perl5.8.8,最后位置也不一定是Apache目录,例如:我机器上就是复制到/usr/lib64/perl5/Apache2目录下,所以具体目录应该根据实际情况决定,拷贝完毕之后Apache的相关VirtualHost配置加载的模块语句就有变化了(如上我的变成了Apache::Redmine)。
整体来说,安装过程需要仔细,特别是SELinux在某种程度上来说是设置的羁绊,但RedHat等公司开发它肯定有他的安全必要性,所以我们还是完成SELinux环境下安装比较好。
相关可参考官方资源和文档:
Installing Redmine:http://www.redmine.org/projects/redmine/wiki/RedmineInstall
How To Automate repository creation:http://www.redmine.org/projects/redmine/wiki/HowTo_Automate_repository_creation
Repositories access control with apache, mod_dav_svn and mod_perl:http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_Subversion_integration
Email Configuration:http://www.redmine.org/projects/redmine/wiki/EmailConfiguration
SELinux, Subversion and mod_svn:http://ejohansson.se/archives/2007/11/04/selinux-subversion-and-mod_svn/
我修改的可正常使用的Live Writer SkyDrive插件
微软的LiveWriter是不错的离线博客写作工具,同时微软也提供了25G的SkyDrive空间,对于存放博客附件来说,放在SkyDrive还是不错的选择,毕竟如果附件放在自己的博客主机上,有时候很容易流量超标。
2007年的时候Scott发布了一个SkyDrive插件(http://plugins.live.com/writer/detail/skydrive-embed-plugin),几年过去微软升级了SkyDrive,和office.live.com进行了整合,直接导致了SkyDrive插件不能使用,首先是文件夹浏览不能使用,再就是直接插入URL(包含office.live.com)时报错。我花了一点时间对这个插件做了一些hack。
主要hack内容有:
1、处理office.live.com和skydrive.live.com两种情况;
2、修改useiframe选择框不能使用情况,改用直接连接对应的url而不用Live Writer的插件函数;(这样就要求ie的代理设置必须保证可以正常访问网络);
3、更正浏览共享文件夹是不能显示共享者名字和不能正常获取文件夹下文件的问题;
4、获取文件夹下文件改用RSS方式,加快获取速度。
使用方法,下载附件中的文件替换skydrive embed plugin的文件或者直接放在Writer的Plugin目录下。
下载地址:
VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法
今天拷贝了一个CentOS做测试,打开虚拟机的时候我选择了“I copied it.”,结果启动的时候,CentOS报错“eth0 设备的 MAC 地址与预想的不符,忽略。 ",进入系统使用ifup eth0命令也不能启用网卡,还是报同样错:
使用ifconfig -a命令可以看到eth0当前MAC地址为:00:0C:29:12:8A:3C :
打开虚拟机的配置文件CentOS.vmx可以看到记载的MAC地址为:00:0c:29:12:8a:3c
显然,我选择”I copied it.“之后VMWare 重新分配了一个新MAC,问题就在这里,修改一下eth0的MAC地址跟vmx文件一致应该可以解决问题。
执行vi /etc/sysconfig/network-scripts/ifcfg-eth0,将最后一行的MAC地址更改为00:0c:29:12:8a:3c,然后再启用网卡/sbin/ifup eth0,果然解决了这个问题。
有关VMWare虚拟机的网卡MAC地址说明,以及修改方式可以参考:http://hi.baidu.com/china_lantian/blog/item/4b5ef8d60d97132a06088ba0.html。
PayDollar支付通道开发介绍及ECShop开发PayDollar注意事项
前些时候帮助一个香港朋友开发了ECShop的支付插件,他们使用PayDollar支付网关。
www.paydollar.com联款通有限公司成立于2000年,是领先的世界级电子付款及移动付款解决方案与技术提供应商,亦是香港最大第三方支付平台之一。
「传款易支付网关」是一个完善、综合、安全及提供实时交易的平台,可供银行或支付处理服务机构架设一个可支持多种支付方式的收付款服务,帮助提高商户销量及生产力。
「传款易支付网关」能处理不同渠道的实时支付交易,如网络支付及移动设备支付。也能提供界面连接到各种支付系统主机作为支付授权和结算。
核心功能
- 支持多语言和多支付模式,提供各类完整的报告
- 支持多支付模式如:网上交易、离线交易、其他定制化的支付交易
- 便捷架设及提供多商户连接界面
- 灵活选择独立支付界面或后端连接界面,商户无须额外投资任何软件
支付方式
- VISA / 万事达咭 / 大来信用证JCB 本地银行户口付款 (如PPS)
交易功能
- 通过网络及移动设备进行电子商务、移动商务、邮购及电话购物
- 实时撤销及处理退款要求
- 手动、自动或整批结算选择
电子邮件通知功能
- 综合商户帐户让商户可以通过不同渠道进行交易管理
- 完善的交易报告显示销售状况
- 单笔交易或整批交易资料下载
控制功能
- 多层式用户群控制管理,可供银行或商户使用
- 提供安全管理网站给银行及商户
- 指定商户每比、每日、每月的金额上限
- 风险控制工具包括:阻挡负面IP及信用卡的交易、实时交易检查及风险警示功能
安全功能
- 采用128位SSL加密装置
- 资料库加密
- 支持VISA验证、SecureCode认证JCB/Jsecure认证服务
- PayAlert(实时交易风险检查)
其他增值功能
- 循环支付设定及管理
- 自建购物网站和购物交易管理
界面标准
- 支持ISO 8583和SSL银行支付连接界面
总之,在香港它就是像支付宝、快钱这样的第三方支付平台,可对大陆客户提供中国银联网上支付平台、支付宝平台、财付通平台、快钱平台、PayPal平台支付以及Visa、MasterCar、JCB等信用卡直接扣帐支付的一个综合支付交易平台。应该是香港商家对大陆客户提供服务的可靠支付通道。
如果有碰到有朋友或者客户需要使用PayDollar支付平台可以参考一下内容:
一般香港商户在完成在香港的银行开户之后,可以接洽PayDollar,PayDollar之后会发送一个CheckList让香港商户去准备,要求做到以下几点:
- 一个商户自己的页面(一般有网站即可);
- 在页面底部放入PayDollar和相应需要支付平台的Logo(PayDollar必须放,其他Logo要看香港商户跟PayDollar的谈判,如果只有银联平台则只放PayDollar和银联的Logo);
- 提供一个包含交易货币的有关货物和服务的描述页面;
- 提供一个描述退换货、货物配送、使用条款的页面;
- 提供一个公司联系方式信息页面,至少包含公司地址、email地址和电话号码;
- 提供一个页面描述支付卡交易策略和安全保障措施(例如:SSL和数据加密,他们会给一个范例);
- 提供一个页面描述顾客数据隐私保护策略(例如:Cookies);
- 一个购物车
其中,很多条款他们都提供了参考页面,购物车可以实现也可以不实现,只要有购买页面即可。就是为了满足这个需要踩帮助香港的朋友使用了ECShop,谁知道ECShop并没有PayDollar支付插件,网上可以找到一些PayDollar的支付代码(ShopEx的插件代码),但是已经不能和PayDollar现在的支付网关适应了。
准备好之后,PayDollar会开通商户的支付功能,并提供一个商户号(Merchant Id),我们还需要发送邮件到service@paydollar.com,要求开通商户帐号的哈希码安全认证功能(为了确保支付安全还是开通了好)
在给ECShop开发PayDollar支付插件有以下几个问题树妖注意:
- PayDollar对于每一个币种都是单独的商户号也对应不同的哈希码安全认证;
- PayDollar现在支持哈希码安全认证功能,且哈希算法变成了SHA1,哈希码安全认证有效期两年;
- PayDollar的跳转商户页面和PayDollar返回支付成功信息页面是两个页面;
- PayDollar有关哈希码安全认证功能中各个参数有变化(相对网上可以搜索到的ShopEx的插件代码),连接字符串已经变成了竖线|而不是&符号;
- 提供给PayDollar的交易返回页面是需要在PayDollar管理系统中设置的,而不是在代码中指定的,PayDollar是通过Post方法来将数据提交到这个指定URL;
- 如果不是使用Client通过浏览器Post的方式支付,则需要自己实现支付页面(可自己实现信用卡信息填写页面,做3DS验证)。
在给ECShop开发插件过程中我给上面第三条和第五条搞败了,ECShop接收返回信息是通过/respond.php文件再调用includes/modules/payment/paydollar.php中的respond()方法的,开始的时候我并不知道这样,这样直接导致需要单独给一个文件给PayDollar来处理支付通知信息,respond()方法中只提供支付成败信息然后让respond.php输出支付成败提示信息,respond.php文件还一定得显示respond.dwt这个Smarty模板文件。为了偷懒,我在在respond()方法中通过判断回传参数来区分是PayDollar直接跳转的还是Post回传的。设置PayDollar系统中返回链接方式如下:
登录PayDollar之后,在“商家资料”页面,点击“支付选项”,进入设置页面,填入对应的链接地址,选中右侧的“可用”,点击“更新”按钮再在后续页面点击“确定”按钮即可,如下图:
这样就可以正常实现支付了。附件中是PayDollar集成开发的文档,仅供参考,文档主要有:
├─开源购物车插件 │ Magento PayDollar_v1.zip │ OpenCart PayDollar_v148b.zip │ oscommerce paydollar v2.3.zip │ PayDollar_开源购物车集成指南_v2.pdf │ VirtueMart_PayDollar.zip │ virtuemart_payment_extra_info.txt │ ZenCart paydollar_payment_module_1-0.zip │ ├─技术文档 │ 付款流程概述.pdf │ 传款易定时付款用户指南SchedulePay_V1.6.pdf │ 传款易批事务处理用户指南V1.0.pdf │ 传款易集成指南 _v3.7_.pdf │ ├─接口代码例子 │ asp_DirectClientPost.zip │ asp_SimpleClientPost.zip │ Csharp_DirectClientPost.zip │ Csharp_DirectServerSide.zip │ Csharp_SimpleClientPost.zip │ java_DirectClientPost.zip │ java_DirectServerSide.zip │ java_SimpleClientPost.zip │ php_DirectClientPost.zip │ php_DirectServerSide.zip │ php_SimpleClientPost.zip │ └─文件 Bank required checklist items.pdf FAQ_for_Alipay_By_PayDollar.pdf Logo使用说明.txt PayDollar_商户操作指南_v3-5.pdf PayDollar_操作指南.pdf 退款手续_v1.pdf
下载地址:PayDollar集成资料.rar
专题推荐
标签
分类目录
- Apple (3)
- dotNet (4)
- IT服务 (3)
- JAVA (2)
- linux (4)
- Oracle (1)
- Web应用 (41)
- 工作 (5)
- 生活叫吠 (29)
- 电力相关 (4)
- 智能电网 (2)
- 系统应用 (3)
- 网站管理 (7)
- 读书 (4)
- 软件应用 (24)
新浪微博
存档
近期文章
- 智能变电站中在线监测系统一次设备监测参量和IEC 61850模型
- 用Postgresql作为BIND9 数据存储情况下TXT等包含空格记录的处理
- PostgreSQL 9.0基于streaming replication的Primary/Standby集群安装典型配置文件
- 给CodeIgniter 2.0.1中的PostgreSQL 数据库驱动打两个补丁
- 2011年兔年个人计划
- CentOS下redmine、apache、svn配置安装心得
- 我修改的可正常使用的Live Writer SkyDrive插件
- 分享某公司负责IT运维的部门工作量统计文档和技术人员考核文档
- VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法
- PayDollar支付通道开发介绍及ECShop开发PayDollar注意事项
近期评论
- Dominic 发表在《CentOS下redmine、apache、svn配置安装心得》
- easy 发表在《CentOS下redmine、apache、svn配置安装心得》
- Dominic 发表在《CentOS下redmine、apache、svn配置安装心得》
- easy 发表在《CentOS下redmine、apache、svn配置安装心得》
- Dominic 发表在《CentOS下redmine、apache、svn配置安装心得》
- easy 发表在《CentOS下redmine、apache、svn配置安装心得》
- hello 发表在《理想中的IEC 61850应用开发API》
- Dominic 发表在《CentOS下redmine、apache、svn配置安装心得》
- max 发表在《CentOS下redmine、apache、svn配置安装心得》
- Dominic 发表在《交通银行网银报错“E00001:密文参数传递丢失,请重试”解决办法》

Dominic