Mark's Place

A place for Mark's murmuring, blah, blah, blah, ...

Mark's Place
Watch Timeline

How to add password protection in CodeIgniter Scaffolding

Mark Wu 發表於 2009/10/06 10:50 · 靜態連結網址

It is really bad that CodeIgniter does not support password protection in scaffolding. I just go thorugh most scaffolding related posts in CodeIgniter forum, it seems no easy and clear solution for it. So, I just come out my own based on hooks function.

Here comes the code. Just follow it, and you will get a simple password protection for scaffolding:

1. Enable hook in your CodeIgniter application

application/config.php

[...]
$config['enable_hooks'] = TRUE;
[...]

2. Add a hook setting for pre-controller

application/hooks.php

[...]
$hook['pre_controller'][] = array(
                                'class'    => 'SimpleHttpAuth',
                                'function' => 'authenticate',
                                'filename' => 'SimpleHttpAuth.php',
                                'filepath' => 'hooks/SimpleHttpAuth',
                                'params'   => array()
                                );
[...]

 (閱讀全文)

迴響 (1) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

我們真的都那麼容易被煽動嗎?

Mark Wu 發表於 2008/11/14 15:49 · 靜態連結網址

我們真的都那麼容易被煽動嗎?。對!真的就有那麼容易。

最近有消息說到 Yahoo 不準用帳號裡面有 taiwan 或是 taipei 等字眼來註冊,很多人就開始磨刀霍霍向 Yahoo,開始說 Yahoo 不尊重台灣人云云。我無法證實 Yahoo 到底有沒有這樣的想法,但是從程式角度來說,這純粹是 Yahoo 的 bug 吧(或說是把規格定的太嚴謹了)。

 (閱讀全文)

迴響 (4) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

跨網域的 Flash 文件存取網站資料

Mark Wu 發表於 2008/11/02 17:35 · 靜態連結網址

最近遇到一個跨網域的 Flash 文件存取網站資料問題。透過 Google 找了一些資料,發現基本上 Flash 文件是不允許你跨網域(甚至是次網域)存取網站資料的。如果你希望 Flash 能夠跨網域存取網站資料,唯一的方式是在 Flash 文件存放的目錄中,加上一個原則檔 crossdomain.xml,裡面可以描述對這個 Flash 的存取原則:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
        <allow-access-from domain="*.abc.com" />
        <allow-access-from domain="*.def.com" />
</cross-domain-policy>

這表示 *.abc.com 與 *.def.com 都可以透過這個 Flash 文件來存取網站資料。

更詳細的資料請參考:允許跨網域資料載入

迴響 (1) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

透過 Samba 在 Windows XP (Host) 與 VMware Ubuntu (Guest) 中共用檔案

Mark Wu 發表於 2008/11/02 17:11 · 靜態連結網址

在使用 Samba 前,請先記得 K 一下鳥哥的 Linux 私房菜中有關 Samba 伺服器的章節,除了使用手冊外,大概找不到更清楚的文件了。

在 Ubuntu 8.10 的 Server 安裝當中,可以事先將 Samba Server 裝上,免除還要再安裝 Samba Server。如果忘了裝,直接透過 apt-get 也可以很簡單的安裝:

$sudo apt-get install samba (透過 apt-get 安裝 Samba)

 (閱讀全文)

迴響 (1) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

在 Windows XP (Host) 與 VMware Ubuntu (Guest) 中共用硬碟的方式

Mark Wu 發表於 2008/11/01 15:46 · 靜態連結網址

在 VMware 中的 Ubuntu 新增硬碟的方式這一篇文章中,描述了如何為 Ubuntu 新增新的硬碟。透過 VMware 的 Hard disk mapping 功能,我們則可以把這顆新增的硬碟對應成 Windows XP 的一台新硬碟,然後直接對這顆硬碟的資料作處理。

如果我們將新增的硬碟格式化成 Ext3 的格式,則我們可以在 Windows XP 中安裝 Ext2/3 的驅動程式,讓 Windows XP 可以辨認並且讀取 Ext2/3 的硬碟,目前有下面幾項選擇:

 (閱讀全文)

迴響 (0) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

在 VMware 中的 Ubuntu 新增硬碟的方式

Mark Wu 發表於 2008/10/31 17:06 · 靜態連結網址

通常在 VMWare 中預設的 Ubuntu 安裝應該只會有 8G 的硬碟,每次我都會為了如何擴充在煩惱。而每次 Clone 一個新的環境,總是要把之前 /home 目錄下的資料與程式備份下來,這也是件很煩惱的事。

