pip更新失败的解决

通过pip更新pip时提示权限不足,重新使用系统管理员权限执行后报错。

PS C:\WINDOWS\system32> pip install -U pip
Script file 'd:\anaconda3\Scripts\pip-script.py' is not present.

这个时候是pip因为更新一半文件受损导致的

解决办法通过easy_install重新安装pip

easy_install pip

等待重新安装完成pip后就可以重新执行pip的更新

PS C:\WINDOWS\system32>  easy_install pip
WARNING: The easy_install command is deprecated and will be removed in a future version.
Searching for pip
Reading https://pypi.org/simple/pip/
Downloading https://files.pythonhosted.org/packages/fe/3b/0fc5e63eb277d5a50a95ce5c896f742ef243be27382303a4a44dd0197e29/pip-20.2b1-py2.py3-none-any.whl#sha256=b4e230e2b8ece18c5a19b818f3c20a8d4eeac8172962779fd9898d7c4ceb1636
Best match: pip 20.2b1
Processing pip-20.2b1-py2.py3-none-any.whl
Installing pip-20.2b1-py2.py3-none-any.whl to d:\anaconda3\lib\site-packages
Adding pip 20.2b1 to easy-install.pth file
Installing pip-script.py script to d:\anaconda3\Scripts
Installing pip.exe script to d:\anaconda3\Scripts
Installing pip3-script.py script to d:\anaconda3\Scripts
Installing pip3.exe script to d:\anaconda3\Scripts
Installing pip3.8-script.py script to d:\anaconda3\Scripts
Installing pip3.8.exe script to d:\anaconda3\Scripts

Installed d:\anaconda3\lib\site-packages\pip-20.2b1-py3.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

一点遗憾

世界很大,每天认识100个朋友,一辈子也认识不完一个城市的人。

和网上一个朋友一不小心把联系方式删了,基本来说也找不回,感觉还是很遗憾。

联系时候没想过多个联系方式,联系不上了后才感觉备份的重要。

认识是缘分

联系不上也是缘分

世界那么大,能认识就是运气。

对自己的一点反思

一直以来,我都觉得自己属于兴趣广泛,或者更准确的说是好奇心种,兴趣来的快去的也快,每个都没有很好的坚持下去。

渐渐的变成了一个大家口中的“百事通”,各类知识都了解一点。

但,这样对我直接发展真的是好事吗?


现在很多时候,自己其实也没感觉,为什么很多事情就知道了,特别在现在这个信息爆炸的时代,各种碎片化的信息可能充斥在各个角落。

这些知识给我带来的帮助是可以从更多的角度看待一件事情,不容易偏激。

但我觉得会有一个重要的缺陷:无法在某一领域创造价值。

特别当还是需要奋斗以在人群、团队中展现出来时候,无法在某一方面行程绝对的亮点。

所以,我在这里要给自己定下一个目标。

或者准确说这个目标在几年前我就给自己定下来,但是没有实现下来。

当时我做了一页PPT,写了一个问题”什么是我的一技之长”。

现在我要给自己定下,今年、明年一定要在一个领域做到用有一个一技之长。

做到不用综合考虑,就这一个方面的技能就能作为核心竞争力。

到写到这里,我还是没有能想好,这个一技之长到底是在什么领域,但我这个周末一定要定下一处,然后努力这个方面,可能不会成功,但是这次我决定多试试。

我已经不小,感觉和小时的梦想越行越远

年少时,感觉自己不是普通人

长大后,才发现普通人才是大多数

慢慢地,开始认命

难道就要这样下去

不,我还想实现小时候的梦想

以后给大家说“小时候的梦想,我都实现了”

小时候的我,谢谢你,还有梦。

解决WIN10蓝牙鼠标无法自动连接

前面时间开始蓝牙鼠标每次电脑重启和休眠后都无法自动连接,反反复复试了删除、添加还是不能解决。每次开机只能手动点开蓝牙连接,新蓝牙连接后才会连接上。

鼠标用的是雷柏的MT750,一款仿着罗技做的鼠标,用来办公很不错,让我以为是鼠标有问题已经准备重新买一个。

在网上查询试了几种办法后,发现这是WIN10 1803 版本更新后的一个问题,如果蓝牙设备的芯片不属于微软认证的,就不会自动连接。

这里使用一个曲线的方法,添加BLEConsole 到服务自动启动。

这是个能够控制蓝牙 4.0 BLE(低功耗)设备的控制台,运行后:只要它在后台,鼠标就能自动连接上。

首先下载BLEConsole 

https://github.com/sensboston/BLEConsole/releases

或者走我下载放在云盘的

下载BELConsole

下载后将BELConsole放到Windows目录下

C:\Windows

然后下载instsrv.exe 和 srvany.exe 

下载instsrv和srvany

下载后将程序放到

C:\WINDOWS\SysWOW64

