顯示具有 心得 標籤的文章。 顯示所有文章
顯示具有 心得 標籤的文章。 顯示所有文章

[PHP]字串處理函式

序言

字串處理是常用的功能,大多數語言對這部份也有許多大同小異的函式,以下列出比較常用或我覺得特別需注意的函式。

尋找字串

strpos($string,$find[,$start]):尋找第一個在字串中出現的字詞,傳回0開始的數字位置。【$string】是被找的字串,【$find】是尋找的目標字詞,【$start】是代表尋找的起始位置。→官方文件
這個函式有一個極需注意的部份,就在於它的回傳值,找到的話會回傳位置,也就是個0開始的數字;但沒找到的話就機車了,以VB為例的IndexOf函式是類似這個函式的功能,如果沒找到會回傳【-1】,但在PHP不同版本中,會回傳的值居然是False,那就算了,聽說這是4.0b3版以後的PHP是這樣,更早之前的PHP甚至聽說回傳的連False都不是。於是就有人想出了判斷型態的方法,具體實現方式如下

<?php
    //尋找第一個在字串中出現的字詞
    function str_indexof($string,$find,$start=0){
        $index=strpos($string,$find,$start);
        if(gettype($index)!="integer")    $index=-1;
        return $index;
    }
   
    $string='abcdefghijk';
    $find='l';
    echo str_indexof($string,$find) . "\n";    //-1
    $find='a';
    echo str_indexof($string,$find,3) . "\n";    //-1
    $find='i';
    echo str_indexof($string,$find,3) . "\n";    //8
?>


子字串

substr($string[[,$start],$length]):取得子字串,傳回子字串內容。【$string】是來源字串,【$start】是代表尋找的起始位置,【$length】是子字串長度。→官方文件
這個函式需注意的部份在於它對中文字(UTF-8)會以每個字3字元的方式計算,所以切割時如果是中文字就要以3的倍數遞增。有另外的函式可對含中文的函式做計算找子字串,但如果是用上面談到的strpos函式來找指標,那就可以不用擔心這個問題。具體實現方式如下

<?php
    $string = '這是substr的測試';
    echo substr($string,0,13) . "\n";    //這是substr�
    $string = '這是mb_substr的測試';
    echo mb_substr($string,0,13,'UTF-8') . "\n";    //這是mb_substr的測
?>


字串長度

strlen($string):傳回字串長度。【$string】是來源字串。→官方文件
這個函式與上面一樣對中文字(UTF-8)會以每個字3字元的方式計算。

轉換大小寫

strtoupper($string):回傳轉換為英文大寫字串。strtolower($string):取得轉換為英文小寫字串。【$string】是來源字串。→官方文件
這個函式與上面一樣對中文字(UTF-8)會以每個字3字元的方式計算。

文字切割

split($pattern,$string[,$limit]):將字串依分割條件切割為陣列,回傳結果陣列。【$pattern】是分割條件,可為字串或是正規表達式。【$string】是來源字串。【$limit】最多切出幾個元素。
這個函式較直得注意的有兩點,一個是參數順序,居然不是來源字串...;第二個是分割條件【$pattern】可用正規表達式,有關於正規表達式可參考相關連結。→官方文件

文字驗證

ereg($pattern,$string[,&$arrResult]):依正規表達式驗證字串格式(比對字串時有大小寫之分),回傳True符合或False不符合。→官方文件
eregi($pattern,$string[,&$arrResult]):功能同上,但比對字串時沒有大小寫之分。
【$pattern】是驗證條件正規表達式。【$string】是來源字串。【$arrResult】符合的文字。
這個函式較直得注意的一樣有兩點,一個是參數順序;第二個是驗證條件【$pattern】為正規表達式,如【^[a-z0-9-]{3,8}$】如果要完整比對字串的話,要記得開頭用與結尾分別用【^】與【$】把條件框住,【[a-z0-9-]】代表小寫a~z與0~9及減號都是可用的字元,【{3,8}】代表上數字元可重複的次數為3~8次,可參考相關連結。
相關連結
  • PHP官方開發手冊:英文開發手冊。
  • W3School:簡體中文的網站開發程式語言文件,雖然有些不夠完整,不過很適合當工具書或初學參考(除了PHP,其他還有許多網頁語言)。

[PHP]陣列、檔案讀寫

陣列

PHP的Array也是我覺得很特別的東西,感覺有點像VB中HashTable的機制。
從程式中可注意到,要取得Array中的元素個數可用【count($dataArr)】。
新增元素的方法也很多元,也能動態新增。→官方文件

<?php
    echo "\nArray 1<br>\n";
    $dataArr = array('abc','test');
    for($i=0;$i<count($dataArr);$i++){
        echo $i."\t".$dataArr[$i] . "<br>\n";
    }
    echo "\nArray 2<br>\n";
    $dataArr = array();
    $dataArr[]='abc';
    $dataArr[]='test';
    for($i=0;$i<count($dataArr);$i++){
        echo $i."\t".$dataArr[$i] . "<br>\n";
    }
    echo "\nArray 3<br>\n";
    $dataArr = array();
    $dataArr['name']='abc';
    $dataArr['content']='test';
    for($i=0;$i<count($dataArr);$i++){
        echo $i."\t".$dataArr[$i] . "<br>\n";
    }
    foreach($dataArr as $value){
        echo $value . "<br>\n";
    }
    foreach($dataArr as $key => $value){
        echo $key."\t".$value . "<br>\n";
    }
    echo "\nArray 4<br>\n";
    $dataArr = array('name' => 'abc','content' => 'test');
    foreach($dataArr as $key => $value){
        echo $key."\t".$value . "<br>\n";
    }
?>

結果:

Array 1<br>
0    abc<br>
1    test<br>

Array 2<br>
0    abc<br>
1    test<br>

Array 3<br>

0    <br>
1    <br>
abc<br>
test<br>
name    abc<br>
content    test<br>

Array 4<br>
name    abc<br>
content    test<br>

檔案存取

檔案存取是我常會用的功能,以下列出我的寫法與常用函式:官方文件

<?php
    //存文字檔,如果檔案不存在會建立檔案,如果存在會覆蓋檔案
    function saveText($filename,$fText){
        try{
            $fh = fopen($filename, "w");
            fwrite($fh, $fText);
            fclose($fh);
        }catch(Exception $e){
            echo 'Error addText: ' .$e->getMessage();
        }
    }
    //增加文字到文字檔最後面,如果檔案不存在會建立檔案
    function addText($filename,$fText){
        try{
            $fh = fopen($filename, "a");
            fwrite($fh, $fText);
            fclose($fh);
        }catch(Exception $e){
            echo 'Error addText: ' .$e->getMessage();
        }
    }
    //讀取文字檔內容
    function loadText($filename){
        $fText=NULL;
        try{
            if(file_exists($filename))    $fText=file_get_contents($filename);           
        }catch(Exception $e){
            echo 'Error loadText: ' .$e->getMessage();
        }
        return $fText;
    }
    //刪除檔案
    function deleteFile($filename){
        return unlink($filename);
    }
    //建立資料夾
    function createDir($dirname){
        return mkdir($dirname);
    }
    //刪除資料夾
    function deleteDir($dirname){
        return rmdir($dirname);
    }
?>

[初學]PHP入門心得

序言

雖然寫了許久的程式,但一直沒花時間去練習PHP。
最近花了點時間試試PHP,增長了些見聞,後續幾篇會一一記錄下我開發時注意到的事。

開發環境

  • Windows 2003
  • TWAMPs(Tiny Windows Apache MySQL PHP Portable Web Server)V1.3.3中文版
    我開發的時候雖然已經有V1.3.5版,但執行的時候不知道為什麼我的整個作業系統會出現很多衝突的現象,很多程式都受影響,所以就往回推用舊的版本。V1.3.4版無法下載,就改用V1.3.3。以下是這個免安裝的環境提供的版本:
    • Apache:2.2.11
    • PHP:5.2.10
    • MySQL:5.1.36-community
    • phpMyAdmin:3.2.0.1
    • Drupal:6.13
  • Notepad++ 5.4.4
    我沒有特地找PHP的編輯器,所以編輯起來比較費工,不過Notepad還是有用顏色標亮特定的語法,所以還是有點用的。

環境設定

  • 啟動前可以看一下根目錄的【README.txt】來找到對應的Port或其他值的更改地點,但有些部分【README.txt】沒有寫的很正確,所以可能還是要靠經驗與人工找找實際的目錄,如:
    •  Apache PORT更改,README.txt說【edit httpd.conf in TWAMP\Apache\conf】,但實際路徑會在【 TWAMPd\app\conf】下的httpd.conf,找到並更改【Listen 80】
    • php.ini的位置,README.txt說【Edit php.ini in TWAMPd\PHP】,但實際路徑會在【TWAMPd\app\bin】
    • 【TWAMPd\htdocs】目錄下會是所有網頁文件所在的地方。

Apache 目錄存取限制設定

