Menu Home

Author Archives

lnmcc

mac os下编译android源代码

Mac OS: 10.7.5 在MacOS上编译android源码的前提是你所使用的文件系统必须是 大小写敏感 的。下面的内容旨在说明如何在不破坏原有文件系统的基础上建立一个供编译android使用的文件系统。 检查你现有的文件系统 依次打开 GO —-> Utilities —-> Disk Utility.app查看当前磁盘的格式,如下图: 在左侧栏中选中你希望在上面编译android的那块磁盘,查看右侧栏中的“Format”一项,如果format格式中带有“Case-sensitive”字样,那么恭喜你,你不需要再做任何操作即可开始编译android源码了,否则,继续往下操作。 确定磁盘空间 当然最方便的方法是把整个磁盘都重新格式成大小写敏感的文件系统,然后重新安装系统。但那样做的成本比较高并且很浪费时间。这里要谈的是不破坏原有系统的前提下,创建一块只供编译android的文件系统。首先需要确保你磁盘的剩余空间在30G以上,编译整个android大概会使用掉25G空间(Google官方显示至少25G)。 创建磁盘镜像 打开一个Terminal,输入如下命令: $ hdiutil create -type SPARSE -fs ‘Case-sensitive Journaled HFS+’ -size 60g YOU_FOLDER/android.dmg 这条命令在你所指定的文件夹中(YOU_FOLDER)创建了一个大小写敏感的可以自增长的最大为60GB的镜像。查看你的文件夹出现了新文件android.img.sparseimage。接下来把这个镜像挂载到系统: $ hdiutil attach ./android.dmg.sparseimage -mountpoint /Volumes/android 这条命令把上一步中创建的android.dmg挂载到了/Volumes/android下,以后这里就是我们编译android的地方。如果你希望每次开机的时候系统自动挂载这个镜像,你可以把下面的命令放到你的~/.profile中。 $ hdiutil attach YOU_FOLDER/android.dmg.sparseimage -mountpoint /Volumes/android 接下来就是把down下来的android源码拷贝到/Volumes/android目录下进行编译。

Android activity生命周期

Activity生命周期转换图 onCreate(Bundle): Activity生成时调用。如果存在使用OnSaveInstanceState方法保存的信息,将把保存的信息传递给OnCreate的Bundle参数。 onStart(): 在Activity即将显示的时候调用。 onResume(): 当Activity可以接受用户输入的时候调用。它是开始播放媒体文件的一个很好的时间点。 onPause(): Activity转入后台时调用。如果在调用这个方法之后,系统内存不足,这个Activity进程可能被终止掉。 onStop(): 暂时不使用Activity时调用这个方法(可能时因为其他Activity启动或者程序即将结束时)。如同onPause()一样:当内存不足时,系统可能会直接终止进出,而不调用这个方法。 onRestart(): 调用onStop后,再次显示这个Activity时调用。 onDestroy(): Activity即将终止时调用。如同onPause()一样:当内存不足时,系统可能会直接终止进出,而不调用这个方法。 onSaveInstanceState(Bundle): 保存实例的状态时调用。这里使用Bundle参数来保存值。当因为内存不足等原因而造成程序终止时,这个函数所保存的值能继续作为参数传递给onCreate()和onRestoreInstanceState(),因此,再次启动程序时就能利用这个传递给Bundle的值恢复之前的状态。 onRestoreInstanceState(Bundle): 在恢复实例的状态时调用。通过参数Bundle,可以获取通过onSaveInstanceState()保存的值,这个值与传递给onCreate()的内容相同。虽然采取任何一种方法进行恢复处理都没有问题,但是onRestoreInstanceState的处理方式跟自然。 Activity方法调用时序              ref: http://developer.android.com/guide/components/activities.html ref:《Android开发秘籍》 顺便推荐一款好用的在线UML工具: http://www.websequencediagrams.com/

Java语言中的异常处理

