#33 GitHub Copilot 争议

2021-07-14

七月二号发了一篇《吊炸天的 GitHub Copilot》,我表示非常期待这种技术的到来。
但是我并不知道他们是怎么弄的,没有考虑到其 AI 采用的训练集可能涉及的版权问题。
可以看到最近针对 Copilot 产生了巨大的争议,当前开发者社区的这种申讨氛围可能会让 GitHub 放弃 Copilot。

首先,GitHub 承认 Copilot 采用公开仓库代码做训练,不论其授权协议是 GPL 还是啥。
这里面有巨大的版权风险,虽然 GitHub 官方声称不会直接复制粘贴代码,但这种可能看起来就是 “洗代码” 的行为,无法说服别人他们拥有新代码的支配权。
更何况有人拿出了一些证据来证明 Copilot 会直接 Ctrl C + Ctrl V。

最近我使用 vscode 的时候,可以看到有时它会给我一些提示,真的感觉很棒。我不想 Copilot 被抛弃,希望 GitHub 或者 Google、IBM、阿里,或别的公司或组织,能解决所有争议,提供类似的产品,更好的服务开发者。

#32 吊炸天的 GitHub Copilot

2021-07-02

一个月前看到了微软通过 OpenAI 独家授权的 GPT-3 弄了一个低代码编程语言 Power Fx,可以直接通过简单的自然语言来完成数据的各种复杂操作。
我看到演示,当时就非常惊讶。不过当时我觉得,估计也就只能到这个地步了(弄弄 Excel 公式),想要真的生成可用代码,可能还得等几年。
今天有看到了 GitHub 搞的这个 Copilot,我是真的惊了。
看网上的演示,就根据一点点注释,可以生成各种语言的代码,还可以提供多种选择。
Your AI pair programmer,真是此言不虚!
除非是从 GitHub 已有仓库中拿出来的,然后人工标注其用途(可能性非常小),否则这真是逆天了,超出了我对现阶段人工智能水平的认知。
不过现在是技术预览阶段,我已提交申请,不过不知道什么时候可以通过,我是真的想试试,要是用上这等神器,必定可以省不少事。
话说回来,老码农的价值肯定是会被压缩了一些些。
首先,还是得看看 Copilot 的水平,再说。
我现在真是太激动了,虽然可能会让程序员变得更卷,但是看到这样的技术进步,我还是非常开心。

#31 GitHub 搜索技巧

2021-06-30

如何快速的、正确的查询资料是开发者的必备技能。GitHub 是一个主要的资料来源,当然需要掌握其用法才行。
除了要知道搜索什么英语术语之外,还有一些别的辅助技能,可以有效的提升 GitHub 搜索效率。

#28 Linux 工具箱: exiftool

2021-05-28

# 查看 Exif 信息:
exiftool      media/images/django.jpg
exiftool -X   media/images/django.jpg  # XML 格式
exiftool -csv media/images/django.jpg  # CSV 格式

exiftool    media/images/
exiftool -r media/images/  # 递归遍历子目录

# 清除文件 Exif 信息:
exiftool -all= -overwrite_original media/images/django.jpg
exiftool -all= -overwrite_original media/images/
exiftool -all= -overwrite_original -ext png media/images/

# 清除指定 Exif 信息
exiftool -gps:all= *.jpg

#27 YAML

2021-05-20

当我在好几个项目中看到 yaml 文件之后,我就开始去学习 yaml。当时我有点烦躁,为什么又有人吃饱没事做喜欢造轮子呢?JSON 已经这么完美了,为什么要让我们学一门新的标记语言,记更多无聊的语法?
但是,在采用 YAML 一段时间之后,我能理解这门语言为什么被设计出来了 —— JSON 在做数据交换时确实表现挺完美(折中了表达效率和可读性),但是如果是作为项目配置文件的时候,有着两个非常大的缺陷。
1. JSON 不支持注释,而我们的配置文件是很有些注释需求的
1. 字符串如果太长的时候(多行),JSON 就不那么可读了,看到 \n 就头疼
主要是第一个原因,毕竟配置文件中出现多行字符串的概率相比较而言要小得多。