【.htaccess】 是一個文字檔,可以自己建立後,放在要限制/保護的目錄下,Apache就會依裡面的設定內容對使用者的存取進行限制或保護。
例如我對目錄要完全不給人進來存取檔案,就在文字檔內寫入以下內容

order allow,deny
deny from all

基本上這只是最簡單的功能,但很常用。如果需要更多設定,其實這個檔也可以設定的很複雜,網路上還有人專門做出設定工具:htaccessEditor,在此就不詳述了。

PHP開發兩三事

  • 基本語法

    <?php echo "123"; ?>

    【<?php ... ?>】指的是裡面的code【...】是php,以副檔名為*.php的檔案放在【TWAMPd\htdocs】目錄下,就可以被編譯執行。【echo】會將後面帶的文字顯示在頁面這段程式所在的位置上。→官方文件-基本語法、官方文件-echo
  • include

    <?php
    include 'myClass/HTMLParser.php';
    ?>

    include 的寫法,會將include的PHP程式如同嵌入在宣告的位置一樣,我想使用方法應該就如同C一樣,欲使用前必先宣告。→官方文件
  • 變數、單引號與雙引號

    <?php
        $value="123";
        echo "1: " . $value . "\r\n<br>";
        echo "2: " . "abc\t$valuedef\r\n<br>";
        echo "3: " . 'abc$valuedef\r\n<br>';
        echo "4: " . "abc\t$value def\r\n<br>";
        echo "5: " . 'abc$value def \r\n<br>';
        echo "6: " . 'abc' . $value . 'def\r\n<br>';
        echo "7: " . '"' . $value . "'\r\n<br>";
    ?>

    結果:

    1: 123
    <br>2: abc    
    <br>3: abc$valuedef\r\n<br>4: abc    123 def
    <br>5: abc$value def \r\n<br>6: abc123def\r\n<br>7: "123'
    <br>

    上面的程式中可以看到幾個現象:變數的前面用【$】來標示它是個變數,而且不用先行宣告,隨使用就會產生。以下逐行來看
    1. 字串的組合是用點【.】來標示兩字串要串聯起來。【雙引號】中的特殊文元【\】標示了後面帶了特殊字元【\r\n】,這都是換行符號,如果用VB來形容就是【vbCrLf】,這個特殊字元可以單獨使用,如【\n】。(PS:按「Enter」鍵實際產生兩個字元換行和回到開頭(ASCII編碼10:\n和13:\r))
    2. 【雙引號】中的變數被編譯成顯示,但因為英文字連再一起,所以編譯後是顯示【valuedef】變數的值。因為根本沒有宣告【valuedef】變數的值,所以最後產生的時候是空值,就什麼都沒有。
    3. 【單引號】直接輸出文字內容,所以特殊字元或變數都無效。
    4. 【雙引號】中的變數被編譯成顯示,此字串內容中,還有用到特殊字元【\t】來出現tab的字元。
    5. 【單引號】直接輸出文字內容,所以特殊字元或變數都無效。
    6. 【單引號】直接輸出文字內容,所以特殊字元或變數都無效。
    7. 雙引號內容中可以出現單引號,反過來說也行,如果雙引號內容中要出現雙引號,需要加上特殊字元\。
    PHP 會解譯【雙引號】內容中的變數,而【單引號】則視為純字串出,PHP 不會再處理單引號內的內容。所以單引號與雙引號在使用時會有時機上的差異。
  • 常數

    <?php
        define('myValue','1234');
        echo myValue;
    ?>

    常數的寫法與變數不同,定義後名稱前面不需要再加上【$】號。→官方文件
  • 脫逸 (Escape)字

    <?php
        //去除get_magic_quotes_gpc on 時 針對特殊字做脫逸 (Escape)的影響
        if (get_magic_quotes_gpc())
        {   
            $HTTP_GET_VARS = array_map('stripslashes', $HTTP_GET_VARS);
            $HTTP_POST_VARS = array_map('stripslashes', $HTTP_POST_VARS);
            $HTTP_COOKIE_VARS = array_map('stripslashes', $HTTP_COOKIE_VARS);
            $_GET = array_map('stripslashes', $_GET);
            $_POST = array_map('stripslashes', $_POST);
            $_COOKIE = array_map('stripslashes', $_COOKIE);
            $_REQUEST = array_map('stripslashes', $_REQUEST);
        }
    ?>

    這個部份是比較與執行環境設定有關的。在PHP.ini中有個設定【get_magic_quotes_gpc on】(官方文件),可以讓使用者輸入的字元中一些特殊的字元加上【\】,如單引號【'】、雙引號【"】、斜線【\】,以防程式處理時會造成意想不到的錯誤。但這樣的設定可能反而會讓我們在處理資料時更加棘手,所以這串程式能判斷當這個設定開啟時,讓這些特殊的字元不經過加上【\】的畜哩,直接取得使用者輸入的內容。
相關連結
  • TWAMP:免安裝的中英文伺服器執行環境。
  • PHP官方開發手冊:英文開發手冊。
  • W3School:簡體中文的網站開發程式語言文件,雖然有些不夠完整,不過很適合當工具書或初學參考(除了PHP,其他還有許多網頁語言)。

[心得]塑膠用料的使用

在癮科技上看到的資料~
我把結論放在最前面~
看來以後要多注意一下塑膠用料的使用了~
以下內容轉貼自癮科技

簡單來說,下次買塑膠容器,記得找到塑膠分類回收標誌看一下。如果是「2」、 「4」、「5」的話是安全的,「1」最好不要用超過一次,「3」、「6」是危險的,而「7」則要看情況而定。
[圖片來源:Popular Science] 聚對苯二甲酸乙二酯(PETE 或 PET) 名 字聽起來很厲害,其實就是一般人常說的「保特瓶」(保特瓶其實就是英文 PET bottle 的翻譯)。保特瓶的材質本身沒有危險,但因為 PET 的結構並不緊密,在縫隙中可能會藏有之前使用時留下來的糖分和隨之而來的細菌,因此並不建議使用超過一次(就是不要當水壺用的意思啦)。
高密度聚乙烯(HDPE)和低密度聚乙烯(LDPE) 聚乙烯在食物保存而言,是最安全的材料之一。不僅沒有任何已知的有毒添加物,而且回收也相對容易,大多數的回收廠都有回收聚乙烯的能力。聚乙烯應用超級廣泛,瓶子、罐子、夾鏈袋、裝蚵仔麵線的那種透明塑膠袋都是。
聚氯乙烯(PVC) 危 險,非常危險!氯乙烯這個聚乙烯的主要材料本身就是個很危險的有毒物質,有致癌的可能,再加上聚氯乙烯裡常常有各種添加物、增塑劑,對健康造成不同程度的 危害。更慘的是,燃燒 PVC 會產生氯化氫、氯氣和惡名昭彰的有毒物戴奧辛,因此世界各地的環保組織都在建議廢除 PVC 的使用。
聚丙烯(PP) 聚丙烯在化學結構上和聚乙烯類似,因此也是安全的塑膠,大部份的特百惠食品容器都是 PP 或 LDPE製造的,但也有少數是危險的 PC(聚碳酸酯),買之前要看清楚啊!
聚苯乙烯(PS) 聚苯乙烯英文原名Polystyrene,中文依發音翻成「保麗龍」。保麗龍的危險主要來自於它的原料苯乙烯是有毒的,而且聚苯乙烯的化學穩定性比較差,受熱時有可能滲透有毒物質到食物裡。買保麗龍餐盒裝的食物回家後,最好立即換到其他容器內。
聚碳酸酯(PC)、聚乳酸(PLA)等 所 有在塑膠分類前六類之外的,全部都分在第七類(怎麼,不會以為前面的數字是小薑亂寫吧 XD)。在第七類的眾多塑膠中,聚碳酸酯和聚乳酸是比較常見拿來裝食物的材質。聚碳酸酯前面說過了,是一種會釋放類荷爾蒙化合物的危險材質,而一般來拿做 「環保塑膠袋」的聚乳酸則是安全又分解迅速的好朋友。

[經驗]裝新設備電腦開不了-電源不足

這幾天買了顆WD 750G(AACS)的硬碟來裝在我的老電腦=$4250

再買個PCI to SATA 2port卡=$650

還有轉SATA電源線=$55

一共$4955

剛好用掉我預計領出來的5000元~

不過昨晚全部裝上後出了兩個問題~

  1. 硬碟太多個~都擺在一起會過熱造成無法正常運作~
  2. 電源不夠力~整台電腦的設備都裝上就回連開機都開不了~

試半天才歸納出上面兩個問題~我還以為電腦壞了~嚇了我一跳~

最終我只好先拔掉我的顯示卡~然後再加上台小電扇~

才能讓我現在正常的玩我的電腦~

如果要買新Power又要再敗個幾千塊了...還是先忍耐看這樣的裝法會不會有問題好了~

[心得]Ubuntu初體驗-不得善終

