分类 常用工具 下的文章

git是一个很好的代码管理工具,有些时候有些文件,比如缓存等我们是不需要被管理的,但是有时候我们在创建项目的时候不小心会添加上。当我们要去掉的时候,一般会想到的是修改.gitignore这个文件,但是当我们将 .gitignore 文件修改配置好后,却疆场的不能失效。导致我们以后每一次修改都会上传一些无用的文件,很是麻烦。这是因为 .gitignore 只能忽略那些没有被追踪(track)的文件,因为 git 存在本地缓存,如果文件已经纳入了版本管理,那么修改 .gitignore 是不能失效的。那么解决方案就是要将 git 的本地缓存删除,然后重新提交。下面小编说下解决的命令:

git rm -r --cached .
git add .
git commit -m "update .gitignore"

如何取消萤石云视频加密并获取直播地址

小编最近在项目中使用到了海康威视的摄像头做直播,发现海康威视的摄像头可以直接接入到萤石云,进行直播,而且也可以进行回放十分的方便,但是获取直播后的地址发现播放不了,显示视频加密了,那么我们就得把视频解密,可以参考萤石云开发文档 https://open.ys7.com/doc/zh/book/index/user.html
下面就是小编用Python写了个解决办法:

deviceSerial = "xxxxx"
validateCode = "xxxxx"
token = "xxxxx"
datas = {"deviceSerial": deviceSerial, "validateCode": validateCode, "accessToken": token}
#发起请求,关闭加密
r = requests.post("https://open.ys7.com/api/lapp/device/encrypt/off", data=datas)
print(r.text)
#数据转换成json
codeJson = r.json()
#获取返回码
code = codeJson['code']
#如果返回码为'10002'(accessToken异常或过期),则重新获取accessToken,重新请求关闭视频加密,并且保存请求内容
if code == '10002':
    #根据appKey和appSecret获取accessToken
    datas = {'appKey': video.appkey,'appSecret': video.appsecret}
    r = requests.post("https://open.ys7.com/api/lapp/token/get", data=datas)
    keyJson = r.json()
    data = keyJson['data']
    #提取accessToken
    accessToken = data['accessToken']
    datas = {'deviceSerial': deviceSerial,'validateCode': validateCode}
    datas['accessToken'] = accessToken
    token = accessToken
    #重新请求关闭视频加密
    r = requests.post("https://open.ys7.com/api/lapp/device/encrypt/off", data=datas)
    #保存请求内容
    print(r.text)
# 获取直播地址
datas = {'accessToken': token, 'deviceSerial': deviceSerial, 'quality': 2, 'protocol': 4}
r = requests.post("https://open.ys7.com/api/lapp/v2/live/address/get", data=datas)
video.livetext = json.loads(r.text).get('data')

苹果电脑如何同时登录多个微信或QQ呢,首先说一下都是可以的,小编之前也是觉得QQ肯定可以,微信吗够呛,因为用过windows的小伙伴都知道,QQ你点击多次,就可以打开多个QQ,而且可以实现多个账号的登录,但是微信就不行,微信你点击多次打开的还是那个,如果实现多个微信登录的话,就得借助第三方的软件,挺麻烦的,不过今天小编发现,在苹果电脑上,QQ和微信都可以实现多开,也就是可以同时登陆多个。

苹果电脑(mac)同时登录多个微信

  • 首先我们说下微信如何同时登陆多个,相对QQ来说微信稍微麻烦一丢丢。我们首先需要打开终端就是下面这个应用,苹果电脑自带的,绝对都有,好好找下就能找到。实在是找不到的话就用搜索同时按“⌘”和“空格”这两个按钮,输入终端,也能打开。
    终端.png
  • 然后输入

    open -n /Applications/WeChat.app/Contents/MacOS/WeChat
  • 然后就打开了第二个微信登录页面了,你只要点击切换账号,扫码登录就可以了,这时候你已经登录两个微信了。但是也会打开另外一个终端,这个终端不能关闭哦,除非你退出了这个微信,否则只要你关闭了这个终端就会退出第二个微信了。

