开发者 Copilot AI  
		2021-07-02
		一个月前看到了微软通过 OpenAI 独家授权的 GPT-3 弄了一个低代码编程语言 Power Fx,可以直接通过简单的自然语言来完成数据的各种复杂操作。
我看到演示,当时就非常惊讶。不过当时我觉得,估计也就只能到这个地步了(弄弄 Excel 公式),想要真的生成可用代码,可能还得等几年。
今天有看到了 GitHub 搞的这个 Copilot,我是真的惊了。
看网上的演示,就根据一点点注释,可以生成各种语言的代码,还可以提供多种选择。
Your AI pair programmer,真是此言不虚!
除非是从 GitHub 已有仓库中拿出来的,然后人工标注其用途(可能性非常小),否则这真是逆天了,超出了我对现阶段人工智能水平的认知。
不过现在是技术预览阶段,我已提交申请,不过不知道什么时候可以通过,我是真的想试试,要是用上这等神器,必定可以省不少事。
话说回来,老码农的价值肯定是会被压缩了一些些。
首先,还是得看看 Copilot 的水平,再说。
我现在真是太激动了,虽然可能会让程序员变得更卷,但是看到这样的技术进步,我还是非常开心。
Update @ 2021-11-01
Copilot 已经支持 neovim 和 JetBrains IDE (IDEA, PyCharm, WebStorm, PphStorm, Goland...) 了。
Update @2022-06-23
GitHub Copilot 宣布免费到 08/22,今后要收费,每个月 8 美元。我已经非常习惯 Copilot 了,但是这个价格对我来说还是不可接受的。
我搜索了一下 VSCode 的拓展商店,看到有一个新的 GitHub Copilot Nightly 版本,估计是给免费用户使用的。
另外还发现一个 GitHub Copilot Labs 拓展,可能是更加完善的版本,应该也是收费。
Update @2022-06-27
	
	
	
		
		 AI 机器学习 深度学习 神经网络  
		2021-07-02
		我想深入学习一下人工智能。第一步就是需要从总体上了解一下这个领域的相关知识,为后面的自学做个计划。
	
	
	
		
		 Lua  
		2021-07-02
		由于想了解一下 OpenResty, 先看看 Lua 的语法。
Lua 是啥
- 开源
 
- 嵌入式
 
- 脚本语言引擎 (由标准 C 编写,非常容易和 C/C++ 相互调用)
 
- 语法简单
 
- 没有强大的标准库
 
我的理解是,给 C 项目嵌入 lua 语言支持,然后通过 lua 来实现上层业务逻辑的快速开发,或者系统的灵活拓展。
除了官方 Lua 之外,还有这两个实现:
LuaJIT OpenResty 当前采用的就是这个玩意(之前是标准 Lua) 重点! 
Lupa Python 模块,实现了对 Lua 脚本的解析 
安装
sudo apt install -y lua5.4
命令行输入 lua 可以启动一个交互 SHELL。
语法
- 不像 Python 用缩进区分代码段,也不像 C 用花括号,而是用 
end; 
- 约定:下划线打头的大写字母组成的标识符作为 Lua 内部全局变量
 
关键字
and or
do while for repeat until break
if then else elseif end
true false nil
function return
in
local
goto
数据类型
nil 
boolean 
number:1,1.1,1e2 
string 单引号,双引号,或 [[ + ]] 
table 数组(和 PHP 类似) 
userdata C 语言结构 
function 函数被视为一种数据结构 
thread 
-- type 返回字符串
type(a) -- nil
字符串
- 字符串连接:
.. 
- 计算长度:一元操作符 
#,也用于计算数组长度 
常见操作
string.upper, string.lower, string.reverse, string.len 
string.format 
- 模式匹配:
 
string.match 
string.gmatch 
string.sub 
string.gsub(mainString, findString, replaceString, num) 
string.find(str, substr, ) 
string.rep(str, n) 重复 
string.char(arg), string.byte(arg[,int]) 整形和字符的转换 
数组
- 除了 
nil 之外的所有值都可以用作索引 
- 方括号,和小数点取值都支持
  小数点取值的话,要求必须是合法标识符 
常见操作
table.concat(table[, sep[, start[, end]]]) join 
table.insert(table[, pos], value) 
table.remove(table[, pos]) 
table.sort(table[, comp]) 
类型转换
数字 字符串
变量
- 默认为全局变量(和 Python 类似)
 
- 本地变量需要用 local 声明
 
- 没有初始化的变量为 
nil 
- 删除变量:
x = nil,删除数组中的元素也是赋值 nil 
函数
function average(...)
   result = 0
   local arg = {...}
   for i, v in ipairs(arg) do
      result = result + v
   end
   print("总共传入 " .. select("#",...) .. " 个数")
   return result / select("#", ...)
