ccyybn
ccyybn
> algebra: > - derive/([a-z])[a-z][a-z][a-z]/$1/ > - derive/([a-z][a-z])[a-z][a-z]/$1/ > - derive/([a-z][a-z][a-z])[a-z]/$1/ 加上过后,似乎未完成的**编码提示**消失了,而且不知道为什么,输入 **de** 这个 "德昂" 会排在 “的”前面 
> 沒有專門製作前綴匹配的索引, 所有前綴匹配的字詞, 可能會是巨量的, 因此爲了效率故, 沒有一下檢索出來, 也就無法排序. 目前我的替代方案是把字典文件中,每个词条,按照按键顺序,重复生成几遍,就能达到相同的预期效果,不过文件大小比原始版本大了很多倍  如果是前缀匹配,比如键入a,可能词条有上万条,但一般人并不会翻页到第1000页找词,所以实际可能只需要显示前几页,应该没有那么巨量数据需要索引 另外好像 **auto_select** **auto_select_unique_candidate** 对**未键入完整的词条**并不起作用,比如下面这个,一定要输入 k 才会自动选择,目前只能在生成字典文件(*.dict.yaml)时,判断候选个数为1,把 k 去掉,才能达到预期效果 
- Install vs_BuildTools.exe - Install .NET SDK  - Install nuget and restore project ``` winget install Microsoft.NuGet nuget restore .\RePKG.sln ``` - Launch "Visual Studio Build Tools" and Build...
经过多次测试,是在我启动一个python脚本时,有很大概率崩溃,如果切换到 【windows的英文输入法】 启动脚本,WeaselServer.exe就不会崩溃,切换回 Weasel的英文模式,在控制台启动 python 脚本,Exit Code 不限于 [3221225477],包括 [1073807364] [2次] [3221226356] [5次] [3221225477] [12次] python脚本包括同时 playwright 打开网页,读取本地大文件,大量运算,如果单独留下 playwright ,不运算,或者去掉 playwright ,只执行运算,WeaselServer.exe 好像都不容易崩溃
能否考虑给 WeaselServer.exe 加个守护进程,崩溃后自动重新启动,我尝试在Windows服务里调用 CreateProcessAsUser,来启动WeaselServer.exe,不过它好像马上就死了,CreateProcessAsUser 启动 WeaselDeloyer.exe /dict 倒是可以成功看到窗口出现
> 我这个版本加了类似守护的功能([64位](https://github.com/Techince/weasel/releases/download/weasel-0.15.1.0_x64/weasel-0.15.1.007-installer_x64.exe)),可手动关闭。TSF端检测服务端无响应时就启动「算法服务」。 好主意,上次参考你的代码改了个64位,现在再看看怎么检测无响应的,你是写在LanguageBar.cpp里面的吗
> > > 我这个版本加了类似守护的功能([64位](https://github.com/Techince/weasel/releases/download/weasel-0.15.1.0_x64/weasel-0.15.1.007-installer_x64.exe)),可手动关闭。TSF端检测服务端无响应时就启动「算法服务」。 > > > > > > 好主意,上次参考你的代码改了个64位,现在再看看怎么检测无响应的,你是写在LanguageBar.cpp里面的吗 > >  在WeaselTSF::_EnsureServerConnected里 这里好像有按键才会触发检测,我弄了个线程循环检查,不过TSF会在每个窗口都生成,导致我的线程也有好多个,不过还好多个线程重复启动 WeaselServer.exe 问题不大
> @ccyybn 是的。当你没有输入时,算法服务是否运行无关紧要。这个逻辑可确保输入不会中断。 有一点可以优化一下,重启服务后把 TSF当前的中英文状态,恢复到服务里,这样用户就完全没有感知了 不过一些方案自定义Option (简繁,emoji开关),就有点不方便,由于TSF里面并没有记录状态值,导致每项都要硬编码一下,才能同步到TSF里面 
> 可以看看nightly build,或者更新rime.dll到最新版测试看看情况 还是会崩,我觉得是 playwright 爬虫启动了网页,在网页里的输入框触发了输入法,然后不知怎么的输入法就崩了 不过现在我加了崩溃后重启 和 重启后各个程序的TSF恢复自己的中英文,简繁体些状态,就使用上已经没影响了
> 3221225477对应为0xc0000005, 我之前试处理ITfThreadFocsSink 的时候试出来的状态是 nullptr referenced > > 最近有两个commit做了一点处理,可能可以消除一部分问题,nightly可以试试 @ccyybn > > [2b9d968](https://github.com/rime/weasel/commit/2b9d96868b28670e3394679bdc1e4e211e7bdf0f) [952ad12](https://github.com/rime/weasel/commit/952ad12035cfd47e9cad5e60ad577a6a04e0cab3) 我感觉似乎是由于两个进程同时使用输入法,就会崩溃,日常使用一般不会有这种同时使用的情况,但是当有自动程序也在调用输入法时,就容易出问题 新版的崩溃概率是要低一些了,当我在执行脚本时,不打字,就很难崩溃了,之前是 playwright 和 执行playwright的命令行这两个进程都会触发崩溃,现在执行脚本时,要再加上我故意在记事本里打字,才容易出现打字卡死崩掉的情况