2014年4月

git 常用命令 - git config

git config 用来设置 git 的配置选项.

git 的配置文件分为三个层次:

  1. 系统层面, 适用于系统的所有用户和所有 git repo, 一般位于 /etc/gitconfig. 但是我的 git 是 xcode 自带的 git, 它的系统层面的配置文件就位于 /Applications/Xcode.app/Contents/Developer/usr/etc/gitconfig;
  2. 用户层面, 适用于当前用户的所有 git repo, 位于 ~/.gitconfig;
  3. repo 层面, 仅适用于当前 git repo. 一般位于当前 repo 的 .git/config.

git 的配置选项一般分成2类: 客户端起作用的配置服务器端起作用的配置, 但绝大多数是客户端起作用的.

git 列出当前所有的配置:

git config --list (如果在某 repo, 则显示当前 repo 继承的, 否则显示当前用户层面的)
git config --global --list
git config --system --list

得到某一具体配置:

git config --get user.name
git config --global --get user.name
git config --system --get user.name

添加某一配置:

git config --global test.example example 
git config --system --add test.sample "sample value"

去掉某一配置:

git config --global --unset test.example.value

git 常见的配置
git config 完全参考

openWRT 自带 busybox 的 netstat 命令查看端口

Usage: netstat [-ral] [-tuwx] [-enW]

Display networking information

Options:

-r      Routing table
-a      All sockets
-l      Listening sockets
        Else: connected sockets
-t      TCP sockets
-u      UDP sockets
-w      Raw sockets
-x      Unix sockets
        Else: all socket types
-e      Other/more information
-n      Don't resolve names
-W      Wide display

    

显示正在监听的 tcp, udp 端口

netstat -ltue

不解析常见的端口, 直接以数字显示

netstat -ltuen

小米路由器 购买到吐槽

从想买到想退

之前玩了1年的 DualWan, 感觉基于 openWRT 的路由器还是很好玩的, 首先它是一个 linux, 是一个在公网上的 linux, 他可以低功耗的下载东西不用关机, 可以建立 DLNA Server, 局域网内音影共享, 可以设立打印机共享, 可以安装 nginx+mysql+php, 可以安装 ruby, 等. 所以很期待小米路由器. 期待它的内存更大, CPU 更高, 期待它的 DLNA 支持字幕, 期待它能提供摄像头驱动, 期待一家大公司背后的软件维护团队.
相信自己从来不会有1圆预约的狗屎运, 就老老实实的等到第一次开放购买, 同事们都去吃饭了, 我等到12点, 点击抢购, 排队1分钟过后, 显示抢到. 等到付款的时候, 犹豫了, 实事求是的想, 它能替代我现在的 DualWan 吗? 没有付款, 去吃饭, 吃饭回来, 想想就当买个玩具算了, 就付款了. 付款过后, 迟迟不发货, 周六去小米路由器论坛逛了逛, 发现论坛上多人都说是 "半成品", 各种功能都没有. 心里很失落, 于是点击了申请退款, 可是他妈的, 刚点2分钟,手机收到短信: 您的路由器已发货..., 发货发了1天多的顺风, 周一上午才到上海. 期间逛了好几次论坛, 期待有托讲讲好的地方, 妈的, 竟然没有. 只好安慰自己, 有硬件, 软件明天会更好.

第一次把玩

