使用 Cargo.site 构建你的作品集
如何利用 Cargo.site 做一份拿得出手的作品集。
如何利用 Cargo.site 做一份拿得出手的作品集。
这一系列(共 4 部分)为整理后的形式化语言与自动机的本科课程笔记,可作为知识提纲。 I:概念,推理与文法 核心问题:哪些问题可以通过计算解决(可计算型理论) 自动机理论:研究抽象机器所能解决问题的理论(图灵机:核心理论模型;以及有限状态机、文法、下推自动机等) 谓词逻辑与集合关系 n元关系是定义在某域上的一组n元组的集合 集合A和B的二元关系R是A×B的子集;二元关系可写作 xRy dom(R)和ran(R)分别表示关系R的定义域和值域 对于 $R \subseteq S\times S$ 几种特殊的关系: 偏序关系:自反,反对称,传递 Eg. 自然数集合N和小于等于关系≤构成的偏序集 等价关系:自反,对称,传递 -> 等价类:由等价关系确定的一组集合,每个集合中的任意元素都相互等价 等价关系的秩:等价类的个数 字母表、图与语言 字母表是语言中出现的原子符号,通常用Σ表示 字符串是字母表中元素的序列,长度必须为有限的,长度、连接等操作在定义上都为递归 长度:递归定义 $|w| = 0, w = \varepsilon; |x| + 1, w = xa$ 字符串运算:联结运算 abc.def、重复运算 (abc)* 和集合有关的运算:$A \cdot B = {w | w = x \cdot y, x\in A, y \in B}$ 若 $\Sigma$ 为字母表,则 $\Sigma^n$ 为长度为 n 的字符串集合 正闭包、克林闭包 语言:一系列特殊字符串的集合:L⊆Σ^∗ 图:系统描述方式 标签集合D,标签函数 L:S∪T→D 带标签的图可以表示为一个4元组 (S,T,D,L) 树是一种特殊的有向无环图 迁移系统:$TS = (s, \Sigma,\rightarrow,S_0)$ 给定字符串是否属于某个具体语言 L? 任何问题都可以转换成语言问题 $w \in L?...
复习数据库系统时刚好接触到这部分内容。有几个相对重要而难理解的概念,教材的语言十分形式化,在这里稍作一下直观的整理。 函数依赖 Functional Depencendy 可以理解为属性 R 中的一个元组 t1 (这个元组需要是这个关系的 super key,即能够标识整个属性集合)决定了另一系列元组 t2 的值。例如部门决定了预算,则有函数依赖 $dept \rightarrow budget$。 函数依赖分为平凡函数依赖和非平凡函数依赖。函数依赖 $X \rightarrow Y$ 中,若 Y 为 X 的子集,则为平凡函数依赖。直观的字面理解就是这种依赖非常的 “普通”,在所有关系中都满足。例如任何属性都能决定自身,函数依赖 $A \rightarrow A$ 恒成立。若 Y 不为 X 的子集,则为非平凡函数依赖。通常我们讨论的是非平凡函数依赖。 完全函数依赖指的是 $X \rightarrow Y$ 中,X 已经包含了最少的属性。再减少任何一个属性都会破坏函数依赖。例如预算可以完全依赖于部门和年份,这就是一个完全依赖。 而部分函数依赖指的是在 $X \rightarrow Y$ 仍然存在 X 的子集 X’ 满足 $X' \rightarrow Y$,例如 $dept_id, dept_name \rightarrow budget$ 中,左侧仅依赖 dept_id 就可以决定预算的值,那么这就是一个部分函数依赖,预算部分依赖于部门 ID 和部门名字。 还有一个传递函数依赖的概念,如果 $X \rightarrow Y$,$Y \rightarrow Z$,则 $X \rightarrow Z$ 成立。这就是一个传递函数依赖。如员工 -> 部门 ID,部门 ID -> 预算,那么员工 -> 部门预算就是一个传递函数依赖。...
人都是被逼出来的,业务突然来了的时候才能感到全速赶工的效率。这里记录一下如何用 10 分钟快速配置一个微信公众号自动回复机器人。 一些准备工作 首先需要关闭微信提供的自动回复功能,然后登录微信公众平台,前往开发者配置的基本配置。 URL :在这里输入你的接口地址,在下方的例子中,是 https://url/wechat。 Token:你可以自己输入 Token,用于验证。 EncodingAESKey:随机生成就好,同样用于验证。 消息加密方式:只要采用了 https 协议,明文模式也已经足够安全。为了便于开发调试我直接使用了明文方式。 快速让后端跑起来 需求很重要。没有必要在部署和非逻辑层上花费太多时间。下面是我使用的框架,在 get_reply(msg) 中写下你的业务逻辑就好。 对于比较复杂的项目,你可以考虑把一些方法拆分单独的文件中。 import hashlib from flask import * import xml.etree.ElementTree as ET app = Flask(__name__, static_url_path='/static') WECHAT_TOKEN = 'YOUR TOKEN' AES_KEY = 'YOUR AES KEY' def get_reply(msg): return 'You can write your own handler here.' def send(to_user, from_user, content): reply = """ <xml><ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag></xml> """ response = make_response(reply % (to_user, from_user, str(int(time....
因为 2019-nCov 的蔓延,大概率要在家里呆挺长一段时间,所以试着在路由器上安装了一个全局代理,提升互联网体验。把过程整理了一下放在这里了。 我使用的小米路由器为 R2D,也就是 2015 年推出的带有硬盘的小米路由器。不过大多数其他型号的小米路由器同样支持 ssh 权限,流程大体相同。 切换至开发版系统 小米路由器默认的系统版本为稳定版, 不支持开启 ssh 权限。所以需要先升级成开发版的系统。在 http://www1.miwifi.com/miwifi_download.html 可以下载到对应型号的开发版系统: 然后在地址栏输入 http://www.miwifi.com 进入小米路由器的管理后台,在「常用设置」-「系统状态」中选择「手动升级」,选择刚刚下载的开发板系统: **值得一提的是,使用这种方式更新系统可以保留硬盘中的所有数据,不会清空。**更新完系统后路由器会自动重启,重启后可以再次进入管理后台检查路由器的系统状。 开启小米路由器的 ssh 权限 确定系统已经是开发版后进入小米路由器的开放平台 http://d.miwifi.com/rom/ssh 登录小米账号,可以检索到已经绑定了账号的路由器和初始 root 密码。点击下载工具包可以得到开启 ssh 权限的二进制文件 miwifi_ssh.bin。 接着按照官方的引导,将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下,保证文件名为miwifi_ssh.bin;断开小米路由器的电源,将U盘插入USB接口;按住reset按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开reset键。 等路由器再次重启之后在局域网内的终端上使用 ssh [email protected] 连接路由器。发现已可连接,使用网页给出的 root 密码登录即可。 配置 ss/ssr/v2ray 接着在路由器上配置 v2ray。我这里使用的是一个集成了许多工具的工具箱(项目地址 https://github.com/monlor/MIXBOX)。在路由器上执行 : sh -c "$(curl -kfsSl https://dev.tencent.com/u/monlor/p/MIXBOX/git/raw/master/install.sh)" && source /etc/profile &> /dev/null 安装成功之后输入mixbox 进入工具箱: 输入 3,在未安装插件列表中选择 shadowsocks。安装成功后回到主菜单,选择已安装插件,选择 shadowsocks(该插件可以配置 ss、ssr、v2ray 三种协议)。这里还有许多其他实用的插件可以安装,可以根据需要使用。 进入插件页面,按照提示依次配置节点即可。注意 vmess:// 格式的链接暂时不支持直接导入。 在启动的时候有四种模式可以选择: 这里的黑名单和白名单似乎和通常情况下所指的代理模式不太一样,不过经过实践一般情况下推荐使用白名单模式,可以让局域网内的所有大陆网址直连,境外网址走代理。 Now enjoy.