序

話說資工的學生Linux這麼不熟實在不是件光榮的事~

不過這一切都是跟用到的機率有關~

無論如何~Ubuntu近來因為Google而聲名大噪(可參考癮科技)~

我朋友都忍不住下去玩~我這個資工本科的人在觀望許久終於忍痛把我家電腦大風吹~

弄了台爛爛的NB來灌~但最後仍不得善終~

不過卻從中學到許多Lunux的操作~就把這件事當作做壞的實驗記錄下來吧~

環境

我的NB是NEC的舊機種,對XP它就已經連驅動都不用提供了,因為XP就直接可以驅動所有硬體了~

不過這台NB的最大問題就是它的內建網路卡是完全不能用的,接了線也沒反應。

所以我之前還買了個無線網卡(PLANEX GW-NS54GMZ)接在它的PCMCIA~

而最後的敗筆也敗在這個無線網卡...

我在裝的時候發現這張卡不提供Linux的驅動程式,但網路上有人Post出他成功的安裝過程~

所以我還是嘗試以這張網卡安裝看看~


相信有用Ubuntu的人做的第一件事就是抓張Live CD來看看執行起來會如何~

我使用的是Ubuntu 7.10,下載完後燒成光碟來試用。

安裝

以Live CD開機後,我想我的電腦光碟機真的滿老舊了~

整個運作起來就是慢到不行~

我玩了一陣子後就決定把Ubuntu直接安裝到硬碟了~

不過剛開始安裝我就遇到Lunux與Windows安裝差異的首部曲~

硬碟分割...啊是要怎麼分割?~用什麼格式?~要怎麼分好?~


稍微從網路上爬了一下文~

了解系統最少要給它個4G空間,

初學大致上都用ext2或ext3(ext3是ext2加log的擴充版),

然後要分記憶體空間的2倍大小為swap當虛擬記憶體~

不過我一開始選ext3都會當在磁碟分析的地方~

後來我選ext2就沒這個問題~我也不知為什麼~

驅動

完成安裝後,就要處理我的無線網卡~

這時我就發現一個大問題,Unbuntu上許多套件要使用前要安裝,

但大多數的教學所使用的方法都必須要連上網路然後再下命令安裝~

安裝過程中~有缺的套件它會自己上網抓~

可是我的環境就是在這個網卡安裝完前,沒辦法讓我的Linux上網~

想要從別台下載套件卻也不知要下載哪些套件~還有該如何安裝~


我最終參考了許多人安裝東西的過程,失敗重來好幾次後~

最終步驟如下

  1. 下載Ubuntu Alternate install CD的ISO檔
  2. 下載Ndiswrapper套件(如ndiswrapper-1.51.tar.gz)
  3. 將這兩個檔案用隨身碟之類的東西放到Lunix可讀的到的地方
  4. 然後用終端機輸入命令如下,將【ubuntu-7.10-alternate-i386.iso】指到ISO檔
    sudo mount -o loop 【ubuntu-7.10-alternate-i386.iso】 /cdrom/
  5. 然後將此光碟設為更新來源
    sudo apt-cdrom -m add
  6. 安裝build-essential(此套件用來提供GCC的編譯相關套件,Ndiswrapper安裝時會用到)
    sudo apt-get install build-essential
  7. 安裝完成後,就可以安裝Ndiswrapper套件了,先找個目錄做為等一下要放安裝檔的地方,建議放在【/home/帳號/】底下,下命令改變現在所在目錄到該目錄
    cd 【/home/帳號/】
  8. 將【ndiswrapper-1.51.tar.gz】指到ndiswrapper套件壓縮檔所在
    tar vxzf 【ndiswrapper-1.51.tar.gz】
  9. 解壓縮後就會出現對應目錄,進入該目錄
    cd ndiswrapper-1.51
  10. 下面是依照套件安裝的說明做的動作,分別執行這三個動作,如果中間都沒有Error出現,那就是安裝成功了
    make uninstall
    make
    make install
  11. 我試過這張網卡的幾種版本驅動後,最後覺得最可能是WinXP_2K版的(雖然最後還是沒成功)。請確定 INF 檔,SYS 檔全部都在同一個目錄下。現在使用ndiswrapper來安裝,指令如下(【mrv8335.inf】指到該驅動程式所在)
    sudo ndiswrapper -i 【mrv8335.inf】
  12. 你可以使用下面的指令來看看是否有安裝該驅動程式,他會列出他有安裝哪些驅動。
    sudo ndiswrapper -l
  13. 執行下述指令來載入 module,這時網路卡就應該會出現在系統可偵測到的網卡中並名為wlan0了。(如果你要看有沒有錯誤發生,可以到/var/log/syslog去看log檔)
    sudo modprobe ndiswrapper
  14. 儲存ndiswrapper的設定到modprobe
    ndiswrapper -m
  15. 下面這個命令我也不懂功能,是參考別人做的過程下的指令。
    loadndisdriver mrv8335
  16. 如果要在載入時設定網卡去找網路可編輯檔案【/etc/network/interfaces】內容,增加下面這段
    auto wlan0
    iface wlan0 inet dhcp
  17. 編輯完後執行下面的指令它就會依該網路設定執行網路的scan
    sudo ifup wlan0

結果

這些大致上就是我做的步驟,不過最後雖然電腦有找到這張網卡~

從syslog上也會看到這張網卡被抓到了~

不過只要一執行網卡狀態的工具(如iwconfig)就會發現停住了~

應該是它在偵測網路時,會讓電腦不能再執行下去~

就連我要關機都不行,還用終端機下【shutdown now】,然後它就會關到一半然後停住~

讓我強制的用手動方式把電源停止...

真不知問題再哪~希望有人能夠幫幫我~

Linux操作雜記

  • Ctrl+Alt+ F1~F6 終端機
  • Ctrl+Alt+ F7 X-window
  • vim指令:文字編輯器
    • i:進入編輯模式新增文字
    • d:清除
    • Esc:離開編輯模式
    • :q:離開
    • :wq:儲存並離開

Wubi

可在windows安裝後,從windows下執行的Ubuntu安裝程式。

它會虛擬出一個磁碟空間以安裝Ubuntu~

目前能裝Ubuntu 7.10的版本為:Wubi-7.10-alpha-rev386

它會去幫你下載ubuntu-7.10-alternate-i386.iso與ubuntu-7.10-desktop-i386.iso

我想也可以自己下載後放在安裝檔路徑下的ubuntu-backup資料夾,它好像自己會去抓~

PS.我目前測試的時候改用這個,不過網路上也有人說Wubi對硬體的支援不太好~

相關連結

[心得]別帶著智慧進墳墓

序

今天去一個佛教講堂聽一位來自柏克萊的Dr. Lewis Lancaster的演講,

他正進行著一個龐大的資料收集計畫。

收集著各地宗教機構的人物、事蹟、歷史、地點、文物照片...等,希望能讓更多智慧以科技的方式保存與分析~

使得大家能更容易取得與應用這些資訊~

從中我聽到了一個有趣的段落~

資料侵權

有人問到,有些資料他是從別人的網站中截錄甚至是複製出來的~這樣不會有侵權的問題嗎?

(以下這個段落是我大至記憶中他的回答,我並未求證此事)

他說~

在加州,你從別人的網頁上取出5張圖片並註明出處的情況下,這是合法的。至少他的律師是這樣跟他說的...

你從一篇文章中引用25%的文字並註明出處的情況下,也是合法的~

你知道嗎~

日本有許多大學在出版一本書後~會直接免費的將這本書寄給所有人(應該是指相關的人,不是全日本吧...)

而韓國寫書來賣的人地位是非常低的~

你能很清楚的說,任何知識是屬於某一個人的嗎?


我將很多的知識與資料盡可能的提供給大家,只要大家在用的時後記得註明出處。

這樣收集到的資源,我們也很願意免費的提供給大家。

因此我的網站上的資料來源,我也盡可能要求提供者以免費的方式提供大家使用。

(雖然還是有部份資料提供者所提供的是有所限制的)

在電視推行的時代,我們將電視讓給了商人,自己什麼都沒做。

到了電腦網路的時代,我們希望能做點事。

目前柏克萊大學也將許多上課的內容錄取,免費提供網路上的人觀看學習。

實際在大學上課的人一班雖然只有60人,但從網路上有課程已被十幾萬人觀看。

而且這些智慧都被保存在網路上了。(雖然無法保證這些資料不會因為意外問題而流失)

資料取用

這段對話,讓我想起前幾天我才跟小狼討論過類似的問題。

大概的問題是:

現在有許多人會利用一些方式來取得資料,做為它的應用資訊來源。

例如,以程式直接抓取網站內容,經過運算剪輯處理後再使用、

以RSS取得某些網站的文章、新聞...等資訊、

甚至是分析網站的某些資料(如影片、照片)...等,將其做成小工具、甚至是網站、系統等行為。

這樣難道不侵權嗎?


