當前位置:首頁 » 網頁前端 » luaweb開發
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

luaweb開發

發布時間: 2022-04-23 18:08:30

A. Web後台語言的選擇

‍‍

php不適合,推薦lua,用openresty,雖然都是高級語言,但lua可以跟nginx無縫結合,lua是跑在nginx進程中的,這樣就很有意思了。我寫了一個簡單的hello world,用ngx_lua跟php_fpm測試,lua每秒1萬次,php每秒55次。為什麼會如此懸殊?php通過php-fpm跟nginx實現業務功能,之間要通過網路;而lua是內嵌的,嵌入nginx內部,實現業務功能跟c語言掉個函數差不多。php每次執行都要編譯。lua只編譯一次,就駐內存中了。這個不僅僅是編譯的開銷,腳本文件本身從硬碟讀取就是耗時的操作。當然php有一些優化手段,但無論怎麼優化,都沒有隻載入一次速度快。php每次執行都是這個速度,而lua第一次執行稍慢,以後就快了。php是同步的,長時間的操作很容易耗盡連接數。lua是非同步的。php調用mysql,文件讀取等,用api調用,這個是同步操作。而lua是通過nginx的子請求實現的,而nginx本身是非同步的。不僅僅是mysql這些,業務本身的一些操作也可以分為幾個子請求完成。而nginx的子請求非常快,損耗忽略不計,業務代碼可以通過劃分子請求來實現業務耦合,降低耦合度有很多的幫助,每個子系統也相對簡單很多。php,東西多的話,尤其mvc需要有一種熟練的框架,CodeIgniter, Yii, Zend 等等。上手簡單,可以直接在頁面中通過echo之類的函數載入動態值,做個mvp之類的東西出活快社區強大,各種問題都有現成的解。node比較火,非同步很強大,語法和js一樣,但個人感覺其實易用性易讀性程度不如php。

‍‍

B. 本人大專學歷,去年,曾接受過半年的java web開發培訓,對java web系列有系統的認識;

linux下的編程要比java web編程好,java web編程就業壓力太大,競爭太激烈了。
畢業後,首先考慮要從事哪方面的工作,然後找到和該工作相關的崗位,不要管工資和待遇。現階段的主要工作是積累經驗。
工作滿一年後,如果工作不滿意,就可以換了,這時找工作就要考慮待遇,發展前途等相關內容。
請不要頻繁跳槽,否則最後除了簡歷上那一大串的公司名稱外將什麼都得不到。

C. 如何配置lua的WEB運行環境

有兩種方式,一種是apache2.3以上會內置的lua mole,大家可以下載apache httpd 2.3.8的代碼,在moles目錄下有lua這個目錄。
另外一種是今天要介紹的,使用wsapi方式。
我們使用ubuntu伺服器,先確保lua5.14以及apache2都安裝成功。
然後
sudo apt-get install apache2-mpm-worker liblua5.1-0-dev luarocks
sudo apt-get install libfcgi-dev libapache2-mod-fcgid
sudo luarocks install wsapi-fcgi
然後修改.htaccess或者httpd.conf或者你的vhost配置,添加下面部分。
Options ExecCGI
AddHandler fcgid-script .lua
FCGIWrapper /usr/local/lib/luarocks/bin/wsapi.fcgi .lua
要注意的是wsapi.fcgi也許是在不同目錄下,用find自己找吧。
在var/www下你的站點中新建一個luacgi目錄,然後建立兩個文件。
launcher.fcgi:
#!/usr/bin/env lua
require "wsapi.fastcgi"
require "hello"
wsapi.fastcgi.run(hello.run)
index.lua:
mole(…, package.seeall)
function run(wsapi_env)
local headers = { ["Content-type"] = "text/html" }
local function hello_text()
coroutine.yield("<html><body>")
coroutine.yield("<p>Hello Wsapi!</p>")
coroutine.yield("<p>PATH_INFO: " .. wsapi_env.PATH_INFO .. "</p>")
coroutine.yield("<p>SCRIPT_NAME: " .. wsapi_env.SCRIPT_NAME .. "</p>")
coroutine.yield("</body></html>")
end
return 200, headers, coroutine.wrap(hello_text)
end
然後用chown –R www-data:www-data luacgi修改目錄owner。
這時候應該就能用xxx.com/luacgi/index.lua訪問了。
如果你用nginx,也有現成的lua mod可以使用(作者是淘寶的程序員),這里就不多說了。

