xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時注意才能保護(hù)別人,因為他們未必知道自己要什么····· |
目錄
一、增刪查改
二、驗證規(guī)則
三、事務(wù)管理
四、名字空間。參考:Yii數(shù)據(jù)庫操作——名字空間(named scopes)的三種用法
一、增刪查改
1,創(chuàng)建
$post = new Post;
$post->title = "";
$post->content = "";
$post->created_at = "CDbExpression('NOW()')";
$post->save();
(1) 插入后可立即獲得主鍵id。
$id = $post->id; // 前提是auto_increment
(2) 某一個字段的值為缺省值時,可以在models/Class.php中修改
Class Post extends CActiveRecord{
public $title = 'new title';
$post = new Post;
echo $post->title; // 輸出是: new title
}
(3) 使用CDbExpression
$post->create_time = new CDbExpression('NOW()');
2,查詢【待補(bǔ)充】
(1) 通過主鍵查詢
find("postID=:postID", array(':postID' => postID)
findByPk($id) // 單主鍵
(2) 通過非主鍵查詢
find("postID=:postID", array(':postID' => postID)
findAll( id = $id )
findAll( id IN ( $id ) )
3,更新【待補(bǔ)充】
先find,并將對應(yīng)字段賦新值,再保存
可以通過CActiveRecord::isNewRecord來判斷是新建,還是更新。
4,刪除
(1) 如果是一條記錄
先找到后刪除
$post=Post::model->findByPk(10);
$post->delete();
直接通過主鍵刪除(類級別刪除,不需要先載入記錄)
Post::model->deleteByPk(10);
(2) 如果是多條記錄(類級別刪除,不需要先載入記錄)
Post::model->deleteAll();
二、驗證規(guī)則
驗證規(guī)則(Data validation)發(fā)生在調(diào)用save()方法的時候。驗證是基于在rules()方法中的定義。
if( $post->save() ){
// 驗證通過
} else {
// 驗證失敗。通過getErrors()返回錯誤信息。
}
獲取用戶從表單提交的數(shù)據(jù)
$post->title = $_POST['title'];
$post->content = $_POST['content'];
$post->save();
如果多了,可以通過下面的方式減輕(alleviate)復(fù)雜程度:
$post->attributes = $_POST['Post'];$post->save();//類似于:foreach($_POST['Post'] as $name=>$value){ if($name is a safe attribute) $model->$name = $value;}
注意:里面的驗證檢驗非常重要,否則用戶可能繞過授權(quán)。
三、事務(wù)管理
dbConnection是CDbConnection的實例
官方文檔
$model = Post::model();$transaction = $model->dbConnection->beginTransaction();try{ $post = $model->findByPk(10); $post->title = 'new post title'; $post->save(); $transaction->commit();} catch (Exception $e){ $transaction->rollback();}
實際項目
$trans = Yii::app()->db->beginTransaction();try { $manufacturer = new Manufacturer(); $manufacturer->name = $name; $manufacturer->email = $email; $manufacturer->save(); $trans->commit();} catch (Exception $e) { $trans->rollback(); $this->response(array('status' => 1, 'msg' => $e->getMessage())); }
其實使用的時候跟凡客體的我是凡客或淘寶體的親一樣。
注:Yii::app()后面的db在../config/main.php中已配置
如果一切按計劃進(jìn)行,紅帽(Red Hat)將成為第一家年收入超過10億美元的開源軟件廠商。這對于開源軟件社區(qū)將是一個轉(zhuǎn)折點。開源軟件社區(qū)一直認(rèn)為他們基于社區(qū)的開發(fā)方法是可行的、甚至是優(yōu)越的、可替代傳統(tǒng)的軟件的開發(fā)方式。
紅帽CEO吉姆·懷特赫斯特(Jim Whitehurst)稱,我認(rèn)為,我們將看到產(chǎn)生技術(shù)創(chuàng)新的地方將發(fā)生一個根本的轉(zhuǎn)變,從幾家軟件公司的實驗室轉(zhuǎn)向龐大的開源軟件的努力。
隨著Linux、Apache Web server、Perl、Apache、Hadoop、OpenOffice、GIMP和幾十個其它的開源軟件計劃給商業(yè)性軟件帶來更大的壓力,開源軟件在過去的幾年里肯定給專有軟件世界帶來了混亂。但是,明天的開源軟件的重量級產(chǎn)品是什么?下面是在2012年需要密切關(guān)注的五個項目。這些項目可能構(gòu)成新的業(yè)務(wù)和新的行業(yè)的基礎(chǔ)。這些項目也可能是僅僅因為能夠更容易地或者更廉價地完成任務(wù)而受到了開發(fā)者和管理者的關(guān)注。
1.Nginx
在過去10年的大部分時間里,Web服務(wù)器軟件的選擇一直是穩(wěn)定的。Apache一直在大多數(shù)Web服務(wù)器上應(yīng)用,而微軟的IIS(互聯(lián)網(wǎng)信息服務(wù))用于許多其它的服務(wù)器。然而,在過去的幾年里,第三個進(jìn)入這個市場的Nginx的應(yīng)用一直在增長,因為這個軟件能夠輕松處理高容量的通訊。
據(jù)Nginx軟件開發(fā)人員預(yù)測,Nginx目前已經(jīng)在5000萬個不同的互聯(lián)網(wǎng)域名上運(yùn)行,大約占整個互聯(lián)網(wǎng)的10%。Nginx特別廣泛地應(yīng)用于通訊量非常大的網(wǎng)站,如Facebook、Zappos、Groupon、Hulu、Dropbox和WordPress。毫不奇怪,這個軟件的創(chuàng)建者伊戈爾·西索夫(Igor Sysoev)在2004年設(shè)計Nginx軟件的時候就是專門為處理大量同時使用網(wǎng)絡(luò)的用戶設(shè)計的,每臺服務(wù)器最多有1萬個連接。該公司共同創(chuàng)始人安德魯·阿萊克謝耶夫(Andrew Alexeev)稱,這是一個非常精細(xì)的架構(gòu)。Nginx公司提供商業(yè)版本的Nginx軟件。
即將到來的一年將是Nginx的一個好年景。Nginx去年從一些風(fēng)險投資公司那里獲得了300萬美元,其中包括戴爾CEO邁克爾·戴爾(Michael Dell)支持的風(fēng)險投資公司。Nginx與Jet-Stream合作為軟件廠商的CDN(內(nèi)容交付網(wǎng)絡(luò))軟件包提供Nginx軟件。該公司還與亞馬遜合作為AWS(亞馬遜Web服務(wù))云服務(wù)優(yōu)化Nginx軟件。
除了用于大型網(wǎng)站運(yùn)營之外,阿萊克謝耶夫預(yù)計Nginx將更廣泛地用于新興的云計算和共享的服務(wù)市場。他說,預(yù)計在明年推出的Nginx軟件的下一個重要的發(fā)布版將更適合共享的托管環(huán)境。這個軟件將能夠更好地應(yīng)對分布式拒絕服務(wù)攻擊并且將配置額外的安全功能。
2.OpenStack
OpenStack項目進(jìn)入云計算領(lǐng)域的時間比較晚。但是,這個項目有一個不可缺少的功能:可伸縮性。
OpenStack項目政策委員會主席喬納森·布賴斯(Jonathan Bryce)稱,我們正在談?wù)撌褂肙penStack運(yùn)行一個擁有100臺服務(wù)器或者1000臺服務(wù)器的云。那里的其它選擇確實沒有考慮到這個規(guī)模。
自從2010年推出以來,OpenStack迅速贏得了惠普、英特爾和戴爾等云計算領(lǐng)域的IT公司的支持。OpenStack的貢獻(xiàn)者喜歡把自己的工作稱作增長速度最快的開源軟件項目,參加者包括144家公司和2100多人。戴爾推出一個名為戴爾OpenStack云解決方案的軟件包,把OpenStack與戴爾自己的服務(wù)器和軟件結(jié)合在了一起。惠普也推出一個采用這個技術(shù)的測試版的公共云服務(wù)。
OpenStack的核心的計算組件是在美國航天局艾姆斯研究中心(Ames Research Center)為存儲大量空間圖片的一個內(nèi)部云開發(fā)的。據(jù)曾經(jīng)負(fù)責(zé)開發(fā)OpenStack云控制器前艾姆斯研究中心CIO克里斯·坎普(Chris Kemp)稱,美國航天局管理人員原來試圖使用Eucalyptus軟件項目平臺,但是,發(fā)現(xiàn)這個軟件很難升級到需要的水平。
管理的托管提供商Rackspace的首席技術(shù)官約翰·安格斯(John Engates)說,為了幫助更廣泛地應(yīng)用,OpenStack正在配置許多新的功能,使這個軟件更適合企業(yè)應(yīng)用。一個名為“Keystone”的項目允許機(jī)構(gòu)把OpenStack與自己的身份管理系統(tǒng)結(jié)合起來,或者與基于微軟主動目錄或者其它LDAP(輕型目錄訪問協(xié)議)的身份管理系統(tǒng)結(jié)合起來。此外,開發(fā)人員也正在為這個軟件開發(fā)一個前端門戶。Rackspace還將把這個項目剝離為一個完全獨立的實體,希望它成為更多的云提供商的一個誘人的選擇。
安格斯稱,2011年將是這個產(chǎn)品打基礎(chǔ)的一年。但是,我認(rèn)為,2012年我們將真正開始利用這個基礎(chǔ)在許多私有云和公共云中使用。
3.Stig
過去的一年是Cassandra、MongoDB、CouchDB和無數(shù)其它非關(guān)系數(shù)據(jù)庫的應(yīng)用顯著增長的一年。但是,在9月份舉行的“NoSQL Now”會議上,人們更多談?wù)摰氖巧形窗l(fā)布的數(shù)據(jù)存儲Stig。如果幸運(yùn)的話,我們將在2012年看到Stig。
Stig的維護(hù)者稱,Stig是為社交網(wǎng)絡(luò)網(wǎng)站的獨特的工作量設(shè)計的。Stig是社交網(wǎng)絡(luò)網(wǎng)站Tagged的軟件工程師杰森·盧卡斯(Jason Lucas)創(chuàng)建的。他把這個技術(shù)稱作分布式圖表數(shù)據(jù)庫。Stig旨在支持大量互動的和社交網(wǎng)絡(luò)應(yīng)用。這個數(shù)據(jù)商店的架構(gòu)允許進(jìn)行推論性的搜索,允許用戶和應(yīng)用程序查找信息的不同部分的聯(lián)系。由于Stig是用Haskell功能編程語言編寫的,它能夠輕松地把自己的工作量分散到多臺服務(wù)器。
Stig仍然有一些神秘感,因為它到目前為止還沒有發(fā)布。但是,觀察人士預(yù)測,它適合社交網(wǎng)絡(luò)和其它保持廣泛的數(shù)據(jù)的應(yīng)用。盧卡斯解釋說,社交網(wǎng)絡(luò)的需求從一開始就與其它類型的工作不同,因此將受益于適合它需求的數(shù)據(jù)庫。如果不能升級到行星的規(guī)模,你在這個領(lǐng)域就不能成為一個相關(guān)的服務(wù)。
Stig目前在Tagged網(wǎng)站的一臺服務(wù)器上運(yùn)行,不過,該公司預(yù)計將把Stig擴(kuò)大應(yīng)用為該公司唯一的數(shù)據(jù)庫。開發(fā)人員原計劃在12月開放這個軟件的源代碼,但是,后來推遲到2012年的某個時候。
咨詢公司Kelly-McCreary & Associates的語義解決方案設(shè)計師丹·麥克里(Dan McCreary)說,我看到的情況是非常有趣的。他贊揚(yáng)這個數(shù)據(jù)庫的功能語言架構(gòu)。這個架構(gòu)將使這個數(shù)據(jù)庫在多臺服務(wù)器上部署更方便。
4.Linux Mint
盡管開源軟件支持者的多年宣傳,Linux從來沒有廣泛應(yīng)用于臺式電腦。但是,一直有一個用戶友好的Linux發(fā)布版作為替代微軟Windows的軟件在使用。在最近幾年,Canonical公司的Ubuntu已經(jīng)完成了自己的任務(wù),盡管日益流行的Linux Min也許會因為更容易使用而超過Ubuntu。
軟件工程師克萊門特·勒費(fèi)布爾(Clement Lefebvre)在評估了在線論壇中的各種Linux發(fā)布版之后首先創(chuàng)建了Linux Mint。勒費(fèi)布爾在這個工作中產(chǎn)生了在這個理想的發(fā)布版中應(yīng)該有什么功能的想法。就像Canonical為自己非常流行的Ubuntu感謝Debian Linux發(fā)布版一樣,勒費(fèi)布爾把Ubuntu作為Linux Mint的基礎(chǔ)。現(xiàn)在,Linux Mint項目得到了捐獻(xiàn)者的資金、自己網(wǎng)站的廣告收入和來自用戶搜索的收入。最后一項收入是通過與DuckDuckGo建立的一個有爭議的合作實現(xiàn)的。
Linux Mint是僅需要桌面操作系統(tǒng)而不想了解更多的Linux工作原理的用戶設(shè)計的。這個方法使安裝和運(yùn)行這個軟件非常容易,維護(hù)也不成問題。更勝過Ubuntu的是,Linux Mint強(qiáng)調(diào)輕松的使用性,在新功能證明自己值得使用之前,一般不使用新的功能。
例如,Linux Mint避開有些爭議的“Unity”桌面界面。Canonical應(yīng)用這個界面更輕松地把Ubuntu移植到移動平臺。相反,Linux Mint堅持使用更知名的和更成熟的Gnome界面。
事實上,由于Ubuntu的傷害,這種嚴(yán)格堅持可用性的做法也許有助于Linux Mint。Linux Mint稱它的操作系統(tǒng)是全球排名第四位的桌面操作系統(tǒng),僅次于Windows、蘋果Mac和Ubuntu。在過去的一年里,Linux Mint在DistroWatch Linux新聞網(wǎng)站產(chǎn)生的網(wǎng)頁瀏覽量甚至超過了Ubuntu。這個指標(biāo)反映了Linux發(fā)布版的流行程度。毫無疑問,2012年將看到Linux Mint更多的增長。
5. Gluster
紅帽能夠給存儲軟件領(lǐng)域帶來它曾給Unix操作系統(tǒng)市場帶來的那種革命性的變化嗎?今年10月,紅帽收購了開源軟件公司Gluster。這家公司制作的開源軟件GlusterFS且文件系統(tǒng)能夠把商品化SATA(串行高級技術(shù)附件)硬盤和NAS(網(wǎng)絡(luò)附加存儲)系統(tǒng)連接到大規(guī)模的可伸縮的存儲池。紅帽計劃使用它占領(lǐng)Linux操作系統(tǒng)市場的方法統(tǒng)治存儲領(lǐng)域。
據(jù)紅帽CEO吉姆·懷特赫斯特稱,存儲軟件市場每年收入達(dá)40億美元,不過,這不是紅帽對這個技術(shù)感興趣的原因。相反,紅帽感興趣的是找到一種能夠使云遷移更方便的存儲技術(shù)。他說,我們尋找一些開源軟件能夠作為更強(qiáng)大的技術(shù)創(chuàng)新的方式的地方。我們正在尋找一些能夠盈利的地方。在這方面,還沒有其它的解決方案。
這個軟件已經(jīng)有一些增長勢頭,至少在管理員下載和測試這個軟件方面是如此。在過去的一年里,GlusterFS的下載量增長了300%。在今年11月,這個軟件的下載次數(shù)超過了3.7萬次。