顯示具有 問題 標籤的文章。 顯示所有文章
顯示具有 問題 標籤的文章。 顯示所有文章

2011年4月21日 星期四

使用codewarrior 注意點點

compile錯誤描述: reference to lable '233' is out of range

敘述:
在程式碼加上兩行程式碼
cmp.l #40,D0
beq  C_lable1
就發生錯誤..

花了挺多時間還是搞不懂,最後由david回答,特此紀念XD
david said:當發生reference to lable '233' is out of range ,此類無法判斷的錯誤訊息,需注意
1:程式碼寫法
2.前後文友寫跳躍的部份是否異常
結果證明是2,因為前面不遠處有短距跳躍 beq.s 敘述,在其後面加上了上面的兩行程式碼,結果造成距離過長跳躍不到所指向的label !!!!!!

話說,想想之前好像也遇到過一樣的問題,還是打上網誌不會忘記。錯誤描述只能參考用!!!

2010年12月10日 星期五

LINUX 學習心得

目前在學習LINUX ~
趁著這個週末~ 來紀錄一下,學到的東西,以及一些感想。

電腦環境:
  • NB: ACER ASPIRE 4741G
  • 系統: WIN XP Processional 2002 SP3
  • CPU:i5 M460@2.53GHz
  • RAM:2.98GB

小弟對這台NB評價.. 效能不錯,照我每次都開兩個瀏覽器,狂開視窗查閱資料,再加上VMware照跑.. 沒什麼大問題發生。 但是周邊裝置就有點不舒適了,USB太靠近使用者,動滑鼠就容易碰到,VGA、網路埠、電源插頭都在左手邊...非常不習慣~也不試用我的工作環境...
但整體而言..免費的就是好用 XD

LINUX環境:
  • 版本 Fedora 11 (目前到14)
  • 視窗介面: GNOME

目前使用VMware這套虛擬機器來安裝LINUX,很酷的一套軟體,早點知道這東西,以前玩遊戲就可以開分身了XD。

當初建置時沒沒Step by Step記錄下來,就照印象來說囉~
安裝好VMware,新建一個虛擬機器系給LINUX用,要設定磁碟、記憶體大小分給VMware用。
工具列 VM->Options->Guest operating system-> Linux 圈起來,Version->Red Hat Linux
我明明是要裝Fedora, 怎會選小紅帽?? ... 我真的忘了 , 好像裡面沒有Fedora選項吧 ??

開始安裝Fedora
首先,除了Next and Next,會出現的問題,是要分割硬碟(檔案系統)
boot、swap、root 等等,詳細設定 google一下就有了。
安裝設定,軟體、工具、桌面...全開!! 總比之後安裝要自行編譯容易的多XD

從VMware到LINUX裝完~ 花了2.5個小時吧~
這時候會發現即使使用全螢幕模式,我們的系統還是沒辦法真正實現全螢幕
並且鼠標陷在VMware裡頭,要跳出VMware 請按 CRTL+ ALT
先把這給改掉~ 在VMware裡的 快捷設定 設成 CRTL + SPACE
並在工具列中 選擇 Install VMware Tool , 裡面內容...我現在看不到>< ~ google是好朋友XD
安裝完後~ 就可以輕鬆移出鼠標,並且全螢幕實現~
LINUX 桌面環境其實蠻方便的~ 但是當下載軟體原始碼時 需要自己編譯、安裝~ 現在還不知道有沒有其他方式~ 至少我都是在終端機使用的~
剛開始真的不習慣啊~ 連複製檔案 都搞了一陣子 >< 所以 要碰終端機 必學指令 如下:
  • 顯示目前路徑檔案列表 : ls ` ll
  • 複製檔案至目錄XXX下 : cp
  • 移動檔案至目錄XXX下: mv
  • 移除檔案 : rm
  • 解 壓縮檔 (tar.gz): tar -xvf XXX.tar.gz
  • 安裝 : yum , rpm
  • 換目錄: cd ` cd .. (回到上一層)
  • 搜尋 : whereis `which ` find ` grep
  • 查詢指令: man ` xxx --help
  • 切換root : su
  • 目前路徑: pwd

