.NET 下的 JavaScript 引擎 - ClearScript
今天找了一圈 .NET 下的 JavaScript 引擎,包括 jint, Javascript.Net, ClearScript 等。最后感觉还是 ClearScript 比较靠谱。

这篇 Which .NET JavaScript Engine is the fastest? 对一些 JS 引擎做了速度测试,结果中 JavaScript.Net 是最快的,但看了眼它的 github 页面,已经一年多没更新了。而第二快的 ClearScript 还是微软自家的,就是它了。
当前语言: 中文 (简体)
永久禁用 Windows 8.1 的驱动签名强制检查
对于某些没有签名的驱动程序,必须要禁用掉系统的强制签名检查才能正常使用。Windows 8.1 中,这个禁用操作需要重启,而且之后再重新开机或者正常重启之后,强制签名检查又变成默认启用了,也就是说这个设置不是永久生效的。

那么对于使用这样驱动程序的设备来说,每次用前就都得折腾重启一遍系统,久而久之就懒得用了。昨天晚上用飞傲 X3 II 的 USB DAC 功能试听新耳机,就又折腾了一遍,折腾完之后想去看看官方有没有更新驱动解决这个问题,结果在论坛看到X3 II 固件的最新版本已经到 2.0 了,,而且还有一个“飞傲新版驱动及教程”,貌似新版的驱动在 Win8/Win8.1/Win10 下不需要禁用强制签名就能使用了。但是通过回复和这个帖子,又发现从 1.6 版本开始 USB OTG 支持就被去掉了,所以还是得解决驱动签名检查的问题。

经过搜索,看到 Permanently disable driver signature enforcement on Win 8.1 x64 这个帖子中有人提到了 Driver Signature Enforcement Overrider 这个程序 (也可以从 Softpedia 下载)。



虽然 Supported OS 只写到了 Windows 7 64-bit, 但是经过测试 Win 8.1 中也可以使用。按照程序自带的说明操作即可:

So how do I use it?
First and foremost; you are using this software at your own risk, we do not
take responsibility for any damages to your system, but we do not believe it
can harm anyone anyway. Secondly, User Account Control (UAC) must be
disabled in-order to use this tool as well.

1. Go ahead download and launch the application from the link below. Inside
its main menu, press on the "Enable Test Mode" button and follow the
instructions on the screen. This will enable TESTSIGNING mode, which
allows unverified system files to be loaded.

2. Now all you have to do is to add the unverified signature to the required
system files. To do so press on the "Sign a System File" button from the main
menu, and enter specific filename including full path. For example: if
ATITool64.sys from C:\Windows\System32\drivers refuses to load due to
driver signature enforcement, you should type: "C:\Windows
\System32\drivers\ATITool64.sys", and if you would like to sign more than a
single file, just repeat this procedure until you’re done, and finally reboot.

After you enabled Test Mode and added signatures to the required system
files, they should bypass Windows’s driver signature enforcement and load
without any issues. However, if for some reason you are interested to revert
it, you can re-launch the application, choose "Disable Test Mode" from the
main menu, and reboot. If you encounter issues or having questions, feel free
to post it on our forums.
当前语言: 中文 (简体) · also available in: English
物理禁用中兴小兴看看 mini 网络摄像头的麦克风和喇叭
这篇文章有点水,主要是想说一下这个摄像头非常容易拆。

1. 撬开外壳的接缝处:


2. 拧下固定电路板的 3 颗螺丝,然后撬下电路板:


3. 拔下扬声器的插头:


4. 用胶布缠上扬声器插头防止意外的短路,堵上麦克风的拾音口:


5. 装回外壳时发现堵麦克风的胶布太大了,改成合适的尺寸:


6. 通过前面拆解能看出,其实如果只是想物理禁用麦克风的话,直接堵上外壳的拾音孔应该也行,为了保险我又粘了块胶布:

当前语言: 中文 (简体)
FileSystemFinder: 一个可以使用通配符和正则表达式逐层获取文件和目录列表的 PHP 类库
其实这个 PHP 类库也是去年十一期间写的第一个版本,但那时还没现在这么完整。今天整理代码,并写了示例程序后就推送到 github 上去了,在:

