某储备粮的“学习笔记”

by 咳嗽di小鱼

Hostrail实在是不给力...`CPU不灵, 装lnmp慢的一塌糊涂, 好不容易Setup好, 各种问题层出不穷.

  • HyperVM Panel时不时无法访问, 即使可以访问也慢得要死
  • html页的速度倒还不错, 可Typecho这么轻量化的php应用都慢的不成样子
  • 从3.29到4.1这段时间, server至少down了两次, 而且都是长时间的
  • 外加各种不确定性重启...

悲催的不是一点两点= =||`
买的时候抱着随便玩玩的心理也就没仔细研究, 之后才看明白VPS是怎么一潭深水.

这两天好好的查了下VPS的相关信息, 留下这么几个性价比高, 又比较靠谱的ISP:
VPSYOU, YardVPS, Ramhost, QuickWeb
  • VPSYOU价格中等, OpenVZ 256m的版本$4/m, CPU是745x2, 硬盘20G.
  • YardVPS的OpenVZ口碑不太好, 但他的Xen据说硬盘速度超一流, 512m 1.5T流量, $7.95/m.
    不过很少有货, 我看到有一个但因为犹豫不决miss掉了.
  • Ramhost是口碑最好的一个. 所有信息都只有夸没有贬, 只是一直没货, 而且256m要$8.99/m.
    (Ramhost每周末会补货, 要注意刷网页)
  • QuickWeb在网站上post出来的plan的性价比不是很高, 最低的OpenVZ/Xen都要$9.95/m.
    有个Chinese Promo还可以, Texas机房的256mOpenVZ要$5.5/m, 不过好像也是out of stock.

最后来介绍下我的最终选择:
QuickWeb一开始并不在我的选择范围内, 甚至根本不知道这个ISP, 因为几个大的VPS博客都没有特别推荐过这个ISP. 后来在Neal的博客发现他在做QuickWeb的代购, 才发现这也是一家在美国蛮有实力的IPS. (之所以说有实力是因为他们在美国五个大的数据中心都有机房)
最后入手的这个是$35.88/年的plan, 平摊下来一月只要$3, Neal主推的就是这个plan.
他自己的blog就搭在这个plan的VPS上, 访问速度很好, 而且看底下评论的反响普遍不错, 经Google四处查证以后, 决定还是下手试试看. Paypal付款给Neal以后, 主机即时开通.

规格:
OpenVZ/SolusVM
Intel(R) Xeon(R) CPU X3440 @ 2.53GHz, 单核
256M/384M突发
10G硬盘, 速度测试平均22M/s
美国凤凰城机房10Mbit带宽(Phoenix/LA) 250G/m流量
+$5可升级100Mbit
+$10可升级1000Mbit

到目前为止, 对这个主机还是很满意的, 速度和性能方面都很不错. LNMP只用了20分钟就装好了.
有需求的朋友可以联系Neal代购, http://neal.im/webhosting/


搞定240以后, 晚上就开始搞251...
硬件的东西其实还挺有意思的, 很多是以前只知其然不知其所以然的东西. 比如这回终于知道了为啥虚拟内存的设置叫"页面文件", 比如CPU的L1, L2, L3都是怎么和内存协调工作的...lol`

251 Course Notes上的内容大多都比较容易理解, 不过阅读中文的效率必然还是比英文的高很多, 能在网上找到对应的中文材料是件很幸运的事儿.
虽然对百度文库无好感= =, 但不得不说里边好东西真不少...拿出来给大家分享一下



= =...`消极怠工消极怠工, 240拖到最后一秒算是交掉了. w/e

找一个vector里第k大的数一直是个有意思的课题, 这次又碰到了, 自己写了一个. 记下来记下来, 以后八成用得到.

网上给的思路很多, 大家普遍认为用quicksort的algorithm是效率最好的. 原本也不怎么在乎效率问题, 完全是被240逼的啊啊啊啊啊...

vector好像并不是高效率的选择, 不过随它去吧`这次的tree实在有够恶心

#include <vector> 

int kTh(vector<int> & vals, int k){ 
    if(k == 0){ // 如果k为0, 则取中点 
        k = vals.size(); 
        k = k / 2 + k % 2; 
    }

    vector<int> v, l ,r; 
    int i; 
    v = vals; 
    int c, n = 0, s = v.size(), p = v[0]; // pivot = the first 

    while(true){ 
        for(i = s-1; i >= 0; i--){ // partite 
            c = v[i]; 
            if(c <= p) l.push_back(c); 
            else if(c > p) r.push_back(c); 
        } 
        s = l.size(); 
        if(s == k) break; // find the k'th 
        else if(s > k) v = l; // in left 
        else if(s < k) { // in right 
            k = k - l.size(); 
            v = r; 
        } 

        l.clear(); 
        r.clear(); 
        s = v.size(); 
        p = v[0]; // re-choose pivot 
    } 
    return p; 
}

欢迎大家批评指正...= =`

更新更规范的写法, 请见 CS 240复习总结之三: Sorting and Randomized Algorithms


说写就写.

刚刚搞定了Nginx二级域名的自动rewrite, 只要把自动匹配的配置放在几个特殊server定义之前, 就不会相互影响, 还挺简单的.
需要在nginx.conf里修改http里增加新的server部分

先说说标准的二级域名rewrite怎么写:

server { 
    listen 80; 
    server_name sub.domain.com; 
    index index.html index.htm index.php;
    root /***/wwwroot/sub_domain; 
    include other.conf; 

    location ~ .*\.(php|php5)?$ { 
        fastcgi_pass unix:/tmp/php-cgi.sock; 
        fastcgi_index index.php; 
        include fcgi.conf; 
    } 

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { 
        expires 30d; 
    } 

    location ~ .*\.(js|css)?$ { 
        expires 12h; 
    } 

    access_log off; 
}

基本上在server_name里写上地址, root里写上对应的目录就万事大吉了

然后是自动匹配的部分, 区别只在server_name和root的解析上:

server_name *.domain.com; 
set $subdomain "default"; 
if ( $host ~* (.*)\.(.*)\.(.*)) { 
    set $subdomain $1; 
} 
root /***/wwwroot/$subdomain;

第一篇结束...哈哈

注: 以上配置是以Lnmp一键安装包自动生成的配置文件为基础修改的


眼馋VPS很久了...毕竟没资本弄dedicated server, 弄个VPS玩玩也算像个样子.
这个VPS是hostrail.com的VPS 2 Power Units Server,

  • 60G硬盘
  • 400G带宽
  • 384MB内存
  • 0.8G CPU(写的是0,6, 实际是0.2x4)
  • 1 IP

总体来说= =`还算ok吧. 毕竟配上coupon, 每3个月才$6.29, 而且这个价格还是终身的, 即使速度不太理想, 也不算大碍. 稳定性有待长期验证.

后续请看 http://blog.gregwym.info/guo-duan-huan-vps-zhe-hui-shi-quickweb.html


已经在Title上写了是学习笔记, 那必然主要用来记技术上的东西.
越往后学越觉得脑子不够用, 很多以前折腾过的东西, 再碰到的时候明明知道以前解决过却想不起来/找不到解决的方法了. 所以能有这个地方收集平时学到的点滴, 总又一天会派上用场.

(又因为找不到合适的笔记软件, 记录Code什么的, 用网页的形式最合适不过...)

Intro就这样吧`


做个Code Highlight的演示

if(this.is.c++()){ 
    return "this should be highlighted\n" 
}