Archive for 八月, 2009

假期总结

一个假期的实习算是告一段落了。服务器终于赶在开学之前恢复,感谢高聪大哥的努力。
假期主要是做Android平台软件开发,从七月六号开始到八月十四号,整整一个多月,从开始的紧张到后来的习以为常,从一开始的激动,再到后来的冷静。感触不少。

朝九晚六的日子结束,确实突然不习惯突然来的轻松。冷静地想想这一个月,收获颇多。对技术而言,我觉得很不划算,Java弄成了半调子,浪费巩固原有基础的时间,新知识也很浅薄。对眼界和经历来说,确实增添了好多经验,拓宽了眼界,学会用其他方式来看问题。

其实我对Java不是很感冒,以后虽然是一直做兼职,但是会调整较多时间到Linux,C,C++和驱动程序。而且目前看来,公司虽然是在做手机软件开发,但是依旧是处于“后J2ME”时代,头子还没有理解到Android的特性。公司面试时候说希望我们能带去新的想法,因为工作太多的人已经没有想象了。事实却是头子对传感器,WIFI和GPS还不够了解,把Android当作S40来开发。

在公司做了两个东西,一个IM,一个硬件管理模块。前者我负责一部分登录注册模块,以及整个Client的网络连接。后者则是负责管理手机硬件,头子说很简单,只要调用系统API读取信息然后显示出来就可以了。既然只是做这样的开发,那就太容易了。或许是我想得太复杂,如果是我负责这个项目,我会做得更深入一些,例如根据电池信息来自动调节屏幕背光亮度,调节WIFI频率,调节GPS的通信速率,利用传感器来自动控制声音大小,对加速度感应计的利用来实现一些常用操作。我觉得这样才是对Android平台进行学习和开发,遗憾的是,事实不是这样的。

做UI,一些简单的Android平台调用,Java Socket,只是这些而已。

当然,我很开心的就是长了不少见识,认识到自己需要朝什么方向去努力。也了解到好多以前不明白的东西,在工作环境中的学习和学校的学习是完全不一样的,前者的质量和强度都要高很多。感觉到累了,但却会因为有收获,有感想而感到特别开心。看问题有时候换一种角度来看,就可以得到很多有意思的结果。实习对我最大的收获就在这里,思维略有提升吧。

接下来就开学上课,已经看到了不久之后为了工作奔波的日子,so, work hard.

Bash快捷键汇总

以前会用的只有几个:Ctrl + a, Ctrl + e, Ctrl + l, Ctrl + r,  Ctrl + c, Ctrl + d

现在看到一份比较完整的,备忘一下:
1.和Ctrl相关的:

Ctrl + a - Jump to the start of the line

Ctrl + b - Move back a char

Ctrl + c - Terminate the command  //用的最多了吧?

Ctrl + d - Delete from under the cursor

Ctrl + e - Jump to the end of the line

Ctrl + f - Move forward a char

Ctrl + k - Delete to EOL

Ctrl + l - Clear the screen  //清屏,类似 clear 命令

Ctrl + r - Search the history backwards  //查找历史命令

Ctrl + R - Search the history backwards with multi occurrence

Ctrl + u - Delete backward from cursor // 密码输入错误的时候比较有用

Ctrl + xx - Move between EOL and current cursor position

Ctrl + x @ - Show possible hostname completions

Ctrl + z - Suspend/ Stop the command补充:

Ctrl + h - 删除当前字符

Ctrl + w - 删除最后输入的单词

2.和Alt相关的:

Alt + < - Move to the first line in the history

Alt + > - Move to the last line in the history

Alt + ? - Show current completion listAlt + * - Insert all possible completions

Alt + / - Attempt to complete filenameAlt + . - Yank last argument to previous command

Alt + b - Move backward

Alt + c - Capitalize the word

Alt + d - Delete word

Alt + f - Move forward

Alt + l - Make word lowercase

Alt + n - Search the history forwards non-incremental

Alt + p - Search the history backwards non-incremental

Alt + r - Recall command

Alt + t - Move words around

Alt + u - Make word uppercaseAlt + back-space - Delete backward from cursor

我的周末

周末拿上G10又跑到南门去了。

我已经记不清这是我第几次在周末跑去书院门逛了,今天看到一副茶具,青花瓷,胎薄如纸。当时抢劫的心都有了,考虑到地形不熟,不利于撤退工作的展开,只好作罢。手里握着的G10镜头开着,看了好久,直到离开都没有拍下那副茶具。也不遗憾了,最美好的留在心里就已足够。下次去看的时候不知道是不是还在那里。

以前卖埙给我的老婆婆和她的摊子都不在了。只有更多的现代工艺品摆在更多的崭新的摊位上骗骗外国人。在书院门的出口和碑林博物馆之间,走进一条以前没去过的小巷。深入其中,才发现还有这么宁静的地方,巷子的路上都是落叶,两旁都是古树,没有一个游客。走到尽头,一个老人安详地坐在屋檐底下的竹椅上看着我这个陌生的闯入者。抬头看去,屋顶的瓦片上已经长了好绿的青苔。虽然那里稍显破旧,但却让我感觉到少有的安静。

顺着城墙一直走。走走拍拍。

P1 南门外,桥上的石狮

IMG_2946

P2 可爱的八戒

摄于书院门

IMG_2951

P3 历史的称托,平凡的生命显得更加鲜活

我突然有很强烈的时空感

IMG_2963

P4 让我想起那个战争的年代

IMG_2952

P5 当年的城楼上是哪位挥斥方遒的少年?

IMG_2955

P6见证者

IMG_2961

P7 护城河、沿岸绿荫以及隐约可见的城楼

