在ubuntu 18.04上配置Ruby on Rails的开发环境

我上一次写了在16.04上的开发环境的配置:在Ubuntu 16.04上配置Ruby on Rails的开发环境 这次写的是ubuntu 18.04。其实内容都是差不多的。

安装Ruby 2.5.3(目前的最新版本)

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt-get update

sudo apt-get install git-core curl zlib1g-dev build-essential  libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn

以上是安装相关的软件,接下来要安装ruby,安装ruby可以有三种方式,一种是用rbenv(我喜欢的),还有rvm和直接通过源码安装,各有利弊,我目前只用rbenv。

cd

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

exec $SHELL

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc

exec $SHELL

rbenv install 2.5.3

rbenv global 2.5.3

ruby -v

最后安装bundler

gem install bundler

配置Git

要用版本管理系统,我常用的是git这个软件,在使用之前,要对git进行配置。

git config --global color.ui true
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR@EMAIL.com"
ssh-keygen -t rsa -b 4096 -C "YOUR@EMAIL.com"

然后将~/.ssh/id_rsa.pub中的内容复制粘贴到GitHub.com中。然后将下面的命令输入到terminal中。

ssh -T git@github.com

安装Rails

Rails要用到NodeJS,所以要先安装NodeJS

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

最后安装rails,目前最新的版本是5.2.1,所以

gem install rails -v 5.2.1
rbenv rehash

设置PostgreSQL

我以前常用的数据库是MySQL,用PostgreSQL比较少,我觉得我还是用一下这个数据库,玩一下,以防自己得了老年痴呆症。

Ubuntu 18.04上如何使用PostgreSQL

179. Adobe(3):PostScript和我电台的资料来源问题

Adobe最初的软件是为了出版行业做的,这个成果就是PostScript,我们可以站在旁观者的角度想一想,如果让我们去设计这样一个软件,我们应该如何去设计。假设我们已经有了深厚了出版领域的知识,我们,尤其是很多程序员觉得自己写软件的,应该比大众会用软件,这个在大部分情况是正确的,但是在专业领域,我们和大众一样,很茫然。


比如上面所说的出版领域,如果没有在这个领域深入的研究过几年,连要做什么软件都不清楚,就算是把算法和数据结构掌握的非常好了,也不太可能写出专业领域的软件。比如AutoCAD,PostScript都是这种软件。所以,我要假设一下,我们懂了这个领域,我大概的猜测一下,在打印领域,最终的成果就是在纸上打印出我们想要的精美的图形,肯定是要用一个又一个的像素点来打印。这时候,还要考虑一个情况,有可能是打印的A4纸,也有可能是打印的像公交车站上的很大的广告,还有可能是打印的铺满一面楼那样的广告,这个都要支持的,这时候就会出现这样的情况,可能在A4纸上能看的图形,放大成了数百倍以后,就看不下去了。

其中还要涉及到字体,是不是变形,各种颜色,所以,如果我们来设计这样一个语言,几乎肯定是100%设计不出来,起码Microsoft曾经试图取代Adobe在打印行业的位置,结果也没搞定。如果微软都没搞定,我想大多数外国的公司也是搞不定的。但是Adobe的两个创始人就搞定了,他们研究出的第一个成果就是:PostScript这个语言。这个语言选择了Bezier曲线,还能制作出旋转,平移和缩放等效果,由此构成了一个强大的绘图系统。

我们来看看当时经常喷人的Steve Jobs如何评价的,他说:We [at Apple] could quickly see that our hardware was going to be better than theirs [Adobe’s] and that their software was more advanced than what we were working on. —— Steve Jobs 他的意思就是说,我们苹果做硬件要好,他们Adobe做软件要好。

我之所以引用原文,是最近我比较纠结一个事情,最近有一个我比较喜欢看的视频,算科普视频吧,名字叫《混乱博物馆》,已经不再更新了。起码我知道的所有科普节目中,这个是又短又小又听不懂的,每个人对科普的理解不同,比如知乎上的人会直接拿Nature的论文来怼,像我这种,要给我很多钱我才会去看Nature论文。还有就是对中医啊,星座的态度,我属于也信也不信的状态,属于薛定愕的信仰,比如有直男来和我说星座,我就不相信了,说实在的,我真的搞不清楚这几个星座是什么,什么天猫天狗的。如果碰上个信星座的妹子,我就会说我相信星座啊,星座超准的,实际上我也搞不清楚这十二个星座是什么,但是我发现聊星座特别容易聊,比聊天气还要容易,只需要在一个中性,或者偏褒义的词上加一个副词——有时候——就可以了,比如说,如果一个女孩子无论说什么星座,你都说,这个星座的人有时候会比较坚强,但是有时候心里会比较脆弱,对事情会比较敏感,但是做事对事不对人,非常的善良……这当然是废话,但是每个人都会认为自己比较内心善良,有时候比较敏感,就算这个人是杀人犯,他也会觉得自己实际上是比较善良的,不存在说自己不敏感。