再怎么不期待, 还是要打开看看的. 才开纸盒(尼玛, 我的大木箱呢?), 里面有个路由器, 一个充电器. 都不用自己安装了. 插电, 发现路由器声音比较大, 多大呢? 反正比我笔记本声音要大许多许多. 发现 WIFI, 2.4G 和5G wifi 各一个. 连上, 设置密码.
开始查看基本的功能:

  1. 默认的 ip 段 分配的是 192.168.31.*, 不是以前的 192.168.1.1, 所以路由器是
    192.168.31.1 登录. 不过这个可以登录之后重新设置.
  2. 登录的时候, 默认是 小米帐号登录, 还有可选的 管理密码登录, 对此, 我想对路由器的产品经理说, 你脑子里全是屎吗?
    买你家路由器就一定要使用你们家帐号么? 就一定要联网么? 即便如此, 为什么默认不是管理密码登录?
  3. 看到菜单, 我必须要真心的夸一下小米的残品经理, 这菜单做的真不错, 很是间接, 和我 DualWan
    上面看到10几个大菜单不一样,很清爽, 清爽的什么功能都没有...
  4. 点开主菜单: 应用管理. 收到消息 你现在处于管理密码登录状态,管理应用需要用小米账号登录,是否登录. 并且这个地方必须要小米帐号登录, 如果不用的话, 你的应用是看不到的, 也就是说我必须联网, 才能玩我的 LAMP 么? 如果 DLNA 开关, 重新扫描也在这里面, 我必须联网到 xiaomi, 才能观看我路由器上的共享视频么? 尼玛的, 你们也太坏了...
  5. 看到了 UPnP, 没有看到 DLNA, 不过在后台的bin 目录看到了 dlna;
  6. 默认没有开 telnet, 如果要登录, 必须要在 url 后面输入 #!pro/lamp, 然后点击 Start dropbear, 结果,悲剧的是, 点击根本没反应. 这个路径下,点击创建 LAMP sandbox 也是没反应.
  7. 论坛上问, 得知要访问一个专门的 URL 才能开启 ssh, 指想知道这样的隐秘 URL 到底有多少?
    是不是有些就是做后门的? 今天我登录你们的论坛, 你记住了我的 IP, 然后你就悄悄的控制了我的路由器.....
  8. 登录之后, 发现路由器竟然叫 xiaoqiang, 太贱了, 果断改名叫 home;
  9. 搜一下: lighttpd, nginx, mysql, 全找不到, 这那里要是创建 LAMP 的节奏? 不可能什么 web server 都没装啊, 至少管理界面开着呢. 终于找到, 尼玛的, 竟然把 nginx 改名为 sysapihttpd, 放在/usr/sbin/sysapihttpd, 然后把 配置文件改为 /etc/sysapihttpd/sysapihttpd.conf. 去看了下这个配置文件, 里面改的惨不忍睹, 开了好几个端口, 配置了不同的访问策略和路径.
  10. 好吧, 我自己要装 mysql 了, 看了下, ipkg 没装, apt-get, yum 更不可能装了, 装的是 opkg, 直接 opkg update, 失败. 然后看 repo 地址(/etc/opkg.conf), 竟然是一个不存在的URL: http://downloads.openwrt.org/attitude_adjustment/12.09/brcm4709/generic/packages. 看到有 brcm47xx, 就改了, 结果能更新, 却是架构不对, 不能安装, 又改过来. 为什么要给一个不存在的路径? 你们以后要发布到这个路径? 还是你们以后自己建 repo?

- 阅读剩余部分 -

网站测速 在线工具

有时候为了优化网站, 有时候为了测试一下网站在全国的访问速度, 需要这种专业的测试工具, 常用的有:

  1. 阿里测 [http://alibench.com/][1]
  2. 奇云测 [http://ce.cloud.360.cn/][2]

只可惜, 我的路由器经不起这么多的站点同时测试, nginx 很容易100% CPU.
[1]: http://alibench.com/
[2]: http://ce.cloud.360.cn/

RESTful 学习笔记

  1. REST: Representational State Transfer, 我喜欢译为 "可表示的状态的传输", "可描述的状态的传输". 表示的, 或者描述的是背后的资源/资产 (Resoure). 状态是 Resource 的状态 (期望的状态或当前的状态).
  2. RESTful 是一种 Style, 不是一个规范;
  3. 有几个特别熟悉的词要熟悉一下它原来的含义
    Uniform Resource Identifier (URI)
    HyperText Transfer Protocol (HTTP)
    HyperText Mark-up Language (HTML)
  4. Hypermedia as the engine of application state (HATEOAS);