再來~ 目錄 可分為 root 和 user
登入後 , 會在home/user/ 路徑下面 ,即 ~符號 。
root/ 是根目錄 ,即 / 符號, 也只有root 管理員 能在此目錄進行更多的動作及設定 。

環境設定,指令都熟悉差不多之後,就可以開始程式撰寫了
小弟環境是 使用 KDevelop編輯,掛QT編譯器 剛開始,也是非常不習慣啊>< 但後來發現 ~ 自訂功能非常豐富~ 其實非常方便 上一步這功能很好用 XD ~ 前一陣子看到VS 2010也有這功能 ~

但是目前還是有些問題存在~ 程式中,類別庫會使用到 LINUX C Libary, QT Libray, 自訂Libary
每次想要查詢LINUX Libary(就是跳至定義),時 都無法顯示~ 出現 man錯誤... 之後解決了再說吧~
對了 ~ 這之前還做了一件事 ~安裝 gcin 輸入法。
Fedora 預設安裝的輸入法是Ibus,但沒有新注音... 我也只會新注音所以囉~
安裝 gcin 輸入法


PS. 如果出現了網路無法連接~ 記的要選網路橋接(Bridge)

2010年7月13日 星期二

VS2005 inline function 反組譯追蹤

開發平台: VC++ , Windows

使用行內涵式時,修飾詞inline會告知編譯器,
每當程式碼呼叫此函式時,就會產生一函式副本來取代該函式呼叫,
以便節省呼叫函式的時間。
也就是說,
程式控制權一直在main()裡面(假設在main中呼叫inline函式),
而非每次呼叫函式時便轉移控制權到該函式。

如何在vs2005平台偵錯模式中觀察這個差異?
在專案->屬性



在屬性視窗中,預設debug mode 的內嵌函式展開屬性為"預設"



要觀察行內涵式的反組譯須把偵錯模式改為release,內嵌行式展開設為"僅_inline"


避免編譯時因最佳化關係自動把函式inline起來



~觀察反組譯~


inline function 程式碼已內嵌

一般函式叫用,可以看到第4行 :0040106B call countcubeVolume1 (401140h)
程式執行至此,會call countcubeVolume1 。


2009年6月10日 星期三

在IE與FF的一些設計限制

PRB: 錯誤設定 table.innerHTML 在 Internet Explorer 中
table 的限制,在不同瀏覽器中的問題較大,需要另外處理~

IE中Table、 thead、tbody的innerHTML屬性是唯讀的!!
若用
document.getElementById("tablename").innerHTML = "XXXXX" ;
IE就會跳出「執行階段錯誤」.... ~~

另外要注意的是 table與 tr標籤元素,不能用innerHTML方式賦值,但.. td標籤是可以的喔!

在IE與FF的一些設計限制(設定css屬性、註冊事件、checkbox)

在FF與其他瀏覽器(不含IE)

1.若要設定元素的class屬性,可以用 setAttribute方法來設定,如下
var inputElmt = document.createElement('input');
inputElmt.setAttribute('class', 'column');

但IE不吃這套,而吃 className 屬性名稱,如下
inputElmt.setAttribute('className', 'column');

所以 ~完整解決方法
var inputElmt = document.createElement('input');
inputElmt.setAttribute('className', 'column'); 
inputElmt.setAttribute('class', 'column');

寫上兩個~不需要另外辨別瀏覽器!


2.若要為其加入事件
if(document.all) //for IE
{
inputElmt.onclick = function(){ pantosetedArea(this.value) ; };
}
else inputElmt.setAttribute('onClick', "pantosetedArea(this.value)");

其中pantosetedArea(參數)是自訂函式

3.另外,若要產生預設勾選的checkbox

