saiku角色权限控制

  1. tomcat/webapps/saiku/WEB-INF/classes/saiku-datasources/your-cube文件中

    # some security configuration for roles, first enable it
    security.enabled=true
    
    # there are 3 different types of security:
    # "one2one" (try and map spring user roles to mondrian roles),
    # "mapping" (define the mapping of spring and mondrian roles manually)
    # "passthrough" (will pass username + password of logged in user to connection, e.g. jdbc user + password)
    
    security.type=one2one
    
    # security.type=mapping
    # security.mapping=springRole=mondrianRole1;springRole2=mondrianRole2
    
  2. tomcat/webapps/saiku/WEB-INF/users.properties

    admin=abcdefg,ROLE_USER,ROLE_ADMIN
    chenfan=1234567,ROLE_FINANCE
    xiaoqiuying=520520,ROLE_FINANCE
    
  3. cube的schema文件里,仿FoodMart.xml里的最后一段:

    <!-- A California manager can only see customers and stores in California.
         They cannot drill down on Gender. -->
    <Role name="California manager">
      <SchemaGrant access="none">
        <CubeGrant cube="Sales" access="all">
          <HierarchyGrant hierarchy="[Store]" access="custom"
              topLevel="[Store].[Store Country]">
            <MemberGrant member="[Store].[USA].[CA]" access="all"/>
            <MemberGrant member="[Store].[USA].[CA].[Los Angeles]" access="none"/>
          </HierarchyGrant>
          <HierarchyGrant hierarchy="[Customers]" access="custom"
              topLevel="[Customers].[State Province]" bottomLevel="[Customers].[City]">
            <MemberGrant member="[Customers].[USA].[CA]" access="all"/>
            <MemberGrant member="[Customers].[USA].[CA].[Los Angeles]" access="none"/>
          </HierarchyGrant>
          <HierarchyGrant hierarchy="[Gender]" access="none"/>
        </CubeGrant>
      </SchemaGrant>
    </Role>
    
    <Role name="No HR Cube">
      <SchemaGrant access="all">
        <CubeGrant cube="HR" access="none"/>
      </SchemaGrant>
    </Role>
    

Done!

百度语音识别shell脚本

function vopLogin(){
  appKey="$1"
  secretKey="$2"
  url="https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=$appKey&client_secret=$secretKey"
  token=`curl "$url" | awk '{
    split($0,aa,"\"access_token\":\"");
    split(aa[2],bb,"\"");
    print bb[1];
  }'`
}
function escapeResult(){
  awk 'BEGIN{
    OFS="\t"
  }{
    split($0,aa,"\"result\":\\[\"");
    split(aa[2],bb,"\"]");
    print  "print u\""bb[1]"\""
  }'    | python
}
function vopRegnize(){
  fmt="$1"
  fn="$2"
    ss=`curl -s -T $fn -H "Content-Type: audio/$fmt;rate=8000" "http://vop.baidu.com/server_api?lan=zh&cuid=123456&token=$token"`
  echo "$ss" | escapeResult
}

测试

vopRegnize wav ./eee.wav


嗯嗯我不知道当时是怎么跟你说的哈这是我之前有告诉她了要帮你们推荐的时候我是很明确已经问我的问题我就没以为你是没有孩子的,那么我

如何实现“猜你喜欢”功能?

  1. 去买以下这本书《集体智慧编程》
  2. 照着第二章“协作型过滤”的脚本程序抄一遍,非常简单, 包你会。
  3. 当然实现容易,优化难,有问题可以联系我。
如何实现“猜你喜欢”功能?

目录:

前言

第1章 集体智慧导言

什么是集体智慧

什么是机器学习

机器学习的局限

真实生活中的例子

学习型算法的其他用途

#-----------------

第2章 提供推荐

协作型过滤

搜集偏好

寻找相近的用户

推荐物品

匹配商品

构建一个基于del.icio.us的链接推荐系统

基于物品的过滤

使用MovieLens数据集

基于用户进行过滤还是基于物品进行过滤

练习

#-----------------

