在WinForm项目中使用Windows Runtime的方法

在WinForm项目中使用Windows Runtime的方法

最近需要在Winform项目中使用蓝牙,蓝牙模块是同事负责的,找了好多版本的蓝牙库,对BLE的支持都不好。最后发现系统直接提供了Windows.Devices.Bluetooth这个库可以用,但是只能在Universal项目中使用。试过在nuget中找到的Target.WindowsRuntime,但是根本不能用。经过一番google,发现可以用hack的方法在Winform中使用,特此记录。

PS: 我用的是vs2015,win10,.net 4.5,据说win8 vs2013也是可以的,我没有测试过。如果使用其他版本的操作系统,或者.net版本,请自行修改对应参数测试。

步骤说明

  1. 手工修改csproj项目文件
  2. 添加对Windows.XXXXX库的引用
  3. 添加project.json配置文件
  4. 添加对WindowsRuntime库的引用

修改项目文件

需要关闭项目工程文件,手工在目标csproj文件中添加如下代码

你期望编译的目标操作系统是win10,就写10.0,如果是win8,就写8.0,以此类推。

上个截图,更容易理解

添加对库的引用

这个时候,启动sln工程文件,然后右键点击引用-添加引用...,会发现,左侧的分类,多了一类Universal Windows

赶紧把需要的库加进来吧,加进来以后,发现代码中可以正常引用了。

但是会编译不过,提示

添加project.json文件

上面的错误,提示我们需要project.json,在项目中新建这个名称的json文件,然后复制下面的内容

其中的v4.5可以改成任意你需要的.net版本号。

再编译一次试试,大功告成,这样就可以顺利编译通过了。

添加对WindowsRuntime库的引用

这个时候虽然编译通过了,但是实际使用Windows相关类库的时候,还是会有问题,需要做最后一步操作来解决这个问题。

继续添加引用,并选择从文件添加,在下面的目录中,找到System.Runtime.WindowsRuntime.dll,并加入引用。

如果需要用到async/await,还需要添加对Windows.winmd的引用,在下面的目录中

这样,就可以在WinForm项目中使用Universal的类库啦。

参考资料

在MacOSX下用cmake编译cocos2dx的笔记

最近项目想用Qt来做cocos2d-x的跨平台编辑器。由于对Qt和OpenGL都是新手,所以想用相对低成本的方法来做,参考了不少项目。发现好多人有用Qt来做cocos2d-x的编辑器的想法,包括cocos2d-x官方,但不知道什么原因,几乎所有的项目都中途流产了。大部分项目使用的是相对较旧的cocos2d-x版本,有些甚至无法编译成功。不过这些项目也给了我不少帮助,参考了很多有价值的信息。

最后,我决定自己做一个QtPort,选用CMake来做项目管理,因为新版的cocos2d-x已经带了CMakeLists.txt,如果直接用Qt的pro/pri/prf等项目文件,那工程量就太大了。

工具

otool

这个工具帮了很大忙,因为使用CMake,所有需要链接的库都需要自己设置。而我不知道需要哪些库,利用otool -L xxx来查看用XCode编译出来的xxx使用了哪些库,也让我顺利把所需的库都加进来。

安装组件

首先要用到的就是HomeBrew了。安装完HomeBrew,就可以用它安装各种东西了。

这里教大家一个小技巧,当编译提示

这里的-l后面就是缺失的库的名字,可以把这个名字直接放到brew install后面进行安装。
如果名字不对的话,也可以使用brew search freetype进行搜索。

问题

  • Spine库的CCSkeleton.cpp文件会编译不过,我们也用不到Spine库,所以暂时不编译它。
  • Audio相关的库编译不过,我在CMakeLists里加了个AUDIO_BUILDoption的选项,也暂时关闭它。
  • 编译lua时遇到了比较大的问题
    • 首先,因为我们禁用了Spine和Audio的编译,但是cocos2dx的tolua代码中,并没有根据这个条件编译进行判断,是否包含这些文件。为了防止使用这些文件出问题,我加了#ifdef来判断,当定义了不要Spine或者Audio时,把相关的lua函数都注册成空函数。
    • 然后是luasocket的问题,cocos2dx官方根本就没有写luasocket的CMakeLists.txt,不过写起来还算顺利,唯一需要注意的是luasocket的wsocket.c和usocket.c,是需要分平台编译的,wsocket.c是针对Win平台写的,usocket.c是针对unix-like系统写的。

关于CMakeLists的代码

好像没有特别需要说明的,基本就是CMake的规则,唯一值得一提的是,MacOSX下面的编译,记得这么做

这样生成的目录结构才会是这样的

最后

最后给出我的项目地址:https://github.com/Jennal/cocos2dx-3.2-qt

[转]在MacOSX下制作icns图标

以下内容转载自:http://www.cocoachina.com/bbs/read.php?tid=113763

步骤1

在任何一个目录下面创建一个文件夹,命名为 [name].iconset 例如 icon.iconset

步骤2

在该文件里面放入以下图片文件,并核对尺寸是否正确

图片名称 尺寸
icon_512x512@2x.png 1024×1024
icon_512x512.png 512×512
icon_256x256@2x.png 512×512
icon_256x256.png 256×256
icon_128x128@2x.png 256×256
icon_128x128.png 128×128
icon_32x32@2x.png 64×64
icon_32x32.png 32×32
icon_16x16@2x.png 32×32
icon_16x16.png 16×16

步骤3

打开终端,在里面输入以下命令

例如:

注:可以先输入iconutil –c icns(后面需带一个空格),再把步骤1所创建的文件夹拖到终端,则会自动把该文件夹的路径添加到刚输入的命令后面。

步骤4

在步骤3后,系统会自动生成[name].icns(icon.icns)文件,将该icns文件导入工程,并设置为Icon即可。

Apple官方原文由此进

Mac OS X快捷键大全

Mac OS X的所有快捷键来了,共计超过200项,俺等Windows快捷键熟手这会儿要改专业了…………

注:以下为系统的默认快捷键。OS X允许用户为不同软件的不同菜单功能自定义快捷键的,大家表浪费了这个好机会哈, 让自己的快捷键清单变得比购物单还长吧。当然,还是那句话,俺懒,改天再译。

通用快捷键

1 Cmd-C Copy files

2 Cmd-V Paste files

3 Option-Drag Copy files to new location

4 Cmd-Drag Move and auto-align icons

5 Cmd-Delete Delete

6 Cmd-Option-Drag Make alias

7 Cmd-Shift-Delete Empty trash

8 Cmd-Shift-Option-Delete Empty trash without warning

9 Tab Select next field

10 Shift-Tab Select previous field

11 Return Perform default action

12 Escape Close dialog box

13 Page Up Scroll up list

14 Up Arrow Select item above

15 Page Down Scroll down list

16 Down Arrow Select item below

17 Cmd-Shift-G Open ‘Go to Folder’ dialog

18 Cmd-Period[.] Close dialog box

Exposé, Space, Dashboard和系统

19 F8 Toggle Space

20 Shift-F8 Toggle Space in slow motion

21 F9 Show all open windows

22 Shift-F9 Show all open windows in slow motion

23 F10 Show all open windows for an application

24 Shift-F10 Show all open windows for an application in slow motion

25 F11 Hide all windows

26 Shift-F11 Hide all windows in slow motion

27 F12 Open/close Dashboard

28 Shift-F12 Slowly open/close Dashboard

29 Option-Mouse Hover Reveal the close button of widget

30 Shift-Click Close Button Animate closing widget in slow motion

31 Cmd-H Hide application

32 Cmd-Option-H Hide other applications

33 Cmd-Q Quit application

34 Cmd-Shift-Q Quit all applications and log out

35 Cmd-Option-Shift-Q Log out without warning

36 Cmd-Tab Switch to next application

37 Cmd-Shift-Tab Switch to previous application

38 Option-Drag Adjust volume (on sound volume slider)

39 Cmd-Drag Arrange menu bar items

40 Option-Click Switch window and hide current window

41 Control-Click Open contextual menu

42 Cmd-Control-D See word definition (with mouse hover)

程序假死

43 Cmd-Period[.] Stop process

44 Cmd-Option-Escape Open Force Quit

45 Power Key Turn off

46 Cmd-Option-Shift-Power Key Force shut down

47 Cmd-Control-Power Key Force restart

全键盘操作

48 Control-F1 Turn on/off full keyboard access

49 Control-F2 Focusing menu bar

50 Control-F3 Focusing Dock

51 Control-F4 Move to next window

52 Control-F5 Move to toolbar

53 Control-F6 Move to a floating window

54 Control-F7 Toggle keyboard access mode

55 Control-F8 Focusing status menu in menu bar

56 Cmd-Accent[] Switch to next window within application

57 Cmd-Shift-Accent[] Switch to previous window within application

58 Cmd-Option-Accent[`] Move to sidebar

59 Cmd-Option-T Toggle on/off character palette

Finder

60 Cmd-Click on Title See the path enclosing folders

61 Cmd-Double-Click (on folder) Open folder in new window

62 Option-Double-Click (on folder) Open folder in new window and close current window

63 Cmd-1 Switch to icon view

64 Cmd-2 Switch to list view

65 Cmd-Option-Right Arrow Expand folder

66 Left Arrow Close folder

67 Cmd-Down Arrow Open selected folder

68 Cmd-Option-Down Arrow Open selected folder in new window and close current folder

69 Cmd-Shift-Option-Down Arrow Open selected folder in new window and close current folder in slow motion

70 Cmd-Up Arrow Show enclosing folder

71 Cmd-Option-Up Arrow Show enclosing folder and close current folder

72 Cmd-3 Switch to column view

73 Cmd-4 Switch to coverflow view

74 Cmd-Y Toggle Quick Look mode

75 Cmd-Option-Y Toggle Slideshow mode

76 Cmd-Shift-H Open home folder

77 Cmd-Option-Shift-Up Arrow Move focus to Desktop

78 Cmd-Shift-I Open iDisk

79 Cmd-Shift-D Open Desktop

80 Cmd-Shift-C Open Computer area

81 Cmd-Shift-K Open Network

82 Cmd-Shift-A Open Applications

83 Double-Click on Title Minimize window

84 Cmd-M Minimize window

85 Option-Click on button Apply action to all windows in active application

86 Hold-Scroll Bar Scroll quickly

搜索: Spotlight

87 Cmd-Spacebar Activate/deactivate Spotlight

88 Cmd-Option-Spacebar Open Spotlight window

89 Cmd-Return Open the top hit

90 Cmd-Down Arrow Move to next category

91 Cmd-Up Arrow Move to previous category

92 Cmd-Click Open selected item in Finder

93 Escape Close Spotlight

实用工具:抓图

94 Cmd-Shift-3 Take snapshot of the whole screen

95 Cmd-Shift-4 Take snapshot of the selected area

96 Cmd-Shift-4-Spacebar Take picture of a window

97 Escape Cancel

98 Hold Spacebar after Drawing the region Move the selected area

99 Hold Option Resize selected area

100 Hold Shift Resize selected area horizontally or vertically

应用程序: Dock

101 Drag the separator Resize Dock

102 Option-Drag Resize Dock to fixed size

103 Control-Click Show Dock’s contextual menu

104 Control-Click on icon Show item’s contextual menu

105 Cmd-Click Open the icon’s enclosing folder

106 Option-Click Switch to another and hide current application

107 Cmd-Option-Click Switch to another application and hide all other applications

108 Cmd-Option-Drop Force application to open files

109 Cmd-Option-D Hide/unhide Dock

偏好设置: 万能辅助

110 Cmd-Option-8 Turn zoom on/off

111 Cmd-Option-Equal[=] Zoom in

112 Control-Scroll Up Zoom in

113 Cmd-Option-Hyphen[-] Zoom out

114 Control-Scroll Down Zoom out

115 Cmd-Option-Control-8 Invert color (try this on those iMacs in Apple Store)

116 Control-Option-Cmd-Comma[,] Reduce contrast

117 Control-Option-Cmd-Period[.] Increase contrast

118 Cmd-F5 Toggle VoiceOver

119 Shift-Shift-Shift-Shift-Shift (5 times) Toggle Sticky Keys

120 Option-Option-Option-Option-Option (5 times) Toggle mouse keys

开机: 启动

These shortcuts only available during start up.

121 Shift Prevent automatic login

122 Shift Enter safe mode (hold down after startup tone and release after you see the progress indicator)

123 Shift Prevent opening Login Items (after login)

124 C Boot from CD

125 N Boot from default NetBook disk

126 T Start up in Target Disk Mode

127 Option Select startup disk

128 Cmd-X Start up using Mac OS X

129 Hold Mouse Button Eject removable discs

130 Cmd-Option-P-R Reset parameter RAM

131 Cmd-V Verbose mode (detailed status message)

132 Cmd-S Single user mode

浏览器: Safari

133 Cmd-Option-F Move to Google Search Box

134 Option-Up Arrow Scroll Up

135 Option-Down Arrow Scroll Down

136 Cmd-Click Link Open in new tab and stay in current tab

137 Cmd-Shift-Click Link Open and go to new tab

138 Cmd-Option-Click Link Open in new window

139 Option-Click Close Button Close other tabs

140 Cmd-Shift-] Select next tab

141 Cmd-Shift-[ Select previous tab

142 Cmd-Shift-H Go to homepage

143 Cmd-Shift-K Toggle Block Pop-up Windows

144 Cmd-Option-E Empty Cache

145 Cmd-Option-R Reload page without Caching

146 Cmd-F Search term in webpage

147 Cmd-M Minimize Safari

148 Shift-Click Button Animate slow motion effect

149 Cmd-Plus[+] Increase font size

150 Cmd-Hyphen[-] Reduce font size

151 Cmd-0 Original font size

音乐: iTunes

152 Return/Space Play

153 Option-Right Arrow Select next album

154 Option-Left Arrow Select previous album

155 Cmd-Right Arrow Play next song

156 Cmd-Left Arrow Play previous song

157 Option-Click on Shuffle Button Reshuffle

158 Cmd-Option-Down Arrow Mute

159 Cmd-E Eject CD

160 Cmd-T Turn on/off visualizer

161 Cmd-F Turn on/off full screen mode

162 Cmd-1 View iTunes window

163 Cmd-2 View equalizer mode

终端

164 Double-Click Select word

165 Triple-Click Select line

166 Drag item to Terminal Add the complete path to that item

167 Cmd-N Create new shell window

168 Cmd-Shift-N Enter new command

169 Cmd-Shift-K Connect to a server

170 Cmd-Option-S Save text

171 Cmd-Option-Shift-S Save selected text

172 Cmd-I Show terminal inspector

173 Cmd-T Create new tab

174 Control-C Break

Mail: 随时随地的沟通

175 Cmd-N New message

176 Cmd-Shift-N Get new mail

177 Cmd-Option-N Open new viewer window

178 Cmd-0 Open activity window

179 Cmd-Shift-Y Add senders to address book

180 Cmd-E Use selected text to find

181 Cmd-C while selecting message Copy entire text of a message

182 Cmd-Click on upper-right corner toolbar button Switch different toolbar display

183 Cmd-Single Quote[‘] Increase quote level

184 Cmd-Option-Single Quote[‘] Decrease quote level

185 Cmd-Shift-E Redirect message

186 Cmd-Shift-F Forward message

187 Hold Option when deleting message Prevent next message from being automatically marked as read

188 Cmd-Shift-R Reply to all

189 Cmd-Shift-B Bounce to sender

190 Cmd-Shift-T Convert message to rich text or plain text

191 Cmd-Left Brace[{] Align left

192 Cmd-Vertical Bar[|] Align center

193 Cmd-Right Brace[}] Align right

194 Cmd-Colon[:] Check spelling

195 Cmd-Semicolon[;] Flag misspelling of selected word

Front Row

196 Cmd-Esc Open/close Front Row or return to previous menu

197 Spacebar, Return Select item in a menu

198 Up Arrow, Down Arrow Change volume

199 Right Arrow, Left Arrow Go to next or previous selection

地址簿

200 Cmd-1 View card and columns

201 Cmd-2 View only card

202 Cmd-3 View directories

203 Cmd-Right Bracket[‘]’] Next card

204 Cmd-Left Bracker[‘[‘] Previous card

205 Cmd-Vertical Line[|] Merge selected cards

206 Cmd-Backslash[\] Set as company card

绘图软件: Adobe Photoshop

207 Cmd-Shift-M Edit in ImageReady

208 Cmd-Option-W Close all

209 Cmd-Option-S Save as

210 Cmd-Option-Shift-S Save for Web

211 Cmd-Option-Shift-I File info

212 Cmd-Option-P Print with Preview

213 Cmd-Option-Shift-P Print one copy

214 Cmd-Shift-F Fade

215 Cmd-Shift-C Copy merged

216 Cmd-Shift-V Paste into

217 Shift-F5 Fill with color

218 Cmd-Shift-T Transform Again

219 Cmd-Option-Shift-K Show keyboard shortcuts

220 Cmd-L Adjust levels

221 Cmd-M Adjust curves

222 Cmd-B Adjust color balance

223 Cmd-U Adjust hue/saturation

224 Cmd-Option-C Change canvas size

225 Cmd-Shift-N Create new layer

226 Cmd-J Layer via copy

227 Cmd-Shift-J Layer via cut

228 Cmd-Option-G Create/release clipping mask

229 Cmd-G Group layers

230 Cmd-Shift-E Merge visible

231 Cmd-Shift-I Select inverse

232 Cmd-Option-A Select all layers

233 Shift-F6 Select feather (Cmd-Option-D has been assigned to hide Dock)

234 Cmd-Option-V Filter vanishing point

235 Cmd-Plus[+] Zoom in

236 Cmd-0 Fit on screen

237 Cmd-Option-0 Display actual pixels

238 Cmd-Single Quote[‘] Show grid

239 Cmd-Semicolon[;] Show guides

240 Cmd-R Show rulers

以上内容转自:

Leon的大杂烩

http://leondepro.blogbus.com/logs/15787608.html

只是我找到的最全,整理得最好的快捷键列表了,分享一下。
附上官方的快捷键大全:http://support.apple.com/kb/HT1343?viewlocale=zh_CN&locale=zh_CN

准备体验苹果的人必须知道的十件事

已经使用Leopard一个星期,是越来越喜欢OS X,而且越来越习惯OS X了。想起半年前真正尝试OS X时的激动和Windows常年养成的习惯造成的不适应,还是历历在目。经过了这么长时间,只想说一句:OS X是所有懒人都值得享受的系统。

不过,并不是谁都能一下子适应OS X的,俺也不例外。骑单车多年,一下子开上法拉利,肯定不会习惯……如果你是长期的windows用户,又想凑凑热闹用用传说中极度骚包的OS X系统,那就得先知道十件事:

1. OS X 就像OS X

费力装点操作系统的日子结束了。当你启动你的Mac 的那一刻起,你也许会直奔系统预置去了解你能怎样摆弄它。也许你会去试着调整界面风格吧。不过无论你如何努力,你都无法把Mac OS X 弄成宇宙飞船控制台的样子。我并不是说绝对不能,我只说这很不容易。

你发现在Mac OS X 下,不能像Windows XP 下那样使用WindowBlinds 为Mac OS X 换皮肤。某种意义上来说,是的。因为大多数Mac OS X 用户没有这样的需求。常态的Mac OS X 观感已经很赏心悦目了。看看那些成群结队把Windows 费尽心思的打扮成Mac OS X 的人们吧。现在,你又认为有多少用户想要把Mac OS X 打扮成Windows XP或者Vista的样子?

但是万一,仅仅是万一,你还是想让Mac OS X 看上去像宇宙飞船?那么,试试ShapeShifter 这个软件吧。

2. 你不需要杀毒软件

你不需要杀毒软件或者间谍/广告软件清除工具… 至少到目前为止。眼下,那些程序对Mac 用户而言仍然毫无意义。

现实情况是,现在的Mac 用户仍然生活在一个没有间谍软件、广告软件和病毒的世界里。这真是个伟大的解放。如果你使用的是Mac,那就勇敢的在网上冲浪吧(即使那些黑暗的角落),没有一个不速之客能敲开你的机器… 至少到目前为止。

Wil Shipley 精辟的概括了这一点:“我已经厌倦了听人们说Mac OS X’几乎’没有病毒。事实证明,Mac OS X 下完全没有病毒。Mac 并不神奇,总有一天也会遭到病毒的感染。但至少我不认为这已经成为现实,我想现在我们仍可以自豪的说,’是的,我们没有病毒’。”

3. 不同的鼠标手感

鼠标是你和你的Mac 交互的根本途径。鼠标定位,也就是鼠标的移动如何影响屏幕上光标的位置,在Mac OS X 下不只是变得缓慢。这令Windows 用户感到惊异——就像在泥浆中滑动鼠标。大多数Mac用户拒绝承认Mac OS X 的鼠标定位与Windows XP 有任何不同。但作为一个曾经用过Windows 得人,我感受到了其中的差别。如果你是Windows 的长期用户,你可能也会注意到这一点。

我曾花了一个月的时间来尝试习惯我的Apple Pro Mouse。不幸,最终我在eBay上卖掉了我的Pro Mouse 并且购进了Microsoft 的光学鼠标来代替。可新的鼠标也没能解决问题。问题的关键不在于鼠标而是Mac OS X 如何诠释鼠标的移动。这并非错误,而仅仅是个差异,但确实会令转用Mac OS X 做设计或者打游戏的用户感到不适。

解决方法是靠 Microsoft’s Mouse Preferences 这个在Microsoft 网站上可供下载的软件,它可以让你关闭Mac OS X 的鼠标定位。它不只改变了鼠标指向的速度,更改善了鼠标指向的手感。如果你像我一样无法习惯Mac OS X 的鼠标定位,这就是你要的。

说到鼠标,Mac OS X 生来就加入了右键和滚轮的支持。我还是不明白Apple 为何直到去年还在制造单键鼠标。他们有他们的理由吧。

4. 我们大都用Safari

如果你是个网虫,你也许在用Firefox(你已经不再用IE了,对吧?)但是如果你用Mac,我很相信你用的是Safari。为什么用Safari?诚实的说,我也不知道。也许和大多数Windows 用户用IE的理由一样吧,Safari 是预装的。

Safari 阻挡弹出窗口,内建RSS 阅读器,能够快速准确地显示大多数的网页。同时,我猜Mac 用户也不会喜欢Firefox 丑陋的表单和按钮。

当然,Firefox 快速并且有良好的扩展性(我喜欢Firefox 的插件比如Greasemonkey 和Platypus 等等),但是Safari 也是对标准兼容性最好的浏览器之一。而且,有漂亮的按钮。

5. 安装、移动和卸载应用程序

安装大多数的应用程序,你只需把他们拖放到你想要的地方。

安装后想要移动应用程序?尽情移动吧。没问题。

卸载应用程序也只需把他们拖进废纸篓。对于PC用户,这貌似是个可怕的想法。在Mac OS X 下,被删除的程序会留下些什么?通常不过是一两个无害的配置文件而已。

为什么卸载应用程序只要把可执行文件丢到废纸篓?Mac OS X 的应用程序看上去很清爽,是因为那些难看的部分都被打包隐藏了。Mac OS X 的应用程序其实是种特殊的文件夹。要查看应用程序里面的内容,右击并选择显示包内容即可。

6. OS X没有磁盘碎片整理工具

Mac OS X 从10.3 开始就会自动的整理每一个你访问的小于20MB的文件。这样一来,由于这些隐藏的内建过程,整理磁盘碎片就不再需要了。当然你也可以不相信我。

7. 系统看上去不正常?修理磁盘权限吧

文件打不开?程序不运行?安装不工作?系统变慢了?是时候修理权限了。修理磁盘权限是个无害无破坏性的工作,应该定期进行以保持系统的正常运作。

Mac OS X 基于Unix,所以非常依赖于文件权限。有时候文件权限变得混乱因为文件的位置改变或者安装时被设定了错误的权限。一个你应该能读写的文件不再允许访问。一个你原本能运行的程序不再工作。在这些情况下,文件权限也许需要重置到默认值——一个简单快速的过程。打开位于应用程序>实用程序下的磁盘工具,选择你的硬盘或者分区,然后点击修理磁盘权限。

8. OS X并不完美

应用程序在Mac OS X 下一样会崩溃。事实上,几乎跟Windows 应用程序一样容易崩溃。幸好只在极少数情形下程序崩溃并令系统宕机。如果一个程序无响应,你会看到一个一直旋转不停的彩球,这被称作The Spinning Beach Ball of Death。

如果你不幸看到了SBBOD,你需要强制退出程序。你有三个选择:等待。右击dock 上的此程序选择强制退出。还不奏效的话,你需要按下Mac 版的Ctrl-Alt-Del:Command-Option-Escape。可别搞错了。

注:SBBOD 实际上意味着你当前程序的主线程处于忙的状态,暂时没有办法响应用户的键盘、鼠标事件。我个人认为这样的情况通常是因为程序架构不好所造成的。

9. 你会犯错

Dan Warne 综合了TUAW 最近的一篇文章下的回应列出了新Mac用户常犯的错误。比如:

* 试图用CTRL 而不是CMD 组合快捷键

* 以为绿色的“+”按钮会将窗口最大化到全屏

* 关掉应用程序窗口,就以为关闭了它

* 双击窗口以最大化,结果却发现最小化到了Dock 上

10. 是的,Mac 是种信仰。欢迎加入MacWorld

上文是从Macx.cn挖来的,原文是个重度Mac患者……不过,俺也是重度的Mac患者了,所以对上述这些可能被某些Windows用户认为很“白痴”的观点表示非常赞同。毕竟,Windows太让人努力学电脑了,俺需要一个不需要钻研就能安心使用安心工作的“白痴”也能享受的系统。

08年1月6日凌晨3:30,Leopard下虚拟XP所发

以上内容转自:

Leon的大杂烩

http://leondepro.blogbus.com/logs/15787608.html

作为一个冒名果粉,终于当上了Mac患者,我自豪。特转此文,以示众人。

iTunes Error 7

最近叔叔家的iTunes老是打不开,一双击就显示Error 7,非常郁闷,怎么重新卸载安装都没用。不可能为了一个iTunes去重装系统吧。。。那简直是杀鸡用牛刀。之前一直没在意,今天Google了一下,发现原来和QuickTime有关。貌似QuickTime被谁给删了,间接地把iTunes给搞死了。而重装iTunes的时候,它又检测到上一次的设置,没有再安装QuickTime,真是相当受不了。而且启动又不给任何提示。

所以,解决的办法就是,去Apple官方载一个QuickTime,给装上,就搞定了。

Solution: Download a QuickTime from Apple official website, and install it. iTunes will come alive.

chm文件打不开的解决办法

一.如果不能打开,可这样恢复文件关联:
1、开始运行,输入:regsvr32 C:\windows\system32\hhctrl.ocx ,确定,重新关联文件。
2、执行一下windows目录里的hh.exe 。
有时候chm文件放在中文目录就不行。包括中文chm名字。试着把文件考出来.中文名字一改.

二.1.在微软网站上下载hhupd.exe,安装hh.exe后并运行。
2.实际上,下载hhupd.exe后,运行后就可以了。这个东西大小为461kb 3.在c:\windows\system32里找到“Hhctrl.ocx”文件,然后运行:“regsvr32“c:\windows\system32\hhctrl.ocx…
网上的解决方法不可行,下载不了hhupd.exe.我直接执行regsvr32 c:\windows\system32\hhctrl.ocx就ok了。

解决方法2是:
1,右键关联chm文件的“打开方式”到\Windows\HH.exe
2,在命令行运行regsvr32 itss.dll
3,在命令行运行regsvr32 hhctrl.ocx

三. 也许是 HH.EXE 所必需的某个组件出了问题。但是不知道 HH.EXE 会用到些什么组件,所以上网查了一下,有人建议重新注册 hhctrl.ocx。我在系统目录下找到了 hhctrl.ocx,重新注册一下 hhctrl.ocx 试试:regsvr32 hhctrl.ocx。依然不能正常阅读 CHM。

既然如此,很有可能是协议出了问题。HH.EXE 用的是 ms-its 等协议,这些协议应该是由某个 DLL 文件提供服务的。问题是,是什么 DLL 呢?于是再用 Google 搜索 ms-its 协议。终于找到了,原来是一个 itss.dll 在做服务。不过网上查到的解决方案是修改注册表。

要修改 ItssRestrictions 注册表项以启用特定的安全区域,请按照下列步骤操作:
1. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
2. 找到并单击下面的子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions
注意:如果该注册表子项不存在,则使用方法 1 中的步骤 2a 和 2b 创建该子项。
3. 右键单击“ItssRestrictions”子项,指向“新建”,然后单击“DWORD 值”。
4. 键入 MaxAllowedZone,然后按 Enter 键。
5. 右键单击“MaxAllowedZone”值,然后单击“修改”。
6. 在“数值数据”框中,键入 0 至 4 之间的一个数字,然后单击“确定”。
7. 退出注册表编辑器。
注 意:默认情况下,“MaxAllowedZone”值设置为 0。下表摘要列出了“MaxAllowedZone”值对各个项的解释。 MaxAllowedZone 本地计算机区域 本地 Intranet 区域 受信任的站点区域 Internet 区域 受限站点区域
0 允许 阻止 阻止 阻止 阻止
1 允许 允许 阻止 阻止 阻止
2 允许 允许 允许 阻止 阻止
3 允许 允许 允许 允许 阻止
4 允许 允许 允许 允许 允许

注册表修改之后还是不能打开!
试试偷懒的办法吧——重新注册DLL:regsvr32 itss.dll。

四.操作系统的语言不是中文(经常出现这种情况)
1.看看你的 OS 是不是中文的 OS ? 如果你的 OS 不是 中文的,那么到 Control Pane 中看看那个“语言和区域” 的option, 打开看看“区域选项” 是不是中国,这个选项对一些软件还是有一些影像的。
2.如果你的CHM文件是中文的,可能存在缺省语言设置问题。可能你用是的英文版的WINDOWS,把RAGIONAL AND LANGUAGE OPTIONS中的LANGUAGE 和ADVANCED 中的 语言和国家选项都设置成中文(PRC)。就可以了

五.可以试试改变此文件的名字.比如去掉多余的符号

六.如果都不能,最后一招就是,把电子书CHM格式转换为PDF文件:
CHM Converter是一个专门转换CHM格式的文件,它可以把CHM文件转换成PDF、TXT、DOC等常用的格式。
http://dl.pconline.com.cn/html/1/6/dlid=11896&dltypeid=1&pn=0&.html

下载后运行软件,软件默认是英文界面,点击菜单“Tools-Language”,在弹出的对话框中选择“Chinese_Simplified”就可以换成中文了,软件还支持其他很多语言。

选 好语言后点击左上角的“打开”按钮来选择要转换的CHM文件,如果CHM文件是英文版的,那么在旁边的下拉菜单中就选择 “DEFAILT_CHARSET”,如果是中文的,那需要在下拉菜单中选择“GB2312_CHARSET”,否则会产生乱码,然后在右面的“导出”中 来选择要转换的文件类型,软件支持很多格式的文件,如这里选择“Word97-2003”,最后点击“另存数据库为”按钮,选择保存的文件夹后就开始进行 转换了。

PS: Window2K中不能打开*.chm文件的解决办法
这个问题的发生,是由于hhctrl.ocx的版本号出现错误或未正确注册。原因在于安装的其他软件用hhctrl.ocx的旧版本替换了原来的版本。
IE6SP1中,这个文件的版本号应为5.2.3735.0。可以看看你的系统这个文件的版本号。
位于winnt/system32这个文件夹。大小504K(英文版本)从其他相同的系统(IE版本也相同)中COPY一份
粘贴到你的系统相应文件夹中。然后注册一下。

注意:
1、先替换winnt/system32/dllcache文件夹的这个文件
后替换winnt/system32文件夹里的这个文件
2、如果看不到这个文件,
先工具–文件夹选项中,设置显示隐藏文件
并设置显示系统文件
3、注册的方法是
开始–运行,输入regsvr32 hhctrl.ocx
之后出来一个注册成功的对话框,确定然后重启系统。

XP无法登录,一登陆就注销的解决办法

症状:点击用户名登陆后就马上注销无法进系统
其他账户一样问题
安全模式一样问题
关键词:userinit.exe,注册表,映像劫持,pe光盘
原因:(假定系统盘为C):
一是C:\windows\system32目录下的userinit.exe文件丢失;只要“userinit.exe”拷到system32下即可解决反复注销问题。
二是病毒篡改了注册表,将userinit.exe劫持到不存在的文件上面会导致XP系统反复注销,需要编辑系统注册表的[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options]
三是,病毒在注册表中将[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
“Userinit”=”C:\\WINDOWS\\system32\\userinit.exe,”改为了”Userinit”=”C:\\WINDOWS\\system32\\userinit32.exe,”
————————————————————————————————
步骤一
拷贝方法1:用windows启动盘进入系统恢复控制台,用
expand X:\i386\userinit.ex_ c:\Windows\System32\userinit.exe(X是光驱的盘符)将光盘i386目录里的userinit.ex_释放到系统目录。
电脑重启后输入密码后就不再会反复注销了。
拷贝方法2:用winpe盘启动系统,将userinit.exe文件拷到C:\windows\system32文件下即可。
拷贝方法3:如果有ghost映像备份,用相应工具比如PE,提取c:\Windows\System32\userinit.exe并恢复即可
步骤二

userinit.exe文件损坏或被病毒替换或者是注册表中的相关键值被修改。
最好去弄张PE的光盘,比如说深山红叶的PE光盘或者是老毛桃的PE光盘,用它启动电脑进入WinPE系统后找到里面的注册表编辑工具,加载远程配置单元,定位到注册表项:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options,找到userinit.exe项,将其删除。(病毒将userinit.exe劫持到不存在的文件上面会导致XP系统反复注销)
此步操作可能没有找到病毒劫持的userinit.exe项目,接下来定位到注册表项 HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Winlogon 下找到里面的Userinit键值,将其数据修改为系统默认的值“C:\Windows\System32\userinit.exe,”,注意最后的半角的逗号别漏掉,这也会引起问题。

使用truss、strace或ltrace诊断软件的”疑难杂症”

进程无法启动,软件运行速度突然变慢,程序的”Segment Fault”等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的”疑难杂症”。

truss 和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。truss是早期为System V R4开发的调试程序,包括Aix、FreeBSD在内的大部分Unix系统都自带了这个工具;而strace最初是为SunOS系统编写的,ltrace 最早出现在GNU/Debian Linux中。这两个工具现在也已被移植到了大部分Unix系统中,大多数Linux发行版都自带了strace和ltrace,而FreeBSD也可通 过Ports安装它们。

你不仅可以从命令行调试一个新开始的程序,也可以把truss、strace或ltrace绑定到一个已有的PID上来调试一个正在运行的程序。三个调试工具的基本使用方法大体相同,下面仅介绍三者共有,而且是最常用的三个命令行参数:

使用上述三个参数基本上就可以完成大多数调试任务了,下面举几个命令行例子:

三个调试工具的输出结果格式也很相似,以strace为例:


每一行都是一条系统调用,等号左边是系统调用的函数名及其参数,右边是该调用的返回值。 truss、strace和ltrace的工作原理大同小异,都是使用ptrace系统调用跟踪调试运行中的进程,详细原理不在本文讨论范围内,有兴趣可以参考它们的源代码。

举两个实例演示如何利用这三个调试工具诊断软件的”疑难杂症”:

案例一:运行clint出现Segment Fault错误

操作系统:FreeBSD-5.2.1-release

clint是一个C++静态源代码分析工具,通过Ports安装好之后,运行:


在Unix系统中遇见”Segmentation Fault”就像在MS Windows中弹出”非法操作”对话框一样令人讨厌。OK,我们用truss给clint”把把脉”:


我们用truss跟踪clint的系 统调用执行情况,并把结果输出到文件clint.truss,然后用tail查看最后几行。注意看clint执行的最后一条系统调用(倒数第五 行):stat(“/root/.clint/plugins”,0xbfbfe680) ERR#2 ‘No such file or directory’,问题就出在这里:clint找不到目录”/root/.clint/plugins”,从而引发了段错误。怎样解决?很简单: mkdir -p /root/.clint/plugins,不过这次运行clint还是会”Segmentation Fault”9。继续用truss跟踪,发现clint还需要这个目录”/root/.clint/plugins/python”,建好这个目录后 clint终于能够正常运行了。

案例二:vim启动速度明显变慢

操作系统:FreeBSD-5.2.1-release

vim 版本为6.2.154,从命令行运行vim后,要等待近半分钟才能进入编辑界面,而且没有任何错误输出。仔细检查了. vimrc和所有的vim脚本都没有错误配置,在网上也找不到类似问题的解决办法,难不成要hacking source code?没有必要,用truss就能找到问题所在:


这里-D参数的作用是:在每行输出前加上相对时间戳,即每执行一条系统调用所耗费的时间。我们只要关注哪些系统调用耗费的时间比较长就可以了,用less仔细查看输出文件vim.truss,很快就找到了疑点:

vim 试图连接10.57.18.27这台主机的6000端口(第四行的 connect()),连接失败后,睡眠一秒钟继续重试(第6行的nanosleep())。以上片断循环出现了十几次,每次都要耗费一秒多钟的时间,这 就是vim明显变慢的原因。可是,你肯定会纳闷:”vim怎么会无缘无故连接其它计算机的6000端口呢?”。问得好,那么请你回想一下6000是什么服 务的端口?没错,就是X Server。看来vim是要把输出定向到一个远程X Server,那么Shell中肯定定义了DISPLAY变量,查看.cshrc,果然有这么一行:setenv DISPLAY ${REMOTEHOST}:0,把它注释掉,再重新登录,问题就解决了。

案例三:用调试工具掌握软件的工作原理

操作系统:Red Hat Linux 9.0

用 调试工具实时跟踪软件的运行情况不仅是诊断软件”疑难杂症”的有效的手段,也可帮助我们理清软件的”脉络”,即快速掌握软件的运行流程和工作原理,不失为 一种学习源代码的辅助方法。下面这个案例展现了如何使用strace通过跟踪别的软件来”触发灵感”,从而解决软件开发中的难题的。

大 家都知道,在进程内打开一个文件,都有唯一一个文件描述符(fd:file descriptor)与这个文件对应。而本人在开发一个软件过程中遇到这样一个问题:已知一个fd ,如何获取这个fd所对应文件的完整路径?不管是Linux、FreeBSD或是其它Unix系统都没有提供这样的API,怎么办呢?我们换个角度思考: Unix下有没有什么软件可以获取进程打开了哪些文件?如果你经验足够丰富,很容易想到lsof,使用它既可以知道进程打开了哪些文件,也可以了解一个文 件被哪个进程打开。好,我们用一个小程序来试验一下lsof,看它是如何获取进程打开了哪些文件。

将testlsof放入后台运行,其pid为3125。命令lsof -p 3125查看进程3125打开了哪些文件,我们用strace跟踪lsof的运行,输出结果保存在lsof.strace中:

我们以”/tmp/foo”为关键字搜索输出文件lsof.strace,结果只有一条:

原 来lsof巧妙的利用了/proc/nnnn/fd/目录(nnnn为 pid):Linux内核会为每一个进程在/proc/建立一个以其pid为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文 件的fd。目标离我们很近了。好,我们到/proc/3125/fd/看个究竟:

答案已经很明显了:/proc/nnnn/fd/目录下的每一个fd文件都是符号链接,而此链接就指向被该进程打开的一个文件。我们只要用readlink()系统调用就可以获取某个fd对应的文件了,代码如下:

出 于安全方面的考虑,在FreeBSD 5 之后系统默认已经不再自动装载proc文件系统,因此,要想使用truss或strace跟踪程序,你必须手工装载proc文件系统:mount -t procfs proc /proc;或者在/etc/fstab中加上一行:

CHKDSK(磁盘检测)命令的运用

CHKDSK命令可检查磁盘状态并显示状态报告,还能修正磁盘错误。

  状态报告显示MS-DOS文件系统中的逻辑错误,该文件系统由文件分配表(FAT)和目录组成(CHKDSK不验证文件中的信息能否准确读出)。如果磁盘有错误,CHKDSK便会给出一条警告信息。所以,应不时地用CHKDSK来检查一下磁盘有无错误,以保证系统的正常运行。

  一、CHKDSK命令的语法

  CHKDSK drive:[[path]filename][/F][/V]

  若要显示当前驱动器的磁盘状态,可用命令:

  CHKDSK

  二、CHKDSK命令的参数解释

  (1)drive

  指定要用CHKDSK检查的磁盘所在的驱动器。

  (2)[path]filename

  指定要用CHKDSK进行碎片检查的一个或一组文件的路径及名称,可用通配符(*或?)指定多上文件。

  三、CHKDSK命令的开关项

  (1)/F

  修正磁盘错误。需要注意的是从其它应用程序(如Windows等)运行CHKDSK时不要选此项。

  (2)/V

  磁盘检查时,显示每个目录下的文件。

  四、帮助信息的获取

  如果不知道CHKDSK命令的用法也没关系,在DOS下随时打入CHKDSK/?便可了解其用法。

  五、关于CHKDSK命令的注释

  (1)状态报告的形式

  MS-DOS按类似下列的形式显示CHKDSK的状态报告:

  Volume MS-DOS_6 created 07-16-1996 10:40a

  Volume Serial Number is 2111-59F0

  629,424,128 bytes total disk space

  638,976 bytes in 15 hidden files

  1,146,880 bytes in 70 directories

  120,766,464 bytes in 1,802 user files

  506,871,808 bytes available on disk

  (2)修正磁盘错误

  在修正磁盘错误时,最好使用ScanDisk程序。详细信息可以参阅(SCANDISK)命令。用CHKDSK/F命令修正磁盘错误的显示信息如下:

  10 lost allocation units found 3 chains

  convert lost chains to files?

  若按下Y,MS-DOS把每个丢失的链在根目录中以FILEnnnn .CHK形式的文件名存放文件,nnnn是从0000开始的数字。CHKDSK检查结束后,可以检查一下这些文件是否含有所需要的数据,如果有就可以对其进行编辑后使用,否则便可将其全部删除,以免占用磁盘空间。若选N,MS-DOS只修正磁盘,但不保存丢失的分配单元的内容。

  如果不用/F开关项,CHKDSK将出示信息提醒用户是否文件需要修正恢复,但不进行实际的错误修正工作。

  (3)ERRORLEVER参数

  若CHKDSK没有找到任何错误,则返回到ERRORLEVER的值为0。如果找到了一个或多个错误,返回时ERRORLEVER的值为255。

  六、使用CHKDSK命令的注意事项

  (1)系统存在打开的文件时

  当有文件打开时请不要使用CHKDSK。因为CHKDSK是假定磁盘文件处于关闭状态而设计的。当有文件打开时,相应的MS-DOS将会修改文件分配表和目录结构。这种改变并不一定立即进行,文件分配表和目录结构的改变发生在不同时刻。因此如果磁盘上文件打开时运行CHKDSK,就会把目录结构和文件分配表的不一致解释为出错,从而导致数据丢失或文件系统的破坏。因此,在运行其它程序,如Microsoft Windows时,千万不要运行CHKDSK。

  (2)CHKDSK不能用于分配的驱动器和网络。

  CHKDSK不能用于由SUBST命令形成的驱动器工作,也不能用于网络驱动器上的磁盘检查。

  (3)物理磁盘错误

  CHKDSK命令只能找到文件系统中的逻辑错误,而不能查找物理磁盘错误。要查找物理磁盘错误,请使用SCANDISK程序。

  (4)坏磁盘扇区

  CHKDSK报告中将坏扇区标记上“bad”,SCANDISK和其它物理磁盘错误修正程序也将坏扇区标记为“bad”,因此坏扇区不会造成危害。

  (5)交叉链接的文件

  如果有两个文件或目录共用同一磁盘空间的记录,CHKDSK会报告有交叉链接文件。如果CHKDSK发现有交叉链接文件存在,会显示类似如下信息:

   is cross linked on allocation unit

  CHKDSK不会修补交叉链接文件,即使指定了/F项。要修复交叉链接文件,需要运行SCANDISK程序,或者进行手工修复,然后复制到指定的文件中并删除原文件。

  七、应用实例

  (1)将CHKDSK的状态报告存入文件

  可将CHKDSK状态报告重定向输出到一文件中保存,但注意重定向CHKDSK输出到文件时,不要使用/F开关项。例如:将CHKDSK检查的信息输出到CHK.LIS文件中,其命令为:

  C:\DOS>CHKDSK A:>CHK.LIS。

  (2)若检查C盘存储多少数据,还有多少剩余空间并修正磁盘错误,可输入如下命令:

  CHKDSK C:

  当遇到错误时,CHKDSK会暂停并提示信息。

  (3)查找文件

  利用CHKDSK与FIND命令结合管道功能实现在全盘的文件查找,这一命令格式不仅可以列出所查找文件的所在目录,而且还可以列出各目录中的同名文件,连隐含文件也不例外。值得注意的是使用本命令之前,应先用CHKDSK/F参数修正磁盘错误。例如在C盘上查找README文件,其命令格式如下:

  C:>CHKDSK/VIFIND “README”