running 09-12-08 23:15


Map your trip with EveryTrail

休息了半个月,膝盖总算是没啥问题了

Posted in Sports | Tagged | Leave a comment

hTC g1 on board

开始关注 Android 的时候还没有毕业,随意看了一下介绍就没有下文了。最近在家闲着看了两本 Android 开发的电子书,网上也有不少免费的应用和游戏,觉得挺有意思,随即在 androidin安卓网 论坛恶补了一下,总算是忍不住出手了(最近日子不好过,只出不进)。

考虑到售后、验机等,在昆明三九手机网询了一下价格,答曰G1黑色2380大元,白色再加150,NND,昆明的电子产品ZTMD贵,想想还是一咬牙下了订单。结果第二天电话过来说没货,KAO,没货早说嘛,害得偶又跑一趟取回订金。之后又去其它几个水货手机商家问了一下,更是崩溃,连G1有几个版本都不清楚,无语!

没办法,只能TAOBAO了。3号在盛旗电讯下了单(英黑G1 2180大元 + 20运费),等到5号货还没到,上顺丰速运一查,吓了一跳。货居然发到北京去了,而且已经有人签收了。赶紧联系卖家,说是他们弄错了,立刻给我发货。

直到今天早上货才到,真是一波三折。废话不多说了,开箱验机。

参考

英版包装盒

IMG_3931 

IMG_3932 

IMG_3933

全部配件

IMG_3934

正面,帖纸有小点气泡

IMG_3935

IMG_3939

IMG_3942

轨迹球有一层白色的绒毛

IMG_3940

键盘

IMG_3937

背面

IMG_3936

IMG_3943

帖膜有小点气泡,划痕不明显

IMG_3938

USB数据线,梯形接口

IMG_3941

一体式耳机,梯形接口,有HTC标志

IMG_3945

冲电器,三脚插头,mini-usb接口

IMG_3944

电池,触点有划痕,居然没电

IMG_3946

开机,很慢(习惯了使用NOKIA的灰屏机),系统是 hiapk 2.2 版

IMG_3947

IMG_3948

IMG_3949

重力感应,游戏teeter

IMG_3950

金属探测(下载metal detector软件测试)

IMG_3953

GPS定位,使用Goolge地图,家里的WiFi,速度很快

 IMG_3951

电子罗盘(下载compass软件测试)

 IMG_3952

总的说来,还是比较满意,之后的时间就慢慢折腾了。

Posted in 未分类 | Tagged | Leave a comment

about const int *p and int * const p

1、常量指针 const int *p;  这里*p是常量,不能将*p作为左值,即不允许 *p= 的操作,称为指向常量的指针,另外,如果需要将指针指向常量,则必须使用常量指针。

2、指针常量 int * const p;指针常量是指指针本身是常量,他的值不能改变,定义时必须初始化,由于p为常量,所以不能进行 p= 的操作,也就是p的指向不能改变,但是其地址里的值可以改变 *p = 的操作可以改变其地址里的值。

3、指向常量的常量指针 const int * const p;既不能作为左值,也不能改变指针的指向,也就是同时限定了 *p = 和 p = 的操作。

总结:

  • 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
  • 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
Posted in C | Tagged | Leave a comment

Tom-Kao Android book ex12 ActivityNotFoundException

高焕堂《Android应用框架原理与程式设计36技》第四章ex12演示从一个Activity(ex12)启动另一个Activity(rgActivity)