我那時以幾個論點來分析這件事:

  • 我們最愛的G or Y搜尋引擎難道不就是如此嗎?
    當然,以網站的觀點,如果Google能增加使用者來的意願,網站當然願意對他敞開大門。但別人引用你的東西,如果能將使用者引導到你的網站,那不就變同樣道理。
  • 既然提供RSS這種可被公眾訂閱的東西,那就等於你提供開口讓大家來引用你的東西啦~
    如果你當真又不想被自動的全文引用或是根本不想讓別人用你的文章~你大有許多方法來阻擋別人對你RSS的取用權限。
  • 不想被分析網站的某些資料而被直接截取的話,一但知道別人取用你的資料,那有太多方式阻擋它的直接取用。
    的確,當你發現這樣的行為,你甚至可以採取法律途徑控告未經授權的開發者或系統管理者。但,就算告到那傢伙破產,你不一定能拿到半毛錢(因為這個開發者可能也沒錢賠),你甚至也讓其他人對你有了些負面形象(這是為什麼許多網站提供如此多的API讓第三方廠商使用者,而不是動不動就告人的原因)

反過來想想

我當真有料,我製作的東西就是我所花費心血做的。

我投注時間、金錢、力氣、腦筋,不就是為了混口飯吃。

如果沒人給我點錢或利益,那我不餓死了~我總要生存吧~

老話一句~我上有父母下有子女~

能有所供獻我是很開心~不過也要有實質的回饋吧~


所以要不就不公開~真的公開也會希望不要被白白被用吧~

那麼~我該如何做呢~

  • 爭取經費?
    願意出錢而不能出力的人,其中也會有人希望世界上有更多美好的事務與豐富的知識不斷增加。
    就像那個柏克萊的教授說他的學校,平常給他薪水讓他研究寫些東西。然後等他為了升等而又將他寫的文章給了期刊後,又花錢買期刊來學校裡。等於就像為那個研究結果付了兩筆錢。
  • 幫忙別人也有東西拿?
    這是個互助互惠的世界。
    你用某些網站的空間,它給你更多免費服務。
    你幫某些網路公司掛廣告,讓他廣告賺越多,你也賺越多~前提是你寫的東西夠熱門~
  • 提高自己知名度能提昇你賺錢的機會?
    平常讓大家看到你的一些創作~讓大家了解你是一個不錯的撰文者或攝影師、程式設計師...等。
    你就有機會成為老闆、雜誌、公司有興趣的人,那你還擔心找不到賺錢的機會嗎?

給人胡來

阿不然我的東西難道放上網路就要給人胡來呀?

現在其實有許多人對引用的禮貌也有了一定的共識~

主要規則就是註明出處~

當然每個人看每件事都有不同的看法~除了註明出處外~

  • 有的人覺得網站給人引用是很榮幸的事~
  • 有的人說你只能引用一小部份~
  • 有的人說,你只能引用一點點~
  • 有的人說你只能以標題連結~
  • 有人就覺得你一定要先跟網站詢問,同意後才能引用~
  • 有的人說~就算你標明出處也算侵權~

以上這都是我在網路上逛聽到的事蹟~

甚至還聽說有人沒被警告就被告~


雖然智慧財產上好像有些規定~

但各國各有各的規定~網路又是世界性的東西~加上使用者網路的人有太多對這些沒啥概念~

就算有概念~又會覺得明明有這些資源為什麼不能用~

感覺就像眼前有很美的一幅畫~旁邊沒人說不能拍照~

而且我只是為了留念~結果一拍後畫家就殺過來的感覺~

如果真是如此,我覺得可以警告對方限期拿掉你的創作~

然後為網站加上些禁止引用或引用權限的標語(如 網摘、引用、連結,不轉載 by Jas9)~

再來也可以進一步讓自己的創作能受到更好的保護~

例如,

  • 右鍵封鎖(這是防君子only的做法)
  • 以密碼或權限封鎖閱讀者(雖然有的平台有時會傳出bug造成可愛的照片被看到...)
  • 圖片、影片採動態改變位址
  • 以Session、Cookie等方式封鎖,讓外部程式不能隨意存取~

我隨便想就好幾個~相信大家有更多方法吧~

知識共享

雖然上面提供許多方式來封鎖別人~

但我想既然願意放上網又不設限讓人看~

如果這東西被人引用或是做為更有用的資料整理的話,

我相信別人只要願意標明出處或做個連結到原始來源的話~

大家應該也願意互相分享些好的東西~

畢竟人生短暫~智慧或創作帶著進墳墓那就消失了~

它甚至也不能被盜墓者挖出來~

多留些在大家都能取得的地方(網路)吧...

相關連結

[記事]Asp.Net讓人有像VB一樣簡單的印象

很久沒在這寫文章了~因為沒碰到什麼特別想寫的題材~

不過這段時間我也沒閒著~

因緣際會下~我用ASP.Net 2.0寫了兩個很簡陋的網站~

一個是免費幫某佛教講堂寫的成績單系統~(這樣有算做功德嗎?)

因為他們裡面其實沒什麼會寫程式的人~

就有人用Access要提供師父能將學員資料還有課程成績輸入進去~

他原本還用Access的一些表單來讓人容易點輸入資料~

可是後來發現沒辦法輸出一個個人歷年成績單的格式~

那時透過我老爸找上了我~

想要我用VB (後來我才知道他應該是在說ASP.Net) 來幫他處理這個問題~


另一個是幫某大學資科的學生寫的網站~(小小收點工本費~)

他說他的指導老師希望他能學個語言~

然後做個完整的系統~

他就開始上網找別人的範例~

結果在藍色小鋪找到我三年多前以VS2003寫的一個網站~

他覺得功能符合他的需求~

但因為他要用VS2005開發~又有點趕時間~

最後找上我這個原始開發者~希望我能用VS2005的控制項做出那個網站的功能~


第二個Case我用三天完成了~

第一個Case因為需求是慢慢增加的~加上我是有空才做~有時要問需求又找不到人~

所以還在弄~


在這兩個Case中~我發現一件事~

從ASP .Net到了ASP .Net 2.0後~

這個網站的開發方式與工具~已經開始讓人有如同VB 6的那種感覺~

【夠簡單~夠直覺】

至少門檻已經降到逐夠讓一個業餘想寫寫小網站的人~

可以在拖拉點選之間做出一個功能還不算太差的東西~


為什麼我會說像VB 6呢~

相信曾經經過VB 6極盛時期~而且玩過VB 6的人~

應該跟我有相同感覺~

【居然可以這麼容易寫出一個視窗程式】

當然~這要看你玩多大啦~

但至少是個門檻夠低的開發工具~


而ASP.Net 2.0能像當初的VB 6一樣~

給連VB怎麼寫的人都不知道的狀況下~居然會在有需求時~

跟我說一句~

【要做這樣東西,好像可以用ASP.Net吧】

或是

【聽說ASP.NET2.0配合2005可以省很多程式碼】

重點除了它真的把做網站搞的很像VB 6的開發模式外~

另外還在後來提供Visual Web Developer 2005 Express這個免費版的開發工具~

讓這件事變的更沒理由不用看看~

我並不是絕對挺微軟或是其他公司~

而我自己也曾與朋友討論過各種語言的開發特性與缺點~

甚至最近也剛碰ROR~

但就一個簡單快速的概念驗證(prove of concept)的網站開發而言~

ASP.Net確實有相當程度的吸引力讓我使用它~

這是我的看法~

[節約]自我約束的購物想法

話說(←我發現我最近很喜歡用話說起頭)我在MSN匿名寫著個好康道相報的事~

就是我最近才注意到Canon一年前有個通告~說它有很多個機型的相機CCD會有問題~

所以如果檢查是那個問題~就可以免費維修~

我有台老機型 A70 當初退休就是那個原因~送修還給我要幾千塊~

所以就一直擺到現在才看到那個通告~就趕快拿去修~


有個壓抑很久~一畢業就跑去買單眼相機的學長~

聽到就跑來慫恿我買單眼 (我啥時說我要買了~我明明是送修...)~

(話說我身邊的80G隨身硬碟好像也是他慫恿我的...那是題外話)


我就跟他說~

第一~我沒錢

第二~賺不回來

第三~用的機率(時間)太小


他很懷疑的問我賺不回來是什麼意思~

這就是我這篇的重點了~


因為我覺得~一般而言~花錢的點會有幾個~

  1. 生活開銷(食衣住行)
  2. 人際關係(電話、通訊)
  3. 工作事業(投資、工具、知識學習)
  4. 額外的玩樂費用

以單眼相機而言~如果你要把它歸在玩樂的部份~

可以在出去玩樂時~能拍美美的照片回來留念~

這在近年來也是越來越普遍的狀況了~

不過我的想法是~對我而言~單眼的價位已經是不低的物品了~

所以花下這筆錢的話~玩樂的費用比例會佔太高~

如果真要買~除非把它列為工作事業那項~

也就是當成在買賺錢必須的工具~

