06

今天重装Arch时发现最新的2010.05安装镜像只提供了光盘ISO版本,而没有原来的USB镜像版本了,所以只能放弃USB安装的方案。但是为了一次重装系统刻张盘实在浪费,所以就研究了下如何利用这个ISO镜像来实现硬盘安装。

查看了一下ArchWiki,刚好有一篇文章介绍利用ISO镜像安装Arch的方法,主要是利用grub将ISO镜像映射到内存中以供安装使用。不过这篇文章是在2009.08的安装镜像基础上的,在2010.05镜像上有些地方需要做些改动。下面是我的详细的安装过程。

首先要有一个可用的grub。我这里用的grub4dos,需要注意的一点是,我最先用grub4dos 0.4.3没成功,换到0.4.4版本顺利安装。然后将arch的安装镜像放在grub可读的分区内,如(hd1,0)/archlinux-2010.05-core-i686.iso。在启动进入grub时,按“c”进入grub的命令行模式。依次执行以下命令:

grub> map –mem –heads=0 –sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff)
grub> map –hook
grub> chainloader (0xff)
grub> boot

如果以上命令执行过程均没有问题,执行boot后应该就进入ISO镜像的启动流程了,按照正常方式选择arch的live方式,进入安装环境。

安装环境启动过程中,会提示没有找到安装光盘,然后提供了一个shell让用户解决这个问题,其原因在于arch的安装环境是通过光盘的label去找安装光盘的,也就是/dev/disk/by-label/ARCH_201005。所以我们还是需要手动将硬盘上的ISO文件链接到这个位置。当然首先要挂载ISO镜像所在的硬盘分区。这里需要特别注意一点,在Arch安装环境中,不要把任何分区挂载到/mnt目录下,Arch安装环境会将/mnt挂载为安装目标。可以执行下面的命令完成ISO镜像的链接工作:

#mkdir /tmp_mnt

#mount –r –t vfat /dev/sdb1 /tmp_mnt

#modprobe loop

#losetup /dev/loop6 /tmp_mnt/archlinux-2010.05-core-i686.iso

#ln –s /dev/loop6 /dev/disk/by-label/ARCH_201005

#exit

如果没有问题的话,exit后arch会继续安装流程。后面的安装就与正常的光盘安装无异了。

以前用debian的时候,debian的ISO镜像中会提供用于硬盘安装的内核和ramdisk镜像,可以用grub手动加载,安装环境启动后中debian会自动检测ISO镜像位置,挂载ISO镜像继续安装。看了一下arch的ISO镜像内容,感觉arch应该也可以用这种方式进行安装,有兴趣的tx可以尝试一下~

01

接着扫四道水题
#4 Find the largest palindrome made from the product of two 3-digit numbers.

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

#!/usr/bin/env python

biggest = 0

def isPalindromic(num):
    num_str = str(num)
    num_halflen = len(num_str)/2
    for idx in range(0, num_halflen):
        if num_str[idx] != num_str[-(idx+1)]:
            return False
    return True

for x in range(100, 999):
    for y in range(100, 999):
        if isPalindromic(x*y) and x*y > biggest:
            biggest = x*y

print biggest

#5 What is the smallest number divisible by each of the numbers 1 to 20?

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?

#!/usr/bin/env python

def isPrimeUnder20(num):
    for tmp in range(2, num):
        if num%tmp == 0:
            return False
    return True

factor_list = []

for x in range(2, 20):
    if isPrimeUnder20(x):
        power_x = 1
        while x**power_x <= 20:
            power_x += 1
        factor_list.append(x**(power_x-1))
        print x,power_x-1

prod = 1
for x in factor_list:
    prod *= x

print prod

#6 What is the difference between the sum of the squares and the square of the sums?

The sum of the squares of the first ten natural numbers is,
1^(2) + 2^(2) + ... + 10^(2) = 385

The square of the sum of the first ten natural numbers is,
(1 + 2 + ... + 10)^(2) = 55^(2) = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

#!/usr/bin/env python

sum_of_square = 0
for x in range(1, 101):
    sum_of_square += x**2

sum_tmp = 0
for x in range(1, 101):
    sum_tmp += x
square_of_sum = sum_tmp**2

delta = square_of_sum - sum_of_square
print delta
30

好久没有动这个了,今天再扫一道水题。

Find the largest prime factor of a composite number.
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?

题目的数据规模很小,所以可以直接偷懒穷举,so…

#!/usr/bin/env python  

num = 600851475143
seg_size = 10000
base_factor = 0
prime_factors = []

while base_factor*seg_size < num:
    for tmp in range(seg_size*base_factor, seg_size*(base_factor+1)):
        if tmp>1 and num%tmp == 0:
            prime_factors.append(tmp)
            while num%tmp == 0:
                num = num / tmp
            print "num:",num," ",tmp
        base_factor = base_factor + 1

print prime_factors
26

今后BTalk的更新信息将移至感触黑莓(feelberry),感谢大家对BTalk开发的关注和支持。

相信将BTalk更新信息转移到专业黑莓站点,将给大家带来更好的使用体验。同时感谢feelberry的创始人sanren、疯子和十六人为大家带来这么好的一个发挥平台,同时在感触黑莓的BBS中,会为大家开辟BTalk专区,欢迎大家在那里发表相关看法: )

十二
25

First of all, Merry Xmas, dear friends~

说来真是一个不太平的新年,各种阴影笼罩在大家头顶sigh…    Anyway,但愿明年能有所转机~

言归正传,这次更新并没有太多变化,本来计划主要实现对其它XMPP服务器支持,结果用校内的XMPP服务一直没成功连上,所以留待大家自行测试-_-|||