D. lua腳本獲取web文本框的值,並寫入到文件中去

Lua 的語法比較簡單,學習起來也比較省力,但功能卻並不弱。
所以,我只簡單的歸納一下Lua的一些語法規則,使用起來方便好查就可以了。
估計看完了,就懂得怎麼寫Lua程序了。
在Lua中,一切都是變數,除了關鍵字。

E. 想做副業,學編程,學哪種語言比較好(零基礎)

最近有很多同學問我,我是一個零基礎的小白,到底學習哪一種語言比較好?作為一個寫了十年代碼程序員,用過七種語言的我來說,必須要強調一下,語言只是一種工具,當你真正理解了要做的事,選一個順手的就行。跟工具一樣,哪天有新的好用的語言出來,把舊的扔掉就好。

我今天寫這篇文章的目的是想給大家一個參考。

決定用什麼語言的因素有有很多,比如性能,內存佔用,開發難度,運維難度,目標平台,可執行文件大小,代碼可維護性,項目周期,項目規模,招聘難度,團隊構成,歷史遺留問題,甚至派系斗爭等。

比如騰訊就有大量歷史遺留的C和C++的伺服器代碼,畢竟20年前沒得選。又比如空降技術負責人可能會為了讓自己人上位,讓自己團隊出成績,選擇用其他語言或者框架對本來工作良好的系統進行重構。

下面開始聊語言

Python

先說python,是因為這個語言小學生都開始學習了,以後不會python要被小學生欺負了。語法簡單,除了前端幾乎萬能,可用的庫極其豐富,能想到的功能幾乎都有現成的庫可以用。不管是搞爬蟲,做人工智慧,機器學習,數據分析,還是自動化運維,自動化測試,python幾乎都是首選。不想當程序員還想學習一門語言的話,學習python就沒錯了。缺點是慢,但是能讓機器累的事,何必讓人來累。

PHP

PHP是世界上最好的語言,可能這個已經成為很多程序員的梗。

我沒用php開發過大型項目,自己做東西的感覺是這語言非常簡單,以前用的人很多,招聘容易,但是不適合做復雜的項目。現在用得越來越少了,迅雷以前有不少運營活動頁面是PHP做的。

C

C的語法足夠簡單,應該是最接近機器語言的高級語言,適合編寫操作系統底層,驅動程序,硬體相關的程序以及看重性能的程序。由於過於簡單,構建大型程序的復雜度非常高,建議想往研發方向走的同學都學習一下C語言。

可以對計算機一些底層原理了解,比如指令執行過程,內存管理,異常,多線程,編譯過程等又更深層次的了解。掌握C語言再學習其他語言會變得很輕松,學習破解也有幫助,畢竟匯編基本都可以反編譯出C代碼。

C++

C++是一個糟糕的語言,這不是我說的,這是Linux之父說的。我自己用C++四五年時間,越到後面就感覺這句話越有道理。

首先C++的強大是毋庸置疑的,但是作為一個跟C一樣偏底層的語言,如果不理解寫的代碼背後到底發生了什麼事,如果出了錯,你是永遠不可能知道錯在哪裡的。

一個沒有垃圾回收的語言,不用智能指針很容易導致內存泄漏,錯誤的用了智能指針不但內存泄漏之後不好解決,還容易導致提前釋放等問題。

C++支持強制類型轉換,如果轉換前後的內存結構不一樣,很有可能導致各種隱性問題。還有Java之類非原生語言的異常處理都是語言自定義的異常,而C和C++中的異常很多都是操作系統層的異常。

Windows下一個簡單的try catch,你覺得可以抓到try中所有的異常,但是由於異常處理函數的指針保存在棧上,這時一個棧溢出可能直接導致異常處理函數指針被覆蓋,異常會出現在你意想不到的地方。微軟有大神曾說過,想你的代碼後續可維護就刪掉代碼中所有的try catch。

又由於語言非常底層,當程序出現底層崩潰的時候,想解決掉這個崩潰往往要讀一些匯編,這時候如果使用了大量的模板,比如stl和boost,那生成的匯編幾乎完全不可讀。看過stl代碼的人應該都知道這玩意兒寫的有多晦澀,就導致了你想用一個C++庫,如果不了解這個庫的實現原理,那大概率會出錯。