後來想一想,乾脆新增一個硬碟,然後把這個新硬碟 mount 到 /home,從此再也沒有這些煩惱。 更好的是,我還可以把 Apache 與 MySQL 的資料與設定目錄都指定到這個新的硬碟中,到時候只要重新 ln 回去就可以了。

 (閱讀全文)

迴響 (2) · 引用 (1) 文章分類: 可以做人幹嘛寫程式

VMware 中複製 Ubuntu Image 後該做的修改

Mark Wu 發表於 2008/10/31 09:07 · 靜態連結網址

最近需要一些環境來測試 Server 的一些設定,VMware 是用的最主要的工具。但是每 Clone 一次,虛擬主機網路卡的 Mac Address 就被改掉一次,而 Host Name 也需要做相對應的修改。以下是需要修改的部分做個記錄(免得自己忘記):

 (閱讀全文)

迴響 (0) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

用 PHP 呼叫 MSSQL Store Procedure

Mark Wu 發表於 2008/03/18 11:35 · 靜態連結網址

剛剛試了一堆方法,要在不知道對方 Store Procedure 的內部參數名稱下去取用他的執行結果。但是找了半天,網路上找到的資料儘是要你透過 mssql_init() 去指定 Store Procedure,然後透過 mssql_bind() 設定輸入參數與輸出結果,最後透過 mssql_execute() 來執行這個 Store Procedure,實在有夠複雜。

PHP 的使用手冊上找了一下,原來最簡單的方法早就在哪!有種『眾裡尋他千百度﹐幕然回首﹐那人卻在燈火闌珊處』的 fu。下次記得要先看手冊。

 (閱讀全文)

迴響 (2) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

用 NuSOAP 來整合不同系統使用者帳號認證

Mark Wu 發表於 2008/03/16 14:15 · 靜態連結網址

最近剛好需要整合不同系統使用者帳號認證,我預備採用的方式是 SOAP,兩邊軟體一邊必須實作 SOAP Server 來提供帳號認證,另一邊需要實作 SOAP Client 來使用帳號認證。

SOAP Client 的部份會送傳下列資料到 Server 端,並且透過 Server 端所實作的 getUserInfo,來取回使用者認證資料,傳送資料如下:

  • loginId:使用者帳號
  • password:使用者密碼(傳送時先透過 MD5 編碼)

SOAP Server 則會實作一個 User 的 WSDL 提供給 Client 端讀取,並且實作一個 getUserInfo 的方法,用來將認證的資料 userInfo 傳回給 Client 端,userInfo 包含:

  • validUser:是否為系統中的使用者
  • userName:使用者全名
  • eMail :使用者的電子郵件信箱

我試過 PHP 內建的 SOAPPEAR::SOAPNuSOAP,其中 NuSOAP用起來最方便。在 0.72 以前,因為 Class 命名跟內建的 SOAP 衝突,所以需要修改 Class 名稱,但是在 0.73 後則已經沒有問題。所以建議使用 0.72 的都升級到 0.73。

 (閱讀全文)

迴響 (2) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

美中不足的 _IG_FetchFeedAsJSON

Mark Wu 發表於 2008/03/03 19:27 · 靜態連結網址

其實我還是搞不懂,為什麼 Google Gadget 要搞個雞肋出來,這個雞肋就是 _IG_FetchFeedAsJSON()。為什麼說他是雞肋?因為:

  • Cache 功能不足,到現在還是無法定義 Cache Interval。怪的是 _IG_FetchXmlContent() 與 _IG_FetchContent()都可以。
  • 沒辦法取用 RSS Feed 中的其他資料屬性。所以如果真的要在 Google Gadget 中,完整利用 RSS Feed 中的各項屬性資料,或是外加 (Extra) 的資料,還是得用 _IG_FetchXmlContent() 來抓。

原本要將 DZone 的推噓數字也加到『愛D爽』(請用台語念),可是用 _IG_FetchFeedAsJSON 就是沒有一個屬性可以拿的到~殘念。

雞肋!雞肋!食之無味,棄之可惜! 

 

迴響 (0) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

用 PHP 來測試 LifeType 的 xmlrpc.php

Mark Wu 發表於 2007/11/11 15:40 · 靜態連結網址

PHP 不僅沒有 iteractive shell,甚至在 xmlrpc 上的支援也是亂七八糟的。亂七八糟,不是說 PHP 對 XMLRPC 支援的亂七八糟,而是在 XMLRPC 的支援上有太多的選擇,有官方的 XMLRPC,有 PEAR 的 XML_RPC,還有 SourceForge 上的 XML-RPC for PHP,實在令人無所適從。甚至,LifeType 本身用的是 IXR XML_RPC,根本還不再上述的程式中。

