$ 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 证书,主要是为了 Browser compatibility,免了浏览器东问西问地说不安全的提示。 但我搞不懂,Comodo Positive SSL 与 Comodo EssentialSSL 的差别在哪里?
目前好像没有这样的 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 可以转换不同的系统。
实在搞不懂。rapidSSL 官方网站,SSL 证书 1 年 49、wildcard 一年 199,而 name.com 卖 rapidSSL 却一年 9.99, 129.99;怎么能卖到这么多的差价?
如果已有其他编程的框架经验,从包了太多议题的 RoR 入手,应没问题。 若没有其他的框架经验,从 Sinatra 入手比 RoR 更容易搞清楚怎么把简单的几乎空框架, 搞到像 RoR 那样的宠大。 就看你要由繁入简,或者由简入繁。
#12 楼 @blacktulip 估计真正要的不会是那么单纯重覆印出 a 而已。
#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,却也不曾仔细全篇读过。
原来是用 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};
}
}
#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 编辑器的选择原来也会有此历程。
第三个没出来,改成这样子:
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 的问题。
版面很简洁,就是成功的一半了。 若能再区分所写的项目,是公开或隐私,更切所需。 而 event[desc] 这里若能用 markdown 更好些。 当个人项目量多的时候,需要有分页、tag、查询之功能也会成为需要。
不是那么旧的 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 会更快进入状况。
乱猜一下: 试试把 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 上?