pupuliao的部落格

寫教學的最大目的是教會未來的自己

Get Adobe Flash player

android 上傳檔案到電腦的方法

這篇文章 主要是給有寫android程式的人看得,如果只是普通使用者,去找APP吧XD

首先 這個功能我研究了四天,今天終於有了成果
到最後 我找到另一個 相當完整的code,為了避免人別人說我抄襲

我就直接貼連結了
http://www.cnblogs.com/greatverve/archive/2011/12/23/android-upload.html

簡單來說,android 如果要傳輸檔案,在預設的API中 並不支援 FTP(雖然似乎有人寫出來,但我還沒嘗試成功)
所以比較簡單的解決方法,就是模擬普通網頁傳輸表格的方式用POST 來傳輸
連結裡的方法就是這樣

另外,伺服器接收端可以用更簡單的方式製作
用PHP 的就可以了 這部分我改天再PO

Post to Twitter Post to Plurk Post to Facebook Send Gmail

第一次組裝書櫃就上手

上了大學,開始了我買書之路….(在這之前,買進的書大概就是金庸全套吧)

到現在研究所,累計買的小說已經不是紙箱能放得下的,所以趁著畢業換房間,買了一個新的書櫃

書櫃是從pchome 的購物網站下訂的,一個699

 

這是拆開來後的木板

加上兩包零件袋

繼續閱讀

Post to Twitter Post to Plurk Post to Facebook Send Gmail

JAVA的UTF-8 繁簡互轉的方法

首先 要先感謝來自PTT JAVA版的 ClareQ (人比人Cheese人)

他的方法讓我大開眼界,比我上一篇使用replace 的方法更為快速,他使用了 hashmap

也感謝他允許我發了這篇文章

 

 

 

public class Encoding {

	public Encoding() {

	}

	public String StoT(String data) {
		return translate(data, S2T);
	}

	public String TtoS(String data) {
		return translate(data, T2S);
	}

	private static final Map T2S = new HashMap();
	private static final Map S2T = new HashMap();
	static {
                final char[] UTF8T ="繁體字表...".toCharArray();
                final char[] UTF8S ="簡體字表...".toCharArray();
                for (int i = 0, n = Math.min(UTF8T.length, UTF8S.length); i < n; i++) {
			final Character cT = Character.valueOf(UTF8T[i]);
			final Character cS = Character.valueOf(UTF8S[i]);
			T2S.put(cT, cS);
			S2T.put(cS, cT);
		}
	}

	private static String translate(String text,
			Map dictionary) {
		final char[] chars = text.toCharArray();
		for (int i = 0, n = chars.length; i < n; i++) {
			final Character found = dictionary.get(chars[i]);
			if (null != found)
				chars[i] = found;
		}
		return String.valueOf(chars);
	}

 

其中繁體字跟簡體字字字表,後面附上,因為大約有兩千五百字…..

他的方法和我以前的想法不一樣,因為我只是換字,不是換詞,所以他把字串拆開成陣列後,把文章帶進字碼表去搜尋,大概是hashmap 在這方面的高效率,所以可以快速提升執行效率

這是和上一篇同樣的樣本做的測試

總共花費 96089.0ms ;其中下載花費95658.0ms 資料處理花費  431.0ms

效率大概是使用JAVA 內建的replace()的80倍

簡繁字碼轉換表

 

看來我現在是要想辦法提高下載效率

Post to Twitter Post to Plurk Post to Facebook Send Gmail

JAVA提高String.replace() 執行速度的方法

繼續上一篇的內容,為了這些問題,我詢問了PTT 的 JAVA版,也很感謝有人替我解答,並教我如何提高replace 的效率

參考資料 https://www.facebook.com/java.tw 的 5月8日的文章

這個方法經過測試,應該可以使用正規表示式,但我測試的次數不夠多,也不保證其效率 <-免責聲明XD

 

簡單來說 就是 JAVA 官方提供的 String 中的 replace() 把所有的任務都當成正規表示式來處理,所以效率不彰,而如果我們只是要做單純的文字置換,顯然不需要那些步驟。

以下是程式碼+口語化只有我自己懂得演算法

 

public class Replace {
	public Replace() {
		// TODO Auto-generated constructor stub
	}