https://github.com/wudicgi/file-system-finder

示例程序如下:
  1. <?php
  2. include_once 'FileSystemFinder.php';
  3.  
  4. // List files using static method FileSystemFinder::find()
  5.  
  6. $filelist = FileSystemFinder::find('C:/php/ext/php_pdo_*.dll');
  7.  
  8. print_r($filelist);                 // via __debugInfo()
  9. echo "\r\n";
  10.  
  11.  
  12. // List files using file() method with a wildcard pattern
  13.  
  14. $filelist = (new FileSystemFinder('C:/php/ext'))
  15.     ->file('php_pdo_*.dll');
  16.  
  17. print_r($filelist->toArray());      // using toArray()
  18. echo "\r\n";
  19.  
  20.  
  21. // List files using dir() and file() method with wildcard and regex patterns
  22.  
  23. $filelist = (new FileSystemFinder('C:/php'))
  24.     ->dir('dev|ext')                                    // using default wildcard matcher
  25.     ->file('/[0-9]/', FileSystemFinder::REGEX_MATCHER); // using the specified regex matcher
  26.  
  27. foreach ($filelist as $path) {      // via SeekableIterator interface
  28.     echo "$path\r\n";
  29. }
  30. echo "\r\n";
  31.  
  32.  
  33. // A combination of using both static and non-static method
  34.  
  35. $filelist = FileSystemFinder::find('C:/php/dev|ext', FileSystemFinder::DIR_ONLY);
  36. print_r($filelist);
  37.  
  38. $filelist = $filelist->file('/[0-9]/', FileSystemFinder::REGEX_MATCHER);
  39. print_r($filelist);
  40.  
  41. echo "\r\n";
  42.  
  43.  
  44. // List files using wfio extension
  45.  
  46. if (extension_loaded('wfio')) {
  47.     $filelist = FileSystemFinder::find('wfio://E:/Music/* 笑话/* 欢乐剧场/??? *大*.wma');
  48.  
  49.     for ($i = 0; $i < count($filelist); $i++) {     // via Countable interface
  50.         echo "[$i] => $filelist[$i]\r\n";           // via ArrayAccess interface
  51.     }
  52. } else {
  53.     echo "The wfio extension is not loaded.\r\n";
  54. }
  55.  
  56. ?>

上述代码的输出为:
FileSystemFinder Object
(
    [0] => C:/php/ext/php_pdo_firebird.dll
    [1] => C:/php/ext/php_pdo_mysql.dll
    [2] => C:/php/ext/php_pdo_oci.dll
    [3] => C:/php/ext/php_pdo_odbc.dll
    [4] => C:/php/ext/php_pdo_pgsql.dll
    [5] => C:/php/ext/php_pdo_sqlite.dll
)

Array
(
    [0] => C:/php/ext/php_pdo_firebird.dll
    [1] => C:/php/ext/php_pdo_mysql.dll
    [2] => C:/php/ext/php_pdo_oci.dll
    [3] => C:/php/ext/php_pdo_odbc.dll
    [4] => C:/php/ext/php_pdo_pgsql.dll
    [5] => C:/php/ext/php_pdo_sqlite.dll
)

C:/php/dev/php5ts.lib
C:/php/ext/php_bz2.dll
C:/php/ext/php_gd2.dll
C:/php/ext/php_oci8_12c.dll
C:/php/ext/php_sqlite3.dll

FileSystemFinder Object
(
    [0] => C:/php/dev
    [1] => C:/php/ext
)
FileSystemFinder Object
(
    [0] => C:/php/dev/php5ts.lib
    [1] => C:/php/ext/php_bz2.dll
    [2] => C:/php/ext/php_gd2.dll
    [3] => C:/php/ext/php_oci8_12c.dll
    [4] => C:/php/ext/php_sqlite3.dll
)