function createInputcheck(elmtName,elmtValue) {

elmtName = elmtName ? elmtName : '';
elmtValue = elmtValue ? elmtValue : 'yes';
var ischecked = (elmtValue=='0')? "false" : "true" ;

var inputElmt = document.createElement('input');
inputElmt.setAttribute('type', 'checkbox');
inputElmt.setAttribute('name', elmtName);
inputElmt.setAttribute('value', elmtValue);
if(elmtValue=="yes") inputElmt.setAttribute('checked', ischecked);
inputElmt.setAttribute('onClick', "checkSMS(this)")
inputElmt.setAttribute('class', 'column');
return inputElmt;
}
var sendSMSInput = createInputcheck('sSMS');
var contentTdM = document.createElement('td');
contentTdM.appendChild(sendSMSInput);

var contentTr = document.createElement('tr');
contentTr.appendChild( contentTdM );

sendSMSInput.setAttribute('checked', true);

在FF中,函式中的此行 if(elmtValue=="yes") inputElmt.setAttribute('checked', ischecked);會馬上成立,但在IE中,要為checkbox 賦值,必須等到 appendchild後才可以操作checkbox 賦值

2009年5月18日 星期一

在IE與其他瀏覽器中動態設定class屬性

有時候需要動態改變元素的class屬性
例如~ 點選完月曆日期連結後,要顯示點選日期的背景顏色~

Firefox中通常使用
var element = document.getElementById("elementID")
element.setAttribute("class","styleClass") ;
就可以了~ 但IE與Firefox中設定的方式有差異喔~

在IE中要用
element.setAttribute("className","styleClass");
因為IE只識別 " className"~

2009年4月9日 星期四

見鬼了 parseInt('08')

今天月曆顯示 8號 9號 應該 要出現連結變色才對~
月曆語法應該沒有問題啊~ 抓蟲結果.. 無解~?!!

alert("parseInt('10') = "+parseInt('10') + " parseInt('09') = "+parseInt('09')+"  parseInt('07') = "+parseInt('07')+"  parseInt('03') = "+parseInt('03'));

alert出來的結果是:
parseInt('10') = 10 parseInt('09') = 0 parseInt('07') = 7 parseInt('03') = 3
怎麼會這樣~

----------------------------------------------------------------------------------
原來啊~~

parseInt
語法
parseInt(numString, [radix])

描述: 轉換型別為string的數字,變成型別為number的數字
參數 :
  • radix為 option,表示"進制";
  • numString有幾個可能性:
  1. 前面部分是'0x' 的字串會被當作16進制,
  2. 如果前面是'0' 的字串則被當作8進制。
  3. 所有其它字符串都被當作是10進制。
  4. 如果前面是無法解析的數字,比如XYZ ,則會顯示 'NaN'。
所以.. 08 09 被當作8進制~才會映出 '0' ~ 怪怪
因此~只要parseInt(numString, 10) 就好了~~

2009年4月1日 星期三

window.jstiming is undefined 網站又掛了~google map?

剛過12點~
刷新地圖就不見了..
FIREFOX 錯誤主控台顯示 window.jstiming is undefined

..怎麼會在這時候發生問題~

google唯一找到的文章... 居然也沒有回覆..

這是錯誤代碼行
s.src=[c?c:"http://csi.gstatic.com/csi","?v=3","&s="+(window.jstiming.sn?window.jstiming.sn:"mfeundefined")+"&action=",a.name,k.length?"&it="+k.join(",")+d:d,"&rt=",i.join(",")].join("");s=j}};var Wr=/[~.,?&_]/g,Xr=f;zk.f=function(a,b,c){this.qm=a.replace(Wr,"-");this.Eg=c||new window.jstiming.Timer(b);window.jstiming.setTimerName(this.Eg,this.qm);this.Jq=1;this.tD=0;this.uf={};this.Jl={};this.Um={};this.iq=""};


都快放棄了才發現...解決辦法~
"http://maps.google.com/maps?file=api&v=2.x&key=abcdef"

改成
"http://maps.google.com/maps?file=api&v=2&key=abcdef"

就如同連結裡說的~2.X版 不穩定~改回第2版即可