	public static String replace(String str, String patten, String replacement) {
		// str 要置換的字串 把patten換成 replacement
		int pos = str.indexOf(patten);
		return pos < 0 ? str : _replace(str, patten, replacement, pos);
	}
/**演算法說明
 * 
 * @param str 資料
 * @param patten 要換掉的文字
 * @param replacement 要改成的文字
 * @param pos 那段文字在哪
 * @return 
 * 1. 從頭開始找出符合的字串,並且標示第幾個字放進pos
 * 2. 先把在pos前面的字放進結果區(newContent)
 * 3. 再放進replacement
 * 4. 再去找下一個字的位置放進pos 
 * 5. 接續步驟三直到全部找完為止
 */
	public static String _replace(String str, String patten,
			String replacement, int pos) {
		int len = str.length();
		int plen = patten.length();
		StringBuilder newContent = new StringBuilder(len);

		int lastPos = 0;

		do {
			newContent.append(str, lastPos, pos);
			newContent.append(replacement);
			lastPos = pos + plen;
			pos = str.indexOf(patten, lastPos);
		} while (pos > 0);
		newContent.append(str, lastPos, len);
		return newContent.toString();
	}
}

經過我在小說下載器上的實際測試結果

效率提高的8倍左右

以下是測試數據,以一部124頁的小說當作測試樣本

使用String.repalce() :總共花費 112890.0ms ;其中下載花費80601.0ms  資料處理花費 32289.0ms

使用新的方法             :總共花費 71188.0ms ;其中下載花費67008.0ms 資料處理花費  4180.0 ms

下載花費時間取決於測試當下的網路狀況

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

JAVA 的字串替換

參考資料

http://satellite.iteye.com/blog/224820

http://lbs.iteye.com/blog/208056

http://hehome.blogspot.tw/2011/06/java.html

 

最近為了我的小說下載器,找了很多相關的資料

 

首先 String 的 replace() 和 replaceAll()的差別

這兩個都是做string 大量置換,只是 replace() 就只是單純的置換,而replaceAll() 支援 使用正規表示式

以下是例子(抱歉引用了 參考文章的)

         
        String src = new String("ab43a2c43d");
        System.out.println(src.replace("3","f"));=>ab4f2c4fd.
        System.out.println(src.replace('3','f'));=>ab4f2c4fd.
        System.out.println(src.replaceAll("\\d","f"));=>abffafcffd.
        System.out.println(src.replaceAll("a","f"));=>fb43fc23d.
        System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d
        System.out.println(src.replaceFirst("4","h"));=>abh32c43d. .

再來就是 另一種 使用 正規表示式的 大規模置換的方法,下面的範例是用來 過濾所有的HTML 的

 
          java.util.regex.Pattern p_html;
          java.util.regex.Matcher m_html; 

          String regEx_html = "<[^>]+>"; //定義HTML標籤的正則表達式 
          p_html = Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
          m_html = p_html.matcher(htmlStr);
          htmlStr = m_html.replaceAll(""); //過濾html標籤 


我剛剛理解了 兩者之間的差別
前者的作法,每次都要重新分析一次正規表示式,而後者可以指分析一次就重複使用

Post to Twitter Post to Plurk Post to Facebook Send Gmail

自己製作wordpress 佈景主題

相信對於一些wordpress 的初學者來說,一定都像我一樣,只是去找人寫好的直些使用,或是好一點改一改再使用 但是有時也會一些無力感,因為 功能強大的佈景主題難以上手,甚至沒有中文介面,簡單的佈景主題能修改的地方又太少,導致要找一個完全符合心中所想的佈景主題十分困難….

最近 我找到一套軟體可以直接解決這個問題,他使用類似 office2007 的介面,可以直接製作佈景主題(痾..想做成網站也OK啦),不過缺點是,他產生的後台有點弱..,不過看在他強大的製作功能,這些就可以無視了

在一開始要先聲明

