26

IOS中的core location提供了定位功能,能定位装置的当前坐标,同时能得到装置移动信息。因为对定位装置的轮询是很耗电的,所以最好只在非常必要的前提下启动。
其中,最重要的类是CLLocationManager,定位管理。
其定位有3种方式:
1,GPS,最精确的定位方式,貌似iphone1是不支持的。
2,蜂窝基站三角定位,这种定位在信号基站比较秘籍的城市比较准确。
3,Wifi,这种方式貌似是通过网络运营商的数据库得到的数据,在3种定位种最不精确

使用方式:
1,引入CoreLocation的包,一般的默认模板里是没有的,所以需要手动导入。
2,通过启动CLLocationManager来启动定位服务,因为定位信息是需要轮询的,而且对于程序来说是需要一定时间才会得到的,所以对于lcationManager的操作大多都给委托来完成。
加载locationManager的代码: 更多详细内容 »

Tags: ,

作者:Jock

26

MKMapView提供了一套可植入的地图接口,可以让我们在应用中展示地图,并对其进行相关的操作。一般来说,我们可以指定一个展示区域,放一些标记在上面,还可以加盖一些层在上面。MKMapView依赖Google map里面相关服务(如Google Earth API等),所以地图的左下角会有Google字样。
使用:
1.MKMapView的显示
(1)创建MKMapView

CGRect rect = CGRectMake(0, 0, 320, 460);
MKMapView *mapView = [[MKMapView alloc] initWithFrame:rect];
//定义经纬度
CLLocationCoordinate2D theCoordinate;
theCoordinate.latitude=22.5414; //纬度
theCoordinate.longitude=113.946; //经度
 
//定义显示范围
MKCoordinateSpan theSpan;
theSpan.latitudeDelta=0.01;
theSpan.longitudeDelta=0.01;
 
//定义一个区域(使用设置的经度纬度加上一个范围)
MKCoordinateRegion theRegion;
theRegion.center=theCoordinate;
theRegion.span=theSpan;//设置地图显示类型:
[mapViewsetMapType:MKMapTypeStandard];

//将mapview的显示区域设置为theRegion     [mapView setRegion:theRegion];
对于mapType,在MKTypes里有这样一段字典定义:

enum {
MKMapTypeStandard,
MKMapTypeSatellite,
MKMapTypeHybrid
};
typedef NSUInteger MKMapType;

standard:标注地图,显示街道和街道名
Satellite:卫星图片区
Hybrid:卫星图,同时在相应区域有标注了街道和街道名

更多详细内容 »

Tags: ,

作者:Jock

26

原创内容转载请注明来源http://www.hjide.com/article/630.htm

消息语法

要让一个对象做些什么的话,你需要给他发一个消息告诉他执行某一个方法。在Objective-C里, message expressions are enclosed in brackets:

[receiver message]

接收器是一个对象,消息告诉它该做些什么。在源代码里就是简单的把方法的名称以及所有的参数传递给他。当一个消息发送后,运行时系统通过接收器的指令系统发射找到这个方法。

举个例子,一条消息告诉myRect对象去执行display方法, 让这个矩形对象显示他自己的原因是:

[myRect display];方法也可以是有参数的。假设下面这个消失告诉myRect他的位置在窗口的左边是 (30.0, 50.0):

[myRect setOrigin:30.0 :50.0];

这里方法的名字是setOrigin::,有2个冒号每个表示一个参数。每个参数跟在冒号的后面。这个方法名里没有使用标签参数,这让参数的类型和作用变得难以分辨。相反的方法名应该包含一些标签来描述他们的参数。方法名中参数的标签在每个冒号之前setWidth:height:方法, 下面的例子明确表明了2个参数的作用:

[myRect setWidth:10.0 height:15.0];

       一个方法可能具有可变个数参数的情况并不少见,这些额外的参数用都好隔开跟在方法名的后面(和冒号的情况不同的是这部分并不认为是方法名)。下面的例子假设makeGroup:方法有一个必须的参数group和3个可选的参数: 更多详细内容 »

Tags: , , ,

作者:Jock

26

原创内容转载请注明来源http://www.hjide.com/article/626.htm

对象