最起碼這樣的支出要能與他本身能帶給我的收入打平~

這也要問問自己【玩不玩的到這樣專業的程度】

同理~像我這樣對高科技會有衝動的人~

看到新的東西~功能很多很強的東西~

真的很容易就會一頭熱的想要敗下去~

不過說真的~又不是什麼有錢公子哥~

買東西前只要想想~我買這東西能用它自己賺回自己的錢嗎?

想想後~就不會買下手了~

[書評]我看Google如何讓世界變平

序

【Google如何讓世界變平】這本書是我的書迷老姊送我的,在二技與研究所還沒畢業前,我都一直忙到一個沒有精神來看完任何書的狀態~

所以這算是我畢業後第一本從頭看到尾的書~

說起來這本書如果要當故事書來看也行,要當學習方法的書也算可以~雖然大部分陳述的是以事跡為主,但也參雜著一些作法可做為參考學習。我看過後就決定稍微整理一下裡面的一些內容,當自己未來在腦袋打結時可以回頭想一想的紀錄。

章節概念

以下是各章節所談到Google的一些事蹟與做法
  1. 誕生過程
    談到創始人如何從一個技術的研究轉為創業的基礎,關鍵在於看到遠景後,堅持理想直到尋找到融資的來源。
  2. 崛起關鍵
    以簡潔的風格,呈現專精的單一技術,讓使用者驚艷。強調改善網路世界而非營利,聚集死忠的支持者。
  3. 轉型全球化
    為求永續與擴張,商業化是必需的。股票上市,融入全球環境、文化、語言。
  4. 文化與風格
    提供20%個人時間自由實現,激發創造潛能。以【不要變得邪惡】為座右銘,以世界變更美好為目標,搶先別人洞察趨勢。
  5. 創造神蹟
    以搜尋引擎為基礎,為客戶找到雙贏的合作模式:關鍵字廣告與授權搜尋的作法與收費改良。
  6. 技術擴張
    攏絡人才,收購專業的小公司與團隊,建立多元的服務:Google Talk、Blogger、GMail、桌面檢索、地圖、電子圖書館。
  7. 商業策略
    面對信念與商業現實的衝突、網路惡意攻擊與國家公權的介入、全球文化的差異、各服務競爭者的較勁(Yahoo、微軟)所採與的對應方式。

方法學

以下是書中曾經出現幾個我覺得可以記下來的方法學
  • PageRank:
    基本概念是根據網頁的得票數判斷重要性。其中,若A網頁中有連結指到B網頁,則代表A網頁投了一票給B網頁。並且,越重要的網頁投出的票,權重也越高。
  • 帕累托法則:
    80%的成就,來自於給員工20%自由創造的時間所產生的企劃。
  • 荷蘭式拍賣:
    因創始於荷蘭花卉市場(鬱金香拍賣場),故名荷蘭式拍賣法。用在拍賣多個相同的物件,若有N個物件,出價最高的N個人得標,且出售價為N個人所開出的價格最低數。Google將此方法用在股票第一天上市的價格,以提升公平性,降低經銷商操縱股價的可能性。
  • 自由的待遇:
    管理層不能限制員工在公司內的自由流動,員工可自由的由一個部門轉到另一個部門。因為【只有做自己喜歡的事,才能很有創意】
  • 平等的待遇:
    職位的不同,只能代表你決定的事情不同,不代表你可以凌駕於他人之上。員工可看到其他人包含上級的工作計畫以了解公司的方向目標,並可提出建議與互相監督考核。你做的好不好,身邊的夥伴最清楚。

總結

其實Google這幾年快速的進化是有目共睹的,只是在那背後,讓我比較在意的是他還有什麼事是可以學習的。

如果你問這本【Google如何讓世界變平】是否值得花時間看,我覺得對於一個對自己有些商業期許的工程師而言,是不錯的選擇。

畢竟Google就是從如同我們在研究的東西起家的,姑且不論應該沒多少人研究的東西可以最後搞的這麼大~

但與其馬上去讀一堆比較商業的書,這本書倒是能讓我們轉轉工程師的腦袋,想想未來~

不過如果你想從中看到很深入的技術或是商業、管理之類的東西,建議去找專業的書,否則你會覺得這本書在天方夜譚~

相關連結

  • NHK - Google 革命Posted by Mr. Monday(NHK電視台報導Google的影片介紹,拍的很不錯)

[ 心得]新一代網路重度使用者到底在玩什麼

序

大約是在當學生的最後一年中~我從一個對網際網路有點興趣的人~

變成了重度使用者~其中一部分原因是Web 2.0相關的服務變多的原因~

雖說身為資工的學生~這是再正常不過了~

不過說重度其實是個模糊的形容~

因為我身邊有一堆玩技術玩的比我兇的人~

不過當我意識過來時~

我才發現~身邊的人就算知道一堆東西的存在~

但真正會去用的卻不多~而我卻因此把用這些東西變成習慣~

搞的有點資訊躁鬱症~

有那麼嚴重嗎?~咱們來看看你陷入網路的世界有多深~

RSS

這算是我陷入的主要原因~

簡單說RSS是個資訊來源的協定~它需要一個訂閱的工具,可以訂閱你關注的網站~

當網站有更新的資訊他會把新文章的全文或摘要放在RSS,這時你的訂閱工具就可以去讀那份RSS~

告訴你網站更新囉~並且你可以利用訂閱工具直接閱讀這個文章~

讓你不用我的最愛在那點半天,還不知道那個網站更新過了沒~

這對於像是有一堆朋友有Blog~或是每天都有逛網站看有沒有新資訊的我來說~

真的是如虎添翼~

也因此養成我會隨手去點一下我的RSS訂閱器(SharpReader)的習慣~

喜歡Blog勝於手寫日記

手寫的實在太麻煩,要放圖不行,不能連到別的文章,不能與別人分享...

如果你是像我有這種感覺的人~

我想你應該會喜歡寫Blog~

不過我想重度使用者並不完全跟我一樣~

也有另一部份自己寫的不多~但喜歡看朋友或是別人的Blog~

也因此會需要上面的RSS

  • Blogger Google收購的Blog服務,可以客製的功能很多~卻也因此難入門
  • Spaces Live 微軟的Blog服務,因為跟Live Message結合而使我想用它
  • Yahoo!奇摩部落格 Yahoo的,基本上該有的功能也都有
  • 無名小站 說是台灣的奇蹟~近來卻因為行政問題鬧出許多問題
  • Yam天空 一直做的不差卻也沒有亮眼的台灣Blog服務~不過近來小動作頻頻~讓人期待
  • PIXNET 痞客邦 跟無名一樣從相簿開始
  • StreetVoice 許多藝術創作者聚集的Blog

搭配其他程式的網路服務

像是利用MSN、Google talk等軟體來公佈一些自己的事~

如Twritter、巴布、iSay...等

讓別人知道自己正在做什麼或想什麼事~

或是用MSN或Email訂閱RSS等服務~

我自己會用MSN來發巴布的訊息同步到Twritter,

還有用MSN配合MyIcon的iSay來收別人留給我的訊息~

逛書籤網站

我覺得書籤網站是互動性需要很高的服務~

雖然就我觀察在台灣真的會花很多時間在收藏書籤的人比例其實不算高~

不過這樣的網站可以讓我滿足想看看別人

挖到什麼好文章、有什麼新資訊、好笑的影片~

所以逛逛這樣的網站或訂他的RSS也可以挖到不少好東西~

  • HEMiDEMi 台灣打前鋒的書籤網站
  • funP 用不同概念在經營的書籤網站
  • MyShare 智邦的書籤網站
  • Search 2.0 Pchome新推出的書籤網站

用網站服務取代應用程式

自從Web 2.0與AJAX等東西的出現,

網路上出現許多好用的服務,

有許多服務甚至足以取代現有的本機應用程式~

因此幾乎都掛在網路上的人就開始能不安裝的程式就不安裝,

用網路上的服務取代~

像是Word、Excel、FontPage、Outlook、行事曆、地圖、字典的取代品

而其中又以Google推出或收購的服務目前佔了大部分~

喜歡嘗試新服務、有的沒的小玩意

當陷入到一個新資訊躁鬱的狀態後~

就會開始出現新的症狀,

就是覺得別人的資料已經不足以彌補躁鬱帶來的急躁感~

就會開始自己挖東西~也就會開始玩些有的沒的~

不知不覺用掉一堆時間~


例如一開始會在自己的Blog動手腳,

開始找些有的沒的小玩意放在自己的Blog~

像是小寵物、外掛等~

然後進一步看到別人介紹或是自己逛到的網路服務或是小工具~

就會想去試一試~

然後更進一步會思考自己能怎麼用這些服務~

甚至自己用一些方式來組合服務~

下面列出與一堆服務相關的教學與文章~

結語

我大致上列了一些我覺得Web 2.0時代重度使用者的特性~

並且把一些我覺得滿經典的網站相關文章連結列出來~

