如何取消群辉photo,music,video的默认共享

安装群辉后,你会发现群辉默认共享了photo,music,video三个文件夹,而且是不需要认证就可以访问的。而且在群辉的文件管理中,你可能也没有创建这三个文件夹。

网上有人说设置一下权限,其实这并不是权限问题,这是群辉的“媒体服务器”创建的DLNA/UPnP服务。它可以让局域网内的智能电视,智能手机登设备直接访问并浏览播放里面的多媒体文件。

这三个文件夹里的文件,并不是来自根目录的photo,music,video,而是系统根据用户自己设置的媒体文件夹和文件类型映射出来的。

如果要删除或者添加里面的文件,我们需要在控制面板里面找到“索引服务”,点击“索引文件夹”进行设置即可;

如果要取消这三个文件夹的共享,我们只需在套件中心停用掉“媒体服务器”即可。

自写DHCP服务端,使DHCP每次连接获得IP不一样

首先我们要先了解一下DHCP请求IP的流程:

1、客户端启动发送Discover广播(如果原先获得的IP租赁时间未到期,则发送Request请求,即第3步);

2、DHCP服务端收到Discover广播,然后给客户端发送一个Offer(Option中带有分配给客户端的IP)响应;

3、客户端收到Offer请求,再向服务端发送Request请求去请求Offer中的IP;

4、服务端如果确认客户端的IP请求,则响应ACK,否则响应NAK,(如果响应NAK,客户端又重新进入第1步的Discover)。

问题分析:

如果要让客户端每次请求到的IP不一致,先要了解下面两个现状:

1、客户端在租赁时间使用50%和87.5%的时候,都会向服务端重新Request这个IP。

解决思路:我们应该分配给客户端尽量长的释放时间,比如24小时

2、如果上一个IP使用未达到释放时间,客户端重新请求的话,发送的Request请求,这样,服务端正常情况下会发送ACK确认响应

解决思路:我们应该拒绝客户端这个Request请求,使客户端能进入Discover阶段,以便服务端分配新IP,优先分配该Mac地址没有获得过的IP

解决方案:

1、客户端Discover阶段,读取该mac地址历史分配记录,优先Offer该mac地址未使用过的IP,再分配最早释放的IP,并缓存该Offer信息

2、客户端Request阶段,如果请求的IP不存在于第一步的分配信息中,则客户端的请求是续租原有IP,这里向客户端发送NAK响应,如果是第一步Offer的IP,则发送ACK响应

具体细节自行优化一下,目的就可以达到了,本人是用Python实现的。

WordPress 4.3 Uncaught TypeError Cannot read property WordCounter[转载]

WordPress4.3正式版已经发布了,该版本被命名为Billie。

 

但是更新至WordPress 4.3 “Billie”后,Chrome网页控制台提示:Uncaught TypeError: Cannot read property ‘WordCounter‘ of undefined,添加媒体和添加锚文本链接时都无法弹出。本以为是浏览器禁止弹出,清除浏览器缓存,恢复默认设置都没有解决,还会提示失败。后来发现问题是使用中文翻译导致,文章页无法添加媒体和链接。正是由于这个原因,导致后续js加载失败。
解决办法:强制重新下载翻译或删掉出现问题的语言文件。
1、删除wp-content下的languages目录,重新到更新页面,更新翻译。更新页面是
http://你的域名/wp-admin/update-core.php或者另外一个办法,使用FTP工具,在languages目录下,把
zh_CN-word-count.dev.js
zh_CN-word-count.js删掉。
好像旧版本升级出现的历史遗留问题,从WP4.0开始用好像就不会有这个问题。
zh_CN-word-count*是在WP4.0开始就不再更新了。zh_CN.php最后一次更新日子是WP4.2,主要增加对一些多媒体的支持和ICP备案号填写(仅对WordPress自带主题有效)。
此次发布的WordPress4.3版本对WordPress的“自定义”功能有了一些非常好的更新,同时也更新了一下安全性的问题。更新后网站后台管理操作更加流畅,写文章可以使用Markdown,并且提升了密码安全性,总体体验非常好。

原文来自:http://www.codebye.com/wordpress-4-3-uncaught-typeerror-cannot-read-property-wordcounter.html

Eclipse部署项目到远程tomcat

tomcat项目自动的方式有很多种,我最近使用的有两种,一种是使用Jenkins,另外一种使用maven插件来自动部署

本文介绍使用maven插件来自动部署,只需要在tomcat和eclipse上作简单的配置即可。

1、首先设置创建tomat管理的权限

在conf/tomcat-users.xml中设置用户和密码,并指定权限




该配置不具有网页管理权限,如果需要网页管理还是配置角色:manager-gui,admin-gui。

2、去除IP限制

在webapps/manage/META-INF/context.xml中,删除如果代码,或者把你允许的ip加进去,注意.需要转义一下

3、在项目的pom.xml中的plugins节点中配置,远程部署地址,账号和密码

org.apache.tomcat.maven
tomcat7-maven-plugin
2.2

http://主机地址/manager/text
服务名称
用户名(和tomcat中配置的一样) 密码(和tomcat中配置的一样) / utf8
true

