Moonscript的循环结构
除了使用迭代器,某些应用场合,我们还需要使用固定次数的循环结构,Moonscript提供While风格
的固定循环控制。
Moonscript
class extends lapis.Application
[loop: "/loop"]:=>
@html ->
i = 10
while i > 0
div text "Moonscript"
i -= 1
我们把纯循环的代码,从Moonscript Lapis框架代码独立出来:
Moonscript
i = 100
my_func = ->
i = 10
while i > 0
print i
i -= 1
my_func!
print i
Lua
local i = 100
local my_func
my_func = function()
i = 10
while i > 0 do
print(i)
i = i - 1
end
end
my_func()
return print(i)
为什么这个?用这种 ...
LUACURL使用笔记
CURL是 URL命令行工具, 即 command URL, 可以通过命令行模拟各种应用协议的发包, 包括FTP HTTP HTTPS,
官方网站
http://curl.haxx.se/
luacurl
lua curl是基于curl的库libcurl
http://curl.haxx.se/libcurl/
针对libcurl开放的API
http://curl.haxx.se/libcurl/c/
, 定义lua API对curl基本功能进行封装。
luauser中列出来3中绑定libcurl的lua封装库
http://lua-users.org/wiki/LuaCurl
其中freepops-luacurl
http://www.freepops.org/en/
实现了libcurl所有的easy 接口
http://curl.haxx.se/lib ...
nil、null与ngx.null
问题概述
今天第一次在nginx+lua架构下,写了个需要操作Redis的后台接口,该接口的功能主要是接受客户端的json格式的post请求,实现对保存在redis中的任务插入、删除、查询等。虽然nginx,lua等都是刚接触,但这几个接口还是顺风顺水的坐下来了,不能忘了感谢春哥章亦春。
在Redis中记录的任务其实很简单,每插入一个任务,就在redis中增加一个HASH结构,每次查询返回该SET的各个Field和对应的Value值,例如md5,filesize等。由于任务类型的不同,有的Field可能在该任务中不存在,此时在以json格式将查询结果返回时不应显示该Field。
以md5域为例,在对当前任务以md5域执行hget后,应该对返回结果做一个判断,如果该HASH结构并没有设置md5这个域,则跳过,继续执行后面的逻辑,如果设置了md5域,则把该域的Value取出来,插入到结果table中,后续再作为json格式返回结果的一部分,返回给后台。
测试时,却发现在某些域未设置时,查询结果中却仍然会把该域返回给查询调用者,但其Value部分是null。例如,执行下面的测试用例:
cu ...
如何定制Nginx的Log输出格式
set $currentDate 'day';
access_by_lua '
ngx.var.currentDate = os.date("%Y-%m-%d")
';
access_log /logs/app.access.$currentDate.log app_log;
图片:yuanzhang.png
一个很棒的库
https://github.com/cloudflare/lua-resty-logger-socket
下载链接:一个独立的LOG输出模块
Vanilla的Control返回必须是String类型
这是今天社区里的一位朋友遇到的问题, Control最后return回去的数据是一个table类型,而不是一个字符串,这时候Vanilla报错了。
社区里朋友的代码,如下:
function ResController:fetchData()
local hc = http:new()
local resp, err = hc:request_uri("http://xxx.xxx.x.xx", {
metod = "GET"
path = "/sec/res/find?pid="..id,
headers = {
["User-Agent"] = "Mozilla/5.0..."
}
})
if not resp then
return "request error :"..err
end
return resp.body
end
在看一下Vanilla的代码是如何处理这个 ...
《MacTalk 跨越边界》
对于池老师的关注是从他到锤子科技之后开始的。关于IT类的散文随笔也看过一些,比如《黑客与画家》,这次看池老师的文章也有类似的读阅体会。
池老师的文章,将IT技术与对其思考的理念杂揉到一起,形散而又主题突出。看到这本书,让人想起了编剧史航对王朔的评价,大概的意思是, 他是一个走在我们前面的人,而同时他又有能力,把自己所见所思,换成理念和文字 传达给后面的人,后面的人可以看到他的勇敢、智慧,胆识。
看到这本书的中写的内容,比如:35的岁程序员,加班这些主题,对那些刚上路的朋友们来说,就像摸黑走夜路的时候,边上有个人给你打了一只手电筒给你一道光,照出你前行的路。
如果你是一个文艺青年的话!什么叫文艺青年?印象里用老罗的观点,是那些天生敏感,而又有表达欲望的人,都可以别归为文艺青年。这书适合你,不是也没关系, 只要你是从事IT行业的。
这本书是“文艺青年”写的, 要是更准确的说,是文艺壮年程序员写的,看着书就能感到一种画面感,作者透着一种手持搬砖的力道之美,用逻辑武装的坚不可摧, 他经历祖国IT行业的潮起潮落,他的脑海中有很多的故事,他的手中有着漂亮的“贝壳”, 他把“贝壳”藏在了这个本书 ...
LUA中实现面向对象
我们引用云风大哥的代码:
local _class={}
function class(super)
local class_type={}
class_type.ctor=false
class_type.super=super
class_type.new=function(...)
local obj={}
do
local create
create = function(c,...)
if c.super then
create(c.super,...)
end
if c.ctor then
c.ctor(obj,...)
end
end
create(class_type,...)
end
setmetatable(obj,{ __index=_class[class_type] })
return obj
end
local vtbl={ ...
Python的PIP应用Fetch不到下载文件
如果出现,以下的消息,或者是在Python源码里,直接抛出异常,类似Connect Error的信息,可以肯定的是链接pypi的安装数据源出现问题了.
Cannot fetch index base URL https://pypi.python.org/simple/
列一下可用的安装源:
天朝外
https://pypi.python.org/simple/
天朝
pypi.douban.com/simple/
http://ypi.v2ex.com/simple
当被墙,或是网络不好的时候,需要配置一下,当前用户目录下的.pip文件夹中的pip.conf
配置如下:
[global]
index-url=http://pypi.douban.com/simple
v2ex:
http://ypi.v2ex.com/simple
创建了这个配置文件,在使用pip安装文件就基本OK了.
测试过同样是因为网络问题,windows下的pip用非国内有也不好用。
在windwos ...
Simple HTTP
下面是代码:
local http = require("lapis.nginx.http")
local app = lapis.Application()
app:get("/", function(self)
-- a simple GET request
local body, status_code, headers = http.simple("http://leafo.net")
-- a post request, data table is form encoded and content-type is set to
-- application/x-www-form-urlencoded
http.simple("http://leafo.net/", {
name = "leafo"
})
-- manual invocation of the above request
http.simple({
url = "http://leafo.net",
method = ...
误删Unity导致Ubuntu桌面左边栏消失
昨天安装老的版本的Django,删除Python,误删除了Unity.
结果发现桌面的左边栏和Terminal的标题栏都没了.
恢复安装一下就好了.
sudo apt-get install unity
sudo apt-get install gnome-terminal
这样重启系统就恢复了.