  1. 他不是免費軟體,收費方式有 家庭版 49.99美金跟 標準版 129.99美金,家庭版只支援wordpress,標準版則多支援了druapl等多個架站軟體(詳細自己去網站上看)
  2. 安裝後不用註冊既可以使用,但是是測試版,不能存檔(但可以輸出成佈景主題),佈景主題會自動加上浮水印(基本上就是 沒付錢別想真正拿來使用,只給你體驗體驗)
  3. 購買後,一年內可以免費升級,一年後可持續使用但無法升級(我嘗試過了,直接安裝新版的就可以了)
  4. 我正在籌錢購買…(已經買了 現在的布景就是成品)

 

我現在是使用 artisteer 4製作,這個只是一個測試版,許多功能仍未完善,只是有一些3代沒有的功能(已經出了 四代正式版)

剩下的介紹 就請參考

http://blog.cmsart.net/

 

官方網站:http://www.artisteer.com/

軟體下載:http://www.artisteer.com/?p=download

 

如果看不慣簡體介面

可以在 ~~\Artisteer 3\Library\Data\Langs

底下找到Chinese.xml 把它簡轉繁就OK了

看不慣對岸用語? 自己改吧,不難

Post to Twitter Post to Plurk Post to Facebook Send Gmail

wordpress 修改首頁的文章顯示方式

參考資料 http://pangbu.com/get_template_part/

最近因為一些緣故,又要做wordrpess 網站

首先最大的麻煩是首頁的文章排列方式

 

修改的方法

外觀->主題編輯器

選擇你現在使用的主題,如果不能存檔,請先進到FTP裡修改檔案存取權限

首頁 修改是在 index.php,請仔細看內容

會找到

<?php while ( have_posts() ) : the_post(); ?>
		<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>

這種東西

裡面總共出現了四個function

have_posts() 這個很好懂吧,有沒有文章

the_post () 這個應該是把文章取出一篇

get_template_part() 這個就是我們今天的重點了,這個變數目的是在 讓接下來的文章顯示可以有多種不同選擇

 

get_template_part($a,$b) 有兩個變數,簡單來說就是,執行後 系統會去選擇$a-$b.php 這個檔案去執行接下來的內容

而get_post_format()就是 依照文章格式,這是在你PO文的時候選擇的,如果你選標準就是啥都沒有

接下來 就是去找其他檔案的內容了

 

接下來我已我用 artisteer 產生的佈景主題為例

首頁的內容 會使用到content.php 這個檔案

    global $post;
    theme_post_wrapper(
        array(
                'id' => theme_get_post_id(),
                'class' => theme_get_post_class(),
                'thumbnail' => theme_get_post_thumbnail(),
                'title' => '<a href="' . get_permalink( $post->ID ) . '" rel="bookmark" title="' . strip_tags(get_the_title()) . '">' . get_the_title() . '</a>',
        'heading' => theme_get_option('theme_'.(is_single()?'single':'posts').'_article_title_tag'),
               'before' => theme_get_metadata_icons( 'date,author,edit', 'header' ),
               'content' => theme_get_excerpt(),
               'after' => theme_get_metadata_icons( 'category,tag,comments', 'footer' )
        )
    );

而這裡就是把資料放進array中到接下來的wrapper.php檔案中使用

依照之前的code 我們知道會執行theme_post_wrapper()

 

而這支佈景主題的作法是,一個公版,但是在前一個步驟你沒放資料進來就不會顯示內容

 

好 理解了應該就很好修改

要修改有兩種方法

比較簡單的

修改content.php 把不要的註解掉,這個最簡單,但是有可能影響到其他地方

比較複雜的,仿造從寫一個,從index.php開始修改,這樣改比較刺激XD

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

calibre 中文封面問題

參考網址 http://www.freemindworld.com/blog/2010/101022_calibre_tips_and_faq.shtml

 

說實話 這個問題困擾了我很久,只是最近才發現  calibre 可以裝外掛,就去找了問題的解決方法

calibre 在沒有另外設定的情況下,自動生成的封面,碰到中文字會變成問好,原因是 預設字體不支援中文 所產生的

教學中有兩種方法,我選擇的是 第二中,安裝外掛

 

1.在偏好設定中選擇 取得外掛程式以強化calibre

2.找尋Generate Cove 並安裝他

3. 就會產生新的按鈕可以 設計封面了

接下來就請自行摸索吧….

 

 

另外 如果手機是使用靜讀天下這套軟體的朋友,他在書櫃上顯示的封面 是另外存的暫存檔

請先把手機連至電腦後

進入 /sdcard/books/.Moonreader 裡面

裡面是放暫存的圖

把那些圖砍掉,之後再從新開電子書 就會改換新圖了

Post to Twitter Post to Plurk Post to Facebook Send Gmail

wordpress statpress 不正常運作

昨天接到總務處的通知,網站的流量統計出了問題….他停止運作了

 

WTF 這怎麼回事呢? 在那之前我好像只有修改過 log 設定 和佈景主題阿…..

好吧 去檢查LOG…..正常運作阿…佈景主題…..不太可能阿

 

不管了 先下個備份指令

這時我發現原因了

系統回報 有兩個table 出現錯誤,這剛好是statepress 運作的table (因為總務處網站是 MU的 所以會有多個)

我在網路上找了一些方法

 

以下是我的解決方法

  1. 打開phpMyAdmin
  2. 進入資料表清單 勾選要修復的
  3. 在底下有個拉霸 選擇修復列表
  4. 搞定收工

基本上它就會正常運作了

Post to Twitter Post to Plurk Post to Facebook Send Gmail

適用電子郵件訂閱網站

輸入你的電子郵件地址訂閱網站的新文章,使用電子郵件接收新通知。

訂閱 8 其他用戶

交換連結

Copyright © 2017. All Rights Reserved.

歡迎光臨
初音