2009年8月23日 星期日

[PHP] gdb php.core

沒有想過,原來自己寫的 PHP 也會產生這個檔案。這個原因是出自於我架的 Apache HTTPD 運行 PHP 所產生的,透過 HTTPD 類似執行 shell_exec( "/path/bin/php /tmp/test.php > /dev/null & " );


如果產生 php.core 檔案,可以到官網參考解決方式:



我自己的情況是透過以下方式看訊息的:



  • # gdb /path/bin/php php.core

    • (gdb) bt ;

    • 會蹦出一堆訊息讓你參考

      • #0  0x88b9194d in calloc () from /lib/libc.so.7
        #1  0x88b91b7e in free () from /lib/libc.so.7
        #2  0x082cbf9a in destroy_zend_class (pce=0x88e3e76c) at /path/php-5.2.10/Zend/zend_opcode.c:202
        #3  0x082de386 in zend_hash_destroy (ht=0x10) at /path/php-5.2.10/Zend/zend_hash.c:526
        #4  0x082d48b8 in zend_shutdown () at /path/php-5.2.10/Zend/zend.c:736
        #5  0x08293f3f in php_module_shutdown () at /path/php-5.2.10/main/main.c:1908
        #6  0x083500a0 in main (argc=4, argv=0xbfbfe71c) at /path/php-5.2.10/sapi/cli/php_cli.c:1357





  • # gdb /path/bin/php

    • (gdb) run /tmp/test.php arg1 arg2 arg3;

    • 沒多久看到訊息

      • ...

      • Fatal error: Call to undefined function imagecreatefromstring() in /tmp/test.php on line xxx

      • ...

      • Program received signal SIGSEGV, Segmentation fault

      • 0x88b9194d in calloc () from /lib/libc.so.7






因此,至少知道點方向了 :-) 但這主因並不是缺少 library 啦,經多次測試後,發現用 5.2.10 使用 imap_search 後產生的問題,改用 5.2.9 就不會出現 Segmentation fault 啦。


# [ @ php-5.2.10 ] ./configure --with-apxs2=/path/httpd/bin/apxs --prefix=/path/php --without-pear --with-openssl --with-imap --with-imap-ssl


使用 imap_open -> imap_search -> imap_close 則會出現 Segmentation fault ,但改用 php-5.2.9 就不會發生。


另外一聊,在開發移植的環境上,最好先弄個 lib_test.php 的檔案,用來測試必要的 function 是否存在:



  • <?php
    $test_func = array(
            'imagecreatefromstring' ,
            'imagesx' ,
            'imagesy' ,
            'imagecopyresized' ,
            'imagejpeg' ,
            'imagedestroy'
    );
    foreach( $test_func as $v )
            if( !function_exists( $v ) )
                    echo "'$v' not found!\n";
    ?>

  • # /path/bin/php lib_test.php


2009年8月21日 星期五

[Unix] 使用 Tarball 安裝 Apache + PHP @ FreeBSD

由於 lab 電腦得還回去,使得程式的開發無法在用 VMWare 了,因此,又回歸到在工作站架設自己需要的環境啦!順便要把自己降級,用用 Tarball 吧!說真的,這也是我覺得工作站好用之處。寫個筆記給自己。


安裝 Apache HTTPD



  1. 下載 HTTPD - http://httpd.apache.org/


  2. 解壓縮 # tar -xvf httpd-2.2.13.tar.gz ,之後就會在所在目錄蹦出 httpd-2.2.13/ 目錄

  3. 設定編譯等環境

    • # ./configure --prefix=/home/user/tmp_for_httpd --enable-so --enable-ssl

    • 如加入 https 的需求等



  4. 編譯和安裝

    • # make && make install



  5. 設定 httpd.conf

    • User / Group

    • Listen Port_Number

    • Include conf/extra/httpd-ssl.conf

    • 家目錄 DocumentRoot 等



  6. 產生憑證

    • # cd /home/user/tmp_for_httpd/conf

    • # openssl genrsa -des3 -out server.key 4096
      # openssl req -new -key server.key -out server.csr
      # openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
      # openssl rsa -in server.key -out server.key

    • 記得在 chmod 600 server.key 吧

    • 另外,要跑的 https port 也要記得在 conf/extra/httpd-ssl.conf 修改

      • <VirtualHost _default_:HTTPS_Port>

      • ServerName www.example.com:HTTPS_Port

      • 家目錄 DocumentRoot 等





  7. 運行與測試

    • # /home/user/tmp_for_httpd/bin/apachectl start

    • # telnet localhost Port_Number

      • 連得上後,請打 GET / 即可,算是簡單的測試



    • 有任何問題,請留意 logs/error_log 訊息




安裝 PHP



  1. 下載 PHP - http://www.php.net/


  2. 解壓縮 # tar -xvf php-5.2.9.tar.bz2 ,之後就會在所在目錄蹦出 php-5.2.9/ 目錄

  3. 設定編譯等環境

    • # ./configure --with-apxs2=/home/user/tmp_for_httpd/bin/apxs --prefix=/home/user/tmp_for_php --without-pear --with-openssl --enable-mbstring --with-curl --with-imap --with-mcrypt --with-imap-ssl --with-gd

    • 此例為啟用 Curl 、OpenSSL、IMAP、mbstring、Mcrypt、GD 等函式庫,詳請請試著到 PHP 官網查尋,上頭都會敘述函式庫在編譯時要下什麼關鍵字。



  4. 編譯和安裝

    • # make && make install



  5. 修改 httpd.conf

    • AddType application/x-httpd-php .php

    • <IfModule dir_module>
          DirectoryIndex index.php index.html
      </IfModule>




以上就完成兩者的結合了,記得安裝完 PHP 或設定 PHP 完後,都要重新啟動 HTTPD 啦


比賽的開始與結束









終於走完 2009 趨勢雲端程式比賽,感觸良多,原先我只是想要在僅剩的學生生涯裡,透過比賽摸索自己的實作能力。一開始規劃參加Android跟趨勢比賽,但基於時間關係僅參加趨勢比賽,沒想到很幸運地通過趨勢的初賽(那時可還是口試前2個禮拜),並在複賽中經歷著 48 小時的努力,十分感謝隊友的付出,一起完成了這個足跡。


回顧起來,雖然對 Hadoop 不懂,但熱心的趨勢科技,主動開了幾堂課,因此稍稍地了解,只是面對著新穎的開發環境,常常讓自己困惑,像是演算法在此架構對不對、記憶體管控會不會爆掉等等的遲疑,多少影響開發信心與效率,這點又再一次驗證「思而不學則殆」的古語!凡事由基石建起,真的要花點時間了解 Hadoop 環境跟架構。


初賽期一開始花三天熟悉並使用 Java 語言和 Hadoop 環境,沒想到第四天又走使用 C/C++ streaming 的方式,最後花了一天做 Web 介面的流程掌控和報告。程式部分,主要提出一種資料儲存的設計,提出一次 Map & Reduce 做 Counting ,再一次 Map & Reduce 做 Sorting,以此完成 Term Counting & Sorting 服務,並保有一點點資料索引的特性。這就是初賽過程,除了報告上的應用呈述外,可能有實作 Web 介面而沾到點分數。儘管我們幾乎是在初賽那幾天才初探 Hadoop ,但基於老師在日常生活中教導的資料處理方式,讓我們很快地適應 Map & Reduce 架構,這應該算是另類的優勢吧。


複賽,還滿刺激的,很多題目甚至專有名詞我都搞不懂,只好先處理基本題目,再套上初賽的 Web 介面、流程,除此之外,初賽的程式完全沒用到了,比較慶幸的,賽前三天有稍微討論一下可能出題的方向,恰好想過如何處理差集的實作,再一次被幸運的女神眷顧啦。分工上比初賽更好,主要先解決幾題基本題跟網頁介面,其他重要議題的構想、實作、演算法驗證,則依序由隊友大力扛下啊,真是太讚了,以至於最後 8 小時工作效率大增,彼此的整合也更加順利。


連續 48 小時比賽,真的滿累的,比賽期間超過 24 小時沒睡。經過一天沉澱才越來越能接受手中的獎牌,而團體的努力是有加乘的效應的, 1 + 1 > 2 啊。比較深刻的回憶是比賽期間有段撞牆期,看不懂題目,只是不斷地實作出想要的工具或介面,幸運的是在倒數 8 小時內,像似打通任督二脈般地,一不會兒就用之前開發的工具整合出雛型。只是距離別隊還是有段小差距,大概就像別人的成果是 Product 而我們實作的就只能稱作 Project 吧!


anyway, 很高興有這份機會參加活動,希望自己能保有這份活力地面對未來的工作啦!


相關連結:



2009年8月15日 星期六

電影 變身西裝/帥哥西裝 - 主題曲 My Revolution









這首是電影變身西裝的主題曲,看完這齣戲讓我回想起韓劇大長今更深一層的意境,在電影中所呈現的:「變成最酷最帥的人,卻也是最爛的人」,讓我回想起大長今裡,那些追求著高位權力者。真巧,這部搭著大長今的渲染,中和起來真是不錯!


記得幾個月前,有稍微使用這個電影跟家人分享,關於外人第一眼還是看人外表的事情,不過,這則故事反而重心不在那邊,而是如何保有最初的幸福並好好珍惜。


2009年8月13日 星期四

未來~

前陣子因比賽關係,熬夜沒睡,倒是跟同學一起吃了早餐,那次大概是唯一一次跟大家吃早餐吧。記得第十九集的幽遊白書,似乎經歷許多大風大浪地,隨口地說出「未來」兩字…,現在的感覺,類似…儘管沒做出什麼大事業。









作詞:鍾成虎
作曲:盧廣仲

整個世界 停止 不轉動 很寂寞
走在海邊 數著 螢火蟲 好困惑
想要的生活怎麼有一百種
不想掉進這深深 漩渦

整個海洋 擺動 柔軟地 舉起我
孤獨給我 自由 猶豫得 好感動
想要的生活怎麼有一百種
該怎麼走 誰來告訴我 wow

每當我背對星空
抱著地球
發現自己其實脆弱 不敢說
當我背對星空
不斷摸索
愛情漸漸萎縮 我猜不透
無邊的宇宙 哪裡有我要的生活

整個海洋 擺動 柔軟地 舉起我
孤獨給我 自由 猶豫得 好感動
想要的生活怎麼有一百種
該怎麼走 誰來告訴我 wow

每當我背對星空
抱著地球
發現自己其實脆弱 不敢說
當我背對星空
不斷摸索
愛情漸漸萎縮 我猜不透
無邊的宇宙 哪裡有我(想)要的生活

每當我背對星空
抱著地球
發現自己其實脆弱 不敢說
當我背對星空
不斷摸索
愛情漸漸萎縮 我猜不透
無邊的宇宙 哪裡有我要的生活
原來一百種
要在很久很久以後才會懂


說真的,想要的生活沒規劃,沒仔細想過,然而,前陣子看了韓劇大長今,卻又蹦出許多感觸,像似「明知山有虎,偏向虎山行。」,好像很難擺脫,但到底什麼生活是我想要的呢?或許就像這首 100 種生活 歌詞,要等到很久以後,才會明瞭吧。


上次北上時跟學長閒聊買屋等事,台北 40 坪差不多要 1200 萬。假設貸款九成,那自備款 120 萬,20 年以年率 3 % 來看,一個月利息該還 ( 1080 * 3% / 12 ) = 2.7 萬,本金償還 ( 1080 / 20 / 12 ) = 4.5 萬,一個月總共要付出 7.2 萬耶,真不少。


今天謝師宴,似乎是個結尾,卻又看不到任何終點?這就是人生吧,永遠只有持續走下去這條路。