這裡的例子是用 PEAR 的 XML_RPC,所以必須透過 PEAR 安裝 XML_RPC 的支援。另外,也因為沒有 interactive shell,所以必須把測試檔案放在 web server 中測試,程式碼如下:

<?php
    include_once( "XML/RPC.php" );
    $client = new XML_RPC_Client( '/1.2/xmlrpc.php', 'lifetype', 80 );
    $params = new XML_RPC_Value( array( new XML_RPC_Value( 1, 'int' ),
                                        new XML_RPC_Value( 'admin', 'string' ),
                                        new XML_RPC_Value( 'passwd', 'string' ),
                                        new XML_RPC_Value( 5, 'int' )
                                      ), "array" );

    $msg = new XML_RPC_Message( 'metaWeblog.getRecentPosts', array( $params ) );
    $response = $client->send( $msg );
    print_r( $response );
?>

 (閱讀全文)

迴響 (0) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

用 Ruby 來測試 LifeType 的 xmlrpc.php

Mark Wu 發表於 2007/11/09 12:34 · 靜態連結網址

繼上一篇的 用 Python 來測試 LifeType 的 xmlrpc.php,這一次要用 Ruby 來測試。Ruby 也是有一個好用的 interactive shell,叫做 irb。下面是使用 irb 來測試 LifeType 的步驟:

irb(main):001:0> require 'xmlrpc/client'
irb(main):002:0> server = XMLRPC::Client.new( 'lifetype',
                                                                '/1.2/xmlrpc.php',
                                                                80)
irb(main):003:0> blog = server.call( 'metaWeblog.getRecentPosts',
                                                1, 'admin', 'passwd', 5) 

 (閱讀全文)

迴響 (0) · 引用 (1) 文章分類: 可以做人幹嘛寫程式

用 Python 來測試 LifeType 的 xmlrpc.php

Mark Wu 發表於 2007/11/09 12:14 · 靜態連結網址

Python 真的是好用的 scripting language,比起 Ruby,其實我更愛 Python 一些。

今天剛好有人來寫信問到 LifeType xmlrpc.php 的一些問題,所以需要一個可以馬上上手的測試工具,最好還要有 interactive 的 shell。所以想說用 Python 來測試,下面是測是的 script:

>>> import xmlrpclib
>>> from pprint import pprint
>>> server = xmlrpclib.ServerProxy(http://localhost/lifetype/1.2/xmlrpc.php)
>>> blogs = server.metaWeblog.getRecentPosts(1,'admin','passwd',5)
>>> pprint(blogs)

 (閱讀全文)

迴響 (6) · 引用 (1) 文章分類: 可以做人幹嘛寫程式

在 svn 的 post-commit hook 中使用 Gmail SMTP

Mark Wu 發表於 2007/11/05 03:47 · 靜態連結網址

Subversion 的 post-commit hook 是個很方便的功能,可以讓你在 commit 程式到 Repository 後,自動去做一些事。其中最有用的就是把 commit log 寄給相關的 developer。

在人人都有 Gmail 且 Gmail 也支援 SMTP 寄信的情況下,透過 Gmail 來寄出 commit log 應該是個好 idea。只不過, 目前的 mailer.py 並不支援 Gmail 的 TLS,所以下面的修改,就是要要將 mailer.py 修改成支援 TLS。

 (閱讀全文)

迴響 (0) · 引用 (0) 文章分類: 可以做人幹嘛寫程式

程式為什麼不會動?程式設計師告訴你為什麼!

Mark Wu 發表於 2006/11/28 05:02 · 靜態連結網址

這是在 Hemidemi 看到的,原文在: Top 20 replies by Programmers to Testers when their programs don't work。翻譯如下:

第 20 名:這很奇怪喔。

第 19 名:以前從來不會這樣啊!

第 18 名:昨天明明會動的啊!

第 17 名:怎麼可能~

第 16 名:這一定是機器的問題。

第 15 名:你到底是打了什麼才讓程式當掉的?

第 14 名:一定是你的資料有問題。

第 13 名:我已經好幾個禮拜沒碰那一段程式了。

第 12 名:你一定是用到舊版了。

第 11 名:一定是巧合!為什麼這種壞運氣只讓你碰上。

 (閱讀全文)

迴響 (15) · 引用 (0) 文章分類: 可以做人幹嘛寫程式