Android|MIUI10 当前设备已被临时限制3-1


MIUI10在开启USB调试的过程中,提示:当前设备已被临时限制3-1

网上查的方案:
方案一:
http://bbs.zol.com.cn/sjbbs/d34002_84582.html

  1. 先登出你的 小米账号
  2. 再去点击 USB 安装选项
  3. 系统让你登入时候,选上同意条款

结果:不好使

方案二:
https://zhidao.baidu.com/question/181823929106110604.html

  1. 退出账号
  2. 重新打开,提示登录,尝试打开,失败
  3. 把开发者所有选项关闭,把开发者模式关闭,再重新usb调试
  4. 开发usb安装

结果:不好使

我自己的方案:
重新注册一个小米号,立马好使了,缺点是需要一个手机号

Posted in Android | Tagged , , , , , , , | Leave a comment

Linux|lnmp运行时间久了504 bad gateway

lnmp环境,一键安装,上面只跑了一个wordpress,压力也不大,每天几百个pv,但是基本五六天就会504,重启后又正常.
忍不住了,看了一下日志

大量php-fpm segfault错误

 kernel: [4383249.904122] php-fpm[29952]: segfault at 0 ip 00000000008213e0 sp 00007ffe2821e098 error 6 in php-fpm[400000+7b9000]

网上查问题,说有可能是php-fpm的backlog设置-1的问题

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

看了一下自己的配置,果断改成1024

listen.backlog = 1024

其实还有个参数可以添加

pm.max_requests = 200

一个php进程响应多少个请求自动退出,用来防止内存泄露问题

Posted in linux | Tagged , , , , , , , , , | Leave a comment

MIUI 8 的4种截图功能使用方法

MIUI8 的4种截图功能使用方法,对于刚刚入手的新用户来说,可能并不了解,一起来看下。

方法一:音量下键+任务键
这种方法非常简单,并且是依靠硬件按键进行截屏,不需要触碰屏幕。

方法二:通知栏下滑,选择截屏开关
此种方法是依靠通知栏,点击截屏开关后就会触发截屏,如果你觉得开关的位置不够醒目,还可以自定义的设置开关位置。

方法三:开启悬浮球,选择悬浮球中截屏开关
悬浮球中,截屏开关是默认处在中下方的位置,如果感觉点起来不方便,还可自定义设置其位置。

方法四:三指下滑快捷截屏
这是 MIUI 8 最新的功能,不需要任何设置,只需在屏幕任何处,三指下滑即可出发截屏。目前此功能已经上线体验版,在本周将会登录开发版。

方法 一二四都在miui10上测试了.好用

转自:
https://www.xiaomi.cn/post/2178695

Posted in Android | Tagged , , , , | Leave a comment

OSX|更换brew源解决下载慢问题


在Mac下,brew install xxx的时候,经常卡在Updating Homebrew...这步很长时间.
这是因为brew每次执行的时候,都会去github检查有没有更新造成很慢.

通过brew udpate -v命令可以观察到,影响brew速度的主要是三个git地址+一个下载:


https://github.com/Homebrew/brew.git
https://github.com/Homebrew/homebrew-core.git
https://github.com/Homebrew/homebrew-cask.git

HOMEBREW_BOTTLE_DOMAIN

查看配置

$ brew config
HOMEBREW_VERSION: 2.2.11-110-g0859115
ORIGIN: https://github.com/Homebrew/brew.git
HEAD: 0859115a2400b4548a52a8b67656601c46c64db5
Last commit: 17 hours ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core.git
Core tap HEAD: e0f4187b4e9aebf91624730aadc121a5510fa450
Core tap last commit: 3 hours ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_DEV_CMD_RUN: 1
CPU: octa-core 64-bit kabylake
Homebrew Ruby: 2.6.3 => /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3/bin/ruby
Clang: 11.0 build 1103
Git: 2.24.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 7.64.1 => /usr/bin/curl
Java: 1.8.0_60
macOS: 10.15.3-x86_64
CLT: 11.0.33.17
Xcode: 11.4

换成淘宝源

git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin  https://mirrors.aliyun.com/homebrew/homebrew-core.git

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles

换成官方

git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git

换成中科大

git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles

换成清华源

git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