[0] => wfio://E:/Music/04 笑话/01 欢乐剧场/036 武大日记.wma
[1] => wfio://E:/Music/04 笑话/01 欢乐剧场/087 大学趣闻.wma
[2] => wfio://E:/Music/04 笑话/01 欢乐剧场/109 武大郎后传.wma
[3] => wfio://E:/Music/04 笑话/01 欢乐剧场/117 孙大圣“评职”申请书.wma
[4] => wfio://E:/Music/04 笑话/01 欢乐剧场/120 肖大明白.wma
[5] => wfio://E:/Music/04 笑话/01 欢乐剧场/156 吃大户.wma
[6] => wfio://E:/Music/04 笑话/01 欢乐剧场/160 说大道小.wma
[7] => wfio://E:/Music/04 笑话/01 欢乐剧场/168 四大…….wma
[8] => wfio://E:/Music/04 笑话/01 欢乐剧场/197 过大年.wma
当前语言: 中文 (简体) · also available in: English
配置出一个更好用的 Windows 8.1
以下配置过程是我在配置 Windows 8.1 64-bit 系统的过程中记录下来的,仅供参考。

1. UAC

  • 开始 -> 控制面板 -> 用户帐户 -> 改变用户帐户控制设置
  • 选择“从不通知”

2. DPI

  • 右键点击桌面 -> 屏幕分辨率 -> 放大或缩小文本和其他项目
  • 选择“中等 - 125%”
  • 选中“让我选择一个适合我的所有显示器的缩放级别”
  • 登出并重新登入
  • 右键点击桌面 -> 查看 -> 小图标

3. 动画效果

  • 开始 -> 控制面板 -> 系统 -> 高级系统设置
  • 高级 -> 性能 -> 设置... -> 视觉效果 -> 取消选中所有动画效果

4. Classic Shell

  • 安装 Classic Shell (不安装其中的 Classic IE9 和 Update) (下载)
  • 配置各项,或导入配置文件
  • 资源管理器 -> 隐藏 Classic Explorer Bar

5. 7+ Taskbar Tweak

  • 安装 7+ Taskbar Tweak (下载)
  • 配置各项

6. 任务栏和导航属性

  • 右键点击任务栏 -> 属性
  • 任务栏 -> 选中“自动隐藏任务栏”
  • 任务栏 -> 选中“使用小任务栏按钮”
  • 任务栏 -> 任务栏按钮: 从不合并
  • 跳转列表 -> 取消选中“在跳转列表中存储并显示最近打开的项目”

7. 安装硬件驱动程序

8. 默认字体

  • 使用 Windows 8 Font Changer (下载) 修改默认字体为 Tahoma
  • 重启
  • 调节 ClearType

9. 区域选项

  • 开始 -> 控制面板 -> 区域
  • 短日期: yyyy-M-d
  • 一周的第一天: 星期日

10. 键盘快捷方式下划线

  • 开始 -> 控制面板 -> 轻松访问中心 -> 使键盘更易于使用
  • 选中“给键盘快捷方式和访问键加下划线”
  • 选中“防止将窗口移动到屏幕边缘时自动排列窗口”

11. 自动播放

  • 开始 -> 控制面板 -> 自动播放
  • 取消选中“为所有媒体和设备使用自动播放”
  • 每个选择框保持默认的“选择默认值”

  • 运行 gpedit.msc
  • 用户配置 -> 管理模板 -> Windows 组件 -> 自动播放策略 -> 关闭自动播放 -> 在所有驱动器上启用
  • 计算机配置 -> 管理模板 -> Windows 组件 -> 自动播放策略 -> 关闭自动播放 -> 在所有驱动器上启用

12. 内置的 CD 刻录功能

  • 运行 gpedit.msc
  • 用户配置 -> 管理模板 -> Windows 组件 -> Windows 资源管理器 -> 移除 CD 刻录功能 -> 启用

13. 临时文件目录 (可选)

  • 开始 -> 控制面板 -> 系统 -> 高级系统设置
  • 高级 -> 环境变量...
  • 设置 TEMP, TMP = F:\Temp
  • 清除原来的文件 (%USERPROFILE%\AppData\Local\Temp)

14. 文件夹内容识别

  • 运行 Restore_Default_Folder_Templates.bat (下载)
  • 运行 All_Folders_Use_General_Items_Folder_Template.bat (下载同上)

