e攻城狮

  • 首页

  • 随笔

  • 分类

  • 瞎折腾

  • 搜索

MySQL中trim()函数的用法

发表于 2018-07-11

trim函数可以过滤指定的字符串:

完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

简化格式:TRIM([remstr FROM] str)

返回字符串 str , 其中所有remstr前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。remstr为可选项,在未指定情况下,可删除空格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT TRIM('  bar   ');

-> 'bar'

mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); --删除指定的首字符 x

-> 'barxxx'

mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); --删除指定的首尾字符 x

-> 'bar'

mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); --删除指定的尾字符 x

-> 'barx'

mysql中的去除左空格函数:

LTRIM(str);

1
2
3
mysql> SELECT LTRIM('  barbar');

-> 'barbar'

mysql中的去除右空格函数:

RTRIM(str):

1
2
3
mysql> SELECT RTRIM('barbar   ');

-> 'barbar'

php 读取中文目录报错

发表于 2018-07-11 分类于 PHP

问题的发现:

(1)在php文件所在目录,手动创建了文件名为“测试.txt”和“test.txt”的文件;

(2)执行下列代码:

1
2
3
<?php
var_dump(file_exits("测试.txt")); // false
var_dump(file_exits("test.txt")); // true

分析原因:

编码的不一样,导致文件系统无法识别UTF8编码下的中文路径;

解决方法:

1
var_dump(file_exits(iconv('UTF-8','GB2312',"测试.txt")));// true

*在使用非ASCII码表字符时,必须考虑的以下几个问题是:

(1)操作系统的编码;

(2)存储环境的编码;

(3)代码文件的编码;

(4)目标运行环境的编码

cURL error 60:SSL certificate problem

发表于 2018-07-04 分类于 PHP

问题描述:

php在curl的时候报此错误:

cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

根据报错后面提示的地址查询60错误:

CURLE_SSL_CACERT (60)
Peer certificate cannot be authenticated with known CA certificates.

解决方法:

关于“SSL证书问题:无法获取本地颁发者证书”错误。显然,这适用于发送CURL请求的系统(并且没有接收请求的服务器)

1)从 https://curl.haxx.se/ca/cacert.pem 下载最新的cacert.pem

2)将以下行添加到php.ini curl.cainfo={放证书的目录}/cacert.pem

3)默认情况下,FastCGI进程将每隔300秒解析新文件(如果需要,您可以通过添加几个文件来更改频率)

shadowsock搭建服务端与客户端

发表于 2018-06-27 分类于 服务器运维

文章内容已被作者限制访问

mysql支持emoji表情

发表于 2018-06-03

数据库

字段 Character set 设置为 utf8mb4 , Collation 设置为 utf8mb4_unicode_ci

数据库连接

‘charset’ => ‘utf8mb4’,

‘collation’ => ‘utf8mb4_unicode_ci’,

HTML5 微数据

发表于 2018-06-03 分类于 前端开发

微数据(HTML5 microdata) 是一种在网页中提供附加语义的标准化方式。

微数据允许我们定义自定义元素以及在网页中嵌入自定义属性。从较高的角度而言,微数组由一组名-值对组成。

这个分组被称作条目,每个名-值对就是一个属性。条目和属性使用普通元素表示。

示例用 itemscope 属性创建一个条目。给条目添加一个属性,itemprop 属性用于条目的后代。

这里有两个条目,其中每个条目都有一个 “name” 属性:

1
2
3
4
5
6
7
8
9
10
11
<div itemscope>

<p>My name is <span itemprop="name">Zara</span>.</p>

</div>

<div itemscope>

<p>My name is <span itemprop="name">Nuha</span>.</p>

</div>

属性值通常是字符串,但是它可以是下列数据类型。

全局属性

微数据引入了五个全局属性,这些属性适用于在任意元素以及为数据提供上下文机制。

属性描述

  • itemscope用于创建一个条目。itemscope 属性是一个布尔值属性,说明页面上有微数据以及它从哪里开始。

  • itemtype这个属性是一个有效的 URL,用于定义条目以及为属性提供上下文。

  • itemid这个属性是条目的全局标识符。

  • itemprop这个属性为条目定义属性。

  • itemref这个属性提供了一个附加元素列表来抓取条目的名-值对。

属性数据类型

属性通常有一个正如上面的例子中提到的字符串值,但是它们的值也可以是 URLs。下面的例子中有一个 “image” 属性,它的值是一个 URL:

1
<div itemscope> <img itemprop="image" src="tp-logo.gif" alt="TutorialsPoint"></div>

属性的值也可以是日期,时间或者日期和时间。下面是一个使用 time 元素和 datetime 属性的实现。

1
<div itemscope>My birthday is:<time itemprop="birthday" datetime="1971-05-08">   Aug 5th 1971</time></div>