2009年3月25日 星期三

ASP.NET權限不足,無法使用WINDOWS應用程式

最近遇到了個問題
撰寫了一個web service掛載於IIS下,web service會透過SKYPE API呼叫本機電腦裡面的應用程式(SKYPE)作發送簡訊的功能。

未發行至IIS下叫用都是正常的,也寫了一個windows form 來叫用確認是可以執行的
但一發布到IIS下,偵錯時卻發生了.. client端程式 出現wait timeout..

開啟web service 偵錯模式,再來看看web service怎說~
web service先參考skype4com.dll,在程式裡new skypeclass()實體為 myskype都OK,下一步
myskype.sendSMS("+886xxxxxxxxx","hello","") 馬上消失,就像正在處理工作一樣程式碼沒有反紅,看不到偵錯情形。
利用try and catch把runtime error抓出來,錯誤顯示
System.Runtime.InteropServices.COMException (0x80040200): Not attached.
於 SKYPE4COMLib.SkypeClass.SendSms(String TargetNumbers, String MessageText, String ReplyToNumber)
於 Service.HelloWorld() 於 c:\Inetpub\wwwroot\WSsendSKYPE2\App_Code\Service.cs: 行 70

怪哉~GOOGLE了很久,沒有一個解決的方法~
問題可能出在"安全性"問題上~
ASP.NET預設使用者使用資源的安全性與windows應用程式預設安全性不同,所以才會有掛載在IIS下的webservice與windows form使用SKYPE.EXE權限不同!

MSDN tech提到安全性原則部分
有兩個步驟:
1.讓ASP.NET使用者權限提到最高,可以執行、讀取、寫入等等
2.讓SKYPE檔案降低權限可以被設定的使用者群組執行、讀取等

之後再在web service程式碼裡頭加上
System.Diagnostics.Process.Start("Skype.exe"); 允許讀取到此執行檔


System.Diagnostics.Process.Start("Skype.exe");
錯誤顯示 :
{"System.Web.Services.Protocols.SoapException: 伺服器無法處理要求。 ---> System.ComponentModel.Win32Exception: 系統找不到指定的檔案。\n 於 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)\n 於 System.Diagnostics.Process.Start()\n 於 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)\n 於 System.Diagnostics.Process.Start(String fileName)\n 於 Service..ctor() 於 c:\\Inetpub\\wwwroot\\WSsendSKYPE2\\App_Code\\Service.cs: 行 15\n --- 內部例外狀況堆疊追蹤的結尾 ---"}

挖哩,還是讀取不到~>~<~ 不知道是使用者群組原則是否沒有設定好,但我已經把權限都改成"完全控制"了呀?! 之後也試過了web.config 組態設定,還沒試"註冊表"修改~畢竟如果轉移網站的話,不好意思把別人的系統弄掛吧>< 如果web service 可以叫用額外寫的windows form(APP1),而APP1可以使用SKYPE API進行發送簡訊,這樣也許可以完成。只要APP1的路徑掛在IIS下,但不成為ASP.net的成員。不知道這樣的觀念有沒有錯~ 終於找到了這個想法的實現方式~"遠端物件"~~~~~ 利用.net framwork 提供的 remoting namespace把windows application當作遠端物件使用~ 依然要考慮到使用者群組安全性原則~ 但是..這又是一個大議題..依目前程度要花不少時間來看。 想著這個方法的可行性入睡~~~ 也許有另一個方式會比較間接,但可行性有9成!! 利用資料庫當作媒介,讓WEB SERVICE作寫入,另一隻程式做讀取判斷來執行SKYPE 一樣另外寫一個windows application,這隻程式不斷讀取資料庫作判斷。 這樣一來,windows application是在系統管理者的權限下執行而可以使用SKYPE API 再者,移動網站時,也不需要考慮到路徑的問題,只需要多安裝這個application了~ 但,這畢竟是較低級的方法,application 會不斷使用系統資源,還是使用event觸發的方式較能節省系統資源。

2009年3月10日 星期二

webservice 傳送問題

