最新 | 最热门 | 最高评价

+0  关于OpenResty里的ngx.on_abort

Tag: Technical | OpenResty
老王 发于 2020年04月13日 14:24 | 点击: 314 | 展开摘要
关于 OpenResty 里的 ngx.on_abort,官方文档里是这样说明的:

Registers a user Lua function as the callback which gets called automatically when the client closes the (downstream) connection prematurely.

也就是说:当客户端提前关闭连接的时候,在 ngx.on_abort 里注册的函数会被触发,下面做个实验看看,

查看全文: http://www.udpwork.com/item/17725.html

+0  如何在OpenResty里实现代码热更新

Tag: Technical | OpenResty
老王 发于 2020年03月25日 15:26 | 点击: 410 | 展开摘要
所谓「代码热更新」,是指代码发生变化后,不用 reload 或者 graceful restart 进程就能生效。比如有一个聊天服务,连接着一百万个用户的长连接,所谓代码热更新就是在长连接不断的前提下完成代码更新。实际上因为所有的 require 操作都是通过 package.loaded 来加载模块的,只要代码是以 module 的形式组织的,那么就可以通过 package.loaded 实现代码热更新,并且基本不影响性能。

下面让我们做个实验来说明一下如何实现代码热更新

查看全文: http://www.udpwork.com/item/17726.html

+0  手把手教你用OpenResty里的FFI

Tag: Technical | OpenResty
老王 发于 2020年03月08日 21:13 | 点击: 315 | 展开摘要
了解 OpenResty 的人应该知道,OpenResty 原本的 API 都是基于 C 实现的,不过在新版里都已经改成了基于 FFI 实现的,为什么这么做?因为 FFI 在效率上更有优势,除此以外,FFI 还有一个优点是可以很便利的和 C 交互,我们不妨设想一下,C 语言有那么多成熟的库,通过 FFI,我们可以轻而易举的引入到自己的应用中,何乐而不为呢?

本文通过 Hashids 手把手教你用 OpenResty 里的 FFI。说起 Hashids,它的功能是把一个正整数

查看全文: http://www.udpwork.com/item/17727.html

+0  一个尾调用相关的诡异报错信息

Tag: Technical | OpenResty
老王 发于 2020年03月03日 19:32 | 点击: 405 | 展开摘要
一个 OpenResty 的接口报错了,我查了一下日志,发现如下报错信息:

bad argument #1 to ‘test’ (string expected, got userdata)

看上去这就是一道送分题啊:无非就是 test 函数的第一个参数类型应该是 string,实际传递的却是 userdata。就当我觉得可以轻而易举解决问题的时候,突然发现 test 函数定义就没有参数,调用的时候也没传参数,真是太诡异了。

群里问了一些网友,结

查看全文: http://www.udpwork.com/item/17728.html

+0  如何扩展一个OpenResty模块

Tag: Technical | OpenResty
老王 发于 2020年02月19日 14:07 | 点击: 340 | 展开摘要
因为 Lua 本身并没有继承之类的语法,所以我们不能通过 OOP 的套路来扩展模块,不过实际上对于 Lua 来说,扩展一个模块有更简单的方法,下面我们以 lua-resty-string 模块中的 aes 加解密功能为例子来说明一下。

在 aes 加解密的过程中,有一个「填充」的过程,相关技术细节可以参考我以前写的「聊聊AES」,当然,不懂也没关系,你只要知道目前的 resty.aes 不支持配置填充的功能即可,因为 OpenSSL 缺省是激活了填充的,所以一旦我们需要自定

查看全文: http://www.udpwork.com/item/17729.html

+0  关于Cosocket的SocketBusy报错

Tag: Technical | OpenResty
老王 发于 2020年01月15日 14:06 | 点击: 336 | 展开摘要
关于 OpenResty 的 cosocket,文档里有如下一段描述:

