Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix: variation read/display issues #2

Closed
phiming opened this issue Oct 16, 2018 · 17 comments
Closed

bugfix: variation read/display issues #2

phiming opened this issue Oct 16, 2018 · 17 comments
Labels
bug Something isn't working

Comments

@phiming
Copy link

phiming commented Oct 16, 2018

最近几天一直有用你为Lizzie加的新功能打谱,support sgf with variation and comments,非常好用,感谢!以后可以告别multigo了。

但也发现个bug, 附件是sgf文件,在multigo可以看到全部comments,但lizzie看不全。似乎是,对"["的处理出了bug。

还有个问题,在windows识别gbk编码的sfg文件出现乱码,但utf-8编码的文件正常。我不得不每次都用编辑软件把gbk编码转成utf-8,能不能加入自动识别棋谱的编码呢

还是中文用起来自在点:)
Tictactoe-2.zip

@zsalch
Copy link
Owner

zsalch commented Oct 20, 2018

这个bug我已经修正并提交了代码到next_dev,还没有pre-release.

关于编码的问题,我之前也考虑过,但是识别编码可能需要引入第三方库或做更多的工作。
也许在打开对话框中加编码列表也是个解决方案。但都需要时间调查,所以迟迟没有动手。

@phiming
Copy link
Author

phiming commented Oct 21, 2018

这里又出现个bug,附件是一个比较复杂的sgf文件。如果lizzie能正常显示这个棋谱,那我相信它的sgf parse功能就比较完善了。测试过程中发现显示错误甚至lizzie完全无反应等情况。我不懂parse过程,简单看了下SGFParser.java,似乎是对“MN”属性的处理有些问题,直接写入了节点的Move Number。我注掉后情况有所改善,但还有其他问题。

关于编码,要完全解决是比较复杂。在sgf文件中有个属性是CA[ ], 是关于编码格式的,不知道有无用处。如果有这项标明是utf-8,那就采用utf-8,如果没有,就采用os缺省编码,不知道这个方法可行不。

parse功能已接近完美。再稳定点,sabaki估计没人用了,,

1-4.zip

@zsalch
Copy link
Owner

zsalch commented Oct 22, 2018

Lizzie的sgf解析是比较简单的,之前不想太破坏这种结构,就只是单纯地加一些功能,希望能逐步完善吧。
附件中的sgf是GB2312格式的,我转为UTF-8似乎可以正常读出来,但不确定是否完全正确,也许您可以提供一个其它软件读取正常的截图。

CA标签也考虑过,不过如果CA和本身编码不匹配,也会显示错误。
而程序似乎也无法判断读取是否正确,没办法确定两者优先级。
这样如果要求用户将CA设置正确,和现在要求用户转码,似乎没有本质改善,所以没有动手。

@phiming
Copy link
Author

phiming commented Oct 22, 2018

不是编码问题,我给的都是原始文件,我自己用的已手动转为utf-8。
1
move number是15步,右边的连接显然不对。对照sabaki
2
此外,在如图节点,按右方向键跳分支时,lizzie当掉了没反应。再提供几个类似文件,都有问题。
《林海峰名局细解2》.zip

建议跟sabaki对照比较,容易看出不同

@phiming
Copy link
Author

phiming commented Oct 22, 2018

关于编码,让程序自动识别确实比较难。奇怪的是sabaki似乎是做的挺好,不知道怎么做到的,是不是也采用了第三方库? 另外,大部分棋谱应该不需要用户去设置编码,普通爱好者一般是打谱,而不用编辑棋谱

@phiming
Copy link
Author

phiming commented Oct 22, 2018

github抽风了吗,刚吞了我两个回复

@zsalch
Copy link
Owner

zsalch commented Oct 22, 2018

github刚恢复正常,挂了一天了。

我的sabaki只能识别gb2312,不能正常读取utf-8。

这几个sgf我调查一下。

@phiming
Copy link
Author

phiming commented Oct 22, 2018

那有点奇怪,我的sabaki确实能自动识别出两种编码。你用的是linux吗,我的os是win10中文版

@phiming
Copy link
Author

phiming commented Oct 22, 2018

刚在sabaki里发现这段,用了jschardet, 是Java script的自动识别编码
exports.parseFile = function(filename) {
let iconv = require('iconv-lite')
let jschardet = require('jschardet')
let buffer = fs.readFileSync(filename)
let encoding = 'utf8'
let detected = jschardet.detect(buffer)
if (detected.confidence > 0.2) encoding = detected.encoding
content = iconv.decode(buffer, encoding)
return exports.parse(content)
}

https://github.com/chardet/chardet
由python移植过来,不知道能不能变成java

https://sourceforge.net/projects/jchardet/
MPL版权,开源。可能无法并入官方,但自己玩够用了

@zsalch
Copy link
Owner

zsalch commented Oct 22, 2018

这几个sgf是很好的例子,我会尝试调整。

如果移植的话,可能还是找个现成的java库更快些。

@zsalch
Copy link
Owner

zsalch commented Oct 25, 2018

我修改了读取问题,并改善了分支显示。

@zsalch
Copy link
Owner

zsalch commented Oct 26, 2018

@phiming
我尝试加了点击功能,欢迎批评指正。

@phiming
Copy link
Author

phiming commented Oct 26, 2018

很活跃啊(笑),lizzie的owner这么活跃就好了。 这个功能确实应该有,我会下载你的代码测试。有无考虑加上自动识别编码,这个功能蛮有用的

@phiming
Copy link
Author

phiming commented Oct 26, 2018

简单试用了下,点击没问题,工作的很好。但上次的棋谱的bug还在,下图是2-4.sgf
3
左边的winrate窗口没有显示手数和胜率,似乎是新的bug。右边variation窗口仍然有错误的连接。
2-1.sgf的问题解决了

@zsalch
Copy link
Owner

zsalch commented Oct 28, 2018

提交了新修改,你的这个sgf真是巧,触发了分支与主干之间循环劫,让人很头疼如何解决。
不过正好有个issue在讨论这个问题,现在修改为简单地劫规则,所以问题也暂时没有了。

@zsalch zsalch changed the title some bug bugfix: variation read/display issues Oct 29, 2018
@zsalch zsalch added the bug Something isn't working label Oct 29, 2018
@zsalch
Copy link
Owner

zsalch commented Nov 4, 2018

@phiming
不知道现在这个问题有没有改善?

@phiming
Copy link
Author

phiming commented Nov 5, 2018

暂时没发现新问题。
感谢新加的自动编码识别,再也没有讨厌的乱码了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants