Openfire Bosh 配合strophe.js使用

这次试了一下Openfire的Bosh协议以及strophe.js,记录一下。

 

 

有两个问题要注意:

1:直接使用javascript调用bosh往往存在同源原则的问题,例如localhost:80端口下的页面脚本要访问Bosh服务localhost:7070,那么这个ajax访问就会失败,因为违背了同源法则。(这使得我又回去看了一下cookie的问题https://blog.kazge.com/web/2012/08/26/e5-86-8d-e8-b0-88p3p-e4-b8-8e-e7-ac-ac-e4-b8-89-e6-96-b9cookie/,cookie保存却又不区分端口)因此,我们要么使用跨域插件fkXHR要么在服务器上配置代理来使bosh服务与发起请求页面“同源”。

例如apache里面在 httpd.conf 中加入下面几行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

 

ProxyRequests Off
ProxyPass /xmpp-http http://127.0.0.1:7070
ProxyPassReverse /xmpp-http http://127.0.0.1:7070
<proxy http://127.0.0.1:7070>
    AddDefaultCharset off
    AllowOverride None
    Order Deny,Allow    
    Allow from all
</proxy>

 

上面的配置将apache监听端口下/xmpp-http 反向代理到了http://127.0.0.1:7070

 

2: 这其实和上面的第一个问题相关,如果遇到400 Bad Request的问题,你要检查你的代理配置和你请求的url, 很可能是掉了最后的反斜杠/,这个是反向代理常犯的错误。以上面的配置为例,则bosh的url应该为localhost/xmpp-http/http-bind/

[为方便国外鸟:]

if you encounter the error response from the xmpp BOSH server, you should check your url with your proxy configuration, it is you miss the last backslash of the BOSH service’s url in your javascript in most case. for example, if you make the proxy like “ProxyPassReverse /xmpp-http http://127.0.0.1:7070” then your BOSH url should be localhost/xmpp-http/http-bind/, note the last backslash.

 

使用示例官方下载包example文件夹中有。

 

这个strophe有个奇怪的行为,其Strophe.Connection.connect方法当传入的不带域名时,会尝试匿名登录。而如果传入bareJid(像[email protected]),如果密码错了或是用户名不存在,则一直没返回。

 

参见:

http://mineral.iteye.com/blog/448260

http://www.ibm.com/developerworks/cn/xml/tutorials/x-realtimeXMPPtut/section6.html

Continue reading Openfire Bosh 配合strophe.js使用

Google Speech Api使用

语音识别里,Google 现在是个Big Gun了,但是它没有公开它的API,也没有发售,许多程序使用这个api也是hack性质的,使用这种服务可能出现的问题就如Google Weather最近的更改一样。我从没想到竟然有人想拿它作为产品级别的应用服务,不过我已经比较淡定了,就像我没想到有人天天喊做震惊世界的软件,却成天想用抠门的态度来获得一本万利的回报,又想牛儿长得好又想牛儿不吃草!

嘛,嘛,嘛~ 扯远了,打住,00F829F7

 

 

从各方搜集到的情报来看,此服务性能还不错,虽然支持wav格式,但似乎官方推荐flac格式,所以我们还得转换一下,在java这方面就不得不提到两个开源项目:

https://github.com/The-Shadow/java-speech-api 这个里面包含了使用Google Speech Api的代码,可以参照,它是用了另外的一个项目

http://sourceforge.net/projects/javaflacencoder/

来转换wav到flac.

 

知道这两个事情,余下的就好办了,

请求头示例

Content-Type:audio/x-flac;rate=8000

请求地址

https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US

 

向其post你的flac流,得到的将会是解析结果,类似:

{"status":0,"id":"46f00c9fe47a4dfe3c97ae4076df726u-1","hypotheses":[{"utterance":"gong xi fa cai","confidence":0.9049254}]}

 

测试效果比较满意,国内访问相应速度堪忧,经常连不上,使用代理那速度就非常不错了。

 

代码我就不贴了。

 

 

这篇文章讲得比较详细: http://blog.csdn.net/dlangu0393/article/details/7214728

 

引用:

多种音频格式的测试

    收到朋友的邮件说使用flac实在是很不方便,问我有没有更好的解决方法,于是我尝试将其他编码格式应用于Google Speech API。以下为结果:

    1、WAV格式

    请求Header:Content-Type: audio/L16; rate=16000

    返回结果:识别成功

    2、MP3格式

    请求Header:Content-Type: audio/mpeg; rate=16000

    返回结果:无法识别的编码

    请求Header:Content-Type: audio/mpeg3; rate=16000

    返回结果:无法识别的编码

    请求Header:Content-Type: audio/x-mpeg; rate=16000

    返回结果:无法识别的编码

    请求Header:Content-Type: audio/x-mpeg-3; rate=16000

    返回结果:无法识别的编码

    请求Header:Content-Type: audio/mp3; rate=16000

    返回结果:无法识别的编码

    3、PCM格式

    请求Header:Content-Type: audio/x-ogg-pcm; rate=16000

    返回结果:无法识别的编码

    请求Header:Content-Type: audio/pcm; rate=16000

    返回结果:无法识别的编码

    4、SPEEX格式

    请求Header:Content-Type: audio/x-speex-with-header-byte; rate=16000

    返回结果:识别成功

    请求Header:Content-Type: audio/speex; rate=16000

    返回结果:识别成功

 

 

参见:

http://stackoverflow.com/questions/12721436/google-speech-api

http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/

http://blog.csdn.net/dlangu0393/article/details/7214728

Continue reading Google Speech Api使用

Android Basic验证造成的问题

今天是元旦,节日快乐。

 

我这两天就为这个问题,晚上终于解决了。

 

问题是这样的,我写个Android程序访问http服务,服务端使用Http Basic验证。开始使用的是httpclient,先用jvm测试,访问成功。然后用android UnitTest就不行了,返回错误是

400

Bad Request
Your browser sent a request that this server could not understand.
 
apache的错误是
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23) 
 