private OnClickListener listener = new OnClickListener() {

        public void onClick(View v) {
            Log.d(ACTIVITY_TAG, "enter onClick&quot ;) ;
            Intent in = new Intent();
            in.setClass(ex12.this, rgActivity.class);
            startActivityForResult(in, RG_REQUEST);
            Log.d(ACTIVITY_TAG, "quit onClick&quot ;) ;
        }
};

在运行例子程序的时候出现了ActivityNotFoundException这篇文章也提到了这个问题。原因是需要被启动的Activity(rgActivity)没有在 AndroidManifest.xml 中注册。

参考Android官方文档Activiy节:

To be of use with Context.startActivity(), all activity classes must have a corresponding <activity>  declaration in their package's AndroidManifest.xml.

因此需要在AndroidManifest.xml中增加以下配置:

<activity android:name=".rgActivity"/>

附件

 

Posted in Android | Leave a comment

HTTP_PROXY Environment Variable influences HTTPClient

之前一直跑着好好的程序突然不能用了,httpclient 抛出什么invalid argument 错误,一点帮助都没有。折腾了半天,后来一想是下午在公司内部网络为了使用 gem 网络安装,设置了 http_proxy 环境变量,家里是无法访问该代理服务器的。去掉该环境变量,一切正常了。

参考

Posted in DynamicLanguage | Tagged , , | Leave a comment

Ruby Process MS Excel

1. 如果是在windows平台上,可以使用ruby标准库win32ole

使用ruby来操作excel文件首先需要在脚本里包含以下语句

require 'win32ole'

把win32ole包含进来后,就可以通过和windows下的excel api进行交互来对excel文件进行读写了.

打开excel文件,对其中的sheet进行访问:
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('c:\examples\spreadsheet.xls')
worksheet = workbook.Worksheets(1) #定位到第一个sheet
worksheet.Select

读取数据:
worksheet.Range('a12')['Value']  #读取a12中的数据
data = worksheet.Range('a1:c12')['Value'] #将数据读入到一个二维表

找到第一处a列的值为空值
line = 1
while worksheet.Range("a#{line}&quot ;) ['Value']
   line=line+1
end #line的值为第一处空白行的行数

将第一列的值读入到一个数组中
line = '1'
data = []
while worksheet.Range("a#{line}&quot ;) ['Value']
   data << worksheet.Range("a#{line}:d#{line}&quot ;) ['Value']
   line.succ!
end

将数据写入到excel表格中
worksheet.Range('e2')['Value'] = Time.now.strftime '%d/%m/%Y' #单个值
worksheet.Range('a5:c5')['Value'] = ['Test', '25', 'result']  #将一个数组写入

调用宏定义
excel.Run('SortByNumber')

设置背景色
worksheet.Range('a3:f5').Interior['ColorIndex'] = 36 #pale yellow
# 将背景色恢复成无色
worksheet.Range('a3:f5').Interior['ColorIndex'] = -4142 # XlColorIndexNone constant
# 使用Excel constant 将背景色恢复成无色
worksheet.Range('a3:f5').Interior['ColorIndex'] = ExcelConst::XlColorIndexNone

保存
workbook.Close(1)
# 或
workbook.SaveAs 'myfile.xls'
# 默认路径是系统定义的"我的文档"

结束会话
excel.Quit

一些相对完整的代码片段

创建一个excel文件并保存
require 'win32ole'
excel = WIN32OLE.new("excel.application&quot ;)
excel.visible = true     # in case you want to see what happens
workbook = excel.workbooks.add
workbook.saveas('c:\examples\spreadsheet1.xls')
workbook.close

操作excel文件的几个重要元素
Excel => workbook => worksheet => range(cell)

我理解的是excel为类名,workbook为一个具体的(excel文件)实例,创建好实例后,worksheet是实例(workbook,工作簿)中的一个工作表,然后可以对工作表中的每个单元格(range(cell))进行具体的读写------------------按照这样操作肯定没有错,不过下面的这些语句又让我有些疑惑

excel.workbooks("Mappe1&quot ;) .worksheets("Tabelle1&quot ;) .range("a1&quot ;) .value #读取名为Mappe1的excel文件中工作表名为Tabelle1的a1单元格中的值
excel.worksheets("Tabelle1&quot ;) .range("a1&quot ;) .value #作用同第一条语句
excel.activeworkbook.activesheet.range("a1&quot ;) .value #作用同第一条语句
excel.activesheet.range("a1&quot ;) .value #作用同第一条语句
excel.range("a1&quot ;) .value #作用同第一条语句

excel可以直接操作所有的属性,默认为当前活跃的工作簿/工作表

对单元格的操作:

某个单元格: sheet.range("a1&quot ;)

a1到c3的值:   sheet.range("a1", "c3&quot ;)   或 sheet.range("a1:c3&quot ;)

第一列:    sheet.range("a:a&quot ;)

第三行:    sheet.range("3:3&quot ;)

获得单元格的值:
range.text  #读取值,返回为字符串格式,如果单元格内为数字,有可能会被截断小数点后的位数
sheet.range("a1&quot ;) .text 

range.value  #读取值,数字不会截断
sheet.range("a1&quot ;) .value     

对单元格设置值
sheet.range("a1&quot ;) .value = 1.2345

sheet.range("a1&quot ;) .value = '1.2345'

迭代访问:

sheet.range("a1:a10&quot ;) .each{|cell|puts cell.value}

如果范围是一个矩形,则会按行循环迭代访问
sheet.range("a1:b5&quot ;) .each{|cell|puts cell.value}

block迭代,并打印出每行的第一个值
sheet.range("b3:c7&quot ;) .rows.each{|r|puts r.cells(1,1).value}

2. 如果是在*nix平台,可以使用http://spreadsheet.rubyforge.org/这个gem

Posted in DynamicLanguage | Tagged , , | Leave a comment

Execute an External Program in Ruby

ref:

http://whynotwiki.com/Ruby_/_Process_management#How_do_I_execute_an_external_program.3F

http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html

Posted in DynamicLanguage | Leave a comment

IFP-180TC Revive

一直听得好好的 iriver ifp-180tc 莫名声音变得缓慢低沉,女声听着像男声。在网上google到 谈谈我对TCC方案MP3播放时声音变慢速的维修,依然没有什么帮助。总不能那么容易就坏了吧,先试着重新刷一下固件。记得上一次刷固件还是三年之前的事情了,最后用的是无驱版1.85,后来就一直没有倒腾它了。

很快在 http://bbs.imp3.net 找到了相关的文章和一个无驱版固件,很幸运 it works !!!!! 传了两首歌试听了一下,固件版本太老,感觉不如原来的1.85,又看到一个2.10的,重新升级了一下固件,结果一开机显示成传说中的120tc, File Check Error。囧

还好以前升级固件时也遇到过这种情况,没有太沮丧。继续在坛子搜寻,找到这篇文章,按照介绍的步骤,总算把小i复活了 O(∩_∩)O哈哈~

参考资料

Posted in 未分类 | Leave a comment

Use PassEnv to Pass Environment Virable to CGI Scripts

今天在迁移服务器的时候遇到一个很诡异的问题,原来一切正常的程序在新的服务器上中文乱码。

一段 ruby 写的 cgi script 通过 DBI 访问 oracle 数据库, 将查询得到的记录输出到页面。数据库编码是 gbk, 需要通过 Iconv.conv('utf-8', 'gbk', str) 将字符串转换成 utf-8 输出。oracle 相关的环境变量已经设置好。

export LANG=zh_CN.UTF-8
export NLS_LANG=American_America.zhs16cgb231280
export ORACLE_HOME=/home/oracle/oracle/product/10.2.0/client_1
export LD_LIBRARY_PATH=/home/oracle/oracle/product/10.2.0/client_1/lib:$LD_LIBRARY_PATH

在 shell 里执行该 cgi script 中文能够正常显示,但是通过 apache (非root, oracle用户)执行却出现乱码,而且在 apache 下中文都变成了问号。

初步判断是数据库中的字符在目标字符集下没有对应的代码,通常情况就是 iso-8859-1, 那么估计是设置的 oracle 客户端字符集环境变量没有被带到 apache 执行环境中。在网上 google 到如下:

see http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_env.html#passenv

PassEnv 指令

说明
传送shell中的环境变量

语法
PassEnv env-variable [env-variable] ...

作用域
server config, virtual host, directory, .htaccess

覆盖项
FileInfo

状态
基本(B)

模块
mod_env

从调用httpd进程所在的shell中,指定一个或者更多个环境变量,传送到CGI脚本和SSI页面。例如:

示例

PassEnv LD_LIBRARY_PATH

SetEnv 指令

说明
设置环境变量

语法
SetEnv env-variable value

作用域
server config, virtual host, directory, .htaccess

覆盖项
FileInfo

状态
基本(B)

模块
mod_env

设置一个环境变量,该变量将会传送到CGI脚本和SSI页面。例如:

示例

SetEnv SPECIAL_PATH /foo/bin

这样在 $APACHE_HOME/conf/httpd.conf 中加入

PassEnv ORACLE_HOME
PassEnv LD_LIBRARY_PATH
PassEnv LANG
PassEnv NLS_LANG


SetEnv LANG zh_CN.UTF-8
SetEnv NLS_LANG American_America.zhs16cgb231280
SetEnv ORACLE_HOME /home/oracle/oracle/product/10.2.0/client_1
SetEnv LD_LIBRARY_PATH /home/oracle/oracle/product/10.2.0/client_1/lib:$LD_LIBRARY_PATH

问题都得到了解决

Posted in DynamicLanguage | Leave a comment

Ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] Cannot Load 'rexml/formatters/default'

在将 xml document 对象输出成字符串的时候,会用到下面三个类

Module
REXML::Formatters

In:
rexml/formatters/transitive.rb
rexml/formatters/pretty.rb
rexml/formatters/default.rb

Classes and Modules

Class REXML::Formatters: :D efault
Class REXML::Formatters: :P retty
Class REXML::Formatters::Transitive

在 windows ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] 上一切正常,但在 Linux 上却发现找不到源文件

ruby.cannot.load.formatters

在 rexml 标准库目录下面 ls 一下,根本没有 formatters 这个目录,真是 faint

rexml 

google 了一下,在 Ruby Forum 发现这个帖子

REXML::Formatters - where do they come from?

REXML::Element.write is deprecated. See REXML::Formatters

得知在 Linux 上安装的 ruby 版本还没有这三个类

Posted in DynamicLanguage | Leave a comment