博客 (113)

外星人笔记本电脑键盘突然失灵(我的是 m15 R6),尝试过重启电脑、长按电源键(强制关机、切换电脑性能)、卸载键盘驱动、BIOS 恢复默认设置都没有效果。多次尝试后恢复正常,总结经验:

办法一:关机、拔掉电源、插上电源、再开机,就能恢复正常。

办法二:长按电源键直到关机成功,长按电源键直至开机完成。

若无效,强制关机、插拔电源,多试几次。

总之,这电脑不用的时候尽量关机,直接合上盖子会出现自动苏醒、键盘失灵等一系列问题。


2023年9月补充,最近发现直接合上盖子没有出现自动苏醒,先睡眠再拔电源也没有出现苏醒,可能与我经常在 Alienware Update 和 SupportAssist 中更新驱动和固件有关。

2024年6月补充,出现键盘失灵可以试试合上盖子再打开,大概率能恢复。

xoyozo 3 年前
11,691

本文使用 ASP.NET 6 版本 Senparc.Weixin.Sample.MP 示例项目改造。


第一步 注册多公众号

方法一:打开 appsettings.json 文件,在 SenparcWeixinSetting 节点内添加数组节点 Items,该对象类型同 SenparcWeixinSetting。

//Senparc.Weixin SDK 设置
"SenparcWeixinSetting": {
  "IsDebug": true,
  "Token": "",
  "EncodingAESKey": "",
  "WeixinAppId": "",
  "WeixinAppSecret": "",
  "Items": [
    {
      "IsDebug": true,
      "Token": "a",
      "EncodingAESKey": "a",
      "WeixinAppId": "a",
      "WeixinAppSecret": "a"
    },
    {
      "IsDebug": true,
      "Token": "b",
      "EncodingAESKey": "b",
      "WeixinAppId": "b",
      "WeixinAppSecret": "b"
    }
  ]
}

方法二:修改 Program.cs 文件,在 UseSenparcWeixin 方法中注册多个公众号信息。

var registerService = app.UseSenparcWeixin(app.Environment,
    null /* 不为 null 则覆盖 appsettings  中的 SenparcSetting 配置*/,
    null /* 不为 null 则覆盖 appsettings  中的 SenparcWeixinSetting 配置*/,
    register => { /* CO2NET 全局配置 */ },
    (register, weixinSetting) =>
    {
        //注册公众号信息(可以执行多次,注册多个公众号)
        //register.RegisterMpAccount(weixinSetting, "【盛派网络小助手】公众号");
        foreach (var mp in 从数据库或配置文件中获取的公众号列表)
        {
            register.RegisterMpAccount(new SenparcWeixinSetting
            {
                //IsDebug = true,
                WeixinAppId = mp.AppId,
                WeixinAppSecret = mp.AppSecret,
                Token = mp.Token,
                EncodingAESKey = mp.EncodingAeskey,
            }, mp.Name);
        }
    });

完成后,我们可以从 Config.SenparcWeixinSetting.Items 获取这些信息。


第二步 接入验证与消息处理

打开 WeixinController 控制器,将构造函数改写为:

public WeixinController(IHttpContextAccessor httpContextAccessor)
{
    AppId = httpContextAccessor.HttpContext!.Request.Query["appId"];
    var MpSetting = Services.MPService.MpSettingByAppId(AppId);
    Token = MpSetting.Token;
    EncodingAESKey = MpSetting.EncodingAESKey;
}

示例中 Services.MPService.MpSettingByAppId() 方法实现从 Config.SenparcWeixinSetting.Items 返回指定 appId 的公众号信息。

为使 IHttpContextAccessor 注入生效,打开 Program.cs,在行

builder.Services.AddControllersWithViews();

下方插入

builder.Services.AddHttpContextAccessor();

这样,我们就可以在构造函数中直接获取地址栏中的 appId 参数,找到对应的公众号进行消息处理。


第三步 消息自动回复中的 AppId

打开 CustomMessageHandler.cs,将 

