作者 Knuckles(阿德)
標題 [JS] 可適性週期執行的function
時間 2010年04月23日 Fri. PM 06:22:38
雖然js有 setInterval() 可以每隔一段時間執行某個function來更新資料
不過時間設太長的話不夠即時,太短的話又浪費資源
所以想弄個可適性週性執行的方法
讓使用者閒置愈久就愈慢更新
先用 setInterval("idle_time++",1000);
每秒把idle_time的值增加1,來記錄使用者閒置了多久
利用jQuery的事件觸發
$(document).keydown(function(e){ idle_time=0; });
$(document).mouseover(function(e){ idle_time=0; });
來偵測使用者是否有在使用鍵盤或滑鼠
接著我們就可以利用 idle_time 與 setTimeout() 來做可適性週性執行function
利用 setTimeout('autoUpdate()',20000);
當網頁載入後過20秒執行一次 autoUpdate()
(20000ms = 20s)
然後在 autoUpdate() 中這樣寫:
function autoUpdate(){
if(idle_time>=20){ //要閒置20秒才會執行,避免使用者正在操作時自動更新
// 更新資料程式
}
if(idle_time<60 autoupdate="" p="" settimeout=""> else if(idle_time<300 autoupdate="" p="" settimeout=""> else if(idle_time<1200 autoupdate="" p="" settimeout=""> else setTimeout('autoUpdate()',3600000);
}
這樣使用者正在操作時就不會自動更新,而
閒置了20sec~1min時,每20sec執行一次
閒置了1min~5min時,每1min執行一次
閒置了5min~20min時,每5min執行一次
閒置了20min以上時,每小時執行一次
這樣就達到可適性週期執行的效果了
要注意執行 autoUpdate() 最後一定要有 setTimeout() 再把自己執行一次
如果前面設了個 return 跑出去的話,就不會再自動執行了
--
※ 來源: DISP BBS 看板: Knuckles_note 文章連結: http://disp.cc/b/11-1K61200>300>60>
2013年10月10日 星期四
VisualSVN自動備份
找了一些資料,終於測試出來OK了~^^....快記下來以免忘記。
1.hotcopy方式:(轉載自 http://www.the8m.com/blog/article/chengxua/visualsvnback.html )
simpleBackup.bat要放在svn版本庫的根目錄下。
SVN_backup.bat可隨意放。==============================================
SVN_backup.bat內容:
echo off
rem Subversion的安裝目錄 //如=>"C:\Program Files\VisualSVN Server"
set SVN_HOME="C:\Program Files\VisualSVN Server"
rem 所有版本庫的父目錄 //庫目錄,如=>d:\svn
set SVN_ROOT=C:\Repositories
set SVN_ROOT_RUN="C:\Repositories"
rem 備份的目錄(如:C:\svnbak)
set BACKUP_SVN_ROOT=C:\svnbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%_%date:~5,2%_%date:~8,2%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立備份目錄%BACKUP_DIRECTORY%>>%BACKUP_SVN_ROOT%/backup.log
md %BACKUP_DIRECTORY%
rem 驗證目錄是否為版本庫,如果是則取出名稱備份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I/conf/svnserve.conf" %SVN_ROOT_RUN%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 備份目錄%BACKUP_DIRECTORY%已經存在,請清空。
goto end:end
=================================================
simpleBackup.bat 內容:
@echo 正在備份版本庫%1......
%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本庫%1成功備份到了%2!==================================================
1.hotcopy方式:(轉載自 http://www.the8m.com/blog/article/chengxua/visualsvnback.html )
simpleBackup.bat要放在svn版本庫的根目錄下。
SVN_backup.bat可隨意放。==============================================
SVN_backup.bat內容:
echo off
rem Subversion的安裝目錄 //如=>"C:\Program Files\VisualSVN Server"
set SVN_HOME="C:\Program Files\VisualSVN Server"
rem 所有版本庫的父目錄 //庫目錄,如=>d:\svn
set SVN_ROOT=C:\Repositories
set SVN_ROOT_RUN="C:\Repositories"
rem 備份的目錄(如:C:\svnbak)
set BACKUP_SVN_ROOT=C:\svnbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%_%date:~5,2%_%date:~8,2%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立備份目錄%BACKUP_DIRECTORY%>>%BACKUP_SVN_ROOT%/backup.log
md %BACKUP_DIRECTORY%
rem 驗證目錄是否為版本庫,如果是則取出名稱備份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I/conf/svnserve.conf" %SVN_ROOT_RUN%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 備份目錄%BACKUP_DIRECTORY%已經存在,請清空。
goto end:end
=================================================
simpleBackup.bat 內容:
@echo 正在備份版本庫%1......
%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本庫%1成功備份到了%2!==================================================
轉貼:ASP.NET中解决跨子域的Session共享
為了這問題搞了好久,終於找到了解決的資料。
原本找到的資料:http://www.cnblogs.com/assion/archive/2010/07/29/1787960.html
可惜還是無法共享Session的變數,於是又找到一個完全解決的文章,測試結果OK,YA!!!....
網址如下:
http://www.itivy.com/ivy/archive/2011/4/24/634392360221984930.html
不過....還看不太懂:P...先用再說囉...
原本找到的資料:http://www.cnblogs.com/assion/archive/2010/07/29/1787960.html
可惜還是無法共享Session的變數,於是又找到一個完全解決的文章,測試結果OK,YA!!!....
網址如下:
http://www.itivy.com/ivy/archive/2011/4/24/634392360221984930.html
不過....還看不太懂:P...先用再說囉...
IIS 7上出現'vfpoledb.1' 提供者並未登錄於本機電腦上。--解決了
在使用64位元windows 7的IIS時,突然原本可以用的程式出現=>'vfpoledb.1' 提供者並未登錄於本機電腦上。
找了很多資料原來VFPOLEDB不支援64位元....
後來找到一篇"開啟 IIS 7.5 中32位元程式支援 ADODB.Connection"的文章,一試果然可以了....YA...
參考網站:
http://www.eion.com.tw/Blogger/?PID=1074
找了很多資料原來VFPOLEDB不支援64位元....
後來找到一篇"開啟 IIS 7.5 中32位元程式支援 ADODB.Connection"的文章,一試果然可以了....YA...
參考網站:
http://www.eion.com.tw/Blogger/?PID=1074
頁面輸出繁簡中文轉換
心得:
利用VB的功能來做,速度比先前找的方式(比對方式)快多了。
為了偷懶結合修改了2種方式,所以CODE有點亂。....:P
有時間再試試javascript方式。
參考網頁:
http://www.dotblogs.com.tw/jeff377/archive/2008/03/17/1718.aspx
程式碼範例:
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page
'''
''' 將繁體中文字轉換成簡體中文。
'''
''' 文字內容。
Public Shared Function Big5ToGb(ByVal Text As String) As String
' 將繁體中文字轉換成簡體中文,LocaleID 設為 2052
Return StrConv(Text, VbStrConv.SimplifiedChinese, 2052)
End Function
'''
利用VB的功能來做,速度比先前找的方式(比對方式)快多了。
為了偷懶結合修改了2種方式,所以CODE有點亂。....:P
有時間再試試javascript方式。
參考網頁:
http://www.dotblogs.com.tw/jeff377/archive/2008/03/17/1718.aspx
程式碼範例:
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page
'''
''' 將繁體中文字轉換成簡體中文。
'''
''' 文字內容。
Public Shared Function Big5ToGb(ByVal Text As String) As String
' 將繁體中文字轉換成簡體中文,LocaleID 設為 2052
Return StrConv(Text, VbStrConv.SimplifiedChinese, 2052)
End Function
'''
取得DataPager目前所在頁數的範例程式
備註:
1.DataPagerListView為ListView=>ListViewProductsList使用的DataPager。
2.HiddenFieldCurrentPageNo為存放目前所在頁數。
3.寫在ListViewProductsList的DataBound事件中。
Private Sub ListViewProductsList_DataBound(sender As Object, e As System.EventArgs) Handles ListViewProductsList.DataBound
'
If Me.DataPagerListView.TotalRowCount > 0 Then
Dim CurrentPageNo As Integer = Math.Ceiling(((Me.DataPagerListView.StartRowIndex + Me.DataPagerListView.MaximumRows) / Me.DataPagerListView.MaximumRows))
Me.HiddenFieldCurrentPageNo.Value = CurrentPageNo.ToString
'Me.LabelCurrentPageNo.Text = CurrentPageNo.ToString
Else
'Me.LabelCurrentPageNo.Text = "0"
Me.HiddenFieldCurrentPageNo.Value = "0"
End If
End Sub
1.DataPagerListView為ListView=>ListViewProductsList使用的DataPager。
2.HiddenFieldCurrentPageNo為存放目前所在頁數。
3.寫在ListViewProductsList的DataBound事件中。
Private Sub ListViewProductsList_DataBound(sender As Object, e As System.EventArgs) Handles ListViewProductsList.DataBound
'
If Me.DataPagerListView.TotalRowCount > 0 Then
Dim CurrentPageNo As Integer = Math.Ceiling(((Me.DataPagerListView.StartRowIndex + Me.DataPagerListView.MaximumRows) / Me.DataPagerListView.MaximumRows))
Me.HiddenFieldCurrentPageNo.Value = CurrentPageNo.ToString
'Me.LabelCurrentPageNo.Text = CurrentPageNo.ToString
Else
'Me.LabelCurrentPageNo.Text = "0"
Me.HiddenFieldCurrentPageNo.Value = "0"
End If
End Sub
訂閱:
文章 (Atom)