<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on 计步啦</title>
    <link>http://www.99steps.cn/posts/</link>
    <description>Recent content in Posts on 计步啦</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>Vika Zhou</copyright>
    <lastBuildDate>Fri, 13 Oct 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://www.99steps.cn/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>git命令遇到索引错误Invalid data in index</title>
      <link>http://www.99steps.cn/posts/git-encounter-invalid-index/</link>
      <pubDate>Fri, 13 Oct 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/git-encounter-invalid-index/</guid>
      <description>&lt;p&gt;idea中使用git命令更新代码，提交时报错&lt;code&gt;Invalid data in index&lt;/code&gt;。 解决方法，删除&lt;code&gt;.git/index&lt;/code&gt;后，运行&lt;code&gt;git reset&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv .git/index .git/index_old&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git ls-files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/28719281/cannot-add-any-file-to-git-libgit2-returned-invalid-data-in-index-invalid-en&#34;&gt;stackoverflow&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>在maven中使用Jetty插件运行应用</title>
      <link>http://www.99steps.cn/posts/jetty-plugin-in-maven-pom.xml/</link>
      <pubDate>Fri, 13 Oct 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/jetty-plugin-in-maven-pom.xml/</guid>
      <description>&lt;h2 id=&#34;在pomxml中配置jetty-插件&#34;&gt;在pom.xml中配置jetty 插件&lt;/h2&gt;&#xA;&lt;p&gt;Jetty是一个轻量级的war应用容器， 可以本地开发、测试时替换tomcat运行java web 应用， 更新方案快捷。&lt;/p&gt;&#xA;&lt;p&gt;Jetty支持作为maven插件来运行，在pom.xml中的&lt;code&gt;build/plugins&lt;/code&gt;部分配置插件后就可以直接启动了， 不需要下载。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;project&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;build&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;plugins&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.eclipse.jetty&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;jetty-maven-plugin&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;9.4.48.v20220622&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;webApp&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;contextPath&amp;gt;&lt;/span&gt;/myapp&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/contextPath&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/webApp&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;httpConnector&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;port&amp;gt;&lt;/span&gt;8080&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/httpConnector&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/plugins&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/build&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;timeout-问题处理&#34;&gt;timeout 问题处理&lt;/h2&gt;&#xA;&lt;p&gt;今天在idea上通过maven启动jetty开发服务器时，遇到报错&lt;code&gt;timeout scanning annotations&lt;/code&gt;，启动失败。 通过设置参数来解决。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;第一种是在idea的参数中配置， 给应用的JVM参数加上 &lt;code&gt;-Dorg.eclipse.jetty.annotations.maxWait=300&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;另外可以在pom.xml中给jetty插件进行配置&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;systemProperties&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;systemProperty&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;org.eclipse.jetty.annotations.maxWait&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;value&amp;gt;&lt;/span&gt;300&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/systemProperty&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/systemProperties&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Git子模板submodule的删除操作</title>
      <link>http://www.99steps.cn/posts/git-submodule-deinit/</link>
      <pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/git-submodule-deinit/</guid>
      <description>&lt;h2 id=&#34;git-submodule子模块的删除操作&#34;&gt;git submodule子模块的删除操作&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule deinit &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;module_name&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git rm --cached &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;module_name&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git commit -am &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;removed submodule&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;clone带子模板的git仓库&#34;&gt;clone带子模板的git仓库&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 先clone仓库&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone http://xxx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 初始化子模块， 创建文件夹&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 拉取子模块代码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者一条命令搞定&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule update --init --recursive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;添加子模块&#34;&gt;添加子模块&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule add http://xxxx sub_path&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git commit -m &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;add submodule&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>在python使用win32com库来读取excel</title>
      <link>http://www.99steps.cn/posts/use-win32com-to-read-excel-in-python/</link>
      <pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/use-win32com-to-read-excel-in-python/</guid>
      <description>&lt;p&gt;在python语言读取excel的有多种库可以实现。这里在windows下通过&lt;code&gt;pywin32&lt;/code&gt;调用Microsoft Excel软件的COM对象接口来实现，使用的API与VBA类似。&lt;/p&gt;&#xA;&lt;h2 id=&#34;安装pywin32库&#34;&gt;安装pywin32库&lt;/h2&gt;&#xA;&lt;p&gt;python下安装库首选使用&lt;code&gt;pip&lt;/code&gt;。如果使用virtualenv的话，也可以先为工程一个新的virtualenv, 再在virtualenv环境中安装。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python -m pip install pywin32&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;打开excel文件读取单元格内容&#34;&gt;打开Excel文件，读取单元格内容&lt;/h2&gt;&#xA;&lt;p&gt;读取excel的流程， 肯定是先打开一个文件， 创建workbook对象， 再从workbook中获取worksheet对象，worksheet即sheet页，然后读取worksheet中的单元格内容。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; win32com.client&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 连接excel应用，不显示窗口&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xl_app &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; win32com&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DispatchEx(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Excel.Application&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xl_app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DisplayAlerts &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xl_app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Visible &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 打开文件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;workbook &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; xl_app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Workbooks&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Open(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;some.xlsx&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;worksheet &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; workbook&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Worksheets(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Sheet1&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#打印单元格内容&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(worksheet&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Range(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;A1&amp;#39;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#关闭&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;workbook&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Close(&lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xl_app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Quit()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;获取单元格属性&#34;&gt;获取单元格属性&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cell &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; worksheet&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Range(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;A1&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 坐标&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Address)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 是否为合并单元格&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;MergeCells:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    print(cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;MergeArea, cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;MergeArea&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Columns&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Count, cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;MergeArea&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Rows&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Count)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 对齐方式&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;HorizontalAlignment)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 字体&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Font&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Bold, cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Font&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Size)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 背景色&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(cell&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Interior&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ColorIndex)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;microsoft-vba-参考&#34;&gt;Microsoft VBA 参考&lt;/h1&gt;&#xA;&lt;p&gt;Excel中API中使用还是得看官方文档，请访问 &lt;a href=&#34;https://learn.microsoft.com/en-us/office/vba/api/excel.range(object)&#34;&gt;https://learn.microsoft.com/en-us/office/vba/api/excel.range(object)&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>新建了gist.99steps.cn分享代码片段</title>
      <link>http://www.99steps.cn/posts/my-site-gist-99steps/</link>
      <pubDate>Sun, 08 Oct 2023 18:50:19 +0800</pubDate>
      <guid>http://www.99steps.cn/posts/my-site-gist-99steps/</guid>
      <description>&lt;p&gt;很多时候分享代码不需要写很多文字或者专门写个博客， 只需要简单的代码片段与文件即可。基于如上，搞了个简单的页面，类似github的gist, 分享一点点小功能的代码、外加简单的说明。&lt;/p&gt;&#xA;&lt;p&gt;访问页面 &lt;a href=&#34;https://gist.99steps.cn/&#34;&gt;https://gist.99steps.cn/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;功能基于django, 很早之前搭建的，放着没有使用，现在重新启动。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用poetry来管理python依赖</title>
      <link>http://www.99steps.cn/posts/use-poetry-to-run-python/</link>
      <pubDate>Tue, 26 Sep 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/use-poetry-to-run-python/</guid>
      <description>&lt;p&gt;开发python时通常会使用&lt;code&gt;virtualenv&lt;/code&gt;来创建独立的依赖环境，而使用&lt;code&gt;pip&lt;/code&gt;来安装依赖包，依赖包版本写在文件&lt;code&gt;requirements.txt&lt;/code&gt;中。工具&lt;code&gt;poetry&lt;/code&gt;可以同时完成&lt;code&gt;virtualenv&lt;/code&gt;与&lt;code&gt;pip&lt;/code&gt;的工具，为每一个项目单独创建virtualenv环境， 而且像&lt;code&gt;npm&lt;/code&gt;管理&lt;code&gt;nodejs&lt;/code&gt;的依赖包版本与安装依赖包一样， &lt;code&gt;poetry&lt;/code&gt;会安装依赖，将项目信息与依赖包写入&lt;code&gt;pyproject.toml&lt;/code&gt;文件中， 是python开发好助手。&lt;/p&gt;&#xA;&lt;h2 id=&#34;安装-peotry&#34;&gt;安装 peotry&lt;/h2&gt;&#xA;&lt;p&gt;官网 &lt;a href=&#34;https://python-poetry.org/&#34;&gt;https://python-poetry.org/&lt;/a&gt;, 安装要求Python3.8+&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -sSL https://install.python-poetry.org | python3 -&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;poetry --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m poetry --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;初始化项目&#34;&gt;初始化项目&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;新建项目文件夹 &lt;code&gt;poetry new poetry-demo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;在已有项目文件夹下初始化 &lt;code&gt;poetry init&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;安装依赖&#34;&gt;安装依赖&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;新增一个依赖包 &lt;code&gt;poetry add requests&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;安装依赖包 &lt;code&gt;poetry install&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;运行&#34;&gt;运行&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;poetry run python app.py&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create web app with Python sanic</title>
      <link>http://www.99steps.cn/posts/create-web-app-with-python-sanic/</link>
      <pubDate>Fri, 22 Sep 2023 00:00:00 +0000</pubDate>
      <guid>http://www.99steps.cn/posts/create-web-app-with-python-sanic/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://sanic.dev/en/&#34;&gt;sanic&lt;/a&gt; 是一个轻量、快速的python web框架，提供与&lt;code&gt;Flask&lt;/code&gt; 类似的API, 创建restful API接口超轻松。&lt;/p&gt;&#xA;&lt;p&gt;简单示例&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sanic &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Sanic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sanic.response &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;app &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Sanic(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MyHelloWorldApp&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@app.get&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;async&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;hello_world&lt;/span&gt;(request):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; text(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hello, world.&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;run(debug&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, access_log&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>搭建Hugo开发环境</title>
      <link>http://www.99steps.cn/posts/setup-hugo-content/</link>
      <pubDate>Fri, 14 Jul 2023 19:19:04 +0800</pubDate>
      <guid>http://www.99steps.cn/posts/setup-hugo-content/</guid>
      <description>&lt;p&gt;使用Hugo来搭建静态内容超级简单了。 参考 &lt;a href=&#34;https://gohugo.io/getting-started/quick-start/&#34;&gt;https://gohugo.io/getting-started/quick-start/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;快速起步&#34;&gt;快速起步&lt;/h2&gt;&#xA;&lt;p&gt;下载hugo软件包，解压到本地之后就可以开始了。命令如下&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new site quickstart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd quickstart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;theme = &amp;#39;ananke&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; hugo.toml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;新建内容，比如POST。 新生成的md的头部meta中&lt;code&gt;draft&lt;/code&gt;字段的值为&lt;code&gt;true&lt;/code&gt;， 当编写完成后要发布时改为&lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new posts/my-first-post.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;构建发布，生成的静态内容位于&lt;code&gt;public&lt;/code&gt;目录下，可以用于部署在nginx下。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hugo&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Contents About Flex Actionscript</title>
      <link>http://www.99steps.cn/posts/contents-about-flex-actionscript/</link>
      <pubDate>Tue, 07 Mar 2023 18:27:46 +0800</pubDate>
      <guid>http://www.99steps.cn/posts/contents-about-flex-actionscript/</guid>
      <description>&lt;p&gt;Flash 中使用的格式有swf、swc、swz. ActionScript3  对标ECScript 3， 已在2022年停止支持； 编译后生成abc 字节码，在avm2 虚拟机中运行。&lt;/p&gt;&#xA;&lt;h2 id=&#34;参考资料&#34;&gt;参考资料&lt;/h2&gt;&#xA;&lt;p&gt;Flex&#xA;&lt;a href=&#34;https://flex.apache.org/&#34;&gt;https://flex.apache.org/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Apache Royale &lt;a href=&#34;https://github.com/apache/royale-compiler&#34;&gt;https://github.com/apache/royale-compiler&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;框架&#xA;Cairngorm&#xA;&lt;a href=&#34;https://sourceforge.net/adobe/cairngorm/wiki/GettingStartedWithCairngorm/&#34;&gt;https://sourceforge.net/adobe/cairngorm/wiki/GettingStartedWithCairngorm/&lt;/a&gt;&#xA;&lt;a href=&#34;https://baike.baidu.com/item/Cairngorm/6331423&#34;&gt;https://baike.baidu.com/item/Cairngorm/6331423&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;mozilla Tamarin项目已停止支持， 项目主页已经打不开了&lt;/p&gt;&#xA;&lt;p&gt;tarmarin-redux&#xA;&lt;a href=&#34;https://hg.mozilla.org/tamarin-redux&#34;&gt;https://hg.mozilla.org/tamarin-redux&lt;/a&gt;&#xA;&lt;a href=&#34;https://www-archive.mozilla.org/projects/tamarin/&#34;&gt;https://www-archive.mozilla.org/projects/tamarin/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/adobe&#34;&gt;https://github.com/adobe&lt;/a&gt;&#xA;&lt;a href=&#34;https://github.com/adobe/aio-theme&#34;&gt;https://github.com/adobe/aio-theme&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;harman airsdk&#xA;&lt;a href=&#34;https://airsdk.harman.com/&#34;&gt;https://airsdk.harman.com/&lt;/a&gt;&#xA;&lt;a href=&#34;https://leaningtech.com/cheerpx-for-flash/&#34;&gt;https://leaningtech.com/cheerpx-for-flash/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.mozilla.org/Tamarin&#34;&gt;https://wiki.mozilla.org/Tamarin&lt;/a&gt;&#xA;MMgc is the Tamarin garbage collector.&lt;/p&gt;&#xA;&lt;p&gt;haXe is a compiler that can target Tamarin. Implemented in OCaml.&#xA;&lt;a href=&#34;http://haxe.org/&#34;&gt;http://haxe.org/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Haxe 强类型编程语言， 可编译为其它支持的类型， 有自己的虚拟机&#xA;&lt;a href=&#34;https://github.com/HaxeFoundation/haxe&#34;&gt;https://github.com/HaxeFoundation/haxe&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;adobe 下载页 &lt;a href=&#34;https://helpx.adobe.com/air/archived-docs-download.html&#34;&gt;https://helpx.adobe.com/air/archived-docs-download.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;swf反编译工具&#xA;&lt;a href=&#34;https://github.com/jindrapetrik/jpexs-decompiler/wiki&#34;&gt;https://github.com/jindrapetrik/jpexs-decompiler/wiki&lt;/a&gt;&#xA;&lt;a href=&#34;https://www.flash-decompiler.com/&#34;&gt;https://www.flash-decompiler.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;debug/console&#xA;&lt;a href=&#34;https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/Alcon.shtml&#34;&gt;https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/Alcon.shtml&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;FlexUnit&#xA;FlexMonkey&lt;/p&gt;&#xA;&lt;p&gt;vscode插件&#xA;&lt;a href=&#34;https://github.com/BowlerHatLLC/vscode-as3mxml&#34;&gt;https://github.com/BowlerHatLLC/vscode-as3mxml&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;flex 转换js&#xA;&lt;a href=&#34;https://github.com/Next2D/player&#34;&gt;https://github.com/Next2D/player&lt;/a&gt;&#xA;&lt;a href=&#34;https://github.com/apache/royale-asjs&#34;&gt;https://github.com/apache/royale-asjs&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;flash player&lt;/p&gt;&#xA;&lt;p&gt;flash cn&#xA;&lt;a href=&#34;https://www.flash.cn/&#34;&gt;https://www.flash.cn/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ruffle-rs/ruffle&#34;&gt;https://github.com/ruffle-rs/ruffle&lt;/a&gt;&#xA;A Flash Player emulator written in Rust&lt;/p&gt;&#xA;&lt;p&gt;lightspark &lt;a href=&#34;https://github.com/lightspark/lightspark&#34;&gt;https://github.com/lightspark/lightspark&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ECMA &lt;a href=&#34;https://www.ecma-international.org/publications-and-standards/standards/ecma-335/&#34;&gt;https://www.ecma-international.org/publications-and-standards/standards/ecma-335/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tamarin.sourceforge.net/&#34;&gt;https://tamarin.sourceforge.net/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;avmshell&#xA;&lt;a href=&#34;https://blog.csdn.net/isaaq/article/details/83221963&#34;&gt;https://blog.csdn.net/isaaq/article/details/83221963&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;actionscript 3 reference docs&#xA;&lt;a href=&#34;https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html&#34;&gt;https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
