|
于是我嘗試的制作了一個簡單的使用Gallery來代替TabHost的例子, 確實夠簡單的,自娛自樂.....僅供參考
使用BroadcastReceiver來切換不同的Tab
沒有詳細(xì)研究SDK中的TabHost實現(xiàn)機制, 使用起來還是有些不方便的地方
最近工作比較忙,沒太多時間學(xué)習(xí)android,將來會慢慢改善, 先湊合用, 拋塊磚先, 各位有玉的使勁砸, 金條也行
學(xué)習(xí)android的練習(xí)小軟件.
制作文件管理器的初衷是發(fā)現(xiàn)G1上并沒有隨系統(tǒng)附帶文件瀏覽軟件,
考慮到電子書,媒體播放器或其它一些軟件會使用到文件瀏覽,選擇文件或文件夾, 所以先做了這個文件管理工具并封裝一些參數(shù)供第三方程序調(diào)用
應(yīng)用很簡單, 只是把手機和SD卡中的文件列出來, 支持圖片和mp3的簡單預(yù)覽. 未來會有更多的功能擴充進(jìn)來. 歡迎大家試用并提出意見.
--------------------------------------------------------4月更新0.3版 --------------------------------------------------------------------
自從上次更新后工作太忙,半年沒玩兒ANDROID了, 最近剛剛閑下來, 繼續(xù)完善文件管理器
順便封裝了一些其它的widget, 整理后再發(fā)上來
看著網(wǎng)上鋪天蓋地的各種android應(yīng)用, 再看看我這個小破軟件, 實在有點拿不出手, 但既然做了就得不斷完善下去
目標(biāo)是做一個封裝widget的集合, 方便開發(fā)者使用
1, 使用線程和handler message機制讀取文件列表, 提升軟件性能
2, 解決文件列表多次滾動后速度下降的問題
3, 打開文件使用手機關(guān)聯(lián)的應(yīng)用
4, 增加文件縮略圖顯示
--------------------------------------------------------10月27日更新0.2版 --------------------------------------------------------------------
1. 0.2版主要增加了一些使用者的功能, 增加了收藏夾功能, 方便用戶快速的瀏覽到經(jīng)常訪問的文件或文件夾
2. 修改了一些for developer的bug
-------------------------------------------------------- 0.1版 --------------------------------------------------------------------
-------------------------------------------------------------------- for developer --------------------------------------------------------------------
G1上并沒有隨系統(tǒng)附帶文件瀏覽軟件, 考慮到電子書,媒體播放器或其它一些軟件會使用到文件瀏覽,選擇文件或文件夾,
所以先做了這個文件管理工具并封裝一些參數(shù)供第三方程序調(diào)用,可以做為插件形式使用
把文件管理器封裝起來并使用intent機制設(shè)置瀏覽參數(shù)和調(diào)用
目前暫不支持多文件選擇, 將在下一版中發(fā)布
調(diào)用程序示例
通過startActivityForResult調(diào)用文件管理器, 并使用上下文菜單選擇文件或文件夾
點擊"選擇"后, 返回到調(diào)用程序
摘要: 1. 0.2版主要增加了一些使用者的功能, 增加了收藏夾功能, 方便用戶快速的瀏覽到經(jīng)常訪問的文件或文件夾
大學(xué) (一) http://www.aygfsteel.com/uiiang/archive/2007/05/27/120342.html
康誥曰:“克明德。”大甲曰:“顧諟天之明命。”帝典曰:“克明峻德。”皆自明也。
湯之盤銘曰:“茍日新,日日新,又日新。”康誥曰:“作新民。”詩曰:“周雖舊邦,其命惟新。”是故君子無所不用其極。
康誥說:“能夠弘揚光明的品德。”太甲說:“念念不忘這上天賦予的光明稟性。”堯典說:“能夠弘揚崇高的品德。”這些都是說要自己弘揚光明正大的品德。
商湯王刻在浴盆上的箴言說:“如果能夠有一天自新,就應(yīng)保持天天自新,永遠(yuǎn)不斷自新。”康誥中說:“鼓勵人們棄舊圖新。”詩經(jīng)中說:“周朝雖然是古老的國家,但卻稟受了天命,自我更新。”所以,品德高尚的人無處不追求完善。
軟件開發(fā)乃至IT行業(yè)的更新速度極快,今天出個JAVA,明天出個.net,后天又來個什么ruby。所以咱們要不斷的學(xué)習(xí),不斷的進(jìn)步才能跟上技術(shù)的更新速度,才能不被淘汰。
但什么叫自新,這個自新不是說今天出了JAVA,呼啦呼啦的就全買thinking in java去了,明天出了.net又呼啦呼聽的全安.net 2005去了。自新是一個發(fā)掘和汲取的過程。別一天到晚的看不起struts嫌他麻煩,瞧不上hibernate嫌他浪費性能。人家的技術(shù)能在全世界流行,必然有過人之處。想想他為什么能在全世界流行,他體現(xiàn)的是哪種設(shè)計思想。多學(xué)學(xué)人家的優(yōu)點,想辦法把這些優(yōu)點用在自己的代碼上。
詩云:“邦畿千里,惟民所止。”詩云:“緡蠻黃鳥,止于丘隅。”子曰:“于止,知其所止,可以人而不如鳥乎!”
詩云:“穆穆文王,于緝熙敬止!”為人君,止于仁;為人臣,止于敬;為人子,止于孝;為人父,止于慈;與國人交,止于信。
詩經(jīng)說:“京城及其周圍,都是老百姓向往的地方。”詩經(jīng)又說:“‘緡蠻’叫著的黃鳥,棲息在山丘的角落上。”孔子說:“連黃鳥都知道它該棲息在什么地方,難道人還能不如一只鳥兒嗎?”
詩經(jīng)說:“品德高尚的文王啊,為人光明磊落,做事始終莊重謹(jǐn)慎。”做國君的,要做到仁義;做臣子的,要做到恭敬;做子女的,要做到孝順;做父親的,要做到慈愛;與他人交往,要做到講信用。
經(jīng)常看到論壇上有人抱怨,自己的工作單調(diào)只不過是復(fù)制粘貼別人的代碼。可你有沒有想過為什么去復(fù)制粘貼,是因為他的代碼寫得太好了,放到哪里都能用?還是架構(gòu)設(shè)計得不合理,需要重構(gòu)。如果是好,他好在哪里,他為什么這么寫。如果不好,又不好在哪里,應(yīng)該怎么改,如果是你來設(shè)計,你又會怎么做來避免犯這樣的錯誤。
很多人抱怨自己在一個小公司不得志,可有沒有想過為什么在這種小公司。你有沒有給IBM,google這樣的公司投過簡歷,投了簡歷有沒有面試,面試了這些大公司為什么不要你,而是錄用了別人。要擺正心態(tài),找到自己的位置。你可以覺得不得志,但要有真才實學(xué)。龐統(tǒng)那么大的才,到了劉備手下不還是先被發(fā)配去當(dāng)縣令。是金子終要發(fā)光的,后來劉備不也終于認(rèn)識到龐統(tǒng)的才能并委以重任嗎。可如果你啥都不會,看這個看不起,瞧那個瞧不上。一天到晚就知道上網(wǎng)聊天打游戲泡MM。就算到了曹營也就當(dāng)個蔣干,成事不足敗事有余。要本著謙虛學(xué)習(xí)的態(tài)度來對待工作對待周圍的人,要學(xué)會從別人身上發(fā)現(xiàn)優(yōu)點。
詩云:“瞻彼淇澳,菉竹猗猗。有斐君子,如切如磋,如琢如磨。瑟兮僩兮,赫兮喧兮。有斐君子,終不可諠兮!”如切如磋者,道學(xué)也;如琢如磨者,自修也;瑟兮僩兮者,恂栗也;赫兮喧兮者,威儀也;有斐君子,終不可諠兮者,道盛德至善,民之不能忘也。
詩經(jīng)說:“看那淇水彎彎的岸邊,嫩綠的竹子郁郁蔥蔥。有一位文質(zhì)彬彬的君子,研究學(xué)問像加工骨器一樣,不斷切磋;修煉自己像打磨美玉,反復(fù)琢磨。他莊重而開朗,儀表堂堂。這樣的一個文質(zhì)彬彬的君子,真是令人難忘啊!”
這里所說的“加工骨器,反復(fù)琢磨”,是指做學(xué)問的態(tài)度;“像打磨美玉,反復(fù)琢磨”,是指自我修煉的精神;說他“莊重而開朗”,是指他內(nèi)心謹(jǐn)慎而有所戒懼;說他“儀表堂堂”,是指他非常莊重;說“這樣一個文質(zhì)彬彬的君子,真是令人難忘啊!”是指由于他品德非常高尚,達(dá)到了最完善的境界,所以使人難以忘懷。
不要為了工作而工作,為了寫代碼而寫代碼。既然干了這行了就要干好,即使不求名揚天下,至少要也對得起自己這么多年的努力吧。我?guī)н^幾個手下,我每次安排任務(wù)后都會說:認(rèn)真干活,只要干完活,你去打CS我都不管。我說這話的目的是不想給大家太多壓力,大家都挺辛苦都不容易。只要干完活,該聊天該上網(wǎng)隨便你。可如果真正會學(xué)習(xí)的人,就應(yīng)該明白,自己干的那些活,永遠(yuǎn)是別人安排的。要想多學(xué)東西,還得根據(jù)自己的特點和能力補充知識。自己寫的代碼是不是已經(jīng)無懈可擊了,有什么地方值得優(yōu)化,實現(xiàn)方法是不是可以用更優(yōu)雅的方式。
總之,心中要想著不斷進(jìn)步,要么不做,做了就要做到更好。
這兩三年來,生活一直被工作占據(jù)著,習(xí)慣了用工作來充實的生活,閑下來卻非常無聊。即使不加班的時候,回到家里也不知道干點什么好,于是下意識的又開始寫代碼,學(xué)新技術(shù)。這樣的生活單調(diào)乏味,人也變得無趣起來。于是決定,從今天起在家休息的時間,不再寫代碼。重新找回以前的興趣,豐富業(yè)余生活。想起以前上學(xué)時住校,閑得沒事做就到圖書館借書,反正呆著也是呆著,那會兒什么書都看,從古今中外概不排斥。可惜工作后再沒這閑心了。今天休息,在家翻了翻書柜,讀一讀大學(xué)。藍(lán)色字是原文,紅色的字是我的一些理解,如果有錯的地方,還望大家指正,謝謝。
大學(xué)之道,在明明德,在親民,在止于至善。知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始,知所先后,則近道矣。
大學(xué)的宗旨在于弘揚光明正大的品德,在于使人棄舊圖新,在于使人達(dá)到最完善的境界。知道應(yīng)達(dá)到的境界才能志向堅定;志向堅定才能夠鎮(zhèn)靜而不驕躁;鎮(zhèn)靜而不驕躁才能夠心安理得;心安理得才能夠思慮周詳;思慮周詳才能夠有所收獲。每樣?xùn)|西都有根本和枝末,每件事都有開始和終結(jié)(還記得黑客帝國3里,先知說的那句話嗎?Everything that has a beginning has an end。大概先知也讀過大學(xué))。明白了這本末始終的道理,就接近事物發(fā)展的規(guī)律了。
在軟件開發(fā)過程中,我們經(jīng)常會遇到很多問題。其實每一個客戶需求都是一個大問題,是一堆問題的總合。這就需要我們在編程之前,明白自己要做什么(知止而后有定),要認(rèn)真的分析我們的需求和目標(biāo)。這樣才能不被一堆稀奇古怪的問題嚇倒,能夠讓我們從容的面對這些工作(定而后能靜)。初學(xué)者經(jīng)常犯一個錯誤,就是不分析問題。調(diào)試出錯代碼的時候,經(jīng)常是一遍一遍的運行錯誤的代碼,然后看著報錯信息發(fā)呆。而不知道如何分析錯誤所在,也不知道在哪里打印幾行標(biāo)志來找出出錯的代碼的位置。于是越看越亂,越亂越心慌。這時候就需要先靜下心來不要被一個報錯信息嚇到(靜而后能安)。只有靜下心來,才能想到其實任何報錯信息,都是有根有據(jù)的,只要根據(jù)提示信息中給出的線索,或者在代碼中打印幾條標(biāo)志信息,或者根據(jù)你輸入的信息運行的類或方法去推理,就能夠找到出錯的地方(安而后能慮)。當(dāng)你做到這一步,你就找到問題的所在了,經(jīng)驗值又增加了(慮而后能得)。
就像剛才所說,任何代碼任何錯誤,都是有根有據(jù)不會憑空出現(xiàn)。我們軟件開發(fā)人員的工作,就是解決一個一個的問題。只要能把這些問題分析得當(dāng),條理清晰的列出來,就離成功不遠(yuǎn)了。
很多初學(xué)編程或剛剛工作的人都會報怨,看不懂代碼,不知道業(yè)務(wù)邏輯所以沒法工作。其實做事的時候,不要一上來就想一次解決問題,要循序漸進(jìn),你連代碼出錯出在哪里都不知道,怎么去修改錯誤。要先找到出錯的代碼是哪個文件,是從哪里進(jìn)入的,又經(jīng)過哪些方法的調(diào)用,要明白這些代碼的業(yè)務(wù)邏輯。如果不明白就先注釋起來。初學(xué)的時候要學(xué)會分析問題的方法,找到問題的關(guān)鍵點,每行代碼其實都是在調(diào)動數(shù)據(jù),但有些調(diào)動是對當(dāng)前業(yè)務(wù)沒有影響的這些可以先排除掉,那些會對后面的業(yè)務(wù)邏輯產(chǎn)生影響的,都是問題的關(guān)鍵點。初學(xué)者不要嫌麻煩,遇到這些關(guān)鍵點一定要注釋。就算不明白整個的業(yè)務(wù)邏輯,單獨一行代碼的意思總該明白吧,無非就是添刪查改和方法調(diào)用嘛。當(dāng)你把這些代碼通讀一遍并都注釋后,就可以把這些注釋當(dāng)成讀小說一樣讀下來,再復(fù)雜的業(yè)務(wù)邏輯也應(yīng)該能讀明白了。
古之欲明明德于天下者,先治其國;欲治其國者,先齊其家;欲齊其家者,先修其身;欲修其身者,先正其心;欲正其心者,先誠其意;欲誠其意者,先致其知;致知在格物。
物格而后知至,知至而后意誠,意誠而后心正,心正而后身修,身修而后家齊,家齊而后國治,國治而后天下平。
古代那些想在天下弘揚光明正大品德的人,先要治理好自己的國家;要想治理好自己的國家,先要管理好自己的家庭和家族;要想管理好自己的家庭,先要修養(yǎng)自身的品性;要想修養(yǎng)自身的品性,先要端正自己的心思;要想端正自己的心思,先要使自己的意念真誠;要想使自己的意念真誠,先要使自己獲得知識;獲得知識的途徑在于認(rèn)識和研究萬事萬物。通過對萬事萬物的認(rèn)識,研究后才能獲得知識;獲得知識后意念才能真誠;意念真誠后心思才能端正;心思端正后才能修養(yǎng)品性;品性修養(yǎng)后才能管理好家庭和家族;管理好家庭后才能治理好國家;治理好國家后天下才能太平。
咱們先不說什么治國之論,單就軟件開發(fā)這個行業(yè)來講。很多人都在抱怨公司小掙錢少管理混亂感覺屈才之類的。可你真的有這么大才嗎,那些剛剛畢業(yè)的學(xué)生,在學(xué)校里玩兒了四年。到公司時什么都不會白紙一張,就像我以前發(fā)過的一個文章里說的。都不用說敬業(yè)精神,當(dāng)你連最起碼的認(rèn)真工作都做不到時,還有什么資格說公司給你的工資太少,對不起你的工作量。
要么別做這份工作,別接受這個任務(wù),既然做了就要做好。不要把工資少當(dāng)成不認(rèn)真工作的借口。你再不認(rèn)真工作,該被剝削的地方誰也跑不了,老板還是要賺他的錢。但工作經(jīng)驗是自己的呀!!! 軟件開發(fā)這個工作需要不斷學(xué)習(xí)不斷的進(jìn)步才能保持自己的位置。而軟件開發(fā)正是需要認(rèn)真工作,才能體會出其中的奧妙,體會其中的精華所在。要想讓自己將來有好的發(fā)展,就要先做到自律,休息的時候當(dāng)然要玩兒,但上班的時候就要以工作為重。要想自律就要提高自身修養(yǎng),提高自己對工作重要性的認(rèn)識。要想提高自身修養(yǎng),就要端正自己的心態(tài),上班的時候不要總?cè)ハ胧裁创巴獾母邩墙稚系拿琅R攵苏膽B(tài),就要讓自己的意念真誠,要真心的認(rèn)真負(fù)責(zé)的對待自己的工作,對待自己手中寫出的每一行代碼。這時就需要先獲得知識,要學(xué)會這些技術(shù),不然什么都不懂的人只能復(fù)制粘貼別人的代碼,卻不知道這些代碼在干什么,往往復(fù)制錯了自己卻混然不知。
自天子以至于庶人,壹是皆以修身為本。其本亂而末治者否矣,其所厚者薄,而其所薄者厚,未之有也!
上自國家君王,下至平民百姓,人人都要以修養(yǎng)品性為根本。若這個根本被擾亂了,是不可能治理好家庭甚至國家天下的。不分輕重緩急,本末倒置卻想做好事情,這也同樣是不可能的。
就像剛才說的,剛工作的人工資少工作累這是事實情況,大家都是從這一步走過來的。只有經(jīng)歷過這一步,才能明白認(rèn)真工作和提高工作效率的重要性。要想提高工作效率,就要提高自身能力,就要積累工作經(jīng)驗。可工作經(jīng)驗這東西并不是說來就來的,需要自己刻苦努力才能得來。并不是說明天把你送到IBM或者什么大公司,給你好多好多錢,給你換了一個超美的工作環(huán)境。你就突然什么都會了什么都懂了。當(dāng)你什么都不會還凈犯錯的時候,真的到了這種環(huán)境中,周圍都是高手,你還好意思和別人打招呼嗎?
? 很久沒有上blogjava了, 自從離職后, 從過春節(jié)到現(xiàn)在, 家里發(fā)生了很多事, 搞得我暈頭轉(zhuǎn)向. 一直沒有去找工作. 最近終于穩(wěn)定下來.?
轉(zhuǎn)自:http://mailboxpublic.googlepages.com/ubuntu%E6%98%AF%E6%80%8E%E6%A0%B7%E7%BB%83%E6%88%90%E7%9A%84
這篇文章在互聯(lián)網(wǎng)上被廣泛轉(zhuǎn)載,但是很多都不完整,誤導(dǎo)新手。同時有許多人根本不尊重作者的辛勤勞動,沒有給原文署名。因此,我把它放到googlepages來,作為正式的文章。如果有商業(yè)用途,請聯(lián)系本人:yulewang \at gmail \dot com
?[轉(zhuǎn)載請保持原樣,請勿擅自修改,以免誤導(dǎo)新手]
yulewang 翻譯
整理
二十一世紀(jì)到了,每個人都強調(diào)自己的個性,于是一種叫做DIY的東西悄然興起。
操作系統(tǒng)作為全人類智慧的結(jié)晶,自然DIY起來難度極大,因而DIY出一個操作系統(tǒng)成就感絕對比買宜家的東西的成就感大。
為了不至于從頭開始編寫一個操作系統(tǒng),我們當(dāng)然把采用現(xiàn)成的操作系統(tǒng)作為一個底線。
當(dāng)然,我們可以通過LFS讓我們爽到底,但是,能夠做到LFS的人可真的是鳳毛麟角。而且更重要的是LFS簡直在挑戰(zhàn)我的忍耐程度。
我的這篇文章,教大家如何DIY一個自己的ubuntu發(fā)行版。在非常節(jié)省時間的情況下,達(dá)到耍酷的目的。
就好比LFS一樣,我們需要一個創(chuàng)作基地。我們首先建立一個變量。建立這個變量的好處很明顯,即使你不用~/diy_ubuntu這個目錄,一樣可以照著這個文章繼續(xù)做下去。
$ export WORK=~/diy_ubuntu
$ mkdir -p $WORK
然后我們把光盤鏡像文件掛到/mnt
$ sudo mount -t iso9660 -o loop dapper-live-i386.iso /mnt
$ cd $WORK
復(fù)制文件光盤文件
$ mkdir ubuntu-livecd
$ cp -a /mnt/. ubuntu-livecd
$ chmod -R u+w ubuntu-livecd
$ sudo umount /mnt
由于光盤中包含了很多windows下面的自由軟件,我們來把不必要的文件刪除。當(dāng)然你可以保留。
$ rm -rf $WORK/ubuntu-livecd/programs
把光盤中的壓縮文件掛起來,這個樣子以后你可以在$WORK/old目錄中看到一個完整的linux操作系統(tǒng)的目錄。
$ mkdir $WORK/old
$ sudo mount -t squashfs -o loop,ro $WORK/ubuntu-livecd/casper/filesystem.squashfs $WORK/old
我們建立一個2GB大小的文件系統(tǒng),然后把這個文件當(dāng)作一個設(shè)備文件格式化,結(jié)果系統(tǒng)給出了一個警告,別理會它,選擇是就是。
$ sudo dd if=/dev/zero of=$WORK/ubuntu-fs.ext2 bs=1M count=2147
$ sudo mke2fs $WORK/ubuntu-fs.ext2
然后我們把這個空文件系統(tǒng)掛起來。
$ mkdir $WORK/new
$ sudo mount -o loop $WORK/ubuntu-fs.ext2 $WORK/new
復(fù)制linux操作系統(tǒng)的文件.由于我們事先得到的linux是壓縮的,所以我們把它解壓了。
$ sudo cp -a $WORK/old/. $WORK/new
當(dāng)然現(xiàn)在$WORK/old就沒有用處了。廢掉它
$ sudo umount $WORK/old
我們首先進(jìn)入剛才得到的那個操作系統(tǒng)
$ sudo cp /etc/resolv.conf $WORK/new/etc/
$ sudo mount -t proc -o bind /proc $WORK/new/proc
$ sudo chroot $WORK/new /bin/bash
現(xiàn)在你就進(jìn)入系統(tǒng)了,高喊l(fā)inux for human beings,大煉ubuntu,想干什么就干什么。
# vi /etc/apt/sources.list #選擇適合你的源
# apt-get update
# apt-get dist-upgrade
# apt-get install 你想裝的軟件
# apt-get clean
.... #更多的配置
最后離開你的那個操作系統(tǒng)
# exit
$ sudo umount $WORK/new/proc
$ sudo rm $WORK/new/etc/resolv.conf
現(xiàn)在你已經(jīng)回到了你的初始狀態(tài)中
把manifest重新整一遍
$ sudo chroot $WORK/new dpkg-query -W --showformat='${Package} ${Version}\n' > $WORK/ubuntu-livecd/casper/filesystem.manifest
然后做一下“磁盤清理”
$ sudo dd if=/dev/zero of=$WORK/new/dummyfile
$ sudo rm $WORK/new/dummyfile
重新壓縮系統(tǒng)
$ sudo rm $WORK/ubuntu-livecd/casper/filesystem.squashfs
$ cd $WORK/new
$ sudo mksquashfs . $WORK/ubuntu-livecd/casper/filesystem.squashfs
你的改動都保存了。現(xiàn)在把$WORK/new廢掉
$ cd $WORK
$ sudo umount $WORK/new
把文件的md5重新算一下
$ cd $WORK/ubuntu-livecd
$ sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
建立光盤鏡像,命令很長,忍受著點。
$ cd $WORK
$ sudo mkisofs -o ubuntu-new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "My Cool Ubuntu Live CD" -cache-inodes -J -l ubuntu-livecd
然后你就可以用iso把光盤燒了
然后你就可以在別人前面耍酷了。最后,王子和公主過著幸福的生活
nothing but the script I used:
#install Mysql
apt-get install mysql-server
#install Ruby and relative
apt-get install irb libdbm-ruby1.8 libgdbm-ruby1.8 libmysql-ruby1.8 libmysqlclient14 libopenssl-ruby1.8 libruby1.8-dbg mysql-common ri ri1.8 ruby1.8-dev
#install rubygems
wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
tar zxfv rubygems-0.9.0.tgz
cd rubygems-0.9.0
ruby setup.rb
gem update –system
#install Rails and dependencies
gem install rails –include-dependencies
#before install Mongrel,
apt-get install install build-essential #we need it to compile mongrel and Sqlite3
#intall Mongrel
gem install mongrel –include-dependencies
#install Sqlite3
apt-get install sqlite3 swig libsqlite3-ruby libsqlite3-dev
gem install sqlite3-ruby #compile this need libsqlite.h
#install Lighttpd
apt-get install lighttpd
some useful link
http://mongrel.rubyforge.org/docs/lighttpd.html
http://fo64.com/articles/2005/10/20/rails-on-breezy
http://scottstuff.net/blog/articles/2006/07/23/typo-installer
轉(zhuǎn)自:http://www.urbanpuddle.com/articles/2006/06/10/install-ruby-rails-on-ubuntu-dapper-drake
This is a small guide I wrote up to installing Ruby on Rails on Dapper Drake. It covers getting lighttpd running to support both rails and php which will be useful to anyone who likes to use phpmyadmin along with ruby on rails. It's similar to the article I wrote earlier for Arch Linux except modified for Ubuntu's Dapper Drake release.
1. Make sure the universe repository in /etc/apt/sources.list is uncommented:
deb http://us.archive.ubuntu.com/ubuntu dapper universe
deb-src http://us.archive.ubuntu.com/ubuntu dapper universe
2. Make sure you are up to date:
sudo apt-get update
sudo apt-get dist-upgrade
3. Install the ruby base packages:
sudo apt-get install ruby ri rdoc mysql-server libmysql-ruby
4. We need to grab the latest ruby gems from rubyforge. You may need to modify this command if a version after 0.90 is available.
sudo wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
tar -xvzf rubygems-0.9.0.tgz
cd rubygems-0.9.0
sudo ruby setup.rb
5. Now let's install Ruby on Rails!
sudo gem install rails --include-dependencies
6. We have Rails but we still need lighttpd and mysql. I've thrown in PHP too in case you want to manage your database with phpmyadmin like I do. Let's grab all the packages, shall we?
sudo apt-get install lighttpd php5-cgi php4-cgi php5-mysql php5-mysqli php4-mysql libfcgi-dev libfcgi-ruby1.8
7. Modify your /etc/lighttpd/lighttpd.conf file to set up your domains. Be careful because by default Ubuntu maps all the images so that they are taken from /usr/share/images instead of your/rails/root/public/images so if you're wondering why your rails app is working but your images aren't being displayed this is why. You can take out the offending code in your lighttpd.conf or just put your images in /usr/share/images.
8. Time to enable some modules for lighttpd. There are others that you may need but they should be enabled in your lighttpd.conf. Personally, I'm not a fan of enabling modules two different ways but I'm sure this will get cleaned up eventually.
sudo /usr/sbin/lighty-enable-mod fastcgi
sudo /usr/sbin/lighty-enable-mod proxy
sudo /etc/init.d/lighttpd force-reload
9. Let's make sure that there are no errors by stopping lighttpd and then starting it manually:
sudo /etc/init.d/lighttpd stop
sudo lighttpd -f /etc/lighttpd/lighttpd.conf
If you have errors there make sure you take a look and try to address them! The output you see will be your best bet in getting help from somebody on one of the forums.
10. Install some basic gems you might need to run your rails app:
sudo gem install actionmailer
sudo gem install activesupport
sudo gem install actionpack
sudo gem install actionwebservice
前幾天在我的blogjava上和CSDN上發(fā)過一個帖子: 說一說編程惡習(xí).
http://community.csdn.net/Expert/topic/5091/5091887.xml
http://www.aygfsteel.com/uiiang/archive/2006/10/16/75502.html
幾天的時間收到了很多網(wǎng)友的回復(fù).
我發(fā)這個帖子時, 并不是想討論技術(shù)問題, 也不是為了抱怨, 只是想以另一種方式, 來提醒一下編程的初學(xué)者, 和一些所謂"經(jīng)驗豐富"的老程序員. 因為我發(fā)現(xiàn)傳統(tǒng)的寫一篇編程規(guī)范的文檔, 似乎并不能引起大家足夠的重視. 垃圾代碼仍然一出再出.
我在帖子中所說的問題, 也并不需要太多的技術(shù)經(jīng)驗和深厚的專業(yè)知識. 都是一些隨手而來的小問題, 解決這些問題的方法只需要工作時認(rèn)真負(fù)責(zé), 多動動腦子就行了.
在帖子的回復(fù)中, 有幾個回復(fù)讓我很在意:
==================================================================
錢給的太少,能對付過去就完了
社會上什么行業(yè)不是這樣,能對付就行了 。
要改變這種情況, 那還要上邊有改變的想法,改善一下工作環(huán)境,等等。 。
老板們吃的是良心,拉的是思想
我們那么認(rèn)真干啥
=====================================================================
我對這種說法非常的不贊同, 代碼寫的再差, 老板還是要賺他的錢, 該被剝削還是跑不了.
可如果把這個當(dāng)成不認(rèn)真工作的理由, 那就只能永遠(yuǎn)自己吃虧了.
如果總是這么不認(rèn)真工作, 不養(yǎng)成良好的工作習(xí)慣, 自已思考的習(xí)慣, 那就永遠(yuǎn)不能進(jìn)步
只能當(dāng)一輩子代碼民工, 一輩子給這種垃圾老板打工.
要明白一點, 好的編程習(xí)慣, 思考能力, 都是在平時工作當(dāng)中, 一點一滴的積累起來的.
并不是當(dāng)有人給了你一個好的工作環(huán)境后, 想變出來就能立刻變出來的.
老板對不起咱們是另一回事, 但自己是不是能對得起自己, 那就看你自己的想法了
態(tài)度決定一切
????????
最近在做一個汽車銷售系統(tǒng)的改善工作,
這個系統(tǒng)已經(jīng)運行兩年了,
兩年來,
客戶不斷的提出新需求,
系統(tǒng)也在不斷的改來改去。
這次輪到我來改它了。
?
想想
N
年前初學(xué)編程的時候,
書上,
網(wǎng)上,
雜志上不斷的在說,
要養(yǎng)成良好的編程習(xí)慣。
然后還給出了
N
長的一大篇文章來介紹一些編程規(guī)范。
我這個人是很懶的,
大概的看了一下就過去了。
沒有特意的記什么。
好在我這個人也不是特別的懶,
對自己的工作也是很上心。
編程的時候盡可能做到更好。
性能功能能考慮到的都要做到最好。
?
慢慢的也養(yǎng)成了一些編程的習(xí)慣,
?
時間長了,
下意識的就去遵守一些模式,模范之類的東西了。
????????
有了這些習(xí)慣,
再看這次修改的系統(tǒng),
真的是生可忍熟不可忍了。
?
這次我也不說什么編程規(guī)范了,
我就說說這些編程惡習(xí)
。
????????
一,
?
程序沒有注釋
??????
注釋
!!
注釋
!!!
如果只是打印了一個
HELLO WORLD
,
您不注釋那也就算了,
如果是只有一兩百行的小功能類您不注釋,
那我也忍了,
可是
3000
多行一個類的業(yè)務(wù)邏輯代碼,
您老人家還不注釋
!!!??
你
TM
讓我怎么去改代碼,
?
一點業(yè)務(wù)邏輯的說明都沒有,
我改代碼的時候,得一邊用
DEBUG
調(diào)試,
一邊替他加注釋。
然后才能進(jìn)行自己的工作。
幾千行的一個類,
?
一行注釋都沒有,
你
TM
就不覺得顏色單調(diào)了點嗎
?
??????
二,
?
不遵守基本的編程約定
??????
變量名大小寫混亂,
明明是變量,
非要完全大寫,
要不就大寫開頭。
要不就是方法名全是大寫,
最牛
B
的一個方法是用中文做方法名,
你丫這時候想起打中文來了,
累不累呀。
?????? 還有人用拼音做變量名方法名,就算您英文不好,稍微查一下金山詞霸行不行,現(xiàn)在百度和 GOOGLE 都有翻譯功能,稍微查一下英文,也當(dāng)是學(xué)英語了行不行? 您實在太忙的話,不查也就算了,拼音就拼音吧,好賴也算是中國話的。 可是您就別用拼音簡寫了,英文簡寫還認(rèn)不出來呢, 您還用拼音的開頭字母當(dāng)變量名, 那我 TM 上哪兒猜去呀!
?????? 三, 不明就里的代碼
?????? 系統(tǒng)中經(jīng)常會出現(xiàn)這樣的代碼,尤其是在 controller 里居多:
?????? // some code
?????? If(flag .equals(“submit”)){
?????? model.getInfo();
}else{
?????? model.getInfo();
}
我沒寫錯, if 和 else 調(diào)用的方法完全一樣,大家也放心,我仔細(xì)的看過調(diào)用的代碼,調(diào)用的方法里,也沒有根據(jù)其它情況來改變他的運行路線。我就不明白為什么要做這個 if 判斷了。擔(dān)心會有什么特殊的業(yè)務(wù)邏輯, 所以也不趕隨便去改他。 猜了半天,感覺最理想的答案是寫代碼的人,擔(dān)心以后會有新的邏輯分支, 所以在這里用 if 預(yù)留了一個位置, 以后改的時候方便。
數(shù)日之后有幸遇見了當(dāng)初寫這代碼的老兄,問過之后立刻暈倒,原來是這個代碼是參照別的模塊的樣子寫的,別的模塊在這里都有 N 個程序分支,通過 if 來判斷后決定調(diào)用哪個 model 里的方法。但他這個模塊很簡單,沒有什么分支,就是調(diào)用那一個方法,但他寫代碼時,看別人的模塊在這里都進(jìn)行 if 判斷了,所以覺得自己也應(yīng)該判斷一下,于是就出現(xiàn)了上面這樣的代碼。
四, 面向過程式的編程方法
遇到過好幾次 2000 多行的方法,所有業(yè)務(wù)邏輯,一氣呵成,就用了一個方法搞定。如果是簡單的邏輯也就算了, 可是幾千行的代碼全放在一個方法里,一個類里有無數(shù)的重復(fù)代碼。 這回到好,重構(gòu)那本書沒白看, 現(xiàn)在有了實踐的機會了。
難道您自己調(diào)試的時候就不覺得麻煩嗎? 我在這里不想討論什么面向過程還是面向?qū)ο螅矂e和我說什么方法多了也不一定就是面向?qū)ο蟮乃枷搿?/span> 平時對自己寫的代碼多上點心, 大家都是在這行干了幾年的人了,把代碼寫的漂亮點有什么不好。
五, 代碼縮進(jìn)混亂
我們公司有規(guī)定,改代碼的時候,不許修改原有代碼的格式。 不管他多亂,也不許改。 我不明白這是為什么,也許是檢查代碼的人,要用文件比較工具吧。
但這下苦壞我了, 代碼的格式那叫一個亂。 有頂著行頭寫的, 有向后空了 N 格的,大概是寫代碼的人, 為了方便自己找到正在調(diào)試的那段代碼,所以把代碼的縮進(jìn)變得和其它代碼與眾不同吧。 那您調(diào)試完了到是重新排一下版呀, 這真的不累~~, 現(xiàn)在的 IDE 工具都有自動排版代碼的功能, 一個快捷鍵就搞定了,稍微勤快一點行嗎??
最 BT 的一段代碼是縮進(jìn)居然出了屏幕!!! 你吃飽了撐的呀, 沒事縮那么遠(yuǎn)干嗎, 我根據(jù)后臺輸出找了半天也沒找到那段代碼在哪兒, 原來是因為縮進(jìn)的太遠(yuǎn)了,不在屏幕范圍之內(nèi), 向右拉了半天滾動條才找到。 你丫是不是寫著代碼睡著了? 臉正好砸在 TAB 鍵上。
六, 多余的后臺輸出
好幾個循環(huán)嵌套在一起~~~ 也行, 就算是因為業(yè)務(wù)邏輯需要,沒別的辦法也將就了。 好幾個循環(huán)嵌套在一起查數(shù)據(jù)庫, 咱們最好還是開動一下腦筋, 看看有什么更好的辦法。如果還是沒別的辦法, 那也湊合了。 可這種情況您就別在后臺輸出 SQL 語句啦, 每次一執(zhí)行程序,成百上千個 SQL 語句在后臺輸出, 查數(shù)據(jù)庫才用了一兩秒,結(jié)果輸出這些 SQL 就用了半分鐘。 您自己就沒覺出程序慢在哪里嗎? 您調(diào)試程序的時候輸出一下也就算了, 提交到正式運行的環(huán)境時,就麻煩您,勞您大駕~~ 把那些輸出注釋掉吧,實在不行留幾個重要的輸出就行了。 讓這種代碼影響系統(tǒng)性能~~ 也太冤了吧。
七, 打腫臉充胖子
我也不知道這條算不算惡習(xí),也許不算,在有些人眼里還是好事。但也要看具體情況,經(jīng)常有些人寫代碼不喜歡用 IDE ,只用 EDITPLUS 這類工具。按常理說,初學(xué)者都應(yīng)該盡量用這些編輯器寫代碼,對加深學(xué)習(xí)印象有好處。也有人說高手不屑于用那些 IDE ,我少見多怪, 這種絕頂高手我沒見過。
但咱平時工作的時候,要的是效率,您不是那種高手就乖乖的用 IDE 吧。經(jīng)常見到有些人,為查一個方法的調(diào)用,搜來搜去的。真正的高手是工作效率最高的人,不是用最簡單工具的人。
//20061019 start
??????? 一些補充:?
可他把時間全耽誤在這上了, 這樣的工作效率, 加班都是活該的
//20061019 end
??? 今天就寫這么多,
大家還遇到過什么樣的編程惡習(xí),歡迎補充。
大家不要總是抱怨什么工資太少,工作量太大。工作效率這玩意兒是要經(jīng)驗來做基礎(chǔ),這沒錯,經(jīng)驗少也沒事。咱平時寫程序的時候多上點心,多對自己的代碼思考一下,多動動腦子。自然就能總結(jié)出最好的工作經(jīng)驗了,工作效率自然就提高了。
也別總是說什么
STRUTS
不好,
HIBERNATE
太慢,不屑去用它。人家的程序能在全世界流行,自然有他的過人之處。多讀讀他的代碼,學(xué)習(xí)一下他到底好在哪里,如何才能把這些優(yōu)點應(yīng)用到自己的代碼上。這才是最重要的。
?也許咱們寫不出什么高超的代碼技巧,寫不出什么華麗的算法,但如果能在一些習(xí)慣,細(xì)節(jié)上做到精益求精,那也對得起自己的代碼了。
??? 寫出上面這些代碼的人,如果你的工資真的很少,那我只能惋惜的說一句:你的工資是可憐了點,但看您寫的這代碼,連這點工資都不應(yīng)該給你!!