KayChen

记录技术生活的点点滴滴

0%

https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速

设置记住密码(默认15分钟):

1
git config --global credential.helper cache

如果想自己设置时间,可以这样做:

1
git config credential.helper 'cache --timeout=3600'

这样就设置一个小时之后失效

长期存储密码:

1
git config --global credential.helper store

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker pull mysql:latest
docker run --name mysql -e MYSQL_ROOT_PASSWORD=kaychen -d docker.io/mysql
mkdir -p /opt/mysql/
mkdir -p /opt/mysql/conf
docker cp mysql:/var/lib/mysql/ /opt/mysql/
docker cp mysql:/etc/mysql/conf.d/mysql.cnf /opt/mysql/conf/
mv /opt/mysql/mysql /opt/mysql/data
docker rm -f mysql

docker run --name mysql \
-p 127.0.0.1:3306:3306 \
-v /opt/mysql/conf:/etc/mysql/conf.d/ \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=kaychen \
-d docker.io/mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker pull nginx
docker run -d --name nginx docker.io/nginx
mkdir /opt/nginx/wwwroot/
docker cp nginx:/etc/nginx/nginx.conf /opt/nginx
docker cp nginx:/etc/nginx/conf.d /opt/nginx
docker cp nginx:/usr/share/nginx/html /opt/nginx/wwwroot/
docker rm -f nginx
docker run --name nginx \
-p 80:80 \
-p 443:443 \
-v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/wwwroot:/home/wwwroot \
-v /var/log/nginx:/var/log/nginx \
--link php7:php7 \
-d docker.io/nginx
1
2
3
docker run -d --name php53 -v /home/wwwroot:/home/wwwroot -p 127.0.0.1:9000:9000 kaychen/php53 php-fpm
docker run -d --name php7 -v /home/wwwroot:/home/wwwroot docker.io/php:7.0-fpm
docker run -d --name nginx --link php7:php7 --link php53:php53 -v /home/wwwroot:/home/wwwroot -v /root/nginx/vhost:/etc/nginx/conf.d -p 80:80 docker.io/nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
app = Flask(__name__)

@app.route("/")
def hello():
return "Welcome to Flask!"

if __name__ == "__main__":
http_server = WSGIServer(('0.0.0.0', 5000), app)
http_server.serve_forever()

1.php安装markdown扩展
1
composer require michelf/php-markdown
2.php转化markdown为html
1
2
use \Michelf\MarkdownExtra;
$my_html = MarkdownExtra::defaultTransform($my_text);
3.页面加入语法高亮插件highlight.js
1
2
3
<link rel="stylesheet" href="//cdn.bootcss.com/highlight.js/8.5/styles/default.min.css">
<script src="//cdn.bootcss.com/highlight.js/8.5/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

参考资料:

  1. php-markdown
  2. 语法高亮插件-highlightjs

Nginx反向代理配置
1
2
3
4
5
6
7
8
9
10
11
12
server { 
listen 80;
server_name linkpod.cn www.linkpod.cn;
location / {
proxy_pass http://linkpod.sinaapp.com;
proxy_redirect http://linkpod.sinaapp.com/ /;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
error_log off;
}
}
Apache反向代理配置
1
2
3
RewriteEngine On 
RewriteBase /
RewriteRule ^(.*)$ http://linkpod.sinaapp.com/$1 [P]
Nginx负载均衡+反向代理配置
1
2
3
4
5
6
7
8
9
10
11
12
upstream shlnjr.com.cn {    
server 115.28.237.124:8000;
}
server {
listen 80;
server_name shlnjr.com.cn www.shlnjr.com.cn;
location / {
proxy_pass http://shlnjr.com.cn;
access_log off;
error_log off;
}
}

1.远程网络使用默认网关

在VPN网络适配器的属性里取消在远程网络上使用默认网关选项,保存后连接VPN

2.查看路由表

使用管理员权限运行cmd后查看路由表

1
route print
  1. 在接口列表中找到VPN的接口号
  2. 在IPv4 路由表中找到VPN的ip

3.添加永久静态路由表

1
route -p add 192.168.1.0 mask 255.255.255.0  vpnip  if 接口号

1.新建数据库.数据表 toh.accounts

2.配置项目路径

vim generator.php
$_map中增加一条["数据库名" => ["数据库名","core文件前缀名","项目路径"]]

1
['toh' => array('toh', 'Toh', '/data/zhengkai.chen/toh')]

3.添加数据库配置文件路径

vim configs/config.php
增加数据库名toh到循环载入列表