C++的復雜度又讓你很難真的理解那個庫的原理,結論就是C++強大,但是必須用的人也強大。C++直到現在還在瘋狂的增加特性,我用了四五年我自己都不敢說自己會玩C++,能用其他語言就優先考慮其他的,把C++作為最後的選項,不建議新手學,除非你的目標領域必須使用。

Rust

Rust是為了解決C和C++的各種問題而出現的語言,性能接近C++,通過所有許可權,不用垃圾回收就解決了生命周期管理。有包括管理,又有極其嚴格的編譯器檢查,能編譯通過的代碼就不會有大問題,編譯器直接把水平不夠的新手擋在了門外,通過解決出問題的人是方式,從根本上解決了C++的問題。

我第一次用rust寫個小程序就跟編譯器較了一天的勁。它的缺點就是學習難度太大,語言太小眾,庫太少,很多輪子都要自己造。但是隨著微軟之類的大廠使用,相信之後發展會比較好,新項目如果需要C或者C++可以優先考慮rust。

Java

我現在主要也是一個Java程序員,對於Java這個語言我並沒有什麼很特別的感覺,配套設施完善,什麼都能幹,體驗非常贊,就是內存佔用有點難看。想搞安卓考法的必修,阿里有大量的伺服器項目使用Java。

唯一想吐槽的是gradle這個構建系統,版本問題搞得很頭疼。

JavaScript

js是前端的必修課,沒得選,然而node讓js也萬能了。用node做過後端項目後,感覺動態類型語言還是不太適合,由此帶來的低級錯誤很多,雖然可以用typescript解決,但是最終還要編譯成js,無法直接調試。由於沒有原生的多線程支持,利用cpu也只能通過開多個進程的方式。小項目的後端做著玩還可以,大點的還是考慮Java或者是go吧。

Lua

Lua是極其輕量的語言,語言特性接近js,runtime非常小。作為一個腳本語言,性能出色,內存佔用低,很適合各種嵌入式設備或者插件系統。

Go

這玩意兒一定是谷歌為了解決自己後端項目中遇到的問題而開發的語言,各種特性直戳痛處。語法簡單,規范嚴格,這就讓不管什麼水平的開發寫出來的代碼差距都不會太大。

靜態類型,沒有默認參數,沒有異常處理,可以降低犯低級錯誤的概率。編譯成原生代碼,可內嵌C代碼,原生支持協程和多線程,可以保證性能,支持跨平台編譯,輸出單文件方便部署,這些優點帶來的問題是Go的指向性太強,只適合做高並發api類的後端服務。

想用Go開發其他任何領域都會覺得特別別扭,類似C的語法過於簡單,又沒有泛型,導致很多功能都顯得很啰嗦。但由於Go解決了部署問題,跨平台問題,降低了研發人員的水平要求,降低了犯錯誤的概率。

關於這些語言的性能沒有絕對的排序,但根據我做項目帶團隊和面試的經驗,絕大多數的程序員的水平都還碰不到語言的性能瓶頸。一般來說對語言的理解以及多線程,演算法,網路,資料庫緩存。硬體甚至業務的理解都比語言的性功能影響更大。

再次強調,語言只是工具,只有適不適合,沒有好與不好。基礎強大,用哪個都不怕,基礎太差,用什麼都尷尬。

只是會語法並不是掌握了這門語言,要知道程序背後發生了什麼。比如C++的對象模型,Java的虛擬機,垃圾回收,Go的協程,js的promise,rust怎麼編譯通過等等。

基礎是一門語言的核心,不管學習哪一門語言都要重點學好基礎。

F. 3.3 有什麼方法能夠讓lua調用webview

你可以考慮用debug庫幫助你123for i,v in pairs(debug.getinfo(2)) do print(i,v)end但是我不是很推薦這個庫 這個庫的很多函數效率很低 而且破壞了域的概念你應該通過許多其他途徑對這個函數進行維護其中2表示當前棧的層次 因為你是兩重的函數調用,所以是上一層的函數調用相關的信息,比如名字,函數 所在文件 函數定義的行數等等運行demo的時候要注意 這一段代碼不能拿去獨立運行 必須放在第二重嵌套的函數里使用

G. 只會lua和coco2dx,沒有C++的人才,能支撐完整開發一個手機網游嗎

作為一個程序出身的製作人,我的答案是:

1. cocos2dx 本身就是使用C++編寫的,如果會cocos2dx而不是C++程序員,這個完全說不過去。

