Archive for the '技术-软件' Category


通过ActiveSync同步Onenote Mobile 与Onenote 2007

    用了接近10年的Nokia的机器,说实话Nokia的质量真的不错,换了7、8台机器,Nokia的机器没有出现过太大的质量问题。只不过感觉在智能手机的发展上,围绕手机操作系统平台相关的产业链是最大的竞争点。在这一点上,感觉Symbian平台的开放性、功能完备性及开发效率上,还是比不上像Microsoft、Apple这些做操作系统起家的厂商。

    考虑到与日常PC办公软件的兼容性,同时为了提高个人GTD管理能力,提高工作效率,换机不愿意再继续Symbian平台的机器,打算改用Windows Mobile平台的机器,新买了一台HTC Touch Dimaond,操作系统是Windows Mobile 6.1,当然由于是水货版本,因此带了WI-FI。ROM是用中国移动的心机定制版本刷的,也即S900,此版本带的Office Mobile中已经带了Excel Mobile、Onenote Mobile、PowerPoint Mobile、Word Mobile。

    首先要做的事情的是能够保持Outlook及Onenote与手机的同步。因此安装了ActiveSync来做PC与手机的同步。

    PC的操作系统:Windows XP SP2

    ActiveSync:4.5

1、ActiveSync配置

   下载安装ActiveSync 4.5版本。

    PPC端:

      开始->设置->连接->由USB连接到PC->ActiveSync(与Outlook同步),取消“启用高级网络功能”,缺省为选中

     如果不配置成ActiveSync模式(磁盘驱动器模式),那么直接通过USB连接到计算机上时候只是作为一个USB盘符出现,并不会采用ActiveSync方式同步。

    PC端配置:

      image

    配置好后,同步ActiveSync同步Outlook的联系人、日历、任务等都没有问题,但同步Onenote没有成功。

2、Onenote安装

    Onenote要与Onenote Mobile同步,PC端的Onenote 应当是Onenote 2007版本,以前版本好像支持存在问题,Onenote 的安装程序在Office 2007  大企业版中有。

    在PC端启动Onenote 2007后,在Onenote 2007菜单的工具->选项 中应当有Onenote Mobile选项,如果Mobile端没有安装Onenote,可以通过此处安装Onenote到Mobile上,或者直接用Office 2007安装路径下的\Office12\2052\OneNoteMobile.CAB在Mobile上安装。由于买的机器的ROM版本中已经带了Onenote Mobile,因此不用安装。

3、Onenote配置

    将Mobile修改为ActiveSync模式后,通过数据线连接到PC上后,在ActiveSync PC客户端通过工具->设置,选中Microsoft Office OneNote选项。

image

  确定后,ActiveSync应当可以执行同步操作,然后会提示Onenote以前未与计算机同步,选定“将移动设备上的项目与此计算机上的项目合并”,然后ActiveSync会执行同步操作。