#21 容错、高可用、灾备

2019-11-19

阮一峰的博文(容错,高可用和灾备)中说:

  • 容错:发生故障时,如何让系统继续运行。
    飞机的四个引擎坏了一个还能继续飞行,汽车的四个轮子坏了一个也能将就驾驶。
  • 高可用:系统中断时,如何尽快恢复。
    汽车的备胎,用于快速恢复正常驾驶(允许短暂的业务中断)。
  • 灾备:系统毁灭时,如何抢救数据。
    飞机的弹射装置,保证最核心的“资产” —— 驾驶员能够存活。

#20 LaTeX

2019-07-21

TeX

/tɛx/

TeX 是计算机科学领域传奇人物高德纳教授 1978 年在完成《计算机程序设计艺术》(The Art of Computer Programming)一书时顺手开发出来,理由是当时的计算机排版技术会影响这本书的印刷质量。而且,与 TeX 一同发明出来的还有一种用于定义矢量字体的编程语言 Metafont,不过这种语言并没有被广泛使用,毕竟字体开发者多半是做美术设计的人,应该在理解编程方面有很大的障碍。

TeX 是很多领域的出版物排版领域都是事实标准,这个名字可以指相关排版系统,也可以指那套排版系统所使用的语法。

TeX 是一个共有领域项目,鼓励别个自己改进完善这个项目。而且其项目管理特别有意思,规定 3.0 做功能冻结,之后按照 π 的小数位来版本更新,只做 BUG 修复,在作者(高德纳)死之后,版本修改为 π,然后剩下的错误修复都当作是新功能来提交。

最知名的 TeX 发行版:TeX Live,它由 TeX User Group 发布,是目前大多数 Unix-like 机器上默认的 TeX 版本。Tex 引擎作为其核心(可以认为是现在的官方版本吧),另外还包含必要字体和相关工具(最重要的是 TeX 编辑器),可能还有一些重要拓展,比如 XeTeX(Unicode 和现代字体技术支持)、LuaTeX(内置 Lua 支持) 等。

其他:

  1. TeX 输出设备无关的 DVI 文件,用来显示和打印都行。
  2. 老爷子还设计了 Plain TeX 对 TeX 进行一种封装,或者说一组宏集。

LaTex

/ˈlɑːtɛx/

LaTeX 算是 TeX 的派生软件,使用 TeX 作为排版引擎,当前的版本是LaTeX2e。

我的理解:LaTex 是在 TeX 上面附加了一组宏集,进一步屏蔽了 TeX 层的复杂性,简化了 TeX 的使用。

由于 TeX 可以认为是领域编程(DSL),而这个库里面有各种预订的规则,然后基于这些预设规则,我们可以很容易完成排版,比如有一个包描述了象棋棋谱相关规则,我们就可以通过简单的几句描述一个棋盘。

其内容与样式分离的设计思路有点类似 HTML + CSS,或者说 XML + XSL,通过命名空间定义一组标签,然后 XML 使用这组标签写文档,最后 XSL 上来渲染。LaTeX 完成了很多领域命名标签的定义,然后还有预定义的各种样式,基本上只需要采用相关语法写自己的文档就行。

参考资料与拓展阅读

#19 Facebook 数字货币项目 Libra 的国会听证会

2019-07-16

背景:美国国会叫停 Facebook 数字货币项目

今天的听证会上,小扎声明:

  1. 在获批之前,不会继续推动项目;
  2. 上线之后一定会配合监管,确保不被用于洗钱和恐怖主义融资。

有意思的是,他特意提到中国,表示如果一再受阻,中国央行会抢在他们前面有所动作(可能是说推出数字货币)。

值得注意的是,Libra 项目的几个重要合作者,包括 eBay、PayPal、Stripe、Visa、MasterCard,已经退出了。