<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Hao_cen</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.hellocraft.xyz/</id>
  <link href="https://www.hellocraft.xyz/" rel="alternate"/>
  <link href="https://www.hellocraft.xyz/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Hao_cen</rights>
  <title>Haocen的开发服务站</title>
  <updated>2025-08-31T07:24:07.000Z</updated>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="建站" scheme="https://www.hellocraft.xyz/category/www/"/>
    <content>
      <![CDATA[<p>因为备案填了这个 所以得展示一下现在这个（</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/18/</id>
    <link href="https://www.hellocraft.xyz/archives/18/"/>
    <published>2025-08-31T07:23:00.000Z</published>
    <summary>
      <![CDATA[<p>因为备案填了这个 所以得展示一下现在这个（</p>]]>
    </summary>
    <title>关于Title</title>
    <updated>2025-08-31T07:24:07.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <content>
      <![CDATA[<p>rt<br>maimai.bakapiano.com在很多运营商都没法直接打开<br>于是本站提供了一个镜像页面<br>maimai.hellocraft.xyz<br>该url也可以作为查分代理使用 端口同为2560（不用记两个域名了）<br>使用注意：<br>所有url会被记录在本地日志中（与官方站行为一致）<br>代理站与官方链接不定期同步</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/16/</id>
    <link href="https://www.hellocraft.xyz/archives/16/"/>
    <published>2023-06-08T17:52:50.000Z</published>
    <summary>
      <![CDATA[<p>rt<br>maimai.bakapiano.com在很多运营商都没法直接打开<br>于是本站提供了一个镜像页面<br>maimai.hellocraft.xyz<br>该url也可以作为查分代理使用 端口同为2560（不用记两个域名了）<br>使用注意：<br>所有url]]>
    </summary>
    <title>maimai数据更新器镜像</title>
    <updated>2023-06-08T17:52:50.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="开发" scheme="https://www.hellocraft.xyz/category/dev/"/>
    <content>
      <![CDATA[<h1 id="问题核心"><a href="#问题核心" class="headerlink" title="问题核心"></a>问题核心</h1><p>如果RecyclerView被NestedScrollView包裹<br>那么加载的时候会预创建所有的ViewHolder</p><h1 id="问题表现"><a href="#问题表现" class="headerlink" title="问题表现"></a>问题表现</h1><p>如果你刚好还使用了 Paging 来分页加载<br>那么很抱歉<br>NestedScrollView 会加载到底部的 ViewHolder 然后触发 Paging 的下一页加载<br>直到没有下一页可以加载<br>如果你的加载恰好还有图片等网络请求<br><em>性能雪崩</em></p><h1 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h1><p>把 NestedScrollView 换成 LinearLayout (什么破解决方法<br>虽然这样替换在用户界面上显示效果完全一致</p><p>总之不要使得 RecyclerView 在 NestedScrollView 里面就行</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/15/</id>
    <link href="https://www.hellocraft.xyz/archives/15/"/>
    <published>2023-04-07T17:56:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="问题核心"><a href="#问题核心" class="headerlink" title="问题核心"></a>问题核心</h1><p>如果RecyclerView被NestedScrollView包裹<br>那么加载的时候会预创建所有的ViewHolder<]]>
    </summary>
    <title>RecyclerView 和 NestedScrollView 一起使用的注意事项</title>
    <updated>2023-04-07T17:58:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="开发" scheme="https://www.hellocraft.xyz/category/dev/"/>
    <category term="bilibili" scheme="https://www.hellocraft.xyz/tag/bilibili/"/>
    <content>
      <![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>总所周知 叔叔会给很多主播的直播流进行二压<br>如果一开播就蹲在直播间的话可以获取到真原画的直播流<br>但你总不可能一直24h蹲在直播间等吧（</p><h1 id="探索"><a href="#探索" class="headerlink" title="探索"></a>探索</h1><p>对直播间按下F12 可以找到获取直播流的请求<code>getRoomPlayInfo</code><br>其中有这么一段 <code>&quot;extra&quot;:&quot;expires=1674981611&quot;</code><br>直播流是可以缓存的 于是我们可以用自动程序在开播时先缓存对应的流 然后在想要看直播的时候验证缓存的流</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><p>遵循着不要重复造轮子的指导 我们使用已有的 <a href="https://rec.danmuji.org/">录播姬</a> 对直播进行监听<br><em>如果不需要录制的话在添加时关闭<code>自动录制</code>即可</em><br>自己编写程序作为中间件对直播流进行缓存 <a href="https://gist.github.com/Haocen2004/f08d68aaded40438f93204aa92e6c094">Gist链接</a><br>使用油猴脚本给网页直播间添加替换直播流功能 <a href="https://github.com/c-basalt/bilibili-live-seeker-script">脚本github仓库</a><br>所以就有了<br><img src="https://www.hellocraft.xyz/usr/uploads/2023/01/1481476531.png" alt="2023-01-29T08:41:02.png"><br>流程：<br>录播姬监听到直播开始-&gt;发送webhook给中间件-&gt;验证并缓存真原画流<br>用户开始观看直播-&gt;访问中间件尝试获取缓存的真原画流-&gt;通过脚本对直播流重定向</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>画质、稳定性、延迟只能三选二<br>这里选择了画质和延迟<br>虽然现在家宽的稳定性也不差</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/12/</id>
    <link href="https://www.hellocraft.xyz/archives/12/"/>
    <published>2023-01-29T08:47:37.000Z</published>
    <summary>
      <![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>总所周知 叔叔会给很多主播的直播流进行二压<br>如果一开播就蹲在直播间的话可以获取到真原画的直播流<br>但你总不可能一直24h蹲在直播间]]>
    </summary>
    <title>B站观看真原画直播</title>
    <updated>2023-01-29T08:47:37.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="生活" scheme="https://www.hellocraft.xyz/category/life/"/>
    <content>
      <![CDATA[<p>那<br>Fafu（发福？）<br>也还行，跟我体型满配（<br>然后想去计算机相关专业没去成<br>还是补录进的水产养殖（<br>但属实是捡漏王<br>没有到一本线 进了个一本院校<br>这专业课表比较空 自由时间还蛮多的 看看整点别的活（</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/11/</id>
    <link href="https://www.hellocraft.xyz/archives/11/"/>
    <published>2022-09-22T12:16:00.000Z</published>
    <summary>
      <![CDATA[<p>那<br>Fafu（发福？）<br>也还行，跟我体型满配（<br>然后想去计算机相关专业没去成<br>还是补录进的水产养殖（<br>但属实是捡漏王<br>没有到一本线 进了个一本院校<br>这专业课表比较空 自由时间还蛮多的 看看整点别的活（</p>]]>
    </summary>
    <title>大 学</title>
    <updated>2022-09-22T12:17:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="开发" scheme="https://www.hellocraft.xyz/category/dev/"/>
    <content>
      <![CDATA[<h1 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h1><p>开源库 <a href="https://github.com/FZSZXXB/ClassSchedule">https://github.com/FZSZXXB/ClassSchedule</a><br>Demo <a href="https://dev.hellocraft.xyz/ClassSchedule/">https://dev.hellocraft.xyz/ClassSchedule/</a></p><h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>学校信息部发布了一个任务 需要在微信公众号上快捷查询课程表<br>其实还有一堆别的任务 摸了个最轻松的</p><h2 id="干活"><a href="#干活" class="headerlink" title="干活"></a>干活</h2><h3 id="前端"><a href="#前端" class="headerlink" title="前端"></a>前端</h3><p>随便找了个课程表js糊上去<br>然后稍微美化了一下<br>加上 cookie 和 localStorage 的缓存免得每次打开都得重新选择班级<br>再加个pwa方便添加到桌面<br><img src="https://www.hellocraft.xyz/usr/uploads/2022/05/1567889650.png" alt="QQ截图20220529195549.png"><br><a href="https://github.com/Hzy0913/Timetable">开源库链接</a></p><h3 id="后端"><a href="#后端" class="headerlink" title="后端"></a>后端</h3><p>因为前端的暴力数据填充（详见github data.js）<br>总不能每个学期手写json<br>然后就打开了手上唯一能查看学校课程表的<code>内部</code>app<em>校智达</em><br>但这破玩意需要登录账户 而且是校方发放的<br>还好手上有个公用（？）账户<br>黄鸟启动 capture package<br>一堆api套娃 拉到了课程表<br>但测试环境用的是固定token接下来研究登陆部分<br>果然 密码是加密的 算法还一眼看不出来<br><img src="https://www.hellocraft.xyz/usr/uploads/2022/05/3572365848.png" alt="QQ截图20220529200600.png"><br>逆出来的一部分代码</p><h4 id="逆向（众所周知，就不放图了）"><a href="#逆向（众所周知，就不放图了）" class="headerlink" title="逆向（众所周知，就不放图了）"></a>逆向（众所周知，就不放图了）</h4><p>apk解压 dex2jar jdgui三件套准备<br>等等 mt管理器显示这玩意是360加固?<br><code>https://www.google.com/search?q=360加固脱壳</code><br>噼里啪啦一顿操作 貌似有用上xposed 终于拉到了正确的dex<br>dex2jar一下 jdgui打开<br>还好混淆的不多<br>直接搜索uri关键词 还好没有加密 直接定位到加密部分<br>发现还是看不懂<br>直接换成java写自动获取 把加密代码全部复制出来 debug到能跑<br>然后在找个json库把数据格式化输出<br>完工</p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>项目最初完工于2021&#x2F;03&#x2F;12<br>最开始还是想着自己完全新做一个的<br>然后发现还是用造好的轮子香<br>cookie 和 localStorage 都是因为自用而加的功能（<br>以及<br>学校服务器三天两头维护&#x2F;不开机<br>只好本地维护一份自用<br>以及自动更新没写说明 而且只给了源码<br>希望后面的人会用<br><del>不过现在看来没有人会用</del></p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/8/</id>
    <link href="https://www.hellocraft.xyz/archives/8/"/>
    <published>2022-05-29T12:12:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h1><p>开源库 <a href="https://github.com/FZSZXXB/ClassSchedule">https:/]]>
    </summary>
    <title>学校课程表自动更新</title>
    <updated>2022-05-29T12:27:32.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Hao_cen</name>
    </author>
    <category term="建站" scheme="https://www.hellocraft.xyz/category/www/"/>
    <content>
      <![CDATA[<p>dns配置 <code>*.{三级域名}.A.ip</code> 当然不用通配符也行<br>然后在 <code>Nginx</code> 的 <code>server_name</code> 里面配置 <code>{四级域名}.{三级域名}.example.com</code><br>记得保留 <code>{三级域名}.A.ip</code> 不然 <code>{三级域名}.example.com</code> 就不能访问了</p>]]>
    </content>
    <id>https://www.hellocraft.xyz/archives/4/</id>
    <link href="https://www.hellocraft.xyz/archives/4/"/>
    <published>2022-05-28T11:30:00.000Z</published>
    <summary>
      <![CDATA[<p>dns配置 <code>*.{三级域名}.A.ip</code> 当然不用通配符也行<br>然后在 <code>Nginx</code> 的 <code>server_name</code> 里面配置 <code>{四级域名}.{三级域名}.example.com</cod]]>
    </summary>
    <title>四级域名配置记录</title>
    <updated>2022-05-28T11:31:58.000Z</updated>
  </entry>
</feed>
