Fedora 16 中的游戏键盘输入问题

在wine里玩PES 2012和玩smc的时候发现WASD键木有作用,方向键好好的。关掉iBus后就OK了,原因不明。

PageRank 在 Hadoop 上的实现原理

PageRank 算法的基本思想是,网页的热门程度依赖于指向它的网页的热门程度。假设有页面 $A$,有 $T_1 \dots T_n$ 这 $n$ 个页面包含指向 $A$ 的链接,$C(A)$代表页面 $A$ 所包含的指向别的页面的链接的数量,$d$ 是一个介于 0 和 1 之间的常数(成为阻尼系数,一般取 0.85),则页面 $A$ 的 PR 值(PageRank 值)

\[ PR(A) = (1-d)+d\left(\frac{PR(T_1)}{C(T_1)}+\dots+\frac{PR(T_n)}{C(T_n)}\right) \]

 

这个思想也可以由随即散步模型来解释:即从一随机网页起步,以概率 $1-d$ 跳到另一随机选择的网页, 或以概率 $d$ 随机选择一个当前网页上的链接并跟随此链接。一个网页的 PageRank 就是随机散步者在任意给定时刻访问该网页的概率。被许多网页指向的网页更可能被访问,被具有高 PageRank 的网页指向的网页更可能被访问。
 
为了求出各个网页的 PR 值,需要对上述方程组进行迭代求解(每个页面的 $PR$ 值都可以根据上述公式得到一个方程),直到方程组的解收敛,或变化的范围很小。在本次实验中,第一次迭代每个页面的初始 PR 值为0.5,当所有页面相邻两次迭代的$PR$值变化小于0.00001时,程序认为函数已经收敛。
 
实验中的map函数和reduce函数的伪代码如下:

 

function map
input (PageN, RankN) -> (PageA, PageB, PageC ...)
begin
	Nn := the number of outlinks for PageN
	for each outlink PageK
		TempN = RankN/Nn
		output (PageK) -> (PageN, TempN)
	output (PageN) -> (PageA, PageB, PageC ...)
end 

function reduce
input	(PageK) -> (PageN1, TempN1)
	(PageK) -> (PageN2, TempN2)
	...
	(PageK) -> (PageNt, TempNt)
	(PageK) -> (PageAk, PageBk, PageCk ...)
begin
	TempK := 0
	for each inlink PageNi
		TempK += TempNi
	RankK = 1 + (TempK - 1) * d
	output (PageK, RankK) -> (PageAk, PageBk, PageCk ...)
end

function combine
input	(PageK) -> (PageN1, TempN1)
	(PageK) -> (PageN2, TempN2)
	...
	(PageK) -> (PageNt, TempNt)
	(PageK) -> (PageAk, PageBk, PageCk ...)
begin
	TempK := 0
	for each inlink PageNi
		TempK += TempNi
	output (PageK) -> ("", TempK)
	if has (PageK) -> (PageAk, PageBk, PageCk ...)
		output (PageK) -> (PageAk, PageBk, PageCk ...)
end
在这段伪代码中,reduce函数的输入值(key-value对)的value部分有两种数据结构,即(String, Double)和(List<String>),在运用hadoop的实现过程中这两个数据结构要作为一个类被写入文件系统。
 
为了能够判断迭代终止,实现要求能够根据每次迭代的中间输出算出临近两次迭代的PR值变化。其方法是在中间数据结构(PageN, RankN) -> (PageA, PageB, PageC ...)中加入PageN的旧PR值,结构变为(PageN, RankN) -> (OldRankN, PageA, PageB, PageC ...)。这样在每次迭代之间,通过读取迭代的中间文件就可以获得PR值的变化,当所有PR值变化的绝对值小于伐值0.00001时就可以退出迭代了。

 

VNC 远程桌面关闭 Ubuntu 11.10 特效

Ubuntu 11.10 默认使用 Gnome 3 特效,这使得远程桌面连接出现了木有『标题栏』的窗口,解决的办法是使用 gnome-session-fallback

如果没有安装 gnome-session-fallback,则

 

apt-get install gnome-session-fallback

然后编辑 .vnc/xstartup 文件(前提是使用 TightVNC 而不是 X11VNC),注释掉 Xsession,使用 gnome-session-fallback。

 

#/etc/X11/Xsession
gnome-session-fallback

最后远程连接就OK了。

linux把ape+cue格式转换成flac,同时保留曲目信息<转载>

原链接http://bb2hh.blogbus.com/logs/22350588.html

确保安装了gawk,zenity,shntool,flac,mac

#!/bin/bash
# PS4="##### "
selection=`zenity --title="请选择一个.ape文件和一个.cue文件" --file-selection --multiple`
if [ -z "$selection" ]; then exit 0; fi
if [[ "$selection" != *.ape\|*.cue && "$selection" != *.cue\|*.ape ]]; then exit 0; fi
if [ `echo $selection | gawk -F "|" 'END {print NF}'` -ge 3 ]; then exit 0; fi

