/--- date: 2017-05-31 21:30:43 +0800 categories: 技术 ---/

Snippet Magic

最近更新:2018/09/11


# php中文字母表(A-Z)排序

foreach ($words as &$item) {
    $item = iconv('UTF-8', 'GBK//IGNORE', $item);
}
asort($words);
foreach ($words as &$item) {
    $item = iconv('GBK', 'UTF-8//IGNORE', $item);
}

# 离线安装pecl拓展
# 1. download pecl Tarball, eg:
wget http://pecl.php.net/get/yaf-3.0.7.tgz
# 2. pear进行安装,eg:
pear install yaf-3.0.7.tgz
# 3. 根据提示修改php.ini配置,eg: 增加一下内容
extension=yaf.so 

# 写法一
set -euxo pipefail

# 写法二
set -eux
set -o pipefail

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
free -m
df -h
du -sh `ls`

# 编程语言内置web服务器汇总

# 1. php
# 使用当前目录
php -S 0.0.0.0:4000
# 使用其他目录,比如 /home/www/test
php -S 0.0.0.0:4000 -t /home/www/test/

# 2. python
cd /home/www/test
python -m SimpleHTTPServer 8080

# php 实时输出

set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('Content-Type: text/html; charset=utf-8');
header('X-Accel-Buffering: no');

# 自动登录功能脚本示例

#!/usr/bin/expect -f
set timeout 30
spawn mysql -h 127.0.0.1 -P 3306 -uroot -p
expect "Enter password:"
send "\n"
set timeout 300

expect "Welcome to the MySQL"
send "SET NAMES UTF8;\n"
expect "mysql>"
send "show databases;\n"
expect "mysql>"
send "use test\n"
expect "mysql>"
send "show tables;\n"

interact {
    -reset \032 {
        send_user "expect exit!\n"
        exec kill -STOP [pid]
    }
}

# 查看了linux系统版本
lsb_release -a

# 重排Mac Launchpad顺序
defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock

# 后台任务
# 1. python
nohup python -u test.py > nohup.out 2>&1 &

# Mysql
# 1. 设置编码
SET NAMES UTF8;

# 2. 批量替换字段内容
update demoed set image=replace(image, 'http://demo.cn’, 'https://demo.org’) where 1 and image like 'http://demo.cn%’ limit 1;

# Sed字符串批量替换
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`

# 批量更改目录下(包括子目录)文件权限
find . -type f -exec chmod a-x {} \;
find . -type f -name "*.sh" -exec chmod a+x {} \;

# Git使用
# 1. 配置示例
git config --global user.email “example@163.com"
git config --global color.ui true
git config --global format.pretty 'format:"%h - %an, %ad: %s"'
git config --global format.pretty 'format:%Cred%h%Creset - %C(yellow)%d%Creset %Cgreen(%ad) %C(bold blue)<%an>%Creset %s'
git config --global log.date iso

# 2. 恢复单个文件的历史版本
git log demo.php  // 首先查看该文件的历史版本信息,记录下需要恢复的commit版本号:如 9aa51d897
git reset 9aa51d897 demo.php  //恢复该文件
git commit -m "revert old file" //提交git

# Tar打包、解包
tar -h -zcvf demo.tar.gz demo  // -h选项指明包括软链,下同
tar -h -zxvf demo.tar.gz

# 查看某个端口是否被占用
lsof -i:端口号

# 查看进程运行的完整路
ls -l /proc/PID  // 输出结果中:
                 // * cwd符号链接的是进程运行目录
                 // * exe符号连接就是执行程序的绝对路径
                 // * cmdline就是程序运行时输入的命令行命令
                 // * environ记录了进程运行时的环境变量
                 // * fd目录下是进程打开或使用的文件的符号连接

# 随机9个base64编码的字符串
openssl rand 9 -base64

# 保存vim编辑的没有权限的文件
:w !sudo tee %

详细原理