private string appId = Config.SenparcWeixinSetting.MpSetting.WeixinAppId;
private string appSecret = Config.SenparcWeixinSetting.MpSetting.WeixinAppSecret;

替换为:

private string appId = null!;
private string appSecret = null!;

并在构造函数中插入

appId = postModel.AppId;
appSecret = Services.MPService.MpSettingByAppId(postModel.AppId).WeixinAppSecret;

这样,本页中使用的 appId / appSecret 会从 postModel 中获取,而非默认公众号。postModel 已在 WeixinController 中赋值当前的 appId。

改造后,我们可以在 OnTextRequestAsync() 等处理消息的方法中可以判断 appId 来处理不同的消息。


第四步 其它功能和接口

其它功能和接口均可用指定的 AppId 和对应的 AppSecret 进行调用。

xoyozo 3 年前
5,719

Senparc.Weixin.Sample.MP 盛派微信公众平台示例项目在 VS 中运行正常,当发布到 IIS 后出现应用程序池自动停止的情况,在服务器管理器中找到 .NET Runtime 错误,可以看到错误原因:

\App_Data\SenparcTraceLog 目录需要写入权限。

image.png

以下目录也需要写入权限:

\App_Data\WeChat_OfficialAccount

\App_Data\NeuChar

xoyozo 3 年前
1,619

论坛出现动态页面打开或刷新非常慢(超过半分钟),甚至打不开,该页无法显示,502 Bad Gateway 等情况,TTFB 计时需要好几秒。

微信图片_20220528233028.png

切换 nginx 版本、php 版本 等均无效果,甚至购买新的 ECS 重新搭建环境也是效果甚微。

最终在阿里云 RDS 管理中,手动主备库切换,问题得以解决。

image.png

因此大概率是原主库有问题(有损坏的表需要修复或锁等情况)。

查询故障时间段的慢 SQL,发现某表的锁等待时间特别长,不知道是不是这个表的原因导致的。

image.png

次日,提交工单得到回复是原主库(现备库)会自动修复,经再次主备库切换测试得到了肯定的结果。

再次日,又遇到同样的打开慢的情况,这次直接找到慢 SQL 中锁等待时间较长的表,优化(OPTIMIZE TABLE)(虽然是 InnoDB),立刻解决了问题。

xoyozo 4 年前
5,725

官方并没有“蓝牙钥匙”一说,平时讨论的蔚来蓝牙钥匙一般指:

1、智能钥匙(即物理钥匙)

2、蔚来 App 中的“蓝牙解锁启动”功能

本文指后者。


如果未开启“蓝牙解锁启动”,那么在 App 中解锁车门时,必须勾选“同时启动车辆”,否则是无法挂档的。

开启后,手机在车内即可将车开走。

所以在开启的情况下使用 App 解锁时,勾与不勾“同时启动车辆”效果是一样的。


ET7 开启蓝牙解锁启动后,手机靠近车辆会自动解锁(门把手需要按一下才能展开),EC6 必须打开 App 解锁车门。

那是不是说,如果手机丢了,ET7 也丢了?


微信图片_20220612101953.jpg微信图片_20220612101958.jpg


App 5.3.6 | Aspen 3.1.2 | 2022年5月

xoyozo 4 年前
8,196
[
  {
    "outputFileName": "wwwroot/js/Admin/Blog/List.js",
    "inputFiles": [
      "Areas/Admin/Views/Blog/List.cshtml.js"
    ]
  }
]

JS 源文件在视图目录,独立于 .cshtml 文件,又折叠于 .cshtml 文件。

输出目录在 wwwroot 中,若文件名不以“.min.js”结尾,那么会自动生成“.js”和“.min.js”两个文件,分别在开发模式和生产模式的视图中引用。

缺点:只更改 JS 内容,执行“生成解决方案”项目不会重新编译更新 wwwroot 中的 .js 和 .min.js 文件,这时使用“重新生成解决方案”可以解决这个问题。

xoyozo 4 年前
4,150

第一步:下载安装 OBS Studio 插件:Advanced Scene Switcher

