解决Thinkpad按键盘会嘟嘟嘟的问题

某网友昨日购置了一台Thinkpad笔记本电脑,正在琢磨着Windows 8如何使用的时候发现键盘输入某些特定的字母组合的时候,如果按快了电脑就会嘟嘟响。又不是输入法提示不能输入的那种(那个暂时就知道微软拼音会……)。

同时对方强调说,除了输入快,同时按下去的时候也会嘟嘟响。于是就从这里下手。因为自己没有用过thinkpad嘛,然后这个嘟嘟我觉得很可能是原来由主板上的蜂鸣器响的(笔记本没有蜂鸣器,于是就转为在声卡嘟嘟嘟了)。要么在BIOS里面关闭?

自己实在是没有经验,于是上网搜。又一次证实了百毒不知道和搜搜问不答:汝机过热而哔之,扇风可解矣(呸)。不靠谱,那只好搜英文。

搜英文thinkpad和beep和keyboard,找到了一些说这个问题的网页,看来确实是通病,但是人家不会汝机过热而哔之,人家给出解决方案了:

我进的是 http://www.intelliot.com/2006/12/thinkpad-keyboard-beeps-fixed/ 这个网页,它说,

继续阅读解决Thinkpad按键盘会嘟嘟嘟的问题

解决Gimp 2.8工具设置里文字消失的问题

Gimp2.8比起2.6版本,能够支持单一窗口模式。这点我感觉非常有吸引力:因为我对它一大堆工具栏窗口感觉很不舒服,现在能整合到一整个窗口里感觉很好。其他东西慢慢习惯也还好,但是工具设置里面文字会消失的问题超级烦躁,这是bug,得治。

