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. 网页游戏开发语言有哪些
网页的交互模式,基于HTTP实现与服务器的交互,这些游戏的后端可以使用任何Web开发语言来实现,比如PHP,Java,C#,Ruby,Python这些,都没有问题。
游戏的前端现在普遍依然使用Flash平台,开发语言就是ActionScript,比较前卫的游戏有使用HTML5的,就是JavaScript,还有一些社交平台上的游戏直接使用HTML页面来做交互,有一些传统游戏厂商转过来做网页游戏的也有采用ActiveX技术直接把现有的游戏移植过来的,这些游戏前端往往采用C++这些来开发。
有些游戏需要实时与服务器交互(比如MMORPG),这些游戏的后端往往就是和传统的网游一样的架构,开发语言也一般会比较传统的采用C++,也有一些采用Erlang来搞定网络及分布式计算的平台部分。
值得一提的是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”等界面,拖动并停靠在您喜欢的位置。