对中医我也是这个态度,有些人想吃就吃啊,花她的钱,又不花你的钱。先不说中医中药管不管用,但是我认为在以中国目前的情况,500年内是不可能让中医,中药还有气功,太极这些东西消失的。有些人真的认为高手在民间,从哪里出来个张三丰一个黑虎掏心把梅威瑟的小心脏掏出来,我是从来不反驳的。我般会说,打梅威瑟还用不到黑虎掏心这么狠的招式,用个老汉推车,隔山打牛就OK了。反正我看电影里的张三丰打梅威瑟问题不大。我非常的热爱太极和气功这些国粹,等我还完房贷,因为我买的是一个二手房子,还完贷款,也差不多70年了,然后我再给儿子赚完首付以后,如果到时候我还没死,我也非常去学一下太极,感受一下中国功夫的魅力。

我前面说的《混乱博物馆》已经停止更新了,具体原因我不知道,但是知乎上有两个罪状,一个是不准确,讲的都是错的。第二个是不注重版权,很多是搬运工,并且不注重版权。说不准确的很多都是同行,同行是冤家,我就顺着账号找到了准确的视频,我操,我认为也是准确的,但是有两点问题,一个是太长了,第二是给了数学公式,让我这种没上过学的滴滴司机简直重温了初中的噩梦。我看科普又不是为了学科学,你给我看数学公式干啥?就好像网上体育,有人喜欢看UFC,这个是真打,综合格斗,实打实的打。但是像我这种,我不喜欢看UFC,我喜欢看WWE,这种是职业摔角,每一个动作都是假的,连裁判都是假的,整个流程都是按照剧本去演,我喜欢看这种假的,而不是UFC,因为UFC看完以后,浑身不舒服,我感觉太真实了,每一个动作都能把脖子拧断。反而是WWE,动作都是排练过的,比较有美感。当然了,如果真打,UFC的冠军能在2-3招之内把WWE的冠军打死。

大家猜一猜,真玩命打的UFC和WWE哪个赚钱?现实比较残酷,WWE比UFC要赚钱,也就是说,经过彩排的假打要比真玩命打的人赚钱。同样的道理也出现的科普行业,有些科普我看着也是挺用心的,引用的论文都是Nature,IEEE级别的,发几篇这样的论文,去个野鸡大学当个系主任还是可以的,还给你来公式,时间也比较长,很严谨,但是就是没多少人看。反而是一些娱乐化的科普,收看量很多。有人说(尤其是知乎上的一些人)说,让假科普滚出科普。其实我觉得你让人家滚,这是不对的,难道科普是你家的,就像电信业是国家的,还是你掌握了枪杆子啊?你觉得人家是假的,可以给自己的节目上写上真科普啊。

我说这些,是因为我最近也在承受类似的批评,最主要的是我的节目没有写名我引用的哪本书,哪篇文章。《混乱博物馆》肯定有抄人家的,这个是有石锤的。问题是,我应该做的更过分一些,我抄的更多。我讲的故事是软件行业的故事,这些故事我100%是从书上,网上,听人家的podcast,比如英文的Command Line Heroes,这个是Red hat公司的Podcast,还有Stuff You Should Know这个我也经常听,99% invisible。我做电台,首先我是podcast的消费者,我听人家的电台的,比如我听到了一个有趣的事情,我就记住了,然后过了很多天以后,我把这个故事又在我的电台里讲了一遍,这也算抄袭,但是,我已经忘记了我在哪里听到的这个故事了,我订阅了数十个podcast,开车的时候我不太喜欢听歌了,一打开电台,都是当红的这些歌星,我一个都不喜欢。

所以这件事情还真是一个大隐患呢,因为现在听我电台的人比1年前多了,这种指责也多了。我还是挺害怕有朝一日被拉到众人面前,比如知乎这样的平台上蹂躏一番的。

再来讲点PostScript,我下面讲的PostScript是引用自PostScript Language Tutorial & Cookbook这本书。这本书我看过,因为当年我要抄东本编论文。PostScript作为一个编程语言,要完成至少三个目标:第一,要做到与设备无关,因为有那么多打印机,不可能只支持一种。第二是要灵活,要是图灵完备的语言。第三,也是我想重点说一下的内容,要能表达完美的曲线。这个也是PostScript所采用的矢量绘图工具,在Photoshop里也有,名字叫路径,其实就是Bezier曲线。第二点,就是这个语言要足够灵活,还要让非程序员能使用,这个语言参考了一个叫FORTH的语言,以FORTH语言为基础,加入了字典和数组这两个数据结构。其中加入的数组是用来存储字符的轮廓,加入的字典是用来存储字体。而且PostScript语言也实现了现在一些编程语言才实现的闭包。比如PostScript语言的局部变量这些特征,实现的方式和现在的主流语言比如Java有些不同,我个人觉得PostScript的方法更简单一些。