用管理员权限运行

C:\WINDOWS\SysWOW64\instsrv.exe BLEConsole C:\WINDOWS\SysWOW64\srvany.exe

然后打开注册表(Win+R 打开「运行」,输入regedit),进入 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BLEConsole,右击 BLEConsole ,新建项,命名为 Parameters。在 Parameters 下新建几个「字符串值」:

  • 名称:Application,内容:C:\Windows\BLEConsole.exe
  • 名称:AppDirectory,内容:C:\Windows
  • 名称:AppParameters,内容留空

也可以下载注册表文件导入

https://www.lanzous.com/iawz0zc

最后在服务中将几个服务改成自动启动

设置完毕后运行 services.msc,找到 BLEConsole,双击将启动类型设置为「自动」。

然后再找到「蓝牙支持服务」和「蓝牙音频网关服务」,均设置为「自动」。

Screen后台执行,防止VPS SSH链接中断

最近在通过SSH链接VPS执行长时间编译工作时,SSH断开后编译停止导致失败,该如何解决这个问题。

发现通过使用Screen虚拟终端管理器,建立新终端,这样进程就可以保留在后台运行,哪怕SSH断开也不会影响。

安装Screen

sudo apt-get install screen

使用Screen

使用Screen比较简单,只需要掌握建立、查询、切换不同终端命令即可。

首先建立新的终端

screen -S newterminal

-S参数后接新终端的名称,替换newterminal为你想要叫的终端名,例如lede

建立后会自动切换到新终端,此时执行命令就在新终端,并且退出SSH连接后,终端依旧保留后台执行。

列出已创建的终端

再第二次SSH链接VPS后,默认进入系统新建的终端,此时执行命令列出后台执行了终端

screen -ls
列出终端

在图中可以看到我有个两个后台执行的终端和终端开始的时间

切换到运行中终端

接下来切换到后台运行中的终端

screen -r newterminal

newterminal为终端名称,可在列表中查看或者直接输入定义终端时取的名称

终端名称相同怎么办?

可以前面图片看到,我的两个终端都叫做lede,那么这里切换应该如何进入某一个喃。

这里切换时我们需要加上可选参数[pid]

screen -r pid.newterminal

pid的值可以在screen -ls中查看

例如现在我切换到第二个名为lede的终端

通过pid选择同名终端
screen -r 106305.lede

切换后可以看到我的这个进程是昨晚编译openwrt的lede

整个执行时间超过4小时,进入终端后可以看到已经编译完成

切换入后台终端

退出Screen终端

退出Screen中建立的终端,回到SSH默认终端

执行

exit
退出Screen终端

显示screen is terminating 退出screen的终端连接,将会回到SSH默认的终端

其他参数

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业关闭。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

其余详情可以到官网查看

GNU’s Screen 官方站点:http://www.gnu.org/software/screen/

ubuntu 查看CPU占用情况

安装使用htop

首先通过apt-get安装一个htop

sudo apt-get install htop

输入root账户密码

安装htop

如果apt-get安装失败,可以下载源码编译安装

https://sourceforge.net/projects/htop/

安装后使用

htop

运行查看CPU占用情况

htop查看进程

通过上下键选择进程,F9可以杀掉进程,F10退出Htop

展现出来的各个项目

  • PID:进行的标识号
  • USER:运行此进程的用户
  • PRI:进程的优先级
  • NI:进程的优先级别值,默认的为0,可以进行调整
  • VIRT:进程占用的虚拟内存值
  • RES:进程占用的物理内存值
  • SHR:进程占用的共享内存值
  • S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
  • %CPU:该进程占用的CPU使用率
  • %MEM:该进程占用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间
  • COMMAND:进程启动的启动命令名称

偷懒法

如果只是想查看下进程不想安装新的软件

可以运行系统自带的top,在终端中输入

top
top

让树莓派推送IP到微信

树莓派没连接屏幕情况下,连接网络怎样快速获得IP地址。

查了下网上现在有小屏幕显示、DDNS绑定还有包括让树莓派播放音频把IP地址读出来。

这里准备用Python写一个小程序

之前我一直在用 Server 酱的推送服务,推送消息到微信中,这里想到可以让树莓派每次开机联网后将IP通过 Server 酱推送到微信。

这里需要用到:

  • 1.树莓派(我手里是树莓派4,多少没关系能联网就行)
  • 2.Server酱账号一个
  • 3.Python程序一个

操作步骤

首先到Server酱注册账号,并绑定要接收消息的微信

http://sc.ftqq.com/

可使用GitHub一键登入 ,登录后首先绑定需要接收消息的微信

点击【微信推送】,扫描二维码关注公众号绑定接收微信号

Server酱首页选择微信推送

然后选择发送消息,获取SCKEY

Server酱参数说明