如果配置后,通过eclipse部署出错,需要配置一下manager/META-INF 下的context.xml文件,里面设置了允许的ip地址,删除该行,或者重新配置你的即可。

Mybatis返回Map类型数据

一、需求

在开发中,我们有时候需要将结果集映射成Map类型,不是List<Map>,如下:

 

sql查询得到的结果是:

sql_result

而我们需要的数据格式是:

Jietu20171227-201458

对应bean的属性类型为:

Jietu20171227-202747

二、解决方案:

1、在service层实现

这种方法会让service层显得比较臃肿,如果系统中用的比较多,会重复写很多这样的代码

2、编写mybatis拦截器实现

根据多种尝试,最终决定写mybatis拦截器进行实现。

2.1、先写一个拦截器


package com.renyiwei.mybatis.interceptor;

import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.ibatis.executor.resultset.ResultSetHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;

@Intercepts({ @Signature(method = "handleResultSets", type = ResultSetHandler.class, args = { Statement.class }) })
public class MapInterceptor implements Interceptor {

@SuppressWarnings("unused")
private Properties properties;

@Override
public Object intercept(Invocation invocation) throws Throwable {
ResultSetHandler resultSetHandler = (ResultSetHandler) invocation.getTarget();
Class clazz = resultSetHandler.getClass();
// 反射读取boundSql 获得sql语句
Field field = clazz.getDeclaredField("boundSql");
field.setAccessible(true);
BoundSql boundsql = (BoundSql) field.get(resultSetHandler);
String sql = boundsql.getSql();
// 如果sql中包含 MAP_KEY 和 MAP_VALUE 则被认为需要该将结果集转为Map类型
if (sql.contains("MAP_KEY") && sql.contains("MAP_VALUE")) {
try {
List> list = new ArrayList>();
Map map = new HashMap();
Statement statement = (Statement) invocation.getArgs()[0]; // 取得方法的参数Statement
ResultSet rs = statement.getResultSet(); // 取得结果集
while (rs.next()) {
String mapKey = rs.getString("MAP_KEY");
Object mapValue = rs.getObject("MAP_VALUE");
map.put(mapKey, mapValue); // 取得结果集后K、V关联后放到MAP当中
}
list.add(map);
// 这里返回list,而不是直接返回map
return list;
} catch (Exception e) {
// 如果出现异常,可能是冲突,则...
return invocation.proceed();
}

}
// 如果没有进行拦截处理,则执行默认逻辑
return invocation.proceed();
}

@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}

@Override
public void setProperties(Properties properties) {
this.properties = properties;
}

}

2.2、配置拦截器




2.3、写sql语句



component lists rendered with v-for should have explicit keys

webpack编译的时候报错如下:

WARNING in ./node_modules/vue-loader/lib/template-compiler?{“id”:”data-v-17cf5f56″,”hasScoped”:true}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/console/list.vue

(Emitted value instead of an instance of Error) : component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info.

通过报错警告中的提示信息,我们访问https://vuejs.org/guide/list.html#key,得到解决方案:

component lists rendered with v-for should have explicit keys

centos搭建git服务 密钥登录git

1、使用yum安装git

yum install -y git

2、添加git用户组和用户

groupadd git
useradd git -g git

3、禁止git用户登录

vim /etc/passwd

找到git用户修改为:

git:x:504:1004::/home/git:/usr/bin/git-shell

4、创建git仓库

mkdir /home/git/

git init –bare test.git

5、修改git仓库所有权

chown -R git:git /home/git/test.git

6、创建认证密钥

ssh-keygen -t rsa -C “你的邮箱地址”

默认会创建在当前用户家目录的.ssh下,你可以根据提示让它创建在/home/git/.ssh下面,这个没有关系,只要你能找到就可以

创建完成后会有公钥id_rsa.pub(服务器上使用) 和 私钥 id_rsa(客户端使用)

7、将公钥添加到/home/git/.ssh/authorized_keys

cat id_rsa.pub >> /home/git/.ssh/authorized_keys

这里的权限很重要

.ssh文件夹的权限为 755或711

authorized_keys文件权限为600或644

否者可能会无法使用密钥登录

8、修改sshd配置

vim /etc/ssh/sshd_config

找到如下配置项,去除前面的注释,如果已经开启无需再配置

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

9、重启sshd服务

service sshd restart

10、将私钥id_rsa复制到客户端,可以通过scp或ftp、sftp等工具

然后在客户端执行

ssh-add id_rsa

10、接下来就可以不需要密码使用git用户操作服务器上的git仓库了

可以输入下面命令进行测试,如果没有输入密码提示那就成功了。但是因为上面设置了git的登录shell,登录时无法成功。

ssh git@主机地址 

Chrome浏览器更新DNS缓存 Chrome Clear DNS Cache

Chrome浏览器自身带有dns缓存,即便主机上的dns缓存已经更新,Chrome可能还访问的是原来的解析。所以需要清除一下Chrome自身的缓存。方法如下:

1、在Chrome地址栏输入:chrome://net-internals/#dns

2、点右上角的按钮,会出现下拉菜单,点clear cache即可。

chrome-clear-dns-cache