这我就纳闷了,刚开始还以为是https配置错误(服务端使用的是ssl)。
结果切换为http还是一样的错误。
 
于是乎我就找到了
http://stackoverflow.com/questions/12418458/client-sent-http-1-1-request-without-hostname-see-rfc2616-section-14-23-from/12434731#12434731
 
这位老兄和我一样的情况,最后他说是android 上http请求host头没设置造成的。
(就是他害我思路错误啊!)
 
我也试了一下,加了个Host头,而且要放在Authentication头之前。 
这样client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23) 
这个错倒是没有了,但是发现发送的内容服务器接收不到。
 
那就只好看看到底发的是什么东西了,这里要用到tcpdump:
具体见http://www.growprogress.com/vcommon/?p=1293 
使用http://www.strazzere.com/android/tcpdump 这个链接下载android上可运行的较好。
 
当获得日志后还要配合wireshark来分析。
wireshark需要先启动npf http://ask.wireshark.org/questions/1281/npf-driver-problem-in-windows-7

sc qc npf查询npf是否运行
sc start npf启动npf

 

我也试过直接wireshark监控模拟器或android-x86的请求,但是看不到,还是需要通过tcpdump。

 

如果是ssl请求那就更麻烦了,参见http://blog.csdn.net/jasonhwang/article/details/2350723

因此我是切换到http来测试的。

 

从请求中没看到什么问题(这里又犯错误,问题就在这里,没有仔细比较,所以没看出来)

 

于是怀疑是不是httpclient有问题,巧的是就有文章说这个问题 http://jackyrong.iteye.com/blog/1228220

 
另外这个项目更新了android自带的httpclient
https://code.google.com/p/httpclientandroidlib/
 
于是乎我就切换到httpurlconnection,把我的工具类重写了一遍……
 
结果,还是一样的问题,OMG,简直要崩溃了,这时脑子也很疲劳了,
一段时间来对Android的牢骚几乎就要爆发了(这个牢骚免不了,日后定一吐为快……)。
 
就在这时,这篇文章救了我 
http://stackoverflow.com/questions/5092561/http-post-request-with-authorization-on-android/5095189#5095189
原来是Android上Basic编码的问题,多了个换行符,
怪不得Host放在Basic64编码之前就不报client sent HTTP/1.1 request without hostname  这个错。
而且我想起来tcpdump日志看起来有点怪,原来是这个问题。
 
解决方案就是
 private String getB64Auth (String login, String pass) {
   String source=login+":"+pass;
   String ret="Basic "+Base64.encodeToString(source.getBytes(),Base64.URL_SAFE|Base64.NO_WRAP);
   return ret;
 }
 
