GH教學

GodHelp線上補習班、各類教學分享網站(程式設計、Flash遊戲教學、影音轉檔、動畫、繪圖、Go Home Schooling.....等等)

搜尋

Flash 3D旋轉選單加超連結

Q:3D旋轉選單,希望在個別的按鈕加上超連結,應該怎麼加呢
1.各個按鈕可跳至個別的頁面連結
2.各個按鈕可跳至個別的場景

A:請看以下影音解說






SMS簡訊發送程序

簡訊SMS供應商Provider
API(Application Programming Interface)就是程式溝通介面
<%
aPhone=split("0936123XXX,0936456XXX",",")
set xmlHTTP = Server.CreateObject("Microsoft.XMLHTTP")
set XMLDocument = Server.CreateObject("Microsoft.XMLDOM")
'===發送多個號碼===
for iPhone=0 to ubound(aPhone)
'---台灣簡訊的API---
smsURL = "http://api.twsms.com/SendSMS.php?"
'簡訊參數
smsArgs = "CID=" & CID & "&CPW=" & CPW & "&N=" & aPhone(iPhone) & "&M=" & Server.Urlencode("內容")
'發送
xmlHTTP.open "GET",smsURL & smsArgs ,False
xmlHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHTTP.send
Next
'===發送多個號碼===
'釋放資源
set xmlHTTP = nothing
set XMLDocument = nothing
%>

avi轉dvd的一些問題

Q:想將avi轉成dvd 但是沒字幕~有一個srt字幕檔 請問 要怎麼把字幕檔 一起轉成dvd ??
Q2:現在我的影片檔格式是avi檔的 我也將字幕和影片都合並好了,希望能找到一個簡單又省片子的好方法

A:推薦格式工廠轉檔軟體~以下為詳細操作過程:





意見討論

不需登入就可以留言討論





影音是王道

今天中午與好友聊天
談到如何回答知識+網友的問題
兩人很有共識的覺得
【影音回應】更能讓人清楚
也是未來教學的王道

那就開始要用影音解決網友問題

這就是所謂的【GH教學法】

Flash Game課程 系列一:射擊遊戲 影音GH教學

Flash Game課程 系列一:射擊遊戲
影音GH教學





Table之間Update

我現在寫一個VBA的程式. 其中有一個Update 語法如下. Update item1 Set cat='" & a0 & "' where 識別碼=" & a1 a0 及a1 都是其他table的值那我該如何取得a0,a1的值呢?? 我現在是要做一個按紐為更新一按下就會更新所有的值

SQL指令

--參考指令
update A set A.iUnit=B.iUnit
from A,B
where A.sKey=B.sKey
--Update 語法
update item1 set item1.cat=B.iUnit
from item1,B
where item1.識別碼=B.sKey

ARITHABORT 錯誤

[SqlException (0x80131904): INSERT 已經失敗,因為下列的 SET 選項設定不正確: 'ARITHABORT'。]

網路上看到解決方式是
ALTER DATABASE DBName
SET ARITHABORT ON

最後找到其中一個COLLATE定序與其他欄位不同造成
把它修改為資料庫預設後就可以了

倒正三角形以For迴圈

C++問題倒正三角形以for迴圈
使用者輸入一個正整數
然後輸出以*印成的倒 正三角形(用for迴圈來做)
EX:
輸入5
輸出的東西
 *****
  ***
   *

寫了兩個不同的程式語言
重點是如何控制空白及*數量
C++
我是以階層iLevel來設定比較單純
你要5個*需要設定3層

int iLevel=3;
for(int i = iLevel-1 ; i <=0 ; i--)
{
repeat(iLevel-i," ") ;
repeat(1+(i)*2, "*") ;
repeat(iLevel-i," ") ;
printf("\n");
continue;
}
//自行定義一個repeat 數量,字的function
function repeat void repeat(int n,char ch)
{
for(int i=0;i<n;i++) printf("%c",ch);
}


ASP寫法

<%
iLevel=7
For i=iLevel-1 To 0 Step -1
Response.write String(iLevel-i," ") & String(1+(i)*2, "*") & String(iLevel-i," ") & "
"
Next
%>

加快瀏覽器速度IE、FireFox

方法就是將記憶體拿來當瀏覽器的Cache空間,速度會快很多
尤其是現在RAM很便宜,加上RAM有關機就消失的特性
可以避免上網瀏覽網頁的病毒

