在 Mac 下用 Homebrew 安装 MySQL, 网上的教程倒是很多,不过大多数都很默契地雷同。如果稍有点定制要求,就无从下手了。
我先也不免俗,从基本的开始:
一、首先安装 Homebrew
1 2 3 |
|
二、安装 MySQL
用下面的命令就可以自动安装了:
1
|
|
如果想让 MySQL 开机自动启动,可以如下操作:
在 Mac 下用 Homebrew 安装 MySQL, 网上的教程倒是很多,不过大多数都很默契地雷同。如果稍有点定制要求,就无从下手了。
我先也不免俗,从基本的开始:
1 2 3 |
|
用下面的命令就可以自动安装了:
1
|
|
如果想让 MySQL 开机自动启动,可以如下操作:
FFmpeg 是个强大的跨平台软件,在Mac下使用的时候要稍注意一下。我这记录一下自己的摸索过程。
我想在一个 MP4 文件里面添加字幕,不是把 .srt 字幕文件集成到 MP4 文件里,然后在播放器里选择字幕,这种集成字幕比较简单,速度也相当快:
1
|
|
我希望字幕直接显示出来,其实也不难,两句命令而已:
1 2 |
|
但在 Mac 下处理不成功,我看到有错误信息:
1 2 3 |
|
看来是 Fontconfig 出了问题,我的解决方案是:
一、在~/.bashrc 最后添加一句:
1
|
|
使之有效:
1
|
|
二、编辑 /opt/X11/lib/X11/fontconfig/fonts.conf 在字体目录添加 /Library/Fonts
1 2 3 4 5 6 7 8 |
|
再次运行添加 ass 字幕的命令就可以了,简单吧。市面上那么多视频处理软件,我估计都是FFmpeg加了个UI而已,如果命令行用得好,效率会高很多的。
更多 fontconfig 的信息可以参考这里。
Block是Ruby中相当sexy的特性。对于常年在C/C++中Coding的码农来说,不管是表达方式还是思考方式都有点让人感觉不适应。 Block是一个统称,中文名称又叫闭包,英文是Closure,表现形式有block, Proc and lambda。Proc是对block的面向对象的封装, lambda是对Proc的进一步封装。
虽然Ruby中万物皆对象,但block是作为一个特性而存在,不是对象。也许很多Rails程序员还没看Ruby语法就已经用scaffold写Blog了,对别人程序中的一些代码连蒙带猜也很看得差不多懂,就比如下面的代码:
1 2 3 4 5 6 |
|
简单来说,each
后面的几种表达就是block
,上面的例子就是调用Array
对象的block
方法。看起来好像很神秘,其实我们也可以为自己的类定义一个block方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
结果很简单
1 2 3 4 |
|
之所以很多变量和方法都加个my
前缀,是因为我想告诉大家这都是自定义的,是不是很帅?哦,不好意思,是不是很sexy?
既然已经说到自定义了,不能这样就结束了,我们可以再复杂一点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
结果如下:
1 2 3 4 |
|
接下来不得不说一下yield
这个关键字,我们从简单的例子开始:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
请大家无视1,2,3,4, 上面的例子只会输出yield is also sexy!
, 也就是说 a.my_yield
后面的所有内容都跑到 my_yield
中,替换了 yield
,简单吧。
下面开始对其升级:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
输出如下:
1 2 3 4 5 |
|
如果你不是高手,我相信你会回头再品一下代码的,这个my_yield
中到底发生了什么事?其实也不难,按照上例中的,把a.my_yield
后面的全部甩到my_yield
中替换yield
, 然后用@my_arr
替换my_tmp_arr
就可以了。
前面说到Proc
是Ruby对block
的面向对象的封装,简单来说,就是我自己定义一个可以多次重用的block
。还是看个例子吧,比如我想计算一个长方形的面积:
1 2 |
|
如果我的想固定长边,只输入宽度就好了,那我可以加入一个参数:
1 2 3 4 5 6 7 8 |
|
最后两种call的方式都行,结果都是18。我啰嗦一句,Ruby语法是可以省略return
的,所以上面函数的返回值是个Proc
,Proc里面的block
返回值是width * length
,没了return,眼睛里的确清静了很多。
lambda
是Ruby的一个函数,用来创建Proc
。
1 2 3 |
|
其与 Proc 主要有两个不同点:
第一,lambda 会检查参数,而 Proc 不会。
1 2 3 4 5 6 7 8 |
|
第二,lambda 会返回它的调用函数,但 Proc 会结束它所位于的 function。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Mac OS X 升级到10.8.2 以后,至少Retina Mac Pro 连接HDMI设备会出现问题,表现是笔记本和外接设备都黑屏,并且有个大大的鼠标,就像是分辨率变小了似的。
系统升级到OS X 10.8.2 (12C60)之后也没有改观。
Google之后发现三步可以解决问题:
1 2 3 |
|
第二步最后的文件名windowserver后面可能有点不一样,第三步是重启电脑,有打开的文件别忘记先存盘。
经过这么多天的与Warning的邂逅,今天终于开云见日迎来了一个Error. 就在全国人民喜迎这个IOError
之际,我三省吾身,不知道是因为升级了Mountain Lion 还是因为我最近折腾系统太厉害的缘故,好好的一个Octopress今天居然在rake generate
的时候给我报错:
1 2 3 4 5 6 7 8 9 10 11 |
|
前面一堆文件都是在/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
,不知道为什么最后会找到这个文件夹去/usr/include/python2.7/
。
这类找不到文件的问题在*nix下其实还是很好解决的,只要我能找到这个文件, 再把它ln
过去就好了:
1 2 |
|
Rstudio 是一个不错的R语言IDE, 因为集成knitr, 使得这样一个编程IDE可以用Markdown来生成漂亮的PDF文本,甚至可以用LaTEX的语法加入公式,这样小篇幅的科技短文都可以用Markdown来写了。
我饶有兴致地安装了RStudio,结果一运行居然报了一个Warning,看来最近我的Warning不少。
1 2 3 4 5 6 7 8 9 |
|
解决的方法也就一句话,放在R控制台运行一下就好了:
1
|
|
用Latex的时候,如果嵌入的PDF图片版本是1.5,而Latex只支持1.4的时候,就会出现很多Warning:
pdflatex (file ./graphics/abcde.pdf): PDF inclusion: found PDF version <1.5>, but at most version <1.4> allowed...
Warning只是不好看,PDF还是会正确生成的,我不愿像传说中的程序员那样不关心Warning,但也无力把PDF图片改成1.4的版本,只好用sed大法了:
1 2 |
|
附上那个老掉牙的程序员笑话吧:
有一个小伙子在一个办公大楼的门口抽着烟,一个妇女路过他身边,并对他说,“你知道不知道这个东西会危害你的健康?我是说,你有没有注意到香烟盒上的那个警告(Warning)?” 小伙子说,“没事儿,我是一个程序员”。 那妇女说,“这又怎样?” 程序员说,“我们从来不关心Warning,只心关心Error。”
OS X 10.7.3 安装XCode 4.3.1 之后,如果你也安装了命令行: Preferences > Downloads > Components and click install on Command Line Tools
那再编译什么东西的时候,就有可能收到报错信息,比如我就是在bundle install的时候得到如下信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
如果用心看一下,报的是stdio.h file not found
.
其实问题出在这个command line tools上,可以用下面这个命令修正:
1
|
|
1. Devise
2. Omniauth
3. CanCan
现在安装Devise, 和使用其它数据库一样, 首先在Gemfile加入devise, 然后安装Devise:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
Ruby on Rails 的学习曲线还算是有一点陡的, 作为一个初学者, 建议先看一下Ruby的语法书, 再看一下Rails的入门教材和示例, 但真正做项目的时候, 可能就要和各种各样Gems打交道了, 因为自己走了很多弯路, 所以想把一些笔记分享出来, 希望对新生有点帮助.
我准备用一个Blog的示例把Scaffolding MongoDB Devise Omniauth CanCan串起来.