admin 的所有文章

02.dhtmlxGantt使用在线横道图Load data from JSON file

<!DOCTYPE html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<title>Load data from JSON file</title>
	<script src="../../codebase/dhtmlxgantt.js?v=6.0.7"></script>
	<link rel="stylesheet" href="../../codebase/dhtmlxgantt.css?v=6.0.7">
	<script src="../common/testdata.js?v=6.0.7"></script>
	<style>
		html, body {
			padding: 0px;
			margin: 0px;
			height: 100%;
		}
	</style>
</head>
<body>
<div id="gantt_here" style='width:100%; height:100%;'></div>
<script>
	gantt.config.xml_date = "%Y-%m-%d %H:%i:%s";//指定数据文件里的日期格式
	gantt.init("gantt_here");
	gantt.load("../common/data.json", "json");//加载数据文件
</script>
</body>

  https://github.com/610152753/DHTMLX-Gantt-learn  开源资料可以运行的文件。如有问题请加qq群:472279213

01.dhtmlxGantt使用在线横道图 01_initialization-01_basic_init

 

 

 1 <!DOCTYPE html>
 2 <head>
 3     <meta http-equiv="Content-type" content="text/html; charset=utf-8">
 4     <title>Basic initialization</title>
 5     <script src="../../codebase/dhtmlxgantt.js?v=6.0.7"></script>
 6     <link rel="stylesheet" href="../../codebase/dhtmlxgantt.css?v=6.0.7">
 7 
 8     <script src="../common/testdata.js?v=6.0.7"></script>
 9     <style>
10         html, body {
11             height: 100%;
12             padding: 0px;
13             margin: 0px;
14             overflow: hidden;
15         }
16     </style>
17 </head>
18 <body>
19 <div id="gantt_here" style='width:100%; height:100%;'></div> <!--展示甘特图的元素-->
20 <script>
21     var tasks = {
22         data: [
23             {
24                 id: 1, text: "Project #2", start_date: "01-04-2018", duration: 6, order: 10,
25                 progress: 0.4, open: true //open 为true为展开 false为收起
26             },
27             {
28                 id: 2, text: "Task #2", start_date: "02-04-2018", duration: 2, order: 10,
29                 progress: 0.6, parent: 1
30             },
31             {
32                 id: 3, text: "Task #3", start_date: "04-04-2018", duration: 2, order: 20,
33                 progress: 0.6, parent: 1
34             },
35             {
36                 id: 4, text: "Task #4", start_date: "04-04-2018", duration: 2, order: 30,
37                 progress: 0.4, parent: 1
38             },
39             {
40                 id: 5, text: "Task #5", start_date: "02-04-2018", duration: 1, order: 40,
41                 progress: 0.8, parent: 1
42             }
43             //{
44             //  id: 5 任务唯一ID, text: "Task #5" 任务名称, start_date: "02-04-2018"  任务的开始时间, duration: 1  任务的持续时间, order: 40,
45             //  progress: 0.8  任务的完成百分比, parent: 1 父ID
46             //}
47             //
48 
49         ],
50         links: [
51             {id: 1, source: 1, target: 2, type: "1"},//id: 1  连接的唯一id,  source: 连接的起点 1, target: 连接的终点 2, type: "1" 开始-开始 任务连线类型
52             {id: 2, source: 2, target: 3, type: "0"},//id: 2, source: 1, target: 2, type: "0" 结束-开始 任务连线类型
53             {id: 3, source: 3, target: 4, type: "2"},//id: 3, source: 1, target: 2, type: "2" 结束-结束 任务连线类型
54             {id: 4, source: 4, target: 5, type: "3"} //id: 4, source: 1, target: 2, type: "3" 开始-结束 任务连线类型
55         ]
56     };
57 
58     gantt.init("gantt_here");//初始化甘特图
59 
60 
61     gantt.parse(tasks);//加载任务数据
62 
63 </script>
64 </body>

 

 

  运行效果如下:


 

 

https://github.com/610152753/DHTMLX-Gantt-learn  开源资料可以运行的文件。如有问题请加qq群:472279213

用正则表达式匹配网址URL中最后一个反斜杠/后面的内容

http://b174.photo.store.qq.com/psb?/V10CD1yE07IujV/eMbKzb1rzHY56uejjCDlOsR3hhQY53jBobTL7Zh9lUg!/c/dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
https://www.zhihu.com/question/37415530/answer/118246241?group_id=751055135773331456
http://zhidao.baidu.com/question/185463932.html
http://billmill.org/bloomfilter-tutorial/
http://music.163.com/

测试结果:

共找到 3 处匹配:
dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
118246241?group_id=751055135773331456
185463932.html

正则表达式:

[^/]+(?!.*/)

解析:

[^/]+ 表示匹配任意长度的字符串,字符串中不包含有字符 / ,可以把以/分割开的字符串全匹配到.

.*/ 表示任意以/ 结尾的字符串,可以把后在带有/的字符串匹配到,前面再加上?!,再用圆括号包住表示排除掉.(?!.*/).
整个表达式的意思就是匹配任意长度的不包含/ 的字符串,并把以/结尾的字符串排除掉.

centos7安装sftp服务器

 

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

操作环境是centos7

 

1.添加用户组

 2.添加用户并设置为sftp组

//-g:加入主要组  -s指定用户登入后所使用的shell    -M:不要自动建立用户的登入目录

 

 3.修改sftp用户的密码,密码为yingyan@sftp.com

4.创建sftp用户的根目录和属主.属组,修改权限(755)

