诗盗·真光闲文

《诗盗·真光闲文》:未曾有钱难成才,不经诱惑非真爱。自古英雄出豪门,从来富贵有后台。醉生梦死睡二奶,拓马长枪安内外。挥袖千手山河泄,扬名立威独自嗨。

注解

改编自《增广贤文》之《劝学》:

学林探路贵涉远,无人迹处偶奇观。
自古雄才多磨难,从来纨绔少伟男。
书山妙景勤为径,知渊阳春苦作弦。
风流肯落他人后,气岸遥凌豪士前。

常见的一个改编:

未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
醉生梦死谁成气,拓马长枪定乾坤。
挥军千里山河在,立名扬威传后人。

newifi mini 刷 OpenWRT

newifi mini,即 lenovo Y1,属于不开放 SSH 的类型,越用越不爽,还是刷了吧。

先到 http://www.xcloud.cc/download.shtml 下载“路由助手”,然后到 OpenWRT 官网下载 ROM,推荐用 trunk 上的(目前是 dd),因为 bb 和 cc 都没有集成 kmod-mt76(当然你自己手动安装是可以的,opkg install kmod-mt76),下载链接:http://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/openwrt-ramips-mt7620-y1-squashfs-sysupgrade.bin。目前刷完是 OpenWrt Designated Driver r47548,5G WiFi 没问题。

由于是 trunk 版,luci 可能要自己安装,请参考文章《跟 UMU 一起玩 OpenWRT(入门篇7):安装 LUCI》。

存在几个问题:

  1. 刷完,三个网口顺序和原版是颠倒的。

  2. 5G WiFi 设置参数后似乎没有办法立刻生效,UMU 都是 reboot 一下解决。

学习 go 语言【5】HTTP Echo Server

需求

做加速时经常需要用到 HTTP Echo Server 来测试加速有没有成功,如果成功了,是显示请求来自加速代理服务器。原来用 node.js 写了一个,代码如下:

1
2
3
4
5
6
7
8
9
10
var http = require('http');
http.createServer(
function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress;
var ua = req.headers['user-agent'];
res.end(ip + '\n' + ua);
}
).listen(80);
console.log('Server is running...');

既然在学 Go 语言,就用它写个新的吧!功能要更强一些。

代码

稍微改进一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package main

import (
"fmt"
"net/http"
"os"
"time"
)

func main() {
var addr string
if len(os.Args) > 1 {
addr = ":" + os.Args[1]
} else {
addr = ":80"
}
server := http.Server{
Addr: addr,
Handler: &MyHandler{},
ReadTimeout: 5 * time.Second,
}
err := server.ListenAndServe()
fmt.Println(err)
}

type MyHandler struct{}

func (*MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
info := r.RemoteAddr + " @ " + time.Now().String() + "\r\n" +
r.Method + " " + r.RequestURI + "\r\n" +
"Host: " + r.Host + "\r\n" +
"UserAgent: " + r.UserAgent() + "\r\n"
w.Write([]byte(info))
fmt.Println(info)
}