另外在@aston314的帮助下,增加了一个弹出对话框提醒方式,试了一下果然好用呵呵。默认设置为“总是弹出”,如果消息太多觉得烦了可以在设置里面修改弹出提醒的类型。

Changelog:

1. 修正对Chatterous群支持问题
2. 在@aston314的帮助下,实现并完善了新信息对话框提醒方式(果然很好用XD)
3. 增加自定义服务器,可以连接GTalk以外的XMPP服务器
4. 根据@jollinz的建议增加Suretype机型键位支持
5. 更换图标

下载链接:

4.2: OTA下载 | 安装包下载

4.5: OTA下载 | 安装包下载

ST: OTA下载 | 安装包下载

十二
19

Changelog:

  1. 修正几个比较严重的bug,比如对tweet-im机器人的支持问题,使用系统输入法输入会被中断的问题,以及某些情况下无法收到消息的问题
  2. 增加添加/删除好友功能
  3. 改进快捷键操作方式,如增加翻页等(空格或n键下翻页,p键上翻页)
  4. 增加中文语言支持
  5. 增加消息时间戳

先插一句嘴,这次升级中的修复以及改进非常重要,强烈建议大家升级

其实我一直觉得BB上用英文界面是最方便的,可以支持快速定位等。不过有挺多bbers要求加入中文支持,还是满足一下大家的要求吧。不过做语言支持才发现,原来做Localization是这么痛苦的一件事,本来以为一个小时搞定了,没想到差点花一个通宵= =…  言归正传,为了方便需要中文支持的用户,我把初始默认语言设置为中文,这样应该会避免有人认不出设置选项的问题。所以如果希望使用英文界面的bbers,可以到设置菜单把语言切换为英文即可。

另外,关于消息的时间戳,目前是直接使用的当前系统时间,而不是xmpp报文中的timpstamp字段,不过gtalk在消息超过一定时间保持未读状态的话,会直接把消息报告发到gmail里,所以应该不会出现实际发送时间与显示时间差太多的情况

4.2 OS:  OTA下载 | 安装包下载

4.5 OS:  OTA下载 | 安装包下载

Enjoy~

十二
10

ChangeLog

  1. 增加选项选择是否用菜单键发送信息,以解决点讯用户无法粘贴的问题
  2. 4.2版本与4.5功能相同

其中4.5的算是0.5.112版本的紧急更新,有相应问题的用户请下载更新。4.2 OS版本修改完成,经aston同学测试应该没有问题了。

4.5 OS:

OTA下载

安装包下载

4.2 OS:

OTA下载

安装包下载

Enjoy~

十二
10

ChangLogs

  1. 加入断线自动重连功能
  2. 菜单项和操作键方面的改进
  3. 其它细节变更

这个版本最大的改进就是断线重连了,很多用户多次向我提出这个需求,同时对于BTalk这种非BIS/BES数据应用,没有自动重连实在影响可用度。为了保证正常使用,针对自动重连加入了一些设置选项,下面有详细说明。另外根据oran的建议,增加了一些操作方式以改进storm的用户体验,比如增加主要操作的菜单项,以及用黑莓键发送信息等。但是因为没有实机测试,不知改的是否合适,希望storm用户测试后能把问题反馈给我。最后还有两个小改动,一个是可以设置新信息是否自动前台,一个是可以设置聊天界面字体大小。

下面是自动重连设置说明:

auto reconnection config

Auto reconnect是自动重连的总开关,默认为打开

Retry delay(sec)是每次重连之前的延时,以秒为单位,默认为10,建议最好设置5以上,这样可以避免电梯等信号不好的时候不断重试

Retry limit是最大重试次数限制,如果重试次数超过这个值则放弃重连,默认为10次,如果设置为0则无限次重试。这个可以根据自己的需要和网络质量设置吧,不过还是要小心,要是忘了登出一直挂了一个月……另外,如果重试次数超出,则进入断线(offline)状态,这时在好友界面,有一个菜单项(Retry)可以手动重连,并且会重置目前的重试次数(这个菜单项在其它状态下是没用的,就不要点了…)。

OTA下载链接

安装包下载链接

Enjoy!

十二
06

ChangLogs

  1. 此版本针对4.2 OS修改,经8700 4.2 OS测试已经解决“blocking operation not permitted on event dispatch thread”问题
  2. 若干细微修改
  3. 其它系统若无问题不必升级
  4. 在此特别感谢@TsienS同学在测试中做出的贡献

可以说,这个版本带来一个好消息和一个坏消息。好消息当然就是4.2 OS终于能用上BTalk了,cheers!

但是,从此4.2版本和高版本的代码就被分开了……这样将导致以后两个开发分支进度产生差异。以目前手头可用于测试的设备来看,估计以后开发路线为先在4.5OS版本中增加新功能,测试,成熟之后,再在4.2OS版本中加入相应功能的实现,所以还是要对不起4.2OS的朋友了……

不过相信在热心bbers的帮忙测试下,4.2版本的更新周期应该会跟上4.5的步伐的!

OTA下载: http://btalk.googlecode.com/files/BTalk-4_2.jad

安装包: http://btalk.googlecode.com/files/BTalk-42-0.5.101.7z

十二
02

BTalk-0.5.85发布

经@TsienS同学测试,这个版本还是有问题,暂时停止测试……

这个版本主要对8700 4.2 OS的用户发信息时报

Uncaught exception:blocking operation not permitted on event dispatch thread进行实验性修正,希望8700 4.2 OS用户对这个版本进行测试并及时将结果反馈给我。其它系统不必进行更新。

另外从这个版本开始,将直接从google code的project host提供OTA下载链接以及打包下载链接。

OTA下载:http://btalk.googlecode.com/files/BTalk.jad

打包下载:http://btalk.googlecode.com/files/BTalk-0.5.85.7z