5.在sftp的目录中创建可写入的目录

6.修改sshd_config的配置文件

 

把原来的sshd_config配置文件里的subsystem行注释掉

在sshd_config文件最后添加

 

配置完成后重启配置

 

7.验证一下

 

 

 

如果你链接服务器的时候出现下面的提示:

> Write failed: Broken pipe     
> Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

  • 目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。

  • 目录开始一直往上到系统根目录为止都不可以具有群组写入权限 

  • 上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。

 

CentOS7使用firewalld打开关闭防火墙与端口

1、firewalld的基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
 
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed

3.配置firewalld-cmd

查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息:  firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic
 
那怎么开启一个端口呢
添加
firewall-cmd –zone=public –add-port=80/tcp –permanent    (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload
查看
firewall-cmd –zone= public –query-port=80/tcp
删除
firewall-cmd –zone= public –remove-port=80/tcp –permanent

nginx server配置

server {
listen 80;
server_name localhost;

client_max_body_size 200m;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}

location /images/ {
root /usr/local/;
autoindex on;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /.ht {
# deny all;
#}
}

 

参照文件: 

链接:https://pan.baidu.com/s/1h8h2J4f8g7CFvfQVI1KSng
提取码:hd4w

Docker常用命令 容器管理 镜像管理

#查看容器ID(containedId)
$docker ps -a

#删除容器
$docker rm containedId

#停止运行的容器
$docker stop containedId

#修改容器后将容器保存成镜像
$docker commit containedId supermap9d:v1

#创建容器并进入交互式模式
$docker run -it registry:versionid /bin/bash

#查看镜像
$docker images

#删除镜像
$docker rmi imageid 或则 docker rmi registry:versionid

 

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run --name mynginx -d nginx:latest

 

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

 

docker run -p 80:80 -v /data:/data -d nginx:latest

  

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

 

docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

  

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

runoob@runoob:~$ docker run -it nginx:latest /bin/bash

 

#主机复制文件到docker的[/path]路径
$docker cp localhostfile containedId:/path

#登录阿里云docker registry:
$docker login –username=610152753@qq.com registry.cn-hangzhou.aliyuncs.com 密码:Ak610152753

#登录registry的用户名是您的阿里云账号全名,密码是您开通服务时设置的密码。

#从registry中拉取镜像:
$docker pull registry.cn-hangzhou.aliyuncs.com/cki/supermap9d:v1

#创建容器并启动服务
$docker run -p 60013:8090 -d –name supmap9d registry.cn-hangzhou.aliyuncs.com/cki/supermap9d:v1 /run.sh

Oracle解决Ora-01653无法扩展表空间问题

先针对可能性1查看表空间使用情况 

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
       D.TOT_GROOTTE_MB "表空间大小(M) ",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
                     2),
               '990.99') "使用比",
       F.TOTAL_BYTES "空闲空间(M) ",
       F.MAX_BYTES "最大块(M) "
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
               ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
          FROM SYS.DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
          FROM SYS.DBA_DATA_FILES DD
         GROUP BY DD.TABLESPACE_NAME) D
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
 ORDER BY 4 DESC

通过上表我们可以看出,表空间***_TRD的表空间的空间使用率已经达到99.6%,只剩下133.88M可用,而其索引空间 ***_TRD_IDX的空间使用率更是达到了99.97%,只剩下4.94M可用。

SELECT T.TABLESPACE_NAME,
       D.FILE_NAME,
       D.AUTOEXTENSIBLE,
       D.BYTES,
       D.MAXBYTES,
       D.STATUS
  FROM DBA_TABLESPACES T, DBA_DATA_FILES D
 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
 ORDER BY TABLESPACE_NAME, FILE_NAME;

 

从上表可以看出,所有的表空间都开启了自动扩展的功能,而且状态都是available的。

 综合上述检查结果,可断定遇到的问题是因为可能性1—表空间不足导致。解决办法也就是扩大表空间。

 

扩大表空间的四种方法: 
1、增加数据文件 
ALTER TABLESPACE ***_TRD ADD DATAFILE 
‘D:ORACLEPRODUCT10.2.0ORADATADBFILETRD_2.DBF’ SIZE 1024M;

2、增加数据文件并允许自动增长 
ALTER TABLESPACE ***_TRD ADD DATAFILE 
‘D:ORACLEPRODUCT10.2.0ORADATADBFILETRD_2.DBF’ SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;

3、允许已存在的数据文件自动增长 
ALTER DATABASE DATAFILE ‘D:ORACLEPRODUCT10.2.0ORADATADBFILETRD.DBF’ 
AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;

4、手工改变已存在数据文件的大小 
ALTER DATABASE DATAFILE ‘D:ORACLEPRODUCT10.2.0ORADATADBFILETRD.DBF’ 
RESIZE 10240M;

实际解决过程中,我们使用的是方法2。

对于具体的项目,需要根据表空间中各个表的实际情况来确定具体那种方法最优,在此不做进一步阐述。

 

重设msyql数据库root密码

重设密码的方法:

 

具体方法是:

1.先在安装目录找到my.ini配置文件,打开配置文件,

找到[mysqld]一行,在下面添加skip-grant-tables后保存该文件

重新启mysql动服务;

 

2.然后在mysql的cmdline执行mysql -u root mysql,

mysql>use mysql 

mysql>update user set password=password(‘newpassword’) where user=’root’;

 

mysql>Flush privileges;

 

3.将刚才my.ini配置文件的添加那一行去掉,最后重新启动mysql就可以了。