测试通过,真是无语啊。
 
为什么我不是高富帅,
如果我是高富帅,
我就吃苹果去了,
左手ipad,
右手iphone,
膝上托着macbook pro……
 

Continue reading Android Basic验证造成的问题

【转】Dalvik VM(转载整理)

转一篇转得好的,转自 Dalvik VM(转载整理)

Dalvik虚拟机是Google的用于移动设备的Android平台的一个主要部分。虚拟机可运行Java平台应用程序,这些应用程序被转换成紧凑的Dalvik可执行格式(.dex),该格式适合内存和处理器速度受限的系统。

Dalvik虚拟机的作者是丹伯恩斯坦(Dan Bornstein)。

与大多数虚拟机和真正的Java虚拟机不同,前者是栈机(stack machine),而Dalvik VM是基于寄存器的架构(register-based architecture)。就像CISC与RISC的争论,这两种方式的相对优点是一个不断争论的话题,且有时技术界限会变得模糊不清。此外,两种方法的相对优势取决于所选择的解释/编译策略。

一个名为dx的工具,它用于转换Java的.class文件到.dex格式。多个类文件可包含到单个的.dex文件中。重复的、可用于多个类的字符串和其它常量在转换到.dex格式时输出到保留空间。Java字节码还可转换成可选择的、Delvik VM使用的指令集。一个未压缩的.dex文件在文件大小方面往往比从同样的.class文件压缩成的.jar文件更小。

为满足低内存要求而不断优化, Dalvik虚拟机有一些独特的、有别于其它标准虚拟机的特征:
(1) 虚拟机很小,使用的空间也小;
(2) Dalvik没有JIT编译器;(Android 2.2 开始支持JIT)
(3) 常量池已被修改为只使用32位的索引,以简化解释器;
(4) 它使用自己的字节码,而非Java字节码。(It is not a JVM as you might expect.)

另外一篇终结:

(1) Dalvik VM和JVM 的第一个区别是 Dalvik VM是基于寄存器的架构(reg based),而JVM是栈机(stack based)。reg based VM的好处是可以做到更好的提前优化(ahead-of-time optimization)。 另外reg based的VM执行起来更快,但是代价是更大的代码长度。(预加载导致启动慢)
(2) 另外一个区别是Dalvik可以允许多个instance 运行,也就是说每一个Android 的App是独立跑在一个VM中.这样做的好处是一个App crash只会影响到自身的VM,不会影响到其他。 Dalvik的设计是每一个Dalvik的VM都是Linux下面的一个进程。那么这就需要高效的IPC。另外每一个VM是单独运行的好处还有可以动态active/deactive自己的VM而不会影响到其他VM
(3) 接下来就是关于版权之类争论。(可以参看下面文章)

既然reg based VM有那么多好处,为什么之前设计JAVA的人没有采用reg based而是采用stack based的呢? 原来stack based的VM也有其优点,就是它不对host平台的reg数量做假设,有利于移植到不同的平台。而Dalvik则不关心这些,因为它本来就是为ARM这样的多reg平台设计的。另外Dalvik被移植到x86也说明,即使是x86这种reg很少的平台,reg based的VM也是没有问题的。

注:这两种VM应该还有其他的优缺点,但是对应用开发人员或非相关内核开发人员而言没必要有深入的研究。

Dalvik VM官方网站:http://www.dalvikvm.com/

Dalvik VM wiki网站:http://en.wikipedia.org/wiki/Dalvik_(software)  (网址有问题,需要拷贝整个URL打开)

《Android的虚拟机Dalvik引来论战不断》 http://www.oschina.net/bbs/thread/2547

 

参见:

http://blog.csdn.net/libaohan/article/details/7225618

Continue reading 【转】Dalvik VM(转载整理)

流行在线支付平台比较

在线支付online payment,这里主要比较国外的 paypal, authorize.net, stripe.com.\\

 

paypal 和authorize.net都是可靠地的老牌子,也是最流行的,这篇文章比较了它们的使用场景,http://www.webdesignerexpress.com/which-is-better-paypal-shopping-cart-or-authorizenet-shopping-cart-article-58.html

 

大意是说:

paypal适合小支付,它没有固定收费,成本较低,但是使用paypal却要求非常严格,用户填错了个字符什么的就无法支付,且提示模糊,这都是由于paypal严格的安全要求造成的,用户可能常常找不着北,这一点有利有弊,用户喜欢它的安全性,但又造成使用不方便.

 

而authorize.net能让站点定制自己的表单,完全由后台api调用,没人说他不好的。但是它的收费可不便宜,固定费用$30每月,顶价可达到$75。 这是个很大问题。所以交易量大的商户可使用。

 

最后文章推荐双管齐下,来个中国的中庸之道……

 

但是对于authorize.net的收费贵的缺点,这里有个替代,那就是stripe.com,它没有paypal那么复杂,也没有authorize.net那么贵,而且它的后台投资方其实就是paypal的投资方, 看起来很好哈,只是目前使用后起之秀的它还不是很火爆,没有前两者那么有名。

 

还有一个更新的:

https://www.balancedpayments.com/help#22659936

面向商业,收费更便宜

https://www.balancedpayments.com/docs/overview?language=bash#payouts

 

怎么取舍,还是要看你的客户的意思了,毕竟风险还是他们来承担。

 

参见其他平台比较:

http://www.merchant-account-services.org/article/payment-gateways-reviewed

http://www.chukou1.com/University/UniversityDetails.aspx?id=414

Continue reading 流行在线支付平台比较

Eclipse 安装使用EGIT

这回要使用git,发现eclipse有EGIT插件(基于JGit,所以需要安装时需要点选JGIT)。

 

主页http://www.eclipse.org/egit/download/

 

我直接使用更新站点,却发现安装失败,说什么org.eclipse.team.core 找不到。

 

网上是说和mylyn有关,尝试更新mylyn,又报依赖别的丢失。

 

我想应该是我的eclipse版本有点低的问题。

查看http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3F

发现我的版本只适合1.3版本,安装1.3就没问题了。

 

怎样查看eclipse版本: Help/About Eclipse 点击Eclipse.org图标, 就会出现eclipse 精确版本了。藏得这么深!

 

使用指南 http://wiki.eclipse.org/EGit/User_Guide

 

需要设置HOME系统变量,见http://wiki.eclipse.org/EGit/User_Guide#Setting_up_the_Home_Directory_on_Windows

 

克隆并创建项目:

当需要从已存在的git服务器上下载代码时,需要在Git视图中点击克隆资源,需要填入用户名密码,url等信息。成功后,会下载资源到本地源。然后我们需要将这个项目导入到eclipse中:

点击工作目录右键,选Impoert Projects

Snap1

然后可选使用新项目向导或者通用项目导入,由于文件实际是存在于git_home下面,所以我一般选第一个(imort existing projects):

Snap2

 

这里推荐非常好的系列文章 Eclipse上GIT插件EGIT使用手册

第6,7,8篇对于egit使用非常有帮助。

 

 

这里提一下像我这种svn转过来的人爱犯的错误,不要尝试多个项目用一个repo,因为:

http://stackoverflow.com/questions/7033601/multiple-projects-in-one-git-repo

 

git的repo是轻量级的,可以说就是针对project的。

git概念不同,中间有个本地repo,你每次在eclipse里面创建一个repo,都会在本地git_home下面创建同名repo,所以不同的eclipse里面你要拷贝同一个repo,那就造成冲突了。

如果所有项目用一个repo,那么如果你想只下载其中一个project是办不到的,想想仅仅一个2k的项目,却要下载repo里面所有其他项目到本地,这样是不是个问题?

 

我本来想偷个懒,不想每个项目都创建repo配置repo,结果倒来倒去,很多问题,还把一个项目给永久删除了,损失惨重!

 

这样对于github真是赚啊,多个repo就多些$$!

 

关于合并分支的问题:

这对于我来说是比较复杂的功能,官方文档:http://wiki.eclipse.org/EGit/User_Guide#Merging

这里有个视频:http://www.youtube.com/watch?v=tSmTwn8O2co

假设有分支A和B,现在B分支想合并到A中去。

步骤:

先switch to 分支A,这时你eclipse是分支A的代码。然后Team/Merge选择分支B,如果没有很大冲突,那么你很幸运的直接就merge了A和B, 但往往情况是A和B有冲突,这时会显示同步视图,你要一步步的解决冲突,这可是个力气活。一般两个版本文件是修改关系或是删除的话,点merge或override(这个要慎用)。如果是增加,则点击Add to Index。这样一步步解决冲突后,再回到java视图,Team/commit,再项目Team/Merge 分支B一下,你会发现已经合并好了,再Push To Upstream。

 

这东西不是很好用,也不是非常不好用,习惯了就好。

Continue reading Eclipse 安装使用EGIT

【转】启用SQL Server 2005 Express的sa用户名

最近重操旧业用.net, sql使用2005, 真是忘得一干二净了,这篇文章图文并茂,与2008也差不多。

转自:http://www.weste.net/2009/5-20/21173876541.html

 

默认情况下,SQL Server 2005 Express Edition、Evaluation Edition 和 Developer Edition 只允许本地客户端连接(当然包括默认安装的VS2008、VS2005、Express Web、VWD2005、VWD2008所附带的SQL Server 2005 Express)。Enterprise Edition(企业版)、Standard Edition(标准版) 和 Workgroup Edition(工作组版) 还可侦听 TCP/IP 上的远程客户端连接。

由于,SQL Server 2005 Express Edition是可以免费分发的,它的安装包分为两种:“SQL Server 2005 Express Edition SP2”和“具有高级服务的 SQL Server 2005 Express Edition SP2”,其下载位置:http://msdn2.microsoft.com/zh-cn/express/bb410792.aspx。为了可视化管理,Microsoft还提供了“SQL Server Management Studio Express”,本文就是基于这个管理工具编写的教程,该管理工具的下载链接:http://msdn2.microsoft.com/zh-cn/express/bb410792.aspx

一、安装SQL Server 2005 Express Edition SP2、Microsoft XML Core Services 6.0 和 Microsoft XML Core Services 6.0 Service Pack 1 安全更新程序 (KB933579)和SQL Server Management Studio Express Edition

从上述下载地址下载:SQL Server 2005 Express Edition SP2(SQLEXPR32_CHS.EXE,40.6 MB)和SQL Server Management Studio Express(SQLServer2005_SSMSEE.msi,44.7 MB)

1、运行SQLEXPR32_CHS.EXE

在安装SQL Server 2005 Express Edition SP2的最后,安装程序会给出一个安装总结,强烈建议大家阅读,它会告诉我们很多的信息,不要轻易放过。下面,我将其对我们用的配置信息摘录如下:

  • 配置和管理 SQL Server Express
    为提高可管理性和安全性,SQL Server 2005 对系统上的 SQL Server 外围应用进行了更严格的控制。若要使外围应用最小化,请将以下默认配置应用于 SQL Server 实例:
    • 禁用 TCP/IP 连接
    • 禁用 Named Pipes
    • 必须手动启动 SQL Browser
    • 禁用 OPENROWSET 和 OPENDATASOURCE
    • 禁用 CLR 集成
    • 禁用 OLE 自动化
    • 禁用 xp_cmdshell
      若要启用或禁用功能和服务,请运行“开始”菜单中的“SQL Server 外围应用配置器”工具。

安装完后,我们可以看到如下的开始菜单项:

它包含三个配置工具,我们今天等下要用到“SQL Server配置管理器”和“SQL Server外围应用配置器”。

2、运行SQLServer2005_SSMSEE.msi

为了便于管理,我们安装SQL Server Management Studio Express Edition。

安装 SQL Server Management Studio Express 之前,必须先安装 MSXML 6.0。下载其中文版,安装之。

注意必须安装2007年8月14日的Microsoft XML Core Services 6.0 和 Microsoft XML Core Services 6.0 Service Pack 1 安全更新程序 (KB933579),否则不能正常安装SQL Server Management Studio Express,其下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=70c92e77-9e5a-41b1-a9d2-64443913c976

有了它才能正常安装SQL Server Management Studio Express。

二、配置SA

在默认情况下,SQL Server 2005 Express是采用集成的Windows安全验证且禁用了sa登录名。为了工作组环境下不使用不方便的Windows集成安全验证,我们要启用SQL Server 2005 Express的混合安全验证,也就是说由SQL Server来验证用户而不是由Windows来验证用户。

1、使用SQL Server Management Studio Express。

