星期四, 2月 25, 2010

委派時機

雖然知道delegate
但要說使用時機..還真不知什麼時候用

委派有用的時機:

* 當單一方法被呼叫。
* 當一個類別可能想要有該方法規格的多個實作。
* 當想要允許使用靜態方法來實作規格。
* 當想要事件形式的設計模式 (如需詳細資訊,請參閱事件教學課程)。
* 當呼叫者不需要知道或取得定義方法所在的物件。
* 當實作的提供者只想要將規格的實作「提供」給少數選取的元件。
* 當想要易於撰寫。

介面有用的時機:

* 當規格定義了一組會被呼叫的相關方法。
* 當類別通常只實作規格一次。
* 當介面的呼叫者想要轉換成或從介面型別上取得其他介面或類別。


Reference
委派教學課程

ajax跨Domain安全性問題

利用jQuery做ajax時
發現跨Domain時 會出現ajax error
查了一下才發現原來跨domain會有安全性的問題

AJAX的限制
  • 不能存取用戶端的任何檔案。
    ajax.open('GET', 'file://c:\\\\hello.html', ture); //錯誤
  • 不能存取不同來源位置的檔案 也就是網域(Domain)要相同
    更多解釋
Solution 利用JSONP來代替JSON.
  1. .client.html設定
    $.ajax({
      url: 'http://192.168.1.228/~kevyu/Testing/test.php',
      dataType: 'jsonp',                //1.將dataType定為jsonp
      jsonp: 'getAjaxData',
      data: {  callback: 'getAjaxData'}, //2.定義callback function
      error: function(xhr) {
        alert('Ajax request 發生錯誤');
      }
    });
    //3.這裡就是callback
    function getAjaxData(data){
       //alert(data);
       //alert(data.name);
    }

    新做法
    簡單多了,連callback function都不用設定
    最後加上callback=?,就這麼簡單,連jsonp都不用設
    $.ajax('returnJSON.php?callback=?', function(json) {
      //...
    }); 
  2. server.php設定
    還需server端配合,呼叫callback的function及回傳的parameter
    • 回字串
      <?php
        echo $_GET['callback']."('kevyu');"; //依callback的function名回傳kevyu字串
      ?>
    • 回json
      <?php
        $data = array("name"=>"kevyu", "gender"=>"male"  );
        $json=json_encode($data ); //編成json格式
        echo $_GET['callback']."({$json});"; //因為是json,所以要加"{ }"
      ?>

References
1.AJAX的安全性問題[筆記]
2.jQuery.ajax() 的 callback
3.Remote JSON - JSONP
1.用英文學英文
-發音
-文法 => 習慣 ex.常用字常不同,易分辯
-文化 (無相對字詞,就不要硬翻)

2.單字 (利用發音記)
-基本字 (1500~3000字)
-靠例句加深
-大量閱讀 500~1000字文章
查keyword
不查=>猜,畫線保留

Reading
速讀
1.強迫500字20秒
*不是讀,抓重點
2.計時(加強注意力)
閱讀=>將一個字一個字唸改成看,不是讀

1.讀句=>讀動詞
2.文章結構
首段 最後兩句是主題句
敘述 第一句
結論 第一句
1.這些是重點,有單字需要查才查,因為是keyword
2.或是重覆出現的字

星期一, 2月 22, 2010

檢查網路連線

You can check for a network connection in .NET 2.0 using GetIsNetworkAvailable():

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

To monitor changes in IP address or changes in network availability use the events from the NetworkChange class:

System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged
System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged


Reference
How do I check for a network connection

星期四, 2月 11, 2010

常用註冊值

更改windows授權的使用者名稱及組織名稱
利用ghostxp重灌後 開發的產品都是ghost的名字...
這東西釋出去好不太好看...
找了一下 還挺簡單的...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\下的
RegisteredOwner //更改使用者名稱
RegisteredOrganization //更改組織名稱

第一隻ROR

照Agile Web Development with Rails寫的第一個範例
在這此抓出重要用到的指令









1.Build Project
rails demo //建立demo專案
cd demo


2.啟動server
ruby script/server //啟動server
//到http://localhost:3000下,檢查是否有啟動
//沒問題就可先關掉,準備coding


3.建立controller
ruby script/generate Controller Say
瞭解一下MVC架構 p29

4.建templete


...待續

星期三, 2月 10, 2010

利用scaffold做資料庫應用

天啊.遇到太多問題了
因為rails升到2.0有些語法不一樣
看書寫不出來,上網查才知道語法有不同了
而rails db:migrate又需與database溝通
所以事前也得先設定好...
練習第一個saffold做資料庫 還沒感受到 就先覺得好辛苦
不寫下來將來換個環境一定又忘了...
不過設定完... 還真的挺開心的 沒寫到任何sql所有欄位的新增、修改都做好了...
人說「頭過身就過」 希望接下來的路順一點...

建立專案
rails demo -d mysql //指定db可順便改好database.yml
1.設定資料庫
問題:解決rails的sqlite3.dll錯誤
沒有sqlite的dll是做呼叫sqlite的function...

問題:缺mysql
看範示的console畫面還想說~
哇~~跟mysql都整合在一起來
原來還是得自己先建立mysql環境
下載安裝mysql吧




