2007-06-14

document.body.scrollTop都是0

整個五月都沒有在維護blog,
雖然有不少東西可以寫,但就是因為懶...
所以這次一定要趁還想寫的時候趕快寫下來...

今天,再作一個網頁特效的時候,
遇到了一個狀況,
因為要作的功能是,捲動瀏覽器的捲軸後,
廣告圖片會跟著滑動.
而這功能,在網路上已經有很多範例了,
所以特別挑了一個簡短而且在IE跟Firefox上都可以用的來,
稍微修改一下,寫個範例測試,沒有問題就想說可以開始套了,
結果沒想到將那個片段套在程式裡以後,卻不會動...
所以只好重頭debug了.
debug到後來才發現,
原本的測試網頁中使用的document.body.scrollTop是正常的,
但是套用到aspx的頁面時,
不管怎麼捲動,document.body.scrollTop都是0.

google一下後發現,原來是因為網頁的DOCTYPE的問題,
在測試的網頁中,是用下面這片段
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

但是在網站中,是用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(ps.這是在.Net studio中預設新增網頁時會加上去的.)

所以原本的document.body.scrollTop要改成document.documentElement.scrollTop就可以了.

update - 20070614:

另外發現...原以為ie跟firefox都正常的範例是有點問題的...
而問題點在於,
未使用DTD前,在ie跟firefox都可以使用下列的語法來設定位置

document.getElementById("adimg").style.top = 200;

但是在使用DTD之後,
ie還是可以接受上面的語法,
但是在firefox卻是不行的,
而firefox所能接受的如下(需要加上單位)
document.getElementById("adimg").style.top = "200px"

而這個在ie上是接受的,
所以只要改成如上的語法就可以在ie跟firefox都正常了.

範例網頁:

原始 : http://ajunlee.googlepages.com/rolling.htm
使用DTD : http://ajunlee.googlepages.com/rolling_err.htm
使用DTD修正後 : http://ajunlee.googlepages.com/rolling_ok.htm

2007-01-25

小工具的時代


已經有段時間沒有更新blog了,
最近的工作都是圍繞在asp.net 2.0上,
theme,profile,membership,roles,webpart,personalization等等的名詞,
一下子充斥在週遭,
還有SPS(SharePoint Portal Server),WSS(Windows SharePoint Service),OFFICE 2007,
又是一堆新的東西,還有一堆"假根"(Jargon),
抱怨到現在,似乎跟主題還是沒有什麼關係.


今天要說的是小工具,
以前提過的"桌面上的競爭",
現在似乎將桌面上的競爭移到了blog上,
google的gadget,在之前開放給googlepages可以掛了以後,
現在更是開放給所有人都可以加到他們的blog或是網站上,
而微軟的Windows Live Gallery也不知道是什麼時候開始的,
之前應該是Microsoft gadgets,
而且在Msn Space已經悄悄的加上了(詳情請見您的Msn Space中自訂模組的功能)
只是Windows Live Gallery還是差google的gadget一點的就是,
gadget可以掛在google的個人化頁面,還有google的googlepages,
甚至還可以掛在使用者自己的網站上,
但是微軟的Windows Live Gallery,目前只能在Windows Live跟Msn Space上使用而已...
而asp.net 2.0中,webpart的應用很像是Windows Live Gallery,
但是,兩者似乎不能互通...


說到這,應該會覺得,這兩大公司,
現在的焦點似乎是從桌面轉移到網站上,
或許更大膽的說,是將焦點轉移到每天大量成長的blog上,
而說到給blog專用的工具,
就不得不提six apart的widget gallery,裡面有許許多多可以讓你掛在你的blog上的小功能,
不知道以上這些是不是讓你有所啟發呢??

2006-08-21

資料夾同步


之前,在同步檔案的時候,我們都習慣去找一些同步的工具來做,
其實,在windows下的xcopy就可以做到了!!


假設我們有個資料夾為d:\tmp跟e:\tmp
而我們只要將d:\tmp中有異動的檔案複製到e:\tmp下的話,


用法如下
xcopy d:\tmp\. e:\tmp\ /D /S /Y


