Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


7 questions online user: 37

0
votes
answers
7 views
+10

如何在Alpine linux上添加用於nginx的Lua模塊?

0

我想在啓用Lua模塊的情況下爲nginx提供精簡的Docker鏡像。我如何基於Alpine linux創建這個?如何在Alpine linux上添加用於nginx的Lua模塊?

沙发
0
-1

你看看在泊塢樞紐

https://hub.docker.com/

,你會發現Nginx上圖像的基礎上,高山Linux的,和Lua支持

一些例子

https://hub.docker.com/r/ilagnev/alpine-nginx-lua/

https://hub.docker.com/r/firesh/nginx-lua/

看一看的Dockerfile更多細節

+0

我發現這兩個,但發現沒有兩個是最新(最後推一年前)。另外,他們缺乏關於如何啓用模塊的信息。 – Marian

+0

這個文檔是否正確? https://github.com/openresty/lua-nginx-module#installation – user2915097

板凳
0
1

這裏是一個Dockerfile

FROM alpine:3.6 

RUN apk add --no-cache nginx-mod-http-lua 

# Delete default config 
RUN rm -r /etc/nginx/conf.d && rm /etc/nginx/nginx.conf 

# Create folder for PID file 
RUN mkdir -p /run/nginx 

# Add our nginx conf 
COPY ./nginx.conf /etc/nginx/nginx.conf 

CMD ["nginx"] 

安裝nginx-mod-http-lua包也將安裝nginxluajit,等等。

nginx.conf至少應包含這樣的:

load_module /usr/lib/nginx/modules/ndk_http_module.so; 
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so; 

pcre_jit on; 

events { 
    worker_connections 1024; 
} 

daemon off; 
+0

