Keep Learning, Keep Running

shell脚本生成mysql数据库以及用户

此脚本可以根据自定义做合适的修改,自己知道自己做什么就好了

#!/bin/bash

# Functions
ok() { echo -e '\e[32m'$1'\e[m'; } # Green

EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`

Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON $1.* TO '$2'@'%' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"

if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi

$MYSQL -uroot -e "$SQL"

ok "Database $1 and user $2 created with a password $3"

简单讲解就是新建个shell脚本,例如:mysql_create.sh。

执行的时候带上3个参数,分别是数据库,用户名,密码

crontab 基本用法

crontab -l 当前定时脚本

crontab -e 编辑定时脚本

          • php script.php

5个星星对应如下

minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

typecho_material_theme 增加二级分类导航栏

从当时有人提出想增加二级分类到现在已经半年了,终于在闲着蛋疼的情况下撸了出来,比想象中简单很多 - -

要改的代码其实不多,就是改了一下原来遍历输出增加了条件判断

下拉插件请参考

了解typecho的API感觉真不容易,文档个人感觉并不全

首先在遍历 category 时需要判断该 category 是否有children
<?php if(count($category->children)):?>

有的话就遍历该category的children

    <ul class="dropdown-menu">
        <li><a href="<?php echo $category->permalink(); ?>"><?php echo $category->name ?></a></li>
        <?php foreach($category->children as $k=>$v):?>
            <li><a href="<?php echo $v['permalink'] ?>"><?php echo $v['name'] ?></a></li>
        <?php endforeach; ?>
    </ul>


Continue Reading...

centos7 下安装php7&mysql

花了半天时间把另外一个服务器安装php7,并且安装mariadb

在此做下记录

首先按照官网来安装php7 php官网

但是其中configure是错误的,会导致报错

./configure --enable-fpm --with-mysql

改为

./configure --enable-fpm --with-mysqli

到这里基本安装php7就没什么大问题了,期间在./configure的时候可能会提示确实某些包,百度然后yum安装就好了

2.安装mysql

yum install mysql mysql-devel

然后会下载安装相应的mariadb版本

接着安装 yum install mariadb-server (我也不知道为什么mysql没有mysql-server)

安装完mariadb服务器版就多了mysql用户组,然后就进行权限赋值

chmod -R mysql:mysql /var/lib/mysql

接着设置开机启动以及启动
systemctl enable mariadb.service
systemctl start mariadb.service

然后运行 mysql -uroot

最后设置密码

UPDATE mysql.user SET Password=PASSWORD('password') where USER='root';
flush privileges;

解决echarts上axislabel不会自动换行的问题

Introduce

许多人使用百度的echarts.js时候会出现数据名太长覆盖的情况,newline-echarts.js能够很好解决这种换行问题
github地址

Usage

newline(option, 6, 'yAxis')

  • 参数一:是你的option

  • 参数二:是多少个字就换行

  • 参数三:是x轴还是y轴 可选项 'yAxis' OR 'xAxis'

Example

var chart = echarts.init(document.getElementById("main"));
<script src="js/echarts.js"></script>
var option = 
{
    # your options
}

option = newline(option, 6, 'yAxis')
chart.setOption(option)

参考图片

vim 设置以及常用插件安装

cd ~/.vim #没有就 mkdir ~/.vim
git clone https://github.com/heulizeyang/vim.git
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
wget http://hanc.cc/.vimrc ~/.vimrc
vim ~/.vimrc
:BundleInstall

.vimrc 下载链接

git中更新fork到最新

切换到分支
git checkout $branch

查看现在所属分支
git branch

自己fork下来的代码更新至最新源码
git remote add $name https://github.com/Hanccc/typecho-material-theme.git

git fetch $name

git pull $name branch

pip install scrapy 中遇到的一些坑

想下个scrapy去加深自己的爬虫功力,结果在pip3.4 install scrapy 的时候遇到问题了

首先在执行时输出了这句

Requirement already satisfied (use --upgrade to upgrade)

也就是需要去更新

pip3.4 install --upgrade scrapy

此时弹出错误

ERROR: b'/bin/sh: xslt-config: command not found\n'

通过参考 点击此处跳转 得到了启发

先执行 whereis xslt-config 查看是否有此命令

发现 xslt-config: ,也就是冒号后面是空的

执行
yum install libxslt-devel

再次查看
whereis xslt-config

发现此时有了数据了

再执行
pip3.4 install xml

pip3.4 install scrapy

以上是Linux的,Windows下要如何解决呢?

stackoverflow

这个方法也就是去官方下载 whl 通过 pip install 安装就成功了

yum 更新 git 到1.8.3版本

yum update git 时发现源比较落后,便开始寻求更新方法(以前就弄过太久没弄又忘了。。。)

得出了以下的解决方法

1、下载repo, -o 也就是 --output-file, 把下面链接下载的放到某位置上

wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitlab-org/gitlab- recipes/raw/master/install/centos/PUIAS_6_computational.repo

2、这个是下载GPG KEY

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias

3、验证key是否安装成功

rpm -qa gpg*

4、验证yum是否正常

yum repolist

这步过后可能会出现异常情况,显示 Cannot retrieve repository metadata (repomd.xml) for repository: nginx

假若出现这个,执行 yum clean all 和 yum makecache即可

接着 yum update

yum update git

git --version #1.8.3

ik分词器的安装

一、IK简介

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。

IK Analyzer 2012特性:

1.采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式;

2.在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力。

3.2012版本的智能分词模式支持简单的分词排歧义处理和数量词合并输出。

4.采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符

5.优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在2012版本,词典支持中文,英文,数字混合词语。

二、安装IK分词插件

假设读者已经安装好ES,如果没有的话,请参考ElasticSearch入门 —— 集群搭建。安装IK分词需要的资源可以从这里下载,整个安装过程需要三个步骤:

1、获取分词的依赖包

通过git clone https://github.com/medcl/elasticsearch-analysis-ik,下载分词器源码,然后进入下载目录,执行命令:mvn clean package,打包生成elasticsearch-analysis-ik-1.2.5.jar。将这个jar拷贝到ES_HOME/plugins/analysis-ik目录下面,如果没有该目录,则先创建该目录。

2、ik目录拷贝

将下载目录中的ik目录拷贝到ES_HOME/config目录下面。

3、分词器配置

打开ES_HOME/config/elasticsearch.yml文件,在文件最后加入如下内容:

index:
analysis:

analyzer:      
  ik:
      alias: [ik_analyzer]
      type: org.elasticsearch.index.analysis.IkAnalyzerProvider
  ik_max_word:
      type: ik
      use_smart: false
  ik_smart:
      type: ik
      use_smart: true

index.analysis.analyzer.default.type: ik

ok!插件安装已经完成,请重新启动ES,接下来测试ik分词效果啦!

三、ik分词测试

1、创建一个索引,名为index。

curl -XPUT http://localhost:9200/index

2、为索引index创建mapping。

curl -XPOST http://localhost:9200/index/fulltext/_mapping -d'
{

"fulltext": {
         "_all": {
        "analyzer": "ik"
    },
    "properties": {
        "content": {
            "type" : "string",
            "boost" : 8.0,
            "term_vector" : "with_positions_offsets",
            "analyzer" : "ik",
            "include_in_all" : true
        }
    }
}

}'

3、测试

curl 'http://localhost:9200/index/_analyze?analyzer=ik&pretty=true' -d '
{
"text":"世界如此之大"
}'

显示结果如下:

{
"tokens" : [ {

"token" : "text",
"start_offset" : 4,
"end_offset" : 8,
"type" : "ENGLISH",
"position" : 1

}, {

"token" : "世界",
"start_offset" : 11,
"end_offset" : 13,
"type" : "CN_WORD",
"position" : 2

}, {

"token" : "如此",
"start_offset" : 13,
"end_offset" : 15,
"type" : "CN_WORD",
"position" : 3

}, {

"token" : "之大",
"start_offset" : 15,
"end_offset" : 17,
"type" : "CN_WORD",
"position" : 4

} ]
}