当初选择ngx_lua_waf作为自己的WAF,主要原因就是因为其可扩展性与性能上有一个很好的平衡。
项目很多 lua 文件不是 utf-8格式,使用 EditPlus 查看的时候,显示为ASCII。还有的是带BOM的,带BOM倒好处理,之前写过,有一定规律。
在tools\tolua目录下有个README,里面详述了在各个平台下怎么使用,这里只是稍微记述下windows下面的使用和遇到的问题。
原文:Gitbook 新版本 _book目录下html不能跳转的问题解决以及nginx多个book反向代理配置
【CentOS】虚拟机忘记密码,如何重置密码。_centos重置密码-CSDN博客文章浏览阅读1.5w次,点赞16次,收藏83次。1.重启系统2.在这个选择界面,按e3.找到如下位置,插入init=/bin/sh。4.填写完成后按Ctrl+x引导启动5.输入mount -o remount, rw /6.重置密码出现以下为重置成功7.执行touch /.autorelabel8.退出exec /sbin/init9.输入你的新密码即可登录,到此重置密码完成!..._centos重置密码
1. 方便客户端维护– 每个请求方不用管理多个api url,统一访问api-gateway即可
随着k8s的成熟,在k8s上使用ingress-nginx、traefik、apisix等各类ingress的人也越来越多。ingress-kong也可以作为k8s的ingress使用,当然kong也可以单独作为微服务的gateway网关来使用。
本文将介绍如何使用ipagurd工具对Cocos2d-x中的Lua脚本进行打包与混淆,以及在iOS应用开发中的实际应用。我们将以Cocos2d-x-2.2.1 samples中的HelloLua为例,详细展示整个处理流程,并提供相应的代码案例演示。
本文关键字:devops可编程的语言系统。programmable language,可编程容器和可编程语言系统,c++ as terra++
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
前些天,移动端的同事跑来问:某些API需要传输大数据,Nginx服务器能否支持Gzip请求?一方面可以节省移动端流量;另一方面还可以加快传输速度,提升用户体验。对于Apache来说,利用SetInputFilter,可以很轻松的实现这个功能,那么Nginx如何做呢?
Redis是高性能的key-value数据库,在很大程度克服了memcached这类key/value存储的不足,在部分场景下,是对关系数据库的良好补充。得益于超高性能和丰富的数据结构,Redis已成为当前架构设计中的首选key-value存储系统。
最开始项目使用的是自己DIY的很简陋的上报系统,后来改成google breakpad来上报,发现其实都做的不太理想,游戏引擎因为版本历史问题存在一些崩溃问题。后来3.x接入了bugly,我这边抽了几天时间也准备接入,在接入bugly之前我是想用BugTags的,说实话我特别喜欢也为这款产品点赞(它的技术人员、客服人员响应速度和服务都是很赞的,最开始公司总结5个人,我也担任过客服的角色去跟用户沟通知道这其中的不易),但是毕竟它目前为止对NDK以及Lua方面支持的比较弱,而且截图时还存在黑屏的现象,对非原生的应用不太友好,所以后来还是放弃了,转入对C++崩溃捕获更为专业的Bugly。
之前总有人说nginx没办法调试,写多个变量,不知道变量值是啥,写多个location不知道走的是哪个location,今天带来三种方式
Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比于难于上手的Vim,浮肿沉重的Eclipse,VS,即便体积轻巧迅速启动的Editplus、Notepad++,在SublimeText面前大略显失色,无疑这款性感无比的编辑器是Coding和Writing最佳的选择,没有之一。 原文首链,请移步这里如何优雅地使用Sublime Text;最后更新于2015.12.15晚 (不能为简书文章添加目录?,
lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样:
1. lua入门demo 1.1. 入门之Hello World!! 由于我习惯用docker安装各种软件,这次的lua脚本也是运行在docker容器上 openresty是nginx+lua的各种模
最近一段时间做的工作主要是为引擎提供Lua的IDE,包括编辑智能提示和调试部分。
上一篇<<并发扣减库存方案一>>中使用了基于CAS和幂等思想, 使用当前值和期望值比较以及版本号变更比较来完成并发场景下 控制库存不被少扣或者扣减成负值, 此篇幅使用另外一个思路解决并发修改库存的问题, 利用redis单线程阻塞操作特性,以及redis执行lua脚本原子性, 来完成控制并发场景下库存扣减问题;首先简单 介绍一下此方案用到的一些redis和lua的特性: 1.redis阻塞操作 鉴于redis自身独有特性,我们知道redis执行命令是阻塞操作 (单进程单线程),举例说明:A服务向redis发送
由于我的做小程序的时候改了下后台的安装软件,不是使用的单纯的Nginx,而是使用的OpenResty,然后呢在网上看到了有介绍OpenResty的,故摘抄下来,不知道现在用 OpenResty人有多少,不过我倒是庆幸自己用OpenResty
Splash是一个javascript渲染服务。它是一个带有HTTP API的轻量级Web浏览器,使用Twisted和QT5在Python 3中实现。QT反应器用于使服务完全异步,允许通过QT主循环利用webkit并发。 一些Splash功能:
这里我们主要谈一下使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失,避免所在主机权限被黑客窃取,以及避免人为操作失误。
1. ngx_lua nodejs php 比较 我在研究一阵子ngx_lua之后发现lua语法和js真的很像,同时ngx_lua模型也是单线程的异步的事件驱动的,工作原理和nodejs相同,代码甚至
Openresty是国人发起的一个开源项目,大概看了一下,也体验了一下,在技术实现上,角度挺有意思的。Openresty是基于Nginx的web服务器,有意思的是Openresty的思路是把web应用服务集成到Nginx里面。大家都知道Nginx是通常配合Node.js、Go、PHP等后端技术一起使用,通过进程间通信或者socket完成一个完整的服务。
遵照惯例,我们的第一个Lua程序时通过标准输出打印字符串”Hello World”: print("Hello World")
在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助。脚本语言可以作为初始化文件读入变量和游戏数据的一个快速而方便的方法。它们通常因为具有节省编译时间提高生产效率、提高创造性和拓展性的有点而受到众多游戏开发厂商的青睐。在本篇博客中,马三将和大家一起学习一下Lua这门脚本语言。
研究了一下tolua++,发现还不错,用来导出枚举、函数、对象都很方便,编译过程如下:
吃鸡手游的成功,让手游多了一种引擎选择:UE4。于是陆续有人来问xLua的UE4版本。要做UE4版本,由于宿主语言的不同其实相当于完全重新开发。我想既然都重新开发了,能否重新考虑当年xLua的一些技术决策点,放在UE,放在那么多年后的今天是否仍然合适。
Jitsi是一个基于WebRTC的开源会议服务系统,主要提供高质量、安全、可扩展性强的视频会议业务能力!
Cmder 是 Windows 下替换原有 cmd 的绝佳工具,但是与默认的 cmd 一样,都与 git 命令行存在一些兼容性问题,比如中文乱码问题。在 Cmder 安装目录下的 config/user-profile.cmd 中添加如下代码,可以解决中文乱码的问题。
openresty+lua+redis+geoIp过滤ip功能上线后,发现有些ip无法识别,导致ip被拦,无法业务接口,从而造成一部分用户流失,其中可能包含"大哥"。
redis事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断。 我们可以通过 MULTI 命令开启一个事务,类似于 mysql 的 BEGIN TRANSACTION 语句。 在该语句之后执行的命令都将被视为事务之内的操作。 最后我们可以通过执行 EXEC/DISCARD 命令来提交/回滚该事务内的所有操作。 这两个Redis命令可被视为等同于关系型数据库中的 COMMIT/ROLLBACK 语句。 服务器在执行完事务中的所有命令之后, 才会继续处理其他客户端的其他命令。 被执行的命令要么全部都被执行,要么一个也不执行,并且事务执行过程中不会被其他工作打断。
所谓「代码热更新」,是指代码发生变化后,不用 reload 或者 graceful restart 进程就能生效。比如有一个聊天服务,连接着一百万个用户的长连接,所谓代码热更新就是在长连接不断的前提下完成代码更新。实际上因为所有的 require 操作都是通过 package.loaded 来加载模块的,只要代码是以 module 的形式组织的,那么就可以通过 package.loaded 实现代码热更新,并且基本不影响性能。
https://www.cnblogs.com/yangfengwu/p/11066036.html
Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。由于 Lua 语言具备原子性,其在执行的过程中不会被其它程序打断,对于并发下数据的一致性是有帮助的。
前些天听到一个需求:某业务方需要我们帮忙清理用户电脑上的一些废弃文件。同事完成这个逻辑的方案便是在我们程序中加入了一个很“独立”的业务逻辑:检索和删除某个程序产生的废弃文件。试想,该“独立”的逻辑之后会如何?被删掉?一直保留着?不管如何,这都意味着我们代码需要做修改,我们生成的二进制文件将产生差异,我们要为了这个需求要发一次版本。想一想客户端升级这样一个漫长且耗流量的过程,我甚至认为为了这么一个需求去浪费这些非常不值得。那么有没有一种比较好的办法,让我们不修改代码,不发布版本就能完成这样的“一次性”需求呢?当然有!是否记得若干年前,某个大公司和某个大公司吵架,当时那位新上任的CEO说某某公司可以“云暗杀”。且这种“暗杀”是一次性的,做完后可以销毁证据,且非常难以捕捉。我没有考究这个说法,但是从技术层面来说,这样的技术可以说并不复杂。那如何实现呢?就是本系列文章中讨论的:在程序中嵌入Lua脚本引擎。(转载请指明出于breaksoftware的csdn博客)
这个版本提供了全新的vs工程生成插件(非常感谢@OpportunityLiu的贡献),跟之前的生成vs的插件处理模式上有很大的不同,原先生成的vs工程是把所有源文件展开后,转交给vs来处理编译。
其实对于理解Javascipt的人来说,Lua也很容易理解,因为他们太多的地方相像了。
Redis的实现保证eval的执行是原子的,即使eval执行的lua超时,Redis也不会自动终止执行。
下载头像使用的是libcurl,嗯,又是它,在做项目这么久的过程中,发现它其实有很多地方比较坑。其中有一点我一直没搞明白,同样的一样地址,系统自带的浏览器(IOS、Android均支持)就能正常返回,而游戏中使用libcurl去下载就是死活返回errcode 28 (CURLE_OPERATION_TIMEDOUT),libcurl我设置的是60秒超时,绝对足够了
其实我那几个特别是工具类得开源项目一致都有维护和更新,但是每次更新得量和要点并不怎么突出所以一致也没写点什么。但是偶尔吗也会碰到一些稍微值得记录的东西,但是又不多所以很多都遗漏掉了。
Cocos Code IDE 是一个基于 Eclipse 的跨平台 IDE ,专门为 cocos2d lua & js 开发者准备,通过此工具。你能够方便的创建游戏project、编写而且调试代码、实时查看代码被改变后的效果,终于直接公布成一个可上架的安装包。当前公布的是第一个 alpha 版本号,我们有信心将它打造成众多X-man的开发神器。
Protobuf 的 proto3发布也有挺长一段时间了。现在很多新项目慢慢转变用proto3来开发。这篇文章主要记录一下我在给pbc写对proto3支持时的一些信息,也许对其他童鞋也有点助益。抛砖引玉一下。
OpenResty 是一个基于 Nginx 的全功能 Web 平台,它集成了大量精心设计的 Nginx 模块,以及大量的 Lua 库。在使用 OpenResty 时,有两种主要的包管理工具 OPM 和 LuaRocks。
这两个模块都是在FreeSWITCH支持使用嵌入式语言来控制呼叫流程的。我们在以前的文章中也曾不同程度地提到他们。 其中,mod_lua支持Lua语言,Lua是很有名的嵌入式语言,能非常好地嵌入其它语言的程序中。该模块有两个版本,最新的版本支持Lua 5.2,而支持Lua 5.1的版本现在已被移动到源代码的legacy目录中。 而mod_v8支持Javascript,由Google的v8库提供支持,v8库已被成功用于Chrome及node.js中,性能强劲。其实对Javascript的支持也有两个版本,另一个版本也在legacy目录中,叫做mod_spidermonkey。Spidermonkey是Firefox中的Javascript引擎。 Lua和Javascript两种语言有很多相似的地方,我们不必多说,先来看两个脚本: test.lua session:answer() session:sleep(1000) session:streamFile("/tmp/hello-lua.wav") session:hangup() test.js session.answer(); session.sleep(1000); session.streamFile("/tmp/hello-js.wav"); session.hangup(); 可以看出,两个脚本的内容和功能基本上一样。第一行,对当前呼叫进行应答;然后,小睡一会(以确定能正确的建立媒体流);接着,播放一个声音文件;最后,挂机。 可以分别使用如下Dialplan将来话路由到上述脚本: <action application=“lua” data=“/tmp/test.lua”/> 或 <action application=“javascript” data=“/tmp/test.js”/> 当然,两个脚本本质上是Lua或Javascript,因而你可以很容易地在脚本中加入条件判断、循环等,甚至也可以通过相关的API与数据库或其它系统交互。能实现什么样的程序,完全在于你的想象力,从现在起,就写个脚本练一练吧? ---------------------------------------- FreeSWITCH-CN是什么? ---------------------------------------- FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的「FreeSWITCH中文社... 」,或在通迅录->订阅号中搜索「FreeSWITCH-CN」来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。 如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。
在上一篇文章中,链接如下:https://www.cnblogs.com/xiao987334176/p/13656055.html
背景 当知道要上传的视频资料从20条变成100条时,我就明白,绝对不能再人工处理了。他们总是想当然的认为,录入一条数据需要1分钟,那录入20条数据就是20分钟,录入100条数据,不就是100分钟吗?我
领取专属 10元无门槛券
手把手带您无忧上云