the cosocket object here is full-duplex, that is, a reader “light thread” and a writer “light thread” can operate on a single cosocket object simultaneously (both “light thr

查看全文: http://www.udpwork.com/item/17730.html

+0  在Golang的HTTP请求中共享数据

Tag: Technical | Golang
老王 发于 2019年02月08日 11:30 | 点击: 8299 | 展开摘要
首先,我们需要先明确一下问题的描述:本文所要讨论的共享数据可不是指的 cookie、session 之类的概念,它们描述的是在「请求间」共享数据,而我们关注的是在「请求中」共享数据,也就说是,在每个请求中的各个 middleware 和 handler 之间共享数据。

实际上,我之所以关注这个问题源自 httprouter,众所周知,httprouter 是目前 Golang 社区最流行的 HTTP 路由库,不过它有一个问题,其 handler 参数定义如下:

func

查看全文: http://www.udpwork.com/item/17379.html

+0  学习Golang的HTTP中间件机制

Tag: Technical | Golang
老王 发于 2019年01月31日 23:23 | 点击: 6102 | 展开摘要
因为 Golang 内置的 net/http 天生就支持 HTTP 中间件机制,所以即便不用 gin 之类的 Web 框架,我们也可以写出扩展性很好的 Web 应用。

假如你不了解 Golang 的 HTTP 中间件机制的话,那么可以把它看成是一个洋葱:

通过洋葱看中间件

每一个中间件都是一层洋葱皮,其中每一个中间件都可以改变请求和响应,我们可以很自然的把不同的逻辑放到不同的洋葱皮里,更代码更符合单一职责原则:

package main

import (
"net

查看全文: http://www.udpwork.com/item/17374.html

+0  推导利滚利公式

Tag: Technical | Ethereum
老王 发于 2018年12月31日 22:45 | 点击: 2203 | 展开摘要
自从开始学习智能合约之后,接触到了很多「资金盘」游戏,比如前段时间大火的 Fomo3D,不过自从 333ETH 崩盘之后,此类游戏暂时已经没有市场了,因为本质上来说,它们都属于庞氏骗局,在研究相关代码后,让我对利滚利公式产生了一点兴趣,其实很简单,但我年纪大了,实实在在推导了好几遍才搞定,索性把推导过程记录下来。

比如有一个资金盘游戏,开始你投入 10000 块钱,然后每天我给你返利 1%,返利可以作为本金循环使用,那么一个月后你能拿到多少钱?这就是一个典型的利滚利模式,让

查看全文: http://www.udpwork.com/item/17261.html

+0  Web front for my code

Tag: Linux | Technology | Web
Haidong Ji 发于 2018年12月14日 12:48 | 点击: 2504 | 展开摘要
Awhile ago I set up my own git server. I’ve been hacking happily using that and Eclipse. In my spare time, I’ve been taking UCSD’s wonderful algorithm course: Algorithmic Design and Techniques. The course provides plenty o

查看全文: http://www.udpwork.com/item/17241.html

+0  以太坊地址区分大小写么

Tag: Technical | Ethereum
老王 发于 2018年11月29日 21:32 | 点击: 2929 | 展开摘要
以太坊地址区分大小写么?要搞清楚这个问题,我们不妨先在私链上做个实验:

geth> eth.sendTransaction({
from: eth.accounts[0],
to: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
value: web3.toWei(1, 'ether')
})

geth> eth.sendTransaction({
from: eth.accounts

查看全文: http://www.udpwork.com/item/17221.html

+0  斐讯N1刷CentOS7最简操作

Tag: Network | Software | Tech Notes | CentOS | 斐讯N1
kxn 发于 2018年10月31日 19:25 | 点击: 9445 | 展开摘要
准备工具

N1 一台
USB 双公口线一条
4G 以上 U 盘一个,越老越好,新 U 盘可能有兼容性问题
可以运行安卓adb工具的电脑一台,win/mac/linux都行

降级 bootloader 

首先下载文件 

微云:https://share.weiyun.com/5vAkZ7p 密码:nzwy53

将N1接上网线,HDMI线接显示器,离HDMI口远的那个USB口接一个鼠标。连上网以后,等个五分钟左右,待其自动升级到最新版,中间可能会多次

查看全文: http://www.udpwork.com/item/17175.html
|<<<1234567>>>| 一共30页, 355条记录