苹果电脑(mac)同时登录多个QQ

QQ就比较简单了,打开QQ后,直接按快捷键command+N就可弹出新的登陆界面,按多少次,出来多少个。

macOS升级至macOS Big Sur 后,我们使用brew安装或者更新软件的时候会出现Error: Your CLT does not support macOS 11.2.的错误,我们只需要重新安装下xcode-select就可以解决了。
解决办法:
输入以下命令

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install 

这时候就会提示安装 xcode-select,在弹出框里我们点击安装,然后就弹出协议,我们再点击同意。然后就等待安装完毕就可以了。

小编发现最近在使用git diff这个命令的时候,有些代码明明没有修改,却标识修改过,末尾加上了个^M。很奇怪啊,我们先说下^M的由来:
这个是由于 Windows 和 Unix 下的换行符不一致导致的,Windows 下,换行符是 \r\n,在 Unix 下换行符是 \n。如果我们用把一个文件的换行符换成 Windows 的换行符就会出现这样的问题,实际上 ^M 就是 Windows 下的换行符中的 \r 部分。因为 Unix 下的换行符是 \n,所以当一个用 Windows 下的换行符的文件放在 Unix 下的时候,单行的最后一个字符就变成了 \r\r 在 ASCII 码中是 0xD,而 0xD 在 VIM 和 cat -v 则刚好被显示为 ^M,这次明白了吧。

解决办法:
我们可以git diff的时候忽略换行符的差异:

git config --global core.whitespace cr-at-eol

飞鹅标签机是支持打印图片的,不过只能识别黑色,灰色居然给忽略了,毕竟是热敏打印机,只能打印黑色,不知道是不是刚出来的原因,无论是官方的文档,还是提供的DEMO,都不是很完善,特别是打印图片的,只提供了PHP的DEMO。可惜小编是用Python写的,下面小编分享下,Python的案例:
注意:官方这么要求图片的:图片二进制数据,需配合标签使用,最佳效果为不大于224px的正方形(宽高都为8的倍数)黑白图,支持jpg、png、bmp,不能超过10K。 小编提醒大家:图片一定要用正方形的。

#coding:utf-8

import time
import hashlib
import requests
import io
from requests_toolbelt import MultipartEncoder

def printLabelMsg(qr_addredd, serial):
    # 初始化标签大小
    # content = '<SIZE>60,40</SIZE>'
    content = ""
    content += '<IMG x="200" y="30">'
    content += '<TEXT x="280" y="55" font="12" w="2" h="2" r="0">打印图片</TEXT>'
    STIME = str(int(time.time()))#不需要修改
    LOGO = "本地图片路径"
    params = {
        'user':******,
        'stime':*******,
        'sig':signature(STIME),
        'apiname':'Open_printLabelMsg',
        'sn':******,
        'content':content,
        'times': TIMES,
        'img': (LOGO, open(LOGO, 'rb'), 'application/jpeg')
    }
    m = MultipartEncoder(params)
    response = requests.post('http://api.feieyun.cn/Api/Open/', data=m,headers={'Content-Type': m.content_type}, timeout=30)
    code = response.status_code #响应状态码
    if code==200:
        con_str=str(response.content, encoding = "utf-8")  
        content=eval(con_str)
        if(content.get('ret')!=0):
            raise RuntimeError(con_str)
        print(response.content)#服务器返回的JSON字符串,建议要当做日志记录起来
    else:
        raise RuntimeError('code{}'.format(code))

下面小编提供下官方客服给的PHP的案例:

<?php


function printLabelMsg($user, $skey, $sn, $content, $times = 1)
{
    $url = 'http://api.feieyun.cn/Api/Open/';
    $stime = time();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, [
        'user' => $user,
        'stime' => $stime,
        'sig' => sha1($user.$skey.$stime),
        'apiname' => 'Open_printLabelMsg',
        'sn' => $sn,
        'content' => $content,//这里就是配合使用的IMG标签
        'times' => $times,
        'img' => new \CURLFile('test.jpg')
    ]);
    $headers = array('Content-Type: multipart/form-data;');//传图
     curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    $response = curl_exec($ch);
    curl_close($ch);

    var_dump( $response );
}