其中/D 表示只複製那些來源檔案日期比目的檔案日期為新的檔案,
/S 表示複製每個目錄及其包含的子目錄,不複製空目錄.
假如空目錄也要複製的話,可以使用/E
另外,如果只要複製資料夾結構而不複製檔案的話,可以用/T
而/Y 則表示不要提示您確認是否要覆蓋一個已經存在的檔案。
這樣他就不會一直跳出確認覆蓋的視窗.


假如你想要知道有哪些檔案被複製的話,可以加個/F,
/F 表示在複製時顯示來源及目的檔案的全部檔名。


另外,如果你要同步不同電腦的資料夾的話,
則要先建立網路磁碟機,
用法如下


net use z: \\ip位址\資料夾名稱 密碼 /user:帳號
xcopy z:\. e:\tmp\ /d /s /y /z
net use /delete z:


用net use將資料夾加入網路磁碟機z:
等同步完後再將z:刪除
而xcopy則加了一個參數/Z
他的說明是"在可重新開始的模式中複製網路檔案。"
不過很多人應該有看沒有懂...
摘自網路上的說明 : "如果您在複製階段失去連線 (例如,如果伺服器切斷伺服器連線的話), 在您重新建立連線之後會恢復複製"!!
(取自小紅帽技術論壇 : http://redhat.ecenter.idv.tw/bbs/showthread.php?s=...)

2006-04-12

關於JSON

最近google reader提供了share的功能,


我也好奇的將它加到我的blog上,


不過套用他們提供的版面,


會使IE瀏覽時的版面跑掉,所以想要看看怎麼客制化版面.


從他的javascript會發現,他的資料是以JSON的格式來提供數據的,


第一次看到JSON時,是Yahoo的API相關的資料中,


不過當時沒去留意JSON到底在玩些什麼,


現在仔細看了一下,發覺,這還真的好東西,


這東西常被用來跟xml比較,


因為它跟xml一樣都是用來當數據交換的格式.


之前在玩UrMap時,原本是想用xml的結構來傳輸一些資料,


不過後來發現,要用javascript處理xml跟寫xpath還真的是有點小麻煩,


尤其是我只是想要傳一個很簡單的地點資料而已...


所以後來捨棄xml的格式,改用從後端直接用ASP產生javascript的語法傳到前端執行,




再來來看一下del.icio.us跟google reader所提供的feeds的json資料,


下面這個是我的del.icio.us所記錄的


http://del.icio.us/feeds/json/ajunlee


預設是提供15筆,


最多可以產生100筆資料,


只要在連結後加個count的參數


http://del.icio.us/feeds/json/ajunlee?count=20


相關資訊可以參考下列連結


http://del.icio.us/help/json


而google reader也是一樣,


下面是我所分享的label的資料,後面n是指定筆數,


http://www.google.com/reader/public/javascript/user/11872900915388797735/label/computer?n=5


另外它有另一個參數callback


只要是讓產生的資料直接可以套用他的UI程式(http://www.google.com/reader/ui/publisher.js)


http://www.google.com/reader/public/javascript/user/11872900915388797735/label/computer?n=20&callback=GRC_p(%7Bc%3A'-'%2Ct%3A'Google%20Reader'%2Cs%3A'true'%7D)%3Bnew%20GRC


所以只要先知道這些,以後有空在慢慢去玩吧!!


相關資料 :


介紹JSON(中文版說明)


http://blog.patterns.cn/json/


JSON and XML


http://www.mnot.net/blog/2005/01/24/json


AJAX response: XML,HTML, or JSON?


http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html


JSON and Yahoo!'s Javascript APIs


http://simon.incutio.com/archive/2005/12/16/json


Web services + JSON = Dump Your Proxy


http://www.theurer.cc/blog/2005/12/15/web-services-json-dump-your-proxy/


Using JSON with Yahoo! Web services


http://developer.yahoo.com/common/json.html



2006-03-07

將MSSQL查詢的結果存到文字檔中

之前為了方便建立資料庫的預設資料,


所以用SQL的語法直接產生insert的指令,


例如 :


select 'insert into tableB values(''' + field1 + ''',''' + field2 + ''',''' + field3 + ''')' as expr from tableA


這樣所產生的結果會像是


insert into tableB values('a1','b1','c1')


insert into tableB values('a2','b2','c3')


insert into tableB values('a3','b3','c3')


然後只要把結果複製貼到文字檔中,


以後要建立預設資料時就可以直接用這個SQL script


不過,當資料筆數很多時,將結果複製貼上就有點麻煩了,


所以就想找一下MSSQL中有沒有像MYSQL那樣將結果直接存成檔案的指令,


果然還是有的,只是並不是直接在SQL的指令模式下執行,


而是要透過BCP(Bulk Copy Program),


指令如下 :


bcp "select 'insert into tableB values(''' + field1 + ''',''' + field2 + ''',''' + field3 + ''')' as expr from DatabaseName.dbo.tableA" queryout d:\ScriptName.txt -U 資料庫帳號 -P 資料庫密碼 -c


其實,如果只要用bcp就可以做資料匯出匯入的動作,


不需要再用語法產生insert into的指令.


關於BCP的相關介紹可以看下面這篇文章


Utilize BCP with SQL Server 2000

2006-03-02

更改資料庫的定序名稱

之前在查詢中文資料時,都是直接使用下列的語法


select * from tablename where fieldname like '%中文%'


但是今天在查資料時卻查不出任何東西,而且資料欄位中確實有"中文"的字樣,


查了一下,才發現只要在查詢的資料前加個N就可以了,語法如下 :


select * from tablename where fieldname like N'%中文%'


而這主要是因為資料庫的定序名稱所引起,


通常我們在建立資料庫時,定序名稱都是使用"伺服器預設值",


所以也很少去注意它.


雖然說只要查詢語法改一下就可以了,


但是為了以後維護上的方便,


所以打算將資料庫的定序名稱改成"Chinese_Taiwan_Stroke_CI_AS",


可是,從SQL Server Enterprise Manager並不能直接去做修改,


所以要下語法去異動,


而語法如下 :


ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE


ALTER DATABASE DatabaseName COLLATE Chinese_Taiwan_Stroke_CI_AS


ALTER DATABASE DatabaseName SET MULTI_USER WITH ROLLBACK IMMEDIATE


因為在改定序名稱時,必須先鎖定資料庫,


所以第一行要先將資料庫設定為SINGLE_USER,每次只能一個使用者存取資料庫,


然後再修改定序名稱,


修改完後再將資料庫改回 MULTI_USER 即可,


另外要執行這些指令值須先將所在的資料庫切換到master下.

2005-12-28

Google Reader API

這個或許應該算是Google Reader的hack.

詳細閱讀 : www.niallkennedy.com/bl...

忘記密碼怎麼登入windows

不知道有沒有人會遇到這樣的情況,

忘了自己電腦的密碼...

看看下面這篇,或許有用!!

How To Log On To Windows If You Forget Your Password www.aviransplace.com/in...

2005-12-26

可拋棄式的電子信箱

從一個網友所留的信箱看到的,

為了避免垃圾信,所以用臨時的電子郵件地址,感覺像是一個臨時的dns,輸入你的信箱後並設定信箱的時效,然後他會給你一個信箱位址,在時效內寄到那個新的位址的信都會轉送到你的信箱中...

相關連結 www.jetable.org/zh/inde...

HOW TO:在執行 SQL Server 的電腦間移動資料庫

一些在使用MS SQL上的技巧,

對於資料庫移轉或是系統要上線前的建置資料庫很有用!!

繼續閱讀 support.microsoft.com/k...

2005-12-21

聖誕節越來越近

週末沒看到金剛,
但聖誕快到了,
華納威秀附近有著濃濃的過節氣氛!!
所以拍照留念一下!! Posted by Picasa

當開發機是Windows on ARM...

 在MacOS上要使用windows去編譯一些程式常常會遇到一些plamform的問題... - cmake build failed 當使用 cmake -S . -B build 要建立 build system files 原本的專案是在x64上, 所以直接執行會直接使用A...