image

    然后在PC端的Onenote中应当会出现Onenote Mobile笔记本选项夹(在Onenote 2007的默认笔记本位置的目录下也会生成一个OneNote Mobile的目录),在此笔记本下会有一个叫“来自S900的便签”的分区,在此分区下可以建新的页或分页,这样可以由ActiveSync来实现与Onenote Mobile的同步。

    要与Onenote同步的Onenote页面都必须放到ActiveSync生成的“来自S900的便签”的分区下,不然无法同步。开始以为是只要放到Onenote Mobile目录下的页面都能够实现自动同步,试验了很久才发现此规则。

    目前Onenote Mobile不能够指定Onenote笔记存放的目录(查找了注册表也无果),只能存放到“主存\Application Data\Microsoft\OneNote Mobile”下。

   在同步过程中如果出现无法识别设备或无法自动同步的问题,我自己在同步过程中就出现了一堆问题,下面是采用的一些方法:   

  • 注意Outlook与ActiveSync的安装顺序及版本

    应当先安装OUTLOOK再安装ActiveSync,而且应当是Outlook 2003以上版本,而不是Outlook Express

  • 采用“ActiveSync模式”,而不是“磁盘驱动器模式”

    在PPC端:开始->设置->连接->由USB连接到PC->ActiveSync(与Outlook同步)

  • 禁用防火墙

    刚开始时候将PPC通过USB连接上电脑,始终不能同步,后来发现是防火墙把端口禁用了。由于ActiveSync 采用TCP/IP栈来实现PC与PPC之间的通讯,所以会受到防火墙设置的限制,出了问题可以先禁用一下防火墙试试。

  • 禁用“启动高级网络功能”

    在PPC端:开始->设置->连接->由USB连接到PC->ActiveSync(与Outlook同步),取消“启动高级网络功能”选项(默认状态为启用),然后重新连上USB数据线,一般即可解决问题。

  • 删除Onenote的目录

    在PC端直接删除Onenote的默认笔记本位置的目录下的OneNote Mobile目录,然后重新进行Onenote的初始化同步过程

  • 解除PPC和PC之间的关联关系删除掉

    PC端:在PC端的ActiveSync管理界面上执行:文件->删除移动设备,重新进行整个设备的同步,只不过此种情况下,通信录会出现重复同步的现象。

    PPC端:开始->程序->ActiveSync->功能表->选项->选择要删除的PC,删除即可。

  • 禁止ActiveSync自动运行

    缺省情况下,PPC后台始终有ActiveSync进程在运行,不停执行同步操作,即使通过Task Manager这样的软件停止ActiveSync进程后,过上一会儿又会执行同样的同步操作,这样挺消耗系统资源及电源的,不希望ActiveSync不停地自动同步,当然通过USB连接上后还是希望能够自动执行同步操作,可以通过如下步骤来禁用ActiveSync自动同步。

   在PPC端:
   1、开始->程序->Activesync. 打开Activesync。

   2、点击ActiveSync最右下角的“菜单”。此时候在菜单中, “日程安排”选项是灰色的,不能更改。

   3、点击“添加源服务器”

   4、在后续的配置中,随意输入电子邮件地址、用户名、密码、域、服务器地址等信息后完成Exchange源服务器配置,回到ActiveSync主界面,多了一个Microsoft Exchange  ,停止Exchange的同步操作

   5、点击ActiveSync最右下角的“菜单”,此时侯在菜单中,“日程安排”选项可以点击了,点击“日程安排”

   6、在日程安排配置界面,把“高峰时段”和“非高峰时段”都改为手动,而不要使用缺省的“项目到达时”

   7、点击OK按钮,回到ActiveSync主界面  

   8、重启PPC(Reset),用的是psShutXP,用Touch Diamond红色的Reset按钮费劲

   9、点击ActiveSync最右下角的“菜单->选项->选中Microsoft Exchange->删除。

 

关于Onenote Mobile,有几个不错的插件:

Copy to Mobile Device:安装完成后,会在Onenote菜单上增加“Copy to Device”按钮,点击此按钮可以把当前编辑的页面(可以没有在Onenote Mobile笔记本中)自动拷贝为Onenote Mobile笔记本的页面,方便同步。

Use OneNote instead of Outlook Notes:http://blogs.msdn.com/johnguin/archive/2007/04/16/4-16.aspx

Export Outlook Notes to OneNote: http://blogs.msdn.com/descapa/archive/2007/02/14/export-your-outlook-notes-to-onenote.aspx

其他有用的插件,可以参考:http://blogs.msdn.com/johnguin/archive/2008/01/17/a-summary-of-the-onenote-powertoys-from-the-test-team-for-2007.aspx

Pligg 禁用新用户注册

    我自己基于Pligg搭建的个人网摘www.yeeach.com/digg被狂灌水,而且越来越严重,极其厌烦天天浪费大量时间去手动把垃圾记录设为“discard”状态,由于要提交新内容必须登录,因此首先想到禁用新用户注册功能,但Pligg好像没有禁止注册的功能。手工修改一下禁用新用户注册功能。

1、修改login.tpl 内容

修改digg/templates/yget/sidebar_modules/login.tpl ,把整个文件内容都注释掉

{*
<div id="maintab" class="tlb2">
        <span><a href="#" rel="register" style="text-decoration:none">{#PLIGG_Visual_Register#}</a></span>
        <span class="selected"><a href="#" rel="login" style="text-decoration:none">{#PLIGG_Visual_Login_Title#}</a></span>
</div>

 

{literal}
<script type="text/javascript">
initializetabcontent("maintab")
</script>
{/literal}
*}

2、修改header.tpl

修改digg/templates/yget/header.tpl,注释掉头部的注册链接

{*
<a href=’{$URL_register}’>{#PLIGG_Visual_Register#}</a> &nbsp;&nbsp;
*}

3、修改.htaccess

修改digg/.htaccess ,将register请求重定向到index.php

RewriteRule ^register/?$ index.php

其实pligg提供了AntiSpam功能,但没有时间测试,先禁用新用户注册再看看,对老的注册用户如果还乱灌水,格杀勿论。

Technorati Tags: ,

在jira中集成tinymce 支持wysiwyg功能

    由于我使用的3.9版本的jira本身的编辑器缺省为textarea,在录入缺陷及添加备注时候很不是方便,捣腾了一上午终于把TinyMCE 集成到jira中作为wysiywg编辑器,记录一下过程,其实基本上是按照文章WYSIWYG Editor in Jira 描写的步骤做的,只是按照自己所用的3.9版本的安装包调整了安装步骤及细节。

1、系统环境:

jira版本:atlassian-jira-enterprise-3.9-standalone

jira安装路径:/opt/jira (实际上是tomcat路径,jira的webapp应用在/opt/jira/atlassian-jira下)

2、安装步骤

  • http://tinymce.moxiecode.com/下载TinyMCE
  • 把TinyMCE解压到/opt/jira/atlassian-jira/includes/js
  • 在/opt/jira/atlassian-jira/includes/decorators/header.jsp中添加TinyMCE的js代码,采用的是TinyMCE的Full Feature的代码,可以参看tinymce的文档,按照自己要求调整一下TinyMCE的属性。
 <script language=“JavaScript” type=“text/javascript” src=“<%=request.getContextPath()%>/includes/js/tinymce/jscripts/tiny_mce/tiny_mce.js”></script>
<script language=“javascript” type=“text/javascript”>
tinyMCE.init({
        mode : “textareas”,
        theme : “advanced”,
        plugins : “table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu”,
        theme_advanced_buttons1_add_before : “save,separator”,
        theme_advanced_buttons1_add : “fontselect,fontsizeselect”,
        theme_advanced_buttons2_add : “separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor”,
        theme_advanced_buttons2_add_before: “cut,copy,paste,separator,search,replace,separator”,
        theme_advanced_buttons3_add_before : “tablecontrols,separator”,
        theme_advanced_buttons3_add : “emotions,iespell,flash,advhr,separator,print”,
        theme_advanced_toolbar_location : “top”,
        theme_advanced_toolbar_align : “left”,
        theme_advanced_statusbar_location : “bottom”,
        plugin_insertdate_dateFormat : “%Y-%m-%d”,
        plugin_insertdate_timeFormat : “%H:%M:%S”,
        height:“350px”,
        width:“550px”,
        extended_valid_elements : “a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]”,
});
</script>
  • 修改国际化资源文件/opt/jira/atlassian-jira/WEB-INF/lib/language_default.jar 中的com/atlassian/jira/web/action/JiraWebActionSupport和/opt/jira/atlassian-jira/WEB-INF/lib/language_zh_CN.jar中的com/atlassian/jira/web/action/JiraWebActionSupport_zh_CN.properties,添加如下的内容。
admin.renderer.plugin.wysiwyg.renderer.name=Wysiwyg Style Renderer
admin.renderer.plugin.wysiwyg.renderer.desc=A renderer that will renderer content as entered into a wysiwyg editor.
  • 修改/opt/jira/atlassian-jira/WEB-INF/classes/system-renderers-plugin.xml,添加如下内容
<jira-renderer system=“true” key=“jira-wysiwyg-renderer” name=“Wysiwyg Style Renderer”
i18n-name-key=“admin.renderer.plugin.wysiwyg.renderer.name”
class=“com.atlassian.jira.issue.fields.renderer.wysiwyg.WysiwygRenderer”>
<description key=“admin.renderer.plugin.wysiwyg.renderer.desc”>A renderer that will renderer content from a wysiwyg editor.</description>
<resource type=“velocity” name=“edit” location=“templates/plugins/renderers/wysiwyg/wysiwyg-renderer-edit.vm”/>
</jira-renderer>

  • 创建/opt/jira/atlassian-jira/WEB-INF/classes/com/atlassian/jira/issue/fields/renderer/wysiwyg/WysiwygRenderer.java ,内容如下
package com.atlassian.jira.issue.fields.renderer.wysiwyg;

import com.atlassian.jira.issue.fields.renderer.JiraRendererPlugin;
import com.atlassian.jira.issue.fields.renderer.IssueRenderContext;
import com.atlassian.jira.plugin.renderer.JiraRendererModuleDescriptor;
import com.atlassian.jira.util.JiraKeyUtils;

/*\*
* A simple text renderer for jira..
\*/
public class WysiwygRenderer implements JiraRendererPlugin
{
public static final String RENDERER_TYPE = “jira-wysiwyg-renderer”;

private JiraRendererModuleDescriptor jiraRendererModuleDescriptor;

public String render(String value, IssueRenderContext context)
{ return JiraKeyUtils.linkBugKeys(value); }
public String renderAsText(String value, IssueRenderContext context)
{ return value; }
public String getRendererType()
{ return RENDERER_TYPE; }
public Object transformForEdit(Object rawValue)
{ return rawValue; }
public Object transformFromEdit(Object editValue)
{ return editValue; }
public void init(JiraRendererModuleDescriptor jiraRendererModuleDescriptor)
{ this.jiraRendererModuleDescriptor = jiraRendererModuleDescriptor; }
public JiraRendererModuleDescriptor getDescriptor()
{ return jiraRendererModuleDescriptor; }
}
  • 编译WysiwygRenderer.java

export classpath=/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-bandana-0.1.13.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-cache-servlet-0.5.4.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-configurableobjects-0.4.22.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-core-2007-04-23.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-extras-0.7.29.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-jdk-utilities-0.1.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-jira-rpc-plugin-3.9-1.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-jira-subversion-plugin-0.9.10.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-johnson-2006-11-03.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-mail-2007_03_23.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-ofbiz-0.3.8.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-plugins-2006-11-10.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-profiling-1.1.4.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-renderer-2007.01.17.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-scheduler-2007-04-05.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-tagutil-0.1.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-trackback-2007-01-25.jar:/opt/jira/atlassian-jira/WEB-INF/lib/atlassian-velocity-0.3.19.jar:.:$JAVA_HOME/lib/tools.jar:/opt/jira/atlassian-jira/WEB-INF/classes ;

cd /opt/jira/atlassian-jira/WEB-INF/classes;

javac com/atlassian/jira/issue/fields/renderer/wysiwyg/WysiwygRenderer.java

  • 创建/opt/jira/atlassian-jira/templates/plugins/renderers/wysiwyg/wysiwyg-renderer-js.vm ,内容如下
tinyMCE.init(
{ mode : “textareas” }

);
  • 创建/opt/jira/atlassian-jira/templates/plugins/renderers/wysiwyg/wysiwyg-renderer-edit.vm,内容如下
<DIV style=“width:90%”>
#if($singleLine)
<input style=“width:100%”
type=“text”
name=“$fieldId”
value=“$textutils.htmlEncode($!value)”
id=“$fieldId”
class=“textfield”
#if($maxlength)maxlength=“$maxlength”#end
/>
#else
<textarea style=“width:100%”
name=“$fieldId”
id=“$fieldId”
#if($rows)rows=“$rows”#end
#if($wrap)wrap=“$wrap”#end
#if($cols)cols=“$cols”#end
#if($accesskey)accesskey=“$accesskey”#end
class=“textarea”
>$textutils.htmlEncode($!value)</textarea>
#end
</DIV>
<script language=“javascript” type=“text/javascript”>
tinyMCE.execCommand(‘mceAddControl’, true, “$fieldId”);
</script>
  • 重启tomcat
  • 以管理员登录jira管理界面,查看Renderer是否生效

  菜单项System->Plugins->Renderer Plugin->Wysiwyg Style Renderer

  • 配置Renderer:

菜单项Issue Fields->Field Configurations->View Field Configurations->Default Field Configuration,点击在Comment和Description的Renderer属性后,进入”Edit Field Renderer”属性页,选择Wysiwyg Style Renderer皆可。

jira

wysiwyg

3、参考文章

http://confluence.atlassian.com/display/JIRACOM/WYSIWYG+Editor+in+Jira 

http://tinymce.moxiecode.com/documentation.php

mindtouch deki wiki 安装配置指南

1 环境说明

操作系统:

Redhat AS4

数据库:

mysql 5.0.51。由于使用了存储过程,必须使用myq 5.0.51以上版本,自带的版本太低。

php

5.2.5,必须使用5.0以上php版本,自带的版本太低。

mono

wget http://www.go-mono.com/download-stable/rhel-4-i386/mono.zip

mkdir mono

mv mono.zip mono/

rpm -ivh *rpm

httpd

httpd-2.0.52-25.ent

httpd-manual-2.0.52-25.ent

system-config-httpd-1.3.1-1

httpd-devel-2.0.52-25.ent

httpd-suexec-2.0.52-25.ent

gd

gd-2.0.28-4.4E.1

gd-devel-2.0.28-4.4E.1

zlib

zlib-devel-1.2.1.2-1.2

zlib-1.2.1.2-1.2

png

libpng-1.2.7-1.el4.2

libpng10-1.0.16-1

libpng-devel-1.2.7-1.el4.2

libpng10-devel-1.0.16-1

jpeg

libjpeg-devel-6b-33

libjpeg-6b-33

curl

curl-7.12.1-8.rhel4

curl-devel-7.12.1-8.rhel4

freetype

freetype-2.1.9-1

freetype-demos-2.1.9-1

freetype-devel-2.1.9-1

freetype-utils-2.1.9-1

ImageMagick

ImageMagick-c++-6.0.7.1-14

ImageMagick-devel-6.0.7.1-14

xloadimage-4.1-36.RHEL4

ImageMagick-perl-6.0.7.1-14

ImageMagick-6.0.7.1-14

ImageMagick-c++-devel-6.0.7.1-14

wv

libwvstreams-3.75.0-2

wvdial-1.54.0-3

links

symlinks-1.2-22

elinks-0.9.2-3.2

2 安装步骤

2.1 、卸载系统缺省的mysql库

2.2 、卸载缺省的php库

2.3 、安装PHP5

./configure –with-apxs2=/usr/sbin/apxs \

–with-mysql=/usr \

–with-mysqli=/usr/bin/mysql_config \

–with-libxml-dir=/usr \

–enable-dba \

–with-openssl \

–with-regex=php \

–enable-bcmath \

–with-gnu-ld \

–with-tsrm-pthreads \

–enable-ftp \

–with-gettext \

–enable-zend-multibyte \

–enable-mbstring=all \

–with-curl=/usr \

–with-gd=/usr \

–with-jpeg-dir=/usr \

–with-png-dir=/usr \

–with-zlib-dir=/usr \

–with-freetype-dir=/usr

make

make install

2.4 、修改httpd.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php3 .php3

AddType application/x-httpd-php4 .php4

AddType application/x-httpd-php-source .phps

2.5 、修改php.ini

拷贝php.ini-dist为php.ini

cp php.ini-dist `php -i|grep php.ini|awk -F “=>” ‘{print $2}’`/php.ini

修改php.ini的如下内容:

session.save_path=/tmp

memory_limit = 128M

post_max_size = 64M

upload_max_filesize = 64M

2.6 、安装mysql

2.7 、安装mono

wget http://www.go-mono.com/download-stable/rhel-4-i386/mono.zip

mkdir mono

mv mono.zip mono/

rpm -ivh *rpm

2.8 、为mono创建/var/www/.wapi

mkdir /var/www/.wapi

chown apache /var/www/.wapi

2.9 、安装deki

wget http://downloads.sourceforge.net/dekiwiki/Deki_Wiki_1.8.3c_Hayes_source.tar.gz

tar xvzf Deki_Wiki_1.8.2b_Hayes_source.tar.gz

cd Deki_Wiki_1.8.3c_Hayes_source

mkdir /var/www/deki-hayes

cp -r web/* /var/www/deki-hayes/

service httpd restart

2.10 、编辑config/dekihost,修改apache用户www-data为apache

#!/bin/bash

# path to your wiki

DEKI_PATH=/var/www/deki-hayes

# this should match your Apache ServerName directive

DEKI_SERVERNAME=deki-hayes

prog=”MindTouch Deki Host Service”

start(){

if [ -f $DEKI_PATH/bin/mindtouch.host.sh ]; then

su -s /bin/bash apache — $DEKI_PATH/bin/mindtouch.host.sh start

fi

}

stop(){

if [ -f $DEKI_PATH/bin/mindtouch.host.sh ]; then

su -s /bin/bash apache — $DEKI_PATH/bin/mindtouch.host.sh stop

fi

}

status(){

testDream

}

以下内容省略

2.11 、配置自动启动

cp config/dekihost /etc/init.d/

ln -s /etc/init.d/dekihost /etc/rc3.d/S86dekihost

ln -s /etc/init.d/dekihost /etc/rc5.d/S86dekihost

2.12 、创建deki的log文件

touch /var/log/deki-api.log

chown apache /var/log/deki-api.log

2.13 、编辑/etc/httpd/conf/httpd.conf,在文件后增加如下内容

NameVirtualHost *:80

#

# NOTE: NameVirtualHost cannot be used without a port specifier

# (e.g. :80) if mod_ssl is being used, due to the nature of the

# SSL protocol.

#

#

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for requests without a known

# server name.

#

<VirtualHost *:80>

ServerName deki-hayes

ErrorLog /var/log/httpd/error.log

CustomLog /var/log/httpd/access.log common

DocumentRoot “/var/www/deki-hayes”

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/$

RewriteRule ^/$ /index.php?title= [L,NE]

RewriteCond %{REQUEST_URI} ^/@gui/[^.]+$

RewriteRule ^/@gui/(.*)$ /proxy.php?path=$1 [L,QSA,NE]

RewriteCond %{REQUEST_URI} !^/(@api|editor|skins|config|@gui)/

RewriteCond %{REQUEST_URI} !^/index\.php

RewriteCond %{REQUEST_URI} !^/favicon\.ico$

RewriteCond %{REQUEST_URI} !^/robots\.txt$

RewriteCond %{QUERY_STRING} ^$ [OR] %{REQUEST_URI} ^/Special:Search

RewriteRule ^/(.*)$ /index.php?title=$1 [L,QSA,NE]

# deki-api uses encoded slashes in query parameters so AllowEncodedSlashes must be On

AllowEncodedSlashes On

# mod_proxy rules

ProxyPass /@api http://localhost:8081

ProxyPassReverse /@api http://localhost:8081

SetEnv force-proxy-request-1.0 1

SetEnv proxy-nokeepalive 1

</VirtualHost>

2.14 、修改目录权限

chown -R apache /var/www/deki-hayes

apachectl restart

2.15 、授权apache能够创建/usr/local/var/目录,用于存放lucene index

mkdir -p /usr/local/var

chown apache /usr/local/var

2.16 、登录http://ip/config/index.php,通过页面安装deki

2.17 、页面安装完成后,自行如下操作

cd /var/www/deki-hayes/config

mkdir /etc/dekiwiki

chown apache /etc/dekiwiki

cp mindtouch.deki.startup.xml /etc/dekiwiki

cp LocalSettings.php /var/www/deki-hayes/

cp AdminSettings.php /var/www/deki-hayes/

cp mindtouch.host.sh /var/www/deki-hayes/bin/

/etc/init.d/dekihost start

3 参考资料

http://wiki.opengarden.org/Deki_Wiki/Installation_and_Upgrade/1.8_Hayes_Official_Install_and_Upgrade_Guide/CentOS_5

Technorati 标签: ,,,

电子商务系统之网络管理

  对于以“软件作为服务”的互联网公司而言,系统的可靠性、可用性、性能、安全性是互联网公司的核心竞争力之一,很大程度决定了服务质量、客户满意度。为了提升客户的服务满意度,要建立一种“主动维护”的综合运维机制,对网络及系统进行定期检测和实时监控,在用户还没有感知的情况下,及时发现网络的故障隐患并将其排除,从而保障电子商务系统的长期安全稳定运行,为客户提供满意的SLA服务。可以说有效的网络管理已不仅局限于网络层,它还面对着业务管理的需求,甚至影响着商业运行的方方面面。

  但是随着互联网公司的网络规模不断地扩展、网络类型逐渐增多,网络管理系统的作用越来越重要、也越来越复杂,数据配置、告警、统计和检测手段的不足直接影响了运维效率,排除网络故障、软件系统故障更加困难、维护成本也急剧上升,单靠日常的手工方式进行维护已经不能满足业务发展要求。通过网管系统对系统进行“主动维护”可以保证网管系统能够7×24小时对全网进行监控维护 ,满足系统高可用性、高可靠性、高性能、高安全性、高扩展性要求,同时有效降低运营成本,及时发现并排查故障,有效提升服务质量。

 

1、电子商务系统对网络管理的要求:

第一、管理对象的接入类型及系统的管理功能是水平可扩展的,随着被管理网络类型的多样化,网管系统具备管理各种类型网络的能力,而且功能实现也能够逐渐扩展。

第二、系统在处理能力方面要具有垂直可扩性。随着网络规模的不断扩大,网管系统必须满足能够管理始终处于增长态的网络的要求

第三、系统必须能够通过权限的划分,保证不同层次、不同地域的用户拥有不同层次的功能。

第四、网管系统应当具有较好的软件架构,提供较好的插件式扩展机制,以方便定制开发。对于电子商务系统核心业务功能的监控应该作为核心业务需求进行设计和开发,在规范上应当遵循网管系统的管理接口,以方便系统的集中统一管理。

第五:满足提供标准化的接口,包括JMX、SNMP等。

网管系统的功能分类:

  • 配置管理
  • 性能管理
  • 失效管理
  • 计费管理
  • 安全管理

2、开源网络管理系统解决方案

2.1、开源的网络管理平台:

Hyperic :http://www.hyperic.com/

Zenoss:http://zenoss.com/

GroundWorks:http://www.groundworkopensource.com/

OpenQRM:http://openqrm.org/

Nagios:http://nagios.org/

OpenNMS:http://www.opennms.org/

Zabbix:  http://www.zabbix.org/

以上几个提供功能相对完整的综合解决方案,也即所谓的“企业级网管软件”,其他的参考10 Great Open Source Network Tools

最佳选择:Hyperic

Hyperic HQ功能

Hyperic HQ 可以监控和管理:

  • 操作系统: AIX, HP/UX, Linux, Solaris, Windows, Mac OSX, FreeBSD
  • Web服务器: Apache, Microsoft IIS, Sun ONE Web Server
  • 应用服务器: BEA WebLogic, IBM WebSphere, JBoss, Apache Geronimo, Macromedia ColdFusion, Macromedia JRun, Microsoft .NET Runtime, Novell Silverstream, Tomcat, Caucho Resin
  • 数据库: IBM DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, Sybase Adaptive Server
  • 消息中间件: ActiveMQ,Weblogic MQ
  • 微软的产品: MS Exchange,MS ActiveDirectory,.NET
  • 虚拟产品: VMWare, Citrix Metaframe
  • 应用平台: LAMP, LAM-J, J2EE, MX4J
  • 其他技术网络设备交换机,路由器等。
Hyperic HQ架构 

 

diagram-server-arch-small

diagram-agent-arch-small

2.2、开源备份管理软件

http://www.bacula.org/

http://www.amanda.org/

http://www.cleversafe.org/

最佳选择:bacula

 

3、电子商务系统建设网络管理功能思考

系统的可监控性、可维护性、易部署性是电子商务系统建设必须考虑的核心功能之一,必须提前未雨绸缪,而不是上线之后再补充和完善。

基本原则:必须实现系统的集中统一管理、数据统一备份管理。

基本思路:选定一个相对完整的管理平台,然后在此基础上进行二次开发。在系统需求分析时候就必须把对核心功能的网管监控需求、系统的数据归档及备份需求体现到核心业务需求中去,而不是作为可有可无的功能。在架构设计时候就必须对核心功能设计网管接口、对系统数据的备份归档进行统一设计考虑。这样后期运营维护时候,才能够及时发现系统故障,降低系统的风险点。所有系统的管理监控功能、数据备份应当遵循网管系统、备份系统的接口要求。

使用 vs. 开发:网管系统不应当只是停留在监控数据库、操作系统等使用层面,必须让网管系统帮助把核心业务系统的功能管理起来。核心系统的网管接口由程序员完成,但与网管系统的融合及二次开发可以考虑让系统人员来做,这样可以帮助系统人员提升其职业技能,也可以让程序员集中精力完成业务功能的实现。

怎样利用网管系统来简化软件上线部署统一的分发管理、部署管理?

 

4、参考资料

https://www.theforbingroup.com/files/TFG%20-%20Monitoring%20Whitepaper.pdf

http://www.itmanagement.com/features/10-open-source-network-tools-052407/

http://redmonk.com/cote/2007/01/16/open-platforms-in-systems-management/

http://www.openxtra.co.uk/blog/network-managements-new-wave/

 

Technorati 标签: , , , , ,

开源游戏引擎及游戏

1、游戏引擎

Ogre3D游戏引擎

http://www.ogre3d.org/

Quake3游戏引擎

http://www.ioquake3.org/

http://www.vorbis.com/

http://www.libsdl.org/

Irrlicht游戏引擎

http://irrlicht.sourceforge.net/

Crystalspace3D游戏引擎

http://www.crystalspace3d.org/main/Main_Page

Sylphis3D 游戏引擎

http://devnet.sylphis3d.com/

更多3D引擎参考List of game engines

2、游戏

http://red.planetarena.org/

http://tremulous.net/

http://www.wesnoth.org/

http://www.globulation2.org

http://www.urbanterror.net/

http://www.worldofpadman.com/

http://www.scorched3d.co.uk/

http://maniadrive.raydium.org/

http://www.planeshift.it/

只整理一些较大的在架构实现上值得借鉴的游戏,更多右下参看100 of the Best Legal Free Full Version Games You Can Download Online

3、社区

http://www.devmaster.net/

http://freegamer.blogspot.com/

http://www.gamedev.net

http://www.replays.net

4、参考资料

http://en.wikipedia.org/wiki/List_of_game_engines

http://membres.lycos.fr/frochet/3d_engine_list.htm

http://www.cnblogs.com/cyberchen-net/archive/2007/03/04/663597.html

100 of the Best Legal Free Full Version Games You Can Download Online

http://games.slashdot.org/article.pl?sid=07/04/06/1638232

 

Technorati 标签: , , ,

在Ubuntu上使用Xvfb或vncserver抓取网页画面制作thumbnail

1、安装xvfb或vncserver

apt-get install xvfb

apt-get install vncserver xvncviewer

不用两个都安装,xvfb和vncserver都能够在没有安装X-Windows的情况下,提供X终端服务。可以只安装其中一个,建议安装vncserver,以可以通过诸如tightvnc之类的客户端进行管理。因此就不暂时测试xvfb方式,有空再试验。

2、安装imagemagick

apt-get install imagemagick

3、创建firefox 制作thumbnail时候使用的profile,避免已安装extension的干扰。

firefox -CreateProfile Screenshot

关于firefox的command line,可以参考:

http://kb.mozillazine.org/Command_line_arguments

4、生成thumbnail

vncserver -geometry 1024×768 -depth 24

#DISPLAY=:1 firefox -P "Screenshot" &

DISPLAY=:1 firefox -P "Screenshot"  -new-window http://www.yeeach.com &

DISPLAY=:1 import -window root yeeach.png

不知为何使用命令:

DISPLAY=:1 firefox -P "Screenshot" -remote "openurl(javascript:window.open(’http://www.yeeach.com/‘,”,’fullscreen=yes,toolbar=no,width=1024,height=768′))"始终报错:

Error: No running window found

因此DISPLAY=:1 firefox -P "Screenshot" &  实际上没有起作用,因此注释掉,等有空时候再具体研究原因。

5、为了方便测试,可以首先清除掉X11相关的lock文件和进程

rm -rf /tmp/.X11-unix/* ;rm -rf /tmp/.X*lock

ps -ef|grep X|grep -v grep |awk ‘{print $2 }’ |xargs kill -9

 

5、总结:

  • 采用此种方式如果处理过程中,如果出现非正常关闭的情况,firefox打开时候会提示“恢复上次会话”的提示,因此可能导致抓取页面不成功,比较烦人。可以采用的解决方案:

    a、修改配置参数browser.startup.page,关掉firefox的崩溃恢复提示机制。
      推荐设置为 3。firefox 会恢复崩溃时的会话页面,但是正常关闭时,你可能也需要上次的那些会话页面

      0 启动打开 about:blank 空页面

      1 启动打开homepage 主页面

      2 启动打开上次最后关闭时的页面

      3 启动打开上次最后会话的那些页面

    b、采用Tab Mix PlusSessionPage 扩展设置

googledotcom

  • 此种方法实际上是利用了imagemagick抓屏的功能,抓取用firefox打开页面的thumbnail,尽管可以利用imagemagick裁剪不需要的区域,相对于诸如page saver或screengrab的方案或基于gecko的方案还是比较不是很精准,尤其是不能滚动完整抓取多屏的页面。
  • 在调试时候,用tightvnc或其他vnc客户端登录终端进行管理还是很方便,能够及时排查出现的问题,这一点比xvfb方便。

6、参考资料

http://kb.mozillazine.org/Command_line_arguments

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://brad.livejournal.com/2015327.html

http://pc90.narc.affrc.go.jp/meng/?p=8

 

Technorati 标签: , , , ,

下一页 »