printLabelMsg('*************', '*******************', '**********', '<img x="50" y="10">');//USER,UKEY,打印机编号

不知道大家有没有这样的经历,换服务器的时候,网站的文件,数据库都得先备份,下载下来,然后再上传到新的服务器,重新进行配置,很是麻烦,所以不要轻易换服务器。今天在帮朋友迁移网站的时候,发现宝塔面板里面提供了迁移工具的宝塔一键迁移API版本。不知道为啥加API,反正就是好用就行了。下面小编说下使用方法以及注意事项:

环境准备:

两台服务器上都要安装宝塔面板,这个小编两个服务器的宝塔版本都是最新的(7.5.1)。还是建议大家升级到最新版本。
迁出的服务器: 安装宝塔一键迁移API版本,在软件商店里面安装就可以。(官方说:安装之前在首页点击一下修复)。
迁入的服务器: 只要保证面板版本必需>=6.9.5就可以了。

开始迁移

  • 迁入机器: 打开面本的API,点击面板设置-->API接口,获取接口API,并且吧迁出机器的ip放到白名单里面
    1.png
  • 迁出机器: 点击宝塔一键迁移API版本里面的设置,输入迁入机器的ip和刚刚获取的API。
    3.png
  • 检查环境,如果两个机器环境不一样,迁入机器缺什么都会提示的,按照提示装上就可以了。
    4.png
  • 选择要迁移的数据库,FTP,和网站就可以了。
    5.png
  • 接下来就是等待了
    6.png

注意: 迁出机器要留足够的空间,因为网站文件是要压缩的,不然没办法迁移。
努力

我们在使用微信小程序开发工具进行测试的时候发现使用chooseVideo或者是chooseMedia的时候,会出现"chooseVideo:fail DEMUXER_ERROR_NO_SUPPORTED_STREAMS: FFmpegDemuxer: no supported streams"这样的错误,看大家在社区已经反映过了,官方给出的答复是正在修复,所以现在也没有比较好的解决方案。我们可以使用老版本进行测试,下面小编就给大家提供下小编使用的版本,这个版本的缺陷就是,在MacOS Big Sur出现频繁崩溃的问题,也不是十分好用。

系统:MacOS Big Sur
工具版本: 微信开发者工具1.03.2011120
问题: chooseVideo或者是chooseMedia,出现"chooseVideo:fail DEMUXER_ERROR_NO_SUPPORTED_STREAMS: FFmpegDemuxer: no supported streams"

下载地址: https://developers.weixin.qq.com/community/develop/doc/0000c4f9440410caa11ab51cd5b801

在使用vueCli的脚手架工具创建完项目后,然后倒入模块的时候出现了error 'XXX' is defined but never used这样的错误,这是由于我们使用了eslint规范,ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。这就导致了运行时候出现的错误。解决办法:

在package.json文件内加入如下代码:然后保存重启项目。

"rules": {
    "generator-star-spacing": "off",
    "no-tabs":"off",
    "no-unused-vars":"off",
    "no-console":"off",
    "no-irregular-whitespace":"off",
    "no-debugger": "off"
},

在使用npm安装包,以及使用cli脚手架创建项目的时候的时候出现了NPM Error:gyp: No Xcode or CLT version detected!这样的错误,而且一般发生在macOS Catalina系统中,不过项目可以继续运行,不过听有些大神说会影响效率,还是解决了比较好。解决办法:
使用xcode-select --install命令进行尝试修复,如果成功了就不用管了。

但是有时候会出现这样的错误
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

解决办法,先卸载,再安装:

sudo rm -rf $(xcode-select -print-path)
xcode-select --install

有时候安装不上,但是系统就会提醒你升级,然后进行升级就可以了。完美解决。