就是说,画着画着,比如想切换到画笔工具了,点了工具箱里面的画笔,定睛一看,好吧下面那些不透明度啊画笔大小啊啥啥的,虽然可以供你拖动的滚动条还在,但是滚动条上的文字给你消失个精光。这怎么用啊(摔

继续阅读解决Gimp 2.8工具设置里文字消失的问题

解决帝国时代2在Win7下颜色不正确的问题

帝国时代2在Windows7下面运行的时候,会出现颜色不正确的问题:草地本来应该是绿的,但是它却充满了斑斑点点的红色,看起来十分恶心,不过除了颜色以外倒是也没有其他太大的问题。

对于一个游戏来说,看起来很难受是十分致命的。你看有多少游戏界面要搞得很华丽……网上搜索以后,各种解决方法好几种,但是分析一下,大多是让你很难受的那种解决方法:

继续阅读解决帝国时代2在Win7下颜色不正确的问题

使用VS2012编译XP上运行的程序

在微软发布了那个升级包之后,编译器toolset里面有了一个Visual Studio 2012 – Windows XP可以选。但是本人使用测试之后,发现旧的工程选了这个toolset以后,编译出来的程序仍然无法在XP上运行。

今天在某个QQ群聊天的时候,SAPikachu大大提到了这个问题,于是我就说我自己试的时候,失败了,编译出来的东西XP不能跑。不过对方测试之后发现,他那边可以。这里面一定有什么设置不对……

对比了以后,发现除了cl.exe编译命令行那边多了一个_USING_V110_SDK71_的宏定义以外,link.exe那边也多了个/SUBSYSTEM:CONSOLE",5.01"参数。但是很奇怪的是,我这里没有。

经过对方提醒,工具集选了v110_xp以后,这个参数是自动加上的才对。我检查了链接器设置那边,发现确实最低版本写了个5.01,但是上面子系统没有填,结果最后的命令行里面没有这个参数。

最后我把子系统那边选了个Console以后这参数就加上去了。虽然还没真正测试过,不过目测这下编译出来的东西可以在windows xp上运行了。

p.s. xp还真是长命w

改造Audacity来制作LRC/字幕编辑器

 

Audacity是开源的工具,本来说直接改源代码然后再编译就好了。不过这东西看起来总觉得没那么好编译的样子(虽然其实自己没编译过)于是就想着通过直接修改EXE来实现。

挺好的波形编辑器,做LRC歌词的时候可以通过波形来获取比单纯靠耳朵听更加精确的时间。但是这家伙自己不提供什么接口可以用来获取光标所在位置的时间。

然后我就对它进行一定的修改,使得它可以作为LRC编辑器的一部分使用。

继续阅读改造Audacity来制作LRC/字幕编辑器

自制SNTP服务器

其实主要目的呢,是为了玩玩Boost.asio函数库。
最近在看Windows并发编程指南,说到IO完成端口、线程池什么的。然后我想到Boost.asio说内部实现用的是IO完成端口,并且它也可以搞多线程,于是决定试试看。

因为SNTP协议是相对比较简单的嘛,所以就用它来做实验。按照RFC1361写了个简单的服务器,经过测试确实Windows和Linux下都能编译都能运行。目前只开了一个线程给它跑,不过个人感觉效率很好速度很快。

然后其实本来是打算给Windows那个Internet时间同步用的,但是搞到最后Windows也不认它,总是同步失败。 我都用NTPTOOL工具去测服务器了,发现很正常啊,不知道Windows是不是用了自己的NTP协议还是怎么的。总之最后我又给写了个Windows用的NTP客户端。

服务器启动的时候会先到一台NTP服务器上去获取时间,计算和当前机器上的时间的差,然后以后向客户端提供时间的时候都会用这个差作为偏移去校正。之所以这么做,是因为OpenVZ虚拟化环境下的我那台VPS不让改系统时间(汗)

这个步骤暂时没提供任何设置,要去掉只能改代码。本来就是实验嘛所以也不会关注那么多。

服务器和客户端的代码都在这个压缩包里(同一个文件里),有兴趣的欢迎交流w 还有一些出错的时候是没有输出提示的,原因:懒(殴

sorasntp

「裏表ラバーズ」歌词的注释(来自雅虎问答)

这是很久以前的歌了,現実逃避P的《裏表ラバーズ》。因为歌词那么快嘛,一直没什么注意。今天中午以前中学的同学发给我一个B站的链接,是Nico上那些很有人气的翻唱歌曲的转载合集。里面有一个是ぐるたみん的《裏表ラバーズ》。一边看着歌词一边注意到后面的视频,总感觉这词里面有什么玄机。

在谷歌搜索“裏表ラバーズ 歌詞 解釈”,搜出了一个雅虎问答上的网页,提问者想要得到这首歌的解释。下面的回答者在解释完之后说到这个解释是基于PV(就是配的视频)的。

歌词在这里,关于歌词的意思(中文翻译),我参考了这个网页的。

继续阅读「裏表ラバーズ」歌词的注释(来自雅虎问答)

Jubeat Analyzer(mciSendString)对待MP3奇怪的行为

作为一个Jubeat玩家,并且还想过那些比较难的曲子,怎么样也会听说过Jubeat Analyzer吧。这个工具可以把街机上那些谱面在电脑上重现出来,这样就可以先看清楚它是怎么回事,然后再去玩,增加过关的概率。

这软件读取的谱面格式是TXT,音乐是MP3。看它的readme,里面有提到谱面的TXT的格式。里面有写曲子的速度(每分钟多少拍),从什么地方开始是第一拍,之类的。

它自带两个曲子,我当时研究了一下那个twilight goose,发现里面写的曲子第一拍开始的时间是1747毫秒。但是实际上我把MP3丢到Audacity里面打开,仔细观察,第一拍在1.5秒左右就开始了。 继续阅读Jubeat Analyzer(mciSendString)对待MP3奇怪的行为

在C++中进行字符串编码转换

最近做了个Jubeat Analyzer的谱面转成Yubiosi谱面的工具。在制作工具的过程中,遇到了一个问题,就是源谱面文件中字符串的编码问题。

Jubeat Analyzer是日本人造的软件,然后它保存的谱面又没有用Unicode,所以在中文操作系统上看就会乱码。对于编码转换问题,其实C++是可以直接支持的。对于一个支持输出宽字符的文件流,把区域设置到japanese就可以了,像这样:

std::locale jpLoc("japanese");
std::wfstream fs("c:\\nanika.txt", std::ios::in);
fs.imbue(jpLoc);

如果问题这么简单就解决的话就好了……

问题是,源文件中不仅仅包含ShiftJIS编码的部分,而且还包含GBK编码的部分。比如某些地方的注释,某些 m="音乐文件名" 的地方。因为如果音乐文件名用的是ShiftJIS,那么在中文系统下就没办法正常读取音乐了。

这种情况下,来一个imbue不能解决问题。因为它读到ShiftJIS不能表示的字符的时候,这个流就给你eof掉了……

既然这样,那我就一行一行读,不同情况不同处理。自己转成Unicode。好吧,怎么转

用MultiByteToWideChar固然简单,但是我想要用C++标准库去做而不是调用系统API。因为你看,wfstream都可以读取ShiftJIS文件到wstring,那么说明内部一定有什么代码实现编码转换的。我想办法调用这编码就行了。 继续阅读在C++中进行字符串编码转换

现在域名是 blog.sorayuki.net ~