Ha? Have a Talk. Menu

Permalink:

KindEditor与ckplayer的简单结合

链接

  ckplayer 6.7:http://www.ckplayer.com/bbs/forum.php?mod=viewthread&tid=10864
  KindEditor4.1.10 (2013-11-23):http://kindeditor.net/down.php
  参考教程: 关于kindeditor整合万能的ckplayer视频播放器插件


  因项目需要,现将KindEditor与ckplayer相结合,搭建一个带本地视频播放的cms。

KindEditor

  KindEditor的安装与配置这里不做多余介绍,具体参考《官方文档-编辑器使用方法》

ckplayer的配置

  上传相关文件到编辑器的插件目录即editor/plugins/ckplayer,基本的文件包括ckplayer.jsckplayer.swfckplayer.xmllanguage.xmlstyle.css

修改格式验证代码

  修改kindeditor.js的960行左右的上传功能的格式验证代码,加入需要支持的视频格式:

    function _mediaType(src) {
        if (/\.(rm|rmvb)(\?|$)/i.test(src)) {
            return 'audio/x-pn-realaudio-plugin';
        }
        if (/\.(swf|flv|mp4)(\?|$)/i.test(src)) {
            return 'application/x-shockwave-flash';
        }
        return 'video/x-ms-asf-plugin';
    }

  修改jsp/upload_json.jsp的32行左右的上传功能的格式验证代码,加入需要支持的视频格式:

    //定义允许上传的文件扩展名
    HashMap<String, String> extMap = new HashMap<String, String>();
    extMap.put("image", "gif,jpg,jpeg,png,bmp");
    extMap.put("flash", "swf,flv,mp4");
    extMap.put("media",
            "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,mp4");
    extMap.put("file",
            "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

  ckplayer官方称支持以下视频格式:

视频协议 视频格式 Flash HTML5
HTTP flv g.jpg x.jpg
HTTP f4v g.jpg x.jpg
HTTP mp4 g.jpg g.jpg
HTTP m3u8 g.jpg g.jpg
HTTP webm x.jpg g.jpg
HTTP ogg x.jpg g.jpg
RTMP flv g.jpg x.jpg
RTMP f4v g.jpg x.jpg
RTMP mp4 g.jpg x.jpg
RTMP 直播流 g.jpg x.jpg

  所以其中要添加什么类型的文件记得在两个文件都修改。
Continue reading…

  • •••
  • Thanks for leaving a comment, please keep it clean. HTML allowed is strong, code and a href.

Permalink:

SVN的搭建与迁移

1.链接

  官网下载:http://subversion.apache.org/packages.html
  SVN客户端:TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html


2.安装

  在CentOS的终端中运行以下命令:

yum install subversion

新建一个目录

  用于存储SVN所有文件

mkdir /svn

新建一个svn项目

# svnadmin create /svn/project

  目录中包含以下文件及文件夹

# ls /svn/project/
conf
db
format
hooks
locks
README.txt

目录用途说明
lhooks目录:放置hook脚本文件的目录
llocks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
lformat文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
lconf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)


3.配置

svnserve.conf文件

  svn服务的配置文件

# vi /svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /svn/project/conf/passwd#密码配置文件的位置
authz-db = /svn/project/conf/authz#权限配置文件的位置
realm = My Test Repository#svn提示信息

用户及密码passwd

# vi /svn/project/conf/passwd
[users]
xiaoran.shen = 123456
test1 = 123456
test2 = 123456

注意:对用户配置文件的修改立即生效,不必重启svn服务。

用户授权authz

# vi /svn/project/conf/authz
[groups]
admin = xiaoran.shen,test1
user = test2
[/]
@admin = rw
@user = r
* =

Continue reading…

  • Thanks for leaving a comment, please keep it clean. HTML allowed is strong, code and a href.

Permalink:

OSX EI Captain 更改应用图标

闲着没事给自己的Mac换了一套图标,效果图如下示,期间遇到各种坑无数,现记下遇过的坑的描述、说明及解决方案,与大家分享。注:本机为MacBook Pro(Retina,13-inch),系统版本为OS X EI Capitan (11.11.2) 。
Dock

1 图标

1.1 icns

icns是Mac OS X系统专有的应用或者文件图标的格式,与windows或者linux下的ico或png格式类似。Image file used to store icons for a Mac OS X application; 一般应用的图标文件在资源目录(Contents Resources directory) ,也可以可以通过在Finder中点击应用、文件或文件夹->查看简介->拖动(或复制)icns格式的图片到直接拖动简介中。另外也有地方运用的是PNG图片,如Dock中的Finder及Trash图标。

1.2 CandyBar

有OSX有教程用终端命令:

iconutil -c icns /路径/icon.iconset

生成相应的icns图标的教程,具体参考《OS X 程序图标的美化》 ,本文推荐用CandyBar批量生产icns图标,另同类软件还有image2icns等。CandyBar 是一个免费的icns图标批量转换,应用图标及Dock图标批量替换的软件,用官方提供激活码激活使用。

官方下载链接
panic.com
PPQA-YAMA-E3KP-VHXG-B6AL-L

1.3 artcore

artcore是一个德国艺术家,个人主页是artcore,我用的是artcore早期的作品,在iconarchive上可以下载到图标全集。
Dock

Continue reading…

  • lilian

    Finder Trash在Dock中是怎么改的啊?你那个在terminal中键入什么什么的。。没命令行啊!好焦急啊

  • 大菜头

    不好意思,没注意到CDN加速插件和代码高亮插件冲突了,现在可以了。

  • Thanks for leaving a comment, please keep it clean. HTML allowed is strong, code and a href.

Permalink:

MyBatis批量更新

业务需要,要完成批量编辑产品名称。运用Mybatis的批量更新功能,同时因为需要更新的数据是iterator迭代出来的,所以需要在前端做一个标记。
产品有产品ID、产品名称两个属性:
product

public class Product extends BaseEntity {
    /** 产品ID */
    private String productId;
    /** 产品名称 */
    private String name;
    /** 产品列表查询 */
    private List productList;
    //以下省了get和set方法...
}

Controller

@Action(value = "updateProduct", results = { @Result(name = "success", location = "/pages/backstage/manage-product-list.jsp") })
public String updateProduct() {
    product = new Product();
    product.setProductList(productList);
    UpdateProductService service = new UpdateProductService();
    service.setEntity(product);
    service.excuteService();
    return "success";
}

Service

public class UpdateProductService extends BaseService {
    protected Object makeService(Product entity, SqlSession sqlSession) {
        ProductDao dao = sqlSession.getMapper(ProductDao.class);
        dao.updateProduct(entity);
        return entity;
    }
}

Dao

public interface ProductDao {
    public int updateProduct(Product product);
}

Sql

<insert id="updateProduct" parameterType="com.xxxxx.product.entity.Product">
    replace into product (
        product_id,name
    ) values
    <foreach collection="productList" item="productList"
        index="index" separator=",">
        (#{productList.productId},
         #{productList.name})
    </foreach>
</insert>
<!--此处其实就是运用Mybatis的foreach标签来拼sql-->

html

<body>
    <script type="text/javascript">
        $(function() {
            $("#btn-save").on('click', function() {
                $("#updateProduct").submit();
            })
        });
    </script>
    <div class="panel panel-default">
        <div class="panel-heading">产品列表</div>
        <div class="panel-body">
            <ul class="tool-bar">
                <li><a href="javascript:void(0);" id="btn-save"><span
                        class="glyphicon glyphicon-floppy-disk"></span> 保存</a></li>
            </ul>
            <div class="double-line"></div>
            <s:form role="form" action="updateProduct" method="post"
                namespace="/admin" theme="simple">
                <br />
                <ul class="list-group">
                    <s:iterator value="product.productList"
                        status="statusTest">
                        <li class="list-group-item list-group-item-text">
                            <h5>产品列表</h5> <s:hidden
                                name="%{'productList['+#statusTest.index+'].productId'}"
                                value="%{productId}"></s:hidden>
                            <div class="form-group input-group">
                                <span class="input-group-addon"> <span
                                    class="glyphicon glyphicon-pencil"></span> 标题
                                </span>
                                <s:textfield cssClass="form-control"
                                    name="%{'productList['+#statusTest.index+'].name'}"
                                    value="%{name}"></s:textfield>
                            </div>
                        </li>
                    </s:iterator>
                </ul>
            </s:form>
        </div>
    </div>

如下图所示:
edit-product

  • Thanks for leaving a comment, please keep it clean. HTML allowed is strong, code and a href.

Permalink:

jforum二次开发相关笔记——(一)页面请求机制

jforum二次开发相关笔记

1. 引言

jforum是Rafael Steil开发的一个基于JAVA的开源论坛,采用BSD开源协议,可以最大限度的进行任何修改和扩展,包括商业用途。它提供了诸如SSO之类的抽象接口,具有完全的权限控制、支持包括中文在内的十几种语言、可自定义的用户接口、安全、多数据库支持等特性。JForum 采用 FreeMarker作为页面模板引擎。jforum的介绍这里不再敷述,因项目需要,需要对jforum进行修改、实现从CS平台登录以后单点登录到jforum,因为jforum只支持唯一用户名标识,所以还需对jforum进行二次开发。(注:本文的jforum版本为2.1.9。)

2. jforum的页面请求机制

将jforum导入到eclipse可以参考《Java开源论坛JForum二次开发技术资料之导入安装》。以最简单的在一个登陆用户进入个人资料页为例:
jforum导航栏

2.1 处理url

用户点击个人资料,页面请求的url为/user/edit/session中获取的用户Id如header.htm源码所示:
/jforum/WebContent/templates/default/header.htm

<a id="myprofile" class="mainmenu" href="${JForumContext.encodeURL("/user/edit/${session.userId}")}">
<img src="${contextPath}/templates/${templateName}/images/icon_mini_profile.gif" border="0" alt="[Profile]" /> 
${I18n.getMessage("ForumBase.profile")}

JForum中的JForumContext.encodeURL方法(注:实现在/jforum/src/net/jforum/context/JForumContext.java下)根据请求的url中的useredit在modulesMapping.properties中查询user对应的配置项:

/jforum/WebContent/WEB-INF/config/modulesMapping.properties

user=net.jforum.view.forum.UserAction

2.2 查询action

根据请求的url中的edit在相应的UserAction中找到edit方法:

/jforum/src/net/jforum/view/forum/UserAction.java

public void edit() {
    if (this.canEdit()) {
        int userId = this.request.getIntParameter("user_id");
        UserDAO um = DataAccessDriver.getInstance().newUserDAO();
        User u = um.selectById(userId);
        this.context.put("u", u);
        this.context.put("action", "editSave");
        this.context.put(
                "pageTitle",
                I18n.getMessage("UserProfile.profileFor") + " " +u.getUsername());
        this.context.put("avatarAllowExternalUrl", SystemGlobals.getBoolValue(ConfigKeys.AVATAR_ALLOW_EXTERNAL_URL));
        this.setTemplateName(TemplateKeys.USER_EDIT);
    }
}

Continue reading…

  • Thanks for leaving a comment, please keep it clean. HTML allowed is strong, code and a href.