在Mac系统上将默认的GCC切换到LLVM的Clang
在 macOS 中,可以使用 xcode-select 命令将系统默认的 GCC 编译器指向 LLVM 的 Clang 编译器。以下是修改 GCC 指向为 Clang 的步骤:
安装 Xcode:首先需要安装 Xcode 开发工具套件,因为 Clang 是 Xcode 自带的编译器。可以从 App Store 下载并安装 Xcode。
查看可用的工具链:在终端中执行以下命令查看可用的工具链:
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
这会显示当前选择的开发工具包路径。
切换到 Clang:使用以下命令将工具链切换到 Clang:
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
这会将工具链切换到 Xcode 命令行工具路径下的 Clang。
确认工具链版本:使用以下命令确认 Clang 的版本:
$ clang --version
Apple ...
Lazygit的安装
以下是在 macOS 和 Linux 系统中安装 Lazygit 的方法:
在 macOS 上使用 Homebrew 安装:
打开终端应用程序
使用以下命令安装 Homebrew(如果已经安装可以跳过此步骤):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
使用以下命令安装 Lazygit:
brew install lazygit
在 Ubuntu 或 Debian 上使用 APT 包管理器安装:
打开终端应用程序
使用以下命令更新本地软件包列表:
sudo apt-get update
使用以下命令安装 Lazygit:
sudo apt-get install lazygit
在 Fedora 或 CentOS 上使用 DNF/YUM 包管理器安装:
打开终端应用程序
使用以 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
$ hexo new "My New Post"
More info: Writing
Run server
$ hexo server
More info: Server
Generate static files
$ hexo generate
More info: Generating
Deploy to remote sites
$ hexo deploy
More info: Deployment
CentOS8下安装Conda的步骤
您可以按照以下步骤在 CentOS 8 上安装 Conda:
下载 Miniconda 安装包:访问 https://docs.conda.io/en/latest/miniconda.html,下载适用于 Linux 的 Miniconda 安装包。如果您使用的是 64 位系统,则下载 Linux 64-bit 版本。
安装 Miniconda:在终端中执行以下命令安装 Miniconda(假设下载的文件名为 Miniconda3-latest-Linux-x86_64.sh):
bash Miniconda3-latest-Linux-x86_64.sh
然后根据提示进行安装,一般直接按回车键就行了。安装完成后,要记得打开一个新的终端窗口或者输入 source ~/.bashrc 命令来激活 conda 命令。
创建虚拟环境:为了隔离不同项目的依赖关系,建议使用虚拟环境进行开发。可以使用以下命令创建一个新的 Python 3.7 环境:
conda create --name env_name python=3.7
其中 env_name 是您想要创建的环 ...
用ChatGPT生成Lua单体测试代码
Excerpt
0x01 前言OpenAI的ChatGPT智能AI引擎,在全世界范围流行,各种ChatGPT应用场景也遍地开花。 问题回答、文章续写、代码审计、自动生成单体测试、木马生成等等,都可以实现。 用户方面也有很多相关活动,有媒体号拉…
OpenAI的ChatGPT智能AI引擎,在全世界范围流行,各种ChatGPT应用场景也遍地开花。 问题回答、文章续写、代码审计、自动生成单体测试、木马生成等等,都可以实现。
用户方面也有很多相关活动,有媒体号拉群推广技术、有中间商提供相关服务、内容代理转发机器人、相关组织加紧封号,技术人员先行进入战场,然后是自媒体流量段子飞起。
简单测试一下,ChatGPT在软件开发方面的功能是否好用,就用一个自动生成单元测试代码作为例子。文章最后,提供一些好用的ChatGPT插件,覆盖了日常最常用的ChatGPT的使用场景。
0x02 ChatGPT自动生成代码单元测试用例
源代码,先写一个简单的Lua函数代码,太复杂的理解的也慢,如下:
function ChatGPT(num1, num2)
local ret = num1 + num2
re ...
用RESTY-HTTP实现Graylog的Widget更新与查询
作者:糖果
MoonScript for GrayLog是之前写的一个基于Lapis与Simple HTTP的Graylog日志查询SDK,
支持Stream查询,最近为了做自动化分析,加入了新的接口中调用功能,加入了对Dashboard
widgets和更新与查询,通过这个程序,实现一些反扫逻辑。
@putRequest:(req_url, data) =>
http = require "resty.http"
httpc = http.new()
metadata = {
method:"PUT",
body: data,
headers: self.headers_info
}
res, err = httpc\request_uri(req_url, metadata)
if not res
ngx.say("failed to request: ", err)
return
return res.body
@updateWidge ...
OpenResty、Lapis、Luarocks、OpenSSL全面升级
现在OpenResty升级到1.21.4.2rc1,Lapis已经从过去的1.6升级到了1.14,主要两个服务已经升级了很多,新功能也加入很多。与系统相关的Luarocks和OpenSSL也同样升级了,对应OpenResty和Lapis的升级,配套的Luarocks和OpenSSL也要升级,使用新的软件功能特性。
安装相关依赖软件,可以用Yum和Luarocks的安装包管理软件,这种软件安装管理软件在一此老的Linux系统上,安装版本不好控制,对于安装较新Lapis框架不适用,最比较好的解决方法,就是用源代码方式按装依赖包,复杂的相关依赖安装时要指定库文件和头文件的位置,否则安装时要把软件尽量安装在默认目录,但是一般不清楚依赖的软件都去那里找依赖软件的文件夹。
比如,解决Bug问题,还要调编译参数这种问题,如果出现这种情况, 就换软件的版本,换到修复后的版本。
sudo luarocks install luaossl CFLAGS="-O2 -fPIC -DHAVE_EVP_KDF_CTX=1"
首要升级的是OpenResty,升级各种配套软件。OpenResty的升级困难不大,顺利 ...
Evaluating Polynomials
<div id="search-loader" class="img-wrap">
<div class="loading">
<img src="https://img.dazhuanlan.com/2019/11/25/5ddbe656a3805.png">
</div>
</div>
<div class="row clearfix">
<div class="col-md-12">
Evaluating Polynomials
多项式求值
给定一串实数an,an-1,...,a1,a0,以及一个实数x,计算多项式Pn(x)=anxn+an-1xn-1+...+a1x+a0的值。
解法
去掉第一个系数a0,则更小规模的问题变成了计算由系数
an,an-1,...,a1表达的多项式,即
Pn-1(x) ...
深入Lua
该篇文章将从Lua string的底层代码去分析字符串是如何创建、缓存、以及扩容的,深入分析了Lua字符串的整个工作原理。
Lua中字符串结构体定义:
1234567891011121314151617181920212223242526272829** Common Header for all collectable objects (in macro form, to be** included in other objects)*/** Header for string value; string bytes follow the end of this structure** (aligned according to 'UTString'; see next).*/typedef struct { CommonHeader; lu_byte extra; /* reserved words for short strings; "has hash" for longs */ lu_byte shrlen; /* length f ...
深入 Lua Garbage Collector(三)
Lua 源码阅读的源码来自 lua-5.3.0
GC对象在 Lua 中,一共只有 9 种数据类型:
nil
boolean
lightuserdata
number
string
table
function
userdata
thread
其中,只有 string table function thread 四种在 vm 中以引用方式共享,是需要被 GC 管理回收的对象。其它类型都以值形式存在。
但在 Lua 的实现中,还有两种类型的对象需要被 GC 管理。分别是 proto (可以看作未绑定 upvalue 的函数), upvalue (多个 upvalue 会引用同一个值)。
保存值的形式Lua 是以 union + type 的形式保存值
在lobject.h中96行1234** Union of all Lua values*/typedef union Value Value;
101-108行:
12345678*** Tagged Values. This is the basic representation of values i ...