完全屬於我自己的Blog,運行在我的路由器H218N上.記錄著我想記錄的文字.

2012年9月

09月 21

LAMP程序员技能树(12年8月19日更新)

 

俗话说温故而知新,也正好培训需要,我最近也整理了一张LAMP程序员技能树,相比我所见过的Flash开发者技能树,这张图有以下特点:

  1. 由于同一门知识在不同阶段有不同的要求,为了具有更好的参考性,技能树将所有知识和技能点按1、初中级(工作1-2年)2、中高级(工作3-4年)和3、高级(工作3年+)分成三级,但除了网络与架构外其余的知识和技能点都只罗列到了第二级,原因是大多知识和技能到了一定程度后,都着眼于非常具体、非常细节的问题,很难全面罗列,也可能也因为我自身有限的眼界,至于网络与架构有第三级倒不是因为这些知识有多高深,而是相比其余知识,这些知识可以晚一些再掌握

    有回复不认同按工作年限分级,这里我补充说明一下:水平和年限肯定不是100%相关,这里标注年限只是为了让分级更感观,便于理解(2012年8月10日)

  2. 知识点附带资料与书籍推荐,蓝勾表示有网页资料,绿手表示有书籍推荐(查看flash版可直接链接到资料页),毕竟每个知识点只是简单几个字,人背景不同理解也不同,对着资料或参考书籍来看能更好的表达我的意图,同时也更能帮助到所需之人
  3. 全面性是这棵技能树的主要考虑之一,但不得不承认要完全掌握所有内容是非常不容易的事情,有些理想化,现实中往往还要考虑如你上级的要求、公司的需要等实际因素,能作为checklist发现问题,能让读者更了解自己的能力现状,那么制作技能树的目的也就达到了

 

编程语言共通知识

由于技能树涉及到多种编程语言,所以把共通部分以及编程基础单独提炼了出来

LAMPer技能树Flash版(全屏查看

 

LAMPer技能树图片版

最后,这张图刚完成不久,非常希望能得到大家的反馈和意见,我会不停地完善这棵技能树,希望它能为你带来帮助

原创文章,转载请注明出处:http://blog.cunsheng.me/?p=42

自己的server安全一点,不会丢失.

09月 10

自動備份transmission的resume文件的Shell腳本

自從在這個路由上架設了這個Blog,就不得不考慮穩定性的問題了。如果木有神馬意外的話,穩定性還是可以的。

但是,就在昨天,一個失誤,把路由器的電源短路了,然後掛在路由下的transmission,幾個大種子的resume都損壞了,混PT嘛,小水管就是為了多掛幾個種,多混點積分而已。

幾個10+G的,1個100+G的要重新Hash,用電腦Hash都費時了,更不說用只有500Mhz,木有磁盤控制器的路由器了,為此,看了下transmission的文檔,寫了這個腳本。

resume文件損壞了,只要用備份文件還原上去就不用重新校驗了,因為是已經下載好的種子,所以一般沒有問題,磁盤損壞除外。

#!/bin/sh
BAKDIR=/mmc/; #备份文件存放路径
RESUMEDIR=/mmc/root/transmission/resume; #resume文件所在路径
time=3; #停顿时间,如果备份失败,可以尝试加大停顿时间
resume=resume; #备份文件名,不包含扩展名.
#COMMAND="transmission-remote 127.0.0.1:9091 --auth=transmission登录用户:登录密码"
COMMAND="transmission-remote 127.0.0.1:9091";

$COMMAND -t $TR_TORRENT_ID  -S > /dev/null;
sleep $time;
if [ ! -e $BAKDIR/$resume.tar.bz2 ] && [ -e $BAKDIR/AddByResumeBaker ] ; then
	mv -f $BAKDIR/AddByResumeBaker $BAKDIR/AddByResumeBaker.old;
fi
if [ -e $BAKDIR/$resume ] ; then
	mv -f $BAKDIR/$resume $BAKDIR/$resume.old;
fi

if [ ! -e $BAKDIR/AddByResumeBaker ] ; then
	if [ -e $BAKDIR/$resume.tar.bz2 ] ; then
		mv -f $BAKDIR/$resume.tar.bz2 $BAKDIR/$resume.tar.bz2.old
	fi
	cd $RESUMEDIR ;
	tar -rf $BAKDIR/$resume ./;
	touch $BAKDIR/AddByResumeBaker;
elif [ -e $BAKDIR/$resume.tar.bz2 ] && [ -e $BAKDIR/AddByResumeBaker ] ; then
	RESUMEFILE=$TR_TORRENT_NAME.`echo $TR_TORRENT_HASH|cut -c1-16`.resume;
	cd $BAKDIR;
	tar -jxf $BAKDIR/$resume.tar.bz2;
	cd $RESUMEDIR ;
	tar -rf $BAKDIR/$resume ./$RESUMEFILE;
fi

cd $BAKDIR;
tar -jcf $BAKDIR/$resume.tar.bz2 ./$resume;
$COMMAND -t $TR_TORRENT_ID  -s > /dev/null;
rm -f $BAKDIR/$resume;
exit 0;

注意一下的是第6,7行,如果你的登錄transmission需要用戶名和密碼的話,勞煩這裡也要加上去。如果和我一樣,可以匿名登錄的話,就不用改了。

使用舉例:

將上述腳本保存為resumebaker.sh後,(如果用複製粘貼的,注意將換行符改成Unix的,可以用Notepad++)。

mv resumebaker.sh /opt/bin/
chmod +x  /opt/bin/resumebaker.sh

然後在transmission的配置文件settings.json中找到這兩行,(如果你的配置文件沒有這兩行,可能要升級transmission了)

    "script-torrent-done-enabled": true, 
    "script-torrent-done-filename": "/opt/bin/resumebaker.sh", 

true代表啟用 下載完成後執行腳本的功能,/opt/bin/resumebaker.sh代表每當一個種子下載完成後執行的腳本,也就是這個自動備份腳本。放到什麼路徑就填什麼路徑。

腳本會自動檢測是否存在備份文件,如果不存在備份文件,會備份所有resume文件,如果已經存在,則會將新下載完那個種子的resume文件增加到備份文件中。

 

Update:

部分嵌入式系統如Tomato,tar可能不完整,不支持 -r 參數,需要安裝完整版的tar。

Optware 上執行

ipkg install tar

Entware 上執行

opkg install tar

然後在腳本中的tar加上絕對路徑,如:

/opt/bin/tar