thinkpad 的发声练习

ALSA has been included in the 2.6 kernels and is included in all Arch kernel26* packages.

archlinux kernel26 2.6版本的内核都已经包含了 ALSA。我们之需要安装 userspace ,用户使用的软件。

,而且还需要打一下它的屁股!

 

pacman -S alsa-utils

#建议安装这个....

pacman -S alsa-oss

就是默认安装后是静音 mute 的。打它!!

用archlinux beginner 的方法使用

 

alsamixer

来消除静音,我失败了。不知道是不是我做错了什么...于是进入 ALSA wiki部分。人家用这个,我就ok了。

 

amixer set Master 90% unmute
amixer set PCM 85% unmute

 

哭吧!!

 

aplay /usr/share/sounds/alsa/Front_Center.wav

改变trackpoint 感应度和速度

要使用管理员权限执行

 

echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity 
echo -n 120 > /sys/devices/platform/i8042/serio1/speed 

PS. 去 Thinkpad Wiki 那里说的很全了...哈哈~在这记录下

让其开机后自动设置:

编辑这个文件:

sudo vim /etc/rc.local

将上面两行加进去就行了...

archlinux 里面 rc.local 这个是用户的开机启动脚本设置的地方...还有个  rc.local.shutdown。 关机时要执行的脚本估计就放在这里。

视觉传递的东东..

 视觉传递理论有许多..书中介绍了7中基本的理论:

 

完整形态;符号论;结构主义;生态学理论;认知理论;赫胥黎-莱斯特模式;
 
完整形态:  

A...将各个部分组织起来形成一个有意义的整体。
B...通过眼睛,大脑和记忆的互相感应来观察和认知我们周围的世界。
C...通过形状,线条,相似之处,联想。按照它们的顺序(前后,近远)相似性,聚集的方向。
D...直观的,大脑预先过滤我们眼睛看到的事物,使其成为我们最能理解的最简单的一个事物。
 
以上是我当时记录下来的比较有感觉的一些要点(我认为..),要是当时就马上写篇东西的话,应该是“哗啦啦”的...但是,很明显,我现在几乎很难理解这些句子所表达的意思。
 
对于A句的理解:
      就如我上篇说到, 当你看一个不能一眼看尽的事物的时候,你要把它看完整后才能认识到那究竟是什么东西. 有时候没有什么意义的各个部分组织起来后便形成了一个有意义的整体. 而个当我们观察事物的各个部分的时候,脑子会回馈关于这部分特定的信息,而不同于整体的信息(章节中给我一副宣传画的感觉。),脑子也会不断的进行联想,探索:"这是什么?"。 这就关系到B了。
 
对B句的理解:
        从对A句的理解接下来,当我们眼睛看到一个未知或者未确定的事物的时候,我们一般会用以往看过的事物来进行比较分析。从而来认知眼前的事物。就是A理解中的,在我观察事物的某部分的时候,会不断的进行联想,回忆,分析来判定这个事物是什么。随着观察的越来越完整,对其的认知也回越来越多,最后到看到一个整体。在这个过程中,我们可能看到不同的东西。就比如你在最后会看到的那个视频一样。
 
对C的理解:
        其实我不太同意C句中排列的顺序,应该是先观察到线条,线条再构成形状,有了初步的形状如:脸部轮廓。我们才会把这个形状轮廓与记忆进行相似之处的比较,进行联想。 如何比较呢,就是按照前面说的顺序,先比较线条相似性,形状相似性.......一步一步的去认识某个事物。
 
对D的理解:
         就好比如别人经常告诉我们:“做事要经大脑!!”。意思是我们做某事的时候是直接反映的,不加思索的。大脑是反馈给我们关于眼睛看到的东西的最简单的信息。
 
好吧.....其实上面写了那么多。别人看了还是不会理解的,请看了我对A句理解和B句理解后再来看看下面这个例子吧...
 
PS.!!
呃......好吧。脑子已经不想动了....过段时间再回来总结我实际想写的东西....我并非是要去研究视觉传递, 我只是在做一些实验。现在到好,把视觉传递的东西记下来了,把主要要记录的东西给往了.....= =. 有多个BLOG真麻烦
这没有视频嵌入?

 

 

jQury datatables plugins 中文排序

 

本来想现在这个公司能让我学学服务器方面的东西.....看来是有些渺茫了...早说嘛...早说我就不来了,在原来那里还给我管两部开发服务器...经理肯教。不能怪别人,怪自己吧。

好! 牢骚发完了..我来现在这个新公司弄javascript去了........javascript我也是没用过几次的...

但是....网站新功能模块的所有javascript都要我一个人完成...shit......

好。切入重点好了.

恩,我用到了一个很强大的jquery插件。 datatables 详情请点击进去看。

老外的东西...没有中文排序...今天经理要求表格要有中文排序。死啦! 我以为要大动干戈...不过.因为这个插件对第三方开发支持比较灵活...得救了。

简单说一下。 datatables这个插件的排序默认提供按三种类型,string, number, 第三个忘记了.自己看吧。

于是,其他类型的排序就要自己定义了..应该说可以自己定义!!!

