brew å·¥å ·åç § Homebrew è¿è¡å®è£ ã
å®è£ PHP72 æ¥ä»£æ¿ç³»ç»èªå¸¦ç PHPã
brew install [email protected]
brew link [email protected] --force
brew install [email protected]
brew link [email protected] --force
brew install [email protected]
brew link [email protected] --force
brew install composer
#å
å®è£
ä¸ä¸ cmake
brew install cmake
#å®è£
MySQL
brew install [email protected]
#æ·»å ç¯å¢åé
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
#å¯å¨ MySQL
brew services start [email protected]
#åå§å MySQLï¼è®¾ç½®å¯ç ç¸å
³ç
mysql_secure_installation
MySQL çèªå¨è¡¥å ¨åè¯æ³é«äº®å·¥å ·ã
brew install mycli
brew install redis
#å¯å¨ Redis
brew services start redis
brew install nginx
sudo mkdir /cores
sudo chown root:admin /cores
sudo chmod 1775 /cores
sudo chmod o+w /cores
ulimit -c unlimited
lldb -c /cores/core.37676
é³éå亮度è°èæ¶å¤±
killall ControlStripFix auto-paste on return failure
tccutil reset All com.runningwithcrayons.Alfredgit commit --amend
git reset HEAD~
git remote set-url origin [email protected]:UserName/Repository.git
git remote rm origin
git remote add origin [email protected]:UserName/Repository.git
#github
git remote add origin [email protected]:UserName/Repository.git
#ç äº
git remote set-url --add origin [email protected]:UserName/Repository.git
git reset --hard HEAD^
git add .
git commit
#强æ¨
git push -f origin <branch_name>#æ·»å 䏿¸¸ä»åº
git remote add upstream [upstream_url]
#fetch
git fetch upstream
#å°upstream/<branch_name> mergeå°æ¬å°å½å忝
git merge upstream/<branch_name>
#åæ¶å«å¿äºpushå°èªå·±çgithubä»åº
git push origin <branch_name>git cherry-pick commitIdgitçssh使ç¨22端å£ä¸å¯ç¨æ¶ï¼å¯ä»¥ä½¿ç¨443端å£
vim ~/.ssh/config
#åå
¥
Host github.com
Hostname ssh.github.com
Port 443vim ~/.ssh/config
#åå
¥
Host github.com
HostName github.com
User git
ProxyCommand nc -v -x 127.0.0.1:1086 %h %p!> 注æé ç½®æä»¶å ç 127.0.0.1:1086 éè¦åæ¬å° SS 客æ·ç«¯çææ´é²ç æ¬å° Socks5 çå¬å°å å æ¬å° Socks5 çå¬ç«¯å£ ä¸è´
使ç¨SwooleçHttp\Serveræ¥ä½ä¸ºWebæå¡ï¼æ§è¡GitHub/GiteeçWebHook
git rebase -i HEAD~[number]
# example : git rebase -i HEAD~4
# HEADï½4çå«ä¹æ¯ä»å¤´é¨å¼å§è¿½æº¯4æ¡è®°å½
æ§è¡åè¿å
¥ç¼è¾æ¨¡å¼ï¼å°éè¦å缩çcommitåé¢çpickæ¹ä¸ºsquash
# åæ¶
git rebase --abort
# å 为å²çªææçè¯ æ§è¡continue
git rebase --continue
# 强æ¨
git push -f origin <branch_name>
git remote prune origin
git branch -r -d origin/<branch_name>
git push origin :<branch_name>
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D# æ¬å°åæ¯éå½å
git branch -m oldName newName
# å°éå½ååç忝æ¨éå°è¿ç¨
git push origin newName
# å é¤è¿ç¨çæ§åæ¯
git push --delete origin oldName
git branch --unset-upstream
git branch --set-upstream-to=origin/<branch_name> <branch_name>
è¿ç¨åæ¯å¼ºæ¨åï¼æ¬å°æä»¶å²çªï¼éè¦ä½¿ç¨è¿ç¨æä»¶è¦çæ¬å°æä»¶æ¶ä½¿ç¨ã
git fetch --all
git reset --hard origin/<branch_name>
find . -type d -empty -exec touch {}/.gitignore \;
find ./ -type f -name '.gitignore' -delete
#å°test忝ä¸ç代ç å®å
¨è¦çdev忝
git checkout dev
git reset --hard origin/test
git push -f
#commit-id 为è¦å é¤çcommitçä¸ä¸ä¸ªcommitå·
git rebase -i commit-id
#è¦å é¤çcommitä¹åçæ¹ä¸ºdrop
git push -f
git filter-branch --env-filter \
'if [ $GIT_COMMIT = f70cf6dc1dabb4ad0523a3259681b1e0fe43a788 ]
then
export GIT_AUTHOR_DATE="Sun Apr 4 09:30:01 2021 +0800"
export GIT_COMMITTER_DATE="Sun Apr 4 09:30:01 2021 +0800"
fi'
git log --pretty=format:"%h" | head -1
https://git-scm.com/docs/pretty-formats
echo 'http://username:password@githost' >> ~/.git-credentials
# æææä»¶
git diff > xxx.patch
# æå®æä»¶
git diff file1 file2 > xxx.patch
# åºç¨patch
git apply xxx.patchgit diff master dev --stat --name-only
git diff xxxxxx xxxxxx --stat --name-onlygit log --author="username" --after="2022-08-01 00:00:01" --before="2022-09-15 23:59:59" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; donegit shortlog -s -n git tag -d <tagname>git push origin :refs/tags/<tagname>git checkout branchName -- filepathgit format-patch -1 commitId -o ~/GitHub/sy-records/path
git apply --reject patchfileè·¯æå¤è¿ï¼åªæå¿ç¥éï¼
æç¾çæ ç¨ï¼æ¯ä¸æçç»åï¼
åæèµ°ä¸å»ï¼ä¸æ¢¦æ³è åè¡ï¼
{
"nickname": "æ²å",
"contact": {
"email": "52o[at]qq52o.cn",
"weibo": "@ä½ é£"
},
"location": "Xi'an",
"skills": ["PHP", "Swoole", "Linux", "Python", "WordPress"],
"tags": ["天秤ç·", "æç²", "è·¯é£è¿·"]
}
echo "\033[32m绿è²\033[0m";
echo "\033[4;31mä¸å线红è²\033[0m";
echo "\007ååº'å~'ä¸å£°\033[0m";\033[0m å
³éææå±æ§
\033[1m 设置é«äº®åº¦
\033[4m ä¸å线
\033[5m éªç
\033[7m åæ¾
\033[8m æ¶é
\033[30m è³ \033[37m è®¾ç½®åæ¯è²
\033[40m è³ \033[47m è®¾ç½®èæ¯è²
\033[nA å
æ ä¸ç§»nè¡
\033[nB å
æ ä¸ç§»nè¡
\033[nC å
æ å³ç§»nè¡
\033[nD å
æ 左移nè¡
\033[y;xH设置å
æ ä½ç½®
\033[2J æ¸
å±
\033[K æ¸
é¤ä»å
æ å°è¡å°¾çå
容
\033[s ä¿åå
æ ä½ç½®
\033[u æ¢å¤å
æ ä½ç½®
\033[?25l éèå
æ
\033[?25h æ¾ç¤ºå
æ
åæ°åæä»£è¡¨çé¢è²å¦ä¸ï¼
40:é»
41:深红
42:绿
43:é»è²
44:èè²
45:ç´«è²
46:深绿
47:ç½è²
30:é»
31:红
32:绿
33:é»
34:èè²
35:ç´«è²
36:深绿
37:ç½è²
38:å¨ç¼ºçç忝é¢è²ä¸è®¾ç½®ä¸å线
39:å¨ç¼ºçç忝é¢è²ä¸å
³éä¸å线
0:ä¸ä½¿ç¨ææ
1:é«äº®(å æ·±)æ¾ç¤º
2:ä½äº®(åå¼±)æ¾ç¤º
4:ä¸å线
5:éªç
7:åæ¾(æ¿æ¢èæ¯è²ååä½é¢è²)
8:æ¶é
function proxy() {
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
echo -e "\e[32mOpen proxy successfully.\e[0m"
}
function unproxy() {
unset http_proxy https_proxy all_proxy
echo -e "\e[31mClose proxy successfully.\e[0m"
}è¿å
¥ nginx é
ç½®æä»¶çç®å½ï¼ç¼è¾nginx.conf
å¨http {}éå ä¸server_tokens off;
ç¼è¾ php-fpm
é
ç½®æä»¶ï¼å¦fastcgi.confæfcgi.conf
#æ¾å°ï¼
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
#æ¹ä¸ºï¼
fastcgi_param SERVER_SOFTWARE nginx;éè½½ nginx é ç½®å³å¯
# è³å°éè¦ä¸ä¸ª Server èç¹ï¼å¤ä¸ªé
ç½®å¤è¡
upstream http_servers {
# HTTP Server ç IP å 端å£
server 127.0.0.1:9501;
server 127.0.0.1:9502;
}
server {
# çå¬ç«¯å£
listen 80;
# ç»å®çåå
server_name proxy.host.name;
location / {
# å°å®¢æ·ç«¯ç Host å IP ä¿¡æ¯ä¸å¹¶è½¬åå°å¯¹åºèç¹
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 转åCookieï¼è®¾ç½® SameSite
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
# æ§è¡ä»£ç访é®ç宿å¡å¨
proxy_pass http://http_servers;
}
}
# http://mmbiz.qpic.cn/mmbiz_png/2lUhY9SosBGOtQLz66sZrjlyoqIT3A9sVeU7YQcVlpbZ9GicFkmM8Ctht1bFhXvPp7Uhtj0fU4JlRakqn4ViaspA/0?wx_fmt=png
# /mmbiz_png/2lUhY9SosBGOtQLz66sZrjlyoqIT3A9sVeU7YQcVlpbZ9GicFkmM8Ctht1bFhXvPp7Uhtj0fU4JlRakqn4ViaspA/0
location ~ /(.*)mmbiz(.*)/ {
if ($http_referer !~* ^https://qq52o.me) {
return 403;
}
proxy_pass http://mmbiz.qpic.cn;
proxy_set_header Host "mmbiz.qpic.cn";
proxy_set_header Referer "";
}
# https://profile-avatar.csdnimg.cn/f9dd455bf70d483299fb65e2e840d359_kaiyuanshe.jpg
# /avatar-csdnimg/f9dd455bf70d483299fb65e2e840d359_kaiyuanshe.jpg
location /avatar-csdnimg/ {
if ($http_referer !~* ^https://qq52o.me) {
return 403;
}
proxy_pass https://profile-avatar.csdnimg.cn/;
proxy_set_header Host "profile-avatar.csdnimg.cn";
proxy_set_header Referer "";
}
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ \.php/?.*$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}]]>docker stop $(docker ps -qa)
docker rm $(docker ps -qa)
docker rmi --force $(docker images -q)
docker rmi $(docker images -f dangling=true -q)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
https://developer.aliyun.com/article/110806
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "xxxxxxxx"
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-composeè·åæä¸ªå ¬ä¼å·çäºç»´ç ï¼éè¦å ¬ä¼å·çå¾®ä¿¡å·æåå§IDã
ä½¿ç¨æ¥å£ï¼https://open.weixin.qq.com/qr/code?username=å¾®ä¿¡å·æåå§ID
sy-recordsgh_200a99619f7fhostnamectl set-hostnameéåº ssh éæ°ç»å½åçæ
yum install iftop
apt-get install iftopiftop -i eth0
vim /etc/ssh/sshd_config
#ä¿®æ¹portåéå¯
service sshd restart
if nonce=$(type php-config 2>&1) ;then
echo "exist"
else
echo "not exist"
exit $?
fi
suto apt install net-tools wireless-tools network-manager
nmcli dev wifi connect "" password ""// åå
è¿å¶ åè¿å¶
var_dump(hexdec('abc'));
var_dump(dechex(2748));
// äºè¿å¶ åè¿å¶
var_dump(bindec('110011'));
var_dump(decbin(51));
// å
«è¿å¶ åè¿å¶
var_dump(octdec('77'));
var_dump(decoct(63));ç¨äºå½ä»¤è¡è§£æjsonæ°æ®ï¼ææ¡£
curl -s https://api.github.com/repos/swoole/swoole-src/releases/latest | jq '.tag_name' -rcurl -s https://api.github.com/repos/swoole/swoole-src/tags | jq ".[].name" -r | grep v4.5 | head -1