end
- 三个点 
... 表示可变参数,固定参数需要放到可变参数前面 
select('#', ...) 可变参数长度 
select(n, ...) 可变参数切片 
异常处理
assert
error(message[, level]) -- 相当于抛出异常
-- level 0, 1, 2 分别表示没有附加信息,错误位置(文件 + 行号),调用函数
pcall(func, ...) -- 调用函数,返回是否有错误(boolean),错误信息
xpcall(func, error_callback, ...) -- 增加了异常处理
debug 模块
这里面有好多内容。
debug.debug -- 进入交互模式
debug.trackback -- 调用栈
其他
- lua 会先计算左值,再赋值,所以支持和 Python 一样的 
a, b = b, a 这种变量交换。 
- 注释:
 
- 单行 
-- 
- 多行 
--[[ ]] 
- 逻辑运算中不等于:
~=,不是常见的 !=,需要注意 
- 自动垃圾回收,手动的话调用 
collectgarbage 
	
	
	
		
		 开发者  
		2021-06-30
		如何快速的、正确的查询资料是开发者的必备技能。GitHub 是一个主要的资料来源,当然需要掌握其用法才行。
除了要知道搜索什么英语术语之外,还有一些别的辅助技能,可以有效的提升 GitHub 搜索效率。
	
	
	
		
		 开发者  
		2021-06-29
		国外网站上的一篇文章,讲高级工程师应该掌握哪些编码之外的技能,其中包括帮助别人晋升。
	
	
	
		
		 Windows Windows10  
		2021-06-27
		一般安装的软件都可以在开始菜单的 “所有应用” 中看到,选 “固定到开始屏幕” 就行了。
不过,那些 Portable 的绿色软件,如果要放进去怎么弄呢?
- 创建快捷方式(我一般直接发送快捷方式到桌面)
 
- 将快捷方式复制到 
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
   我一般会改个名,比如:qq.exe => QQ 
- 现在会发现 
所有应用 里面出现了新增的那个快捷方式 
- 然后,就是固定到开始屏幕就行了。
 
	
	
	
		
		 局域网 网络问题 路由器 小米路由器 WiFi  
		2021-06-27
		同一个 WiFi 内,笔记本和台式机无法 Ping 通。
虽然觉得可能性非常小,但还是关闭防火墙试了一下,果然没用。
最后在路由器上下工夫,经过两天的试验,发现可能和小米路由器有关系。
如果发现连接不上了,切换一下 WiFi 加密方式,似乎就正常。
也可能是断开重启的功劳。
总之,不知道原因。
	
	
	
		
		 Python  
		2021-06-21
		除了 CPython 之外的几种比较知名的 Python 实现:
- PyPy
 
- Jython 原名 JPython,原作者停止维护之后,社区将项目改名并继续维护。
 
- IronPython 运行在 .NET 平台
   之前由微软开发(姊妹项目 IronRuby),后来放弃。项目由志愿者维护。 
- Pyston Dropbox 停止资助该项目,不过还活着,在继续发版。
 
- Unladen Swallow 谷歌的项目,看介绍,思路和 Pyston 差不多(在 pyston 前面),早死翘翘了
 
- Stackless Python: greenlet 就是从这个项目中弄出来的一个成果。
 
- MicroPython: 专门运行在单片机上(有一个 fork 叫 CircuitPython,似乎也有点名气)
 
	
	
	
		
		 Python Cython  
		2021-06-21
		Python 本身的性能现在还很有待提升,但是为什么没有阻碍它的推广呢?
因为 Python 常常被当作是一种胶水语言,它有很好的与 C 互操作性,一直维护与 C 库对接的 API,也就是说很容易可以通过 C 拓展来提升性能。
新的运行时
局部优化
C/C++ 绑定
SWIG: C/C++ 写的代码自动绑定到 Python,就是说生成一个 Python 可以调用的 .so 模块 
pybind11 
Boost.Python 
直接调用 C
直接开发 CPython 拓展模块(include <Python.h>)也可以,但我不觉得这是一个好办法。
GPU
- GPULib
 
- PyStream
 
- PyCUDA
 
- PyOpenCL
 
其他
- F2PY: Fortran to Python, 将 Fortran 代码自动绑定到 Python, NumPy 的一部分
  也是编译成 .so 包
  我不清楚相关应用场景,以及这个方案是否有性能上的优势 
参考资料与拓展阅读
	
	
	
		
		 Python 数据可视化 Matplotlib 科学计算  
		2021-06-20
		常用的一个 Python 图表工具。