傳輸時,發生

用戶端找到的回應內容型別為'text/html; charset=iso-8859-1',但需要的是'text/xml'。

解:
如果您檢視錯誤訊息的內容,會發覺這個 HTML 網頁是您瀏覽 .ASMX 檔案時所見到的。這時會產生一個疑問:當我將 XML (SOAP Envelope 的格式) 公佈到 Web 服務時,為什麼會傳回 HTML?結果就是您沒有使用 SOAP Envelope 傳送 HTTP POST 要求,卻只是傳送沒有本文的 HTTP GET 要求,而 Web 服務會適當地假設您是瀏覽器,並傳回它一般的 HTML 回應。

refer
http://www.microsoft.com/taiwan/msdn/library/2002/Sep-2002/service08062002.htm

2009年3月8日 星期日

網頁問題(暫存)

目前發現的

1.在做歷史軌跡部分,時間比對在0:00~01:00時間不會顯示。
之前還莫名其妙的在想是不是網站掛了>< 因為每次開啟都不一樣問題~不同瀏覽器也有問題~

2. 行動排程 按下區域應該要顯示設定的區域!

3.行動排程應該要加上時間設定(這個頭大)

3.要可以修改會員資料,並顯示資訊以及刪除功能

4.系統說明頁面未寫

5.寄發E-mail驗證未寫

6.歷史軌跡應該從有資訊的時間點開始

7.歷史資訊控制相要加入暫停紐(不知道有沒有thread的功能)

8.區域設定可以加入MRT設定

9.PDA端可以加入POWER節省控制

10.PDA佈署要在自動安裝在最右下角

11.要加入關閉螢幕背光設定

12.網頁控制項應該加入過濾精準度的能力

13.歷史軌跡應該加入畫線速度拉軸 (慢 中 快) 或是 開始/暫停 後快轉 停止 前快轉

開啟/關閉 WIFI 裝置

問題
http://topic.csdn.net/u/20080728/20/a5efe62a-629c-4811-add5-bc6c53fcdd5b.html

解法

Windows Mobile 中开关 WIFI 的“通用”代码

SystemState.WiFiStatePowerOn Property  讀取WIFI狀態的屬性,但無法設置開關
英文的 ><

Deactivate /Activate all Services like (Internet,WIFI,Bluetooth,WLAN..)

Enabling Radio in the Windows Mobile 5.0

WiFi Power On Event

開啟D0 關閉D4

We can implement this functionality with ease. Hope this can give your some idea.

See the code below:

// D0 indicates open; D4 indicates close;

CEDEVICE_POWER_STATE state = D0;

HRESULT hr = SetDevicePower(TEXT(""),POWER_NAME,state);

Note: We use SetDevicePower function here. It sets the device power state for a device.

  1. 1st parameter: specify the device.
  2. 2nd parameter: we use POWER_NAME here to indicate that the first parameter is just a device name.
  3. 3rd parameter: sets the power state.

In order to get information in details, you can find it in MSDN. Thanks!

Regards,

Zero Dai - MSFT



之後
Battery Status

GPS Application

Mobile GPS

2009年3月4日 星期三

尚須解決PDA端問題-暫存

function1
需於PDA 設定->連線->Wi-Fi->要存取的網路:僅存取點
要找開啟或關閉無線網路的API

2009年2月18日 星期三

scoket傳送封包流過長

趁著從台北開會搭公車回來,測試研究的系統穩定度
發現搭車到到一半時就發生過長時間才收到server的回應
最後一筆有效紀錄(經web server過濾後所顯示)的地圖標點

都來沒走一半呢...
回到研究室看看debug訊息~

怪哉~ 再看console
不知道什麼原因造成多筆記錄在同一筆傳送
socket封包支援到1024byte,一旦超過,傳送的data stream 就會被截斷在下一個封包繼續傳送
如果網路狀況不擁擠(小於1024byte),那麼頂多只會loss掉幾筆資料..
但如果遇到split(,),剛好data資料開頭剛好是"," 程式裡頭判斷所欲存之值為空..就會發生錯誤(格式不對)