我自己覺得當個重度使用者的壞處就是花太多時間在網路上逛了~

至於當個重度使用者的特性是否只有這些~

那就如同Web 2.0一般~只會不斷進化~

但花在電腦前的時間就是重度使用者的指標~

如果你要說重度使用者是御宅族~我想這就看怎麼定義了~

維基百科中就有提到台灣的御宅族定義與日本已經不同了~

像我這樣花一堆時間在電腦與電視前的人就算沒到很嚴重的程度~

也算是危險群了~


我只能勸勸跟我一樣危險的人~

如果可以~好好規劃自己再電腦前與起來動一動的時間平均一點~

有空多往外面走吧~多接觸實際的人吧~

RSS合併效果比較(RSSMixer與Yahoo Pipes)

序

最近看到了一篇Werboy寫的究極RSS合體術!不管你有多少個RSS,全部幫你合而為一 - RSSMixer

介紹到一個新的RSS合併網站-RSSMixer,專門讓大家能把自己很多個RSS併成一個RSS~

其實這個功能我在管你有幾個Blog,就是要你的最新資訊(Yahoo Pipes+FeedBurner)這篇就有用Yahoo Pipes達成過~

這樣的功能能讓有多個Blog、有Twritter、或是其它服務而有很多個RSS的人~

可以將RSS合併~讓使用者可以一次訂閱你的最新資訊~

當然如同Werboy談到的~也可以把一堆人的RSS或是一堆網站的RSS合併起來方便訂閱~

但我玩了一下RSSMixer後(玩的結果),發現了一些細節上的結果差異~

既然已經有人寫了使用教學~那我也不重複了~

以下就來談談這兩者的差異吧

Yahoo Pipes與RSSMixer的差異

其實這兩者因為方向的不同,所以如果拿製作方式的差異來比可能不是那麼公平~

不過就把RSS合併這方面來看呢~

  • 製作方式的差異
    因為RSSMixer玩全專注在合併這方面,所以使用者就輸入要合併的RSS網址就好了,沒有多餘的東西~
    而Pipes除了合併外,還要加上以日期排序等元件~製作起來步驟比較多~
    而且RSSMixer不用登入就可製作
  • 管理差異
    雖然RSSMixer不用登入就可製作,可以讓使用的時候少掉註冊等事~
    不過確也犧牲掉讓使用者能管理維護自己的RSS功能~所以以後如果要修改就要重建一個RSS了~
    但Pipes原本就可能讓大家修修改改~所以沒這個問題~
  • 網址差異
    Pipes所輸出的結果網址很複雜~
    而RSSMixer則用妳輸入的名稱的英文與數字來產生一個簡短的網址~但如果是全中文名稱則會出現一個亂數的數字的樣子當網址~
  • 篇數差異
    如果按照我的教學用Pipes來合併RSS,基本上如果每個RSS有20篇文章,3個RSS合併後的RSS就會有60篇文章~
    當然~因為Pipes可以客製化的能力比較多,用Operator的【Truncate】元件就可以指定最後輸出的篇數限制~
    而RSSMixer則預設就是25篇了~
  • 內容差異
    基本上Pipes會直接把你的RSS內容輸出~但RSSMixer就我的觀察它好像隱藏掉HTML的內容~
    例如下面這張圖,同樣一篇原本有圖的文章,經過RSSMixer後就沒有圖了,換行也消失~
  • 結果呈現差異
    Pipes在解果呈現時,讓大家可以選用RSS訂閱、My Yahoo、Google、Bloglines...等~
    而RSSMixer另外提供了Apple Dashboard Widget、Web Widget、iPhone等方式來訂閱
    其中的Web Widget是讓你可以用Html與Script放在網站邊邊來呈現結果的功能~不過我覺得這只是加一點語法來呈現RSS~

總結

就複雜度來說,RSSMixer當然是簡單許多~

但為了以後還能修改RSS的來源,我還是會用Yahoo Pipes~

不過現在的RSSMixer還只是Prototype v0.1~

很難說現在的功能就會是以後的功能~

如果只是想很快的合併RSS的話~不妨去玩玩看RSSMixer~

你會發現原來RSS一點也不難用~

BlogLive使用感-還早勒

話說Yam天空推出BlogLive已經不是一天兩天的事了~

簡單說就是個裝可愛的RSS線上訂閱器~

當然~這麼說可能有點貶低它了~

因為它可是自稱是個擬人化的部落格呈現方式~

BlogLive簡介

上面那個有東西跑來跑去的就是他的畫面~

它能讓使用者將自己有興趣的Blog或是新聞等資訊~

藉由RSS的方式新增到自己規劃的園地~

如果這個RSS的擁有者在BlogLive認證過他的RSS,並且未他的RSS設定了一種可愛的角色~

這時你訂閱了他的RSS就會看到那個小動物在那跑來跑去了~


BlogLive既然搞出了這麼個可愛的表現方式~

自然就可以讓大家把自己訂閱的東西嵌入在自己的Blog上面~

增加自己的Blog熱鬧程度~


介紹過BlogLive~如果你對他有很高的期望~

進去玩後我有點擔心你會失望~哈哈哈~

怎麼說呢~

BlogLive還有點陽春

我對他的認證方式是沒什麼意見啦~

就是發一篇文章~放上它的認證碼~

他去讀你的RSS就能確認這個RSS是你的了~

但目前的功能實在有點陽春~

Mr. 6稱它是直覺式Web 2.0或許有些過早~

要訂閱RSS可以手動輸入、或是用OPML匯入的方式~

然後呢?

首先會發現一件事~他只支援RSS~不支援Atom~

這對非重度使用者的人來說會不知道為什麼有的人的Blog它訂閱不了

再來就是功能還不完整~

現在而言~只是個如同給Blog當外掛的小玩意~

實用性不高~

Blog有新文章我也看不出來~

連個搜尋的能力都沒有~

如果我想藉由他達到像是社群等功能~

就會發現要找朋友都不容易~


熱門訂閱或是新朋友的資訊實在太少~

想多看幾篇也不行~

也沒有今日熱門或是輪撥的機制~

如此一來~他就只能當個小工具~

而不能達到比較大的應用~

總結

我談這些不是在唱衰這個服務~

而是希望他這個實驗性的服務會越來越完整~

BlogLive也確實讓大家看到了一些新的作法~

當然也希望大家無聊時去玩玩看~

也歡迎大家訂閱我的RSS

讓我的貓咪在你那跑~呵呵~

相關文章

[記事]2007電腦應用展

今天下午去逛了逛電腦應用展~幫我二姊買印表機~

 

順便逛逛看有什麼好東西~

 

首先~我進到展場後~逛了逛~發現這回的展場走道感覺比較寬些~

整個世貿一館的一樓都是展場~我想這是這回能有這麼多廠商~卻也還算寬敞的原因~

 

已經很久沒這樣規劃了~記得以前也有過這樣的規模~

不過近年來類似的展次變多~即便有時會有一三館一起~不過我倒覺得這回比較好逛~

 

逛到相機區~遇到社團的好友-小葵~想想這些年來越來越少聚聚~

以前大家動不動就聚在一起聊天玩樂~現在能碰上個一次都只能說是幸運了~

 

這回展場中還有我們學校的參展~另外還有許多機器人參展~

不過我懷疑有多少是台灣人自己做的~我真的覺得台灣人空有許多技術與資源~

不過不能馬上獲利的事卻做很少~得好好加油才行呀~

 

順道一提~電腦展一直都是攝影師的最愛~

這回也不例外~看到一堆砲筒一直拍~

有趣的事~好多攝影師都好高唷~他們一站在最前面一直拍~

我們後面的人都看不到了~~~矮一點的攝影師夾在中間隙縫或手拿的老高的拍~

還有聰明點的~直接拿梯子架在那拍...真不知是不是該說太敬業了~

為Neogadget加上標籤雲與簡單的圓角(Blogger Template)

序

經過兩天的時間,我算是把網站的第一次CSS改版改好了~

我並不懂CSS,也不懂Blogger的樣板怎麼做~所以邊弄邊摸索~

其實大致上整個樣版是從阿倫(真是多倫~)Blogger的新選擇-Neo template 裡面提到的Neogadget所修改而來~

這個樣版的特色就是它運用AJAX來存取文章~所以感覺很順暢~

而我將這個基本版型下載後又參考

Setup and configuration for New Blogger Tag Cloud / Label

加上標籤雲的部分,讓我一堆標籤不會看起來很怪~

然後順便試試把Google產生的圓角套用到這個樣板中~參考

挖掘Google隐藏的超强圆角效果 by. Ken Wong

(雖然套用的方法是自己想出來的~可能不是正規的CSS方式)

以下是我的動作紀錄

直接下載

基本上我只有小做修改~如果你懶得看下面的步驟~也可以直接下載最後做完的結果

