Kitex: Thrift-HTTP 映射的 IDL 规范

本规范是 ThriftHTTP 接口映射的 IDL 定义标准,包括服务、接口以及请求 requestresponse 参数定义规范和错误码定义规范。Kitex 部分实现了该规范,注解说明有标注支持情况。

规范说明

(1)本规范采用注解方式来描述接口信息,包括接口的 method, path 以及接口请求参数,返回参数位置(如 headercookie )、名称等信息

(2)本规范所述注解采用 api.{key}={value} 的形式,其中key通常用于指定该字段出现的位置如(headercookiequerybody 等), value 用于指定该字段在对应位置的实际名称, 一些功能性注解(如api.none, api.js_conv, api.http_code) 除外

(3)本规范中定义的IDL注解如 api.get, api.header 等,只支持小写,不支持大写或者大小写混用如api.GET, api.Header

文件整体规范

  • 一个服务 service 对应一个 thrift 主文件,主文件里的 method 都是针对当前服务对应接口,主文件可以引用其它 thrift 文件定义
  • 每个 Method 原则上对应一个 RequestResponse 定义
  • 原则上不建议 Request 复用,可以复用 Response

Add commits to another person's PR on Github repo

TLDR;

git push git@github.com:remoteUser/remoteRepo localBranch:remoteBranch

Explanation

The normal git push command usually looks like this:

git push origin branch

Pushing to another developer’s branch follows a similar pattern: origin is the other person’s repo, and branch maps your local branch to the same branch on their remote repo.

origin = git@github.com:remoteUser/remoteRepo

branch = localBranch:remoteBranch

Breaking down each variable:

remoteUser refers to the username of the developer who made the pr on your repo

remoteRepo refers to the name of the repo that the other developer is creating the PR from, usually, this is the same name as your repo.

localBranch refers to the branch name of your local copy of their remote branch

remoteBranch refers to the branch name of that their PR is originating from on their remoteRepo

Keep in mind, that you can only push to PRs from other developers on your repo if that developer selected “Allow edits from maintainers” when they created their PR.

Yesql - Sqlx的好搭挡

Yesql 解析一个SQL文件,提取出查询语句,自动生成对应的Go结构体,实现查询语句与代码分离,方便编写数据库查询逻辑。

安装

go get github.com/alimy/yesql

使用 GoDoc

创建sql文件

-- sql file yesql.sql

-- name: newest_tags@topic
-- get newest tag information
SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin 
FROM @tag t JOIN @user u ON t.user_id = u.id 
WHERE t.is_del = 0 AND t.quote_num > 0 
ORDER BY t.id DESC 
LIMIT ? OFFSET ?;

-- name: hot_tags@topic
-- get get host tag information
SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin 
FROM @tag t JOIN @user u ON t.user_id = u.id 
WHERE t.is_del = 0 AND t.quote_num > 0 
ORDER BY t.quote_num DESC 
LIMIT ? OFFSET ?;

-- name: tags_by_keyword_a@topic
-- get tags by keyword
SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 ORDER BY quote_num DESC LIMIT 6;

-- name: tags_by_keyword_b@topic
SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 AND tag LIKE ? ORDER BY quote_num DESC LIMIT 6;

-- name: insert_tag@topic
INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num) VALUES (?, ?, ?, ?, 1);

-- name: tags_by_id_a@topic
-- clause: in
SELECT id FROM @tag WHERE id IN (?) AND is_del = 0 AND quote_num > 0;

-- name: tags_by_id_b@topic
-- clause: in
SELECT id, user_id, tag, quote_num FROM @tag WHERE id IN (?);

-- name: decr_tags_by_id@topic
-- clause: in
UPDATE @tag SET quote_num=quote_num-1, modified_on=? WHERE id IN (?);

-- name: tags_for_incr@topic
-- clause: in
SELECT id, user_id, tag, quote_num FROM @tag WHERE tag IN (?);

-- name: incr_tags_by_id@topic
-- clause: in
UPDATE @tag SET quote_num=quote_num+1, is_del=0, modified_on=? WHERE id IN (?);

迷时师度 悟了自度 (侯捷)

元智大学和清华大学的资讯系同学,最近不约而同邀请我在自校的资讯周上为同学们做个演讲。对於那些吊尔郎当,连自己也不关心自己的同学,我向来一点气力都舍不得花;但对於积极上进的同学,我可倒是很喜欢和他们谈话。曾经在不同的学校讲过好些个不同的谈话性题目(非关技术,但都不脱资讯范围),这次有感於在学校任教三年了,颇知道同学们的一些学习情况,所以想和大家谈谈学习的心态、老师的角色、以及学习者自己的角色。

我想先说一个小故事。

六祖檀经

佛教东传中土之後,虽然大德大贤备出,但由中国和尚所着,被奉为「经」者,也只「六祖檀经」一书而已。

六祖檀经记录着佛教禅宗六祖惠能一生的思想言行。其中对於六祖得道的过程,有详细的叙述。

六祖惠能俗姓卢,南海新兴人。年少失父,母且寡居,家亦屡空,业无腴产。所以他从小做了樵夫,养家活口。有一天他偶闻肆间诵金刚般若经,心有所感,於是询问邻人何处学佛,遂安置母亲,至河北黄梅山礼拜五祖。

五祖弘忍

五祖弘忍见惠能谈吐甚有根性,不动声色地让他到後院碓米。八个月後有一天,弘忍告诉众弟子说,每一个人写一首偈,谁能悟道,我便传他衣钵。当时人人以为五祖座下第一大弟子神秀必得衣钵,所以也没有人去作这首偈。神秀在这种情况下,一来「责无旁贷」,二来也想让师父看看自己心中的见解,便在三更时候於南廊壁上写下心偈一首:

身是菩提树,心如明镜台;时时勤拂拭,莫使惹尘埃。

第二天五祖弘忍见到了这首偈,把神秀叫到座前询问。并谓:「汝作此偈,见即未到,只到门前,尚未得入…」。要神秀回去再作一偈。过了数天,神秀却作不出来。

Mounty挂载NTFS硬盘报错

问题

The volume UNTITLEDis not re-mountable in read/write mode .Probably it was not clean unmounted before.

卷不能在读/写模式下重新挂载。可能是因为先前没有完全卸载(安全删除)。

解决方法 (1)

不能被重新挂载,是因为以前没有clean 卸载。

就是说磁盘在win下面没有安全删除就拔出来了,导致文件系统中有错误区块,所以在MAC中不能挂载成读写模式。

到win下面chkdsk /f 一下,再回到MacOS即可。

paopao - 关于paopao-ce的设计定位

paopao-ce 是一个清新文艺的微社区,提供类似Twitter/微博的推文分享服务。paopao-ce的运营形态有点类似WordPress,只不过WordPress是使用PHP语言开发的博客平台,提供的是博客服务,而paopao-ce提供的是类似Twitter的推文分享服务。paopao-ce 让 个人或小组织 可以快速、方便的部署一个提供推文分享服务的小站点,在有限范围内形成一个友善的社交小圈子微社区。