A.首先找RamDisk軟體,安裝設定磁碟位置,例如A:
B.設定瀏覽器Cache位置

Firefox修改Cache位置
1.進階 → 網路 → 離線資料儲存 容量設定
2.在網址列輸入: about:config
3.會出現警示訊息:點選 我發誓,我一定會小心的!
4.按右鍵新增 字串: browser.cache.disk.parent_directory
5.輸入設定的位置 A:\Firefox (A: 是 RamDisk)
6.重新啟動 Firefox 就可以

IE修改Cache位置
1.網際網路選項 Temporary Internet Files 設定大小
2.移動資料夾到A:
3.重新啟動 IE就可以

取亂數、要取a b兩值之間亂數、取固定位數亂數

取亂數、要取a b兩值之間亂數、取固定位數亂數

Excel
=RAND()*(b-a)+a
取兩碼亂數
=INT(RAND()*(99-10)+10)

ASP
Randomize
iRand=Cint((b-a)* Rnd()) +a

SQL
Convert(int,RAND()*(@b-@a)+@a)
99~10表示2位的亂數
Convert(int,(Rand()*(99-10)+10))
Convert(int,(Rand()*(999-100)+100))

ASP亂數的選答案

ASP亂數的選答案
資料庫內容如下
題號,題目,A選項,B選項,C選項,D選項,E選項,正解
然後題目我已經亂數挑選過了

請問有什麼好方法可以把ABCDE選項也小小的亂一下
<例如B答案跑到A答案>
對答的時候還要對到正確答案

GH的建議如下
1.顯示選項A選項,B選項,C選項,D選項,E選項
其中選項A的值=1,B選項=2,C選項=3類推
2.正解欄位儲存值1~5就好
如果是B選項則儲存2
3.只要前端也使用亂數模式將選項呈現
程式碼如下

<%
Randomize
'亂數取以下5種其中一種顯示
iRand=Cint((5-1)* Rnd()) +1
select case iRand
case 1
'呈現答案A選項,B選項,C選項,D選項,E選項
case 2
'呈現答案C選項,D選項,E選項,A選項,B選項
case 3
'呈現答案D選項,E選項,A選項,B選項,C選項
case 4
'呈現答案D選項,B選項,E選項,A選項,C選項
case 5
'呈現答案A選項,D選項,E選項,B選項,C選項
case else
'呈現答案E選項,A選項,B選項,C選項,D選項
end select
'還可以增加更多不同顯示順序
%>


4.最後只要使用者送出答案時會將值送出
就可以判斷使用者答案是否正確了

日期格式Date Format

ASP

<%=FormatDateTime("2009/10/26 下午 07:14:00",2)%<
'顯示2009/10/26格式

SQL

Flash小遊戲(簡單轉盤抽獎遊戲)





SQL刪除重複資料,一次搞定

常常會有資料表沒有設定Primary Key
造成資料重複匯入
要如刪除重複部份
程序如下

--建置一個TEMP TABLE
drop table #A
create table #A(i int,s nvarchar(100))
--把來源資料下group by 並限制資料筆數是兩筆以上的加以匯入
insert into #A
select * from SourceTable
where iGroup in(
select iGroup from SourceTable
group by iGroup
having count(*) >1
)
--刪除重複的資料
delete AdminGroup
where iGroup in(
select iGroup from SourceTable
group by iGroup
having count(*) >1
)
--最後把整理匯入的Temp TABLE資料匯入即可
insert into SourceTable
select distinct i,s from #A

GH教學

ASP三角形排列問題

VBA老師出題要我做一出個如下的三角形
.............a
...........aaa
.........aaaaa
.......aaaaaaa
.....aaaaaaaaa
...aaaaaaaaaaa
.aaaaaaaaaaaaa
首先要先觀察排列規則
而且每列數量是相同13個
所以只要觀察出a的數量
可以看出a是以2為增量所以*2來計算
相對地.就以相同量減少
以維持整行13的數量

VBA語法
Private Sub Command1_Click()
n = 13
For k=1 To 7
Print String(n-(K-1)*2,".") & String(1+(K-1)*2, "a")
Next
End Sub

ASP語法
<%
n = 13
For k=1 To 7
Response.write String(n-(K-1)*2,".") & String(1+(K-1)*2, "a") & "<br>"
Next
%>

Union資料表查詢問題

我現在6個資料表,裡面的欄位都是一樣的,我現在想要去搜尋這6個資料表的list欄位
然後這6個資料表的list欄位有關a開頭的文字給印出來,請問要怎麼去作呢?


