2013.10.30(2)——— git学习之取得仓库
获取git仓库的方法有两个:
1、自己创建
比如说我有一个文件夹 git_workspace,里面有几个文件
1.cpp 2.cpp 3.cpp reame
文件内容先随便写
cd git_workspace git init
在当前目录下创建了一个仓库,在当前目录下有一个.git的文件
git add *.cpp git add readme git commit -m "init"
这样 我们就得到了 有如干文件的git仓库
2、克隆已存在的仓库
$ git clone git://github.com/schacon/grit.git
这会在当前目录下创建一个名为“grit” 的目录,其中内含一个.git 的目录,并从同步后的仓库中拉出所有的数据,取出最新版本的文件拷贝
$ git clone git://github.com/schacon/grit.git mygrit
唯一的差别就是,现在新建的目录成了mygrit,其他的都和上边的一样
git clone 和svn里面的checkout的区别是:
Git 收取的是项目历史的所有数据,每一个文件的每一个版本
svn是服务器上最新的数据
holydancer原创,如需转载,请在显要位置注明:
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7371643
先介绍一个自定义类描述的方法description,一般情况下,一个自定义类我们在用%@输出的时候,给出的是一个内存地址,我们在该类的.m文件里重写description方法,来修改输出内容,呆会儿我们要用到这个方法来验证今天学习内容,所以先看一段代码熟悉一下:
Human.h:
Human.m:
上面的重写描述被注释掉了,我们先看未修改前的输出:
main.m:
2012-03-20 08:47:32.980 category[304:403] <Human: 0x7ff2cb414380>
如果把human.m中的注释去掉的话输出结果如下:
2012-03-20 08:48:09.869 category[315:403] 22,holydancer,0,(null),(null)
很简单吧,这样就可以查看自己定义类的内容了,好了,下面就让我们来研究一下在objective-c中如何实现序列化。
在OC中,有四类对象是可以直接使用writeToFile方法将内容写入磁盘的,分别是NSString,NSArray,NSDictionary,NSData.看代码:
以上四种是COCOA自带可以写入磁盘文件的类型,但是我们常常用到自定义类,可是里面并没有writeToFile方法,怎么办呢?这时NSData的作用就体现出来了,我们可以把任意自定义类转化成NSData格式即可,这个过程我们称之为编码,或者archive归档,需要将自定义类实现NSCoding协议并重写encodeWithCoder和initWithCoder两个方法,分别用以编码和反编码。然后在编码时会用NSCoder的子类NSKeyedArchiver和NSKeyedUnarchiver分别调用archivedDataWithRootObject和unarchiveObjectWithData来启动自定义类中重写的那两个方法,类似于回调。看代码:
Human.h:
Human.m:
main.m:
2012-03-20 10:10:29.871 category[458:403]
20,holydancer,0,(null),(null)
20,holydancer,0,(null),(null)
有的同学一直不太清楚NSKeyedArchiver和NSKeyedUnarchiver是什么,调用的又是什么方法,大家可以在头文件里找到这样的信息:
可以发现,NSKeyedArchiver是NSCoder的子类,而archivedDataWithRootObject是里面的一个类方法,这时我们看到archivedDataWithRootObject方法下在还有一个方法,不错,这个方法可以直接将自定义类写入本地磁盘,所以上在的代码我们还可以这样写:
2012-03-20 10:16:43.561 category[475:403]
20,holydancer,0,(null),(null)
20,holydancer,0,(null),(null)
最后,不得不说说cocoa中的方法命名,一个一个方法长得,虽然很人性化很好记,不过敲起来真是麻烦啊。
关键字:objective-c ,objective c , oc ,本地化,序列化,归档,archive ,NSCoder ,NSCoding , NSKeyedArchiver ,NSKeyedUnarchiver
一.Peer Droid是JXME协议到android平台的移植,开发者可以利用它来实现android设备以及传统PC机通讯的应用程序,peerDroid的官方demo主要是实现PC端peer和android端peer聊天的功能,那么如何配置服务器等使peerDroid的官方demo运行起来,进行通信?(官网网址:http://code.google.com/p/peerdroid/)
硬件环境:PC和Android设备
软件环境:服务器(这里用的tomcat),eclipse
运行环境:能访问到rdvlist.txt的服务器(tomcat上布置可以访问到rdvlist.txt文件),pc端收集相应peer消息或者传递消息的RDV节点程序(PeerDroidRDV.zip),一个或者两个android端peer程序(PeerDroidSample_09_12_2009.tar.gz),pc端peer程序(JXTA-PeerDroidSample_09_12_2009.tar.gz),一共要运行四个程序。
材料下载:http://code.google.com/p/peerdroid/downloads/list
相应的配置(我这里将服务器和rdv配置在了一台电脑上):
1. 首先配置服务器,想要进入P2P网络中的peers需要知道RDV的ip,因此必须有一个简单的txt文件记录下一个或者更多的rdv的信息,在官网程序中,这个文件叫做rdvlist.txt文件,rdvlist.txt里面的主要内容是:
tcp://160.78.28.131:9701
http://160.78.28.131:9700
其中160.78.28.131是rdv的ip地址,如果这个网络是在局域网内peer之间通信,则rdv的ip可以是私有的,静态的,如果是在广域网内通信,则需要一个公网ip,其中9700和9701是peerDroid中默认的端口,记住端口不要修改,这里只需要修改ip即可,比如如果你的rdv的ip地址是10.50.147.10,则rdvlist.txt里的内容应该是
tcp://10.50.147.10:9701
http://10.50.147.10:9700
这里开始配置服务器,使得浏览器中可以访问到这个文件,如果开发者知道如何配置,可以跳过此处。比如,开发者将rdvlist.txt存在F盘的根目录下,在tomcat的conf目录下找到server.xml文件
(比如:D:\ProgramFiles\apache-tomcat-6.0.35\conf),在<Host></Host>里面加上<Context path=""
docBase="F:\"
reloadable="true"
cookies="false">
</Context>
其中docBase="F:\"是rdvlist.txt的存放路径,可参考下图修改:
配置好了后,保存server.xml文件,启动服务器,在浏览器中输入网址:http://localhost:8080/rdvlist.txt或者http://10.50.147.10:8080/rdvlist.txt,如果可以看到这个文件的内容,则服务器配置成功
2.RDV配置,RDV是一个java的程序,官网上对应的下载代码是PeerDroidRDV.zip,这个可以直接导入到eclipse中运行,不需要任何修改,运行RDV的ip地址即是rdvlist中的ip地址
3. android端的peer和PC端的peer,需要分别将(PeerDroidSample_09_12_2009.tar.gz)和(JXTA-PeerDroidSample_09_12_2009.tar.gz)程序中类JXTAService的变量rdvlist修改为可以访问到rdvlist.txt的地址:
private staticString rdvlist = "http://10.50.147.10:8080/rdvlist.txt";
到这里,配置基本结束了,如果没有公网ip,则要保证所有的设备都连接的是同一个局域网,可先启动服务器,运行rdv程序,pc端peer程序,android端peer程序,保证都连接上了,即可进行群组聊天了