15. 隐藏库文件夹


16. 设置文件夹默认视图

17. Zip 文件夹

  • 导入 Disable_ZIP_Compressed_Folders.reg

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\CompressedFolder\CLSID]

[-HKEY_CLASSES_ROOT\SystemFileAssociations\.zip\CLSID]

  • 导入 Disable_CAB_Files.reg

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\CABFolder\CLSID]

[-HKEY_CLASSES_ROOT\SystemFileAssociations\.cab\CLSID]

18. 压缩软件

  • 安装 WinRAR 或 7-zip

19. 系统配置

  • 配置声音 (设置为无声)
  • 配置 Windows 颜色
  • 配置 Quick Launch Bar

20. 安装输入法

21. 语言设置

  • 开始 -> 控制面板 -> 语言
  • 高级设置 -> 切换输入法 -> 让我为每个应用窗口选择不同的输入法
  • 改变语言栏热键 -> 切换输入语言: Ctrl + Shift
  • 按下列截图配置 (对中文版 Win 8.1, 默认输入法需要选择英语,而不是推荐值):









22. AutoHotkey

  • 安装 AutoHotkey
  • 配置启动后加载如下脚本:

; Ctrl + Shift
^space::^shift

23. WinSAT 计划任务

  • 开始 -> 控制面板 -> 管理工具 -> 任务计划程序
  • 计划任务程序库 -> Microsoft -> Windows -> Maintenance
  • 右键点击 WinSAT,选择“禁用”

24. 设置电源选项
当前语言: 中文 (简体) · also available in: English
今天才知道 SysWOW64 是什么意思
现在平时很少有机会手动往 System32 目录里复制 dll 文件了。今天把 VC++ 2010 Debug 版的运行时 dll 文件复制到 System32 和 SysWOW64 目录后,运行程序还是报错。用 Dependency Walker 查看,发现这个 32 位的程序加载的是 64 位版本的 dll。

在网上一番搜索才知道,原来在 64 位 Windows 中,System32 目录下存放的都是 64 位的东西,而 SysWOW64 下存放的才是 32 位的东西。为了保持兼容性,System32 的名称就没改,而 SysWOW64 其实也没体现出来 32-bit Windows on 64-bit Windows,所以这两个文件夹的名称现在看着很容易让人糊涂。

文章就是这篇《什么是SysWow64》,推荐阅读一下。
当前语言: 中文 (简体)
PHP 语法高亮增强版的 Notepad++
十一期间寻找现用文本编辑器的替代品,看了一圈最后打算换用 Notepad++, 但是一开始用就发现它的语法高亮功能很弱,比如 PHP 语言的关键字和函数名都不能设置不同的高亮颜色。

经过一番搜索,得知 Notepad++ 所用的 Scintilla 编辑器组件对语法高亮的处理是 hard-coded 的,想增加一类关键词高亮类型得改 C++ 源代码。而且 PHP 的保留字和函数名一直混在一块,不能单独设颜色这个问题已经 9 年没解决了。

本来都打算放弃 Notepad++, 接着找商业软件去了。但是试用大名鼎鼎的 Sublime Text 后也仍然觉得不好用,就又回来考虑修改 Notepad++ 的源代码。经过 10 月 5 号一天的修改,已经基本上搞定 PHP 语法高亮的问题了,并且提交到了我在 github 上 fork 出来的项目上:

https://github.com/wudicgi/npp-customized

值得一提的是,其中 PHP 7 关键词和函数列表的提取,就是通过我的 HtmlMinerDocument 类库从 php.net 的在线文档中抓取的。待该关键词抓取工具的代码整理完毕后,我会把它也提交到 github 上去。

今天我又将最新的 v6.8.6 版本的代码合并到了我的修改分支上。

原版的 PHP 高亮效果是这样的:


我修改后的版本是这样的:


现在在语言格式设置中,可以为 PHP 的关键词 (WORD) 和函数名 (FUNCTION) 指定不同的颜色:

当前语言: 中文 (简体) · also available in: English
将 Windows 7 配置成 Windows 8.1 的样子
前两天给公司电脑的 Win 7 系统装上了个 Win 8.1 主题,现在看起来舒服多了。这么多年了,还是忍受不了 Win7 的默认主题。