第3章 发现群组

监督学习和无监督学习

单词向量

分级聚类

绘制树状图

列聚类

K-均值聚类

针对偏好的聚类

以二维形式展现数据

有关聚类的其他事宜

练习

第4章 搜索与排名

搜索引擎的组成

一个简单的爬虫程序

建立索引

查询

基于内容的排名

利用外部回指链接

从点击行为中学习

练习

第5章 优化

组团旅游

描述题解

成本函数

随机搜索

爬山法

模拟退火算法

遗传算法

真实的航班搜索

涉及偏好的优化

网络可视化

其他可能的应用场合

练习

第6章 文档过滤

过滤垃圾信息

文档和单词

对分类器进行训练

计算概率

朴素分类器

费舍尔方法

将经过训练的分类器持久化

过滤博客订阅源

对特征检测的改进

使用Akismet

替代方法

练习

第7章 决策树建模

预测注册用户

引入决策树

对树进行训练

选择最合适的拆分方案

以递归方式构造树

决策树的显示

对新的观测数据进行分类

决策树的剪枝

处理缺失数据

处理数值型结果

对住房价格进行建模

对“热度”评价进行建模

什么时候使用决策树

练习

第8章 构建价格模型

构造一个样本数据集

k-最近邻算法

为近邻分配权重

交叉验证

不同类型的变量

对缩放结果进行优化

不对称分布

使用真实数据——eBay API

何时使用k-最近邻算法

练习

第9章 高阶分类:核方法与SVM

婚介数据集

数据中的难点

基本的线性分类

分类特征

对数据进行缩放处理

理解核方法

支持向量机

使用LIBSVM

基于Facebook的匹配

练习

第10章 寻找独立特征

搜集一组新闻

先前的方法

非负矩阵因式分解

结果呈现

利用股票市场的数据

练习

第11章 智能进化

什么是遗传编程

将程序以树形方式表示

构造初始种群

测试题解

对程序进行变异

交叉

构筑环境

一个简单的游戏

更多可能性

练习

第12章 算法总结

贝叶斯分类器

决策树分类器

神经网络

支持向量机

k-最近邻

聚类

多维缩放

非负矩阵因式分解

优化

附录A:第三方函数库

附录B:数学公式

索引

mondrian连接mysql报异常:Error while instantiating dialect

注意观察java exception stack:

 Caused by: java.util.regex.PatternSyntaxException: Unclosed group near index 19
^.*(\\Q(.*)\\E).*$
                   ^
        at java.util.regex.Pattern.error(Pattern.java:1700)
        at java.util.regex.Pattern.accept(Pattern.java:1558)
        at java.util.regex.Pattern.group0(Pattern.java:2494)
        at java.util.regex.Pattern.sequence(Pattern.java:1793)
        at java.util.regex.Pattern.expr(Pattern.java:1739)
        at java.util.regex.Pattern.compile(Pattern.java:1447)
        at java.util.regex.Pattern.(Pattern.java:1130)
        at java.util.regex.Pattern.compile(Pattern.java:822)
        at mondrian.spi.impl.MySqlDialect.(MySqlDialect.java:30)
        ... 52 more

在MySqlDialect.java第30行找到出错的代码:

private final String escapeRegexp = "^.*(\\\\Q(.*)\\\\E).*$";
private final Pattern escapePattern = Pattern.compile(escapeRegexp);

一番尝试后,发现原来\Q在java正则表达式里有特殊作用,导致Pattern compile异常。

改成以下等价表达式即能解决

private final String escapeRegexp = "^.*(\\\\[Q](.*)\\\\E).*$";
private final Pattern escapePattern = Pattern.compile(escapeRegexp);

重新编译MySqlDialect.java, 用winrar等压缩工具打开mondrian.jar,删除classesmondrianspiimpl下MySqlDialect.class三个相关文件,然后再把新编译好的三个class文件拖进去替换完即可。

此bug上报pentaho了,竟然没人理,全世界只有我碰到这个问题吗? http://jira.pentaho.com/browse/MONDRIAN-1380