Mac上清理Docker.qcow2文件的脚本

Docker.qcow2越来越大了,平时docker用的不多,来自谷歌搜索,如下:

#!/bin/bash
# Copyright 2017 Théo Chamley
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
# to whom the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

echo "This will remove all your current containers and images except for:"
echo ${IMAGES}
read -p "Are you sure? [yes/NO] " -n 1 -r
echo # (optional) move to a new line

if [[ ! $REPLY =~ ^[Yy]$ ]]
  then
  exit 1
fi

TMP_DIR=$(mktemp -d)
pushd $TMP_DIR >/dev/null
open -a Docker
echo "=> Saving the specified images"
for image in ${IMAGES}; do
  echo "==> Saving ${image}"
  tar=$(echo -n ${image} | base64)
  docker save -o ${tar}.tar ${image}
  echo "==> Done."
done

echo "=> Cleaning up"
echo -n "==> Quiting Docker"

osascript -e 'quit app "Docker"'

while docker info >/dev/null 2>&1; do
  echo -n "."
  sleep 1
done;

echo ""
echo "==> Removing Docker.qcow2 file"

rm ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
echo "==> Launching Docker"
open -a Docker
echo -n "==> Waiting for Docker to start"
  until docker info >/dev/null 2>&1; do
  echo -n "."
  sleep 1
done;
echo ""
echo "=> Done."
echo "=> Loading saved images"
for image in ${IMAGES}; do
  echo "==> Loading ${image}"
  tar=$(echo -n ${image} | base64)
  docker load -q -i ${tar}.tar || exit 1
  echo "==> Done."
done
popd >/dev/null
rm -r ${TMP_DIR}

laravel执行phpunit报错:Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable

laravel执行phpunit报错:

Illuminate\Contracts\Container\BindingResolutionException: Target 
[Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable

出现这个错误可能是本地的phpunit版本和项目的phpunit版本不一致导致的,因此方法有二:

  • 使用项目的phpunit,即将phpunit改成vendor/bin/phpunit
  • 升级项目的phpunit,或者降级本机phpunit

charles连接手机的问题

手机无法连接到电脑

可以用ping命令ping一下手机的IP试试连通性。

  • 关闭电脑和手机上的代理软件;
  • 关闭开启wifi几次之后,试试;
  • 关闭开启电脑的网络试试。

有连接记录但是显示unknow

  • 手机访问 chls.pro/ssl 安装证书;
  • 设置 -> 关于本机 -> 证书信任设置 开启刚才安装的证书;

chrome无法代理

  • 关闭switchomega插件

使用pecl安装php扩展

mac最近brew安装PHP扩展似乎不是很好使,于是想到使用pecl来安装了

pecl很大概率需要使用代理

下面的命令是安装php5.6版本的,具体安装什么版本可能需要去pecl.net网站上自己查看。

sudo pecl channel-update pecl.php.net
pecl search xdebug
sudo pecl install xdebug-2.5.5
sudo pecl install redis-2.2.8

删除mac中launchpad上的图标

首先,mac上所有的软件都是.app结尾的,在系统中,一般有两个目录含有.app文件,一个是 /Applications目录,这个目录的程序是所有用户共享的,还有一个目录是~/Applications/,这里面的程序只能自己使用

在launchpad上,一般长按程序图标,会出现经典的图标抖动界面,此时,点击图标左上角的x,即可删除,但是有的程序左上角没有x,那就只能在上面提到的两个目录里手动删除了。

有时删除后,发现launchpad上图标还在,那么执行这个命令:

defaults write com.apple.dock ResetLaunchPad -bool true && killall Dock

就解决了,这个命令会重置launchpad上的图标顺序,但是不会对系统照成伤害。

博客被人使用穷举法尝试登录

IP为“193.201.224.200”的这位兄弟不知道跟他有什么仇什么怨,一直在请求我的登录接口,企图进入到我的博客后台,遂暂时简单手动屏蔽一下这个IP吧,

本来打算在nginx层面屏蔽的,但是不够完美,而我的系统里的iptables也不是吃素的:

iptables -I INPUT -s 193.201.224.200 -j DROP
iptables --list

搞定,虽然我知道这篇文章发出来说有人都能看到,没关系,我这一个小小博客,啥也有没有,就几篇水文而已,博客运行也没什么风什么浪,我到是想见识见识。

TCP三次握手的目的

本人CS不是很专业,这是我今晚随便琢磨得到的想法,各位笑看即可:

很多人知道TCP三次握手是为了建立可靠的网络连接,那什么叫做可靠的网络连接呢?

可靠的连接,就是要确保双方都既会发送tcp包、也会接收tcp包,这里的“会”其实有两个含义,一是能做到,二是乐意去做。

假设A为请求方,B为服务方,假设他们之间用一种叫做“tcp”的语言沟通。

第一次A向B发送一个包:意思为,A证明自己会“说”tcp语言(发送tcp包);

B收到A的包后,向A发送第二个包:意思为,我听懂了你说的tcp语言(接收tcp包),并且向A证明自己也会说tcp语言(发送tcp包);

注意,此时,A证明了自己会说,B证明了自己会听也会说,但是A还没有证明自己会听呀!

于是A收到B的包后,向B发送了第三个包:意思为:你发给我的包,我能听懂(接收tcp包)

此时,A和B都证明了自己都会发送tcp,也能接收tcp