arg1=${selection%|*}; arg2=${selection#*|}
if [[ "$arg1" == *.ape ]];then file_ape=$arg1; file_cue=$arg2
else file_ape=$arg2; file_cue=$arg1; fi

i=0
while [ -f "temp$i" ]; do
i=$(($i+1))
done
> temp$i
iconv -f gb18030 -t utf8 "$file_cue" > "temp$i" && mv "temp$i" "$file_cue"
rm -f "temp$i"

tracks=`gawk -vRS="TRACK" 'END {print NR-1}' "$file_cue"`
#echo $tracks

all_titles=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

j=1; while [ -n "$all_titles" ]; do
title=${all_titles%%|*}
artist=${all_artists%%|*}
num=`printf "%0${#tracks}d" $j`
rm -f "${num}.$title.flac"
((j++))
all_titles=${all_titles#*|}
all_artists=${all_artists#*|}
done

shntool split -f "$file_cue" -t '%n.%t' -o flac "$file_ape" 2>&1 | \
gawk -vvar=$tracks 'NR>=1 {print "#正在转换...";print (NR-1)*100/var};{fflush();}' | \
zenity --title="进度" --text="正在转换..." --progress --auto-kill --auto-close

all_titles=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

all_artists=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/PERFORMER/){print $i;j=1}}};\
j==0 {print "PERFORMER \"#####\""}' "$file_cue" | gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

album=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR==1 {printf("%s",$2)}'`

j=1; while [ -n "$all_titles" ]; do
title=${all_titles%%|*}
artist=${all_artists%%|*}
num=`printf "%0${#tracks}d" $j`
if [ "$title" != "#####" ]; then metaflac --set-tag=TITLE="$title" "${num}.$title.flac"; fi
if [ "$artist" != "#####" ]; then metaflac --set-tag=ARTIST="$artist" "${num}.$title.flac"; fi
if [ "$album" != "#####" ]; then metaflac --set-tag=ALBUM="$album" "${num}.$title.flac"; fi
metaflac --set-tag=TRACKNUMBER="$j" "${num}.$title.flac"
#if [ "$title" != "#####" ]; then mv "${num}.$title.flac" "${num:1}.$title.flac"
#else mv "${num}.$title.flac" "${num:1}.NoTitle.flac"; fi
((j++))
all_titles=${all_titles#*|}
all_artists=${all_artists#*|}
done

zenity --info --text="结束。"
exit 0

 

Fedora下的ATI显卡官方驱动的拯救

在Fedora下玩ATI显卡官方驱动让人郁闷的是每次升级Kernel或是Xorg后都要重新安装显卡驱动。一个好的解决办法是使用rpmfusion的akmod-catalyst和xorg-x11-drv-catalyst(http://forums.fedoraforum.org/showthread.php?t=155503),但当由于一些错误操作或者软件冲突导致图形界面起不来时,本文就发挥作用了。

1. 以runlevel 3登录重新安装驱动

1.1 修改/etc/inittab

id:3:initdefault:

在Fedora15中引入了systemd,这使得我们要这样改:

ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

1.2 reboot

reboot

1.3 从新安装显卡驱动

./ati-driver-installer-11-5-x86.x86_64.run

2. 用live-user登录,强行卸载ati显卡驱动

2.1 以live-user登录,进入ati安装目录

[root@wjpc ~]# cd /media/_Fedora/usr/share/ati/
[root@wjpc ati]# ls
amdcccle          drv.list               lib64          preun_doc.sh
amd-uninstall.sh  fglrx-install.log      libGLdir.txt   preun_km.sh
ATI_LICENSE.TXT   fglrx-uninstall.sh     postun_cp.sh
cp.list           KernelVersionList.txt  postun_drv.sh
doc.list          km.list                postun_km.sh

2.2 将该目录下的*.sh和*.list文件中路径替换并卸载驱动

for i in `ls *.sh *.list`
do 
    echo $i
    mv $i $i.back
    cat $i.back | sed 's@/etc@/media/_Fedora/etc@g;s@/usr@/media/_Fedora/usr@g;s@/lib/modules@/media/_Fedora/lib/modules@g' > $i
done
chmod +x *.sh
./amd-uninstall.sh --force

2.3 reboot

reboot

 

TeX 快速参考手册

接触[tex]\TeX[/tex]排版系统已经两年了,其漂亮的排版带给了我无限的喜悦和点点自我成就感,但在这好看的TeX文档背后有着我辛酸的学习历程。需要学习的东西太多了,我又是那种懒得一点点地去研究文档的人,所以不知道什么时候我就习惯了Google各种TeX信息,然后常常被Google带到http://bbs.ctex.org社区。相信很多\TeX老手或是新手都有相同的经历吧,于是我决定写一份快速参考手册。这本手册的一大特点便是快速定位需要的信息,主要按照“代码——效果”的对应方式来组织,希望给众多\TeX爱好者一点帮助。

目前这份文档还在起草。敬请关注。