Mar 22, 2013

Blog代码重构

好长时间没有写blog了,Blog代码还是用3.1x来写的,一直想把功能写得完善一点,弄一个友好一点的后台管理面板。上周VPS也到期了,索性就关了把代码重构了。

重构也很简单,就一个发文章的功能,支持Markdown格式,简单的后台管理,评论想考虑一下使用第三方服务(之前自己写了一个简单的发评论功能 垃圾评论太多),把原数据导过来,想想Rails真方便,弄了个Scaffold搞定Post功能,权限管理使用sorcery,这些都太过简单,没什么好说的,目前还没加缓存,SEO什么的,以后有空再搞。

关于Markdown功能我想做得特别一点。一直喜欢用罗晨写的Mou,有时候记不住Markdown的语法,Mou边写边预览的效果很友好。

我也希望在后台做一个类似Mou的功能,最开始考虑是这样实现,通过ajax把Markdown内容传到后台,然后用”github-markdown/redcarpet”(最后还是用了标准的redcarpet 这个世界不应该这么纠结)解析好然后刷新到预览区,不过这个预览的效果需要很实时,如果网络不给力,那就失去了这个功能的意义。想到的办法是用JavaScript去解析Markdown,直接在浏览器端来实现这个功能,效果就像http://stackoverflow.com/回复的功能一样

找到了两个JavaScript lib:

  1. https://github.com/ujifgc/pagedown

  2. https://github.com/tanakahisateru/js-markdown-extra

测试下来pagedown不能解析Markdown的table标记,然后用js-markdown-extra做好了预览效果,对表格支持也很好,然后跟Mou做测试,效果真的很好,不过后来发现一个很严重的问题时,js-markdown-extra在解析某些中文段络时,Chrome经常卡死,不知道什么原因,近三千行的代码我也没精力去分析它,还是临时先用pagedown的Markdown.Converter.js来实现了,何况也很少在blog里用到表格。

目前还没有加上传图片功能,等做好了上张这个功能的效果图!欧了,就写这么多,比较懒了,省点时间去折腾Raspberry Pi

最后附上代码地址 https://github.com/miclle/forest-chalet

Mar 12, 2012

分拆routes.rb

  • ruby
  • rails
  • routes
  • config