1
2
3
foreach (array('contacts', 'cv', 'hunter', 'oa', 'mail', 'chance', 'cms', 'chinahr', 'passport', 'career', 'crawler','gsystem','green_liepin', 'clickstream', 'proxy', 'grab', 'icdc_1', 'icdc_allot', 'pay', 'package', 'grab_mail','toh') as $db){
include dirname(__FILE__). sprintf('/database/%s.schema.php', $db);
}

4.新建数据库配置文件

vim configs/database/toh.schema.php

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
<?php
$g_dao_map['toh']['accounts'] = array(
'path'=>'account', //目录名
'dao'=>'account', //dao文件名
'equal_search_items' => "",
'like_search_items' => "",
'like2_search_items' => '',
'fetch_name_columns' => array(),
'data_maps_many' => array(),
'data_maps_one' => array(),
'kv_data_maps_one' => array(),
'kv_data_maps_many' => array(),
'model' =>'account/Model_account', // model文件路径名
'has_one' =>"",
'has_many' =>"",
'foriegn_key' =>'',
);
$g_controller_map['toh']['accounts'] =array(
'path' => '',
'SUGGEST' => FALSE,// 是否需要suggest
'controller' => 'account', //控制器名
'LOGIC' => 'account/Logic_account', //logic文件路径名
'ILIST_ITEM' => array(),
'ILIST_ITEM2' => array(),
'SEARCH_INTVAL_ITEM' => array(),
'SEARCH_ITEM' => array(),
'SEARCH_CONDITIONS' => array(),
);

5.生成controller

1
2
#php generator.php 数据库名 controllers 表名
php generator.php toh controllers accounts

6.生成model

1
2
#php generator.php 数据库名 models 表名
php generator.php toh models accounts

7.生成dao

1
2
#php generator.php 数据库名 daos 表名
php generator.php toh daos accounts

一、Mysql修改密码

知道原密码
1
mysqladmin -u用户名 -p原密码 password 新密码
不知道原密码

关闭数据库并以跳过授权表方式启动

1
mysqld_safe --skip-grant-tables &

启动之后进入数据库执行更新SQL

1
UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';

二、Mysql授权

1.远程授权
1
grant all on *.* to root@'%'identified by 'password';
2.查看授权
1
show grants form root@'10.1.10.%'
3.删除授权
1
revoke all on *.* from root@'%'; 
4.刷新授权
1
flush privileges; 
5.查看账号
1
select Db,Host from mysql.db; 
6.查看当前账号
1
select user();
7.根据条件删除账号
1
2
delete from mysql.db where Host="10.1.0.%";
delete from mysql.db where Db="dx7db_game01";

三、Mysql日志

1.查看binlog列表
1
show master logs;
2.按名称来删除binlog
1
purge master logs to 'mysql-bin.001970';
3.按时间来删除binlog
1
purge master logs before '2016-07-01 17:36:55';

四、Mysql复制表

1.此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来
1
CREATE TABLE A LIKE B
2.此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来
1
CREATE TABLE A AS SELECT x,x,x,xx FROM B LIMIT 0

这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构。
两种方式在复制表的时候均不会复制权限对表的设置。比如说原本对表B做了权限设置,复制后,表A不具备类似于表B的权限。 留空,接下来会探讨两种复制表的性能

1.封装curl方法:

1
2
3
4
5
6
7
8
9
function curl($url,$post_data){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$data = curl_exec($curl);
return $data;
}

2.使用方法:

1
2
3
4
5
6
7
$url = 'http://www.kaychen.cn/test';
$post_data = array(
'timestamp'=>time(),
'signature'=>$signature,
'user_id'=>1,
);
$data = curl($url,$post_data);

1.列表推导式书写形式

[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

2.举例说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python
# -*- coding: utf-8 -*-

li = [1,2,3,4,5,6,7,8,9]
print [x**2 for x in li]
print [x**2 for x in li if x>5]
print dict([(x,x*10) for x in li])
print [ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8 ]
vec=[2,4,6]
vec2=[4,3,-9]
sq = [vec[i]+vec2[i] for i in range(len(vec))]
print sq
print [x*y for x in [1,2,3] for y in [1,2,3]]
testList = [1,2,3,4]
def mul2(x):
return x*2
print [mul2(i) for i in testList]

3.结果

[1, 4, 9, 16, 25, 36, 49, 64, 81]

[36, 49, 64, 81]

{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90}

[(5, 9), (7, 9), (9, 9)]

[6, 7, -3]

[1, 2, 3, 2, 4, 6, 3, 6, 9]

[2, 4, 6, 8]