1.Ubuntu8.04下编译如何安装Ruby呢?
1。
安装build工具 sudo aptitude install build-essential linux-headers-$(uname -r) 2。安装readline zlib libncurses5 apt-get install zlib1g-dev apt-get install libreadline5 libreadline5-dev apt-get install libncurses5 libncurses5-dev 3。
安装ruby ruby的源代码下载: 的pushState特性与ajax,可以实现页面内容动态局部刷新,当点击项目源代码页面中具体的一个文件或者文件夹时,你将会看到页面的其他部分是不变的,只有定义的页面DOM会刷新,这里使用的就是pjax。
elasticsearch Eleasticsearch支撑了Github的搜索功能,2年之前Github使用Solor做搜索,随着用户和托管项目的增加,索引的大小超过了solor节点的最大存储空间,也出现了很多的问题,Github团队在思考解决方案时决定使用Elasticsearch做替换。Github最开始使用ES时,使用了44台亚马逊EC2实例,每台实例配备2T的存储,其中8台实例指负责查询请求。
目前,Github已经将原有的EC搜索集群迁移到了东海岸的一个数据中心,使用8台物理主机替换了44台EC2。Rails Ruby实现的MVC Web框架。
Github的用户界面和功能大部分基于Rails构建,不过需要注意的是现在虽然Rails的项目版本已经发展到了Rails 4,但是Github依旧使用的是自己维护的2.3分支,对于不保持和现有的Rails主版本号一致的原因,Github员工Kneath做了如下的解释:. 花更过的时间来升级更新Rails,将会减少为用户构建新特性的时间,我们更关注用户;. 性能问题是一个很重要的考虑。在过去的几年中,我们极大的减少了响应时间。
而升级Rails不仅会带来一个更慢的框架,而且还会引入一个不同的架构——我们需要再根据新的框架特性来定位优化性能。我们对于现有的框架已经做了很多的优化以保持性能稳定,最主要的是:将时间花费在升级上不会让我们的架构更快。
. 过去的三年我们一直在升级这个堆栈,不升级Rails版本我们依然可以使用新的特性。Redis Redis是K/V存储系统,知名的NoSQL实现之一,在Github,主要使用Redis来进行队列中的异常处理。
在Github早期,曾尝试过很多的基于Ruby的队列机制,也曾使用Amazon SQS,但是这些方案都不能在Github快速增长的同时满足稳定性要求,最终Github迁移到了使用Redis的技术方案resque。sprocket Sprocket是一个网站资源打包的Ruby库,它不仅能够管理JavaScript和CSS资源,还可以按照pipline的方式来流式预处理CoffeeScript、Sass、SCSS和LESS代码等;libgit2 libgit2是一个可移植、纯C语言实现的Git核心方法类库,提供API重新链入Git方法。
Github的背后使用的原生的git来实现commit、push等功能,但是使用libgit2来针对桌面应用调用、Ruby代码中调用等;rugged libgit2的Ruby类库;bcrypt-ruby OpenBSD bcypt()密码哈希算法的Ruby实现;html-pipeline html-pipline是一个gem包,可以将现有Github前端HTML中的一些特性进行流式处理,例如在Github的评论框中,你可以@某一个人、输入emoji的表情、使用markdown的语法来写内容等,但是这些都是由单独的插件来控制的,html-pipeline可以流式的使用相应的插件处理原始内容,例如先将markdown转义成html,继而自动添加emoji表情,然后进行代码的语法高亮等。gemoji 在2013年的QCon北京前夜:Github Drink Up活动中,来自Github的工程师Tim在现场的活动中谈到了他们的一个文化:使用emoji。
他解释道:“很多情感使用文字不能做出形象的表达,但是使用emoji表情却能够起到不一样的效果”。在Github现有评论框或其他内容中,都可以看到emoji的身影,所使用的就是gemoji这个gem包。
jekyll Jekyll是一个静态博客生成的程序,Github中项目的Page页面,默认选型使用的就是jekyll。gollum Gollum是一套基于git的wiki系统,Github项目的wiki系统背后使用的就是这套开源框架;octokit.rb Github API的官方Ruby SDK;Hubot Hubot是Github自行开发的一个聊天机器人,当然它已经超过了聊天机器人的范畴,Github作为一个异步办公的团队,日常的协作、沟通很大部分依赖于聊天室,通过Hubot,Github的员工可以在聊天室中给机器人定制一些特定的回复、3D打印模型,甚至通过hubot来部署生成环境的代码、获取服务状态等,在2013年的QCon北京中,Giuthub的工程曾针对如何使用Hubot做运维进行过分享:《ChatOps at GitHub》。
d3 d3是使用JavaScript实现的数据可视化框架,使用HTML、SVG和CSS等,在d3的基础之上发展处诸如crossfilter、NVD3.js等一系列扩展或者简化框架,并且形成了一个良好的社区。作者mbostock目前供职于NYTimes,d3是他的博士。
4.redis
1.Redis Cluster总览1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。
最核心的目标有三个:性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计,而牺牲了部分的一致性、使用性。水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000结点。
可用性:在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。
1.2 架构变化与CAP理论 Redis Cluster集群功能推出已经有一段时间了。在单机版的Redis中,每个Master之间是没有任何通信的,所以我们一般在Jedis客户端或者Codis这样的代理中做Pre-sharding。
按照CAP理论来说,单机版的Redis属于保证CP(Consistency & Partition-Tolerancy)而牺牲A(Availability),也就说Redis能够保证所有用户看到相同的数据(一致性,因为Redis不自动冗余数据)和网络通信出问题时,暂时隔离开的子系统能继续运行(分区容忍性,因为Master之间没有直接关系,不需要通信),但是不保证某些结点故障时,所有请求都能被响应(可用性,某个Master结点挂了的话,那么它上面分片的数据就无法访问了)。有了Cluster功能后,Redis从一个单纯的NoSQL内存数据库变成了分布式NoSQL数据库,CAP模型也从CP变成了AP。
也就是说,通过自动分片和冗余数据,Redis具有了真正的分布式能力,某个结点挂了的话,因为数据在其他结点上有备份,所以其他结点顶上来就可以继续提供服务,保证了Availability。然而,也正因为这一点,Redis无法保证曾经的强一致性了。
这也是CAP理论要求的,三者只能取其二。关于CAP理论的通俗讲解,请参考我的译文《可能是CAP理论的最好解释 》。
简单分析了Redis在架构上的变化后,咱们就一起来体验一下Redis Cluster功能吧!2.Redis集群初探 Redis的安装很简单,以前已经介绍过,就不详细说了。关于Redis Cluster的基础知识之前也有过整理,请参考《Redis集群功能预览》。
如果需要全面的了解,那一定要看官方文档Cluster Tutorial,只看这一个就够了!2.1 集群配置 要想开启Redis Cluster模式,有几项配置是必须的。此外为了方便使用和后续的测试,我还额外做了一些配置:绑定地址:bind 192.168.XXX.XXX。
不能绑定到127.0.0.1或localhost,否则指导客户端重定向时会报”Connection refused”的错误。开启Cluster:cluster-enabled yes 集群配置文件:cluster-config-file nodes-7000.conf。
这个配置文件不是要我们去配的,而是Redis运行时保存配置的文件,所以我们也不可以修改这个文件。集群超时时间:cluster-node-timeout 15000。
结点超时多久则认为它宕机了。槽是否全覆盖:cluster-require-full-coverage no。
默认是yes,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no 后台运行:daemonize yes 输出日志:logfile “./redis.log” 监听端口:port 7000 配置好后,根据我们的集群规模,拷贝出来几份同样的配置文件,唯一不同的就是监听端口,可以依次改为7001、7002… 因为Redis Cluster如果数据冗余是1的话,至少要3个Master和3个Slave,所以我们拷贝出6个实例的配置文件。为了避免相互影响,为6个实例的配置文件建立独立的文件夹。
[root@8gVm redis-3.0.4]# pwd/root/Software/redis-3.0.4 [root@8gVm redis-3.0.4]# tree -I "*log|nodes*" cfg-cluster/ cfg-cluster/ ├── 7000 │ └── redis.conf.7000 ├── 7001 │ └── redis.conf.7001 ├── 7002 │ └── redis.conf.7002 ├── 7003 │ └── redis.conf.7003 ├── 7004 │ └── redis.conf.7004 └── 7005 └── redis.conf.70056 directories, 6 files2.2 redis-trib管理器 Redis作者应该是个Ruby爱好者,Ruby客户端就是他开发的。这次集群的管理功能没有嵌入到Redis代码中,于是作者又顺手写了个叫做redis-trib的管理脚本。
redis-trib依赖Ruby和RubyGems,以及redis扩展。可以先用which命令查看是否已安装ruby和rubygems,用gem list –local查看本地是否已安装redis扩展。
最简便的方法就是用apt或yum包管理器安装RubyGems后执行gem install redis。如果网络或环境受限的话,可以手动安装RubyGems和redis扩展(国外链接可能无法下载,可以从CSDN下载):[root@8gVm Software]# wget /rubygems/rubygems/releases/download/v2.2.3/rubygems-2.2.3.tgz [root@8gVm Software]# tar xzvf rubygems-2.2.3.tgz [root@8gVm Software]# cd rubygems-2.2.3 [root@8gVm rubygems-2.2.3]# ruby setup.rb --no-rdoc --no-ri [root@8gVm Software]# wget " -t rsa Note: “username@email.com”需要更换成你在Github上注册的Email地址或者是Username 这样会在用户目录(C:\Users\用户名)下产生一个.ssh文件夹,里面为对应的SSH Keys,其中id_rsa.pub是Github需要的SSH公钥文件。到c:\Users\用户名\.ssh\目录找到id_rsa.pub(可能位置不一定对,但是确认是以.pub结尾的文件),并用记事本打开复制全部内容。
Note:建议私钥公钥的名称最好写成"id_rsa",这样连接Github的时候会找这个文件,如果文件名已定,之后改名也行。在github网站选择“Account Settings”>>“SSH Public Keys”>>“Add another public key”,将刚才复制的内容粘贴到key文本框内。
这样就可以直接使用Git和GitHub了。Note:建议在Git Bash中输入“ssh -v git@github.com”测试能够正常连接github 安装Ruby环境 下载RubyInstaller和DevKit。
因为Octopress需要的Ruby版本为1.9.2,所以选rubyinstaller-1.9.2-p290.exe,DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe。先安装RubyInstaller,然后解压缩DevKit(路径中不能有中文)。
在“Start Command Prompt with Ruby”命令行中进入DevKit解压缩的目录,然后运行以下命令:ruby dk.rb init ruby dk.rb install gem install rdiscount --platform=ruby 如果安装成功,就可以使用一些Ruby的工具了,也为后面搭建博客提供了基础环境。安装Octopress 先通过Git从Github上克隆一份Octopress(在Git Bash上输入命令) git clone git://github.com/imathis/octopress.git octopress 然后安装一些依赖的工具(后面都是在Start Command Prompt with Ruby中输入) cd octopress ruby --version # Should report Ruby 1.9.2 gem install bundler bundle install 安装Octopress默认的Theme rake install 配置Octopress 将octopress的文件夹下的_config.yml的编码改成UTF-8:保存(或另存为)时选择编码格式为UTF-8 修改_config.yml,批改url、title、subtitle、author等等。
到Ruby的安装目次\lib\ruby\gems\1.9.1\gems\jekyll-0.11.2\lib\jekyll\找到convertible.rb这个文件,批改self.content = File.read(File.join(base, name))为self.content = File.read(File.join(base, name), :encoding => "utf-8")。写博文 最简单的方式:复制octopress\source\_posts下某个文件,例如2012-07-30-the-first-post.markdown,修改文件名和文件中的内容 或者,命令行中输入rake new_post["title"],会创建一个新的Post,新文件在source/_post下,文件名如下面的格式:2012-07-31-title.markdown。
该文件可以直接打开修改。写文章时,可以使用Markdown和Octopress Plugins等工具对内容进行格式排版。
预览效果 在修改设置或者写完文章后,想看看具体效果,可以通过如下命令来完成:rake generate rake preview 将博客部署到Github上 在预览的效果符合自己的预期后,就可以通过如下命令将内容部署到Github上了。如果是第一次部署,需要在Github上创建一个username.github.com的repository 在github网站选择“Create a New Repo”,如图 填写对应的内容即可 note:Repository name填写username.github.com,username一定要和github的username一致,建好的博客代表的是你这个github账户的主页即page 配置octopress与github的连接:。
6.如何在 GitHub 上写博客
github还为码农提供了一个博客系统,叫做githubpages。尝试了一下,深深爱上之。自己在博客园写blog也好多年了,说心里话,博客园做得还是不错,相比那个叫CSDN的,好了很多,这也是这么多年能坚持下来的原因。但是,突然有一天,我遇上了mac pro,我又为之倾倒,我想我以后,再也不会买windows的个人电脑了,除非工作需要。原来在windows下,用windows live writer写blog,也挺方便的,但mac osx上却没有,找了许久,找到了一个找marsedit的东西,实在是太粗糙了,强忍着用了一段时间,实在难以忍受。。。再后来,我发现博客园支持markdown(从这里可以看出博客园的确是在用心),不由于为之欣喜,sublime/vim+mardown是写mac下写博客的最好的方法,个人觉得。。
我不想为了写blog,去学习各种让人蛋疼的工具和配置,我认为人的时间应该花在更多有意义的地方,比如深入读一读linux,mysql这些开源项目的源码,或者泡泡妞也可以,或者陪陪家人。所以,我一直没有自己搭建一个网站。“众里寻它千百度,那人却在灯火阑珊处”,当我遇到github
page的那一刻,发现它正是我苦苦寻找的东西。
从此,我想我只会用mac + github + markdown +
sublime/vim写blog了。。
转载请注明出处windows之家 » win10安装rubygems