当我们启动SQL Server Management Studio Express时,首先它要连接到我们的SQL Server 2005 Express,我们在安装SQL Server 2005 Express时,默认的实例为SQLExpress,服务器名称的组成为:机器名\实例名,因此,本例的服务名称为W2K3-C \SQLEXPRESS(注:安装SQL Server 2005 Express的机器名为W2K3-C)。第一次使用SQL Server Management Studio Express,由于我们必须采用Windows身份验证,这是默认安装时决定的。

a) 设置SQL Server 2005 Express的身份验证方式

b) 设置sa的密码并启用sa登录名

由于我们不知道sa的密码,所以我们须设置一个!不要关闭这个窗口,接着选择左侧的“状态”,默认情况下,sa登录名是禁用的,因此,我们必须启用sa登录名,选择右侧的登录下的“启用”

最后,我们点击窗口下面的“确定”按钮。好了,到此为止,SQL Server 2005 Express服务器已经可以让sa登录了,不过,要重新启动一下,让配置生效。

c) 验证sa登录

我们在桌面上新建一个文本文件,文件名为TestSQL.UDL,双击这个文件打开“数据链接属性”对话框,点击“提供程序”选项卡,如下图:

点击“下一步”按钮进入“高级”选项卡,输入数据源为:W2K3-C\SQLEXPRESS,即我们安装的SQL Server 2005 Express实例,并选择“使用指定的用户名称和密码”,输入登录名sa和sa的密码,最后,我们点击“测试连接”按钮,测试sa登录。我们惊喜的看到连接成功!为了下一次使用方便,勾选“允许保存密码”,最后,点击“确定”按钮保存这个数据链接。

Continue reading 【转】启用SQL Server 2005 Express的sa用户名

【转】一步操作让你的Photoshop CS5中文版变成英文版

 

 

中文转英文的需求不多,但是我是由于参考书里都是英文菜单名,我就找半天也不知道对应的中文名是什么,因此,还是使用英文菜单较好,不过PS修改语言还是个问题,我发现既然没有英文这一项,才发下下面的文章,还需要hack,0094062A

转载自http://blog.sina.com.cn/s/blog_627440a201019w19.html,它也转载,不过转载的原文链接已不可访问了,可见好文还是转载备份的好。

 

原文地址:一步操作让你的Photoshop CS5中文版变成英文版作者:山寨小新x

 

忘了photoshop从哪个版本开始了,不过绝对是CS5之前的版本就有这种方法了。国人一般使用的PS都是中文版的,不过也有一些非常喜欢英文软件的人,本人之前就找过PS的英文版本,不过软件都很大,一般都是官方的英文试用版本+破解。其实,这种方法大可不必,要想使你手中的photoshop 由中文版变为英文版,只要简单的一步就可以搞定了。

 

方法如下:1 首先,找到你的photoshop CS5(其他早期版本方法类似)的安装目录的

X:AdobeAdobe photoshop CS5Localeszh_CNSupport Files,(PS:我的文件目录是D:\Program Files\Adobe\Adobe Photoshop CS5\Locales\zh_CN\Support Files)在该文件夹下,有一个“tw10428.dat”的数据文件,只要将其删除,或者转移到别的位置(推荐转移到别的位置),这时候再打开photoshop CS5,软件就是英文版的了。

 

可见tw10428.dat只一个中文语言包,具体什么意思不知到,难道tw是台湾的意思,不可能吧,搞基呀,好了,本文结束。

提示:①删除或者转移tw10428.dat之前,建议备份该文件,这样的话,如果觉得英文不爽的话,还可以使用该文件,将软件再搞成中文版

②该方法同样适用于photoshop其他早期版本。如果你的版本是CS5之前的版本,可能tw10428.dat文件的存储位置会和我上边提到的存储位置不一样,你可以通过系统文件搜索的方法,找到该文件,一样可以达到目的。

③以上方法只是雕虫小技,不足登大雅之堂,还望大家别拍砖。

④对于Illustrator CS5中文版如何切换成英文版,方法还在摸索中,目前没有结果。貌似是不能修改的,可能只有安装英文版的AI喽

Continue reading 【转】一步操作让你的Photoshop CS5中文版变成英文版

Pagination


Total views.

© 2013 - 2019. All rights reserved.

Powered by Hydejack v6.6.1