- Mac 自带了 Dictionary, 你可以给它安装丰富的字典,中文的或各种其他领域和语言的。安装方法如下:
1. 下载 词典的转换程序 DictUnifier,并执行它
2. 下载 StarDict 词典. 目前可从 http://abloz.com/huzheng/stardict-dic/ 处选择您需要的词典
3. 下载完成之后, 把下载的压缩包直接拖到 DictUnifier 界面上转换.
4. 打开 Dictionary,在它的 Cmd + , 进入的 Preferences 配置界面中就可以选入新安装的字典
完工! - 其实不必使用 WiFi ADB 连接的方式,Google USB Driver 说不兼容是因为 Mac 根本用不着这个就能直接连手机,可以用 USB 直接连接 Android 手机进行调试。大家可点击看这个
Mac OS X 下开发 Android 程序时使用 WiFi ADB 连真机调试
可忽略掉下面的内容。
我在 Mac OS X 下用 Eclipse 开发 Android 程序,当自己的 Android 手机插上电脑上是检测试不到的,不能想在 Windows 下那样,开启了 连接 USB 调试模式 就能在启动程序的的时候可选手机来调试或测试代码。
在 Mac 下的 Android SDK Manager 中其实也明确显示了
Google USB Driver Not compatible with Mac OS X
也就是无法即插即用了,那么在 Mac 下该如何联接真机来调试或测试程序呢?
有些地方的解决办法是,把手机的 USB 调试选项关掉,启用 USB 数据存储,把 Eclipse 生成的 APK 文件拷到手机的存储卡。手机上再自行安装,而且先得到 USB 数据存储项关掉后手机才能读取存储卡上的内容。
上面那样做只是告诉了你怎么把 APK 程序安装到手机上,还不如通过网络安装方便,并且肯定是不能联机单步调试。
相信还是不少人在 Mac 下开发 Android 程序的,定然会有更好的解决办法,那就是: Read More - Android 既然是开源的,那么我们开发时自然会想要得到一份它的源代码,这大大有助于我们更好的深入理解这个平台,更快捷的定位程序出错的根源。当然对于国内那些想自主研发 Mobile OS 的厂商来说,下载 Android 源码是步骤是不可或缺的。
我在标题中为什么要加上说是适合于各种平台呢,因为大概不少的地方都专门说在 Linux 下怎么去下载 Android 源代码,好说 Windows/Mac 下就不是那么回事似的,其实并无区别。
官方在说明怎么下载 Android 源代码(http://source.android.com/source/downloading.html) 的解说中也挺啰嗦的,不光要 git,还要 repo sync 来同步。
其实不管是什么平台,只要有 git 客户端就行了。想要下载哪个版本的 Android 源码,先在浏览器里打开 https://android.googlesource.com/platform/frameworks/base,就能看到在 Tags 下有什么版本的源码可下载。如图: Read More 本篇讲述如何在 JUnit 4 下正确测试异常,我会从 try..catch 的方式谈起,然后说到 @Test(expected=Exception.class), 最后论及 @Rules public ExpectedException 的实现方式,最终基本可确定用 @Rules 是最方便的。
我们在用 JUnit 测试方法异常的时候,最容易想到的办法就是用 try...catch 去捕获异常,需要断言以下几个条件:
1. 确实抛出的异常
2. 抛出异常的 Class 类型
3. 抛出异常的具体类型,一般检查异常的 message 属性中包含的字符串的断定所以常用的代码你可能会这么写:
1@Test 2public void passwordLengthLessThan6LettersThrowsException(){ 3 try{ 4 Password.validate("123"); 5 fail("No exception thrown."); 6 }catch(Exception ex){ 7 assertTrue(ex instanceof InvalidPasswordException); 8 assertTrue(ex.getMessage().contains("contains at least 6")); 9 } 10}这里被测试的方法是 Password.validate() 方法是否抛出了相应的异常,注意这里别漏 try 中的
fail("No Exception thrown.") Read More
假设在服务器上有文件 http://test.unmi.cc/json.php 文件,它的内容为:
[代码 1]1<?php 2header('Content-type: application/json'); 3 4$user = array ( 5 "name" => "Unmi", 6 "blog" => "http://unmi.cc" 7); 8 9echo json_encode($user); 10?>
要是在同一个域上要取该文件的内容,那好办,比如同为 test.unmi.cc 域上的 ajax.html 文件中写上:
[代码 2] Read More- 由于近期常工作于 Mac 环境下,对有些应用稍加深入点研究就免不了要用到网络包抓取工具来分析。早先在 Windows 环境用过老牌的 Sniffer Pro 和 Netxray,以及后来都用免费开源的 Packetyzer 和 Wireshark。偶尔还用过 Windows 服务版自带的网络监视器。
那 Mac 下有什么好用的抓包工具呢,试用了一下下面几个工具:
一. tcpdump 命令
因为它是 Unix 族的,所以首先想到的是 tcpdump 工具,确实 Mac 下也有这个命令,但用起来也太难了,全在命令行下,看起来不直观。
tcpdump 命令的使用可参考以下两个链接:
1. Mac OS X: How to capture a packet trace
2. A tcpdump Tutorial and Primer
二. Ethereal
图形界面的,跨多平台,功能也不错,不过基本你可以忽略它了,它自 2006 年以来就没再发展了,永远死守在 0.99 版了。它就是大我鼎鼎的 Wireshark 的前生。
三. Wireshark
轮到 Wireshark 的隆重出场了,作为 Ethereal 更名后的产品,它仍然是开源的且多平台通吃的。你只要在 Windows 上用过它的话,在 Mac 下的操作方式都一样的。 Read More - 晚上找了一些时候在线的即时语加亮组件,很多的,在线的代码编辑器就语法即时高亮上都可与客户端的编辑器相媲美了。有商业的,功能很丰富的,也有开源的,像 CodePress, 就很简单它支持 PHP, JavaScript, Java, Perl, SQL, HTML 和 CSS 代码的即时着色,完全由 JavaScript 来进行渲染。
顺着 CodePress 来搜索,恰好还找到一个能让我们在 WordPress 的后台在线编辑插件/主题的代码编辑框中实现语法着色,并且时编辑时实时语法着色哦,那就是插件:WordPress Plugin Code Editor,可以点击 Code Editor 链接下载并安装为 WordPress 的插件。
安装完启用后,使能看到编辑插件/主题时的代码都高亮了,使代码的可读性大大增加,编辑时即时的效果,能让你修改代码时出错的几率明显降低。 Read More - 下面列出了所有HTML标签的默认样式,供大家参考,写出这些东西的初衷是因为今天在修改一个样式的时候【怎么样修正zblog文章内容中ol列表样式为原来的样式]】,不清楚OL的默认样式距离左边距有多少像素,所以这里就列出这些,以供参考,我脑子不太好用,记不住,
Read More - 自 JDK1.4 引入正则表达式的支持可称得上是次大改变,
可 Java 的正则表达式的能力还是很弱,别说和 Perl 比了,就是和 C# 和 JavaScript 的正则表达式比较来也逊色不少,不过现在 JVM 上有其他语言对正则表达式有所增强,像 Groovy, jRuby 和 Scala。
[修正一下] 第一句话的说法是有误的,其实 JDK 本身的正则表达式就支持替换时用 $1, $2 那样的后向分组引用,例如:
String s = "abc def".replaceAll("(\\w+)\\s+(\\w+)", "$2 $1"); //s 就是 "def abc",replaceFirst 也可以用 $1, $2 的替换。比如在 Java 中要实现正则表达式的分组,后向引用的方式进行替换挺复杂的,像 JavaScript 完成两个分组的调换:1<script> 2 var src = "abc def"; 3 var des = src.replace(/(\w+)\s+(\w+)/, "$2 $1"); 4 document.write(des); 5 //输出为: def abc 6</script>
在 Java 中可得用上 Pattern, Matcher,还要 find()/group() 等操作,于是我就会考虑在 Java 中完成类似的功能有没有曲线的方法,有的。你可以调用 JVM 上其他语言的功能,我这里用列了两种实现方式
JDK1.6 起可借助 ScriptEngineManager 使用 JavaScript 相应的函数,除此之外还可用第三方的库 JRegex,具体实现,请参见如下代码,还带了测试用例:1package cc.unmi.utils; 2import javax.script.Invocable; 3import javax.script.ScriptEngine; 4import javax.script.ScriptEngineManager; 5 6import jregex.Pattern; 7import jregex.Replacer; 8 9public class StringUtils { 10 public static String replaceStringByJS(String src, String jsRegex, String replacement) { 11 ScriptEngineManager manager = new ScriptEngineManager(); 12 ScriptEngine engine = manager.getEngineByName("JavaScript"); 13 String script = 14 "function rep(target, regex, replacement){\n" 15 + " var patt = new RegExp(regex,'g');\n" 16 + " return target.replace(patt, replacement);\n" 17 + "}"; 18 19 try { 20 engine.eval(script); 21 Invocable inv = (Invocable) engine; 22 String result = (String) inv.invokeFunction("rep", src, jsRegex, 23 replacement); 24 return result; 25 } catch (Exception e) { 26 throw new RuntimeException(e); 27 } 28 } 29 30 public static String replaceStringByJRegex(String src, String regex, String replacement) { 31 Pattern pattern = new Pattern(regex); 32 Replacer replacer = pattern.replacer(replacement); 33 String result = replacer.replace(src); 34 return result; 35 } 36 37 public static void main(String[] args) { 38 String link="<link url=\"http://unmi.cc\" >\"Home\"</link>" 39 +"<link url=\"http://unmi.cc/tag/java\" >\"Java\"</link>"; 40 String jsString = StringUtils.replaceStringByJS(link, 41 "<link\\s+url=\\\"(.+?)\\\".[^/]*?>\\\"(.+?)\\\"</link>", "<a href=\"$1\">$2</a>"); 42 System.out.println(jsString); 43 44 String jregexString = StringUtils.replaceStringByJRegex(link, 45 "<link\\s+url=\\\"(.+?)\\\".[^/]*?>\\\"(.+?)\\\"</link>", "<a href=\"$1\">$2</a>"); 46 System.out.println(jregexString); 47 } 48 49 /* 50 * 程序输出 51 * <a href="http://unmi.cc">Home</a><a href="http://unmi.cc/tag/java">Java</a> 52 * <a href="http://unmi.cc">Home</a><a href="http://unmi.cc/tag/java">Java</a> 53 */ 54}
起初我是用的第一种方法,后来找到了第二种方式,感觉用 JRegex 更优雅些。 - 如何你的DispatcherServlet拦截 .do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对.js,*.jpg的访问也就被拦截了。
目的:可以正常访问静态文件,不要找不到静态文件报404。
方案一:激活Tomcat的defaultServlet来处理静态文件1<servlet-mapping> 2 <servlet-name>default</servlet-name> 3 <url-pattern>*.jpg</url-pattern> 4</servlet-mapping> 5<servlet-mapping> 6 <servlet-name>default</servlet-name> 7 <url-pattern>*.js</url-pattern> 8</servlet-mapping> 9<servlet-mapping> 10 <servlet-name>default</servlet-name> 11 <url-pattern>*.css</url-pattern> 12</servlet-mapping>要配置多个,每种文件配置一个 Read More