但是并不是说PostScript没有缺点,PostScript起步的时候,当时大家还没见过各种各样的打印机,我上一期也讲过,PostScript是解释性的语言,就像Python和Ruby一样,只有解释到那里,才能知道那里的运行结果。但是现实中是这样,比如我们去打印的话,可能是双面打印,比如还要加入作者的名字这些信息。但是在当年的时候,打印机并不支持双面打印,于是大家只要在PostScript前面加入一些文档信息。这种自发和信息并不是Adobe能预见到的,也不是Adobe的推出的标准,因些,大家的方法就乱套了。

于是Adobe出了一套叫文档结构约定的标准,也叫DSC(Document Structuring Conventions),有了这个标准以后,其实是不自觉的开创了一个新的编程时代。Adobe的DSC和Java 5.0引入的annotation概念用来检查编译器的多态,Python 2.2之后的classmethod用来检查方法的定义,这些思想实际上很多都是(可能是)借鉴自PostScript的DSC。

没想到《混乱博物馆》的馆长不再做视频了……

1

我今天才发现,《混乱博物馆》的馆长——刘大可——在他的微博上宣布不再做科普视频了。

说实在的,这是除了我自己的公众号,我唯一会每期都看看的公众号,也是让我敢在weibo这个垃圾平台上绑定支付方式的原因,我会用我一个weibo小号看看他回答的问题。

继续阅读“没想到《混乱博物馆》的馆长不再做视频了……”

如果你问我要不要加入内容创业?我只能给一点数据……

1

有些同学会问我这个问题,我确实也想过,可能是因为我写了个公众号吧,八特,我没认为我这是在创业。

我觉得创业这两个字还是慎重点,我的祖上——刘备——人家那才是创业:先帝创业未半而中道崩殂……

其实这是个小马过河的问题,如果你去问咪蒙,要不要内容创业,她会告诉你:《为什么我们要这么拼?》

继续阅读“如果你问我要不要加入内容创业?我只能给一点数据……”

178. Adobe(2): Adobe和苹果的恩怨

这一期还是讲Adobe,这一期就开始讲他们两个人拿到了钱,要创办公司的事情了。这两个人拿到了一些钱,具体数目肯定是不多的,如果多的话,他们俩人也不会就在一个车库里创办公司。最起码要有个办公室吧,显然是没有的。

Adobe公司的名字来源也比较简单,就是创始人之一的John Warnock家的后面,有一条小河,名字叫Adobe Creek,在加州的Los Altos。这条小河和Amazon不一样,Amazon是世界上流量最大的河,所以现在的Amazon公司是世界上最大的网上商城之一,名字起的好。Adobe Creek这个是小河,只有22公里,大概相当于一个半马的长度,大家可以到网上搜一下这条河的图片,因为Adobe公司的原因,这条河是一条网红河。和Amazon不一样,Amazon河肯定不是因为Amazon公司出名,但是这条小河会因为Adobe公司出名,很小的一条河,从网上的照片来看,有些地方感觉稍微的用用力气,立定跳远就能跳到河对岸去了。

继续阅读“178. Adobe(2): Adobe和苹果的恩怨”

凡事不要太较真,我可没有“工匠精神”,争个锤子啊!

1

昨天我做了一期电台节目讲的是Adobe,我在电台里提了一句说,Adobe的两个创始人也是来自施乐公司。施乐公司发明了世界上第一个激光打印机。

我没想到的是,这个第一竟然有人来争。说施乐不是第一个发明激光打印机的,IBM才是第一个激光打印机的发明者。

继续阅读“凡事不要太较真,我可没有“工匠精神”,争个锤子啊!”

177. Adobe(1): 又一个车库里成长起来的国际公司

这一期讲一下Adobe公司,这个公司我想几乎所有的人都知道,至少肯定用过这个公司的技术,我觉得所有的都应该知道Photoshop这个软件,就是修饰照片的软件,男的可以修成女的。现在网上经常有些年轻的朋友说,有图有真相,非常的幼稚,自从Photoshop出来以后,有图有真相早就不是真理了。现在图片做假太严重了,在网上根本就不敢相信。

继续阅读“177. Adobe(1): 又一个车库里成长起来的国际公司”

为何隐私经常与cookies有关?

1

先来看几个与泄露用户隐私有关的新闻。先从大的开始说起:不做恶的Google出的Chrome浏览器,具体的版本是Chrome 69,在hackernew这个论坛上被人爆出,在用户选择清空cookies的时候,会有选择的清空,具体来说就是:只清空别人的,不清空google的。

继续阅读“为何隐私经常与cookies有关?”

红薯: 舔狗列传

我最喜欢的历史学家,也是我唯一知道的历史学家司马迁写的《史记》里,有70篇列传,列传主要是写有趣的人,当我在读《史记》的时候,总是非常的羡慕司马迁的时代,有那么多有趣的人,直到我碰到了红薯,一个我QQ群里的怪才,我才不羡慕司马迁了,甚至,我觉得司马迁已经开始羡慕我了。

继续阅读“红薯: 舔狗列传”