参考: https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/

  • 问题处理

    • rm -fr ".git/rebase-apply"
    fatal: It seems that there is already a rebase-apply directory, and
    I wonder if you are in the middle of another rebase.  If that is the
    case, please try
    git rebase (--continue | --abort | --skip)
    If that is not the case, please
    rm -fr ".git/rebase-apply"
    and run me again.  I am stopping in case you still have something
    valuable there.
    Error: homebrew/cask/tcl-tk 8.6.9_1 is already installed
    To upgrade to 8.6.10, run brew upgrade homebrew/cask/tcl-tk

    解决

    $ cd $(brew --repo)
    $ brew -v install tcl-tk
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated Homebrew from e94fff894 to 0859115a2.
    No changes to formulae.
    Error: homebrew/cask/tcl-tk 8.6.9_1 is already installed
    To upgrade to 8.6.10, run brew upgrade homebrew/cask/tcl-tkbrew -v install tcl-tk
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated Homebrew from e94fff894 to 0859115a2.
    No changes to formulae.
    Error: homebrew/cask/tcl-tk 8.6.9_1 is already installed
    To upgrade to 8.6.10, run brew upgrade homebrew/cask/tcl-tk
Posted in Mac | Tagged , , , , , , , , , | Leave a comment

Python|统计函数执行时间的优雅用法


当应用规模大到一定程度,我们会开始关心,整体的响应时间,而整体的响应时间又是由单个函数的执行时间决定的,怎样统计函数执行时间呢?
很简单,开始的时候记录一次时间,结束的时候记录一次时间,两个时间相减,得到的就是函数执行时间,例子如下:

import time
def fun_run_time():
    time_start = time.time()
    print('sleep 3 start')
    time.sleep(3)
    print('sleep 3 end')
    time_end = time.time()
    print(f'fun_run_time use {(time_end - time_start):.2f} secends')

if __name__ == "__main__":
    fun_run_time()

执行这段代码,得到运行结果:

sleep 3 start
sleep 3 end
fun_run_time use 3.00 secends

time.sleep(3)就是我们正常的函数代码部分.至此,统计函数执行时间的目的是达到了,怎么优雅呢?
这里就要用到装饰器这个神奇的东西了.所谓装饰器就是在代码运行期间动态增加功能,英文名:Decorator

改进后的代码是这样的:

import time
import functools

