fengkx 最近的时间轴更新
fengkx

fengkx

V2EX 第 309446 号会员,加入于 2018-04-17 19:05:16 +08:00
fengkx 最近回复了
2021-01-18 09:34:54 +08:00
回复了 Wikiworker 创建的主题 分享创造 RSS Maker —— 可能是最懂你的公共 RSS 订阅源
https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Frss.mk%2Fithomex 这的几个归档 feed 都缺少一些必要字段,不能通过 w3 的 validator
2020-03-17 00:39:12 +08:00
回复了 idealclover 创建的主题 分享创造 写了个统计 GitHub 账号仓库总 stars 的 API~
做了一个跑在 Cloudflare worker 上的版本。[https://github.com/fengkx/github-star-counter-cloudflare-worker]( https://github.com/fengkx/github-star-counter-cloudflare-worker) 完全一样的逻辑。
每天 10w 次免费请求。https://api.github-start-counter.workers.dev/

一切原自一个美丽的误会。原来 Cloudflare worker 注册时选的域名是 account 级的,我以为像 netlify 那样一个网站( worker )一个二级域名。而且还不能改。。。

这个 account 就献祭掉了~
2019-10-06 20:33:49 +08:00
回复了 fengkx 创建的主题 分享创造 造的一个轮子 Telegram RSSBot in Node.js
2019-10-01 20:00:09 +08:00
回复了 fengkx 创建的主题 分享创造 造的一个轮子 Telegram RSSBot in Node.js
@ifwangs 更喜欢一个应用做好一件事。Telegram 的优势在于它作为一个 IM 的及时性和通知能力。还有就是可以用在群聊之中做通知提醒,还有在群聊中订阅群主题相关的 feed 增加讨论度的功能。 所以我多在 Bot 里订阅通知类或者低频更新的博客。特别不喜欢微信公众号那种方式。就是想方设法把用户留在应用内,公众号阅读时如果想要回消息只能用浮窗这种方式。我个人认为很奇葩很不好用。阅读还是用浏览器的好。
2019-10-01 19:53:47 +08:00
回复了 fengkx 创建的主题 分享创造 造的一个轮子 Telegram RSSBot in Node.js
2019-10-01 19:52:56 +08:00
回复了 fengkx 创建的主题 分享创造 造的一个轮子 Telegram RSSBot in Node.js
@B1ock 貌似是因为 imgur 被墙。我这里能看到的。
2019-10-01 00:29:22 +08:00
回复了 fengkx 创建的主题 分享创造 造的一个轮子 Telegram RSSBot in Node.js
两有一处小改进忘记了。
1. 按行分割的链接批量订阅
2. 通过 rel="alternate" type="application/atom+xml" 自动识别并订阅。 例如 v2ex.com 中有 <link rel="alternate" type="application/atom+xml" href="/feed/tab/tech.xml" /> 使用 /sub https://www.v2ex.com 会自动订阅到 https://www.v2ex.com/feed/tab/tech.xml
2019-09-30 07:54:47 +08:00
回复了 winterssy 创建的主题 分享创造 reqwest - 简单,易用的 Golang 网络请求库
@fengkx
@winterssy 单位看反了 /(ㄒoㄒ)/~~。看到了多一次内存分配下意识地看错了
2019-09-29 20:46:31 +08:00
回复了 winterssy 创建的主题 分享创造 reqwest - 简单,易用的 Golang 网络请求库
支持一下~

学习了代码。然后我想到一个问题。JSON()方法为什么不直接用 json.Decoder 呢。基于这个想法试了一下。


JSON 方法用 Deocder 可以这样
```go
func (r *Response) JSON(v interface{}) error {
dec := json.NewDecoder(r.R.Body)
return dec.Decode(v)
}
```

Bench 代码

```go
func BenchmarkResponse_JSON(b *testing.B) {
type testData struct {
JSON struct {
Msg string `json:"msg"`
Num int `json:"num"`
} `json:"json"`
}
ts := httptest.NewServer( http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
dec := json.NewDecoder(r.Body)
var data testData
dec.Decode(&data.JSON)
enc := json.NewEncoder(w)
enc.Encode(data)
}))
resp := reqwest.Post(ts.URL).
JSON(
reqwest.Data{
"msg": "hello world",
"num": 2019,
}).
Send().
EnsureStatusOk()
b.ResetTimer()
for i:=0;i<b.N;i++ {
var retData testData
resp.JSON(&retData)
}
}
```

结果如下
## Unmarshal
```plain
$ go test -v -run="none" -bench="BenchmarkResponse_JSON" -benchtime="3s" -benchmem
goos: linux
goarch: amd64
pkg: github.com/winterssy/reqwest
BenchmarkResponse_JSON-4 5000000 959 ns/op 544 B/op 2 allocs/op
PASS
ok github.com/winterssy/reqwest 5.895s
```
## Decoder
```plain
$ go test -v -run="none" -bench="BenchmarkResponse_JSON" -benchtime="3s" -benchmem
goos: linux
goarch: amd64
pkg: github.com/winterssy/reqwest
BenchmarkResponse_JSON-4 10000000 713 ns/op 896 B/op 3 allocs/op
PASS
ok github.com/winterssy/reqwest 7.758s
```

跟我设想的不太一样。还以为 Decoder 会更快。为什么会这样呢?
2018-10-01 21:37:13 +08:00
回复了 FakeLeung 创建的主题 分享发现 对 bootcdn.cn 无语了。
现在会 301 到 cdnjs 了
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2786 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 12:29 · PVG 20:29 · LAX 05:29 · JFK 08:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.