Skip to content

Instantly share code, notes, and snippets.

@jpzhu
jpzhu / 文史01.md
Last active August 29, 2015 13:56
书单
  • 孟子他说 x2
  • 华丽血时代(赫连勃勃大王)
  • 楚留香传奇 x4
  • 战国策
  • 鲁迅文集
  • 巴金文集
  • 阅微草堂笔记
  • 射雕英雄传
  • 古汉语常用字字典
  • 论语选译
@jpzhu
jpzhu / dalvik.md
Last active August 29, 2015 13:57
Java Dalvik 编译,反编译。

编译Java文件

javac Hello.java # 或指定版本
javac -source 1.6 -target 1.6 Hello.java

将.class文件转换成.dex文件(source build/envsetup.sh,并lunch后能看到dx命令)

dx --dex --output=Hello.dex Hello.class

查看.class文件的字节码

javap -c -classpath . Hello

@jpzhu
jpzhu / git-am.md
Created May 7, 2014 02:30
git am window EOL

windows编辑的程序闹死人啊~

$ git format-patch HEAD^
$ git reset --hard HEAD^
$ git am 0001*patch
这样做出来的补丁居然,居然就打不上去了...... 因为原来的文件是windows格式,新文件是*nix格式。

还好,大杀器 git am --ignore-space-change 可以搞定。

@jpzhu
jpzhu / repotag.md
Last active August 29, 2015 14:01
repo tag

repo manifest -o before-porting.xml -r

如果希望保留当前编译状态的一个快照,repo 不推荐用tag。 而是选择一个manifest的快照。
使用以上命令可以保留当前所有项目的commit hash code。

当要使用该快照时。可以用此文件替换.repo/manifest.xml。
然后执行repo sync,即可恢复至此状态。

@jpzhu
jpzhu / isutf8.md
Last active August 29, 2015 14:01
utf8 code gbk

在代码编译时,会碰到源码里有gbk编码的中文的注释,能够正常编译,但是warning 很多。
烦人啊~

iconv工具可以进行转码,但是我们得先判断某文件是否为标准utf8编码。
isutf8 命令可以可以做这个判断。 该命令来自于moreutils软件包。

for file in $(find . -name "*.[ch]" -o -name "*.cpp"  -o -name "*.java")
do
    if isutf8 $file

then :

@jpzhu
jpzhu / detail.md
Last active August 29, 2015 14:02
git three tree

Git做为一个版本控制工具,它的版本管理是在提交 记录区 里,也就是commits。变量HEAD会指向最新的提交。
除了提交记录之外,还有 工作区(work directory)和 缓冲区。缓冲区有好几个名字,cache/stage/index 都是指,这个区。 本文就针对这个3个区会在日常工作中用到的命令进行简单的总结。

Git的3个存区

我们在开发调试代码的时候都是在工作区里,如果代码觉得改动到了一定阶段了,还不是太完美,那么你可以将其放入缓冲区,执行的命令是git add FILENAME。接着继续本地改动,然后提交进入缓冲区。 直到你觉得缓冲区内容已经满意了,这时你可以用git commit命令将代码提交进入版本。

w--o--r--k d--i--r--e--c--t--o--r--y   

|

@jpzhu
jpzhu / script.md
Created June 22, 2014 12:35
script running

如何判断脚本是以独立进程运行的,还是被source命令调用的?
方法1: 可以查看$0变量的值,如果是以source运行,$0应该为bash或sh.
方法2: 可以查看ps -o comm= -p $$的输出,也就是打印当前进程的命令,输出洁果和方法1是一样的。

@jpzhu
jpzhu / envsetup_sh.md
Last active August 29, 2015 14:02
android build envsetup

envsetup.sh 都做了些什么?

生成一些用bash脚本写的函数,方便开发

编译类:

m: 可以在子目录里执行m,相当于在顶级目录执行make
mm: 执行当前目录下的所有编译模块(module)
mmm: 执行指定目录下的所有编译模块(module)
mma: 执行当前目录下的所有编译模块(module)和它们的依赖
>mmma: 执行指定目录下的所有编译模块(module)和它们的依赖

@jpzhu
jpzhu / lunch.md
Last active August 29, 2015 14:02
build lunch

lunch脚本做了些什么

从LUNCH_MENU_CHOICES列表从选择一项产品作为编译目标

这个没有什么好介绍的,将选中的内容以“-”号部分作为分隔符,分别赋给两个变量.

前面部分叫product,也就是要编译什么

local product=$(echo -n $selection | sed -e "s/-.*$//")

后面部分叫variant,编一个什么版本 >local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")

@jpzhu
jpzhu / round.md
Last active August 29, 2015 14:04
multimedia

饱和算法

在视频解码算法里会经常出现需要做饱和处理的,也就说在dct变换后数据会出现大于255,或者小于0的数据。 此时需要将数据进行截断,小于0的让等于0,大于255的变回255。通常源码是这样的

if(ra>255) {
    ra = 255;
}
else if(ra<0) {

ra = 0;