2. 假設你所提及的C++人才,是指精通C++的程序員。會cocos2dx,能夠使用C++編寫游戲的代碼,這一點足夠實現一個基於cocos2dx的手機游戲了,當然,前提是你真的了解cocos2dx,能夠用它實現你所有的游戲需求。

3. C++僅僅是一種語言,一個工具而已。真正重要的是編程思想。cocos2dx的設計模式是什麼,在編碼過程中,能夠遵循或沿襲cocos2dx的設計模式,這個很重要。還有就是游戲程序設計,比如,如何設計游戲戰斗系統,技能系統,任務系統,道具系統,等等.. 這需要的不是C++人才,而是資深游戲程序員。

4. 如果僅僅會cocos2dx和lua,是無法完成游戲的服務端程序開發的。現在手游的服務端程序,主要有兩類:基於http協議的web服務端程序,和直接使用socket的一般伺服器程序。後者很復雜,一般會有專門的程序員或程序團隊負責。

H. 網頁游戲開發語言有哪些

  1. 網頁的交互模式,基於HTTP實現與伺服器的交互,這些游戲的後端可以使用任何Web開發語言來實現,比如PHP,Java,C#,Ruby,Python這些,都沒有問題。

  2. 游戲的前端現在普遍依然使用Flash平台,開發語言就是ActionScript,比較前衛的游戲有使用HTML5的,就是JavaScript,還有一些社交平台上的游戲直接使用HTML頁面來做交互,有一些傳統游戲廠商轉過來做網頁游戲的也有採用ActiveX技術直接把現有的游戲移植過來的,這些游戲前端往往採用C++這些來開發。

  3. 有些游戲需要實時與伺服器交互(比如MMORPG),這些游戲的後端往往就是和傳統的網游一樣的架構,開發語言也一般會比較傳統的採用C++,也有一些採用Erlang來搞定網路及分布式計算的平台部分。

  4. 值得一提的是Lua語言,Lua在網頁游戲的客戶端用的不多,但是在伺服器端依然有不少採用,主要是用在游戲的實際邏輯部分。

I. 使用openresty+lua進行web網關層開發屬於運維嗎

肯定是了啊

J. cocos2d-x+lua開發環境需要用到哪些工具,如何調試

UID:315584

精華:0

發帖:43

可可豆:78CB

威望:78點

在線時間:87(時)

注冊時間:2014-05-15

最後登錄:2015-02-09

樓主:發表於:2014-06-0514:42發自:WebPage

倒序閱讀只看樓主小中大

來源於教程分享分類

使用VS插件在VS2012/2013上編輯和調試cocos2d-x的Lua代碼

管理提醒:本帖被abc88798執行加亮操作(2015-01-09)

BabeLua簡介

BabeLua是一款基於VS2012/2013(簡稱VS)的免費開源的Lua集成開發環境,在Lua編輯和調試方面,具有如下功能和特性:

●Lua語法高亮

●語法檢查

●自動補全

●一鍵注釋

●格式化代碼

●自定義代碼折疊

●工程管理

●快速搜索和跳轉

●文件大綱

●注入宿主程序內對Lua腳本進行調試

●設置斷點觀察變數值

●查看堆棧信息

BabeLua可以調試哪些程序

已經通過測試的程序:Lua5.1forwindows;Cocos2d-x(含quick);Babe2D(Boyaa)

正在測試的程序:Lua5.2;LuaJIT;Love2d;Moai;Gideros;MarmaladeQuick;Corona;GSL-shell;迅雷Bolt

版本更新日誌

國內鏡像(速度較快)

第三步:安裝BabeLua

雙擊BabeLua.vsix進行安裝

第四步:驗證安裝

啟動VS2012/2013,在主界面菜單上找到【Lua】菜單項,即安裝成功。

主界面

上圖中,數字序號對應的界面分別是:

(1)BabeLua在VS上插入的菜單;

(2)「FolderExplorer」是一個輕量級的Lua文件管理界面;

(3)源碼編輯區域;

(4)顯示當前編輯的Lua文件大綱列表;

(5)「OutlineExplorer」是一個顯示當前Lua文件大綱的界面;

(6)「SearchResult」是快速搜索結果界面;

(7)系統調試界面區域;

(8)BabeLua工具欄;

(9)快速定位函數和變數界面;

建議您將「FolderExplorer」、「OutlineExplorer」、「SearchResult」等界面,拖動並停靠在您喜歡的位置。