当前位置:  编程技术>移动开发
本页文章导读:
    ▪Git小结        Git总结Git命令: 1、 * 精简输出:git status -s * 精简输出提交ID: git log --oneline * 带说明的提交: git commit -m "" * 撤销工作区尚未提交的更改:git checkout * git diff 工作区与暂存区之间的改动, git dif.........
    ▪ 小弟我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码        我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码最近成功申请了公司型IDP,过程中很意外居然没有传真营业执照,也没有给华厦邓白氏交800RMB,只传真了.........
    ▪ UI 成效(9):merge 的点点滴滴       UI 效果(9):merge 的点点滴滴android 布局中经常会用到 <merge></merge> 标签,来优化 ui 布局。 具体如何优化,可以借助 android sdk 提供的 tools/hierarchyviewer 工具。 这个工具,并不是万能.........

[1]Git小结
    来源: 互联网  发布时间: 2014-02-18
Git总结
Git命令:
1、
* 精简输出:git status -s
* 精简输出提交ID: git log --oneline
* 带说明的提交: git commit -m ""
* 撤销工作区尚未提交的更改:git checkout
* git diff 工作区与暂存区之间的改动, git diff --cached 暂存区和当前工作分支的比较, git diff head 工作区和当前工作分支 git 
* 清除当前工作区中没有加入版本库的文件和目录(非跟踪文件和目录) git clean -fd
* 显示暂存区的目录树:git ls-files -s
* 使用git ls-tree -l HEAD命令查看HEAD中的目录树:返回结果如下:100644 blob 17367963649d34750ef1944f1bf3716ccdef01b5 10newTestFile.txt ; 五列分别表示文件属性,文件类型(blob对象),文件ID,文件大小,文件名。
* 使用git cat-file -t id查看指定ID的对象类型,使用git cat-file -p id查看指定ID的对象内容。
* 使用git stash命令来讲工作区和暂存区的改动全部封存起来,使用git stash list来恢复已经暂存的进度.
* 重置到上一次提交:git reset head^; 重置到指定提交:git reset commitID;
* 列出master提交的历史记录:git reflog master,根据记录值来重置到指定提交。

——————————————————————————————————————————————————

Git知识点:
1、
* HEAD(当前版本库的头指针),master(当前工作分支),文件.git/index实际上就是一个包含文件索引的目录树,记录了文件名和文件的状态信息(如:时间戳和文件长度等),文件的内容并没有存储在其中,而是存储在Git对象库.git/objects目录中,文件索引建立了文件核对系那个苦中对象是实体间的对应。
* 当对工作区修改的文件执行 git add 命令时,暂存区的目录树将被更新,同时工作区的修改的文件内容会被写入到对象库的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
* 当执行提交操作git commit是,暂存区的目录树会写到对象库中,并且master分支会做出相应的更新,即master最新指向的目录是就是提交奥是原暂存区的目录树。
* 当执行git reset HEAD命令时,暂存区的目录树会被重写,会被master分支指向的目录树所替换,但是工作区不受影响。
* 当执行git rm --cached命令时,会直接从暂存区删除文件,工作区则不回做出改变
* 当执行git checkout命令时,会用暂存区的文件来替换工作区的文件,即这个操作会清除工作区仲未添加到暂存区的改动。
* 当执行git checkout HEAD命令时,会用HEAD指向的master分支中的文件替换暂存区和工作区的文件,即清除所有未提交的改动。
2、
master作为分支名称,指向一个最新提交的ID,通过这个ID就可以将对象库和目录树联系起来,这样就可以查到该分支上每一次的提交历史记录。通过cat .git/HEAD命令可以发现HEAD其实就是对master文件的引用,而master文件指的正是当前分支的最新提交的ID.

    
[2] 小弟我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码
    来源: 互联网  发布时间: 2014-02-18
我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码

最近成功申请了公司型IDP,过程中很意外居然没有传真营业执照,也没有给华厦邓白氏交800RMB,只传真了Purchase Form就搞掂了,在此分享一下。

