<?xml version="1.0" standalone="yes"?>
<rss version="2.0">
  <channel>
    <title><![CDATA[XOYOZO RSS]]></title>
    <link><![CDATA[https://xoyozo.net]]></link>
    <description><![CDATA[XOYOZO RSS]]></description>
    <item>
      <title><![CDATA[2026世界杯赛程]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/fifa2026]]></link>
      <description><![CDATA[<p>
  <img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260609/2026fifa.jpg"/>
</p>]]></description>
      <pubDate>Tue, 09 Jun 2026 00:07:54 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[Ollama 使用集成显卡跑大模型怎么办？如何更改为用独立显卡运行？]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/ollama-use-nvidia]]></link>
      <description><![CDATA[<p>Ollama 跑大模型生成太慢，未使用独立显卡 GPU 0 NVIDIA GPU，而 GPU 1 Intel Graphics 使用率 100%，内存几乎占满，CPU 使用率也异常高，怎么办？如何改为用英伟达独立显卡来跑？</p><p>打开 NVIDIA 控制面板（NVIDIA Control Panel），展开左侧菜单中的“3D 设置”，点击“管理 3D 设置”，切到“程序设置”选项卡，在下拉框中选择 llama-server.exe 这个程序，为此程序选择首选图形处理器改为“高性能 NVIDIA 处理器”，点击右下角的“应用”保存设置。</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260604/6391620213012569946240999.png" title="image.png" alt="image.png"/></p><p>重启 Ollama。</p><p>使用 Ollama，即可在“NVIDIA GPU 活动”中看到 llama-server.exe。<br/></p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260604/6391620224165594021273668.png" title="image.png" alt="image.png"/></p>]]></description>
      <pubDate>Thu, 04 Jun 2026 12:37:29 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[Web 部署任务失败。未能验证服务器的证书。]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/ERROR_CERTIFICATE_VALIDATION_FAILED-AllowUntrustedCertificate]]></link>
      <description><![CDATA[<p>ASP.NET 网站项目发布到远程 IIS，报错：</p><pre class="brush:plain;toolbar:false">Web&nbsp;部署任务失败。(已使用指定的进程(“Web&nbsp;Management&nbsp;Service”)连接到远程计算机，但未能验证服务器的证书。如果你信任该服务器，请再次连接并允许不信任的证书。&nbsp;&nbsp;在以下位置了解更多信息:&nbsp;https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。)&nbsp;...</pre><p>参照错误信息中的网址，在项目文件中添加该配置：<br/></p><pre class="brush:xml;toolbar:false">&lt;PropertyGroup&gt;
&nbsp;&nbsp;&lt;AllowUntrustedCertificate&gt;true&lt;/AllowUntrustedCertificate&gt;
&lt;/PropertyGroup&gt;</pre><p><br/></p>]]></description>
      <pubDate>Wed, 03 Jun 2026 02:47:10 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[QQ 浏览器在 HTTPS 环境下无法接收并存储会话 Cookie，如何解决登录态问题]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/httpCookies-SameSite-None-Secure]]></link>
      <description><![CDATA[<p><strong>问题复现</strong></p><p>使用 .NET Framework 开发的网站项目，用 QQ 浏览器访问无法登录成功，用其它浏览器（如 Edge）没有问题。</p><p>只有访问 https 地址时出现问题。</p><p><br/></p><p><strong>原因</strong></p><p>在 HTTPS 协议下，现代浏览器（特别是 QQ 浏览器）会强制执行安全策略。根据规范，当 Cookie 设置了 SameSite=None 时，必须同时设置 Secure 属性，否则浏览器会静默拒绝（丢弃）该 Cookie。</p><p><br/></p><p><strong>解决方案</strong></p><p>方法一：如果您是通过 web.config 配置的，请确保 &lt;system.web&gt; 节点下的 &lt;httpCookies&gt; 设置正确，并且您的 .NET Framework 版本支持这些属性（4.7.2+）。</p><pre class="brush:xml;toolbar:false">&lt;system.web&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;httpCookies&nbsp;sameSite=&quot;None&quot;&nbsp;requireSSL=&quot;true&quot;&nbsp;/&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;sessionState&nbsp;...&nbsp;/&gt;
&lt;/system.web&gt;</pre><p>方法二：在 Global.asax 文件的 Application_PostAuthenticateRequest 或 Application_EndRequest 事件中，强制为 Cookie 添加 Secure 属性。</p><pre class="brush:c#;toolbar:false">protected&nbsp;void&nbsp;Application_PostAuthenticateRequest(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)
{
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;仅在&nbsp;HTTPS&nbsp;环境下处理
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Request.IsSecureConnection)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpCookie&nbsp;sessionCookie&nbsp;=&nbsp;Response.Cookies[&quot;ASP.NET_SessionId&quot;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sessionCookie&nbsp;!=&nbsp;null)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;强制设置&nbsp;SameSite=None&nbsp;和&nbsp;Secure
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sessionCookie.SameSite&nbsp;=&nbsp;SameSiteMode.None;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sessionCookie.Secure&nbsp;=&nbsp;true;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Cookies.Set(sessionCookie);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}</pre><p><br/></p><p><strong>检验</strong></p><p>确认 Set-Cookie 的值变为：</p><pre class="brush:plain;toolbar:false">ASP.NET_SessionId=...;&nbsp;path=/;&nbsp;HttpOnly;&nbsp;SameSite=None;&nbsp;Secure</pre><p><br/></p>]]></description>
      <pubDate>Wed, 27 May 2026 02:38:03 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[赶紧修复这个潜伏了18年的 nginx 漏洞]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability]]></link>
      <description><![CDATA[<p>报道称 NGINX 被曝一组高危漏洞，已潜伏约 18 年，威胁全球约三分之一的网络服务器。</p><p><span style="text-wrap-mode: nowrap;">本次曝光的漏洞如下：</span></p><p><span style="text-wrap-mode: nowrap;">CVE-2026-42945 - (9.2 Critical)</span></p><p><span style="text-wrap-mode: nowrap;">CVE-2026-42946 - (8.3 High)</span></p><p><span style="text-wrap-mode: nowrap;">CVE-2026-40701 - (6.3 Medium)</span></p><p><span style="text-wrap-mode: nowrap;">CVE-2026-42934 - (6.3 Medium)</span></p><p>攻击者无需登录认证，只需发送一条特制 HTTP 请求，就能让 NGINX 工作进程崩溃；在合适条件下，还可能拿到服务器远程代码执行权限。</p><p><br/></p><p><strong>修复方案一</strong></p><p>NGINX 升级到 1.31.0 或 1.30.1</p><p><br/></p><p><strong>修复方案二</strong></p><p><em>若你使用的是&nbsp;OpenResty 或宝塔面板，没有更新的 nginx 版本选择，那么手动修复此漏洞。</em></p><p>将 rewrite 规则中的未命名正则捕获改成命名捕获。</p><p>示例：</p><p>原来的写法：</p><pre class="brush:cpp;toolbar:false;">rewrite&nbsp;^(.*)$&nbsp;/index.php?s=$1&nbsp;last;</pre><p>修改为：<br/></p><pre class="brush:cpp;toolbar:false;">rewrite&nbsp;^(?&lt;a&gt;.*)$&nbsp;/index.php?s=$a&nbsp;last;</pre><p><br/></p><p>参考文献：</p><ol class=" list-paddingleft-2" style="list-style-type: decimal;"><li><p><a href="https://depthfirst.com/research/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability" target="_blank">NGINX Rift: Achieving NGINX Remote Code Execution via an 18-Year-Old Vulnerability</a></p></li><li><p><a href="https://www.ithome.com/0/950/316.htm" target="_blank">NGINX 曝 9.2 分高危漏洞：潜伏 18 年，威胁全球约 1/3 服务器</a><br/></p></li></ol>]]></description>
      <pubDate>Thu, 14 May 2026 08:54:55 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[Spectre.Console 常用示例]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/SpectreConsole-demo]]></link>
      <description><![CDATA[<p>以下是 Spectre.Console 的核心功能示例，涵盖最常用的输出和交互场景：</p><p><br/></p><h2>1. 基础富文本输出</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239487542241995795034.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">using&nbsp;Spectre.Console;

//&nbsp;使用&nbsp;Markup&nbsp;语法（类似&nbsp;BBCode）
AnsiConsole.Markup(&quot;[bold&nbsp;green]成功！[/]&nbsp;文件已保存。\n&quot;);
AnsiConsole.Markup(&quot;[red]错误：[/]&nbsp;无法连接到服务器。\n&quot;);

//&nbsp;混合样式
AnsiConsole.Markup(&quot;[underline&nbsp;blue]https://example.com[/]\n&quot;);

//&nbsp;自动换行写
AnsiConsole.Write(new&nbsp;Panel(&quot;[yellow]警告[/]&nbsp;磁盘空间不足&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.Header(&quot;系统通知&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.Border(BoxBorder.Rounded));</pre><p><br/></p><h2>2. 表格</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239489930179444702361.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;table&nbsp;=&nbsp;new&nbsp;Table();
table.AddColumn(&quot;[u]ID[/]&quot;);
table.AddColumn(new&nbsp;TableColumn(&quot;[u]名称[/]&quot;).Centered());
table.AddColumn(&quot;[u]状态[/]&quot;);

table.AddRow(&quot;1&quot;,&nbsp;&quot;订单服务&quot;,&nbsp;&quot;[green]运行中[/]&quot;);
table.AddRow(&quot;2&quot;,&nbsp;&quot;支付网关&quot;,&nbsp;&quot;[red]离线[/]&quot;);
table.AddRow(&quot;3&quot;,&nbsp;&quot;消息队列&quot;,&nbsp;&quot;[yellow]警告[/]&quot;);

AnsiConsole.Write(table);</pre><p><br/></p><h2>3. 进度条 / 状态指示</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239493017913526615951.png" title="image.png" alt="image.png"/><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239495296302388101514.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">//&nbsp;带进度条的循环任务
await&nbsp;AnsiConsole.Progress()
&nbsp;&nbsp;&nbsp;&nbsp;.StartAsync(async&nbsp;ctx&nbsp;=&gt;
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;task1&nbsp;=&nbsp;ctx.AddTask(&quot;[green]下载文件[/]&quot;,&nbsp;maxValue:&nbsp;100);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;task2&nbsp;=&nbsp;ctx.AddTask(&quot;[green]处理数据[/]&quot;,&nbsp;maxValue:&nbsp;100);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!ctx.IsFinished)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task1.Increment(1.5);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task2.Increment(0.8);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await&nbsp;Task.Delay(50);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});

//&nbsp;不确定时长的旋转状态
await&nbsp;AnsiConsole.Status()
&nbsp;&nbsp;&nbsp;&nbsp;.StartAsync(&quot;正在连接...&quot;,&nbsp;async&nbsp;ctx&nbsp;=&gt;
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await&nbsp;Task.Delay(3000);&nbsp;//&nbsp;模拟工作
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AnsiConsole.MarkupLine(&quot;[green]连接成功！[/]&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;});</pre><p><br/></p><h2>4. 交互式提示</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239498712053645502913.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">//&nbsp;确认
if&nbsp;(AnsiConsole.Confirm(&quot;是否继续安装？&quot;))
{
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;执行安装
}

//&nbsp;文本输入（带验证）
var&nbsp;name&nbsp;=&nbsp;AnsiConsole.Prompt(
&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;TextPrompt&lt;string&gt;(&quot;请输入用户名：&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ValidationErrorMessage(&quot;[red]用户名不能为空[/]&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Validate(input&nbsp;=&gt;&nbsp;!string.IsNullOrWhiteSpace(input)));

//&nbsp;选择列表
var&nbsp;fruit&nbsp;=&nbsp;AnsiConsole.Prompt(
&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SelectionPrompt&lt;string&gt;()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Title(&quot;请选择最喜欢的水果&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.AddChoices(new[]&nbsp;{&nbsp;&quot;苹果&quot;,&nbsp;&quot;香蕉&quot;,&nbsp;&quot;橙子&quot;,&nbsp;&quot;葡萄&quot;&nbsp;}));

AnsiConsole.MarkupLine($&quot;你选择了：[green]{fruit}[/]&quot;);

//&nbsp;多选
var&nbsp;colors&nbsp;=&nbsp;AnsiConsole.Prompt(
&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;MultiSelectionPrompt&lt;string&gt;()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Title(&quot;请选择颜色&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.AddChoices(new[]&nbsp;{&nbsp;&quot;红色&quot;,&nbsp;&quot;绿色&quot;,&nbsp;&quot;蓝色&quot;,&nbsp;&quot;黄色&quot;&nbsp;}));</pre><p><br/></p><h2>5. 树形结构</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239502727710954527704.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;root&nbsp;=&nbsp;new&nbsp;Tree(&quot;[yellow]项目结构[/]&quot;);
var&nbsp;src&nbsp;=&nbsp;root.AddNode(&quot;src&quot;);
src.AddNode(&quot;Program.cs&quot;);
src.AddNode(&quot;Services&quot;);
src.AddNode(&quot;Models&quot;);

var&nbsp;tests&nbsp;=&nbsp;root.AddNode(&quot;tests&quot;);
tests.AddNode(&quot;UnitTests&quot;);

AnsiConsole.Write(root);</pre><p><br/></p><h2>6. 布局 / 网格</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239505215208298013913.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;layout&nbsp;=&nbsp;new&nbsp;Layout(&quot;Root&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.SplitColumns(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Layout(&quot;Left&quot;).Size(30),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Layout(&quot;Right&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.SplitRows(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Layout(&quot;Top&quot;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Layout(&quot;Bottom&quot;)));

layout[&quot;Left&quot;].Update(new&nbsp;Panel(&quot;导航栏&quot;));
layout[&quot;Top&quot;].Update(new&nbsp;Panel(&quot;主内容区&quot;));
layout[&quot;Bottom&quot;].Update(new&nbsp;Panel(&quot;日志输出&quot;));

AnsiConsole.Write(layout);</pre><p><br/></p><h2>7. 实时更新</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239510376053518476185.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;table&nbsp;=&nbsp;new&nbsp;Table().AddColumn(&quot;Time&quot;).AddColumn(&quot;Message&quot;);
table.AddRow(&quot;10:00&quot;,&nbsp;&quot;系统启动&quot;);

await&nbsp;AnsiConsole.Live(table)
&nbsp;&nbsp;&nbsp;&nbsp;.StartAsync(async&nbsp;ctx&nbsp;=&gt;
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;5;&nbsp;i++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await&nbsp;Task.Delay(1000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.AddRow($&quot;10:0{i}&quot;,&nbsp;$&quot;事件&nbsp;{i}&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.Refresh();&nbsp;//&nbsp;刷新显示
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});</pre><p><br/></p><h2>8. 带样式的异常显示</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260421/6391239513664835336161506.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">try
{
&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;InvalidOperationException(&quot;操作失败&quot;);
}
catch&nbsp;(Exception&nbsp;ex)
{
&nbsp;&nbsp;&nbsp;&nbsp;AnsiConsole.WriteException(ex,&nbsp;ExceptionFormats.ShortenPaths);
}</pre><p><br/></p><h2>9. 日历</h2><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246416179731295957956.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;calendar&nbsp;=&nbsp;new&nbsp;Calendar(2026,&nbsp;4);
calendar.AddCalendarEvent(2026,&nbsp;4,&nbsp;22);&nbsp;//&nbsp;标记日期
calendar.HighlightStyle(Style.Parse(&quot;yellow&nbsp;bold&quot;));
AnsiConsole.Write(calendar);</pre><p><br/></p><p>10.&nbsp;条形图 / 柱状图</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246425198836408685666.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">AnsiConsole.Write(new&nbsp;BarChart()
&nbsp;&nbsp;&nbsp;&nbsp;.Width(60)
&nbsp;&nbsp;&nbsp;&nbsp;.Label(&quot;[green&nbsp;bold]项目进度[/]&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.CenterLabel()
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;后端&quot;,&nbsp;80,&nbsp;Color.Green)
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;前端&quot;,&nbsp;65,&nbsp;Color.Blue)
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;测试&quot;,&nbsp;40,&nbsp;Color.Red));</pre><p><br/></p><p>11. 分解图</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246488853737243175261.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">AnsiConsole.Write(new&nbsp;BreakdownChart()
&nbsp;&nbsp;&nbsp;&nbsp;.Width(60)
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;CPU&quot;,&nbsp;45,&nbsp;Color.Red)
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;内存&quot;,&nbsp;30,&nbsp;Color.Blue)
&nbsp;&nbsp;&nbsp;&nbsp;.AddItem(&quot;磁盘&quot;,&nbsp;25,&nbsp;Color.Green));</pre><p><br/></p><p>12. 规则线</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246496095171171560976.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">AnsiConsole.Write(new&nbsp;Rule(&quot;[red]警告区域[/]&quot;).RuleStyle(&quot;red&quot;).LeftJustified());
AnsiConsole.WriteLine(&quot;内容&quot;);
AnsiConsole.Write(new&nbsp;Rule().RuleStyle(&quot;green&quot;));</pre><p><br/></p><p>13. 文本样式</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246505432037863173744.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">//&nbsp;大字标题
AnsiConsole.Write(new&nbsp;FigletText(&quot;Hello&quot;).Color(Color.Green));
//&nbsp;Emoji
AnsiConsole.Markup(&quot;:check_mark_button:&nbsp;成功&nbsp;:cross_mark:&nbsp;失败&quot;);</pre><p><br/></p><p>14. 网格</p><p><img src="//cdn.xoyozo.net/net.xoyozo/upload/ueditor/20260422/6391246517015701001421377.png" title="image.png" alt="image.png"/></p><pre class="brush:c#;toolbar:false">var&nbsp;grid&nbsp;=&nbsp;new&nbsp;Grid();
grid.AddColumn(new&nbsp;GridColumn().NoWrap().PadRight(4));
grid.AddColumn();

grid.AddRow(&quot;[b]名称[/]&quot;,&nbsp;&quot;Spectre.Console&quot;);
grid.AddRow(&quot;[b]版本[/]&quot;,&nbsp;&quot;0.49.1&quot;);
grid.AddRow(&quot;[b]许可[/]&quot;,&nbsp;&quot;MIT&quot;);

AnsiConsole.Write(grid);</pre><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p>]]></description>
      <pubDate>Tue, 21 Apr 2026 11:05:39 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[Windows Server 服务器没有安装物理声卡，如何播放声音]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/windows-server-vb-cable]]></link>
      <description><![CDATA[<p>安装虚拟声卡&nbsp;VB-Cable 搞定。</p><p>若重启后未生效，在服务中启动&nbsp;Windows Audio、Windows Audio Endpoint Builder 和&nbsp;Multimedia Class Scheduler（如果有），并设置为自动启动。</p><p><br/></p><p>如何希望使用 OBS 录制系统声音，在 OBS 菜单 - 文件 - 设置 - 音频 - 桌面音频 中选择正确的音源（如“远程音频”）。</p>]]></description>
      <pubDate>Mon, 20 Apr 2026 14:28:40 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[C盘满了怎么办？WinSxS 可以删吗？]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/win-c-winsxs-delete]]></link>
      <description><![CDATA[<p><em>如果你不会激活 Windows，本文可能不适用。</em></p><p>C盘满了如何清理？特别是 C:\Windows\WinSxS 占用大量磁盘空间，删又不敢删。</p><p>推荐一个比较完美又彻底有效的办法：</p><p>设置-系统-恢复-使用 Windows 更新修复问题。</p><p>或下载与原系统版本一致的 <a href="https://xoyozo.net/Software/Index/Windows" target="_blank">Windows 原版安装镜像</a>，双击运行，选择<strong>保留个人文件和应用</strong>，等待约半个小时。</p><p>完成后，原来安装的应用程序和设置会保留，无用的系统文件会移至 C:\Windows.old。</p><p>若新系统运行没有问题，则可删除该目录（设置-系统-存储-清理建议），释放磁盘空间；若有问题，可还原到原系统（设置-系统-恢复）。</p>]]></description>
      <pubDate>Sun, 19 Apr 2026 02:53:27 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[clawhub 安装技能报错：Rate limit exceeded]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/clawhub-rate-limit-exceeded]]></link>
      <description><![CDATA[<p><span style="color:#071437;font-family:Inter, Helvetica, sans-serif"><span style="font-size: 13px; background-color: rgb(255, 255, 255);">安装技能时</span></span></p><pre class="brush:ps;toolbar:false">clawhub&nbsp;install&nbsp;xxx</pre><p><span style="background-color: rgb(255, 255, 255); color: rgb(7, 20, 55); font-family: Inter, Helvetica, sans-serif; font-size: 13px;">报错：</span></p><pre class="brush:plain;toolbar:false">Rate&nbsp;limit&nbsp;exceeded</pre><p><span style="background-color: rgb(255, 255, 255); color: rgb(7, 20, 55); font-family: Inter, Helvetica, sans-serif; font-size: 13px;">原因：</span></p><p><strong><span style="color: rgb(7, 20, 55); font-family: Inter, Helvetica, sans-serif; font-size: 13px; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">未登录</span></strong></p><p><span style="color: rgb(7, 20, 55); font-family: Inter, Helvetica, sans-serif; font-size: 13px; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">需要先执行：</span></p><pre class="brush:ps;toolbar:false">clawhub&nbsp;login</pre><p><span style="color: rgb(7, 20, 55); font-family: Inter, Helvetica, sans-serif; font-size: 13px; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);"></span><br/></p>]]></description>
      <pubDate>Thu, 12 Mar 2026 08:51:12 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[clawhub login 遇到 Missing state.]]></title>
      <link><![CDATA[https://xoyozo.net/Blog/Details/clawhub-login-missing-state]]></link>
      <description><![CDATA[<p>明明已登录 clawhub.ai 网站，但是 clawhub login 的时候仍然提示：<br/></p><p><span style="text-wrap-mode: nowrap;">CLI login</span></p><p><span style="text-wrap-mode: nowrap;">Missing state.</span></p><p><span style="text-wrap-mode: nowrap;">Run the CLI again to start a fresh login.</span></p><p><br/></p><p>解决办法：</p><p>把 PowerShell 中的那个网址复制出来，在浏览器上打开即可。网址格式类似：</p><pre class="brush:plain;toolbar:false">https://clawhub.ai/cli/auth?redirect_uri=http%3A%2F%2F127.0.0.1%3A64172%2Fcallback&amp;label_b64=******&amp;state=******</pre><p><br/></p>]]></description>
      <pubDate>Thu, 12 Mar 2026 08:45:50 GMT</pubDate>
    </item>
  </channel>
</rss>