Server酱支持Get或者Post推送消息,这里我们选择Post可以定义标题和内容

接下来准备Python代码(自己瞎写的 能用就行?)

#!/usr/bin/env python
# coding=utf-8

#通过Sever酱推送树莓派IP到微信
#By 沙糖桔

import os
import sys
import time
import socket
import subprocess
import requests
import urllib3
import ssl



def getLocalIP():
    ip = None
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('114.114.114.114', 0))
        ip = s.getsockname()[0]
    except:
        name = socket.gethostname()
        ip = socket.gethostbyname(name)
    if ip.startswith("127."):
        cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''
        a = subprocess.Popen(
            cmd,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        a.wait()
        out = a.communicate()
        ip = out[0].strip().split("\n")  # 所有的列表
        if len(ip) == 1 and ip[0] == "" or len(ip) == 0:
            return False
        ip = "over".join(ip)
    return ip


def pushtoWx(text,desp):
    s = requests.Session()
    ssl._create_default_https_context = ssl._create_unverified_context  # 关闭SSL证书验证
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36','Content-type': 'application/x-www-form-urlencoded'}
    push_url = r'https://sc.ftqq.com/[替换为你的SCKEY].send'  # Server 推送地址
    values = {'text': text, 'desp': desp}
    rp = s.post(push_url, data=values, headers=headers,verify=False)
    html = rp.text
    print(html)


def push_ip(ip):
    pushtoWx('树莓派地址:'+ip,'')


if __name__ == '__main__':
    count = 0
    time.sleep(10)#开机连接等待十秒钟后执行
    while True:
        ip = getLocalIP()
        print(ip)
        if ip == False:
            print("获取ip错误")
        else:
            count += 1
            push_ip(ip)
        if count == 2:
            break
        time.sleep(3)

然后将脚本加入开机执行

sudo vim /etc/rc.local

在 exit 0 之前添加一行:

sudo /usr/bin/python /home/pi/push_ip_wx.py &

保存后重启树莓派

启动后联网10秒推送消息到微信

Server酱推送的消息
收到的IP地址

拿到IP后就可以SSH、VNC链接树莓派开始玩耍。

树莓派4上手体验

最近在群辉里面用虚拟机弄了一个Openwrt的旁路由,感觉速度提升了很多,又看到树莓派已经出到4了,想弄一台来玩玩。

在万年淘宝找了一家买了一个树莓派4

树莓派4配置感觉可玩性很高,

1个千兆网卡、2个USB3.0、2个USB2.0、WIFI模块支持5G、2个MiniHDIM接口支持同时输出4K,并且最好的是供电接口改为了type-c,一下就感觉高级了许多。

一起买了一套亚克力外壳和一个小散热风扇

安装散热风扇前进系统试了下CPU温度在45°

这个外壳设计很有意思,通过多层亚克力板叠上去,上电进入系统重新看了下温度

#查看系统CPU温度
/opt/vc/bin/vcgencmd measure_temp

加了风扇后温度32°,很完美。

然后将HDIM换下来,用VNC来连接。

明天准备连上ADS-B信号接收,看看头顶飞过的飞机信息。

持续写作

快节奏的社会,碎片化的信息,现在越来越难静下心提高一个技能。

我是个不擅长文字的人,不管是说话还是写作都很弱。

开了站来回折腾了一两周服务器、网络等等,最后发现没有可下笔的内容。

还是给自己立一个Flag:

每周都能持续记录点各种内容

不为别的,希望过几年可以看到自己成长的轨迹。

在知乎之前看到一个问题,匿名回答写了1万字,我自己都觉得有点神奇。

写的是个故事,也可以说是回忆,还有很多朋友留言催更,现在算来也种精力。

现在也开篇新的来写写故事

《那时的网还很慢》

哈哈哈,可能是篇沙雕文。

关闭Chrome QUIC,提升Youtube、Google访问速度

QUIC是什么

在默认的Chrome浏览器中,默认开启了一项QUIC的功能。通常的TCP协议连接需要完成与服务器端的握手操作,而UDP协议是无连接协议,数据发出后默认服务端会收到,但为了保证数据的可靠性需要应用层确认相关情况。

QUIC协议就可以在1-2个数据包中完成连接的建立。

想详细了解,可以看下维基百科中的解释:

https://zh.wikipedia.org/zh-hans/%E5%BF%AB%E9%80%9FUDP%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5

Youtube、Google等网站支持QUIC协议,当使用Chrome访问时,默认会尝试QUIC协议连接,不过国内UDP协议可能收运营商网络问题出现丢包,最后反而导致速度下降。

所以如何关闭QUIC

在Chrome地址栏输入

QUIC菜单地址
 chrome://flags/#enable-quic 
QUIC选项

Experimental QUIC Protocol从默认调整为Disable

点击重启,大功告成。

重新打开Google、Youtube的页面速度提升。