java异常分类 异常类层次 Throwable Java中所以的异常都是有Throwable继承而来。 Error Error类层次结构描述了JAVA运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的错误对象。如果程序出现了这样的内部错误,除了通告给用户,并尽力使程序安全终止之外,再无能为力。这种情况很少出现。 Exception 在设计JAVA程序时,需要关注Exception层次结构。这个层次结构又分为两个分支: Runtime Exception 由程序错误导致的异常属于Runtime Exception,相当于C++中的logic_error类。如果出现“Runtime Exception”异常,那么就一定是你的问题。应该通过检测数组下表是否越界来避免ArrayIndexOutOfBoundsException异常;应该通过在使用变量之前检测是否为空来杜绝NullPointerException异常的发生。派生于Runtime Exception的异常包含下面几种情况: 错误的类型转换 数组访问越界 访问空指针     IOException 派生于IOException的异常包含下面几种情况: 试图在文件尾部后面读取数据 试图打开一个错误格式的URL 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在 未检查异常和已检查异常     未检查异常 Java语言规范将派生于Error类或RuntimeException类的所以异常称为“未检查异常(unchecked exception)”。     已检查异常 除上面所述的未检查异常外的所以异常都称为“已检查异常(checked exception)”。编译器将核查是否为所有的已检查异常提供了异常处理器。 声明异常 方法应该在其首部使用throws关键字声明所有可能抛出的异常。例如: public FileInputStream(String name) throws FileNotFoundException 当一个方法有可能抛出多个已检查异常时,那么必须在方法的首部列出所有的异常类。例如: class MyClass { public void MyMethod(String s) throws EOFException, IOException { //… … […]

android程序调用JNI

OS: MAC OS 10.7.5 Android: 4.3 NDK: android-ndk-r7c java: 1.6.0_51 使用JNI 在Eclipse中新建一个Android工程,假设项目目录为project,修改activity_main.xml 如下: <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:paddingBottom=”@dimen/activity_vertical_margin” android:paddingLeft=”@dimen/activity_horizontal_margin” android:paddingRight=”@dimen/activity_horizontal_margin” android:paddingTop=”@dimen/activity_vertical_margin” tools:context=”.MainActivity” > <TextView android:id=”@+id/showText” android:layout_width=”wrap_content” android:layout_height=”wrap_content” /> </RelativeLayout> MainActivity.java: package net.lnmcc.usejni; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { // 加载JNI库 static […]

Nexus 7 Tablet 安装多系统

ref:http://www.linuxjournal.com/content/multi-booting-nexus-7-tablet Multi-Booting the Nexus 7 Tablet Jul 29, 2013  By Bill Childers Anyone who knows me well enough knows I love mobile devices. Phones, tablets and other shiny glowing gadgets are almost an addiction for me. I’ve talked about my addiction in other articles and columns, and Kyle Rankin even made […]

Using libavformat and libavcodec

ref : http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html Using libavformat and libavcodec Martin Böhme (boehme@inb.uni-luebeckREMOVETHIS.de) February 18, 2004 Update (January 23 2009): By now, these articles are quite out of date… unfortunately, I haven’t found the time to update them, but thankfully, others have jumped in. Stephen Dranger has a more recent tutorial, ryanfb of cryptosystem.org has an updated version of […]

这不是神经病,这是理想

ref: http://www.u148.net/article/44302.html 文:石头 紫霞说,这不是神经病,这是理想。 五百年又五百年的轮回,却再也等你不回。我猜中了开始,却猜不中结局。 紫霞看见至尊宝的时候说,我现在郑重宣布,这个山头所有的东西都是属于我的,包括你在内!结果她什么也没有,甚至失去了生命。她的爱情童话里,王子最后踩着七色云彩回来时,却已是不能再有情欲的神。所以,含着泪感叹,我猜中了开头,却猜不中结尾。其实没有人能猜到结尾,因为没有结尾。白晶晶本以为喉上的一剑就可以结束自己对这男人的痛苦,却开始了另一个女子的感情悲剧。 至尊宝用一种让二当家以为是上帝升天的方式一遍又一遍穿梭时空,为的是去找白晶晶,所以他推开了紫霞的亲吻。但是当他见到晶晶并将平静地结婚的时候,才知道自己做梦的时候叫了晶晶这个名字九十八次,叫紫霞的名字叫了七百八十四次——他喜欢的是紫霞。命运终于让撒谎如吃饭一样随便的他明白了,他永远骗不了自己。 晶晶看见了紫霞留在至尊宝像椰子一样的心里的一滴泪,知道他的心房所住另有伊人,匆匆离去。爱的确是不能马虎的糊涂事。就像当初至尊宝在山崖上冒着被晶晶一剑刺死的危险承认自己并不是孙悟空时候说的,怕,不过没办法,因为我不希望你看到我的时候,心里面却想着另外一个人。 爱一个人不需要理由。菩提老祖毕竟是老资格,委琐的外表下,是一颗睿智的心灵。至尊宝(后来是悟空)与他对爱情的一番探讨,高下立见。悟空总是在为做一件事找理由,他找不到自己屈服于尘世的理由,所以无法无天,所以他没有去疼爱过身边的女人。但问题是有许多事情是不需要理由的,爱一个人更是。悟空喜欢了白骨精,而八戒爱上了蜘蛛精春三十娘,牛魔王的妹妹香香更是喜欢了沙僧。尽管春三十娘曾哭着说,想我春三十娘貌美如花,却跟了这么丑的人……但是最后还是选择了为八戒放下断龙石自己与牛魔王同归于尽。 最悲哀的是紫青宝剑和至尊宝“爱你一万年”的千古谎言。他们都是别人生活中的借口。没有人知道能拔出紫青宝剑的人是不是真的就是紫霞的如意郎君。因为只有至尊宝一个人拔过。而至尊宝的千古谎言,在命运面前,是如此的渺小。它骗了一个女人的心,上天却瞒着所有人早早安排了从头到尾让人猜不透的故事。看似可以穿梭时空遨游三清的月光宝盒的作用也仅仅是让所有拿到它的人按照上天安排的轨迹运行一遍又一遍。 于是,五百年又五百年的轮回,却再也等你不回。有人侥幸猜中了开始,却再也没有人猜中结局。 但是,但爱情的意义不是猜测谁会许诺给谁一个永远。爱是白晶晶说的不开心长生不死也没用,开心就算只能活几天也足够了。爱是让你喜欢的人浅浅的生活中有满满的感动。爱是紫霞说的像飞蛾一样,明知道会受伤,还是会扑到火上的执着与冲动。而不是当桀骜的至尊宝变成了无情无欲的悟空后,面对着观音和金箍说,如果上天再给他一次机会…… 于是,紫霞说,这不是神经病,这是理想……

使用QGraphicsProxyWidget实现字幕滚动和翻转动画

OS : ubuntu 12.04 QT : 4.8 multiTxtWidget.h #ifndef MULTITEX_WIDGET_H #define MULTITEX_WIDGET_H #include <QGraphicsItem> #include <QPainter> #include <QPropertyAnimation> #include <QGraphicsWidget> #include <QGraphicsProxyWidget> #include <QWidget> #include <qcoreevent.h> class MulitTexWidget : public QWidget { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText) public: explicit MulitTexWidget(QWidget *parent = 0); virtual ~MulitTexWidget(); void setText(const QString […]

基于QGraphicsItem的字幕翻转动画效果

OS: mac os x 10.7.5 QT: 5.0.1 main.cpp #include “mainwindow.h” #include <QApplication> #include <QGraphicsScene> int main(int argc, char *argv[]) { QApplication a(argc, argv); TxtItem txtItem; txtItem.setText(“How are you, my friend!!”); QGraphicsScene scene; MyQView mqv(&scene); scene.addItem(&txtItem); mqv.show(); return a.exec(); }

linux + ffmpeg + eclipse 调试

使用linux + ffmpeg + eclipse调试步骤 OS : ubuntu 12.04 Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项目 File —-> Import —-> c / c++ —-> Existing Code as Makefile Project 输入 Project Name, 选择ffmpeg所在目录, Toolchain选择Linux GCC  项目右键 —-> Debug As —-> Local C/C++ Application —->  选择需要调试的项目        你需要选择带_g的程序才能做调试(如ffplay_g) ffmpeg库调试 如果使用make install安装ffmpeg的动态链接库是不带调试信息的。所以需要手工拷贝。 删除/usr/lib或者/usr/local/lib中的所有ffmpeg库文件 […]

mac os terminal 快捷键

mac terminal 快捷键: 清屏:Command + K 新建标签: Command + T 关闭当前标签页: Command +W 保存终端输出:Command + S 水平分隔当前标签页: Command + D 取消水平分隔: Command + Shift + D 向左/向右切换标签: Command + shift + { 或 }

LISP的本质(THE NATURE OF LISP)

Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet 译者 Alec Jang 原文: http://www.defmacro.org/ramblings/lisp.html 简介 最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员。 在我的履历上, 掌握的语言范围相当广泛, 象C++, Java, C#主流语言等等都不在话下, 我觉得我差不多知道所有的有关编程语言的事情。对待编程语言的问题上, 我觉得自己不 太会遇到什么大问题。其实我大错特错了。 我试着学了一下Lisp, 结果马上就撞了墙。我被那些范例代码吓坏了。我想很多初次接触 Lisp语言的人, 一定也有过类似的感受。Lisp的语法太次了。一个语言的发明人, 居然不 肯用心弄出一套漂亮的语法, 那谁还会愿意学它。反正, 我是确确实实被那些难看的无数 的括号搞蒙了。 回过神来之后, 我和Lisp社区的那伙人交谈, 诉说我的沮丧心情。结果, 立马就有一大套 理论砸过来, 这套理论在Lisp社区处处可见, 几成惯例。比如说: Lisp的括号只是表面现 象; Lisp的代码和数据的表达方式没有差别, 而且比XML语法高明许多, 所以有无穷的好 处; Lisp有强大无比的元语言能力, 程序员可以写出自我维护的代码; Lisp可以创造出针 对特定应用的语言子集; Lisp的运行时和编译时没有明确的分界; […]

qt快速编译选项

qt快速编译选项 OS : ubuntu 12.10 QT: 4.8.4 gmake confclean ./configure -qt-sql-sqlite -opensource -fast -no-qt3support -nomake demos -nomake docs -nomake examples -optimized-qmake -nomake tools -no-webkit gmake -j4 gmake install

emacs快捷键

================== 复制:Alt + w 剪切:Ctrl + w 粘贴: Ctrl + y 查找: Ctrl + s 撤销:Ctrl + x  u ==================

QGraphicsScene QGraphicsView QGraphicsItem

Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。Items能处理键盘事件,鼠标的按,移动、释放、双击事件,也可以跟踪鼠标移动。Graphics View使用BSP树来提供对item的快速查找,使用这种技术,它可以实时地绘制大规模场景,甚至以百万items计。Graphics View在Qt 4.2中被引用,它替代了它的前辈QCanvas。 Graphics View的体系结构 Graphics View提供的是一种类似于Qt model-view的编程。多个views可以监视同一个场景,而场景包含多个具有多种几何外形的items。

kindle paperwhite 微评

kindle paperwhite 微评 质感很好,手感不错,要比 kindle5大一点沉一点, 原始系统没有自动pdf切边、重排, 所以基本上没法看pdf,所幸有多看系统,安装极其简单,有自动pdf切边、重排,加黑,字体大小等功能,其中的小缺陷是自动重排功能对看代码很不利,被打乱的七七八八的。本来也是觉得背景灯是个摆设的,现在我只能说谁用谁知道~~