就像对象这名字所指的一样,面向对象编程都是围绕着对象进行的。对象和数据之间是通过一系列特定的能使用和操作数据的操作联系在一起的。在Objective-C里这些特定的操作是对象的函数(方法);他们能操作的是对象的实例变量。本质上对象就是一段程序代码,这段代码包含一系列数据和一组函数。

举个例子,假设你写一个画图程序,这个程序能划线、圆、矩形、文字和位图等等,你可能会创建一个所有这些基本形状的类来给用户使用。一个矩形对象的实例应该包含这个矩形的位置,长和宽,矩形的颜色和是否填充以及矩形的线条样式。一个矩形类应该还有一些方法来设置矩形的位置、大小、颜色、填充状态和线条样式,这些方法一起影响这个矩形的展现。

       在Object-C里一个对象的实例的变量是对象的内部变量,通常你访问一个对象的状态只能通过对象的方法(你可以用scope directives来让子类或者其他对象直接访问对象实例中的变量)。其他访问对象状态的途径只能通过对象所提供的方法返回的信息。举个例子,一个矩形对象会提供表面自己大小和位置的方法。

       此外,一个对象仅能发现为他设计的方法,它不会错误的执行来自其他对象的方法。就像在C函数中的函数变量对于其他函数来说是不存在一样,对象的实例变量和方法实现对外也是隐藏的。 更多详细内容 »

Tags: , , ,

作者:Jock

26

第一章 类和对象 2
对象 2
id 3
动态造型 3
对象消息 4
消息语法 4
给nil发送消息 6
接收实例变量 6
多态 7
动态绑定 8
类 9
继承 10
NSObject类 11
继承实例变量 12
继承方法 13
覆盖一个方法 14
抽象类 14
类类型 15
静态类型 15
内省类型 16
类对象 16
创建实例 17
自定义类对象 18
变量和类对象 19
初始化类对象 21
基类的方法 22
源码中的类名 23
第二章 类定义 24
源文件
 24
类接口 25
引入接口 26
提交给其他类 27
接口的规则 27
类的实现
 28
提交给实例变量 29
实例变量的作用范围 30

 

一時興起決定翻譯下Apple的,才剛剛動手翻了一章多一點點,不知道有沒有人已經做過類似的事情了呢

Tags: , ,

作者:Jock

14

原创内容转载请注明来源 http://www.hjide.com/article/479.htm

从网上找的源代码,发现有很多问题。

首先是每次查找都是通过RandomAccessFile的文件指针的移动来定位,修改为增加一个MappedByteBuffer的内存映射文件试图提高查找效率,

接着发现在多线程环境下会出现问题,发现用来记录指针的变量是类的成员对象,多线程不能共用一个实例,增加一个同步锁就有违修改的初衷。

于是经过大量修改后有了现在这个版本,源代码请移步https://github.com/jockhuang/iplocation 下载。

Tags: ,

作者:Jock

14

2个文件需要修改

第一个文件:/root/nginx-1.0.11/src/core/ngx_times.c

1、(计算字符串的长度?)

static u_char cached_http_log_time[NGX_TIME_SLOTS]
[sizeof("28/Sep/1970:12:00:00 +0600")];

修改为

static u_char cached_http_log_time[NGX_TIME_SLOTS]
[sizeof("1970-09-28 12:00:00")];

 

2、(计算字符串的长度?)

ngx_cached_http_log_time.len = sizeof(“28/Sep/1970:12:00:00 +0600“) – 1;

修改为

ngx_cached_http_log_time.len = sizeof(“1970-09-28 12:00:00“) – 1;

 

3、(关键的地方,修改格式)

p2 = &cached_http_log_time[slot][0];