插件的string类型是按字符编码排序的,而我们所谓的中文排序是要按拼音排序的!!!!

google 了一下... javascript提供了这方面的功能。oh.yeah.....

下面这句代码应该好似俺本地化来做比较....中文环境就用拼音比较的意思... 返回 -1,1。(好像是....也忘记了。上网搜搜就有了...额...这是病。)

 

// oSort 是排序类型数组, 'chinese-asc' 是自己定义的类型的排序(*-asc || *-desc)名称.
// 插件应该会根据表格中的内容的类型(string, number, chinese :) ),
// 比如: chinese类型的用 oSort['chinese-asc'] 方法进行比较排序。所以下面定义类型的时候要和这里对上。
//用oSort对应的function 来进行比较排序.
// 所以,function 里是自定义的比较方法.
jQuery.fn.dataTableExt.oSort['chinese-asc']  = function(x,y) {
        //javascript 本身提供的本地化比较函数。
        return x.localeCompare(y);
    };

    jQuery.fn.dataTableExt.oSort['chinese-desc']  = function(x,y) {
        return y.localeCompare(x);
    };
    //aTypes 是插件存放表格内容类型的数组,可以根据自己需求添加,比如 curreny类型。
    // 下面用到的正则也是google来的,判断是否是中文字符.
    //返回 null 则默认表格内容是 'string' 类型。
    jQuery.fn.dataTableExt.aTypes.push(
        function(sData) {
            var reg =/^[\u4e00-\u9fa5]{0,}$/;
            if(reg.test(sData)){
                return 'chinese';
            }
            return null;
        }    
    );
/* 就说这么多吧...... */

 

对二补码

在翻东西的时候找到大一的时候的一个小翻译,值得记录一下。。。。开始把有用的东西都移到网上来了。感觉存到网上比存到本地要安全....

下面这个是 The C Programming Languate  第三章的练习。当时实在不会做,上网看了高人的解释....翻译理解了一下.....

练习3-4解释到:
There are a number of ways of representing signed integers in binary, for example, signed-magnitude, excess-M, one's complement and two's complement
有符号的长整型在二进制中有若干种表示方法,例如,超过限制的有符号整型值的对一补码和对二补码。我们想我们的讨论限制在后者。
在数的对一补码中,负数的补码的表示方式,仅仅是其正数通过取反该正数的二进制数位,来改变其符号的副本。譬如,二进制位为8位:
                SIGNED  BINARY  UNSIGNED
               
                  25   00011001     25
                 -25   11100110    230

                 127   01111111    127
                -127   10000000    128
这就意味着有两种方法来表示零(所有的 0 和 1 二进制位),有符号8位二进制的长度(量程)是 -127~127,而且其负数是(2^n-1)
(例如,-1的表示为(2^n-1)-(+1))。例如:

         (偏差)Bias = 2^8 - 1 = 255 = 11111111
                    (减)Subtract 25                  = 00011001
                    (等长度编码)Equals              =11100110

在对二补码表示中,负数是以(2^n)为偏差的,举例来说:
         Bias = 2^8  = 100000000
         Subtract 25 =  00011001
         Equals      =  11100111
换言之,找负数的对二补码的表示方法就是找到其对一补码然后加一。注意最重要的是一个8位二进制的值用的一个对二补码的表示方法是
-128~127,和用对一补码的-127~127不一样。因此,最小的负数的绝对值是不能被表示的 。(例如 我们不能表示 +128)。(Since the itoa() function in Chapter 3 handles negative numbers by reversing the sign of the number before processing, then adding a '-' to the string, passing the largest negative number will result it in being translated to itself)因为第三章
的在转换前将负数的符号取反,然后在字符串中加入'-',所以最小的负数会转换成其本身。
                 -128            : 10000000
                 One's complement: 01111111
                 Subtract 1      : 10000000
Therefore, because (n /= 10) will be negative, the do-while loop will run once only, and will place in the string a '-', followed by a single character, (INT_MIN % 10 + '0'). We can remedy these two bugs in the following way: 1 - change 'while ((n /= 10) > 0)' to 'while (n /= 10)'. Since any fractional part is truncated with integer division, n will eventually equal zero after successive divides by 10, and 'n /= 10' will evaluate to false sooner or later. 2 - change 'n % 10 + '0'' to 'abs(n % 10) + '0'', to get the correct character. EX3_4.C shows the revised function, which will run correctly regardless of the number representation.
 

TIM G2

记录一下我机子的信息 

SAPPHIRE PVT 32A ENG S-OFF H

HBOOT-1.76.2007 (SAPP10000)

CPLD-12

RADIO-6.35.07.29

Aug 21 2009, 18:19:15

 

Part Number :99HFU051-00

Part Description :SKU,TIM,Italian,ITA,HSUPA enable,Sophisticate Black,w/o SIM Lock,SAPPHIRE-M3

HTC Model :SAPPHIRE-M3

oh...give up again

i almost give up every day.

yesterday , i give up again.!

python challenge .我玩不下去了,,,,感觉那些线索在玩文字游戏。 英文的文字游戏!