属性本身也可以是一组名-值对,通过在元素上放置 itemscope 属性来声明属性。

微数据 API 支持

如果浏览器支持 HTML5 微数据 API,那么全局 document 对象上就会有一个 getItems() 函数。如果浏览器不支持微数据,getItems() 函数就会是 undefined。

1
function supports_microdata_api() {  return !!document.getItems;}

Modernizr 还不支持微数据 API 检测,因此我们需要使用像上面一样列出的函数来检测。

HTML5 微数据标准包含 HTML 标记(主要用于搜索引擎)和一系列 DOM 函数(主要用于浏览器)。

我们可以在网页中引入微数据标记,不理解微数据属性的搜索引擎将会忽略它们。但是,如果需要通过 DOM 访问或者操作微数据,我们还需要检查浏览器是否支持微数据 DOM API。

定义微数据词汇表

要定义一个微数据词汇表我们需要一个只想有效网页的命名空间 URL。例如 http://data-vocabulary.org/Person

可以用作带下列命名属性的个人微数据词汇表的命名空间。

name - 人名,简单的字符串值。

Photo - 指向人物照片的 URL。URL - 属于个人的网站。

下面是一个使用个人微数据相关属性的例子:

1
2
3
4
5
6
7
<section itemscope itemtype="http://www.example.com/Person">
<h1 itemprop="name">Andy Runie</h1>
<p>
<img itemprop="photo" src="http://www.example.com/photo.jpg "/>
</p>
<a itemprop="url" href="http://www.example.com/blog">My Blog</a>
</section>

我们使用Live Microdata执行上面的HTML代码,会得到下面的JSON数据:

典型DEMO:

QQ自动识别,将下面这段代码加入到网站header里面

1
2
3
4
5
<meta name="description" itemprop="description" content="我们坚持以自主研发、不断创新为发展动力,专注为企事业单位提供从移动应用开发、网站建设,到数据收集分析与云计算等的网络服务,以及互联网营销解决方案,形成了针对政府、企业、媒体等不同行业、不同规模、不同应用的系列产品和针对性解决方案。">

<meta itemprop="name" content="e攻城狮">

<meta itemprop="image" content="img/logolink.png">

在QQ聊天会话中去试试吧~

vue的微信分享bug

发表于 2018-06-02 分类于 前端开发

vue 默认路由是带有#的,但是在微信分享中, 我们遇到这种bug:

https://xxxxx.com/#a

分享成功,不能跳回到当前路由

解决方法

https://xxxxx.com/

分享成功,能跳回到当前路由

Linux下安装配置redis 自启动脚本

发表于 2018-05-05 分类于 服务器运维
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
# chkconfig:2345 80 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF &
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac

Linux删除svn保存的密码和用户名

发表于 2018-04-26 分类于 服务器运维

~/.subversion/auth/svn.simple/1233……

把相关的username 下你自己的用户名和passwd下你自己的密码删掉,下次再对svn操作时就会让你重新输用户名和密码了。

如何给redis设置密码

发表于 2018-04-26 分类于 数据库

redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。

1、初始化Redis密码:

在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数;

比如 requirepass test123;

(Ps:需重启Redis才能生效)

redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长(对于DBA 没有必要必须记住密码);

2、不重启Redis设置密码:

在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。

1
redis 127.0.0.1:6379> config set requirepass test123

查询密码:

1
2
3
redis 127.0.0.1:6379> config get requirepass

(error) ERR operation not permitted

密码验证:

1
2
3
redis 127.0.0.1:6379> auth test123

OK

再次查询:

1
2
3
4
5
redis 127.0.0.1:6379> config get requirepass

1) "requirepass"

2) "test123"

PS:如果配置文件中没添加密码 那么redis重启后,密码失效;

3、登陆有密码的Redis:

在登录的时候的时候输入密码:

1
redis-cli -p 6379 -a test123

先登陆后验证:

1
2
3
4
5
redis-cli -p 6379

redis 127.0.0.1:6379> auth test123

OK

AUTH命令跟其他redis命令一样,是没有加密的;阻止不了攻击者在网络上窃取你的密码;

认证层的目标是提供多一层的保护。如果防火墙或者用来保护redis的系统防御外部攻击失败的话,外部用户如果没有通过密码认证还是无法访问redis的。

1…8910…16
Mr.Gou

Mr.Gou

155 日志
11 分类
38 标签
RSS
GitHub E-Mail Weibo
Links
  • 阮一峰的网络日志
  • 离别歌 - 代码审计漏洞挖掘pythonc++
  • 一只猿 - 前端攻城尸
  • 雨了个雨's blog
  • nMask's Blog - 风陵渡口
  • 区块链技术导航
© 2023 蜀ICP备2022014529号