mac usage

初始化

homebrew

1
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

node

参见 前端/node

工具

homebrew

commond line tools

1
2
3
4
5
6
7
8
9
10
# install
$ xcode-select --install

# delete
$ sudo rm -rf `xcode-select -p` # 一般会在文件夹 /Library/Developer/CommandLineTools 内

# Problems
## Can’t install the software because it is not currently available from the Software Update server.
# 手动下载
https://developer.apple.com/download/more/?=command%20line%20tools

问题

拷贝文件导致图标变灰无法访问

尝试 这里 无果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 仅适用文件夹
# 命令行输入如下内容
exitFun() {
echo "ERROR: failed, due to $1"
exit 1
}

fix() {
[ ! -d "${1}" ] && exitFun "target is not folder"
mv "${1}" "${1}_back"
mkdir "${1}"
mv "${1}_back"/* "${1}/"
mv "${1}_back"/.[^.]* "${1}/"
rmdir "${1}_back"
}

# 修复,输入 fix <文件夹目录> OR 输入 fix [拖拽文件夹至终端]
$ fix <path>

mysql/mariadb usage

[toc]

MySQL

**注 : **有些操作和操作系统有关。

CLI登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql -h localhost --port 3306 -u root -p --socket=/var/lib/mysql/mysql.sock  

#### 示例
bovenson@MBP:~/Git/notes/MySQL$ mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

启动/停止

1
2
3
4
### Mac
sudo /usr/local/mysql/support-files/mysql.server start # 启动
sudo /usr/local/mysql/support-files/mysql.server stop # 停止
sudo /usr/local/mysql/support-files/mysql.server restart # 重启

修改密码认证规则

1
2
3
4
5
6
7
SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
FLUSH PRIVILEGES;

修改密码

SET PASSWORD

1
2
3
4
5
# set password for 用户名@localhost = password('新密码'); 
set password for root@localhost = password('123');

# 修改
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';

系统用户

添加

1
2
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

赋予权限

1
2
3
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

刷新权限

1
> FLUSH PRIVILEGES;

允许远程连接

设置bind-address

1
2
3
4
5
6
7
# mysql
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# mariadb
/etc/mysql/mariadb.conf.d/50-server.cnf

# 修改bind-address
bind-address = 0.0.0.0

添加/修改账户

添加/修改账户允许的Host%

命令行远程登录mysql服务器

1
mysql -u root -p -h 10.154.0.43 -P 3306

设置

1
2
> USE mysql;
> UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';

workbench

时间设置默认当前

默认设置为CURRENT_TIMESTAMP

添加管理账户

lower_case

错误

Can’t get hostname from your ip address

Just add below in my.ini or my.cnf.

1
2
[mysqld]
skip-name-resolve

使用

执行 SQL 文件

1
> SOURCE /path/to/file.sql;

创建数据库

1
> CREATE DATABASE 'database-name';

Pretty 查询结果

1
> select * from <table> \G

安装

CentOS

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
40
41
42
# 下载 rpm 源
$ wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

# 安装 rpm 源
$ yum localinstall mysql57-community-release-el7-11.noarch.rpm

# 安装 MySQL
$ yum install mysql-community-server

# 启动 MySQL
$ systemctl start mysqld

# 开机启动
$ systemctl enable mysqld
$ systemctl daemon-reload

# 获取root密码
$ cat /var/log/mysqld.log | grep password
... [Note] A temporary password is generated for root@localhost: ...

# 登录mysql
$ mysql -u root -p
# 输入获取到的临时密码

# 重置root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '{password}';

# 更新密码
mysql > UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root' AND Host='%';

# 新建远程登录用户
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '{password}';

# 授权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

# 刷新权限
mysql> FLUSH PRIVILEGES;

# 防火墙放行3306端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd --reload

导入导出

参数

1
2
-B, --databases : 导出创建语句
--skip-add-locks : 导出的文件中跳过添加 LOCK TABLE 语句

示例

1
2
3
$ mysqldump -uroot -p<password> -h 'host' -P port <database>  # 导出数据库
$ mysqldump -uroot -p<password> -h 'host' -P port <database> <table> # 导出表
$ mysqldump -uroot -p<password> d <database>

术语

编码

  • OOP 面向对象编程
  • AOP 面向切面编程
  • IOC 控制反转
  • DO (Data Object) 数据对象
  • DTO (Data Transfer Object) 数据传输对象
  • BO(Business Obejct) 业务对象
  • AO(Application Object) 应用对象
  • VO(View Object) 显示层对象
  • POJO (Plain Ordinary Java Object) 简单Java对象
  • DAO(Data Access Object) 数据存取对象

并行计算

  • MPP(Massively parallel Processing) 大规模并行处理

架构

  • RPS (Request Per Second) 每秒请求量
  • Ad-Hoc Query 海量实时计算/查询
  • OLAP (Online Analytical Processing) 联机分析处理
  • OLTP (Online Transaction Processing) 联机事务处理
  • LSM-tree (Log Structured-Merge Tree) 是一种分层,有序,面向磁盘的数据结构
  • WAL (Write-ahead logging) 预写式日志
  • LSN (Log Sequence Number) 日志序列号

大数据

  • BI (Business Intelligence) 智能商业
  • ETL (Extract-Transform-Load) 数据仓库技术,用于描述将数据从源端经过抽取、转换、加载到目的端的过程
  • UDF & UDAF & UDTF
    • UDF (User-Defined Function) 用户自定义函数
    • UDAF (User-Defined Aggregation Function) 用户自定义聚合函数
    • UDTF (User-Defined Table Generating Function)
  • HSAP (Hybrid Serving and Analytical Processing) 混合服务/分析处理
  • HTAP (Hybrid Transactional/Analytical Processing) 混合事务/分析处理
  • DW (Data Warehouse) 数据仓库 参考一 参考二 数据仓库分层
    • DM (Data Mart) 数据集市
    • 分层
      • ODS (Operational Data Store) 操作性数据 / 数据准备层 / 数据运营层
      • DW 数据仓库层
        • DWD (Data Warehouse Detail) 细节数据层
        • DWB (Data Warehouse Base) 数据基础层
        • DWS (Data Warehouse Service) 数据服务层
      • ADS (Apoplication Data Service) 应用数据层
  • Wide Table 宽表,业务主题相关的指标、维度、属性关联在一起的一张数据库表

广告

  • CVR(Conversion Rate) 转化率
  • CPA(Cost Per Action) 广告计费方式,指按广告投放实际效果收费
  • CPM(Cost Per Mille) 成本/千人,在投放广告领域,是一种按投放量收费的计费方式

产品

  • PV(page view) 页面浏览量,用户多次打开同一页面累计多次
  • UV(unique visitor) 独立访客,一天内访问网站去重用户数
  • IP 独立IP,一天内访问网站去重IP数
  • VV(video view) 视频播放量,统计周期内视频被播放次数
  • CV(content view) 内容播放量,是一个周期内,视频被打开且成功播放次数

口语

  • trade-offs 权衡

hexo usage

访问

官网

安装

1
$ npm install hexo-cli -g

初始化站点

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

文件说明

1
2
3
4
5
6
7
8
.
├── _config.yml # 配置
├── package.json # 依赖描述
├── scaffolds # 模板文件夹
├── source # 资源文件夹,除_posts外,_开头文件夹会被忽略
| ├── _drafts
| └── _posts
└── themes # 主题

Front Matter

参数 描述 默认值
layout 布局
title 标题
date 建立日期 文件建立日期
updated 更新日期 文件更新日期
comments 开启文章的评论功能 true
tags 标签(不适用于分页)
categories 分类(不适用于分页)
permalink 覆盖文章网址

注意

分类

Hexo不支持多统计分类,如下分类。

1
2
3
categories:
- Diary
- Life

会使分类Life成为Diary的子分类,而不是并列分类。

如需为文章添加多个分类,尝试如下方式。

1
2
3
4
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]

示例

1
2
3
4
5
categories:
- Diary
tags:
- PS3
- Gamesa

生成静态文件

1
$ hexo generate

Github Webpage

  • 创建仓库,仓库名称为 ${user}.github.io

  • 上传静态文件至仓库

  • 仓库设置中配置 GitHub Pages

    • 此时,可通过域名 ${user}.github.io 访问
  • 配置自定义域名

    • 在 Hexo source 目录下,创建CNAME文件,写入自定义域名

    • 在仓库设置中配置 GitHub Pages 中的Custom domain 中输入自定义域名 [可能无需该操作]

    • 域名服务商配置CNAME,以阿里云为例

静态资源

1
2
3
4
5
6
7
8
# _config.yml 中开启/添加如下配置
post_asset_folder: true
marked:
prependRoot: true
postAsset: true

# 放置: 在文档相同路径下,创建和项目相同名称文件夹,静态资源放置于此
# 引用示例: ![](doc/img.jpg) OR ![](img.jpg)

vsftpd usage

安装

1
2
# ubuntu
$ sudo apt install vsftpd

配置

配置文件路径

1
2
# ubuntu
/etc/vsftpd.conf

配置项

1
listen=YES    # 是否监听网络端口, 默认NO

用户

本地用户

1
local_enable=YES    # 允许使用本地用户账号密码登录

虚拟用户

仅用于登录ftp服务器的账号密码。

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
40
41
42
# [required] 安装 pam & htpasswd
$ sudo apt install libpam-pwdfile apache2-utils

# [required] 创建目录
$ sudo mkdir /home/ftp
$ sudo mkdir /etc/vsftpd

# [required] /etc/vsftpd.conf 修改为如下配置
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER # root, 登录前确保用户目录已存在
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
allow_writeable_chroo=YES

# [required] 创建ftp用户
$ sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user-name # then enter password
# -c: create, 如需额外添加,去除该参数

# [required] /etc/pam.d/vsftpd 替换为如下内容
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

# [required] 创建没有shell登录权限的本地用户 vsftpd,用于虚拟用户登录
$ sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
# [optional] 验证
$ id vsftpd

# [optional untested] 用户独立配置,配置文件路径为 ${user_config_dir}/${user},以 wii 为例
$ sudo vim /etc/vsftpd_user_conf

# [required] 重启vsftpd
$ sudo service vsftpd restart

参考

书籍分享

心理学

  • 缓解压力 / 摆脱迷茫系列
    • 《人间值得》,中村恒子、 奥田弘美
    • 勇气三部曲,岸见一郎
      • 《被讨厌的勇气》
      • 《被拒绝的勇气》
      • 《幸福的勇气》
  • 马斯洛心理学系列
    • 《动机与人格》
    • 《人性能达到的境界》
    • 《寻找内在的自我:马斯洛谈幸福》

科幻

  • 《三体》系列,刘慈欣

小说

  • 《杀死一只知更鸟》,哈珀·李
  • 《追风筝的人》,卡勒德·胡赛尼

车载好物

安全

  • 灭火器
  • 搭电线
  • 安全锤
  • 墨镜

露营

  • 天幕
  • 帐篷
  • 露营车
  • 折叠椅
  • 折叠桌
  • 充气床垫
  • 电动充气泵(可以选吹吸一体的吸尘器)
  • 折叠水桶

新能源车

  • 放电枪

清洁

  • 吸尘器(选吹吸一体的可以给充气垫充气
  • 折叠水桶
  • 抹布

其他

  • 脚垫
  • 后备箱垫
  • 屏幕钢化膜
  • 车门防撞条
  • 号码牌
  • 车罩(防晒、防刮)
  • 遮阳板
  • 雨伞
  • 手电筒

踩坑

  • 买了个杂牌手持吸尘器,交了智商税,吸力太小、续航太短,考虑直接买二手的家用吸尘器

音乐分享

尽量分享符合大众口味的音乐,或舒服,或别致,或优美。当然,难免加载一些不好察觉的个人喜好。

纯音乐

  • Kenny G,绕不过的萨克斯艺术家
    • Alone
    • Jasmine Flower
    • Morning
    • My Heart Will Go On
  • 哏德全,葫芦丝
    • 月光下的凤尾竹

国语

  • 周深
    • 一缕执念
    • 听我说
    • 大鱼
  • 孙伯纶 - 河流,好声音第一次听,后来出了录音棚录制版本

粤语

  • Beyond,无需多言
    • 光辉岁月
    • 海阔天空

外语

  • Passenger - Let Her Go,舒服