我建議你要用Create View方式建立一個View
也方便你日後彈性調整多個TABLE
語法


CREATE VIEW dbAll AS
SELECT * FROM db WHERE list LIKE 'a%'
union
SELECT * FROM db1 WHERE list LIKE 'a%'


以你描述的狀況
你應該先到SQL script 測試是否此script可以正常運作
或許可能是你DB的安裝問題,重新安裝或者到另一台試試

浮動廣告固定位置,不論Scrollbar如何轉

Fade In Out

MSSQL將搜尋出來的資料筆數,以橫式呈現?

可以使用Cursor處理
將資料ㄧ筆筆累加在一起
存在變數裡,最後呈現即可

Declare @sNameTemp varchar(50),@sNameAll varchar(500)
set @sNameAll=''
-- Declare the cursor from Table
DECLARE curSystem CURSOR FOR
SELECT TEST FROM AAA
--Open Cursor
OPEN curSystem
--Fetch Next Cursor
FETCH NEXT FROM curSystem
INTO @sNameTemp
--Cursor 迴圈===================
WHILE @@FETCH_STATUS = 0
BEGIN
set @sNameAll=@sNameAll+@sNameTemp+','
--Fetch Next Cursor
FETCH NEXT FROM curSystem
INTO @sNameTemp
END
--Cursor 迴圈===================
-- Close and deallocate the cusor from memory.
close curSystem
deallocate curSystem
if(@sNameAll!='') select substring(@sNameAll,1,len(@sNameAll)-1)

最後要記得刪除最後多餘的,即可

程式如何Debug

不管什麼程式
最基本的Debug方式就是
在程式的變數前後
Print
Respose.write
這樣就可以了解執行狀況

LU水平排列

ASP Mail方式

如果你發現EMail檔案已經到Queue資料夾
就表示你Email程式的程序是沒有錯的
問題應該發生在你IIS主機的SMTP Service
解決方法如下:
方法一
你可以重新啟動你的SMTP服務,讓他重新啟動寄發程序
方法二
或者到【新增移除程序】移掉此服務後再重新增加SMTP服務安裝

另外
當然也有可能是你SMTP Service內的設定有問題
可以先設定成預設狀態
(相對安全性比較低)

還有可以使用指定主機、認證帳號、秘碼的驗證方式來寄送
也就可設定特定發送的SMTP Service主機
(為了可以集中管理並設定Mail反解的指定喔)

(A)ㄧ般寄送本機MAIL程序

<%
Set cdoMessage = Server.CreateObject("CDO.Message")
Set objBodyPart = cdoMessage.BodyPart
objBodyPart.Charset = "UTF-8"
cdoMessage.From = "寄送者@Email"
cdoMessage.To = "收件者@Email"
cdoMessage.Bcc = "密件收件者@Email"
cdoMessage.Subject ="會員Email信"
cdoMessage.htmlBody "內容"
cdoMessage.Send
Set cdoMessage = Nothing
%>


(B)寄送他台主機MAIL程序

<%
sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = Server.CreateObject("CDO.Configuration")
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="SMTPMail主機可以是IP"
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "認證帳號"
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "密碼"
cdoConfig.Fields.update
Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig
Set objBodyPart = cdoMessage.BodyPart
objBodyPart.Charset = "UTF-8"
cdoMessage.From = "寄送者@Email"
cdoMessage.To = "收件者@Email"
cdoMessage.Bcc = "密件收件者@Email"
cdoMessage.Subject ="會員Email信"
cdoMessage.htmlBody "內容"
cdoMessage.Send
Set cdoMessage = Nothing
%>

(C)ASP.NET C#語法

using System.Web.Mail;

MailMessage eMail = new MailMessage();
eMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
eMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] ="認證帳號";
eMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = "密碼" ;

eMail.From = "寄送者@Email" ;
eMail.Bcc = "密件收件者@Email";
eMail.To = "寄送者@Email" ; // Recipients
eMail.Subject ="會員Email信";
eMail.BodyFormat = MailFormat.Html;
eMail.Body ="內容";
SmtpMail.SmtpServer =="SMTPMail主機可以是IP";
SmtpMail.Send(eMail);

家長想限制小孩上網時間或限制上特定網站

有些IP分享器有簡易防火牆功能,甚至有QOS功能
價格一千以下有670,770元,可以找寬頻路由器
找有線的就好如果你家已經有無線AP的話,可以進入管理介面看看
有沒有限制網址的功能輸入你知道的網址就好啦,當然也可以看看有沒有設定上網時間功能
注意密碼不要被小孩知道^__^