套用Neogadget

  • 備份目前的樣板與相關設定
  • 至Neogadget的安裝方法去下載中文模版與中文Neo.js
  • 將中文Neo.js(neochinese.js)以記事本另存為UTF-8後(因為我不想用Big5),丟到網路空間去(我是丟到Google page creater)
  • 然後到Blogger的管理畫面,上傳套用中文模版,藉由修改範本的方式修改這個範本(要記得勾選【 展開小裝置範本】,不然會找不到一些Tag)
  • 找到原本的樣板中的【neochinese.js】網址,改為自己上傳的網址,並把語係改為utf-8,如
    <script charset="utf-8" language="javascript" src="http://自己的網址/myneochinese.js"></script>

標籤雲的套用

  • 找到【]]></b:skin>】,將下面的程式加到【]]></b:skin>】之前
    /* Label Cloud Styles
    ----------------------------------------------- */
    #labelCloud {text-align:center;font-family:arial,sans-serif;}
    #labelCloud .label-cloud li{display:inline;background-image:none !important;padding:0 5px;margin:0;vertical-align:baseline !important;border:0 !important;}
    #labelCloud ul{list-style-type:none;margin:0 auto;padding:0;}
    #labelCloud a img{border:0;display:inline;margin:0 0 0 3px;padding:0}
    #labelCloud a{text-decoration:none}
    #labelCloud a:hover{text-decoration:underline}
    #labelCloud li a{}
    #labelCloud .label-cloud {}
    #labelCloud .label-count {padding-left:0.2em;font-size:9px;color:#000}
    #labelCloud .label-cloud li:before{content:"" !important}
  • 在【]]></b:skin>】之後但在【</head>】之前加入下面這段Script
    <script type='text/javascript'>
    // Label Cloud User Variables
    var cloudMin = 1;
    var maxFontSize = 20;
    var maxColor = [0,0,255];
    var minFontSize = 10;
    var minColor = [0,0,0];
    var lcShowCount = false;
    </script>
  • 然後用下面這段Code取代原本的【<b:widget id='Label1' locked='false' title='Labels' type='Label'/>】
    <b:widget id='Label1' locked='false' title='標籤雲(點選後看上面)' type='Label'>
    <b:includable id='main'>
     <b:if cond='data:title'>
       <h2><data:title/></h2>
     </b:if>
    
     <div class='widget-content'>
     <div id='labelCloud'/>
    <script type='text/javascript'>
    
    // Don&#39;t change anything past this point -----------------
    // Cloud function s() ripped from del.icio.us
    function s(a,b,i,x){
         if(a&gt;b){
             var m=(a-b)/Math.log(x),v=a-Math.floor(Math.log(i)*m)
                }
         else{
             var m=(b-a)/Math.log(x),v=Math.floor(Math.log(i)*m+a)
             }
         return v
      }
    
    
    var c=[];
    var labelCount = new Array(); 
    var ts = new Object;
    <b:loop values='data:labels' var='label'>
    var theName = &quot;<data:label.name/>&quot;;
    ts[theName] = <data:label.count/>;
    </b:loop>
    
    for (t in ts){
        if (!labelCount[ts[t]]){
              labelCount[ts[t]] = new Array(ts[t])
              }
           }
    var ta=cloudMin-1;
    tz = labelCount.length - cloudMin;
    lc2 = document.getElementById(&#39;labelCloud');
    ul = document.createElement('ul');
    ul.className = &#39;label-cloud';
    for(var t in ts){
       if(ts[t] &lt; cloudMin){
          continue;
          }
       for (var i=0;3 > i;i++) {
                c[i]=s(minColor[i],maxColor[i],ts[t]-ta,tz)
                 }     
            var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);
            li = document.createElement(&#39;li');
            li.style.fontSize = fs+&#39;px';
            li.style.lineHeight = &#39;1';
            a = document.createElement('a');
            a.title = ts[t]+&#39; Posts in &#39;+t;
            a.style.color = &#39;rgb('+c[0]+','+c[1]+','+c[2]+')';
            a.href = 'javascript:fetchPosts(&quot;'+encodeURIComponent(t)+'")';
            if (lcShowCount){
                span = document.createElement(&#39;span&#39;);
                span.innerHTML = &#39;('+ts[t]+&#39;) ';
                span.className = &#39;label-count';
                a.appendChild(document.createTextNode(t));
                li.appendChild(a);
                li.appendChild(span);
                }
             else {
                a.appendChild(document.createTextNode(t));
                li.appendChild(a);
                }
            ul.appendChild(li);
            abnk = document.createTextNode(&#39; ');
            ul.appendChild(abnk);
       }
     lc2.appendChild(ul);   
    </script>
    
    <noscript>
       <ul>
       <b:loop values='data:labels' var='label'>
         <li>
           <b:if cond='data:blog.url == data:label.url'>
             <data:label.name/>
           <b:else/>
             <a expr:href='data:label.url'><data:label.name/></a>
           </b:if>
           (<data:label.count/>)
         </li>
       </b:loop>
       </ul>
    </noscript>
       <b:include name='quickedit'/>
     </div>
    
    </b:includable>
    </b:widget>
  • 這樣就可以把標籤雲套用在這個AJAX的樣版囉~

套用圓角

  • 將header的色彩稍微調整一下
  • 在header的背景色變數【headerBgColor】下面加上兩個顏色變數
     <Variable name="headerDescBgColor" description="Page Header Desc Background Color"
              type="color" default="#336699" value="#5E0000">
    <Variable name="headerBottomBgColor" description="Page Header Bottom Background Color"
              type="color" default="#336699" value="#660000">
  • 將Header的Style定義修改如下
    /* Header
    ----------------------------------------------- */
    #header-wrapper {
     margin:0;
     padding: 0;
     background-color: $headerCornersColor;
     text-align: right;
    }
    
    
    #header {
     width: 890px;
     margin: 0 auto;
     background-color:$headerBgColor;
     color: $headerTextColor;
     padding: 0;
     font: $headerFont;
    }
    
    h1.title {
     padding-top: 20px;
     margin: 0 10px .1em;
     line-height: 1.2em;
     font-size: 100%;
    }
    
    h1.title a {
     color: $headerTextColor;
     text-decoration: none;
    }
    
    #header .description {
     background-color:$headerDescBgColor;
     display: block;
     margin: 0 0px;
     padding: 0 0 5px;
     line-height: 1.4em;
     font-size: 50%;
    }
    
    
    b.header-bottom {
     display: block;
     padding: 0;
     margin: 0 auto;
     height: 20px;
     overflow: hidden;
     background: $headerBottomBgColor url("http://google.com/groups/roundedcorners?c=660000&bc=e6e6e6&w=20&h=20&a=bl") no-repeat left top;
     width: 890px;
     text-align:right;
    }
    span.header-bottomright {
     display: block;
     height: 20px;
     background: url("http://google.com/groups/roundedcorners?c=660000&bc=e6e6e6&w=20&h=20&a=br") no-repeat right top;
     width: 890px;
    }
  • 這樣標題就有圓腳了~

結論

上面是我覺得大家可能會需要的~

另外就是加上一些功能~我自己還有用到~我想可能不是人人都需要每個功能~

而且下面這些作者也說明的很清楚了~有需要的人請自行參考囉~

雖然這次大至上碰過Blogger Template~

不過果然CSS沒人帶入門~

還真是難懂的東西~到現在我還一頭霧水~

第一次專利接觸

剛才跟專利事務所的談過~

這回寫專利真讓我體會專利的幾個重點~

雖然下面幾個體驗~感覺很直覺~

但實際撰寫起來~就會發現真的不是那麼容易~

很多東西都要靠資料的收集與經驗的累積才能判斷自己所需強調的東西在哪~

不然即便寫的一大堆東西也都是白搭~

保護的內容

以軟體的專利而言,通常是以系統與方法的創新為主~

所以最終會以系統來描述發明所建立的東西~

項目描述

基本上描述系統與系統內的項目,由大到小是

系統/裝置→模組→單元

系統內可再包含系統,裝置與系統的大小是差不多的

先前技術

以目前市場進況與遭遇問題的描述為主~

發明內容

解決方法的重點描述~

實施例

以詳細的方式進行實作方法的描述~

能夠詳細點的話,當有人想推翻你的實作可能便不可成~

專利範圍

範圍不能劃太大~劃太大容易與別人的專利起衝突~

但也不能劃太小~範圍寫的過詳細能保護的東西也不多~

所以範圍的拿捏要恰到好處,描述的範圍以創新的重點為主,其他附屬的周邊如果要描述,則以附屬項額外描述

圖式

每個項目之間盡可能連線以表示之間的關係

相關連結

有Web 2.0概念的網站-Tagomatic-相關資料搜尋服務

序

倫倫常在網路上試用許多有Web 2.0概念的網站,大多數好用,成功的都有許多人推薦了~

不過Tagomatic這個網站是我第一次看到,概念很簡單,但很有趣且有用,簡單來說就是相關資料的集體智慧整理,以下我來談談它到底能做什麼

