再见金华站
某天,你无端想起一个人,她曾让你对明天有所期许,但是却完全没有出现在你的明天里……
人生若只如初见,回眸一视,浮华尘世,过眼云烟,只是那当初的一种残念,垂泪于心间,当时只道是寻常。
最初的惬意,如梦幻般的感觉,一颦一蹙,一言一笑,如春风拂面,如霏雨淋浴。
那种怦然,那种萌动,似团火焰,燃起了那无边无际的思意。
思意,带有甜与咸的韵味,在那曾经的沧海中,暇念着巫山之云。
情海忽变,情丝断矣,有多少的寸断肝肠。
最近半年关于 Ruby 编程语言最负面的两条新闻莫过于 2012 年 10 月的报导:Linkedin从ruby迁移到node.js,30台服务器减到3台,以及 2013 年 3 月的报导:Iron.io从ruby迁移到Go,30台服务器减到2台
node.js 和 Go 都是最近两年服务器端高并发编程的热门语言,Linkedin 和 Iron.io 抛弃 Ruby 迁移之后,都获得 10 倍以上的系统性能提升,效果非常好。当然这两篇新闻报导引发的争议也非常大,最大的争议在于:原有 Ruby 编写的应用是随着业务经过长时间代码演化而成的,代码可维护性和架构都已经存在严重的问题,即使沿用 Ruby on rails 重写,也会获得巨大的性能提升,非编程语言迁移之功。
诚然,继续沿用 Ruby on rails 重写或者重构应用,性能可能会有一两倍的提升,但无法弥合 10 倍以上的性能差距,难道说 ruby 真的如此不堪吗?注定要被 node.js 或者 Go 所取代吗?
JGW Maxwell 在 2011 年底做了一个 Ruby Web框架的并发处理能力测试,还做了 node.js 的对比测试。用 250 个并发去做压力测试,后端使用 MongoDB 数据库,总共跑完 10 万个请求,测试结果如下:
纤程 IO 模型的性能是传统多进程模型的 3-4 倍,而 Event IO 则是多进程的 6-7 倍。值得一提的是 Ruby 的 Event IO 框架 Cramp 甚至性能超过了 node.js。看来并发性能差的原因并不在 Ruby。
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2013/04/beijing-met-the-seattle/
为什么有这个?
由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败。所以你会与遇到 gem install rack 或 bundle install 的时候半天没有响应,具体可以用 gem install rails -V 来查看执行过程。
这是一个完整 rubygems.org 镜像,你可以用此代替官方版本,同步频率目前为 15 分钟一次以保证尽量与官方服务同步。
如何使用?
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
1.创建、定位和启用光源
(1)定义光源的颜色和位置
GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat position[] = { 0.0, 3.0, 2.0, 0.0 };
(2)创建光源
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); // Setup The Ambient Light设置环境光
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); // Setup The Diffuse Light设置漫射光
glLightfv(GL_LIGHT1, GL_POSITION,position); // Position The Light设置光源位置
一、Bezier 曲线
主要注意两个函数:glMap1
和 glEvalCoord1
。
1.voidglMap1{fd}(GLenumtarget,TYPEu1,TYPEu2,GLintstride,GLintorder,constTYPE*points)
;
功能:定义求值器。
参数:target:指出了控制顶点的意义以及在 points 参数中需要提供多少值。
刚刚开始学 opengl,mark 一下
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。