當前位置:首頁 » 編程軟體 » 源腳本

源腳本

發布時間: 2022-08-08 08:58:14

❶ 為什麼這個shell腳本終端 return 語句是錯誤的

http://..com/question/2010919334866095868

這是一個Linux shell的問題。 就bash而言, return命令只能用在函數中,不能直接用在腳本中(不能直接用在腳本終端),當腳本用source a1.sh(或者 . a1.sh)執行時,可以用在腳本中。( return: can only`return' from a function or sourced script)

下面的內容,摘自<<實用Linux Shell編程>>,剛剛上市的書,寫得不錯,各賣書網有賣,建議買一本。供參考:

內置命令return用於從函數中返回, ..., return命令在函數中不是必須的,函數被調用時,函數內的命令執行完成後自然會返回到調用它的地方(一般是返回到主程序)。如果某函數中有return命令,執行到return時就返回。如果return在函數中不是最後一條命令,那麼return後面的其他命令不再執行。
......

注意return命令不能直接用在腳本的主程序里,請看下面的例子:
$ cat fun_return_2.sh
#!/bin/bash
echo "return_2_1"
return
echo "return_2_2"

如果直接運行腳本,會遇到錯誤提示:
$ ./fun_return_2.sh
return_2_1
./fun_return_2.sh: line 3: return: can only`return' from a function or sourced script
return_2_2

用source命令或者點命令來運行該腳本,就沒問題:
$ source fun_return_2.sh
return_2_1

先執行腳本fun_return_2.sh的第一條echo命令,顯示return_2_1,然後執行return,腳本結束,第二條echo命令不被執行。

❷ 如何直接在編輯框解析簡單的delphi源碼腳本

uses
Math;
procere TForm1.Button1Click(Sender: TObject);
var
lst:TStrings;
begin
lst:=TStringList.Create;
try
lst.Text:=StringReplace(StringReplace(memo1.Text, ':', '', [rfReplaceAll]), ';', '', [rfReplaceAll]);
memo2.Text:=IntToStr((Max(StrToInt(lst.Values['A']), StrToInt(lst.Values['B']))+StrToInt(lst.Values['C'])));
finally
lst.free;
end;
end;

❸ 製作好的源碼腳本怎樣從電腦安裝到手機按鍵精靈上

你電腦端要是用的是按鍵精靈安卓版本可以把腳本同步到帳號上 再手機端登錄帳號同步回來

❹ 如何捕獲和分析 javaScript Error

捕獲異常的方式
我們自己寫的 throw new Error() 想要捕獲當然可以捕獲,因為我們很清楚 throw 寫在哪裡了。但是調用瀏覽器 API 時發生的異常就不一定那麼容易捕獲了,有些 API 在標准里就寫著會拋出異常,有些 API 只有個別瀏覽器因為實現差異或者有缺陷而拋出異常。對於前者我們還能通過 try-catch 捕獲,對於後者我們必須監聽全局的異常然後捕獲。

try-catch

如果有些瀏覽器 API 是已知會拋出異常的,那我們就需要把調用放到 try-catch 裡面,避免因為出錯而導致整個程序進入非法狀態。例如說 window.localStorage 就是這樣的一個 API,在寫入數據超過容量限制後就會拋出異常,在 Safari 的隱私瀏覽模式下也會如此。

try {
localStorage.setItem('date', Date.now());
} catch (error) {
reportError(error);
}
另一個常見的 try-catch 適用場景是回調。因為回調函數的代碼是我們不可控的,代碼質量如何,會不會調用其它會拋出異常的 API,我們一概不知道。為了不要因為回調出錯而導致調用回調後的其它代碼無法執行,所以把調用回到放到 try-catch 裡面是必須的。

listeners.forEach(function(listener) {
try {
listener();
} catch (error) {
reportError(error);
}
});
window.onerror

對於 try-catch 覆蓋不到的地方,如果出現異常就只能通過 window.onerror 來捕獲了。

window.onerror =
function(errorMessage, scriptURI, lineNumber) {
reportError({
message: errorMessage,
script: scriptURI,
line: lineNumber
});
}
注意不要耍小聰明使用 window.addEventListener 或 window.attachEvent 的形式去監聽 window.onerror。很多瀏覽器只實現了 window.onerror,或者是只有 window.onerror 的實現是標準的。考慮到標准草案定義的也是 window.onerror,我們使用 window.onerror 就好了。

屬性丟失
假設我們有一個 reportError 函數用來收集捕獲到的異常,然後批量發送到伺服器端存儲以便查詢分析,那麼我們會想要收集哪些信息呢?比較有用的信息包括:錯誤類型(name)、錯誤消息(message)、腳本文件地址(script)、行號(line)、列號(column)、堆棧跟蹤(stack)。如果一個異常是通過 try-catch 捕獲到的,這些信息都在 Error 對象上(主流瀏覽器都支持),所以 reportError 也能收集到這些信息。但如果是通過 window.onerror 捕獲到的,我們都知道這個事件函數只有 3 個參數,所以這 3 個參數以外的信息就丟失了。

序列化消息

如果 Error 對象是我們自己創建的話,那麼 error.message 就是由我們控制的。基本上我們把什麼放進 error.message 裡面,window.onerror 的第一個參數(message)就會是什麼。(瀏覽器其實會略作修改,例如加上 'Uncaught Error: ' 前綴。)因此我們可以把我們關注的屬性序列化(例如 JSON.Stringify)後存放到 error.message 裡面,然後在 window.onerror 讀取出來反序列化就可以了。當然,這僅限於我們自己創建的 Error 對象。

第五個參數

瀏覽器廠商也知道大家在使用 window.onerror 時受到的限制,所以開始往 window.onerror 上面添加新的參數。考慮到只有行號沒有列號好像不是很對稱的樣子,IE 首先把列號加上了,放在第四個參數。然而大家更關心的是能否拿到完整的堆棧,於是 Firefox 說不如把堆棧放在第五個參數吧。但 Chrome 說那還不如把整個 Error 對象放在第五個參數,大家想讀取什麼屬性都可以了,包括自定義屬性。結果由於 Chrome 動作比較快,在 Chrome 30 實現了新的 window.onerror 簽名,導致標准草案也就跟著這樣寫了。

window.onerror = function(
errorMessage,
scriptURI,
lineNumber,
columnNumber,
error
) {
if (error) {
reportError(error);
} else {
reportError({
message: errorMessage,
script: scriptURI,
line: lineNumber,
column: columnNumber
});
}
}
屬性正規化
我們之前討論到的 Error 對象屬性,其名稱都是基於 Chrome 命名方式的,然而不同瀏覽器對 Error 對象屬性的命名方式各不相同,例如腳本文件地址在 Chrome 叫做 script 但在 Firefox 叫做 filename。因此,我們還需要一個專門的函數來對 Error 對象進行正規化處理,也就是把不同的屬性名稱都映射到統一的屬性名稱上。具體做法可以參考這篇文章。盡管瀏覽器實現會更新,但人手維護一份這樣的映射表並不會太難。

類似的是堆棧跟蹤(stack)的格式。這個屬性以純文本的形式保存一份異常在發生時的堆棧信息,由於各個瀏覽器使用的文本格式不一樣,所以也需要人手維護一份正則表達,用於從純文本中提取每一幀的函數名(identifier)、文件(script)、行號(line)和列號(column)。

安全限制
如果你也遇到過消息為 'Script error.' 的錯誤,你會明白我在說什麼的,這其實是瀏覽器針對不同源(origin)腳本文件的限制。這個安全限制的理由是這樣的:假設一家網銀在用戶登錄後返回的 HTML 跟匿名用戶看到的 HTML 不一樣,一個第三方網站就能把這家網銀的 URI 放到 script.src 屬性裡面。HTML 當然不可能被當做 JS 解析啦,所以瀏覽器會拋出異常,而這個第三方網站就能通過解析異常的位置來判斷用戶是否有登錄。為此瀏覽器對於不同源腳本文件拋出的異常一律進行過濾,過濾得只剩下 'Script error.' 這樣一條不變的消息,其它屬性統統消失。

對於有一定規模的網站來說,腳本文件放在 CDN 上,不同源是很正常的。現在就算是自己做個小網站,常見框架如 jQuery 和 Backbone 都能直接引用公共 CDN 上的版本,加速用戶下載。所以這個安全限制確實造成了一些麻煩,導致我們從 Chrome 和 Firefox 收集到的異常信息都是無用的 'Script error.'。

CORS

想要繞過這個限制,只要保證腳本文件和頁面本身同源即可。但把腳本文件放在不經 CDN 加速的伺服器上,豈不降低用戶下載速度?一個解決方案是,腳本文件繼續放在 CDN 上,利用 XMLHttpRequest 通過 CORS 把內容下載回來,再創建 <script> 標簽注入到頁面當中。在頁面當中內嵌的代碼當然是同源的啦。

這說起來很簡單,但實現起來卻有很多細節問題。用一個簡單的例子來說:

<script src="http://cdn.com/step1.js"></script>
<script>
(function step2() {})();
</script>
<script src="http://cdn.com/step3.js"></script>
我們都知道這個 step1、step2、step3 如果存在依賴關系的話,則必須嚴格按照這個順序執行,否則就可能出錯。瀏覽器可以並行請求 step1 和 step3 的文件,但在執行時順序是保證的。如果我們自己通過 XMLHttpRequest 獲取 step1 和 step3 的文件內容,我們就需要自行保證其順序正確性。此外不要忘記了 step2,在 step1 以非阻塞形式下載的時候 step2 就可以被執行了,所以我們還必須人為干預 step2 讓它等待 step1 完成後再執行。

如果我們已經有一整套工具來生成網站上不同頁面的 <script> 標簽的話,我們就需要調整一下這套工具讓它對 <script> 標簽做出改動:

<script>
scheleRemoteScript('http://cdn.com/step1.js');
</script>
<script>
scheleInlineScript(function code() {
(function step2() {})();
});
</script>
<script>
scheleRemoteScript('http://cdn.com/step3.js');
</script>
我們需要實現 scheleRemoteScript 和 scheleInlineScript 這兩個函數,並且保證它們在第一個引用外部腳本文件的 <script> 標簽之前就被定義好,然後餘下的 <script> 標簽都會被改寫成上面這種形式。注意原本立即執行的 step2 函數被放到了一個更大的 code 函數裡面了。code 函數並不會被執行,它只是一個容器而已,這樣使得原本 step2 的代碼不需要轉義就能保留下來,但又不會被立即執行。

接下來我們還需要實現一套完整的機制,保證這些由 scheleRemoteScript 根據地址下載回來的文件內容和由 scheleInlineScript 直接獲取到的代碼能夠按照正確的順序一個接一個地執行。詳細的代碼我就不在這里給出了,大家有興趣可以自己去實現。

行號反查

通過 CORS 獲取內容再把代碼注入頁面能夠突破安全限制,但會引入一個新的問題,那就是行號沖突。原本通過 error.script 可以定位到唯一的腳本文件,再通過 error.line 可以定位到唯一的行號。現在由於都是頁面內嵌的代碼,多個 <script> 標簽並不能通過 error.script 來區分,然而每一個 <script> 標簽內部的行號都是從 1 算起的,結果就導致我們無法利用異常信息定位錯誤所在的源代碼位置。

為了避免行號沖突,我們可以浪費一些行號,使得每一個 <script> 標簽中有實際代碼所使用的行號區間互相不重疊。舉個例子來說,假設每個 <script> 標簽中的實際代碼都不超過 1000 行,那麼我可以讓第一個 <script> 標簽中的代碼佔用第 1–1000 行,讓第二個 <script> 標簽中的代碼佔用第 1001–2000 行(前面插入 1000 行空行),第三個 <script> 標簽種的代碼佔用第 2001–3000 行(前面插入 2000 行空行),以此類推。然後我們使用 data-* 屬性記錄這些信息,便於反查。

<script
data-src="http://cdn.com/step1.js"
data-line-start="1"
>
// code for step 1
</script>
<script data-line-start="1001">
// '\n' * 1000
// code for step 2
</script>
<script
data-src="http://cdn.com/step3.js"
data-line-start="2001"
>
// '\n' * 2000
// code for step 3
</script>
經過這樣處理後,如果一個錯誤的 error.line 是 3005 的話,那意味著實際的 error.script 應該是 'http://cdn.com/step3.js',而實際的 error.line 則應該是 5。我們可以在之前提到的 reportError 函數裡面完成這項行號反查工作。

當然,由於我們沒辦法保證每一個腳本文件只有 1000 行,也有可能有些腳本文件明顯小於 1000 行,所以其實不需要固定分配 1000 行的區間給每一個 <script> 標簽。我們可以根據實際腳本行數來分配區間,只要保證每一個 <script> 標簽所使用的區間互不重疊就可以了。

crossorigin 屬性

瀏覽器對於不同源的內容進行的安全限制當然不僅限於 <script> 標簽。既然 XMLHttpRequest 可以通過 CORS 來突破這個限制,為什麼直接通過標簽引用的資源就不可以呢?這當然是可以的。

針對 <script> 標簽引用不同源腳本文件的限制同樣作用於 <img> 標簽引用不同源圖片文件。如果一個 <img> 標簽是不同源的話,一旦在 <canvas> 繪圖時用到了,該 <canvas> 將變為只寫狀態,保證網站不能通過 JavaScript 竊取未授權的不同源圖片數據。後來 <img> 標簽通過引入 crossorigin 屬性解決了這個問題。如果使用 crossorigin="anonymous",則相當於匿名 CORS;如果使用 `crossorigin=「use-credentials」,則相當於帶認證的 CORS。

既然 <img> 標簽能這樣做,為什麼 <script> 標簽就不能這樣做?於是瀏覽器廠商就為 <script> 標簽加入了同樣的 crossorigin 屬性用於解決上述安全限制問題。現在 Chrome 和 Firefox 對這個屬性的支持是完全沒有問題的。Safari 則會把 crossorigin="anonymous" 當做 crossorigin="use-credentials" 處理,結果是如果伺服器只支持匿名 CORS 則 Safari 會當做認證失敗。由於 CDN 伺服器出於性能的考慮被設計為只能返回靜態內容,不可能動態的根據請求返回認證 CORS 所需的 HTTP Header,Safari 相當於不能利用此特性來解決上述問題。

總結
JavaScript 異常處理看起來很簡單,跟其它語言沒什麼區別,但真的要把異常都捕獲瞭然後對屬性做分析,其實還不是那麼容易的事情。現在盡管有一些第三方服務提供捕獲 JavaScript 異常的類 Google Analytics 服務,但如果要弄明白其中的細節和原理還是必須自己親手做一次。這些東西記得遠標java都講的,希望對你有所幫助!

❺ 求QQ飛車按鍵精靈刷末日或者休閑區打架源碼腳本

這個沒有的

❻ 怎麼把DB3(或者MYsql資料庫轉化sql資料庫

mysql資料庫轉換成.sql文件步驟如下:
1. 導出SQL腳本
在原資料庫伺服器上,可以用phpMyAdmin工具,或者mysqlmp(mysqlmp命令位於mysql/bin/目錄中)命令行,導出SQL腳本。
2. 用phpMyAdmin工具
導出選項中,選擇導出「結構」和「數據」,不要添加「DROP DATABASE」和「DROP TABLE」選項。
選中「另存為文件」選項,如果數據比較多,可以選中「gzipped」選項。
將導出的SQL文件保存下來。
3.用mysqlmp命令行
命令格式
mysqlmp -u用戶名 -p 資料庫名 > 資料庫名.sql
範例:
mysqlmp -uroot -p abc > abc.sql
(導出資料庫abc到abc.sql文件)
提示輸入密碼時,輸入該資料庫用戶名的密碼。

❼ 我用 腳本精靈 錄制了一個腳本,然後用腳本精靈開發工具編譯成 二進制腳本。 我一共按了16次,但是

你這個腳本應該不是錄制的源腳本,你刪掉了很多語句,不過就算你不刪除,腳本也是不能完全按照你的操作,按鍵精靈錄制,某些功能還是錄制不了的,例如「滑鼠按住」,「滑鼠拖動」,這些操作是錄制不了的,所以,如果真要用按鍵精靈,一般要自己寫代碼。

❽ 「俗稱」的3D動畫和CG動畫有何區別

LZ,如果你提到說3D動畫的話,從這個角度劃分幾乎沒有CG動畫這個詞,因為CG是computer graphic的縮寫,也就是電腦圖片,電腦圖是包括3D和普通的電腦繪畫的,CG動畫就是指完全使用電腦技術做出來的繪畫,相對於傳統動畫而言的。傳統動畫的例子有很多,中國早年的黑貓警長、牧笛、小蝌蚪找媽媽等等都是,而現在中國的傳統動畫幾乎消身匿跡,大約只能在個人創作中看到,而國外依然還有一部分是傳統動漫,最強大有力的例子就是「吉卜力工作室」,宮崎駿名下的所有動畫主要依靠傳統繪畫,除了部分鏡頭使用CG手段。而你在問題中提到的所有動畫,我可以很負責任的告訴你他們全部都是CG動畫。還有一個問題,我覺得你在動畫的技術方面貌似有很多專業知識了,摳的太細,這個很好,你會是一個好的動畫師,但是這樣做不出好動畫的,好的動畫導演,要把這部分看的淡一些。

❾ ES歌詞怎麼做MINIlyrics的歌詞來源腳本

itunes中就可以直接復制添加

熱點內容
怎麼用紙做豌豆解壓玩具 發布:2022-09-29 04:39:17 瀏覽:729
雲存儲播放時間表 發布:2022-09-29 03:58:31 瀏覽:598
新英朗4缸買哪個配置劃算 發布:2022-09-29 03:51:54 瀏覽:121
紅旗5配置怎麼選 發布:2022-09-29 03:44:21 瀏覽:886
linux安裝maven 發布:2022-09-29 03:29:18 瀏覽:595
吉利星瑞豪華天窗版有什麼功能配置 發布:2022-09-29 03:20:28 瀏覽:816
伺服器固定ip和彈性ip一起用 發布:2022-09-29 02:40:49 瀏覽:507
gpioc語言 發布:2022-09-29 02:34:40 瀏覽:951
h乚c語言 發布:2022-09-29 02:34:39 瀏覽:410
迷你世界體驗服正式服密碼是多少 發布:2022-09-29 02:21:19 瀏覽:419