这个主题的下载地址为:
http://www.askvg.com/download-windows-8-rtm-theme-for-windows-7/

如果除了主题还想换开始菜单按钮和登陆界面等地方的话,可以参考这篇文章:
http://www.askvg.com/transform-windows-7-into-windows-8-vnext-without-using-customization-pack/

可能是由于 Win 7 和 Win 8.1 的主题系统差异较小,这套主题的效果非常好,换上后看着很自然,不像以前我用过的 Windows XP 主题那样会感觉有点怪。
当前语言: 中文 (简体) · also available in: English
写了一个新的 PHP 类库: HtmlMinerDocument
十一期间写了一个新的 PHP 类库,通过它可以很方便的使用 CSS 选择器来提取网页中的元素。

现在已经上传到了 github 上,地址为:
https://github.com/wudicgi/html-miner-document

用法很简单,例如使用如下代码就能提取网易新闻首页头条新闻的标题和 URL:
  1. <?php
  2. include_once 'HtmlMinerDocument.php';
  3.  
  4. // Find all elements matching the given CSS selectors
  5.  
  6. $doc = new HtmlMinerDocument(file_get_contents('http://news.163.com/'));
  7.  
  8. $news_list = $doc->findAll('div.ns-wnews h3 a');
  9.  
  10. foreach ($news_list as $news) {
  11.     echo "$news[text] ($news[href])\r\n";
  12. }
  13.  
  14. echo "\r\n";
  15. ?>

使用如下代码就能获取 amobbs 全部帖汇总的帖子列表:
  1. <?php
  2. include_once 'HtmlMinerDocument.php';
  3.  
  4. // Find elements by group
  5.  
  6. $doc = new HtmlMinerDocument(file_get_contents('http://www.amobbs.com/forum-9892-1.html'));
  7.  
  8. $threads = $doc
  9.     ->findFirst('table#threadlisttableid')
  10.     ->findAll('tr')
  11.     ->findAllByGroup(array(
  12.         'title'         => 'th a.s',
  13.         'author'        => 'td.by cite a',
  14.         'last_reply'    => 'td.by em span'
  15.     ));
  16.  
  17. foreach ($threads as $thread) {
  18.     echo $thread['title']['text'];
  19.     echo ' by ' . $thread['author']['text'];
  20.     echo ' (' . $thread['last_reply']['text'] . ')';
  21.     echo "\r\n";
  22. }
  23. ?>
当前语言: 中文 (简体) · also available in: English
入手 Kindle DXG
今天收到了前两天在淘宝上买的盒装未拆封官翻的 Kindle DXG, 收到后刷了多看。

看扫描版的 PDF, 裁边后和纸质书对比如下:


能看出字号比纸质书还是稍小一些:


整页对比,把 PDF 四周的空白裁掉,9.7 寸屏的显示区域也还是比 16 开纸质书的文字部分小:


上边对比所选的书是《你必须知道的495个C语言问题》,之所以选这本书不是因为近期在看,而是这本书是我以 2 倍定价的价格从 china-pub 买的 POD (按需印刷) 的书。如果当时有 Kindle DXG, 不知道是不是就不会买纸质书收藏了。

不过 Kindle DXG 实际看起书来,字号和分辨率的影响不算大,主要是翻页时的刷新速度比较慢,翻几页后还会黑屏全刷。这应该就是说电子书不适合看技术类书籍的原因了,将来技术类的图书还是要接着买的。

2016-5-22 后记: Kindle DXG 除了看一个规范 (specification) 的 PDF 文档用过几天外,大部分时间都是在吃灰,扫描版的技术类书籍不如看纸质的,其他类型的书自己找电子书也很麻烦。所以后来还是又入手了 Kindle Paperwhite 3, 可以在淘宝上买中亚的充值卡充值,之后用一键下单买书,很方便。买一些非技术类书籍,便宜又不占地。而且 KPW3 有背光确实比较省眼。
当前语言: 中文 (简体)
更多条目: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [17]
« 上一页 · 下一页 »