(void) ngx_sprintf(p2, “%02d/%s/%d:%02d:%02d:%02d %c%02d%02d”,
tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
tm.ngx_tm_year, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec,

修改为

p2 = &cached_http_log_time[slot][0];

(void) ngx_sprintf(p2, “%4d-%02d-%02d %02d:%02d:%02d”,
tm.ngx_tm_year, tm.ngx_tm_mon,
tm.ngx_tm_mday, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec,

 

第二个文件:/root/nginx-1.0.11/src/http/modules/ngx_http_log_module.c

{ ngx_string(“time_local”), sizeof(“28/Sep/1970:12:00:00 +0600“) – 1,
修改为
{ ngx_string(“time_local”), sizeof(“1970-09-28 12:00:00“) – 1,

Tags: , ,

作者:Jock

23

Windows 2000 以及更高版本都支持目录符号链接,其中目录作为到计算机上另一目录的符号链接。例如,如果目录 D:\SYMLINK 指定 C:\WINNT\SYSTEM32 作为其目标,那么访问 D:\SYMLINK\DRIVERS 的应用程序实际上访问的是 C:\WINNT\SYSTEM32\DRIVERS。目录符号链接在 Windows 中称为 NTFS 接合点。遗憾的是,Windows 并没有附带创建接合点的工具,这样您必须要购买 Win2K 资源工具包,其中附带了用于创建接合点的 linkd 程序。因此我决定编写我自己的接合点创建工具: JunctionJunction 不仅允许您创建 NTFS 接合点,还允许您查看文件或目录是否实际为重新分析点。重新分析点是作为 NTFS 接合点基础的机制,它们被 Windows 的远程存储服务 (RSS) 以及卷装入点所使用。

请阅读此 Microsoft KB 文章以获取有关使用接合点的提示。

请注意,Windows 不支持到远程共享上的目录的接合点。

如果您希望查看重新分析信息,Junction 的用法如下所示:

用法:junction [-s] <目录或文件名>

-s

对子目录执行递归操作。

如果您希望创建或删除一个接合点,请按如下方式使用 Junction

用法:junction [-d] <接合点目录> [<接合点目标>]

要删除接合点,请指定 -d 开关以及接合点名称。

http://technet.microsoft.com/zh-cn/sysinternals/bb896768.aspx

作者:Jock

28

假设有Service方法类似UserService

package com.hjide.aop;
 
public interface UserService {
	public User getUser(int id) throws Exception;
	public void save(User u) throws Exception;
	public int delete(User u) throws Exception;
}

实现类似如下

package com.hjide.aop;
 
public class UserServiceImpl implements UserService {
 
	public int delete(User u)  throws Exception{
		System.out.println("delete");
		return 0;
	}
 
	public User getUser(int id) throws Exception {
		User u = new User();
		u.setId(1);
		u.setName("new user");
		u.setType(2);
		System.out.println("getUser");
		return u;
	}
 
	public void save(User u) throws Exception {
		System.out.println("save");
	}
 
}

更多详细内容 »

Tags: ,

作者:Jock

22

1、下載kevinweil-hadoop-lzo
2、rpm -ivh liblzo2_2-2.03-6.el4.x86_64.rpm
3、rpm -ivh libminilzo2-2.03-6.el4.x86_64.rpm
4、rpm -ivh lzo-2.03-6.el4.x86_64.rpm
5、rpm -ivh lzo-devel-2.03-6.el4.i386.rpm
6、cd kevinweil-hadoop-lzo
     ant compile-native tar
7、進入build目錄下,把hadoop-lzo-0.4.0.jar拷貝到hadoop的lib目錄,native目錄也拷貝到hadoop的lib目錄下
編輯core-stie.xml文件,增加
        <property>
                <name>io.compression.codecs</name>
                <value>com.hadoop.compression.lzo.LzopCodec</value>
        </property>
        <property>
                <name>io.compression.codec.lzo.class</name>
                <value>com.hadoop.compression.lzo.LzoCodec</value>
        </property>
使map的中間結果也是用lzo壓縮,編輯mapred-site.xml文件,增加
        <property>
                <name>mapred.compress.map.output</name>
                <value>true</value>
        </property>
        <property>
                <name>mapred.map.output.compression.codec</name>
                <value>com.hadoop.compression.lzo.LzoCodec</value>
        </property>

7、安裝lzop
     rpm -ivh –force lzo-1.08-4.2.el4.rf.x86_64.rpm
     rpm -ivh lzop-1.01-2.el4.rf.x86_64.rpm
8、Indexing LZO Files
使用lzop壓縮日誌文件后傳到hdfs上
index it in-process via:
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.LzoIndexer big_file.lzo

index it in a map-reduce job via:
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo

將TextInputFormat 修改為 LzoTextInputFormat

Tags: ,

作者:Jock

Switch to our mobile site