引述

  • The Tagomatic is an index of Bands, Movies, Books, and Web Sites that is void of genres. Everything is indexed by what it is similar to. The community can tag any item as being similar to any other item to create a more useful index of entertainment media. Help us help each other.

功能簡述

Tagomatic 是一個樂團、電影、書、網站的索引,所有的資訊都用它的相關資料所描述,而這些相關的資料都來自於你

試用過程

我個人稍微玩了一下,網站的關連對我而言最有吸引力~

例如我在找類似http://calculatepie.com/的網站(這個網站的的功用類似我【用 Psiphon 突破網站封鎖】這篇)~

所以就輸入了calculatepie.com,然後選我要搜尋Web Sites,這時就出現了一些類似的網站網址~

然後我就可以依照這些網址找到類似的服務~並且為它們加減分~

如果我覺得有相關的網址,也可以選【Tag a SIMILAR web site】來加入~

心得

大概是才上線不夠久,所以還沒辦法呈現它的威力,不過如果這樣的網站像del.icio.us一般受歡迎,那以後或許找東西又多了一種簡單的方式~

Web 2.0的網站從2005年直到現在,不斷湧現,有人報樂觀,有人抱悲觀的態度在看這件事,也有許多人想盡辦法從中謀利,目前為畢業衝刺的我,沒辦法直接跳入這個洪流,但我覺得除了跳進去外,各個網站的思考、經營模式都十分值得我觀察學習,就我現在的所看到的狀況,2007年應該會像所謂的.com泡沫化前夕一樣,網路上號稱Web 2.0的網路服務會多到使用者不知該用哪個,懶惰又容易被分散的使用者們的支持下,有多少服務能存活呢?拭目以待~

我需要大家

我不知道有多少人會看到這個Blog,我還滿好奇現在看到這些文字的人是誰,

我稍微說說我自己好了,我是個資訊工程的研究生,但也快要畢業了(只要我能順利完成最後的幾個專案與論文)~

平常接觸很多軟體開發工具如VS2005、RAD、RSA...,程式語言也碰很多,如ASP.Net、VB、J2EE、 J2SE、C#、C++...

因為身處的環境,東也碰,西也碰,只要專案有需要,連OSGi的程式也開發,

雖說軟體在台灣真的還滿辛苦的,有人還說賣雞排還比我們賺,不過寫軟體真的還滿有趣的~(前提是沒人逼你在什麼時間點完成~)

所以踏入後就一直窩在程式與開發的工作中~(都快便宅男了)

我喜歡用Blog記事,所以把一些東西都記在這,如果你有看到我的文章內容,歡迎與我討論,

甚至隨便貼一個相關文章的連結對我而言都有用~(我也都是從Google找一些相關連結貼在下面的~)

Web 2.0好多研討會

今天去參加在台大辦的 超越web2.0在企業之應用 研討會,第一個感覺就是~掛上Web 2.0人就特別多~

第二個感覺就是,雖然是收費活動,不過服務品質項是一般的網聚,服務的人員感覺經驗稍閒不足,從一開始簽到,中午訂的餐點數量問題,還有些小細節...ps.有的人有拿到這期數位時代~我居然沒有~嗚~借來看內容不錯~

不過既然是參加研討會,最重要的還是演講內容~

讓我印象比較深的幾個主題

談到Yahoo User Interface Library (YUI) 與 AJAX兩個重點,YUI是我第一次聽到的東西,大致聽完感覺是滿好用的東西,簡單來說就是簡化開發Java Script的一些程式碼,並且結合CSS讓網頁互動性加強,另外還提供AJAX的支援

另外洛可可的演講也很令人深思,感覺是個向心力很強的團隊,以理想為中心的Flash設計團隊,聽他們從另一個角度來談Web 2.0,比起那些大公司說的都還要更有Web 2.0共同創作,展現自我的感覺

總結來說,這次研討會感覺的出來主辦人很想把活動辦好,找了些贊助廠商,拼命用贈品回饋付了600元參加的人,不過總覺得比起我之前參加的活動少了些專業感,不過也或許是想營造輕鬆的感覺吧,演講方式也十分輕鬆,像是與大家聊天分享經驗的感覺~

我下星期五還有個Web 2.0的研討會要去聽,果然Web 2.0很熱門,但像是洛可可這樣腦袋清楚的團體或是公司有多少呢...

參考連結

從Google Pages Creater到Blogger

序

我原本是在Google pages Creater中寫得技術札記的,

不過越寫越多就會發現功能還是有差,雖然頁面排版Google pages creater的編輯器比Blogger方便很多,不過就功能性Blogger還是比較多~

所以經過百般考慮還有測試後,終於決定換到這了,順便提供我換到這的過程要點給大家參考

挑Blogger的原因

我其實有到處看看各家BSP的功能還有效能~決定換這裡的幾個原因

  • 這裡有提供Free tagging(標籤)的功能,其他的大都還沒有提供
  • 這兒跟Pages Creater都是Goolge旗下的,感覺比較穩
  • 它的備份聽說還滿方便的,雖然還沒試過
  • 有提供一些介面方便排版與新增元件
  • 可以客製化的地方也不少

不過當然有缺陷,例如範本要修起來其實還滿困難的(因為我幾乎可說是不懂CSS) ,而且文章跟首頁居然必須用同一個樣板,這樣功能表就每頁都有,有點多餘(有人知道如果解決請告訴我)

還有文章編輯器太笨了

Blogger的設定

首先,申請了Blogger後,可以發現有三個主要功能,張貼、設定、範本

在【設定】的【格式】中,有個【轉換分行符號 】,主要用來補足它笨笨的編輯器,不過反而造成我文章編寫的困擾,所以我選【否】

在【設定】,另一個可以注意的就是【權限】, 可以讓你的朋友也成為這個Blogger的作者,就可以共同製作這個Blog

Blogger的範本

主要是設計整個版面配置,可以用拖拉點選的方式,也可以搭配修改CSS(HTML)

通常可以先利用【挑選新範本的功能】,大至決定配色排版,覺得不夠還可以去網路上找,如Blogger templates

然後用【修改HTML】來做細部的調整,例如我做了下面這些設定

  • 在title之前加上下面這段以利瀏覽器判斷 <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
  • 因為我打算讓它的版面隨使用者的視窗變大小,所以修改了body的min-width
    body {
    margin: 0;
    text-align: center;
    min-width: 790px;
    background: #ce8b43 url(http://www.blogblog.com/thisaway/bg_body.gif) repeat-x left top;
    color: $textColor;
    font-size: small;
    }
  • 然後修改outer-wrapper、header-wrapper、main-wrapper、sidebar-wrapper、footer-wrapper的background與width,讓版面大小跟著變化
    #outer-wrapper {
    margin: 0 auto;
    width: 99%;
    text-align: left;
    font: $bodyFont;
    }
    
    #header-wrapper {
    padding-bottom: 15px;
    background: #634320;
    }
    
    #content-wrapper {
    position: relative;
    width: 99%;
    background: #f7f0e9;
    }
    
    #main-wrapper {
    display: inline;
    float: left;
    margin: 0 0 0 3px;
    padding: 0;
    width: 75%;
    word-wrap: break-word;
    overflow: hidden;
    }
    
    #sidebar-wrapper {
    display: inline;
    float: right;
    margin: 0 3px 0 0;
    width: 22%;
    color: $textColor;
    line-height: 1.4em;
    font-size: 90%;
    background: url(http://www.blogblog.com/thisaway/bg_sidebar.gif) repeat-x left top;
    word-wrap: break-word;
    overflow: hidden;
    }
    
    #footer-wrapper {
    padding-top: 15px;
    background: #634320;
    clear: both;
    }
  • 其他的就是額外像是code的外觀
    code {
    display: block; /* fixes a strange ie margin bug */
    font-family: Courier New;
    font-size: 8pt;
    overflow:auto;
    background: #fff url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
    border: 1px solid $postTitleColor;
    padding: 10px 10px 10px 21px;
    max-height:200px;
    line-height: 1.2em;
    }

Blogger的張貼

我一直有提到他的編輯器有些笨,是我對Blogger最不滿意的地方,如果不是因為這點我很早就轉用Blogger了,不過在這次轉移的過程,我發現利用Google pages Creater寫完,再把HTML貼過來就OK了

此外,它的標籤部份是用【,】分隔,與HemiDemi用空白分隔不一樣,它沒有特別標示,讓我小小打了個問號

總結

其實我對CSS的設計一點也不熟,這樣修改也不確定有沒有些問題,

所有的東西我就是設定一下然後看一下效果,如果高手有些建議,請大方指教,我會很感謝

相關連結

這裡是關於技術的手札~

也歡迎大家到

倫與貓的足跡

或

到噗浪來

關心一下我唷!
by 倫
 
Copyright 2009 倫倫3號Beta-Log All rights reserved.
Blogger Templates created by Deluxe Templates
Wordpress Theme by EZwpthemes