首先说说我理解的公司型与个人IDP的区别:

  • 公司IDP可以有多个开发人员,个人IDP只有一个;
  • 公司IDP的产品在APPSTORE页面上会显示公司名称,个人的则会显示个人的名字。
  • 其实第一点不重要,但第二点则很重要,产品发布者显示是一个人而不是一个公司,显得相当不专业。其实这个名字会显示在较不显眼的地方,一般人不会太注意,但对一个公司产品来说,这仍然是不太能接受的,因此还是要申请一个公司IDP。

    基本的公司IDP申请流程网上都已经有很多,比如我参考的这个:

    http://www.cnblogs.com/scottwong/archive/2010/12/05/1896770.html

    因此细节就不说了。这里只说关键步骤。

    第一个关键是申请邓白氏编码。不知从何时起,苹果公司IDP申请需要邓白氏编码了。网上有人说要给中国的华厦邓白氏交800RMB才能获取,其实现在是可以不需要了。参考这个帖子可以免费获取:http://www.cocoachina.com/bbs/read.php?tid=113741

    申请邓白氏编码需要注意几点:

  • 此方法等于是让苹果帮我们申请邓白氏编码,所以是免费的
  • 在打开https://developer.apple.com/ios/enroll/dunsLookupForm.action查询邓白氏编码时,可能要使用美国的VPN代理网络,这样系统会认为你是在美国
  • 所有内容要与你的苹果帐号信息完全一致,一个标点空格都不差
  • 我的电话号码留的是公司的座机,邮箱也是公司邮箱,职务写的是CTO,看上去就很正规,我想这可能也有助于对方校验身份吧
  • 公司名起头最好不能有城市名,我们就是一开始总出来几个广州公司的选项让我选(我们公司在广州),后来把公司名的起头Guangzhou去掉,就直接提示未找到,要申请新编码(如下图),勾选同意苹果帮我申请,就提交成功了
  • 过两天中国的邓白氏人员会打电话过来询问公司的中文名地址等信息(可能是因为申请时填的全是英文),确认后一两天内就会收到邓白氏编码

  • 收到邓白氏编码后据说要过两星期才能同步到苹果服务器生效,但我只过了四天就去试着申请(反正说每周可以试3次),并且成功提交了。也许是运气好刚好这几天他们同步了DUNS编码吧。

    提交IDP申请后等待苹果的身份校验。第二天中国苹果的客服打电话给我,应该就是确认了一下我的存在,然后告诉我申请已经通过,可以支付了。

    支付要注意的:

  • 可以用免费的网络传真,如http://www.myfax.com/free,但要注意这样有可能泄露你的信用卡信息,要找正规的网站
  • Purchase form除了签名用手写中文,其它地方全用英文
  • 如果觉得自己的手写英文太难看,不好意思手写,可以用WORD编辑打印。我是这样干的:
    • 把Puchase form的PDF文件打开,放大到250%(100%的话分辨率太低,打印出来会有锯齿)
    • 屏幕截图,把Purchase form的内容全截到画笔里保存为一张图片(屏幕不够大怎么办?分块截,多截几次,拼在一起)
    • 打开WORD,插入这张图片,调整大小到适合一页纸
    • 在需要填写内容的地方,插入文本框,设置文本框为透明、无边框(搞一个然后拷贝多份),然后填写你的信息
    • 再找个小勾的图片,插入到要勾选的地方(就是$99和VISA那里)
    • 打印,签名,扫描,传之
  • 传真后不能干等,一定要再把Purchase form扫描发给chinadev@asia.apple.com,让中国苹果协助处理,直接写中文就可以了。支付这里我卡了几天,就是因为干等美国苹果扣款,结果过了四五天还没动静。具体原因也不清楚,有人说是美国人总搞不懂为何信用卡上的姓和名跟申请单上写的姓名是反过来的,所以容易付款失败。
  • 邮件内容大概就是你好我什么时候已经传真购买单给美国了麻烦协助处理,我的iDP申请信息如下(Enrollment ID之类的),附件为传真扫描件,谢谢之类的。
  • 我是发邮件给chinadev@asia.apple.com后,第二天就回复已经转给财务处理,第三天扣款成功,帐号自动激活。

  • 在这过程中,我没有主动联系苹果,也没有主动联系邓白氏,没有给邓白氏付钱,苹果也没有要求我提供公司营业执照(本来都已经准备好了),前后总共用了15天,中间还干等了5天,应该说还是比较快的。

     


        
    [3] UI 成效(9):merge 的点点滴滴
        来源: 互联网  发布时间: 2014-02-18
    UI 效果(9):merge 的点点滴滴

    android 布局中经常会用到 <merge></merge> 标签,来优化 ui 布局。

    具体如何优化,可以借助 android sdk 提供的 tools/hierarchyviewer 工具。


    这个工具,并不是万能的,你需要自己去根据实际情况分析和优化自己的布局。

    该工具的使用可以查阅资料,这里不赘述。


    关于  <merge></merge> 使用,推荐一篇文章,简单明了

    http://www.bangchui.org/simple/?t17479.html


    其实这里面还有其他标签的介绍如 include、viewstub 等。


    另外,http://developer.android.com/training/improving-layouts/reusing-layouts.html

    也介绍了 merge 以及merge 的好处(可以用来优化布局)。



    这里总结一下 merge 注意事项


    1. merge 只可以是一个布局文件中的根节点,不可以有父节点。


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ssb"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="vertical">
    
        <merge>
            <!-- 省略 -->
        </merge>
    
    </LinearLayout>

    这个就是错误的,错误报告内容如下:



    2.  merge 可以包含 include 标签,反之不行


    <?xml version="1.0" encoding="utf-8"?> 
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
    
        <include 
    		android:id="@+id/newone"layout="@layout/share">
        </include> 
       
    	<include 
    		android:id="@+id/newtwo"layout="@layout/share">
    	</include>
    	
    </merge>

    上面的用法是正确的。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ssb"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="vertical">
    
        <include>
            
            <merge>
                <!-- 省略 -->
            </merge>
            
        </include>
        
    </LinearLayout>

    这种用法是错误的(也是类似 1 的错误)。


    3. include 可以间接包含 merge


    mergedemo.xml 文件

    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:contentDescription="@null"
            android:scaleType="centerInside" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center"
            android:background="@drawable/sb_msg_count"
            android:gravity="center"
            android:textColor="@android:color/white" />
    
    
    </merge>

    main.xml 文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="vertical">
    
        <include layout="@layout/mergedemo" />
    
    </LinearLayout>

    注意这种情况下,include 进来的 xml 文件,merge 就会被忽略,没有任何作用。

    也就是说,main.xml 相当于

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:contentDescription="@null"
            android:scaleType="centerInside" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center"
            android:gravity="center"
            android:textColor="@android:color/white" />
    
    </LinearLayout>

    这一点要注意!


    4. 使用 inflate 加载 merge 布局文件


    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ssb"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
    </LinearLayout>

    mergedemo.xml

    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:contentDescription="@null"
            android:scaleType="centerInside" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center"
            android:gravity="center"
            android:textColor="@android:color/white" />
    
    </merge>

    activity.java

    public class MainActivity extends Activity {
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		setContentView(R.layout.main);
    
    		// 找到父节点
    		LinearLayout superlayout = (LinearLayout) findViewById(R.id.ssb);
    		// 实例化 LayoutInflater
    		LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
    		// inflate
    		View view = inflater.inflate(R.layout.mergedemo, superlayout, true);
    		// 显示
    		setContentView(superlayout);
    	}

    这里需要注意几个问题


    (a). inflater.inflate(R.layout.mergedemo, superlayout, true);

    必须指定 superlayout 和 true,否则报错。


    (b). 不需要再次 addview

    // 找到父节点
    		LinearLayout superlayout = (LinearLayout) findViewById(R.id.ssb);
    		// 实例化 LayoutInflater
    		LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
    		// inflate
    		View view = inflater.inflate(R.layout.mergedemo, superlayout, true);
    		superlayout.addView(view);
    		// 显示
    		setContentView(superlayout);

    代码 superlayout.addView(view); 是多余的。

    具体可以查看 LayoutInflater.java 源码





    5. merge 并不是一定可以取代 FrameLayout 标签。


    这个需要视具体情况而定,merge 被 include 之后,是被忽略的。









        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3