K-Res

关于Javascript闭包closure的应用

最近在研究百度地图API的应用,试验了iOS SDK后又开始试验Web端的JS版应用,做到在地图上通过Ajax异步调用方式从后端取得数据后,添加标注并给标注添加对应的点击时间alert出此位置的信息时遇到了一个Javascript问题,最开始的code是这样写的:

		$.ajax({
			type : "get",
			url : urlStr,
			async : true,
			dataType : "json",
			error : function() {
				alert('No valid location record!');
			},
			success : function(json) {
				for(var i=0;i<json.length;i++)
				{
					var point = new BMap.Point(json[i].longtitude, json[i].latitude); 
					var marker = new BMap.Marker(point);        // 创建标注  
                                        // 添加点击事件侦听
					mark.addEventListener("click", function()
			                {
				            alert('记录时间: '+json[i].logTime+' 定位时间: '+json[i].gpsTime);
				            return;
			                });
					map.addOverlay(marker);                     // 将标注添加到地图中 
				}
		        var point = new BMap.Point(json[0].longtitude, json[0].latitude);  
        		map.centerAndZoom(point, 15);
			}
			});

这样运行时,点击任意一个标注后就会收到浏览器的js脚本错误,提示json[i].logTime还有后面同样的gpsTime部分有问题,检查了一下,发现Ajax请求成功后的函数内循环遍历数据时的i是局部变量,而每一个mark的click侦听函数内的i都为对同一个变量的引用,也就是说循环遍历后每次点击触发执行这段响应代码时的i都是同一个数,而不是认为的对应每一个mark时的i,也自然就取不到所期望的数据了!
Continue reading…

开启Gson的缩进格式Json输出

最近研究GAE上的Java支持,接触到了不少J2EE的技术,先记录一些基础小问题吧,短期内没遇到GAE硬伤导致放弃的话应该会继续丰富这方面的内容。

这次记录的是关于Java JsonGson的缩进格式输出方法。

这个库默认情况下会输出格式紧凑没有缩进的Json字符串,像这样:

{"data1":100,"data2":"hello","list":["String 1","String 2","String 3"]}

这样虽然能减少一些字节,但是开发调试时量大了的话看着会很不舒服,开启缩进格式化的方法是不要直接new Gson对象,而是使用GsonBuilder创建Gson对象,像这样:

Continue reading…

Project Ne10在iPhone 4S上的试验结果

Project Ne10: https://github.com/projectNe10/Ne10
是由ARM官方人员创建并维护的一套基于neon SIMD指令集的优化函数库,可以用于提高多媒体,信号处理等计算的速度(类似于Intel的MMX和AMD的3D NOW!)。其实这个也是由于ARM意识到了现在很少会有iOS或Android等这些热门平台开发人员会去使用汇编优化的问题,才建立了这个开源项目。想想当初上学时学数字图像处理做算法,发现用MMX可以提高算法速度,然后吭哧了半天MMX的各种寄存器,指令集,然后很欢喜的看到提高了几十ms的速度后,那个欢乐啊,现在的程序猿真是幸福!
git clone了项目在Mac上用Xcode Version 5.0 (5A1413)试验一下,记录一下在我的iPhone 4S上的试验结果:
Continue reading…

2013年最后一天了

马上就2014了,这月过得有点忙,有点累,有点衰,也没时间丰富小博的内容,姑且躺在被窝里留个纪念吧,也算是这月有了一条。
祝各位访问到小博的朋友们,也祝自己新年快乐!

记录最近折腾eSATA外置硬盘的经历

之前由于实在受不了用USB2.0的小优盘从HTPC下载机上来回搬东西的又慢又要分批的痛苦之处,购入了ORICO 6518SUS3 这款eSATA+USB3.0的硬盘座:http://www.orico.com.cn/product/16_1874.html

IMG_0341a

之所以选择了这款eSATAUSB3.0双接口的硬盘座,是因为要在没有USB3.0eSATA的老P45电脑和有USB3.0有eSATAB75M HTPC之间共同使用。

到货之后先试了一下USB3.0,顺利识别出并且速度也比较满意,配合ST31000528AS硬盘复制文件能达到硬盘80MB/S左右。接着试eSATA时却遇到各种问题: Continue reading…

关于Office 2013安装后每次打开Word Excel等都提示正在配置的问题

今天把一台PC的系统从Win 8升级到了Win 8.1,由于第一次升级安装的时候选择了保留设置和应用后重启几次快完成时报了个错又回滚了回去,看到有同学说可能是升级保留应用存在的兼容问题,建议只保留设置,于是又来了一边只保留设置的升级,这回虽然成功升级了,但是桌面的那堆软件图标和硬盘上装好的软件文件基本上就都报废了,于是又开始重装!

到Office的时候遇到点小问题,本来之前Win 8的时候装的是2013的普通版,后来升级后换了个VOL版,发现安装好后,每次启动Word Excel等都会有个一段时间的正在配置的提示,即耽误时间,又烦人,于是开始想办法解决。
Continue reading…

github克隆项目中的子模块submodule时遇到的问题

GitHub真是个开源大宝库,不只能学习代码,还能学习git的使用!

最近在研究Off-the-Record-iOS项目(https://github.com/chrisballinger/Off-the-Record-iOS)时,学习实践了git submodule的用法!

这个项目中有一个Submodules文件夹,包含了该项目所引用到的其他GitHub上的开源项目,最开始没注意到,直接Download ZIP拿下来的,发现XCode项目中一堆红色文件名,才发现原来还有很多依赖项目,仔细看了一下还挺不少,于是果断放弃手动挨个下载…

搜索了一下,发现项目的issue #87有人问到了类似的问题:https://github.com/chrisballinger/Off-the-Record-iOS/issues/87,按照下面的回答,重新git clone了项目,并使用git submodule init && git submodule update(1.6以后版本也可以直接用git clone –recursive代替)来更新项目中的依赖子模块,更了前几个之后又出现了新的错误:

Submodule path ‘Submodules/DAKeyboardControl’: checked out ‘5352d1ff2d1131d974d94406ed8fcf8eb068aa72’
Cloning into ‘Submodules/LibOrange’…
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Clone of ‘git@github.com:ChatSecure/LibOrange.git’ into submodule path ‘Submodules/LibOrange’ failed
Continue reading…

DD-WRT使用DNSMasq时设置静态DNS服务器的方法

几个月前为了能让路由器支持自定义DDNS服务,于是给自己的Buffalo刷了DD-WRT的第三方固件(Buffalo自带固件中也有DDNS,但是那几个服务提供商现在不是倒了就是转提供付费服务了…),版本:DD-WRT v24-sp2 (08/07/10) std。DDNS倒是支持了,但最近想修改路由器DHCP给客户端的DNS解析服务器地址却发现不那么管用了,一番折腾后,发现原因如下:
Continue reading…

使用图片方式自定义iOS导航栏navigationItem的backBarButtonItem

在做ViewControlller的navigationItem时,我们经常需要使用自定义的图片来替换系统默认的按钮样式,这点在对普通导航项,比如leftBarButtonItem或rightBarButtonItem来说还是比较简单的,通过UIBarButtonItem的setImage设置做好的图片按钮,然后再通过

[item setBackgroundImage:[UIImage new] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

去掉默认的背景image就可以了。但是如果是想自定义特殊的backBarButtonItem就比较麻烦了, Continue reading…