项目需要给移动平台提供API,在routes.rb中已经配置了很多resources,如果再加入API的resources会使得routes.rb变得非常庞大,不利于管理,解决办法当然是希望能将API的resources写到另一个文件中去,如:mobile_routes.rb。 rails提供了相当方便的扩展,你可以这样实现:在application.rb中加入:config.paths[“config/routes”] += Dir[Rails.root.join(“config/routes/*.rb”)]在config中创建routes文件夹,将mobile_routes.rb放到routes文件夹下即可,rails会自动将routes文件夹下的文件加载。

mobile_routes.rb文件的写法与routes.rb文件一样!

Mar 4, 2012

骑行,山地车骑行的基本技巧总结(转载)

  • 骑行

一、自行车基本骑行技巧

(一)姿势

正确的骑车姿势是:上体较低,头部稍倾斜前伸;双臂自然弯屈,便于腰部弓屈,降低身体重心,同时防止由于车子颠簸而产生的冲击力传到全身;双手轻而有力地握把,臀部坐稳车座。

(二)踏蹬  

自行车运动的踏蹬方法有自由式、脚尖朝下和脚跟朝下式三种。

1、自由式踏蹬方法:目前,一些优秀运动员大都采用自由式踏蹬方法。这种踏蹬方法,就是脚在旋转一周的过程中,根据部位不同,踝关节角度也随着发生变化。自由式踏蹬,符合力学原理,用力的方向与脚蹬旋转时所形成的圆周切线相一致,减少了膝关节和大腿动作幅度,有利于提高踏蹬频率,自然地通过临界区,减少死点。大腿肌肉也能得到相对的放松。但这种踏蹬方法较难掌握。

2、脚尖朝下踏蹬法:其踏蹬特点是,在整个踏蹬旋转过程中脚尖始终是向下,这种方法踝关节活动范围较小,有利于提高频率,容易掌握,但腿部肌肉始终处于紧张状态,不利于自然通过临界区。

3、脚跟朝下式踏蹬法:脚跟朝下式踏蹬方法是脚尖稍向上,脚跟向下8~15度,这种方法在正常骑行中很少使用,只是少数人在骑行过程中作过度性调剂用力时才使用脚跟朝下式踏蹬方法。它的特点是肌肉在短时间内改变用力状态,得到暂短休息,达到恢复肌肉疲劳的目的。二、转弯技巧 

 

 (一)倾斜法:车体为一线,往弯内倾斜。

1、身体重心基于车上往弯内倾斜,人车保持同样的倾斜角度。

2、伸直外侧的膝盖并且下意识的加点力度,就好象你要把脚踏踩下来似的(不过如果你真地把它踩下来的话可别找我们)。

3、用内侧的膝盖顶着横梁,这是一个调节你的轨迹的好方法,减少压力就可以缩小弯度。

4、外侧的手稍稍拉起车把。

运用倾斜的两个好时机:

可以利用不太急的转弯处(少于45度)加速

可以清楚看到前方但不熟悉的弯处

湿沥青路上,倾斜的两个缺陷:

在雨天,尽管这种转弯技巧能给你一个很好的牵引力,但是它的角度和重量的分配、安排不太利于湿滑路面;倾斜技巧没有相应的扭转来得灵敏。(二)把向法:车子保持直立些,身体往弯内倾斜。

1、向前挪动,直至鼻子和刹车把成一行。

2、保持车子直立,身体往弯内倾斜(足以让外侧的手臂伸直)

3、把车把往弯内一侧歪。

4、弯曲内侧手臂的手肘把车把拉回,同时外侧手臂把车把推出以转动车把方向。

5、保持两边膝盖内扣,继续蹬踏。 三、自行车上下坡骑行技术

上、下坡骑行技术是公路自行车的一种重要的基本技术。

(一)上坡骑行技术

上坡骑行要保持正常的踏蹬动作,不可突然用力,一般情况下,不宜采用站立式骑行或提拉式骑行方法,否则会过多地消耗体力。遇到短距离坡路,应充分利用物体运动的惯性原理,轻松地踏蹬,快到坡顶时可采用站立式骑行,把速度尽可能提高,给下坡加速创造有利条件。遇到漫长的上坡,要根据自己的体力状况及时调整传动比,不要等到骑不动和速度完全降下来时才改变传动比,要坚决避免重新起动的现象出现。坡路较长或有陡坡时,可交替使用站立式骑行方法,调剂用力部位,让部分肌肉得到休息。

上坡时跟车不要太近。由于上坡用力的原因,行车常常左右摆动,跟车过近,可能发生碰撞。再者,上坡时速度显着下降,跟车反而会使自己的骑行方法受到限制。(二)下坡骑行技术

下坡骑行要达到理想效果,就要勇敢机智,胆大心细,精力集中,两眼密切注视前方路面,随时准备果断处理路面上出现的任何情况;不仅要充分利用车子运动惯性滑行,而且要敢于主动踏蹬,加大速度。

转弯时,身体和车子要保持一致,向里倾斜,上体和车子保持一条直线,以克服离心力。倾斜角度根据速度和弯道大小而定,但一般不得超过28度,否则就有滑倒的危险。

转弯前要控制车速。用点闸的方法逐渐减速,刹车时,尽可能前后闸同时使用,前闸可稍稍提前,使用前闸,要求前轮的方向和车子前进的方向相一致,否则,会因骑行者的体重和车子惯性受到限制而导致摔跤。进入弯道后将闸放开,以免造成不必要的减速。弯道上使用后闸不要过猛。否则车子可能掉头或滑倒。 四、刹车的技巧前刹车能提供你非常好的制动力,但是也可以让你变成空中飞人,下面我们告诉你如何刹车。 (一)使用前刹车的时候将重心往后移

当你使用前刹的时候,你的重心会因为惯性而自然前移,你必须练习当你开始刹车时,有意识地将你的重心向后 移动(身体放低,屁股往后移)。重心往后移的越多,你就可以使用更多的刹车力量。

你可以在沙地或有点湿滑的平地上练习,加快速度使用不同的力道压下你的前、后刹车,了解如何控制你的刹车。或在骑行的时候询问高手他是怎么使用刹车的。

(二)转弯时减低前刹的力量

和驾驶汽车一样,在转弯的时候你必须要降低速度。如果你在转弯的时候使劲地压下你的刹车,你将会产生侧滑而失去控制。在转弯的时候同时使用你的前、后刹车来降低你的速度。当刹车的时候你前轮的反应会降低,所以减少前刹车力你的转弯将会更完美。

如果你在一个下坡的急转弯,需要使用到刹车时,尽量使用后刹车的力量。如在平地上,在最后一刻刹车时将重心往后降低以前面 30% 后面 70% 的刹车力量,来作刹车的动作。

(三)不要过度的压下前刹

“惯性是你的朋友”,你需要速度去通过岩石及障碍。不然轮子将会停止转动,将你抛过把手。过度的压下前刹会使你的重心前移,导至车头下倾。

如果你在险峻下坡的转弯中使用前刹,这时你必须同时控制你的前后刹车,不可过度地用力一直的按着,这时你可将刹车作一放一按的动作,以防止刹车锁死的现象发生。 五、山地车骑行技巧——简单的小技巧使你更像专业骑手骑着你的山地车上路,同家人与孩子一起沐浴在郊外的大自然中,享受郊游的快乐。有一两件事可能会围绕你:亦或在骑山地车行进中,你肚子饿了想要掏点东西吃,但是当你放开手单手骑车时却很容易摔倒;您想喝水时,你的水壶却好象离你远了些而难以拿到;当你要观察后方的情况时,不要担心,经由我们说明之后,这些小技巧只要稍加练习,你就会非常熟练,好象是生来便有的能力。 1、口干吗?假如可能的话,先找一条平坦的,或者是稍稍下坡的道路,(凹凸不平的路可不是将一只手松开把手的好时机),不要停止踩踏板,而且保持向前看,而不是看着你的手,一只手肘微弯,握住把手。手肘微弯能够吸收石块路面带来的震动,同时能够稳定你在喝水时任何影响山地车方向的动作,另一只手伸下去拿水壶,这时,也不可以看下方而是保持直视正前方,这样不停地反复练习,直到很熟练为止。 如果你的水壶是小号的,伸手下去时,要抓它的瓶盖部份,如果是大号的水壶,便握住瓶身凹下去的地方,在喝水的时候,水壶要向嘴角侧面,以免遮住视线。用牙齿拔开瓶盖,喝完水后,用你的身体来压住关上瓶盖,然后将水壶滑顺地放回架上,这时仍然不可往下看,保持直视前方。如果此招不行,那不如就带个奶瓶上路,或试试使用一种不用动手的饮水系统,只要将一支吸管放入嘴中便可以了。   2、往后看的时候,你的手不能离开把手,同时要注意前方路面,当你从左肩扭头往后看时,将你的右手放松,手肘处微弯,这样虽然你的上身扭转了,却仍能保持山地车笔直的方向,假如你骑得非常快的时候,你也可以很快地从你的左臂下方低头很快地查看后方一下。如果你需要比较长时间去查看后方,那你就必须坐正上身,右手抓住靠近竖管处的龙头,然后放开左手,身体在座垫上稍稍扭转向后看, 一个职业化的小技巧:当你与另一个人同骑时,当你回头时,坐正并轻触你同骑者的肩膀,这样会帮助你骑直线。3、如果你打算乘骑山地车超过一个小时以上,那么就有必要在衣裤口袋中准备一些由天然食品制成可以增强体力的块状食品,当然你不可能用双手来吃一顿午餐,你只能够吃这种简单包装的食物。在行前,你就应当将包装的塑料纸撕开一些,这样当你取食的时候便不必要大费周折。同时放置这些食物的地方,最好是很轻易可拿到的口袋而不是与地图等混杂一起的深口袋,取起来极不方便。当你准备进餐的时候,将身体坐正,并将一只手握着竖管旁的龙头部份,手肘微弯来减少震动,然后再掏出食物,顺着你早些时撕开的部份往下撕去,然后便可以吃了。记住,吃完不可随地丢外皮,应当放在背包中。   

4、摇摆不定的骑手在团体的乘骑中是危险份子,就算是个人单骑,也会在拥挤时危及他人。假如你对自己骑车没有把握走直线,那么你就应该在路边的白色漆线上沿着线来练习。但如果你的手臂及上半身无法放松的话,这次简单的练习几乎是不可能的,所以一定要自然放松。将你的双手轻握把手,双肘微弯,眼光放在前方约30尺外,但不要集中注意力在直线上,只要知道你在顺着这条线,不久之后你就会发觉自己走得十分稳定。原文地址:

http://blog.sina.com.cn/s/blog_6d0322d80102e15a.html

Feb 14, 2012

Rails Assets Compile

  • Assets
  • Compile

By default Rails assumes that you have your files precompiled in the production environment, if you want use live compiling (compile your assets during runtime) in production you must set the

config.assets.compile to true

.# config/environments/production.rb…config.assets.compile=true…You can use this option to fallback to Sprockets when you are using precompiled assets but there are any missing precompiled files.If 

config.assets.compile option is set to false and there are missing precompiled files you will get an “AssetNoPrecompiledError” indicating the name of the missing file.____________________You will get better performance in production if you set config.assets.compile to false in production.rb and precompile your assets. You can precompile with this rake task:bundleexecrake assets:precompileIf you are using Capistrano, version 2.8.0 has a recipe to handle this at deploy time. For more info, see the “In Production” section of the Asset Pipeline Guide: 

http://guides.rubyonrails.org/asset_pipeline.htmlhttp://stackoverflow.com/questions/7275636/rails-3-1-0-actionviewtemplateerrror-application-css-isnt-precompiled

Jan 15, 2012

MySQL修改字段

  • MySQL
  • alter

语法:alter table 表名 change 字段名 新字段名 字段类型;

Jan 12, 2012

用rails-erd生成rails项目的实体关系图

  • ERD

有时候我们需要形象的展示实体间的关系(Entity-Relationship Diagrams)rails-erd 这个gem 可以帮我们实现:首先安装Graphviz

% brew install cairo pango graphviz # Homebrew on Mac OS X% sudo port install graphviz # Macports on Mac OS X% sudo aptitude install graphviz # Debian and Ubuntu 然后在开发环境中使用group :development do

gem “rails-erd”

end安装

% bundle install 

生成PDF

% rake erd

然后在项目根目录下就会生成ERD.pdfhttp://rails-erd.rubyforge.org/

Jan 12, 2012

nohup命令详解

  • Linux
  • nobup

使用nohup让程序永远后台运行Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:/usr/local/mysql/bin/mysqld_safe –user=mysql &但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:nohup /root/test.php &  提示:  [~]$ appending output to nohup.out  嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。  附:nohup命令参考nohup 命令  用途:不挂断地运行命令。  语法:nohup Command [ Arg … ] [ & ]   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。   无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。  退出状态:该命令返回下列出口值:  126 可以查找但不能调用 Command 参数指定的命令。  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。nohup命令及其输出文件  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。该命令的一般形式为使用nohup命令提交作业如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:nohup command > myout.file 2>&1 &在上面的例子中,输出被重定向到myout.file文件中。使用 jobs 查看任务。使用 fg %n 关闭。>另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。

原文地址: 

http://www.21andy.com/blog/20071121/677.html