首页
关于我
友链
小程序
舔狗日记
小黑屋
音乐解锁
阿狸和桃子
Search
1
windows11系统自带VPN连接不上群辉VPN服务器问题
480 阅读
2
数字振镜XY2-100协议
452 阅读
3
使用ESP8266完成校园网WEB认证
444 阅读
4
将校园卡复制到小米手环
407 阅读
5
frp+softether_vpn实现外网访问校园网
286 阅读
技术
生活
登录
Search
标签搜索
qt
mqtt
FreeRTOS
stm32
iar
VPN
光猫破解
esp8266
群晖
VideoStation
exti
c++
eclipse
bootloader
pixhawk
遥控器
失控保护
ARM
NAS
ENPASS
AMENG
累计撰写
79
篇文章
累计收到
17
条评论
首页
栏目
技术
生活
页面
关于我
友链
推荐
舔狗日记
小黑屋
音乐解锁
阿狸和桃子
搜索到
72
篇与
的结果
2021-08-31
Typecho 网站域名更换方法
Typecho 网站域名更换,分成两部分,一部分是网站通用的域名更换的准备工作,另一部分是针对 Typecho 的网站域名更换。通用网站域名更换方法1、域名解析,把新网站域名解析到网站 IP 上2、修改 web 服务器配置文件,如 nginx.conf 、.htaccess、以及配置 SSL 证书等3、修改站点配置和网站内容Typecho 网站域名更换Typecho 网站的域名更换方法和上面的基本一致,在第三点上可能有一些通过数据库操作的便捷方法。对于网站配置和网站内容的修改,一种办法是进入到网站后台,挨个进行修改,只是这种方法太过于麻烦和耗时,另一种简易的办法是通过数据库直接进行修改,非常便捷,有遗漏的手动进行查漏补缺即可。以下 SQL 语句默认表前缀为 typecho_,若你的数据库表前缀不是 typecho_,请自行修改语句。修改 typecho_options 表将网站的设置里的域名替换成新的域名:```php UPDATE `typecho_options` SET `value` = '新域名地址' WHERE `typecho_options`.`name` = 'siteUrl' AND `typecho_options`.`user` =0; ```修改 typecho_contents 表将网站文章里的旧域名替换成新的域名:```php UPDATE `typecho_contents` SET `text` = REPLACE(`text`,'旧域名地址','新域名地址'); ```修改 typecho_users 表将管理员的个人网站进行替换```php UPDATE `typecho_users` SET `url` = REPLACE(`url`,'旧域名地址','新域名地址'); ```修改 typecho_comments 表对评论中的管理员的域名,和评论中的旧域名进行替换```php UPDATE `typecho_comments` SET `url` = REPLACE(`url`,'旧域名地址','新域名地址'); UPDATE `typecho_comments` SET `text` = REPLACE(`text`,'旧域名地址','新域名地址'); ```如果使用的域名邮箱,也建议进行更换```php UPDATE `typecho_comments` SET `mail` = REPLACE(`mail`,'旧域名地址','新域名地址'); ```
2021年08月31日
145 阅读
0 评论
0 点赞
2021-08-29
Git 常用命令
仓库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]配置# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"增加/删除文件# 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...分支# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]标签# 列出所有tag $ git tag # 新建一个tag在当前commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]查看信息# 显示有变更的文件 $ git status # 显示当前分支的版本历史 $ git log # 显示commit历史,以及每次commit发生变更的文件 $ git log --stat # 搜索提交历史,根据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 $ git log --follow [file] $ git whatchanged [file] # 显示指定文件相关的每一次diff $ git log -p [file] # 显示过去5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file] # 显示暂存区和工作区的差异 $ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD # 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示当前分支的最近几次提交 $ git reflog远程同步# 下载远程仓库的所有变动 $ git fetch [remote] # 显示所有远程仓库 $ git remote -v # 显示某个远程仓库的信息 $ git remote show [remote] # 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all撤销# 恢复暂存区的指定文件到工作区 $ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop其他# 生成一个可供发布的压缩包 $ git archive
2021年08月29日
159 阅读
0 评论
0 点赞
2021-08-29
群晖DSM7.0安装transmission汉化和修改账号密码
首先下载安装包手动安装transmission,下载地址。安装完后默认是9091端口,在内网测试能否打开,能打开后在光猫里或者路由器里开端口转发,这样就可以在外网访问了。域名加端口(已开DDNS),但由于transmission只能http,所以https会打不开,这时可以采用群呼的反向代理解决。控制面板→登录门户→高级→反向代理服务器。开了反向代理后要在光猫或者路由器里打开代理端口,如图上的10001端口,设置好之后就可以打开https://域名:10001访问了。汉化下载汉化包下载地址下载1.6版本通过WinSCP连接DSM,注意得使用ROOT账户,不然看不到文件夹。Transmission的web控制台模板在/volume1/@appstore/transmission/share/transmission,直接把web重命名为web1,把汉化解压出来的web上传到这个位置。然后刷新下Transmission就可以看到汉化的界面了。如果提示要更新就去github上下载作者的1.6.1版本同样方法上传上去就好了。改用户名和密码改密码前得先去套件中心停用Transmission。DSM7.0文件夹位置更换了,不在以前的文件夹。SSH连接群晖(先去群晖上打开SSH连接)putty等软件都可以。同样得用root账户登录。vim /volume1/@appdata/transmission/settings.json将rpc-password后的密码删掉改成你的明文密码就可以保存退出了。去套件中心启动Transmission就可以用新密码登录了。
2021年08月29日
43 阅读
0 评论
0 点赞
2021-08-28
QT中.和::和:和->作用
在学习C++的过程中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。1、A.B则A为对象或者结构体2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;4、:一般用来表示继承;
2021年08月28日
117 阅读
0 评论
0 点赞
2021-08-26
群晖Video Station刮削器使用指南
什么是刮削器或者搜刮器,又有什么作用呢?刮削器(也常被称为”web scrapers”),是一种专门自动从网络获取游戏、音乐、视频、电影、电视节目的数据信息(缩略图/海报/封面/原创或饭制作品)的软件。刮削器这种叫法总是让初学者感觉怪怪的,其实这种叫法是scrapers的英文直译,与“菜单”相类似。Video Station直译为视频工作站,顾名思义就是视频文件汇集整理播放的一个软件,NAS的本意不仅是存储数据,更要让你方便的使用数据。在日常生活中我们下载的电影电视剧文件的命名规则不统一,仅凭文件名称,我们其实也很难直观的辨别电影电视剧名称内容。而Video Station则为我们内置了刮削器,方便我们能迅速对视频文件进行预览。没使用刮削器前使用刮削器后最新版Video Station 2.4.9-1626支持TheTVDB和The Movie Database第三方刮削器原先Video Station自带的刮削器在大陆地区无法访问,原本还有安装豆瓣刮削器的方法也相继失效,在最新版Video Station中,群晖引入两个 TheTVDB 和 The Movie Database 第三方刮削器,但同样在大陆地区无法正常使用。好在 The Movie Database 刮削器通过修改域名解析可以实现正常访问,所以今天我们就来讲一下如何进行设置。不能访问的原因是TMDB使用的服务器IP网段与facebook、Twitter、Dropbox网段有重叠,被大陆屏蔽,只需要找到一台ip地址不在屏蔽范围的服务器就好了。The Movie Database 账号注册与 API 接口获取打开网站(https://www.themoviedb.org/)点击右上方的“加入TMDb”,注册账号并登陆。TMDB网站在大陆绝大多数地区都是可以正常访问,并且支持中文。大陆地区无法使用TDMB刮削器的原因是 api.themoviedb.org (TMDB的api接口服务器)在大陆地区域名解析异常。需要我们手动指定域名解析到的ip地址。在注册账号页面填写相关信息就可以完成注册。账号登陆以后账号后,点击右上方的账户头像,在弹出菜单中点击账户设置。在账户设置页面点击API选项申请API用户类型选择开发者接受开发者协议填写应用信息,这里的信息请使用拼音或者英语填写,每一个选项都需要写每个选项都填写完毕之后点击提交,提交完成之后就可以看到你的API,把那一串字符复制下来。复制下来的API密钥你粘贴到video station的设置选项中,点击测试连接,如果可以测试通过,说明你可以正常使用。点击确定,保存设置你就不需要进行下面的操作了,如果无法点击确定按钮,把“启用OpenSubtitles.org支持”这个勾去掉。如果测试不通过,在这里先点击确定,保存设置,我们还需要手动指定一下api服务器的域名解析。获取到 api.themoviedb.org 可以正常访问的ip地址我们使用到爱站ping检测工具,在检测框中我们输入网址点击检测,ping检测工具会自动调用分部在全球服务器对api.themoviedb.org 进行ping测试,测试同时服务器还会返回服务器所在地域名解析到的ip地址。在搜索结果中我们看到全国大多数地区都是无法访问的,我们在结果中去找那些检测结果不是超时的ip地址,我们把这些地址复制出来,在本地电脑上打开CMD命令行模式,然后输入ping XXX.XXX.XXX.XXX(这里的XXX表示的就是你复制的ip地址) 然后回车,如果返回时间,那么说明这个ip地址在你所在的地区可以是使用。如果显示超时,那么说明这个ip在你当地不能使用,那么你就需要继续去试下一个地址。 修改NAS的hosts文件首先我们需要在群晖控制面板中开始ssh的功能。在群晖的控制面板中你需要先开启高级模式高级模式开启以后点击“终端和SNMP”勾选启动“ssh功能”,点击应用。在电脑上安装finalshell这个软件,安装完成以后打开软件, 新建NAS的连接信息双击我们刚刚添加的连接信息,就会连接到我们的NAS上, 我们在窗口中输入 sudo -i然后回车,就会出现一个要求输入密码的界面。输入你的密码当命令行出现“#”以后输入 vi /etc/hosts输入完命令以后按回车键盘上按一下插入键 insert 就可以进入编辑界面,输入 XXX.XXX.XXX.XXX api.themoviedb.org (XXX.XXX.XXX.XXX 替换成上面所说的ip地址,)按一下esc键退出编辑输入 :wq 就可以退出保存 注意以上输入全部均是英文输入法状态下。编辑完成以后我们重启NAS。验证效果打开Video Station,进入设置–高级选项,我们点击“测试连接”,进行验证一下对于之前已经存到NAS里的视频可能需要你手动编辑一下文件信息,对于之后上传的文件如果刮削器可以找到对应视频文件会自动关联,当然也存在某些视频文件无法匹配的情况发生。 完。
2021年08月26日
174 阅读
0 评论
0 点赞
2021-08-25
随机图片API接口
免费API调用平台https://api.btstu.cn/https://unsplash.it/1600/900?random(据说国内加载略慢,我试了一下还好都差不多)https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture(必应每日图片)https://uploadbeta.com/api/pictures/random(必应图库,一些风景图人物图什么的,都是现代风格)https://source.unsplash.com/random(风格同上,但这个的图尺寸不是大图)下面是几个二次元的https://img.xjh.me/random_img.php (850+) 出处(・ω・)ノhttp://www.dmoe.cc/random.php(1000+)出处(・ω・)ノhttps://acg.yanwz.cn/api.php (400+) 出处(・ω・)ノhttps://img.paulzzh.tech/touhou/random (东方的随机图,43000+)出处(・ω・)ノhttps://acg.toubiec.cn/random.php(1000+) 出处(・ω・)ノ 作者开源了 这篇博客里有介绍和源码 先蟹蟹大佬了[项目]随机二次元图片API-已经开源必应壁纸1366*768分辨率图片地址:https://api.dujin.org/bing/1366.php1920*1080分辨率图片地址:https://api.dujin.org/bing/1920.php手机标准分辨率1080*1920图片地址:https://api.dujin.org/bing/m.php动漫图片https://api.ixiaowai.cn/api/api.phphttp://www.dmoe.cc/random.phphttps://api.ixiaowai.cn/mcapi/mcapi.phphttps://acg.yanwz.cn/wallpaper/api.phphttps://acg.yanwz.cn/api.phphttps://img.paulzzh.tech/touhou/randomhttps://i.xinger.ink:4443/images.phphttps://api.lyiqk.cn/acghttps://api.lyiqk.cn/mikuhttps://random.52ecy.cn/randbg.phphttps://img.catct.cn/mc.phphttps://img.catct.cnhttps://img.catct.cn/pixiv.phphttps://img.xjh.me/random_img.php?return=302风景类图片https://api.ixiaowai.cn/gqapi/gqapi.phphttps://api.lyiqk.cn/sceneryhttps://acg.yanwz.cn/scenery/api.php现代化图片https://source.unsplash.com/randomhttps://unsplash.it/1600/900?randomhttps://api.comzg.com/https://source.unsplash.com/user/erondu/1600x900https://source.unsplash.com/user/tkirkgoz/1600x900https://unsplash.it/1600/900?random美女写真https://api.lyiqk.cn/sexyladyhttps://api.lyiqk.cn/pureladyhttps://uploadbeta.com/api/pictures/random/?key=推女郎https://uploadbeta.com/api/pictures/random/?key=二次元https://uploadbeta.com/api/pictures/random/?key=动漫https://api.ixxcc.com/cosplay.php?return=imghttps://cdn.seovx.com/?mom=302
2021年08月25日
99 阅读
0 评论
0 点赞
2021-08-20
ESP8266 Serial.available()与Serial.read问题
ESP8266作为TCP服务端,电脑作为TCP客户端,单片机串口与ESP8266串口相连,目的是实现单片机与电脑客户端之间数据互传。 ```c uint8_t readBuf[256]; char readBuf_1[256]; int inComingBytes_1; while (client.connected()) //如果客户端处于连接状态 { //接收客户端数据转发给串口 int inComingBytes = client.available(); if(inComingBytes > 0){ client.read(readBuf, inComingBytes); Serial.write(readBuf, inComingBytes); } //接收串口数据转发给客户端 inComingBytes_1 = Serial.available(); delay(5);//解决方法 if(inComingBytes_1 > 0){ Serial.read(readBuf_1, inComingBytes_1); client.write(readBuf_1, inComingBytes_1); } } ```在利用ESP8266将串口数据与TCP数据互传时遇到问题,串口接收的数据不能一次发给TCP客户端,而是分为两次发送。如发送:49 60 00 35 00 00 15 7b 时。客户端收到的数据为49 60 00 35 00 00 15 7b 可以看到数据被分为两次发送了。后来经过了解后发现Serial.available()读取接收的数据字节数时并不是一次性读取的,而是逐渐累加的,每次累加一个字节,直至读完。 而当我们使用Serial.read读取时,每读取一个字节时,Serial.available()的累加值就会减一,这样就造成我们在利用以上代码时,当有数据接收时,Serial.available()为1时便立马进行读取,然后发送给客户端,这样就有了第一次发送一个字节的数据,而当第二次发送时,由于第一次发送数据时有一段时间的阻塞延时,所以Serial.available()被全部累加起来了,所以第二次就能把数据全部发送出去。 解决办法就是在接收到第一个字节时不立马发送,而是添加一段时间的延时,使Serial.available()累加完再一次发送。
2021年08月20日
90 阅读
0 评论
0 点赞
2021-05-17
基于ESP-12F的电脑远程开机模块
利用对电脑主板开机跳线电平的控制来控制电脑的开关机和重启等操作。接入Blinke平台,可以通过Blinker APP和小爱同学远程控制。 Arduino控制代码如下
2021年05月17日
39 阅读
0 评论
0 点赞
2021-04-29
qt编写的单片机在线升级软件
传统单片机下载代码都是通过下载器连接单片机下载。但是在之前公司开发一款潜望镜时,由于整个外壳要做密封防水,每次拆开非常麻烦不说,还要重新密封,所以每次修改BUG拆开非常麻烦,就想着开发一个无线升级的软件,通过WIFI连接实现无线升级。单片机程序主要由两部分组成。bootloader部分和APP部分,两部分程序烧录在芯片里不同的地址上,bootloader(0x80000000-0x80002000)剩下的地址就给APP了。升级程序可以实现APP和bootloader之间相互跳转,升级时先跳转到bootloader然后依据协议上位机发升级文件。此升级程序含有两种升级模式,串口升级和tcp客户端升级。串口升级就是传统的串口协议进行数据发送。重点是tcp客户端模式,采用esp8266作为tcp-串口透传模块,esp8266作为tcp服务端,上位机作为客户端往固定端口发送的数据被esp8266转发到串口,同理串口的数据别转发到固定端口。升级协议目前是自己编写的协议,后期改为ymodem通用协议。 !!! !!!
2021年04月29日
63 阅读
0 评论
0 点赞
2021-04-14
STM32F10X_XX宏定义的选择及含义
IAR和Keil编译器中STM32F10X_XX宏定义的选择 !!! 其中USE_STDPERIPH_DRIVER和STM32F10X_HD什么意思?(1)USE_STDPERIPH_DRIVERto use or not the peripheral’s drivers in application code (i.e. code will be based on direct access to peripheral’s registers rather than drivers API) , this option is controlled by the #define USE_STDPERIPH_DRIVER即这个定义控制了是否在应用中启用外设驱动。我们使用标准外设库本来就为了方便控制外设,所以要添加这个定义,以启用外设驱动。(2)STM32F10X_HD如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,如:```c#if !defined (STM32F10X_LD) & !defined (STM32F10X_MD) & !defined (STM32F10X_HD) & !defined (STM32F10X_CL) /* #define STM32F10X_LD */ /*STM32F10X_LD: STM32 Low density devices */ /* #define STM32F10X_MD */ /*STM32F10X_MD: STM32 Medium density devices */ /* #define STM32F10X_HD */ /*STM32F10X_HD: STM32 High density devices */ #define STM32F10X_CL /*STM32F10X_CL: STM32 Connectivity line devices */ #endif``` !!!!!! 至于要使用哪个宏,则需要根据具体的芯片来进行选择。如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明: !!! 宏 MCU 型号 FLASH大小 STM32F10X_LD STM32F101xx STM32F102xx STM32F103xx 16 ~ 32 Kbytes STM32F10X_MD STM32F101xx STM32F102xx STM32F103xx 64 ~ 128 Kbytes STM32F10X_HD STM32F101xx STM32F103xx 256 ~ 512 Kbytes STM32F10X_CL STM32F105xx STM32F107xx 忽略 !!!
2021年04月14日
35 阅读
0 评论
0 点赞
1
2
3
4
...
8