說明功能如下:
l用戶可以設定特定的防火牆規則在某個特定時段啟動,這樣就可以限制網路的相應節點用戶不會去流覽某些特定的網站。

2.除了支援 Advanced NAT(Network Address Translation) 式防火牆,以及SPI(Stateful Packet Inspection 狀態分組檢查),還有資料包過濾,阻止DoS(Denial of Service拒絕服務)攻擊和記錄等功能。此外,華碩RX3041寬頻路由器的防火牆可以限制使用者對網站的流覽,先進的URL Filtering, ALG (Application Level Gateway), ACL (Access Control List) 等功能,可以指定時段並指定網站。也可以針對不同電腦用戶設置相應的上網許可權,以便對部分使用者或孩子的上網時段和流覽網站進行限制,並同時保障其他使用者的許可權。

兌幣機會依序兌換10元,5元,1元硬幣.請使用程式計算173元可兌換多少個10元,5元,1元硬幣?

錢幣iMoney不管是多少都可以自動算出來吧

<%
--先給10元5元1元幣初始數量0
i10=0
i5=0
i1=0
iMoney=173
--判斷
<%
i10=0
i5=0
i1=0
iMoney=165
If iMoney>=10 Then
i10=Int(iMoney/10)
iMoney=iMoney Mod 10
End If
If iMoney>=5 Then
i5=Int(iMoney/5)
iMoney=iMoney Mod 5
End if
i1=iMoney
--結果
response.write "10X" & i10 & ",5X" & i5 & ",1X" & i1 %>

MSSQL下指令備份還原

我想你應該是要備份還原的指令
備份指令產生Bak檔MyDB為資料庫名稱

USE master
BACKUP DATABASE [MyDB] TO DISK = N'C:\1.BAK' WITH INIT , NOUNLOAD , NAME = N'Backup備份', NOSKIP , STATS = 10, NOFORMAT


然後到另一台就可以還原
當然首先你可以建立一個新的資料庫
MyDB2為還原資料庫名稱
然後還原

restore database [MyDB2] from disk='c:\1.BAK' with recovery

更改MSSQL伺服器名稱

要去哪更改SQL Server 2000的伺服器名稱呢?
如果修改Windows的 computer name
需執行下面的script,不然排程會無法運作

--查詢主機目前名稱
select @@servername
--將'舊的主機名稱'拿掉
exec sp_dropserver '';
--將local換成'新的主機名稱'
exec sp_addserver '',local

重新啟動SQL服務(restart SQL service)

--查詢目前新的名字
select @@servername

Identity編號 重設、查詢

許多TABLE設定自動編號
但資料Insert Delete多了編號就超大的
當移值或轉移到另一台主機時
就需查詢目前識別值或者修改identity值
查詢identity值

USE MyDatabase
GO
DBCC CHECKIDENT (MyTable, NORESEED)

重設從0開始算+1 第一個數1
USE MyDatabase
GO
DBCC CHECKIDENT (MyTable, RESEED, 0)
GO

Select查詢目前Identity值
select IDENT_CURRENT('Table')

使用 Cursor

Cursor很好用但要注意LOCK問題
但如果查詢條件夠快有使用到Index就不至於有LOCK
-- Declare the cursor from AgentMember
--宣告Cursor,指定Select資料表
DECLARE curSystem CURSOR FOR
select sName from DomainTemp order by iId desc
--Open Cursor
--開啟Cursor
OPEN curSystem
--Fetch Next Cursor
--指向第一筆Cursor資料
FETCH NEXT FROM curSystem
INTO @sNameTemp
declare @iNo tinyint
set @iNo=0
--迴圈查詢所有Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
set @iNo=@iNo+1
--select @sNameTemp
--Fetch Next Cursor
--指向下一筆Cursor就像movenext
FETCH NEXT FROM curSystem
INTO @sNameTemp
END
--Cursor 迴圈===================
-- Close and deallocate the cusor from memory.
--關閉Cursor
close curSystem
--釋放Cursor記憶體
deallocate curSystem

Flash小遊戲(簡易擲茭遊戲)





Blog或網頁上顯示程式語法Code

只要下載之後做以下步驟
1.引用Js

<script src='http://XXX.XXX.XXX/js/prettify.js' type='text/javascript'></script>

2.引用css