def fun_run_time(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        time_start = time.time()
        res = func(*args, **kw)
        time_end = time.time()
        print(f'{func.__name__} use {(time_end - time_start):.2f} secends')
        return res
    return wrapper

@fun_run_time
def long_time_fun():
    print('sleep 3 start')
    time.sleep(3)
    print('sleep 3 end')
if __name__ == "__main__":
    long_time_fun()

执行结果:

sleep 3 start
sleep 3 end
long_time_fun use 3.00 secends

没错,执行结果是一样的,以后,如果想知道哪个函数的执行时间,直接在它的上面写上

@fun_run_time

就可以了.
装饰器的原理,网上搜索吧,装饰器的好处就是:在不修改原有函数的情况下,达到了统计原有函数使用时间的目的.

Posted in Python | Tagged , , , , , , | Leave a comment

Android|MIUI10.2.6 adb 调节屏幕亮度


在调试和自动化测试时,需要自动调节Android的屏幕调度,借助adb可以实现.

获取屏幕亮度范围

adb shell "dumpsys power | grep mScreenBrightnessSetting"
  mScreenBrightnessSetting=0
  mScreenBrightnessSettingMinimum=7
  mScreenBrightnessSettingMaximum=2048
  mScreenBrightnessSettingDefault=536

可以看到最小是7, 最大2048跟某些文章上说的最大255不一致

获取当前亮度

adb shell settings get system screen_brightness
204

设置屏幕亮度

adb shell settings put system screen_brightness 2048
Posted in Android | Tagged , , , , , , , , , , , , , | Leave a comment

Python|VSCode配合pipenv搞定虚拟环境

VSCode指定Python路径快捷运行py脚本之前写过了,这样配置有一个问题:所有的python脚本都使用的同一个python来执行的.现在是虚拟环境的天下,怎样做到不同的项目使用的不同的Python环境呢?
想做到这个也简单,关键三点
一.使用不同的VSCode打开不同的项目
二.虚拟环境以同样的文件夹名放在项目根目录如.venv
三.之前的python路径设置相对路径.venv/bin/python
预期目标两个:
一 使用Command+Shift+b运行时使用当前虚拟环境的python
二 py文件右键在终端中打开Open in Integrated Terminal时自动激活当前虚拟环境

因为笔者钟爱pipenv所以就以它创建虚拟环境演示了.

创建项目并将虚拟环境放在.venv

➜  Desktop mkdir c_test_py
➜  Desktop cd c_test_py
➜  c_test_py mkdir .venv
➜  c_test_py pipenv --python 3.8.2
Creating a virtualenv for this project...
Pipfile: /Users/rainbird/Desktop/c_test_py/Pipfile
Using /Users/rainbird/.pyenv/versions/3.8.2/bin/python (3.8.2) to create virtualenv...
⠸ Creating virtual environment...Already using interpreter /Users/rainbird/.pyenv/versions/3.8.2/bin/python
Using base prefix '/Users/rainbird/.pyenv/versions/3.8.2'
New python executable in /Users/rainbird/Desktop/c_test_py/.venv/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /Users/rainbird/.pyenv/versions/3.8.2/bin/python

✔ Successfully created virtual environment!
Virtualenv location: /Users/rainbird/Desktop/c_test_py/.venv
Creating a Pipfile for this project...
➜  c_test_py pipenv shell
Launching subshell in virtual environment...
 . /Users/rainbird/Desktop/c_test_py/.venv/bin/activate
➜  c_test_py  . /Users/rainbird/Desktop/c_test_py/.venv/bin/activate
(c_test_py) ➜  c_test_py python -V
Python 3.8.2
(c_test_py) ➜  c_test_py

通过上面可以看到,我们最后一个pipenv shell成功激活了当前目录下的.venv的虚拟环境

VSCode新建窗口打开新工程


或者直接将新创建c_test_py文件件拖到新容器也可以.

配置python路径为相对路径

VSCode菜单-终端->配置任务

将之前的绝对路径改成相对路径.venv/bin/python

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            //command + shift + b 运行时使用
            "label": "python",
            "type": "shell",
            "command": ".venv/bin/python",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

验证

在新开的文件夹里新建index.py并输出hello world

print('hello world !')


通过command+shift+b运行发现已经是使用的相对路径了.

在index.py上右键选择在终端中打开

也自动激活了当前虚拟环境,完美!!!

Posted in Python | Tagged , , , , , , | Leave a comment

VSCode|实用技巧:终端通过code . 打开当前目录

像笔者写Python的时候,都习惯命令行创建文件夹,然后再创建虚拟环境,然后再打开VSCode选择这个文件夹,其实VScode支持在终端,直接输入code .直接打开VSCode并打开当前文件夹,效率提高不少,记录一下.

  1. 启动VSCode
  2. 快捷键command+shfit+p打开命令面板
    输入:shell command
  3. 选择Install 'code' command in PATH command.

  1. 新开一个终端试试code .(不过我没新开也可以正常用了)

摘自VSCode官方
原文如下:
Launching from the command line
You can also run VS Code from the terminal by typing 'code' after adding it to the path:

Launch VS Code.
Open the Command Palette (⇧⌘P) and type 'shell command' to find the Shell Command: Install 'code' command in PATH command.
macOS shell commands

Restart the terminal for the new $PATH value to take effect. You'll be able to type 'code .' in any folder to start editing files in that folder.
Note: If you still have the old code alias in your .bash_profile (or equivalent) from an early VS Code version, remove it and replace it by executing the Shell Command: Install 'code' command in PATH command.

Posted in Python | Tagged , , , | Leave a comment

windows|windows10禁用自动更新

有时候做一些测试,所以虚拟机跑了一个windows10,但它经常隔三差五的自动更新,对我来说实在是浪费时间,决定把它给禁用了.

打开services.msc

直接点任务栏搜索 services.msc

当然,你也可以win键+r 调用出运行,再输入services.msc

或者你当前开关在cmd窗口呢,直接输入也可以

配置服务

找到Windows Update服务

双击

在弹出的对话框将 启动类型 设置成 禁用 然后应用
如果服务状态是运行中,记得手动点一下停止.
操作完,立马感觉windows速度都变快了.

Posted in windows | Tagged , , , , , , | Leave a comment

Python|VSCode快速运行Python代码


Visual Studio Code简称VSCode,是笔者钟爱的文本编辑器.开发Python也一直用它.不过我运行代码的时候,是直接Command+Shift+b运行当前文件,而小伙伴儿一直都是点右上角的运行,或者另开一个终端,python+文件名运行.本篇就回忆一下,我是怎么设置的.

配置task.json

在VSCode编辑窗口,同时按下
Command+Shift+p
然后输入:task,
选择任务:打开用户任务并回车

得到原始文件

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "echo Hello"
        }
    ]
}

直接删除替换为:

{
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            //command + shift + b 运行时使用
            "label": "python",
            "type": "shell",
            "command": "/Users/rainbird/.virtualenv_all/py3.8.2/bin/python",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

其中command是我常用的一个虚拟环境,你可以指定自己的python路径.
保存

见证奇迹

新建一个index.py
输入

print('hellow world')

然后同时按下 Command+Shift+b 就可以得到运行结果了.

Posted in Python | Tagged , , , , , , | Leave a comment