WordPress啟用類別置頂插件category-sticky-post後,
類別內若無文章,會出現無貼文可置頂訊息:
Trying to get property of non-object in /.../wp-content/plugins/category-sticky-post/class-category-sticky-post.php on line 200
解法如下: 在add_styles()方法,增加isset($post->ID) && 判別指令。
category-sticky-post/class-category-sticky-post.php
public function add_styles() {
global $post;
if( isset($post->ID) && is_archive() && '1' !== get_post_meta( $post->ID, 'category_sticky_post_border', true ) ) {
wp_enqueue_style( 'category-sticky-post', plugins_url( '/category-sticky-post/css/plugin.css' ) );
}
}
參考:
https://tommcfarlin.com/category-sticky-post-2-1-0-support-post-types/
2016年9月22日 星期四
Trying to get property of non-object in /.../class-category-sticky-post.php on line 200
2016年5月24日 星期二
four kinds of design for adding operation of two rationals
有理數加法的幾種設計: 結果回傳或覆蓋 vs 類別或物件方法 (1) public static Rational add(Ratinoal r1, Rational r2) // 用法: Rational r3 = Rational.add(r1,r2); // r3=r1+r2 (2) public static void add(Ratinoal r1, Rational r2) // 用法: Rational.add(r1,r2); // r1=r1+r2 (3) public Rational add(Rational r2) // 用法: Rational r3 = r1.add(r2); // r3=r1+r2 (4) public void add(Rational r2) // 用法: r1.add(r2); // r1=r1+r2
2016年5月23日 星期一
Canonical Weighted Sum (CWS) Gates for Simplifying Bayesian Network Inference
decampos-10-ijar-combining content-based and collaborative recommendations- a hybrid approach based on bayesian networks The following will explain the examples in pp793-794 of the paper. Assume that I and F nodes in the bayesian network are binary random variables. If the set of parent nodes of node I6 is Pa(I6) = { F6, F7, F8}, then the 8 possible configurations of conditional joint probabilities are pa1(I6) = (f6,1 & f7,1 & f8,1) pa2(I6) = (f6,0 & f7,1 & f8,1) pa3(I6) = (f6,1 & f7,0 & f8,1) pa4(I6) = (f6,1 & f7,1 & f8,0) pa5(I6) = (f6,0 & f7,0 & f8,1) pa6(I6) = (f6,0 & f7,1 & f8,0) pa7(I6) = (f6,1 & f7,0 & f8,0) pa8(I6) = (f6,0 & f7,0 & f8,0) By use of Canonical Weighted Sum (CWS) Gates, which consist of 2x2x3=12 weights, computation of 16 conditional joint probabilities (having 8 degrees of freedom) can be decomposed into the summation of 12 weights (having 3 degrees of freedom): w(f6,1&i6,1) = w(f6,0&i6,0) = 0.3 w(f7,1&i6,1) = w(f7,0&i6,0) = 0.4 w(f8,1&i6,1) = w(f8,0&i6,0) = 0.3 and w(f6,1&i6,0) = w(f6,0&i6,1) = 0 w(f7,1&i6,0) = w(f7,0&i6,1) = 0 w(f8,1&i6,0) = w(f8,0&i6,1) = 0 Pr(i6,0 | pa1(I6))= Pr(i6,0 | f6,1 & f7,1 & f8,1) = w(f6,1&i6,0) + w(f7,1&i6,0) + w(f8,1&i6,0) = 0 Pr(i6,1 | pa1(I6))= Pr(i6,1 | f6,1 & f7,1 & f8,1) = w(f6,1&i6,1) + w(f7,1&i6,1) + w(f8,1&i6,1) = 0.3 + 0.4 + 0.3 = 1 Pr(i6,0 | pa2(I6))= Pr(i6,0 | f6,0 & f7,1 & f8,1) = w(f6,0&i6,0) + w(f7,1&i6,0) + w(f8,1&i6,0) = 0.3 Pr(i6,1 | pa2(I6))= Pr(i6,1 | f6,0 & f7,1 & f8,1) = w(f6,0&i6,1) + w(f7,1&i6,1) + w(f8,1&i6,1) = 0 + 0.4 + 0.3 = 0.7 Pr(i6,0 | pa3(I6))= Pr(i6,0 | f6,1 & f7,0 & f8,1) = w(f6,1&i6,0) + w(f7,0&i6,0) + w(f8,1&i6,0) = 0.4 Pr(i6,1 | pa3(I6))= Pr(i6,1 | f6,1 & f7,0 & f8,1) = w(f6,1&i6,1) + w(f7,0&i6,1) + w(f8,1&i6,1) = 0.3 + 0 + 0.3 = 0.6 Pr(i6,0 | pa4(I6))= Pr(i6,0 | f6,1 & f7,1 & f8,0) = w(f6,1&i6,0) + w(f7,1&i6,0) + w(f8,0&i6,0) = 0.3 Pr(i6,1 | pa4(I6))= Pr(i6,1 | f6,1 & f7,1 & f8,0) = w(f6,1&i6,1) + w(f7,1&i6,1) + w(f8,0&i6,1) = 0.3 + 0.4 + 0 = 0.7 Pr(i6,0 | pa5(I6))= Pr(i6,0 | f6,0 & f7,0 & f8,1) = w(f6,0&i6,0) + w(f7,0&i6,0) + w(f8,1&i6,0) = 0.3 + 0.4 = 0.7 Pr(i6,1 | pa5(I6))= Pr(i6,1 | f6,0 & f7,0 & f8,1) = w(f6,0&i6,1) + w(f7,0&i6,1) + w(f8,1&i6,1) = 0 + 0 + 0.3 = 0.3 Pr(i6,0 | pa6(I6))= Pr(i6,0 | f6,0 & f7,1 & f8,0) = w(f6,0&i6,0) + w(f7,1&i6,0) + w(f8,0&i6,0) = 0.3 + 0 + 0.3 = 0.6 Pr(i6,1 | pa6(I6))= Pr(i6,1 | f6,0 & f7,1 & f8,0) = w(f6,0&i6,1) + w(f7,1&i6,1) + w(f8,0&i6,1) = 0 + 0.4 + 0 = 0.4 Pr(i6,0 | pa7(I6))= Pr(i6,0 | f6,1 & f7,0 & f8,0) = w(f6,1&i6,0) + w(f7,0&i6,0) + w(f8,0&i6,0) = 0 + 0.4 + 0.3 = 0.7 Pr(i6,1 | pa7(I6))= Pr(i6,1 | f6,1 & f7,0 & f8,0) = w(f6,1&i6,1) + w(f7,0&i6,1) + w(f8,0&i6,1) = 0.3 + 0 + 0 = 0.3 Pr(i6,0 | pa8(I6))= Pr(i6,0 | f6,0 & f7,0 & f8,0) = w(f6,0&i6,0) + w(f7,0&i6,0) + w(f8,0&i6,0) = 0.3 + 0.4 + 0.3 = 1 Pr(i6,1 | pa8(I6))= Pr(i6,1 | f6,0 & f7,0 & f8,0) = w(f6,0&i6,1) + w(f7,0&i6,1) + w(f8,0&i6,1) = 0 1 = Pr(i6,0 | pa(I6)) + Pr(i6,1 | pa(I6)) = w(f6,1&i6,0) + w(f7,1&i6,0) + w(f8,1&i6,0) + w(f6,1&i6,1) + w(f7,1&i6,1) + w(f8,1&i6,1) = 1 ============================ Given Pa(U4) = { I1, I3, I6, I7, I8, I10 } with six-value (0,1,~,5) random variable U, the network consists of 2x6x6=72 weights. By the following 12 nonzero weights having 6 degrees of freedom (with all other weights being 0): w(i1,1&u4,1) = w(i3,1&u4,1) = w(i6,1&u4,2) = w(i7,1&u4,1) = w(i8,1&u4,3) = w(i10,1&u4,5) = 0.166 and w(i1,0&u4,0) = w(i3,0&u4,0) = w(i6,0&u4,0) = w(i7,0&u4,0) = w(i8,0&u4,0) = w(i10,0&u4,0) = 0.166 we can compute any Pr(U4 | pa(U4)) conditional probabilities by summation of the 12 nonzero weights. (1) pa(U4) = { i1,1 & i3,1 & i6,1 & i7,1 & i8,1 & i10,1 } Pr(u4,0 | pa(U4)) = w(i1,1&u4,0) + w(i3,1&u4,0) + w(i6,1&u4,0) + w(i7,1&u4,0) + w(i8,1&u4,0) + w(i10,1&u4,0) = 0 + 0 + 0 + 0 + 0 + 0 = 0 Pr(u4,1 | pa(U4)) = w(i1,1&u4,1) + w(i3,1&u4,1) + w(i6,1&u4,1) + w(i7,1&u4,1) + w(i8,1&u4,1) + w(i10,1&u4,1) = 0.166 + 0.166 + 0 + 0.166 + 0 + 0 = 0.5 Pr(u4,2 | pa(U4)) = w(i1,1&u4,2) + w(i3,1&u4,2) + w(i6,1&u4,2) + w(i7,1&u4,2) + w(i8,1&u4,2) + w(i10,1&u4,2) = 0 + 0 + 0.166 + 0 + 0 + 0 = 0.166 Pr(u4,3 | pa(U4)) = w(i1,1&u4,3) + w(i3,1&u4,3) + w(i6,1&u4,3) + w(i7,1&u4,3) + w(i8,1&u4,3) + w(i10,1&u4,3) = 0 + 0 + 0 + 0 + 0.166 + 0 = 0.166 Pr(u4,4 | pa(U4)) = w(i1,1&u4,4) + w(i3,1&u4,4) + w(i6,1&u4,4) + w(i7,1&u4,4) + w(i8,1&u4,4) + w(i10,1&u4,4) = 0 + 0 + 0 + 0 + 0 + 0 = 0 Pr(u4,5 | pa(U4)) = w(i1,1&u4,5) + w(i3,1&u4,5) + w(i6,1&u4,5) + w(i7,1&u4,5) + w(i8,1&u4,5) + w(i10,1&u4,5) = 0 + 0 + 0 + 0 + 0 + 0.166 = 0.166 1 = Pr(u4,1 | pa(U4)) + Pr(u4,2 | pa(U4)) + Pr(u4,3 | pa(U4)) + Pr(u4,4 | pa(U4)) + Pr(u4,5 | pa(U4)) = 0.5 + 0.166 + 0.166 + 0 + 0.166 (2) pa(U4) = { i1,0 & i3,0 & i6,1 & i7,1 & i8,0 & i10,0 } Pr(u4,0 | pa(U4)) = w(i1,0&u4,0) + w(i3,0&u4,0) + w(i6,1&u4,0) + w(i7,1&u4,0) + w(i8,0&u4,0) + w(i10,0&u4,0) = 0.166 + 0.166 + 0 + 0 + 0.166 + 0.166 = 0.666 Pr(u4,1 | pa(U4)) = w(i1,0&u4,1) + w(i3,0&u4,1) + w(i6,1&u4,1) + w(i7,1&u4,1) + w(i8,0&u4,1) + w(i10,0&u4,1) = 0 + 0 + 0 + 0.166 + 0 + 0 = 0.166 Pr(u4,2 | pa(U4)) = w(i1,0&u4,2) + w(i3,0&u4,2) + w(i6,1&u4,2) + w(i7,1&u4,2) + w(i8,0&u4,2) + w(i10,0&u4,2) = 0 + 0 + 0.166 + 0 + 0 + 0 = 0.166 Pr(u4,3 | pa(U4)) = w(i1,0&u4,3) + w(i3,0&u4,3) + w(i6,1&u4,3) + w(i7,1&u4,3) + w(i8,0&u4,3) + w(i10,0&u4,3) = 0 + 0 + 0 + 0 + 0 + 0 = 0 Pr(u4,4 | pa(U4)) = w(i1,0&u4,4) + w(i3,0&u4,4) + w(i6,1&u4,4) + w(i7,1&u4,4) + w(i8,0&u4,4) + w(i10,0&u4,4) = 0 + 0 + 0 + 0 + 0 + 0 = 0 Pr(u4,5 | pa(U4)) = w(i1,0&u4,5) + w(i3,0&u4,5) + w(i6,1&u4,5) + w(i7,1&u4,5) + w(i8,0&u4,5) + w(i10,0&u4,5) = 0 + 0 + 0 + 0 + 0 + 0 = 0 1 = Pr(u4,1 | pa(U4)) + Pr(u4,2 | pa(U4)) + Pr(u4,3 | pa(U4)) + Pr(u4,4 | pa(U4)) + Pr(u4,5 | pa(U4)) = 0.666 + 0.166 + 0.166 + 0 + 0 ============================ Suppose that Acf = A4 or user 4. Given Pa(Acf) = { Ux, Uy, Uz } with with six-value (0,1,~,5) random variable Acf, the network consists of 6x6x3=108 weights. By the following ? nonzero weights having ? degrees of freedom (with all other weights being 0): w(ux,5&acf,4) = 0.54 w(uy,1&acf,4) = 0.15 w(uz,4&acf,4) = 0.09 and w(ux,0&acf,0) = 0.6 w(uy,0&acf,0) = 0.3 w(uz,0&acf,0) = 0.1 we can compute any Pr(Acf | pa(Acf)) conditional probabilities by summation of the ? nonzero weights. (1) pa(Acf) = { ux,5 & uy,1 & uz,4 } Pr(acf,4 | pa(U4)) = w(ux,5&acf,4) + w(uy,1&acf,4) + w(uz,4&acf,4) = RSim(Ux,Acf) * Pr(A=4|Ux=5) + RSim(Uy,Acf) * Pr(A=4|Uy=1) + RSim(Uz,Acf) * Pr(A=4|Uz=4) = 0.6 * 0.9 + 0.3 * 0.5 + 0.1 * 0.9 = 0.78 (2) pa(Acf) = { ux,0 & uy,1 & uz,4 } Pr(acf,4 | pa(U4)) = w(ux,0&acf,4) + w(uy,1&acf,4) + w(uz,4&acf,4) = 0 + RSim(Uy,Acf) * Pr(A=4|Uy=1) + RSim(Uz,Acf) * Pr(A=4|Uz=4) = 0 + 0.3 * 0.5 + 0.1 * 0.9 = 0.24 (3) pa(Acf) = { ux,0 & uy,1 & uz,4 } Pr(acf,0 | pa(U4)) = w(ux,0&acf,0) + w(uy,1&acf,0) + w(uz,4&acf,0) = RSim(Ux,Acf) + 0 + 0 = 0.6 + 0 + 0 = 0.6
2016年5月3日 星期二
why object-oriented programming provides encapsulation, inheritance, and polymorphism
一般完整的物件導向語言提供封裝、繼承、多型三大功能,允許以合成或繼承方式建構新物件。 其中,封裝(encapsulation)旨在保護私密資料的安全、完整性,其存取唯有透過公開的屬性存取(窗口)或運算方法達成之。 合成(composition)是一種利用物件建構物件的方法,物件之間的擁有(has-a)關係可形成階層樹狀圖。 繼承(inheritance)旨在提供新用舊的機制,讓後代需要用到親代原來的屬性及方法時,直接沿用,不必重造車輪。 繼承也是一種利用物件建構物件的方法,物件之間的屬於(is-a)關係可形成階層樹狀圖。 多型(polymorphism)旨在繼承架構下提供舊用新的機制,讓親代也有機會用到後代創新的新行為、新功能。
find the unique second smallest number in excel
一般 Excel 找最小或最大值可以使用 MIN(range) 或 MAX(range)函數,其中,range表示儲存格範圍。 如果想要找第2小或第2大也可以使用 SMALL(range, 2) 或 LARGE(range, 2),其中,2表示順序第2。 但是以找最小為例,有時候遇到第1小及第2小值一樣,就看不出值分布情形。若希望能看到不同值的第2小數字,可以使用如下函數:
= SMALL(range, COUNTIF(range, MIN(range)) + 1)
其中, SMALL(range, n) 可回傳 range 範圍內順序第 n 小的數字。 COUNTIF(range, MIN(range)) 可回傳 range 範圍內符合最小值的儲存格個數。 此個數加1之後,即為不同值第2小數字之順序。 因此可餵給 SMALL 函數,回傳不同值第2小數字出來。
至於不同值第3或第n小數字,可能就需要更複雜的 FREQUENCY 陣列函數或自己寫巨集計算了。
2016年4月20日 星期三
how to retrieve access-denied files in an old disk drive
系統掛載舊硬碟之後,因原始身份別不同,常有權限不符,無法讀取現象 -- 因為目錄常啟用繼承上一層目錄的權限,因此比較省事的方法就是 找到最上一層開始出現讀不到的共通目錄,由此設定Everyone完全控制 其餘子層目錄根據繼承就會沿用Everyone完全控制 -- 目錄/內容/安全性/進階/ 權限:按[停用繼承],選[從此物件中移除所有繼承權限] 新增/允許/Everyone/完全控制/繼承自無/套用到這個資料夾、子資料夾及檔案 勾選[以可從此物件繼承的權限項目取代所有子物件的權限項目(P)] 選[套用] 擁有者:變更 請輸入物件名稱來選取(E): Everyone 檢查名稱 確定 勾選[取代子容器與物件的擁有者] 選[套用] -- 目錄檔案權限:各符合身份之帳號權限的最寬鬆集合 分享權限:各符合身份之帳號權限的最寬鬆集合 最終權限: 兩者之最嚴謹集合
2016年3月9日 星期三
2016年2月25日 星期四
Example of Converting Taiwan Skills Certification Test Bank for Moodle Use
勞動部技術士技能檢定學科題庫轉成moodle平台試題法 如果想利用Moodle平台的測驗卷功能練習技術士檢定學科題目, 必須先將題庫轉成Aiken純文字格式,才能匯入平台開測驗卷。 本方法只適用純文字單選題,不適用含圖形之題目。 用到的軟體工具有一般瀏覽器、微軟Word、UltraEdit、微軟記事本。 其轉換步驟如下: A.下載檢定題目 從如下題庫網址, 勞動部技術士檢定學科題庫 http://www.labor.gov.tw/home.jsp?pageno=201109290020 選擇適當級別及科目之學科題目,格式為.pdf。 B.轉換題目檔案格式 利用如下線上轉檔網址, Convert PDF to Word (Free!) http://www.pdfonline.com/pdf-to-word-converter/ 將題目從.pdf格式還原為.rtf格式。 C.轉換題目為Big5純文字檔 從微軟Word軟體, 先用常用/取代功能,作如下1,2,3,4選項的字串取代, "①" 替換為 "A. " "②" 替換為 "B. " "③" 替換為 "C. " "④" 替換為 "D. " 再用另存新檔功能, 將.rtf格式轉換為.txt純文字格式。 例如: 1. (2) 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層?①網路層(Network)②實體層(Physical)③應用層 (Application)④傳輸層(Transport)。 變成: 1. (2) 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層?A. 網路層(Network)B. 實體層(Physical)C. 應用層 (Application)D. 傳輸層(Transport)。 D.調整題目內容符合Aiken格式 利用UltraEdit的如下正規式功能 UltraEdit/Search/Replace/Regular_Expressions 逐步調整欄位相關內容: D1.每個選項獨立為一行 "A. " 替換為 "^pA. " "B. " 替換為 "^pB. " "C. " 替換為 "^pC. " "D. " 替換為 "^pD. " 說明: ^p表示換行字元 例如: 1. (2) 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層?A. 網路層(Network)B. 實體層(Physical)C. 應用層 (Application)D. 傳輸層(Transport)。 變成: 1. (2) 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層? A. 網路層(Network) B. 實體層(Physical) C. 應用層 (Application) D. 傳輸層(Transport)。 D2.擷取答案1,2,3,4 "%[0-9]+.*(^([1-4]^))" 替換為 "ANSWER: ^1 ^p" 說明: %表示行開頭,[0-9]+表示1個以上由0~9任一字元組成的字串, .*表示任意字元數的字串,[1-4]表示1~4任一字元, ^(.....^)表示擷取.....範圍內的字串,^1表示代入匹配擷取成功的第1組字串。 例如: 1. (2) 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層? 變成: ANSWER: 2 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層? D3.調整答案欄位到題目之後 "%^(ANSWER: [A-D]^)^p ^(?*^pA.?*^pB.?*^pC.?*^pD.?*^)$" 替換為 "^2^p^1" 說明: %表示行開頭,$表示行結尾,[A-D]表示A~D任一字元,^p表示換行字元, ^(.....^)表示擷取.....範圍內的字串, ^1表示代入匹配擷取成功的第1組字串,^2表示代入匹配擷取成功的第2組字串。 例如: ANSWER: 2 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層? A. 網路層(Network) B. 實體層(Physical) C. 應用層 (Application) D. 傳輸層(Transport)。 變成: 在 OSI 7 層協定中「網路硬體協定」,屬於以下哪一層? A. 網路層(Network) B. 實體層(Physical) C. 應用層 (Application) D. 傳輸層(Transport)。 ANSWER: 2 E.存成UTF-8格式 利用記事本讀入修改題庫,另存新檔成UTF-8格式。 F.匯入moodle平台 利用moodle的[課程管理/題庫/匯入]選單,選擇Aiken格式,選擇一檔案,匯入。 再為題庫設定階層類型的名稱,供後續出試題之用。 參考: 1. UltraEdit 正規式說明: http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/regular_expressions.html 2. Moodle載入題庫及出試題說明: http://budamedia.blogspot.tw/2014/12/moodle.html
2016年1月7日 星期四
cache-based memory access time
mchoes-11-cengage-understanding operating systems, 6ed. 課本第3章提到快取記憶體時,有計算平均記憶體存取時間(AvgMemAccessTime)的公式。 其中,h為快取命中率,AvgCacheAccessTime為快取存取時間,AvgMainMemAccTime為主記憶體存取時間。 (1)當假設CPU取用記憶體前,採用一律先詢問快取記憶體,若沒有再詢問主記憶體的循序作法時, 則所花時間依下式計算,可簡化為課本式子。 AvgMemAccessTime = h * AvgCacheAccessTime + (1-h) * [AvgCacheAccessTime + AvgMainMemAccTime] = AvgCacheAccessTime + (1-h) * AvgMainMemAccTime (2)當假設CPU取用記憶體前,採用快取記憶體及主記憶體兩者同時詢問,看誰先回覆的並行作法時, 則所花時間依下式計算,即為如下式子。 AvgMemAccessTime = h * AvgCacheAccessTime + (1-h) * AvgMainMemAccTime 雖然課本提到兩種作法都可能採用,但是多數為第1種循序作法,故建議用課本式子計算。
訂閱:
文章 (Atom)