<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>三土的IT文摘</title><link>https://santu.tech/</link><description>好记性不如烂笔头！</description><item><title>微信小程序：setData直接修改数组中的数据</title><link>https://santu.tech/?id=21</link><description>&lt;p&gt;直接修改JSON数组中某一项的值&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;data=[
{name:&amp;#39;a&amp;#39;,value:&amp;#39;a1&amp;#39;},
{name:&amp;#39;b&amp;#39;,value:&amp;#39;b1&amp;#39;}
]
var&amp;nbsp;id=1
var&amp;nbsp;new_val&amp;nbsp;=&amp;nbsp;b2
this.setData({
[&amp;#39;data[&amp;#39;+id+&amp;#39;].value&amp;#39;]:new_val
)}
data=[
{name:&amp;#39;a&amp;#39;,value:&amp;#39;a1&amp;#39;},
{name:&amp;#39;b&amp;#39;,value:&amp;#39;b2&amp;#39;}
]&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 15 Jul 2023 15:25:39 +0800</pubDate></item><item><title>fastAPI使用https</title><link>https://santu.tech/?id=20</link><description>&lt;p&gt;在main.py中定义证书路径&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-python&quot;&gt;from&amp;nbsp;fastapi&amp;nbsp;import&amp;nbsp;FastAPI
app&amp;nbsp;=&amp;nbsp;FastAPI(ssl_keyfile=&amp;quot;./key.key&amp;quot;,&amp;nbsp;ssl_certfile=&amp;quot;./cert.pem&amp;quot;)&lt;/pre&gt;&lt;p&gt;启动uvicorn时带上证书参数（&lt;span style=&quot;text-wrap: wrap;&quot;&gt;其中--host &amp;#39;0.0.0.0&amp;#39;可以允许域名访问）&lt;/span&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;(env)uvicorn&amp;nbsp;main:app&amp;nbsp;--port&amp;nbsp;8000&amp;nbsp;--host&amp;nbsp;&amp;#39;0.0.0.0&amp;#39;&amp;nbsp;--ssl-keyfile&amp;nbsp;./key.key&amp;nbsp;--ssl-certfile&amp;nbsp;./cert.pem&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 03 Jul 2023 14:46:06 +0800</pubDate></item><item><title>ubuntu下python虚拟环境配置</title><link>https://santu.tech/?id=19</link><description>&lt;p&gt;安装虚拟环境venv包&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;update
sudo&amp;nbsp;apt-get&amp;nbsp;upgrade
sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;python3-venv&lt;/pre&gt;&lt;p&gt;创建名为env的虚拟环境&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;python3&amp;nbsp;-m&amp;nbsp;venv&amp;nbsp;env&lt;/pre&gt;&lt;p&gt;激活名为env的虚拟环境&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;source&amp;nbsp;env/bin/activate&lt;/pre&gt;&lt;p&gt;退出虚拟环境&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;(env)deactivate&lt;/pre&gt;&lt;p&gt;在虚拟环境中生成requirements.txt文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;(env)pip&amp;nbsp;freeze&amp;nbsp;&amp;gt;requirements.txt&lt;/pre&gt;&lt;p&gt;新环境部署，根据requirements.txt文件安装各种依赖&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;(env)pip&amp;nbsp;install&amp;nbsp;-r&amp;nbsp;requirements.txt&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 03 Jul 2023 13:36:36 +0800</pubDate></item><item><title>如何捕捉未完全导入模块的错误</title><link>https://santu.tech/?id=18</link><description>&lt;p&gt;exception本身也是可以被导入的，可以按如下方式操作&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-python&quot;&gt;from&amp;nbsp;socket&amp;nbsp;import&amp;nbsp;gaierror
except&amp;nbsp;gaierror:&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 23 May 2023 08:27:55 +0800</pubDate></item><item><title>python调用pywin32模块打印</title><link>https://santu.tech/?id=17</link><description>&lt;p&gt;使用pywin32模块，&lt;a href=&quot;http://timgolden.me.uk/pywin32-docs/win32.html&quot; target=&quot;_blank&quot; textvalue=&quot;查看文档&quot;&gt;查看文档&lt;/a&gt;&lt;/p&gt;&lt;p&gt;各种设置参数如页面大小，在微软MSDN查阅，&lt;a href=&quot;https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea&quot; target=&quot;_blank&quot; textvalue=&quot;查看文档&quot;&gt;查看文档&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 06 Apr 2023 23:18:17 +0800</pubDate></item><item><title>JavaScript：数组去重</title><link>https://santu.tech/?id=15</link><description>&lt;p&gt;借助ES6提供的Set结构new Set()可以快速去重，非常好用&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;var&amp;nbsp;newArr=[...new&amp;nbsp;set(arr)]&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 13 Mar 2023 16:10:53 +0800</pubDate></item><item><title>微信小程序：组件的onLoad()实现</title><link>https://santu.tech/?id=14</link><description>&lt;p&gt;onLoad()函数是页面加载时自动运行的，组件component使用另外一种方式达成同样的效果&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;组件生命周期声明对象(最重要的生命周期是&amp;nbsp;created&amp;nbsp;attached&amp;nbsp;detached)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lifetimes:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;在组件实例刚刚被创建时执行
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;created:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;在组件实例进入页面节点树时执行
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attached:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;在组件实例被从页面节点树移除时执行
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;detached:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;组件所在页面的生命周期声明对象
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageLifetimes:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;页面被展示
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;show:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;页面被隐藏
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hide:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;页面尺寸变化
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resize:&amp;nbsp;function&amp;nbsp;()&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 26 Feb 2023 15:10:29 +0800</pubDate></item><item><title>JavaScript：删除数组中的特定元素</title><link>https://santu.tech/?id=13</link><description>&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;let&amp;nbsp;itemDeleted&amp;nbsp;=&amp;nbsp;[...item];
itemDeleted&amp;nbsp;.splice(n,&amp;nbsp;1);
item&amp;nbsp;=&amp;nbsp;itemDeleted&lt;/pre&gt;&lt;p&gt;唯一需要注意的，要转一道手，不然新的数组刚好是删掉的那些元素。&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 15 Feb 2023 19:37:16 +0800</pubDate></item><item><title>微信小程序：Vant Weapp组件库的使用</title><link>https://santu.tech/?id=12</link><description>&lt;p&gt;官方文档：&lt;a href=&quot;https://vant-contrib.gitee.io/vant-weapp/0.x/#/intro&quot; target=&quot;_blank&quot; style=&quot;white-space: normal;&quot;&gt;Vant Weapp - 轻量、可靠的小程序 UI 组件库 (gitee.io)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;npm初始化，根据需求填写内容，或者一路回车即可。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;npm&amp;nbsp;init&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;background-color: #F8F8F8;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;2.安装Vant Weapp组件库&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;npm&amp;nbsp;i&amp;nbsp;vant-weapp&amp;nbsp;-S&amp;nbsp;--production&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;background-color: #F8F8F8;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;3.构建npm&lt;/p&gt;&lt;p&gt;4.引入组件&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;以 Button 组件为例，只需要在app.json或index.json中配置 Button 对应的路径即可。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;//&amp;nbsp;app.json
&amp;quot;usingComponents&amp;quot;:&amp;nbsp;{
&amp;quot;van-button&amp;quot;:&amp;nbsp;&amp;quot;vant-weapp/button&amp;quot;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;5.使用组件&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引入组件后，可以在 wxml 中直接使用组件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markup&quot;&gt;&amp;lt;van-button&amp;nbsp;type=&amp;quot;primary&amp;quot;&amp;gt;按钮&amp;lt;/van-button&amp;gt;&lt;/pre&gt;&lt;p&gt;6.注意事项&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果使用无效，尝试重新打开此项目&lt;/p&gt;&lt;p&gt;7.扫码查看官方模板&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://santu.tech/zb_users/upload/2023/02/202302141676343770500961.jpg&quot; title=&quot;qrcode-201808101114.jpg&quot; alt=&quot;qrcode-201808101114.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 14 Feb 2023 09:56:01 +0800</pubDate></item><item><title>微信小程序：自定义组件触发父级页面事件</title><link>https://santu.tech/?id=11</link><description>&lt;p&gt;一、自定义组件定义如下：&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1. js文件&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;Component({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;app&amp;nbsp;=&amp;nbsp;this
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties:&amp;nbsp;{},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methods:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onTap(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;myEventDetail&amp;nbsp;=&amp;nbsp;{}&amp;nbsp;//&amp;nbsp;detail对象，提供给事件监听函数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;myEventOption&amp;nbsp;=&amp;nbsp;{}&amp;nbsp;//&amp;nbsp;触发事件的选项
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app.triggerEvent(&amp;#39;myevent&amp;#39;,&amp;nbsp;myEventDetail,&amp;nbsp;myEventOption)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;
})&lt;/pre&gt;&lt;p&gt;2. wxml文件&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markup&quot;&gt;&amp;lt;view&amp;nbsp;class=&amp;quot;wrapper&amp;quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;view&amp;gt;这里是组件的内部节点&amp;lt;/view&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;slot&amp;gt;&amp;lt;/slot&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;button&amp;nbsp;bindtap=&amp;quot;onTap&amp;quot;&amp;gt;点击这个按钮将触发“myevent”事件&amp;lt;/button&amp;gt;
&amp;lt;/view&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;二、引用组件的父级页面&lt;/p&gt;&lt;p&gt;1. js文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;Page({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data:&amp;nbsp;{&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myEventListener(e){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(e)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
})&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;2. wxml文件&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markup&quot;&gt;&amp;lt;view&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;my-component&amp;nbsp;bind:myevent=&amp;quot;myEventListener&amp;quot;&amp;gt;&amp;nbsp;&amp;lt;/my-component&amp;gt;
&amp;lt;/view&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;注：其中的 “myevent” 事件只是一个标识符，并不是一个方法的名称（自定义组件中没有，父级页面中也没有），其被指定为 bind:myevent=&amp;quot;myEventListener&amp;quot;事件。即自定义组件中通“myevent”这一个标识符等于（=）或代表MyEventListener方法。自定义组件中通过使用“ this.triggerEvent(&amp;#39;myevent&amp;#39;, myEventDetail, myEventOption)” 来触发父级页面中的 “myEventListener” 方法&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 12 Feb 2023 22:57:38 +0800</pubDate></item></channel></rss>