我真想生活在那个盛世

IMG_2967

P8  一个意外发现的角度,我很喜欢

IMG_2972

放下负担

晚上回来,看了今天的天涯头条。一个关于事业,环境,人生,前途的帖子。有人回帖说,要怪就怪gov,现在的社会压力gov有很大的责任。我同意,但是我觉得你怪谁都没有用,还是积极的改变自己现在的生存状态最有意义。

楼主思想有些消极。我感觉太多外在的东西给他造成了过重的压力,换作是我,我不会死要面子活受罪,对自己好才是最重要的。人活着第一是要为自己,第二才是为别人眼中的自己。很多的时候,我听到的更多是放弃稳定生活决定去闯荡一下的人生,而不是刚刚起跑就已经在考虑自己跑不到终点的比赛。

压力太大没有必要硬撑。我也思考过楼主的问题,还想过很久。现在的我越发的感觉生命很短,青春宝贵。说到我打算在外面了,压根没有想回去的打算,妈妈说我现在有狂妄的资本:年轻。

其实年轻很短,没几年就要面临楼主的那些问题,但是我现在可以积极努力的尝试改变一下,改变自己的生存状态,还要改变自己的心态。积极点,车到山前必有路。

我会漂着。不管是在哪里。

将来也许会选择一个生活压力小的地方定居。我不会在乎别人的看法。放下自己的负担,轻松了,才能前进。

那个帖子的地址:http://www.tianya.cn/techforum/content/395/22531.shtml

二十二周岁了

又老一岁。

以前那么渴望长大,现在我却永远希望停留在1打头的年纪。

时间真残忍。

1.什么是库
在windows平台和linux平台下都大量存在着库。
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
由于windows和linux的本质不同,因此二者库的二进制是不兼容的。
本文仅限于介绍linux下的库。

2.库的种类
linux下的库有两种:静态库和共享库(动态库)。
二者的不同点在于代码被载入的时刻不同。
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。

3.库存在的意义
库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。
现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。
共享库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。

4.库文件是如何产生的在linux下
静态库的后缀是.a,它的产生分两步
Step 1.由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表
Step 2.ar命令将很多.o转换成.a,成文静态库
动态库的后缀是.so,它由gcc加特定参数编译产生。
例如:
$ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname, libfoo.so.1 -o libfoo.so.1.0 *.

5.库文件是如何命名的,有没有什么规范
在linux下,库文件一般放在/usr/lib /lib下,
静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称
动态库的名字一般为libxxxx.so.major.minor,xxxx是该lib的名称,major是主版本号, minor是副版本号

6.如何知道一个可执行程序依赖哪些库
ldd命令可以查看一个可执行程序依赖的共享库,
例如# ldd /bin/lnlibc.so.6
=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2
=> /lib/ld- linux.so.2 (0×40000000)
可以看到ln命令依赖于libc库和ld-linux库

7.可执行程序在执行的时候如何定位共享库文件
当系统加载可执行代码时候,能够知道其所依赖的库的名字,但是还需要知道绝对路径
此时就需要系统动态载入器(dynamic linker/loader)
对于elf格式的可执行程序,是由ld-linux.so*来完成的,它先后搜索elf文件的 DT_RPATH段—环境变量LD_LIBRARY_PATH—/etc/ld.so.cache文件列表—/lib/,/usr/lib目录找到库文件后将其载入内存

8.在新安装一个库之后如何让系统能够找到他
如果安装在/lib或者/usr/lib下,那么ld默认能够找到,无需其他操作。
如果安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下
1.编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
2.运行ldconfig,该命令会重建/etc/ld.so.cache文件

大雨

西安今天下了一天的雨,第一次遇到在西安遇到这样的天气。早上很大,傍晚了都还没停。

晚上回到宿舍一直在敲java。好恶心啊。

Chrome-linux刚才更新到22262了,变得更加好用。用这个软件,每次更新都能感受到易用性的提高,对这个软件非常有信心。

后面开始进军Android系统API方面的开发。主要是身边的资料太少了。看了好几个PDF,都是关于介绍入门的。。。。

时间太快,又是一天。

给chrome-linux 添加flash支持

chrome-linux是目前linux平台最快的浏览器,虽然还有很多问题,但是现在已经基本可用。不过使用到flash功能目前还需要动手hack一下。

ganquan@debian:~$ cd /usr/lib/chromium-browser/plugins

1.ganquan@debian:~$ cd /usr/lib/chromium-browser/plugins

如果哪个目录你没有,就自己mkdir

2.进去之后把其他浏览器的播放器插件链接过来

ganquan@debian:/usr/lib/chromium-browser/plugins$ ln -s  /home/ganquan/.mozilla/plugins/libflashplayer.so flashplugin.so

3.最后需要在启动chrome的时候需要加上参数:–enable-plugins

这样就可以用chrome-linux看youku之类的网站啦。为了保持我的chrome-linux一直是最新版本,写了一个脚本来更新:

ganquan@debian:~/BashScript$ cat chromiumupdate
 
#!/bin/bash
 
cd /home/ganquan/Software/chrome-linux/
 
rm LATEST
 
rm chrome-linux.zip
 
wget http://build.chromium.org/buildbot/snapshots/chromium-rel-linux/LATEST -O LATEST
 
latest=`cat LATEST`
 
url="http://build.chromium.org/buildbot/snapshots/chromium-rel-linux/${latest}/chrome-linux.zip"
 
axel -n 5 "${url}"
 
unzip chrome-linux.zip

把脚本加入到crontab就更加方便了。最后说明一下,使用dev channel是有风险的,自己看着办吧。