blog icon indicating copy to clipboard operation
blog copied to clipboard

涵曦的博客

Results 102 blog issues
Sort by recently updated
recently updated
newest added

看到很多简洁的 web 框架,总想自己造个轮子试试,边写边记录些比较。 ## 参考框架 - Lua 语言开发基于 Openresty 的 [lor](https://github.com/sumory/lor) - python 语言开发的 [web.py](https://github.com/webpy/webpy) - go 语言开发的 [gin](https://github.com/gin-gonic/gin) 既然是造轮子,我当然选自己最熟悉的 Lua 语言了,可是已经有了基于 Openresty 的 lor 框架,所以底层我就又选用了我熟悉的 skynet 了。 明确目标: 基于...

Skynet
玩具

## 预读 - 关于如何使用 skynet 可以参考 [wiki 文档](https://github.com/cloudwu/skynet/wiki) - 更多实战内容见 [https://www.lanqiao.cn/courses/2770](https://www.lanqiao.cn/courses/2770) 优惠码:`2CZ2UA5u` ## 环境测试搭建 使用示例代码见 `examples/main.lua` 。 先开启进程: ```bash $ ./skynet examples/config ``` 从 `examples/main.lua` 中可以看到 `debug_console` 开启的端口是 `8000` :...

Skynet

我已经做过两个客户端使用 Unity 的 3D 手游了,虽然我一直是写服务器的,不学点 Unity 都不配说我参与过 Unity 3D 游戏开发,起码得了解些 Unity 的基础知识吧。以前做 Cocos 2dx 的手游时也玩过一点客户端,学习 Untiy 主要还是熟悉编辑器为主。 专门开了一个工程来记录学习 Unity 的代码和学习过程,大多是以流水账的形式的展现的。 - 课程地址1: https://www.icourse163.org/course/ZJICM-1449934195 - 课程地址2: https://www.coursera.org/learn/unity-yinqing-youxi-kaifa 工程地址 : https://github.com/hanxi/UnityProject 欢迎有兴趣的欢迎...

随写

## GitLab CI 是什么 - CI - 持续集成 (Continuous Integration) - DevOps 工具 - 用通俗的话讲,就是帮我们自动做事情的工具 > 持续整合,又译为持续集成,是一种软件工程流程,是将所有软件工程师对于软件的工作副本持续集成到共享主线的一种举措。该名称最早由葛来迪·布区在他的布区方法中提出,在测试驱动开发的作法中,通常还会搭配自动单元测试。持续集成的提出主要是为解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱。 > DevOps(Development 和 Operations 的组合词)是一种重视“软件开发人员(Dev)”和“IT 运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 类似产品: - Jenkins - Travis CI -...

教程

### 常见的场景 ```bash $ cat bbb EOF aaa bbb ``` 这种用法称为[ Here 文档](https://zh.wikipedia.org/wiki/Here%E6%96%87%E6%A1%A3) >here文档[1],又称作heredoc、hereis、here-字符串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。它可以保存文字里面的换行或是缩进等空白字元。一些语言允许在字符串里执行变量替换和命令替换。 >here文档最通用的语法是

资料
Linux

[这里](https://github.com/hanxi/blog/issues/1)有介绍如何使用github issues作为个人博客。 这次是给我的个人博客加件外衣(定制博客的主题),让博客界面更简洁更像一个真正的博客。 最初使用这个 github issues 写一个主页和404页面跳转的时候就用到了使用 ajax 调用 github api。那时候就有想法要实现博客的外衣,只是一只没有空搞。昨天花了一天搞定了。 ### 添加主页 - 调用接口 `GET /repos/:owner/:repo/issues` 获取所有的 issues - api 参考 https://developer.github.com/v3/issues/#list-issues-for-a-repository - 将结果中的每篇文章的 title 提取出来,显示在 html 中即可 ###...

教程

最近在折腾 lua 语言的 web 服务器框架,需要实现路由模块。 以前使用过这个 [APItools/router](https://github.com/APItools/router.lua) 做路由,是一个比较简单的实现,这里 [hanxi/skynet-demo](https://github.com/hanxi/skynet-demo) 可以看到使用示例。 参考了 [lor](https://github.com/sumory/lor) 框架的路由实现,它的路由模块使用的是一个纯 lua 实现的 trie 树,看上去挺复杂的,不太好拆出一个独立的模块。 搜到了 [libr3](https://github.com/c9s/r3) 这个库,看描述性能很高,且接口比较简单。并且 [iresty/lua-resty-libr3](https://github.com/iresty/lua-resty-libr3) 也对它做了封装,说明质量很定是没啥问题的。已经有人写好了为什么不用呢? 首先我计划的 web 框架是基于 [skynet](https://github.com/cloudwu/skynet) 的,使用的是 lua 不是 luajit,虽然...

> 分布式唯一 ID 生成算法也就那么几种,我也不过多解释,想了解可以看美团的这篇文章 https://tech.meituan.com/2017/04/21/mt-leaf.html 我今天要讲的算法类似美团的 Leaf-segment 的数据库方案,简要说就是各个节点都去唯一的数据库取一个 ID 段,然后自己分配。 这套算法在老东家的时候就见过,没啥稀奇的,之前是用于生成游戏玩家 ID 的。现在分享的这个实现也是参考现在老大写的代码(其实就是抄的)。 如果不做预生成处理,同样也会出现 Leaf-segment 里说的 TP999 指标问题(TP999 就是满足千分之九百九十九的网络请求所需要的最低耗时),所以也做了快要消耗完 ID 段时就去申请一个新的 ID 出来。 ### 数据库结构 数据库的表结构是这样的,给 idtype 设置唯一索引: | idtype...

Skynet

服务器选用了 openresty。 选用服务器考虑了性能和生态,网络协议需要 HTTP 和 Websocket。也想过用 skynet, 虽然 skynet 也已实现了 websocket,但还是选择了在 web 领域应用更广泛的框架。 初版的客户端只是一个 bash 脚本,调用 openssl 本地加密解密数据,并用 curl 推送或者拉取数据到服务器。正式的客户端还是选用了 Lua 语言做主要的开发语言,C 语言作为 Lua 的扩展库开发语言。 服务器最初是先实现了 copy 和 paste 两个协议,copy...

玩具

### 1. 什么是透明代理? 百科上这样说的 > 透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。 ### 2. 我想用透明代理实现什么需求? 让家里的设备自动走统一的代理配置,只要在一台机器上配置代理客户端。使用透明代理实现的话,局域网的其他想走自动代理的机器只需要把网关和DNS设置为代理机的ip即可,这一步可以在路由器的DHCP里自动设置。但是我实测失败了,原因可能是我选的方案奇葩,我选的方案是在docker 里面部署代理机,代理客户端选的 v2ray。 用的方案就是这个 https://github.com/lisaac/tproxy-gateway 遇到个 v2ray 的报错没有解决。 其实还有其他方案可以尝试,比如用虚拟机的这套方案 https://github.com/icymind/VRouter 我不想再搞一套虚拟机,因为我的需求只是为了让局域网的机器可以方便的配置自动代理,然后我就换了一种方案。 ### 3. 自动代理 PAC? 局域网的机器如果直接设置代理为 v2ray 客户端的端口 8080,就会全部走代理了。为了不需要在每台机器上都配置 PAC,就需要再加一层代理了,可以用...