• $ cat ~/.gemrc 
    install: --no-rdoc --no-document
    update: --no-rdoc --no-document
    
  • 要看你买的 SSL 凭证是单一的 xxx.com?或是 www.xxx.com? 或是你买的是 *.xxx.com 的 wildcard 的凭证?

    前面要不要 www 都没有说一定哪一个好,只是要考量用户两种都可能访问,都要 redirect 或 rewrite 到真正服务器所在的位置。

    我都用这样的配置,将 80,443 端口设置在一起,强制都以 https 来访问:

    server {
        listen 80;
        listen 443 ssl;
        server_name www.xxx.com;
        ssl_certificate ssl/server.crt;
        ssl_certificate_key ssl/server.key;
        access_log /www.xxx.com/logs/access.log;
        error_log /www.xxx.com/logs/error.log;
        root /www.xxx.com/public;
    
        if ($ssl_protocol = "") {
          rewrite ^ https://$server_name$request_uri? permanent;
        }
    
        location / {
        # ...
        }
    }
    
  • 后来发现, 自行在 ~/.rvm/gemsets/global.gems 文档里, 在 install 之前加入 bundler 就如同往常了。

  • SSL 证书哪个好啊 at 2015年05月14日

    对我来说买 SSL 证书,主要是为了 Browser compatibility,免了浏览器东问西问地说不安全的提示。 但我搞不懂,Comodo Positive SSL 与 Comodo EssentialSSL 的差别在哪里?

  • 有没有汉语注音的 gem at 2015年05月13日

    目前好像没有这样的 gem,可能需要自行制表。 英文讲注音,通常是用 BoPoMoFo 可能需要把一个一个中文转汉语拚音,再用以下的表来转到注音。

    Pinyin  Wade-Giles  Yale    Zhuyin (Bopomofo)
    a   a   a   ㄚ
    ai  ai  ai  ㄞ
    an  an  an  ㄢ
    ang ang ang ㄤ
    ao  ao  au  ㄠ
    ba  pa  ba  ㄅㄚ
    bai pai bai ㄅㄞ
    ban pan ban ㄅㄢ
    bang    pang    bang    ㄅㄤ
    bao pao bao ㄅㄠ
    bei pei bei ㄅㄟ
    ben pen ben ㄅㄣ
    beng    peng    beng    ㄅㄥ
    bi  pi  bi  ㄅㄧ
    bian    pien    byan    ㄅㄧㄢ
    biao    piao    byau    ㄅㄧㄠ
    bie pieh    bye ㄅㄧㄝ
    bin pin bin ㄅㄧㄣ
    bing    ping    bing    ㄅㄧㄥ
    bo  po  bwo ㄅㄛ
    bu  pu  bu  ㄅㄨ
    ca  ts`a    tsa ㄘㄚ
    cai ts`ai   tsai    ㄘㄞ
    can ts`an   tsan    ㄘㄢ
    cang    ts`ang  tsang   ㄘㄤ
    cao ts`ao   tsau    ㄘㄠ
    ce  ts`e    tse ㄘㄜ
    cen ts`en   tsen    ㄘㄣ
    ceng    ts`eng  tseng   ㄘㄥ
    cha ch`a    cha ㄔㄚ
    chai    ch`ai   chai    ㄔㄞ
    chan    ch`an   chan    ㄔㄢ
    chang   ch`ang  chang   ㄔㄤ
    chao    ch`ao   chau    ㄔㄠ
    che ch`e    che ㄔㄜ
    chen    ch`en   chen    ㄔㄣ
    cheng   ch`eng  cheng   ㄔㄥ
    chi ch`ih   chr ㄔ
    chong   ch`ung  chung   ㄔㄨㄥ
    chou    ch`ou   chou    ㄔㄡ
    chu ch`u    chu ㄔㄨ
    chua    chua    chwa    ㄔㄨㄚ
    chuai   ch`uai  chwai   ㄔㄨㄞ
    chuan   ch`uan  chwan   ㄔㄨㄢ
    chuang  ch`uang chwang  ㄔㄨㄤ
    chui    ch`ui   chwei   ㄔㄨㄟ
    chun    ch`un   chwun   ㄔㄨㄣ
    chuo    ch`o    chwo    ㄔㄨㄛ
    ci  tz`u    tsz ㄘ
    cong    ts`ung  tsung   ㄘㄨㄥ
    cou ts`ou   tsou    ㄘㄡ
    cu  ts`u    tsu ㄘㄨ
    cuan    ts`uan  tsuan   ㄘㄨㄢ
    cui ts`ui   tsui    ㄘㄨㄟ
    cun ts`un   tsun    ㄘㄨㄣ
    cuo ts`o    tso ㄘㄨㄛ
    da  ta  da  ㄉㄚ
    dai tai dai ㄉㄞ
    dan tan dan ㄉㄢ
    dang    tang    dang    ㄉㄤ
    dao tao dao ㄉㄠ
    de  te  de  ㄉㄜ
    deng    teng    deng    ㄉㄥ
    di  ti  di  ㄉㄧ
    dian    tien    dyan    ㄉㄧㄢ
    diang   tiang   dyang   ㄉㄧㄤ
    diao    tiao    dyau    ㄉㄧㄠ
    die tieh    dye ㄉㄧㄝ
    ding    ting    ding    ㄉㄧㄥ
    diu tiu dyou    ㄉㄧㄡ
    dong    tung    dung    ㄉㄨㄥ
    dou tou dou ㄉㄡ
    du  tu  du  ㄉㄨ
    duan    tuan    dwan    ㄉㄨㄢ
    dui tui dwei    ㄉㄨㄟ
    dun tun dwun    ㄉㄨㄣ
    duo to  dwo ㄉㄨㄛ
    e   o   e   ㄜ
    ei  ei  ei  ㄟ
    en  en  en  ㄣ
    er  erh er  ㄦ
    fa  fa  fa  ㄈㄚ
    fan fan fan ㄈㄢ
    fang    fang    fang    ㄈㄤ
    fei fei fei ㄈㄟ
    fen fen fen ㄈㄣ
    feng    feng    feng    ㄈㄥ
    fo  fo  fwo ㄈㄛ
    fou fou fou ㄈㄡ
    fu  fu  fu  ㄈㄨ
    ga  ka  ga  ㄍㄚ
    gai kai gai ㄍㄞ
    gan kan gan ㄍㄢ
    gang    kang    gang    ㄍㄤ
    gao kao gau ㄍㄠ
    ge  ko  ge  ㄍㄜ
    gei kei gei ㄍㄟ
    gen ken gen ㄍㄣ
    geng    keng    geng    ㄍㄥ
    gong    kung    gung    ㄍㄨㄥ
    gou kou gou ㄍㄡ
    gu  ku  gu  ㄍㄨ
    gua kua gwa ㄍㄨㄚ
    guai    kuai    gwai    ㄍㄨㄞ
    guan    kuan    gwan    ㄍㄨㄢ
    guang   kuang   gwang   ㄍㄨㄤ
    gui kuei    gwei    ㄍㄨㄟ
    gun kun gwun    ㄍㄨㄣ
    guo kuo gwo ㄍㄨㄛ
    ha  ha  ha  ㄏㄚ
    hai hai hai ㄏㄞ
    han han han ㄏㄢ
    hang    hang    hang    ㄏㄤ
    hao hao hau ㄏㄠ
    he  ho  he  ㄏㄜ
    hei hei hei ㄏㄟ
    hen hen hen ㄏㄣ
    heng    heng    heng    ㄏㄥ
    hong    hung    hung    ㄏㄨㄥ
    hou hou hou ㄏㄡ
    hu  hu  hu  ㄏㄨ
    hua hua hwa ㄏㄨㄚ
    huai    huai    hwai    ㄏㄨㄞ
    huan    huan    hwan    ㄏㄨㄢ
    huang   huang   hwang   ㄏㄨㄤ
    hui hui hwei    ㄏㄨㄟ
    hun hun hwun    ㄏㄨㄣ
    huo huo hwo ㄏㄨㄛ
    ji  chi ji  ㄐㄧ
    jia chia    jya ㄐㄧㄚ
    jian    chien   jyan    ㄐㄧㄢ
    jiang   chiang  jyang   ㄐㄧㄤ
    jiao    chiao   jyau    ㄐㄧㄠ
    jie chieh   jye ㄐㄧㄝ
    jin chin    jin ㄐㄧㄣ
    jing    ching   jing    ㄐㄧㄥ
    jiong   chiung  jyung   ㄐㄩㄥ
    jiu chiu    jyu ㄐㄧㄡ
    ju  chü    chü    ㄐㄩ
    juan    chüan  jywan   ㄐㄩㄢ
    jue chüeh  jywe    ㄐㄩㄝ
    jun chün   jyun    ㄐㄩㄣ
    ka  k`a ka  ㄎㄚ
    kai k`ai    kai ㄎㄞ
    kan k`an    kan ㄎㄢ
    kang    k`ang   kang    ㄎㄤ
    kao k`ao    kau ㄎㄠ
    ke  k`o ke  ㄎㄜ
    ken k`en    ken ㄎㄣ
    keng    k`eng   keng    ㄎㄥ
    kong    k`ung   kung    ㄎㄨㄥ
    kou k`ou    kou ㄎㄡ
    ku  k`u ku  ㄎㄨ
    kua k`ua    kwa ㄎㄨㄚ
    kuai    k`uai   kwai    ㄎㄨㄞ
    kuan    k`uan   kwan    ㄎㄨㄢ
    kuang   k`uang  kwang   ㄎㄨㄤ
    kui k`uei   kwei    ㄎㄨㄟ
    kun k`un    kwun    ㄎㄨㄣ
    kuo k`uo    kwo ㄎㄨㄛ
    la  la  la  ㄌㄚ
    lai lai lai ㄌㄞ
    lan lan lan ㄌㄢ
    lang    lang    lang    ㄌㄤ
    lao lao lau ㄌㄠ
    le  le  le  ㄌㄜ
    lei lei lei ㄌㄟ
    leng    leng    leng    ㄌㄥ
    li  li  li  ㄌㄧ
    lian    lien    lien    ㄌㄧㄢ
    liang   liang   liang   ㄌㄧㄤ
    liao    liao    liao    ㄌㄧㄠ
    lie lieh    lieh    ㄌㄧㄝ
    lin lin lin ㄌㄧㄣ
    ling    ling    ling    ㄌㄧㄥ
    liu liu liu ㄌㄧㄡ
    long    lung    lung    ㄌㄨㄥ
    lou lou lou ㄌㄡ
    lu  lu  lu  ㄌㄨ
    lü lü lü ㄌㄩ
    luan    luan    luan    ㄌㄨㄢ
    lüe    lüeh   lüeh   ㄌㄩㄝ
    lun lun lun ㄌㄨㄣ
    luo lo  lo  ㄌㄨㄛ
    ma  ma  ma  ㄇㄚ
    mai mai mai ㄇㄞ
    man man man ㄇㄢ
    mang    mang    mang    ㄇㄤ
    mao mao mau ㄇㄠ
    mei mei mei ㄇㄟ
    men men men ㄇㄣ
    meng    meng    meng    ㄇㄥ
    mi  mi  mi  ㄇㄧ
    mian    mien    myan    ㄇㄧㄢ
    miao    miao    miau    ㄇㄧㄠ
    mie mieh    mye ㄇㄧㄝ
    min min min ㄇㄧㄣ
    ming    ming    ming    ㄇㄧㄥ
    miu miu myou    ㄇㄧㄡ
    mo  mo  mwo ㄇㄨㄛ
    mou mou mou ㄇㄡ
    mu  mu  mu  ㄇㄨ
    na  na  na  ㄋㄚ
    nai nai nai ㄋㄞ
    nan nan nan ㄋㄢ
    nang    nang    nang    ㄋㄤ
    nao nao nau ㄋㄠ
    ne  ne  ne  ㄋㄛ
    nei nei nei ㄋㄟ
    nen nen nen ㄋㄣ
    neng    neng    neng    ㄋㄥ
    ni  ni  ni  ㄋㄧ
    nia nia nya ㄋㄧㄚ
    nian    nien    nyan    ㄋㄧㄢ
    niang   niang   nyang   ㄋㄧㄤ
    niao    niao    nyau    ㄋㄧㄠ
    nie nie nye ㄋㄧㄝ
    nin nin nin ㄋㄧㄣ
    ning    ning    ning    ㄋㄧㄥ
    niu niu nyou    ㄋㄧㄡ
    nong    nung    nung    ㄋㄨㄥ
    nou nou nou ㄋㄡ
    nu  nu  nu  ㄋㄨ
    nü nü nyu ㄋㄩ
    nuan    nuan    nwan    ㄋㄨㄢ
    nüe    nüeh   nywe    ㄋㄩㄝ
    nuo no  no  ㄋㄨㄛ
    nun nuen    nwen    ㄋㄨㄣ
    ou  ou  ou  ㄡ
    pa  p`a pa  ㄆㄚ
    pai p`ai    pai ㄆㄞ
    pan p`an    pan ㄆㄢ
    pang    p`ang   pang    ㄆㄤ
    pao p`ao    pau ㄆㄠ
    pei p`ei    pei ㄆㄟ
    pen p`en    pen ㄆㄣ
    peng    p`eng   peng    ㄆㄥ
    pi  p`i pi  ㄆㄧ
    pian    p`ien   pyan    ㄆㄧㄢ
    piao    p`iao   pyau    ㄆㄧㄠ
    pie p`ieh   pye ㄆㄧㄝ
    pin p`in    pin ㄆㄧㄣ
    ping    p`ing   ping    ㄆㄧㄥ
    po  p`o pwo ㄆㄨㄛ
    pou p`ou    pou ㄆㄡ
    pu  p`u pu  ㄆㄨ
    qi  ch`i    chi ㄑㄧ
    qia ch`ia   chya    ㄑㄧㄚ
    qian    ch`ien  chyan   ㄑㄧㄢ
    qiang   ch`iang chyang  ㄑㄧㄤ
    qiao    ch`iao  chyau   ㄑㄧㄠ
    qie ch`ieh  chye    ㄑㄧㄝ
    qin ch`in   chin    ㄑㄧㄣ
    qing    ch`ing  ching   ㄑㄧㄥ
    qiong   ch`iung chyung  ㄑㄩㄥ
    qiu ch`iu   chyou   ㄑㄧㄡ
    qu  ch`ü   chyu    ㄑㄩ
    quan    ch`üan chywan  ㄑㄩㄢ
    que ch`üeh chyweh  ㄑㄩㄝ
    qun ch`ün  chyun   ㄑㄩㄣ
    ran jan ran ㄖㄢ
    rang    jang    rang    ㄖㄤ
    rao jao rau ㄖㄠ
    re  je  re  ㄖㄜ
    ren jen ren ㄖㄣ
    reng    jeng    reng    ㄖㄥ
    ri  jih r   ㄖ
    rong    jung    rung    ㄖㄨㄥ
    rou jou rou ㄖㄡ
    ru  ju  ru  ㄖㄨ
    ruan    juan    rwan    ㄖㄨㄢ
    rui jui rwei    ㄖㄨㄟ
    run jun rwun    ㄖㄨㄣ
    ruo jo  rwo ㄖㄨㄛ
    sa  sa  sa  ㄙㄚ
    sai sai sai ㄙㄞ
    san san san ㄙㄢ
    sang    sang    sang    ㄙㄤ
    sao sao sau ㄙㄠ
    se  se  se  ㄙㄜ
    sei sei sei ㄙㄟ
    sen sen sen ㄙㄣ
    seng    seng    seng    ㄙㄥ
    sha sha sha ㄕㄚ
    shai    shai    shai    ㄕㄞ
    shan    shan    shan    ㄕㄢ
    shang   shang   shang   ㄕㄤ
    shao    shao    shau    ㄕㄠ
    she she she ㄕㄜ
    shei    shei    shei    ㄕㄟ
    shen    shen    shen    ㄕㄣ
    sheng   sheng   sheng   ㄕㄥ
    shi shih    shr ㄕ
    shong   shung   shung   ㄕㄡㄥ
    shou    shou    shou    ㄕㄡ
    shu shu shu ㄕㄨ
    shua    shua    shwa    ㄕㄨㄚ
    shuai   shuai   shwai   ㄕㄨㄞ
    shuan   shuan   shwan   ㄕㄨㄢ
    shuang  shuang  shwang  ㄕㄨㄤ
    shui    shui    shwei   ㄕㄨㄟ
    shun    shun    shwun   ㄕㄨㄣ
    shuo    shuo    shwo    ㄕㄨㄛ
    si  ssu sz  ㄙ
    song    sung    sung    ㄙㄨㄥ
    sou sou sou ㄙㄡ
    su  su  su  ㄙㄨ
    suan    suan    swan    ㄙㄨㄢ
    sui sui swei    ㄙㄨㄟ
    sun sun swun    ㄙㄨㄣ
    suo so  swo ㄙㄨㄛ
    ta  t`a ta  ㄊㄚ
    tai t`ai    tai ㄊㄞ
    tan t`an    tan ㄊㄢ
    tang    t`ang   tang    ㄊㄤ
    tao t`ao    tau ㄊㄠ
    te  t`e te  ㄊㄜ
    teng    t`eng   teng    ㄊㄥ
    ti  t`i ti  ㄊㄧ
    tian    t`ien   tyan    ㄊㄧㄢ
    tiao    t`iao   tyau    ㄊㄧㄠ
    tie t`ieh   tye ㄊㄧㄝ
    ting    t`ing   ting    ㄊㄧㄥ
    tong    t`ung   tung    ㄊㄨㄥ
    tou t`ou    tou ㄊㄡ
    tu  t`u tu  ㄊㄨ
    tuan    t`uan   twan    ㄊㄨㄢ
    tui t`ui    twei    ㄊㄨㄟ
    tun t`un    twun    ㄊㄨㄣ
    tuo t`o two ㄊㄨㄛ
    wa  wa  wa  ㄨㄚ
    wai wai wai ㄨㄞ
    wan wan wan ㄨㄢ
    wang    wang    wang    ㄨㄤ
    wei wei wei ㄨㄟ
    wen wen wen ㄨㄣ
    weng    weng    weng    ㄨㄥ
    wo  wo  wo  ㄨㄛ
    wu  wu  wu  ㄨ
    xi  hsi syi ㄒㄧ
    xia hsia    syia    ㄒㄧㄚ
    xian    hsien   syan    ㄒㄧㄢ
    xiang   hsiang  syang   ㄒㄧㄤ
    xiao    hsiao   syau    ㄒㄧㄠ
    xie hsieh   sywe    ㄒㄧㄝ
    xin hsin    syin    ㄒㄧㄣ
    xing    hsing   sying   ㄒㄧㄥ
    xiong   hsiung  syung   ㄒㄩㄥ
    xiu hsiu    syu ㄒㄧㄡ
    xu  hsü    syü    ㄒㄩ
    xuan    hsüan  sywan   ㄒㄩㄢ
    xue hsüeh  sywe    ㄒㄩㄝ
    xun hsün   syun    ㄒㄩㄣ
    ya  ya  ya  ㄧㄚ
    yai yai yai ㄧㄞ
    yan yen yan ㄧㄢ
    yang    yang    yang    ㄧㄤ
    yao yao yau ㄧㄠ
    ye  yeh ye  ㄧㄝ
    yi  i   yi  ㄧ
    yin yin yin ㄧㄣ
    ying    ying    ying    ㄧㄥ
    yo  yo  yo  ㄧㄛ
    yong    yung    yung    ㄩㄥ
    you yu  you ㄧㄡ
    yu  yü yü ㄩ
    yuan    yüan   ywan    ㄩㄢ
    yue yüeh   ywe ㄩㄝ
    yun yün    yün    ㄩㄣ
    za  tsa dza ㄗㄚ
    zai tsai    dzai    ㄗㄞ
    zan tsan    dzan    ㄗㄢ
    zang    tsang   dzang   ㄗㄤ
    zao tsao    dzau    ㄗㄠ
    ze  tse dze ㄗㄜ
    zei tsei    dzei    ㄗㄟ
    zen tsen    dzen    ㄗㄣ
    zeng    tseng   dzeng   ㄗㄥ
    zha cha ja  ㄓㄚ
    zhai    chai    jai ㄓㄞ
    zhan    chan    jan ㄓㄢ
    zhang   chang   jang    ㄓㄤ
    zhao    chao    jau ㄓㄠ
    zhe che je  ㄓㄜ
    zhei    chei    jei ㄓㄟ
    zhen    chen    jen ㄓㄣ
    zheng   cheng   jeng    ㄓㄥ
    zhi chih    jr  ㄓ
    zhong   chung   jung    ㄓㄨㄥ
    zhou    chou    jou ㄓㄡ
    zhu chu ju  ㄓㄨ
    zhua    chua    jwa ㄓㄨㄚ
    zhuai   chuai   jwai    ㄓㄨㄞ
    zhuan   chuan   jwan    ㄓㄨㄢ
    zhuang  chuang  jwang   ㄓㄨㄤ
    zhui    chui    jwei    ㄓㄨㄟ
    zhun    chun    jwun    ㄓㄨㄣ
    zhuo    cho jwo ㄓㄨㄛ
    zi  tzu dz  ㄗ
    zong    tsung   dzung   ㄗㄨㄥ
    zou tsou    dzou    ㄗㄡ
    zu  tsu dzu ㄗㄨ
    zuan    tsuan   dzwan   ㄗㄨㄢ
    zui tsui    dzwei   ㄗㄨㄟ
    zun tsun    dzwun   ㄗㄨㄣ
    zuo tso dzwo    ㄗㄨㄛ
    

    竟然发现有这个现成的 gem: https://github.com/plexus/ting 可以转换不同的系统。

  • SSL 证书哪个好啊 at 2015年05月13日

    实在搞不懂。rapidSSL 官方网站,SSL 证书 1 年 49、wildcard 一年 199,而 name.com 卖 rapidSSL 却一年 9.99, 129.99;怎么能卖到这么多的差价?

  • 如果已有其他编程的框架经验,从包了太多议题的 RoR 入手,应没问题。 若没有其他的框架经验,从 Sinatra 入手比 RoR 更容易搞清楚怎么把简单的几乎空框架, 搞到像 RoR 那样的宠大。 就看你要由繁入简,或者由简入繁。

  • 面向对象设计问题 at 2014年06月14日

    #12 楼 @blacktulip 估计真正要的不会是那么单纯重覆印出 a 而已。

  • 面向对象设计问题 at 2014年06月13日

    #6 楼 @2033391318 随便找到的现成例子:

    require 'rubygems'
    require 'eventmachine'
    
    EventMachine.run {
      EventMachine.add_periodic_timer(2) {
        puts "a"
      }
    }
    
  • 最早是看 15 分钟建立一个博客的视屏,这种眼见为凭的示范,才会决定学 RoR,进而学 Ruby。 虽然严格说视屏不算是书,没看视屏的演示,多么基础的书,或者空口说 ruby 有多好多好,不见得有动力读下去。 会照本宣科地用 scaffolding 之后,才会想拆解想要的细部修改或动作该怎么进行,在还没有那么多 ruby 书的时候,也只能在网上看别人的学习记录来揣测。现在有太大量的资料可读可学,是否能够第一步能让人有动力动机能从入门持续下去,可能就因人而异。 why the lucky stiff 的 Guide to Ruby 是最奇特的 ruby 指引书,只会惊奇这种创意来导引认识 ruby,却也不曾仔细全篇读过。

  • Sidekiq 精通 36 分钟 at 2014年06月12日

    原来是用 resque 及 resque-scheduler。有此篇介绍,方便快速入手。

  • 通常这与操作系统的分割规画有关。如果整个硬盘只有一块,放何处是无所谓。讲究的分割,是会把/var,/,/home,/boot 挂在不同分割。硬盘不大时,若不分割,要是 log 塞满了/, 系统就 GG 了,而有把/var 与/挂在不同分割区;万一/var 被塞满,系统最多是无法 log,或者一些需要用到/var 空间的服务无法运作,但还是可以进系统去处理。

    web 会有程式及 log,理想的作法是把 log 或会变动的暂存资料放在 /var;而程式相关文档放在其他地方。但我自己用的服务器,就我一人用,所跑的好几个 name-based hosts 都放在 /home/SITES/{site1,site2..} ,虽然用 archlinux + nginx 跑,但觉得 ubuntu 把各 virtual hosts 的各设定档放在 /etc/nginx/sites-available,再sybol link 到 sites-enabled 这种管理方式不错,也仿此方式来设定。

    如果服务器是多人使用环境,又不想一个一个设,大概可以要求各用户将其各 virtual host 放置在 ~/myhosts/host{1,2,3}.example.com/htdocs。系统管理者在/var/www 里放 /home/{user}/myhosts 的 symbol link,nginx 只要这种最懒惰的设定就可运行:

    listen 80;
        server_name _;
        access_log      /var/log/nginx/$host.access_log main;
        error_log      /var/log/nginx/$host.access_log info;
        root /var/www/$host/htdocs;
    

    用户要设几个 virtual hosts 也不用麻烦到管理者。但要管得真的没有问题,还是需要一个一个或 regular expression 的方式来设定。 在 update 所提的,可参考这种设法:

    server {
        server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[^.]+)$;
        if ($subdomain = "") {
            set $subdomain "_";
        }
        location / {
            index index.html;
            root /srv/http/vhost/${domain}.${tld}/${subdomain};
        }
    }
    

    from: Name-based virtual hosting with Nginx

  • #22 楼 @zealinux 一个月前有篇讨论 Ask HN: What source code is worth studying? 汇集哪些源代码值得阅读。几乎被忘掉了的 merb 竟然是被推荐阅读。

  • 我也有疑惑的是,重构、设计模式、元编程 之间好像是可以让源码简洁、减少重覆、易于维护扩充的法门;不知这三者的学习顺序为何?

  • 最近有篇文认为可延展扩充功能的编辑器才是理想的: Inside the Guardian’s CMS: meet Scribe, an extensible rich text editor 刚开始找方案的时候,什么功能都有的方案都会用得很高兴, 但用一阵子后,发现很多功能不见得需要,或需要调整成符自己的需求, 要把原有的方案拆开来用很麻烦, 转而寻求轻巧的方案,再自行加自己要的功能。 这样子的历程,在 OS 上从 fedora 转成 archlinux, 在网页框架上从 RoR 转为 Sinatra; 在线 HTML 编辑器的选择原来也会有此历程。

  • 求 Thin 的配置 at 2014年05月31日
    1. 放个文档到 public 测试静态网页是否有同样情形?
    2. 看 thin 的 log,会有每次每笔访问所完成的时间。
    3. 也许是网络或域名的问题,试试在自己的本机的 hosts 上加入该网址的 IP,不透过 DNS 查 IP 的方式看看。
    4. 如果不是 DNS 问题,从 VPS 上 curl 自己的网址看看。
    5. 部署到 Koding 测试看看是否同样的情形?(有 16G 的内存)
  • 第三个没出来,改成这样子:

    require "nokogiri"
    doc = Nokogiri::XML(open('./raw.txt'))
    index = 0
    doc.xpath('//section').each do |section|
      name = section.attributes['name']
      section.search('title').each do |title|
        index+=1
        puts "#{index} #{name} #{title.text}"
      end
    end
    
  • 在命令行测试出的作法:

    $ irb -rnokogiri
    >> doc = Nokogiri::XML(open('./raw.xml'))
    => ...
    >> doc.xpath('//section').each_with_index{|x,i| puts "#{i+1} #{x.attributes['name']} #{x.at('title').text}"}
    1 Ruby The Ruby Way
    2 Space The Case for Mars
    => ...
    
  • 中国早就有这观念了: 格物致知 所以 hacker 的理念源自于中国。 只是方向有点不一样。

  • 应不是 resque 的问题,而是 Job 里用 encode 的问题,与你同样的问题在此可看到: http://stackoverflow.com/questions/13003287/encodingundefinedconversionerror 或者把你 Job 的码做成單独的文档从命令行测试,类似像 ruby job.rb filename,就可知道是 Job 的问题或 resque 的问题。

  • 个人网站习作 What did I do at 2014年05月13日

    版面很简洁,就是成功的一半了。 若能再区分所写的项目,是公开或隐私,更切所需。 而 event[desc] 这里若能用 markdown 更好些。 当个人项目量多的时候,需要有分页、tag、查询之功能也会成为需要。

  • nginx 无法停止 at 2014年05月04日

    不是那么旧的 linux 都应可 pkill nginx

  • Racket 也许是不错的选择, 透过 HW A Haskell Programmer Tries to Learn Racket 看到这篇: Learning Racket: Introduction ,似乎是不错的入门开始。

  • 几天前在 Toward a better programming, 才知道有 Light Table 这编辑器, 最近新的或少为所知的编辑器好像冒出来好多种。

  • 把问题放一边几个小时睡醒后, 把自己的 ~/.rvm/gems/ruby-2.1.1/gems/guard-livereload-2.1.2/lib/guard/livereload/websocket.rb 的 35 到 36 行之间加入

    when '.html' then 'text/html'
    

    这样子访问 http://localhost:35729/index.html 就不会只出现 HTML 原始码了。

    而另个问题,在家里电脑装 chromium 的 livereload 扩展程序时, 才发现扩展程序栏里的 livereload 有个“允许访问文件网址”的项目, 打勾后 file:///home/user/Project/index.html 的网址 LiveReload 也能生效了。

    只是不晓得为何这好像是显而易见的问题, 却不将 text/html 加到 case 的条件里? 强行加入那一行之后,是否日后会有什么副作用?

  • 这一份 2009 年网路上有关 ruby 与 rails 与 sinatra 的简报: http://www.slideshare.net/adamwiggins/rails-metal-rack-and-sinatra 简报档里的一些列出的 gems 是 2009 那时才有的, 有更多新 gems 的出来可以想像该填在哪些位置。 其中可以比较了解 rails 与 ruby 之间的关系。 简言之,ruby 世界好多的网站框架是多以 rack 为核心, 透过 rack 及许多的 gems 可以组合成所要的框架 而 rails 是把好多元件事先包好 而 sinatra 本身只是 web layer 层, 再加上内建 erb 为预设的 template。 如果试试 gem install sinatra 及 gem install rails 两个所会安装的 gems 数量,差别很多。 检视自己所要做的网站功能不复杂, 结果会发现用 rails 算是杀鸡用牛刀。 而 sinatra 很够用,看要还哪些来组合。 就看是先装好一堆包好的东西, 然后慢慢地改换成不同元件? 还是先装个简单够用, 再慢慢加所需要的元件? 以前 sinatra 号称一个档案就可跑个网站是没错, 但功能愈多后,一个档案的方式并不好维护, 由于大家习惯了 MVC 的好处, 比较能看到模仿 rails 的写法: http://www.sitepoint.com/build-a-sinatra-mvc-framework/ 才有点认识 rails 是怎么组合运作的。

    如果会有前端后端开发的区分, sinatra 可能比 rails 来做后端的 API 会更轻巧而适合。

    有很多语言的框架就是受 sinatra 所启发: http://en.wikipedia.org/wiki/Sinatra_%28software%29#Frameworks_inspired_by_Sinatra 已用过 rails 的经验,对 sinatra 入手应比 express 会更快进入状况。

  • markdown.rb 的中文转化乱码 at 2014年03月29日

    乱猜一下: 试试把 100 到 102 行 关起来,

    #link_mention_floor(doc)
    #link_mention_user(doc, users)
    #replace_emoji(doc)
    

    看是不是就不会有乱码,然后再一个一个打开看是哪个方法是哪个造成。 如果都还是会有乱码,那就可能是 99 行 nokogiri 造成的, doc = Nokogiri::HTML.fragment(result) 以前曾经透过比较旧 Nokogiri 的版本,中文会有乱码的问题。

  • 利用 @mojidong 所推介, 抄了 rmmseg-cpp 上的范例来替换成

    require "rmmseg"
    RMMSeg::Dictionary.load_dictionaries
    class Book < Struct.new(:title)
      def words
        @words ||= split(title).select{|x| x.size > 3}
      end
    
      private
      def split(text)
        arr = []
        algor = RMMSeg::Algorithm.new(text)
        loop do
          tok = algor.next_token
          break if tok.nil?
          arr << tok.text
        end
        arr
      end
    end
    

    就可应用到中文书名。 另外,我实在不知道,该何处找 @ytwman 所讲的中文词库, 好在在 rmmseg-cpp 里有现成的字档及词档。 不知道一般中文词库,该到哪边可以载下来?

  • 如果中文书名该怎么处理好?如果只是用 "中国文化史".split('') ["中", "国", "文", "化", "史"] 不晓得就中文而言,怎么来分词而不是分字? 而在用到这个 jaccard 上?