<link href='http://XXX.XXX.XXX/css/prettify.css' rel='stylesheet' type='text/css'/>

3.設定css,在style下設定

CODE,.code {display: block; /* fixes a strange ie margin bug */font-family: Courier New;font-size: 8pt;overflow:auto;background: #f0f0f0 url(http://XXX.XXX.XXX/image/BG_CODE.gif) left top repeat-y;border: 1px solid #ccc;padding: 10px 10px 10px 21px;max-height:200px;line-height: 1em;}

4.Body onload執行prettyPrint()

<body onload='prettyPrint()'>

5.在你須需要呈現程式碼前後使用以下TAG包起來就可以

<code class="prettyprint">
程式碼
</code>

重建INDEX

根據Defragment程度重建
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/ss2kidbp.mspx
參考SQL2000 Help修改的

SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
Declare @IndexName varchar(255)

-- Decide on the maximum fragmentation to allow
SELECT @maxfrag = 30.0

-- Declare cursor
DECLARE tables CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

-- Create the table
CREATE TABLE #fraglist (
ObjectName CHAR (255),
ObjectId INT,
IndexName CHAR (255),
IndexId INT,
Lvl INT,
CountPages INT,
CountRows INT,
MinRecSize INT,
MaxRecSize INT,
AvgRecSize INT,
ForRecCount INT,
Extents INT,
ExtentSwitches INT,
AvgFreeBytes INT,
AvgPageDensity INT,
ScanDensity DECIMAL,
BestCount INT,
ActualCount INT,
LogicalFrag DECIMAL,
ExtentFrag DECIMAL)

-- Open the cursor
OPEN tables

-- Loop through all the tables in the database
FETCH NEXT
FROM tables
INTO @tablename

WHILE @@FETCH_STATUS = 0
BEGIN
-- Do the showcontig of all indexes of the table
INSERT INTO #fraglist
EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''')
WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS')
FETCH NEXT
FROM tables
INTO @tablename
END

-- Close and deallocate the cursor
CLOSE tables
DEALLOCATE tables

-- Declare cursor for list of indexes to be defragged
DECLARE indexes CURSOR FOR
SELECT ObjectName, ObjectId, IndexId, LogicalFrag,IndexName
FROM #fraglist
WHERE LogicalFrag >= @maxfrag
AND INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth') > 0

-- Open the cursor
OPEN indexes

-- loop through the indexes
FETCH NEXT
FROM indexes
INTO @tablename, @objectid, @indexid, @frag,@IndexName

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Executing DBCC INDEXDEFRAG (0, ' + RTRIM(@tablename) + ',
' + RTRIM(@indexid) + ') - fragmentation currently '
+ RTRIM(CONVERT(varchar(15),@frag)) + '%'
--SELECT @execstr = 'DBCC INDEXDEFRAG (0, ' + RTRIM(@objectid) + ',
-- ' + RTRIM(@indexid) + ')'

SELECT @execstr = 'DBCC DBREINDEX ('''+ RTRIM(@tablename)+''','''+RTRIM(@IndexName)+''', 70)'

select @execstr

select @tablename, @objectid, @indexid, @frag,@IndexName
FETCH NEXT
FROM indexes
INTO @tablename, @objectid, @indexid, @frag,@IndexName
END

-- Close and deallocate the cursor
CLOSE indexes
DEALLOCATE indexes

-- Delete the temporary table
DROP TABLE #fraglist
GO

Firefox getYear()問題

getYear();
原本於IE顯示正常的日期

到了Firefox卻顯示109
原因是Firefox以1900年開始算所以會顯示109
解決方式有兩個
1.改用getFullYear()
2.如果小於1900表示是Firfox版這時在加1900就好

var sNow=new Date()
sYear=sNow.getYear()
sYear<1900?(1900+sYear):sYear

Firefox IE8對於HTML越來越嚴苛

最近使用者有抱怨IE8
瀏覽到一個畫面時卻空白不動(IE6則正常)
Firefox也會是一樣空白畫面
經過查證
原來是Form表單內
如我寫到form.submit();
必需有個Sumbit Button才能運作

<input type='submit' value='test' style='display:none;'>

Being good.It is good Business.

昨天聽到Being good.It is good Business.
是她成功的秘訣
心有同感
還要持續堅持下去才會成功

活動

給您專屬賀卡

日期

好站

知識+名片

GH知識+

天氣

Sitetag台灣部落格列表

統計

Blog Look Score and Rank