<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>小夏的猪窝 - 笔记</title>
<link>https://blog.x-tools.top/tag/%E7%AC%94%E8%AE%B0/</link>
<atom:link href="https://blog.x-tools.top/feed/tag/%E7%AC%94%E8%AE%B0/" rel="self" type="application/rss+xml" />
<language>zh-CN</language>
<description></description>
<lastBuildDate>Sun, 04 Jun 2023 13:42:00 +0000</lastBuildDate>
<pubDate>Sun, 04 Jun 2023 13:42:00 +0000</pubDate>
<item>
<title>蛋定！Coding···</title>
<link>https://blog.x-tools.top/archives/86/</link>
<guid>https://blog.x-tools.top/archives/86/</guid>
<pubDate>Sun, 04 Jun 2023 13:42:00 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[最近在开发一款图色助手，用WPF开发，用大漠插件实现图色的识别，其名为蛋定助手进度从上个月22号开始，就着手与基础框架的开发，直至27号为止完成基础框架构建，实现了屯屯鼠的Json图色识别，循环...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>最近在开发一款<code>图色助手</code>，用WPF开发，用大漠插件实现图色的识别，其名为<strong>蛋定助手</strong></p><h2>进度</h2><ul><li>从上个月22号开始，就着手与基础框架的开发，直至27号为止完成基础框架构建，实现了<code>屯屯鼠</code>的Json图色识别，循环框架。</li><li>此后的几天内，着重于FastApi的后端开发，实现了助手的接口开发，如ApiPost测试接口项目图。<br> <img src="https://p.x-tools.top/Images/2023%2006-04%2021-27-21.png" alt="" title=""></li><li>目前进度完成了<strong>百分之40</strong>左右....</li><li>此后，就是完善优化框架，除了循环识图模式，可能还需要加入，队列试图模式、行为树识别模式，均通过Json编写用户自行实现脚本操作。还要实现脚本基本功能的打包完善（<strong>更全能</strong>）</li><li>目前，任务脚本的图片识别是本地文件的识别方式，后期还会加入Url、图片链接的方式实现脚本运行（更加轻量化）</li><li>还有更多要开发的，如：<strong>云端的脚本库</strong>，用户<strong>脚本分享</strong>等功能...</li></ul><h2>预计</h2><p><code>预计</code>阴阳师周年庆之前出第一个版本。<br>该助手有两种方式可以使用</p><ol><li>注册XTools用户，可以使用，并且提供云端资源库、脚本共享、轻量化的脚本任务的功能。</li><li>自己填写您自己的大漠注册码，即可使用，但是不提供云端的功能。</li></ol><p>同样两种方式都提供Json文件的编辑、解析，以及无限多开功能，因为这是最基本的。</p><h2>目前软件图</h2><p><img src="https://p.x-tools.top/Images/2023%2006-04%2021-35-46.png" alt="" title=""><br>软件的界面我会尽可能的简单化，市面上的各种脚本软件，我见过它们的界面<br>一眼望去 满眼的设置选项，这无疑增加了用户上手的难度，我的助手、脚本，并不会！</p><p>我相信在以后我的脚本资源库，会提供足够丰富足够多的脚本，同时，我的用户也会分享<br>各种好用的脚本。</p><p>最后，我想说，这个软件 不仅仅用于“阴阳师”这款游戏，你可以将它看成自动化工具，<br>你可以绑定各种窗口，实现各种点击操作（你想要的操作）。它的玩法，你无法想象。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/86/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/%E7%AC%94%E8%AE%B0/</wfw:commentRss>
</item>
<item>
<title>用虚拟机搞一个青龙面板玩！</title>
<link>https://blog.x-tools.top/archives/80/</link>
<guid>https://blog.x-tools.top/archives/80/</guid>
<pubDate>Fri, 24 Feb 2023 14:24:00 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[&lt;!--[toc]--&gt;做自己觉得有意义的事情，做自己喜欢的事情，做自己热爱的事情，让自己的休息时间充实起来，这没什么坏处，即使是玩游戏，但这些事情要一定让你有所收获。新开一个分类，...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>&lt;!--[toc]--&gt;</p><blockquote>做自己觉得有意义的事情，做自己喜欢的事情，做自己热爱的事情，让自己的休息时间充实起来，这没什么坏处，即使是玩游戏，但这些事情要一定让你有所收获。</blockquote><p>新开一个分类，<code>找点事做</code>，很简单，记录自己下班后所做的一些事情，可能是换了套喜欢的键帽，可以是分享个电视剧，等等...<br>这次主要分享的是自己使用<code>VMware虚拟机</code>+<code>CentOS8系统</code>+<code>Docker容器</code>+<code>青龙面板</code>，实现的后台自动定时跑脚本的功能。</p><h2>准备</h2><ol><li>VMware虚拟机<br>本文章使用的是16 Pro版本，<br><img src="http://cdn.x-tools.top/MarkDownImg/202322478877902.png" alt="" title=""><br>具体可以自写下载安装，在这里也推荐一个微信公众号，名为"不迷路资源库"，其分享很多软件，均为绿色版本或PJ版本。</li><li>CentOS8系统<br>本文章使用的系统来源于<a href="https://next.itellyou.cn/">I Tell You</a>网站，该网站收录众多官方系统镜像，非常方便使用。<br><img src="http://cdn.x-tools.top/MarkDownImg/202322479028665.png" alt="" title=""><br>不想找的，可以直接复制粘贴此磁力连接:magnet:?xt=urn:btih:9DB46A612D04763AA7DB02A0FF63EDE2EA555867&dn=CentOS-8.1.1911-x86_64-dvd1.iso ，后迅雷等方式下载。</li><li>Docker容器<br>自行百度安装最新版本的Docker容器，安装前需要使用root管理员账号，使用su提升权限。</li><li>青龙面板<br>百度搜索“CentOS8 Docker 青龙面板”即可找到最新教程安装。</li></ol><h2>用途</h2><p>使用虚拟机后，将搭载CentOS系统的虚拟机中<code>网络适配器</code>选项设置为如下图所示，就能做到从虚拟机外的主系统访问CentOS的各种服务。<br><img src="http://cdn.x-tools.top/MarkDownImg/202322479293622.png" alt="" title=""></p><p>在虚拟机中我们使用<code>ifconfig</code>来获取CentOS系统的ip地址，如图<img src="http://cdn.x-tools.top/MarkDownImg/202322479426164.png" alt="" title=""><br>我的ip地址为<code>192.168.1.5</code>，知道ip后我们就可以在主系统的浏览器中直接访问具有虚拟机中的青龙面板服务！<br><img src="http://cdn.x-tools.top/MarkDownImg/202322479520670.png" alt="" title=""></p><p>关于青龙面板的用途，可以自行挖掘，其用途非常广阔，用来自动签到、自动任务、京东领豆等等... 只需要开启电脑，将虚拟机挂在后台运行即可。本人目前使用的库是Faker2的京东库，自动挂豆子用。同样也可以自己写一些脚本，在青龙面板中自动定时跑脚本，目前支持Python、JavaScript、NodeJs编程语言。<br><img src="http://cdn.x-tools.top/MarkDownImg/202322479753229.png" alt="" title="">在后台运行即可。</p><h2>坑</h2><ol><li>在使用青龙面板Faker库时，遇到了搞我半天的坑，执行脚本任务时会报错，想了半天才知道要装“依赖”！！是青龙面板中的依赖中安装，并不是在linux命令行中安装，没有用的。<br>具体见<a href="https://blog.csdn.net/qq_40790680/article/details/128585621">CSDN青龙面板依赖文章</a></li><li>青龙面板的通知设置，我使用的是gocqhttpapi的方式，因为我在服务器中挂了一个gocq的nonebot机器人。<br><img src="http://cdn.x-tools.top/MarkDownImg/202322481087425.png" alt="" title="">在设置此通知方法时，在青龙初始化安装时无法通过测试，因为当前版本的gocq服务已经不需要Token来认证之后发送消息了，我们需要进入系统后在系统设置中设置，其中将Tonken设置为一个空格就可以实现消息通知啦。</li></ol><h2>拓展</h2><p>已知设置为这样的网络适配器模式，CentOS系统与主系统处于一个局域网内，可以使用XShell软件进行后台的远程控制。非常方便进行跑脚本，以及软件的开发调试。</p><p>CentOS+容器，玩法真的很多很多，慢慢挖掘吧。</p><h2>总结</h2><p>资源软件公众号，“不迷路资源库”，自行搜索。<br>系统镜像<a href="https://next.itellyou.cn/">I Tell You</a>网站。<br>CentOS 8 镜像磁力: magnet:?xt=urn:btih:9DB46A612D04763AA7DB02A0FF63EDE2EA555867&dn=CentOS-8.1.1911-x86_64-dvd1.iso <br>CentOS获取ip，使用<code>ifconfig</code>命令。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/80/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/%E7%AC%94%E8%AE%B0/</wfw:commentRss>
</item>
<item>
<title>Python - 字符串 列表 元组 字典 集合</title>
<link>https://blog.x-tools.top/archives/12/</link>
<guid>https://blog.x-tools.top/archives/12/</guid>
<pubDate>Fri, 20 May 2022 02:08:00 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[&lt;!-- [toc] --&gt;字符串 ' '不可变类型强制类型转化方法 str(数字或变量)​                 int(字符串)字符串输出a ='我爱学Python'p...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>&lt;!-- [toc] --&gt;</p><h1><strong>字符串 ' '</strong></h1><blockquote><p>不可变类型</p><p>强制类型转化方法 str(数字或变量)</p><p>​                 int(字符串)</p></blockquote><h2><strong>字符串输出</strong></h2><pre><code class="lang-python">a ='我爱学Python'
print(f'''多行引号c支持f表达式吗？
这是第二行
这是a的值：{a}
下一行结束啦
exit''')
#f表达式 和c# $表达式一模一样

a = int(a)
＃强制类型转换</code></pre><p>==上面的程序说明多行输出时，支持f表达式，可以带入变量输出！ 非常的实用！==</p><h2><strong>切片</strong></h2><ul><li><strong>a='我爱学Python'</strong></li><li>a[0:9] <em>输出：我爱学Python</em></li><li>a[开始下标:结束下标+1]。</li><li>a[0:9:1] <em>输出：我爱学Python</em></li><li>a[0:9:2] <em>输出：我学yhn</em></li><li>a[开始下标:结束下标+1:步长]  <em>步长默认为1</em></li><li>a[::-1] <em>输出：nohtyP学爱我</em></li><li><strong>步长为 -1 时，倒叙输出字符串。</strong></li><li>a[-7:-2] <em>输出：学Pyth</em></li><li><strong>都为负数时，从右向左，从-1到-n。</strong></li></ul><h2><strong>字符串常用方法</strong></h2><ul><li>查找方法</li></ul><pre><code class="lang-python">#查找方法  find
a=&quot;我要查找以下字符串'我爱学Python'，嗨嗨嗨，第二个字符串'我爱学Python',嗨嗨嗨&quot;
#a.find(查找的串,查询起始位置,查询结束位置)
print(a.find(&quot;我爱学python&quot;))#返回 -1 ，因为没找到
print(a.find(&quot;我爱学Python&quot;))#返回 10 ，找到了返回的字符串中的起始下表位置
#反向查找  rfind
print(a.rfind(&quot;我爱学Python&quot;))#返回 32
#查询出现多少次字串  count
print(a.count('我爱学python'))#返回 0，没查到
print(a.count('我爱学Python'))#返回 2，出现了2次字符串</code></pre><ul><li>修改方法</li></ul><pre><code class="lang-python">#修改方法  replace
a=&quot;我要查找以下字符串'我爱学Python'，嗨嗨嗨，第二个字符串'我爱学Python'，嗨嗨嗨&quot;
#a.replace(旧串，新串，替换次数)
print(a.replace('我爱学Python','Python'))
#分割方法  split
print(a.split('，'))#返回一个列表
#合并方法 只能合并列表
#字符串.join(字符串列表)
a=['字符串1','字符串2','字符串3']
print('*'.join(a))#返回 字符串1*字符串2*字符串3
print(join(a))#报错！ 必须拥有一个合并字符串
print(''.join(a)) #可以用空字符代替</code></pre><ul><li><p>补充方法</p><ul><li><code>字符串.strip()</code>去除空格</li></ul></li></ul><h1><strong>列表[]</strong></h1><ul><li>小知识</li><li>他是可变类型</li><li>强制类型转化方法 <strong>list(序列)</strong></li></ul><h2>列表的定义</h2><pre><code class="lang-python">vs = [123,456,789]#一个列表 中存的是数字
vs=[]#空列表</code></pre><h2><strong>列表方法</strong></h2><h3><strong>查找</strong></h3><ol><li>index()方法 如果不存在则报错</li><li>count()方法</li></ol><pre><code class="lang-python">vs = [123,456,789]#一个列表 中存的是数字
#查找
vs.index(123)#返回0下标 如果不存在则报错
#查询出现次数
vs.count(123)#返回1
#len测量列表长度
len(vs)#返回3</code></pre><h3><strong>增加</strong></h3><ol><li>append() 只能增加一个数据 加在最后</li><li>extend() 只能增加一个列表 在最后</li><li>insert(pos,val) 指定位置追加数据</li></ol><pre><code class="lang-python">#增加列表
vs = [123,456,789]#一个列表 中存的是数字
#只能增加一个数据 加在最后
vs.append(123456)#结果为[123, 456, 789, 123456]
#只能增加一个列表 在最后
vs.extend([1,2,3,4,5])#vs的值为[123, 456, 789, 123456, 1, 2, 3, 4, 5]
#指定位置追加数据 
vs.insert(1,8)#vs的值[123, 8, 456, 789, 123456, 1, 2, 3, 4, 5]</code></pre><h3><strong>删除</strong></h3><ol><li>del(vs) 删除整个列表</li><li>del(vs[0]) 删除指定值</li><li>vs.pop(pos) 删除指定位置并且返回</li><li>vs.remove(123)  删除第一个匹配的数据</li><li>clear() 清空列表</li></ol><pre><code class="lang-python">#删除变量
vs = [123,456,789]#一个列表 中存的是数字
del(vs)#删除整个列表
del(vs[0])#vs 值为 [456, 789]

vs.pop()#删除指定位置的数据，并且返回 修改vs变量
#返回 789 vs值为 [456]

#删除第一个匹配的数据
vs.remove(123) #返回[456,789]

#清空列表
vs.clear()</code></pre><h3><strong>修改</strong></h3><ol><li>reverse() 列表倒叙排列</li><li>sort() 列表升序排列</li><li>sort(reverse=True) 列表降序排列</li></ol><pre><code class="lang-python">#修改数据
a=[1,2,3,4,5,6,7]

#指定下标修改
a[0]=999 #a值为 [999, 2, 3, 4, 5, 6, 7]
#将列表倒叙排序
a.reverse()#a值为 [7, 6, 5, 4, 3, 2, 1]

#排序sort
a=[1,6,7,8,9,0,2,5,4,3]
#默认升序
a.sort()#a 值 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a.sort(reverse=True)#降序 a 值 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]</code></pre><h2>列表的连接</h2><pre><code class="lang-py">lister = ['12','34','354']
strret = ''.join(lister)</code></pre><h2><strong>列表转元组</strong></h2><p>使用<code>tuple()</code>转换</p><pre><code class="lang-python">a=[1,2,3,4]
a=tuple(a)</code></pre><h1><strong>元组()</strong></h1><ul><li>不可变类型</li><li>不可以修改数据</li><li>只能读</li><li>强制类型转换用 <code>tuple(序列)</code></li></ul><h2><strong>单个数组的元组定义</strong></h2><pre><code class="lang-python">a = (1,)
#一定要有一个逗号，不然不是元组类型</code></pre><h2><strong>查询方法</strong></h2><ul><li>和列表相同</li><li>只有index() 和 count()方法</li><li>len()方法</li></ul><h2>元组转列表</h2><pre><code class="lang-python">a=(1,2,3,4)
a=list(a)</code></pre><h2><strong>循环 遍历 迭代</strong></h2><h2>For循环</h2><blockquote>相当于foreach()语句</blockquote><pre><code class="lang-python">a=[867,234,678,0,2,4,6]
for i in a:
    print(i)
#依次输出
#867
#234
#678
#0
#2         
#4
#6</code></pre><h1>条件判断语句</h1><p>python一定要注意缩进！</p><pre><code>    C语言是大括号控制，Python不一样的就是使用缩进。
</code></pre><pre><code class="lang-python">if 条件:
    语句1
    语句2
elif 条件:
    语句1
    语句2
else:
     语句1
     语句2
     
＃三目运算
a = b if a&gt;b else a
＃求两数小值
＃符合条件值 if 条件 else 不符合的值</code></pre><h1><strong>字典{Key:values}</strong></h1><ul><li>可变类型</li><li>字典总是成对出现的， 统称 键值对</li><li>字典的定义： <code>a = {}</code></li><li><p>字典的type类型是：dict</p><pre><code class="lang-python">字典={'huawei':33,'xiaomi':44,'ipad':22}#调用方式
字典['huawei'] #输出33</code></pre></li></ul><h2>字典的方法</h2><h3><strong>增加</strong></h3><pre><code class="lang-python">字典[键]=值
#如果存在 则修改  不存在 则添加</code></pre><h3>删除</h3><p>删除用del进行删除</p><pre><code class="lang-python">#删除指定值
a={'huawei':1,'xiaomi':2,'ipad':3,'sanxing':4}
del a['ipad']
#删除整个字典
del a
#字典的清空
a.clear()</code></pre><h3><strong>查询</strong></h3><ul><li>get()方法  查询</li><li>values()方法  返回字典中的值</li><li>items()方法  返回的是个元组</li><li>keys()方法  返回所有键 ‘dict_keys’</li></ul><pre><code class="lang-python">#查询 get
a={'huawei':123,'ipad':321,'xiaomi':546}
a.get('huawei',9999) #返回123
#如果不存在 就返回参数2中的任意值

#values()
#返回字典中的值，返回的是个列表 类型是 dict_values

#items()
#返回的是个元组</code></pre><h2><strong>字典的循环遍历</strong></h2><pre><code class="lang-python">a={'huawei':123,'ipad':321,'xiaomi':546}
#打印遍历所有字典中的键
for i in a.keys():
    print(i)
    
#打印遍历所有字典中的值
for i in a.values():
    print(i)
    
#打印遍历所有字典中的键值对 元组的形式 
for i in a.items():
    print(i)
    
#打印遍历所有字典中的键值对 键值对的调用形式
#就是临时变量多一个 一个是键 一个是值
for i,j in a.items():
    print(f'{i}={j}')</code></pre><h1><strong>集合{}</strong></h1><ul><li>可变类型</li><li>集合 字典 都是大括号</li><li>空集合 必须用<code>set()</code>的方法定义</li><li>类型为set</li><li>强制转换方法是<code>set()</code></li><li><p>特点</p><ul><li>没有重复，自动去重</li><li>顺序是随机的</li></ul></li></ul><h2>集合的方法</h2><h3>增</h3><ol><li>用<code>add()</code>方法增加新集合，加入数据存在则无视。</li><li>用<code>update()</code>方法追加数据，可以是列表,集合，加入数据存在则无视。</li></ol><pre><code class="lang-python">a={1,2,3,4}
a.add(5)#增加

a.update({1,2,3,4,5,6,7})
a.update([1,2,3,4,5,6,7])
a.update(&quot;abc&quot;)</code></pre><h3>删</h3><ol><li><code>remove()</code> #不存在报错</li><li><code>discard()</code> #不存在不报错</li><li><code>pop()</code> #随机删除集合里的数据</li></ol><pre><code class="lang-python">a={1,2,3,4}
a.remove(5) #会报错
a.discard(1) #不报错

a.pop()#随机删除一个数据 并且返回删除的数据
#可以这么用
b=a.pop() #删的数据存到b中</code></pre><h3>查</h3><ol><li>用关键字 in 查询数据在集合中</li><li>用关键字 not in 查询数据不在集合中</li></ol><pre><code class="lang-python">a={1,2,3,4}
print(1 in a)
print(5 in a)
print(1 not in a)
print(5 not in a)</code></pre>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/12/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/%E7%AC%94%E8%AE%B0/</wfw:commentRss>
</item>
</channel>
</rss>