2.scaffold
設定好資料庫就是來用scaffold
因為升級到rails 2的關係 所以下的參數會不一樣
1.0:ruby script/generate scaffold Movie Admin //直接指向Admin
2.0:ruby script/generate scaffold Movie title:string description:text one_sheet_url:string

Rails 2.0 scaffolding step by step.

3.rake db:migrate
這一步會遇到以下的問題
問題:syntax error on line xxx
一般來說是database.yml的設定出錯
冒號後面一定要有一個空白,否則會出錯!!
adapter: mysql
...
username:root <= 冒號後要空隔,不然會說argument錯誤

MySql問題
1.權限問題
解法:當然就要開放權限啦,另外注意不能用root

2.Commands out of sync; you can't run this command now: SHOW TABLES
-Mysql::Error: Commands out of sync; you can't run this command now: SHOW TABLES解决方案
-Rails2.1.0出现的问题undefined method `each' for
解法:從mysql/bin/目錄下找出libmySQL.dll,再copy到ruby/bin
*有時一樣會失敗,請注意抓的libmySQL.dll是跟MySQL server版本相同
我就抓了5.1.43的dll,連5.0.45... 問題一樣...硬是從5.0.45找出dll才pass


其他參考
第一個資料庫應用(with scaffold)--Ruby on Rails 完全新手手冊

星期日, 2月 07, 2010

來吧... Ruby

躲不掉的...
快讀吧...
先來名詞解釋

  • Ruby
    • 一種程式語言,如同C,Java
    • 所以不是只能寫網頁
    • 物件導向,類似Perl, Smalltalk, Python, Lisp
  • Rails-Web application framework
    • 用Ruby寫的
    • MVC架構
    • 利用convention替代掉大部份的設定
  • Active Record
    • Rails的ORM名稱
    • 與一般ORM不同的是Active Record利用convention替代掉大部份的設定
Ruby新手入門
Rails新手入門
第一隻ROR
不多說
直接看別人教學
實際做一次就會了
1.Ruby on Rails(Windows),從安裝到 Helloworld 2009/02 update
先簡單的做出Helooworld,不過重點在下一篇的scaffold
2.第一個資料庫應用(with scaffold)--Ruby on Rails 完全新手手冊
用scaffold才會感覺到ROR的方便,直接看Agile Web Development with Rails做範例感受更深,不過版本要看對...不然開發會很想打人

實際開發
遇到太多問題了...
自己也寫了一篇 第一隻ROR

討論
從 Django 看 Ruby on Rails 成功的原因

--------------------------------------
Reference
教學資源
安裝、應用
1.Ruby on Rails (ROR)入門第一站,InstantRails安裝圖文教學
2.在 Ubuntu 下部屬 RoR 環境


教學
1.ROR 的新手建議書單 from xdite
2.Ruby & Rails on Rails 進階書單
3.幾本不錯的Ruby和Ruby On Rails電子書下載
4.Top 13 Ruby on Rails Presentations
有書.... 就有電子書....
有電子書就...不用花錢買了... XD ...

Aptana IDE
官網:radrails
1.Get Rolling with Ruby on Rails in RadRails //標題還挺有趣的
2.5分鐘RadRails錄影教學

社群討論區,Blog
Ruby Taiwan 台灣的 Ruby 社群。
RailsFun!! Rails 討論區

Blog
Lighty RoR 介紹 Ruby,Ruby on Rails,JRuby
xdite

星期六, 2月 06, 2010

編輯Windows右鍵選單

常要開「裝置管理員」看USB有沒有連結
用regedit在「我的電腦」右鍵選單增加「裝置管理員」
出現「MMC無法開啟」...
"銀"了很久 一直沒處理
今天總算狠下心google找到解決方法了

@="裝置管理員"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr\command]
"mmc.exe %%systemroot%%\\SYSTEM32\\devmgmt.msc"
改成"mmc.exe devmgmt.msc"



Reference:
用Reg在「我的電腦」右鍵增加「裝置管理員」、「服務」會出現MMC無法開啟的看這裡

星期五, 2月 05, 2010

InstallShield中 變更資料夾路徑的方法

OS:XP
InstallShield版本:2010

建立專案時
在Installation Design/Application Data/Files And Folders
將要封裝的Source資料夾"拉進"Destination資料夾
=>Sourece的路徑為D:\test (將test資料夾全部安裝到使用者的電腦)

後來想移動test資料夾至D:\Project\test,
因此Soure的路徑就需要更動,但找不到任何設定可以更動
惟一想到的方法就是刪掉舊的資料夾 再重新拉進
只是在Installation Design/Organization/Components 裡
已經為每個不同的資料夾取命了...
如此一來便得再重新命名...

後來跟原廠詢問
原來所有的變數路徑都儲放在Media / Path 下
也就是說在這裡就可以設定路徑了...

Sql字串有特殊符號

當字串裡有單引號如"It's good",或其他特殊符號時
Sql命令都會掛掉...
解決方法
1.在特殊符號前加入 \
"It's good"=>"It\'s good"
*透過mysqlconnector會發生錯誤...改用法2就沒問題了

2.遇單引號可再一個單引號
"It's good"=>"It''s good"

php可用直接呼叫
1.mysql_escape_string
2.mysql_real_escape_string
3.addslashes
至於差別...有看沒有懂...