让你猜python module 里的东西!

我英语没那么好哦....好是别费太多时间在上面好了...我还不够格。

还是另找学习python 的路好了...不过根据我的水平....还是乖乖跟着做习题好...

不过我很不乖,,完拉。

眼高手低...

继续克服,继续锻炼

python Challenge level 5

这一关就比较诡异了...

peak hell sound fmiliar ?

sound fmiliar?!! 马上上网找hints. => pickle

pickle 是啥!? 去官网看hints. => Global Module Index

原来是一个module.....

pickle 是一个将python object 转换成 ASCII 的module. 当然,可以互转。也可以转成binary。

于是,该页面的源码里给出了一个叫做 'banner.p'的文件,里面就有一堆ASCII码了。

解出来是什么呢!? 一堆list object 里包含着数个 tuple , tuple 包含这一组类似于(' ',4), ('#',6')

看不懂,这是啥!? 乖乖继续到官网看 => banner 是一个*unix的命令....运行看看!

噢,终于明白了,原来那些tuple就是告诉你 空格要大印多少个,'#'要打印多少个。

每个list 里的 tuple里的数字加起来都是一样的!

很简短,却花了那么多功夫,折腾。

here go

 

import pprint, pickle

file = open('banner.p','rb')
data = pickle.load(file)

for c in data:
    line = ""
    for x in c:
        for i in range(x[1]):
            line += x[0]
    pprint.pprint(line)

结果是!哇!真好看的说(解题后的喜悦所影响,哈哈). next. is level 6. cheer

 

'                                                                                               '
'              #####                                                                      ##### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'               ####                                                                       #### '
'      ###      ####   ###         ###       #####   ###    #####   ###          ###       #### '
'   ###   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     #### '
'  ###     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   #### '
' ###           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  #### '
' ###           ####     ####          ###    ####     ####  ####     ####  ###       ###  #### '
'####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  #### '
'####           ####     ####   ##########    ####     ####  ####     #### ##############  #### '
'####           ####     ####  ###    ####    ####     ####  ####     #### ####            #### '
'####           ####     #### ####     ###    ####     ####  ####     #### ####            #### '
' ###           ####     #### ####     ###    ####     ####  ####     ####  ###            #### '
'  ###      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   #### '
'   ###    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    #### '
'      ###     ######    #####    ##    #### ######    ###########    #####      ###      ######'
'                                                                                               '

 

 

 

 

python Challenge level 4

这关给了个图片,点开图片会给出一句话

and the next nothing is ***** , ****是数字

初始数字是12345

title 是 follow the chain

试了几次后会提示,说你在手动......

其他提示在页面中,没什么特别的,找出数字,循环。一直到loop....loop.....

结果就没有出现数字的那一页。以下为解题:

 

#!/bin/env python

import urllib
import re

ourl = "http://www.pythonchallenge.com/pc/def/linkedlist.php";
code = "12345"
for i in range(400):
    params = urllib.urlencode({'nothing':code})
    #print i,
    try:
        f = urllib.urlopen(ourl+'?%s' % params)
        for line in f.readlines():
            m = re.findall('\d+',line)
            print '>> '+line
            if len(m) != 0:
                #there several number group at midway
                #chose the last one
                code = m[-1]
            else:
                break
            print '<<' + code
    except Exception, IOError:
        raise IOError

好像忘记看其他人怎么解了....

 

 

python Challenge level 3

python challenge 是一个闯关游戏...编程游戏. 主要用python 语言解题. 也可以用其他语言...

前两关就不说了..现在开始记录下过level3的点:

刚开始,没主要到页面的title是 re (<html><title>re</title>......</html>). re 是python 的正则表达式模块.

这说明这个level 要用到 regular expression. 但我用了一般的 if , for 。如下:

 

#!/bin/env python
analyze = open('source').read().strip().replace('\n',"")
box = [x for x in analyze[:8]]
box.insert(0,'0')
#print "".join(box)
#print "%s" % analyze
re = ""

for s in analyze[7:]:
    box.remove(box[0])
    box.append(s)
    #print "".join(box)

    if  "".join(box[1:4]).isupper() and "".join(box[-4:-1]).isupper():
       if "".join(box[0]).islower() and "".join(box[-1:]).islower():
            if "".join(box[4]).islower():
                #print "".join(box)
                re += "".join(box[4])
print re

在论坛看完7页的帖子后(都是给hints '提示,') 。发现我忽略了一个明显的提示......EXACTLY...

给出一个hints : you should search 'xXXXxXXXx' instead of 'XXXxXXX'.

oh...that's it! 

当然有个hints: use re model。

我之前也发现了  re. 但是不知道是啥意。

下面是我的正则,还没去看大家的解法:

下面的source 是一个文件,存放了一大串字符串....

-E : 使用 egrep; -F: 使用 fgrep

-o : 只显示匹配的那部分,而不是正行。

--color: 在匹配的行中用特别的颜色凸显出匹配部分

 

grep -E -o '[a-z]{1}[A-Z]{3}[a-z]{1}[A-Z]{3}[a-z]{1}' source