看看資料庫就知道...多糟了><

看樣子,要避開這種情況目前想到只有
  1. 修改每次傳送封包格式的大小,能整除1024(目前一筆資料大小為76byte以下),這樣就能確保所存資料格式正確
    但server程式部分要限制每個欄位的資料大小,之後如果PDA要新增傳送資料,要再修改 重算能整除值...而對定位而言,更會遺失至多12筆資料(1024/76=13.47)
  2. server程式先行判斷所收到資料筆數(依封包大小),再複雜變數儲存判斷,但好像遇到封包過大,還是有stream被截的問題...
  3. 搜尋stream buffer相關.. 迫使程式接收一定是一筆一筆進來分析.
看樣子 方法三應該是比較簡單的,不用修改太多程式碼,要花時間的是找stream buffer部分的知識了~

2009年2月17日 星期二

web service 建置與使用

遵循書上範例建立web service ,建立完成後都繪有個基本的web method ==> helloword()
當按下執行紐,就會跳出兩個選項
  1. 建立web.config 以提供偵錯功能
  2. Ctrl+F5略過偵錯來執行
如果選擇1就會跳出下列錯誤



解決辦法參考 (MSDN)錯誤:偵錯失敗,因為整合式 Windows 驗證沒有啟用

啟用驗證後的執行偵錯畫面







參考資料 MSDN驗證與授權
這份資料也值得一看
~關於ASP.net管理工具的東西


2009年1月22日 星期四

PDA 無法連結至電腦

最近常常出現 連結PDA時,無法連線的問題,通常是在插入別隻PDA後再插入本身的PDA的時候會發生~

解決方法~

問題--又噴了

在ASL.project , 當PDA 按下待機紐時,或是按X 就有機會出現下圖



int bytesRead = handler.EndReceive(ar); 這行~
猜測應該是 在這行timeout了

2008年11月15日 星期六

測試 string 於 javascript & php

html 的form 經過 POST 或 GET method 傳過來時,只能用PHP網頁接 ..新發現
題外話~~

重點~~~~~~~~~~~~~~
傳過來是
<input name="phonenumer" type="text" value="phone" >
<input name="checknum" type="text" value="chk" >

這個來接收
accept.php

<?php
$phonenumber = $_POST['phonenumer'] ;
$checknum = $_POST['checknum'] ;
$_SESSION['phonenumber']=$_POST['phonenumer'] ;

echo '$phonenumber='.$phonenumber ; //$phonenumber=phone
echo $phonenumber ; //phone
echo "$checknum" ; //chk

?>
<script type="text/javascript">
//<![CDATA[


alert("ffff") ; //ffff
var phonenumber1 ="4536" ;
//表單傳遞資訊存入javascript
alert("<?php echo 'fssfdsfsdf' ?>") ; //fssfdsfsdf
alert("<?php echo "$phonenumber" ?>") ; //0988...
alert('phonenumber1') ; //phonenumber1
alert("phonenumber12") ; //phonenumber12
alert(phonenumber1) ; //phone

var phonenumber = <?php echo "\"$phonenumber\"" ?> ;
alert(phonenumber) //phone
var phonenumber = "<?php echo $phonenumber ?>" ; //存成 phone 字串
alert(phonenumber + '000') // //phone000
var checknum = "<?php echo "$checknum" ?>" ; // 存成 chk 字串
alert(checknum + '000') //chk000

alert("http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+"&phonenumber="+ phonenumber) ;

// XMLHttpRequest通訊 ;
// function getLonLat(url){
// var request = GXmlHttp.create();
// var theDate = new Date(); //為了避免瀏覽器快取
// request.open("GET","http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+"&//phonenumber="+ phonenumberr="+ phonenumber , true) ;
//失敗...

var url="http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+theDate.getDate()+theDate.getMinutes()+theDate.getSeconds()+"&phonenumber="+ phonenumber ;
alert(url); //http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp=165349&phonenumber=phone