第二步:在 OBS 中预先添加两个可供直播的场景

第三步:在 OBS 菜单中打开:工具 - 高级场景切换器

切换器的功能十分强大,这里实现一种简单的随机场景切换。

切换到“随机场景列表”选项卡,点左下角“+”按钮添加现有场景,并设置转场特效和保留时间(单位“秒”)

image.png

切换到“通用”选项卡,点击“启动”

image.png

现在可以在主窗口中看到场景切换效果了。

如果设置特殊的转场特效,在主窗口的“转场特效”中添加后,可以“高级场景切换器”中选用。

image.png

xoyozo 4 年前
23,967

安装 Windows 11 的外星人笔记本电脑,当关闭盖子,或按下电源键,或直接在系统里点击“睡眠”按钮均不能使系统正常睡眠,可能的原因如下:

  • 正在运行 Alienware Mobile Connect

  • 迅雷的“离线模式”开启


注意:当接通电源的电脑关闭盖子,系统会执行睡眠,但当拔下电源线时,又会自动唤醒,可谓奇葩。这一点经过外星人官方确认,外星人机子都是这样的。


另外,当正在睡眠的笔记本电脑插上电源,或打开盖子,或按下电源键,均会唤醒。


因此,正确的睡眠步骤:关闭阻止睡眠的程序,断开电源,关闭盖子。

xoyozo 4 年前
5,513

Linux 设置服务开机自动启动的方式有好多种,这里介绍一下通过 chkconfig 命令添加脚本为开机自动启动的方法。

  1. 编写脚本 ossftp(这里以开机启动 ossftp 服务为例),脚本内容如下:

    #!/bin/sh
    #chkconfig: 2345 80 90
    #description: 开机自动启动的脚本程序
    
    # 开启 ossftp 服务
    /root/ossftp-1.2.0-linux-mac/start.sh &

    脚本第一行 “#!/bin/sh” 告诉系统使用的 shell;

    脚本第二行 “#chkconfig: 2345 80 90” 表示在 2/3/4/5 运行级别启动,启动序号(S80),关闭序号(K90);

    脚本第三行 表示的是服务的描述信息;

    要执行的文件(示例中的 /root/ossftp-1.2.0-linux-mac/start.sh)必须设置“可执行”权限,命令结尾的“&”可使进程持续。

    注意: 第二行和第三行必写,否则会出现如“服务 ossftp 不支持 chkconfig”这样的错误。

  2. 将写好的 ossftp 脚本移动到 /etc/rc.d/init.d/ 目录下

    image.png

  3. 给脚本赋可执行权限

    chmod +x /etc/rc.d/init.d/ossftp
  4. 添加脚本到开机自动启动项目中

    chkconfig --add ossftp
    chkconfig ossftp on

    执行命令“chkconfig --list”可列出开机启动的服务及当前的状态。

    image.png

到这里就设置完成了,我们只需要重启一下我们的服务器,就能看到我们配置的 ossftp 服务已经可以开机自动启动了。

转自 晓呆同学 4 年前
4,297

当 ASP.NET 发布一个新的小版本更新时(以 .NET 5.0.10 为例),生产环境服务器端可以直接下载安装 .NET 5.0.10 来自动替换 .NET 5.0.9。

倘若这时直接使用 VS 将 nuget 中版本为 5.0.9 的组件更新到 5.0.10 发布到服务器上的话,可能会发生错误:

HTTP Error 500.30 - ASP.NET Core app failed to start

这里我们可以在 nuget 回滚相关组件的版本至 5.0.9,等 VS 发现新的版本更新时,更新 VS 开发工具后,再更新 nuget 组件并进行发布即可。

着急的小伙伴可以直接前往 Microsoft .NET 网站下载安装包含 Runtime 5.0.10 的 SDK:

image.png

该情况同样发生在 ASP.NET Core 3.1 等大版本上。

若仍未生效,请重启服务器

----------------

后注:安装完成后重启服务器可避免以上烦恼!

xoyozo 4 年前
2,370