如果你沒有從默認的[nginx中刪除include/etc/nginx/modules/*。conf;'這些'load_module'的.conf](https://github.com/alpinelinux/aports/blob/954391ce7493439d12180d5c5118dee26f8ac587/main/nginx/nginx.conf#L15)。 –

+0

@Marian:我們如何在這種情況下安裝luarocks?我確實找到了luajit的包含路徑。 – Raeesaa

0
votes
answers
6 views
+10

在Windows中使用lua os.execute啓動一個沒有CMD閃存的程序

8

我很高興在Lua的windows系統中使用xzxx 在Windows中使用lua os.execute啓動一個沒有CMD閃存的程序

strProgram = '"C:\Program Files\Ps Pad\PSPad.exe"' 
strCmd = 'start "" '..strProgram 
os.execute(strCmd) 

啓動程序。這樣可以正常工作,啓動程序和腳本完成。 它如何在命令窗口閃爍幾分之一秒,是否有人從Lua啓動程序。

+0

如果你只是用'strProgram'代替strCmd'的'會發生什麼?換句話說,你真的需要'開始'嗎? – BMitch 2011-06-15 19:04:36

+0

啓動的程序一直運行並且Lua腳本一直掛起直到程序關閉,命令窗口保持打開狀態。 – 2011-06-15 19:52:08

+1

從文檔看,它們看起來像是通過OS shell運行它(對不起,我在Linux上,所以我無法自己測試)。除非有人知道Lua技巧,否則您可能需要使用執行'fork/exec'而不是'system'調用的主機語言(例如C)編寫自己的函數,並將該API導出到Lua。 – BMitch 2011-06-15 20:54:10

沙发
0
7

Lua的os.execute命令是基於C標準庫的「shell」函數。在Windows中,此函數將始終創建一個命令窗口,並且它將始終停止當前進程直到窗口結束。後者也發生在Linux中。

最終沒有辦法解決這個問題。不通過Lua標準API。由於Lua需要輕量級且獨立於平臺,因此不允許使用API??來使用與操作系統相關的本機API。

最好的辦法是使用Lua Ex-Api模塊。這實際上是放棄了,你可能需要修補一些編譯器問題(我猜Windows端口不是他們的首要任務)。但是這是產生進程的合理好方法。您可以選擇等到自己完成,或讓它們平行運行。它不會拋出一個命令提示符窗口,除非應用程序本身使用它。

+0

謝謝你,我恐怕看起來有點超出我的技能範圍,我會將它傳遞給軟件擁有Lua的人,看看他是否可以爲我添加一個函數,如果他將代碼指向他需要它。 – 2011-06-16 16:45:34

+0

我相信至少有一種方法可以在不使用控制檯的情況下使用io.popen在沒有額外庫的情況下彈出窗口來執行命令。請看我的答案。 – 2015-04-15 12:58:31

板凳
0
0

這是一種在沒有控制檯窗口的情況下僅使用Lua標準API(即沒有額外的庫)來運行命令的方式。在Win7 x64上測試。

function exec_silent(command) 
    local p = assert(io.popen(command)) 
    local result = p:read("*all") 
    p:close() 
    return result 
end 

編輯:請參閱下面的評論,它可能不適用於所有人。我不知道爲什麼。

+0

Negative,Win7 64位,它的行爲與只是popen或執行相同(Lua 5.2.3,鏈接) – handle 2015-08-07 15:17:15

+0

@handle然後,我們的設置顯然有些不同。我幾乎每天都在構建系統中使用這些代碼,並且根本沒有命令窗口彈出。 – 2015-08-08 09:31:31

+0

不要懷疑你,只是準備其他人,儘管你的成功,這可能無法正常工作。 – handle 2015-08-10 07:53:25

地板
0
1

這是我用來從Lua調用批處理的一段代碼,可能有幫助。 在贏控制檯(命令提示符)打開並執行,同時在UNIX(MAC |尼克斯)

-- sBatchFile = .bat for windows, .sh for x 
function vfFork2(sBatchFile) 
    local b = package.cpath:match("%p[\|/]?%p(%a+)") 
    if b == "dll" then 
     -- windows 
     os.execute('start cmd /k call "'..sBatchFile..'"') 
    elseif b == "dylib" then 
     -- macos 
     os.execute('chmod +x "'..sBatchFile..'"') 
     os.execute('open -a Terminal.app "'..sBatchFile..'"') 
    elseif b == "so" then 
     -- Linux 
     os.execute('chmod +x "'..sBatchFile..'"') 
     os.execute('xterm -hold -e "'..sBatchFile..'" & ') 
    end 
end 
0
votes
answers
6 views
+10

測試如果一個變量有數字或字母或兩者/無LUA

-2

進出口試圖找出如何在Lua檢查一個字符串變量中有任何字母或數字,像這樣:測試如果一個變量有數字或字母或兩者/無LUA

myAwesomeVar = "hi there crazicrafter1" 

if myAwesomeVar(has letters and numbers) then 
    print("It has letters and numbers!") 
elseif myAwesomeVar(has letters and not numbers) then 
    print("It has letters!, but no numbers...") 
elseif myAwesomeVar(has not letters and not numbers) then 
    print("It doesnt have letters or numbers...") 
elseif myAwesomeVar(has not letters and numbers) then 
    print("It doesnt have letters, but it has numbers!") 
end 

我知道這是不正確的一些論點,但這是我的目標是我的代碼輸出:

它有字母和數字!

+1

通常的方法是寫兩個函數'函數has_letters(STR)'和'功能has_numbers(STR)'每個返回布爾 –

沙发
0
0

正如葉戈爾認爲你會寫檢查,如果字符串包含任何數字或字母的任何一個功能...

的Lua提供了方便的字符串分析字符串模式。

function containsDigit(str) 

    return string.find(str, "%d") and true or false 

end 

我敢打賭,你可以對信件做同樣的事情。請參閱Lua 5.3 Reference Manual 6.4.1: String patterns

的,你可以這樣做

local myString = "hello123" 
if containsDigit(myString) and containsDigit(myString) then 
    print("contains both") 
end 
0
votes
answers
6 views
+10

我怎樣才能解析csv數據從一個字符串的JavaScript數組中使用d3圖

0

我想使用字符串的JavaScript數組中的數據產生一個D3圖形,顯示時間戳記的時間序列(t),接收( rx)和發送(tx)計數器。數組中的每個成員都是一個對應於一行時間的字符串,rx,tx(是的,帶有逗號分隔符)。我不想使用基於d3.request的方法。我已經使用服務器端lua代碼從服務器讀取文件,並使用jslines.push(字符串)將數據放入頁面。我怎樣才能解析csv數據從一個字符串的JavaScript數組中使用d3圖

109 // Show results so far 
110 for (i=0; i < jslines.length; i++) { 
111  console.log(i + ": " + jslines[i]); 
112 } 

上面的部分給我的信心數據是我所描述的。現在我只是試圖從「行」中取出3個數據值中的每一個,然後重複。我不在乎他們在這一點上仍然是字符串。數字後面。

我的參考資料是:https://github.com/d3/d3-dsv/blob/master/README.md#csvParseRows但我明顯誤解了所需的工作。

114 var dataArray = d3.csvParseRows(jslines, function(d, i) { 
115 return { 
116  time: d[0], 
117  rx: d[1], 
118  tx: d[2] 
119 }; 
120 }); 

將感謝(種類)的建議和/或使用D3解析的工作示例和d3被本身不是從遠程(或本地)文件中提取準備數據。我能找到的大多數例子都是要求d3將文件內容傳輸到客戶端,我相信。

謝謝...艾倫

+1

請分享'jslines'數組(不是全部,只是一些元素就夠了)。請記住,'d3.csvParseRows'將解析一個字符串,而不是一個數組。另外,請詳細解釋*什麼*在代碼中不起作用......你是否按照你想要的方式獲得了'dataArray'?或者這裏的問題是如何使用'dataArray'? –

+0

jslines數組的每個成員都包含一個字符串,其內容如下:「1234567,100,110」,已經用空格修飾,值之間用單個逗號。所有的值都應該是非負的。用我最初粘貼的代碼,dataArray出來nil。 –

+0

那麼,沒有換行符?你不能在'd3.csvParseRows'中使用它:函數怎麼知道它正在處理哪一行? –

沙发
0
1

如果你已經有了字符串,你可以把它分解如下:

var a = "1,2,3" 
var b = a.split(",") 
console.log(b[1]) 

具體而言,你的榜樣,您可以提取數據是這樣的:

var data = jslines.map(function(l) { 
    data = l.split(","); 
    return({time: data[0], rx: data[1], tx: data[2]}); 
}) 

然後根據得到的對象數組構造你的d3圖。

+0

謝謝埃裏克。我遵循你的例子,除了我把函數內的變量「data」改爲「tempdata」(在兩個縮進行上),以保證函數內的數據(現在是tempdata)與外部數據不同。沒有必要,但有助於我的理解。謝謝! –

0
votes
answers
6 views
+10

Lua訪問2D數組內的值

1

看起來這應該是一件簡單的事情。我已將下面的json結構轉換爲lua表,但我無法訪問數組內的值。我一直在瀏覽很多問題和互聯網,而且我沒有嘗試過的例子。Lua訪問2D數組內的值

下面是使用cjson.decode

[{ 
    "user": "user_1", 
    "password": "something", 
    "id": "35", 
    "message": "message 1" 
}, 
{ 
    "user": "user_2", 
    "password": "something", 
    "id": "5c", 
    "message": "message 2" 
}, 
{ 
    "user": "user_3", 
    "password": "something", 
    "id": "7e", 
    "message": "message 3" 
}, 
{ 
    "user": "user_3", 
    "password": "something", 
    "id": "6f", 
    "message": "message 4" 
}] 

然後我嘗試訪問變量這樣轉換爲LUA表的JSON:

ngx.say(users[0]["user"]); 

但是不起作用。我想迭代數組並獲取數組中每個索引處的用戶,密碼,id和消息,但首先我想看看如何訪問index 0處的用戶值,該值應該是user_1。我知道這是一個n00b問題,但任何幫助將不勝感激。

沙发
0
2

默認情況下,Lua表從索引1開始。

+0

是啊,想到這一點,並嘗試ngx.say(用戶[1] [「用戶」]);但仍然沒有快樂 –

+0

@JoelParker它會幫助,如果你會提供一個錯誤消息,而不是僅僅說它不工作;) – Piglet

+0

這是爲lua模塊在nginx,它只是崩潰,沒有錯誤給出 –

0
votes
answers
5 views
+10

從另一個線程(lua)產生線程

0

我想爲Lua創建一個睡眠函數,因爲我的Lua腳本全部運行在不同的線程/環境中,所以我想讓它們的線程產生並從主線程重新啓動,給定的時間已過去,主線程在Java中,並且時間流逝通過循環完成。從另一個線程(lua)產生線程

現在這不是很難或什麼,但我想使用Lua自己的協程/線程,所以我不必創建自己的線程結構,但(我的Lua知識不是頂尖的)我不喜歡我不知道如何從線外產生線。

是否有可能從主線程產生線程?

編輯沒關係,我只是想通了。我做了一個getfenv,並使用它自己的環境腳本的coroutine.yield。

+0

如果你找到答案,也許你可以回答自己的問題,幫助將來會提出同樣問題的用戶。 – jpjacobs

+0

我解釋了我在編輯中做了什麼。 – Tim

+0

最好真的回答它(即使你只是複製粘貼也沒關係)。否則你的問題一直沒有答案。另見[這裏](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) – jpjacobs

沙发
0
1

我用它的coroutine.yield函數的腳本。很容易回頭看看它

0
votes
answers
4 views
+10

Lua代碼解釋(與RNN相關)

-1

我想了解JcJohnson/Karpathy的代碼用於在Lua和Torch中編寫的RNN的一部分。如果你好奇,你可以在github上找到完整的項目。Lua代碼解釋(與RNN相關)

https://github.com/jcjohnson/torch-rnn

我需要幫助的部分低於其從LanguageModel.lua文件:

if #start_text > 0 then 
    if verbose > 0 then 
     print('Seeding with: "' .. start_text .. '"') 
    end 
    local x = self:encode_string(start_text):view(1, -1) 
    local T0 = x:size(2) 
    sampled[{{}, {1, T0}}]:copy(x) 
    scores = self:forward(x)[{{}, {T0, T0}}] 
    first_t = T0 + 1 
else 

例如,我不知道這些意味着什麼。

:view((1, -1) 
:size(2) 
:copy(x) 
sampled[] 

您知道這些是什麼或表示我能找到他們的參考?

謝謝

+0

閱讀盧阿本身第一語言規範? – hjpotter92

沙发
0
0

你可能需要一些火炬教程here或檢查火炬的文檔在github repo

+0

嗨陳,這些幫助很大,謝謝。只有一行我現在無法弄清楚這一點:scores = self:forward(x)[{{},{T0,T0}}],任何想法[]括號包含什麼?我瞭解自我:向前(x),但爲什麼之後的額外項目,他們是什麼意思? – Brajesh

+0

'self:forward(x)'返回一個新的張量,括號[]是索引操作符以選擇新張量中的元素。你可以看到更多的索引操作符[這裏](https://github.com/torch/torch7/blob/master/doc/tensor.md#tensor--dim1dim2--或--dim1sdim1e-dim2sdim2e-)。 – Chen

+0

謝謝陳! – Brajesh