I've said it before, but it bears repeating: There's nothing interesting about how Ruby on Rails scales. We've gone the easy route and merely followed what makes Yahoo!, LiveJournal, and other high-profile LAMP stacks scale high and mighty.
Take state out of the application servers and push it to d ...
Rails里一般我们这样Destroy:
<%= link_to "Destroy", project_path(project), :confirm => "Are you sure?", :method => :delete %>
但是当客户端浏览器禁止JavaScript时就呆了,没有confirm,直接给删除了
所以如果我们需要考虑这种情况的话,需要给出“可降级”的方案,例如跳转到另一个页面,页面上提示是删除or取消
最终是这样来用:
<!-- projects/index.rhtml -->
<ul>
<% for project in @pr ...
1、美特斯邦威:不加寻常班
2、特步: 加班,死一般 感觉
3、百事:加班无极限
4、森马:上什么公司,加什么班
5、脑白金:今年过节不加班,加班只加节假日
6、汇仁肾宝:他加我也加
7、李宁:加班,一切皆有可能
8、旺旺: 加,我加,大家加,加加
9、农夫山泉:加 有点烦
10、好迪:大家加,才是真的加
11、白加黑:白天加白班,不瞌睡;晚上加晚班,睡不着.
12、联想:公司不加班,公司会怎么样
13、娃哈哈:妈妈~~我也要加班
14、清嘴: 知道加班的味道吗
15、安踏:我加班,我喜欢
16、NIKE:Just 加 it
17、钙中钙:现在加班啊,它含金量高, ...
- 22:46
- 浏览 (427)
- 评论 (1)
Support meebo, aim, msn, yahoo!, gtalk, icq, jabber
https://addons.mozilla.org/en-US/firefox/addon/5700
- 16:45
- 浏览 (488)
- 评论 (2)
http://www.bitstorm.org/edwin/en/php/
http://nalai.net/content/view/306727/32/
- 11:14
- 浏览 (352)
- 评论 (0)
1,acts_as_ferret
性能问题
2,acts_as_sphinx
不稳定
3,acts_as_fulltextable
使用MySQL的MyISAM表自己的全文搜索
今天工作中发现jQuery的lightbox将calendar_date_select覆盖掉了,经sliu指点原来是CSS中的一个z-index的问题,z-index越大则显示在页面的最上面,否则就被覆盖掉了。
安装
ruby script/plugin install http://scope-out-rails.googlecode.com/svn/trunk/
使用例子
# models/task.rb
scope_out :incomplete, :conditions => ['complete=?', false], :order => 'name'
# tasks_controller.rb
@tasks = Task.find_incomplete(:all)
# models/project.rb
has_many :tasks, :extend ...
owasp.org列出十大Web应用漏洞清单:
1, Cross Site Scripting(XSS)
2, Injection Flaws
3, Malicious File Execution
4, Insecure Direct Object Reference
5, Cross Site Request Forgery(CSRF)
6, Information Leakage and Improper Error Handling
7, Broken Authentication and Session Management
8, Insecure Cryptographic Sto ...
一、item list
1,列表符号
ul {
list-style-type: decimal;
}
li.special {
list-style-type: circle;
}
disc
circle
square
decimal
upper-alpha
lower-alpha
upper-roman
lower-roman
none
2,图片符号
ul {
list-style-image: url(icon1.jpg);
}
or
ul {
list-style-type: none;
}
li {
...
Tips for Authoring Fast-loading HTML Pages
iTechTag实在很慢,人家财帮子就快多了,所以希望和你一起学习下Mozilla这篇如何加快页面加载速度的文章
1,页面减肥
页面的肥瘦是影响加载速度最重要的因素
删除不必要的空格、注释
将inline的script和css移到外部文件
可以使用HTML Tidy来给HTML减肥,还可以使用一些压缩工具来给JavaScript减肥
2,减少文件数量
减少页面上引用的文件数量可以减少HTTP连接数
许多JavaScript、CSS文件可以合并最好合并,人家财帮子都把自己的JavaScript funct ...
- 12:31
- 浏览 (1111)
- 评论 (1)
- 分类: Architecture
THE WRONG WAY:
@a = A.find_by_name("hideto")
@list = []
@a.bs.each do |b|
b.cs.each do |c|
@list << c if c.ccc?
end
end
这样将产生许多条SQL语句
THE RIGHT WAY:
@a = A.find_by_name("hideto", {:include => {:bs => :cs}})
@list = []
@a.bs.each do |b|
b.cs.each do |c|
@list ...
原文:http://blog.hasmanythrough.com/2007/10/18/simpler-than-dirt-restful-dynamic-css
有时候我们需要根据用户偏好保持css style,然后根据不同用户加载不同的css
跟随着Rails 2.0的步伐,看看实现这个功能是多么简单
1,创建一个show.css.erb
p {
color: <%= @user.color %>
}
2,为UsersController的respond_to添加一个css format选项
def show
@user = User.find(par ...
RAID分多种级别
RAID 0表示Striping
RAID 1表示Mirroring
RAID 01、0+1、0/1表示先RAID 0再RAID 1:
D1,D2,D3 = D1,D2,D3
M1=M2
如果M1上的D1坏了则整个M1坏掉
如果M2上的D2也坏了则整个M2坏掉
这样整个数据玩完
RAID 10、1+0、1/0表示先RAID 1再RAID 0:
D1=D1
D2=D2
D3=D3
M1=D1,D2,D3
M2=D1,D2,D3
如果M1上的D1和M2上的D2坏了M1和M2不会坏掉
则M1上的D2,D3没坏,M2上的D1,D3没坏
则整个数据还健在
- 15:42
- 浏览 (437)
- 评论 (0)
基于Shared Nothing Architecture做Load Balancing,遵循REST的无状态模型,不用考虑Sticky Sessions
一、DNS Load Balancing
DNS Load Balancing是最简单的方式,它将相同域名解析到不同IP
由于TTL和缓存时间,DNS不能实时更新clusters的更改
DNS方式很难自定义配置balance策略
DNS方式对traffic的balance不准确,对特定地域而言DNS会将特定域名一直路由到一个IP上
DNS方式很难搞redundancy和failover
二、用硬件做Load Balancing
Alte ...
- 14:31
- 浏览 (714)
- 评论 (0)
- 分类: Architecture
PHP的发明者Rasmus Lerdorf同时也发明了SNA(shared nothing architecture)的概念
什么意思呢?
对Web Servers做scaling时如果将session等状态保持在各个节点上,这样状态的复制就很成问题,所以SNA告诉你在节点上不要保存状态,session这种东西可以存在数据库或内存缓存中嘛,然后cookie或URL中带一个加密string用来查询session状态就可以完美解决session状态了。
但显然这给数据库增加了压力,但是数据库的scaling能力比Web Servers做session复制要好多了。况且我们在数据库前加一mem ...
- 12:10
- 浏览 (697)
- 评论 (0)
- 分类: Architecture
一、两种scaling方式
1,Vertical partitioning,生成的segments称为partitions
2,Horizontal federation,生成的segments称为shards
二、Storage engines
1,MyISAM
IBM开发的ISAM(Indexed Sequential Access Method)的扩展,是MySQL默认的storage engine
MyISAM由三个文件组成,.frm文件存储table定义,.MYD文件存储row data,.MYI文件存储索引
MyISAM使用table-level locking,三种lock类型 ...
前两次学习了动态添加和删除project的多个tasks,这次来看看如何编辑project
其他页面不变,但是_task.rhtml改了:
<!-- projects/edit.rhtml -->
<% form_for :project, :url => project_path(@project), :html => { :method => 'put' } do |f| %>
<%= render :partial => 'fields', :locals => { :f => f } %>
<p><%= submit_tag "Upda ...
一、超链接
1,动态超链接
a:link {
color: #005799;
text-decoration: none;
}
a:visited {
color: #000000;
text-decoration: none;
}
a:hover {
color: #FFFF00;
text0decoration: underline;
}
2,按钮式超链接
a:link, a:visited {
color: #A62020;
padding: 4px 10px 4px 10px;
background-color ...
原文:Select, Option, Disabled And The JavaScript Solution
今天在工作中需要用到disabled掉一些select的option,结果发现IE6没有实现它。
还好我们下载select-option-disabled-emulation.js文件即可自动完成disabled标记的工作,代码也很少:
/****************************************************************
* Author: Alistair Lattimore
* Website: http://www.latt ...
原文:Google Architecture
Google是伸缩性的王者。Google一直的目标就是构建高性能高伸缩性的基础组织来支持它们的产品。
平台
Linux
大量语言:Python,Java,C++
状态
在2006年大约有450,000台廉价服务器
在2005年Google索引了80亿Web页面,现在没有人知道数目
目前在Google有超过200个GFS集群。一个集群可以有1000或者甚至5000台机器。成千上万的机器从运行着5000000000000000字节存储的GFS集群获取数据,集群总的读写吞吐量可以达到每秒40兆字节
目前在Google有6000个MapReduce程 ...
- 16:33
- 浏览 (3158)
- 评论 (2)
- 分类: Architecture
一、控制表格
1,表格中的标记
table: border, summary
caption
th: scope(row, col)
2,表格的颜色
.datalist {
color: #0046a6;
background-color: #d2e8ff;
font-family: Arial;
}
.datalist caption {
font-size: 18px;
font-weight: bold;
}
.datalist th {
color: #003e7e;
background-color: #7bb3ff; ...
原文:Scaling Twitter: Making Twitter 1000 Percent Faster
Twitter是目前为止最大的Ruby on Rails应用,几个月间页面点击由0增长到几百万,现在的Twitter比今年月快了10000%
平台
Ruby on Rails
Erlang
MySQL
Mongrel
Munin
Nagios
Google Analytics
AWStats
Memcached
状态
成千上万的用户,真实数量保密
每秒钟600请求
每秒钟平均200-300个连接,峰值为800个连接
MySQL每秒钟处理2,400个请求
180个Rails实例,使 ...
- 11:56
- 浏览 (1971)
- 评论 (1)
- 分类: Architecture
今天上班不小心上到7楼,发现DoubleClick驻北京办事处就在freewheel楼上的楼上,着实surprise了一把
- 10:50
- 浏览 (413)
- 评论 (0)
这次来看看如何使用JavaScript和RJS来动态添加和删除表单域:
继续上次的例子,我们首先要在layout里引入Prototype.js
<%= javascript_include_tag :defaults %>
然后是新建project的页面模板:
<div id="tasks">
<%= render :partial => 'task', :collection => @project.tasks %>
</div>
<p><%= add_task_link "Add a task"%></p>
这里ad ...
原文: YouTube Architecture
YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人在维护站点和确保伸缩性。
平台
Apache
Python
Linux(SuSe)
MySQL
psyco,一个动态的Python到C的编译器
lighttpd代替Apache做视频查看
状态
支持每天超过1亿的视频点击量
成立于2005年2月
于2006年3月达到每天3千万的视频点击量
于2006年7月达到每天1亿的视频点击量
2个系统管理员,2个伸缩性软件架构师
2个软件开发工程师,2个网络工程师,1个DBA
处理飞速增长的流量
while (true)
{
...
- 14:47
- 浏览 (2529)
- 评论 (1)
- 分类: Architecture
原文: http://weblog.rubyonrails.org/2007/9/30/rails-2-0-0-preview-release
Action Pack: Resources
1,RESTful风格改进:
/people/1;edit将变成/people/1/edit
2,添加routing名字空间
map.namespace(:admin) do |admin|
admin.resources :projects,
:collection => { :inventory => :get },
:member => { :duplicate => :po ...
来看一个典型的场景,Project这个Model的new表单,我们需要在创建Project对象时也创建一些Task对象
我们可以使用fields_for这个标签:
<!-- new.rhtml -->
<% form_for :project, :url => projects_path do |f| %>
<p>
Name: <%= f.text_field :name %>
</p>
<% for task in @project.tasks %>
<% fields_for "project[task ...
- 浏览: 681843 次
- 性别:

- 来自: BJ

- 详细资料
搜索本博客
我的相册
screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
Mnesia用户手册:三,构建 ...
要想创建disc_copies和disc_only_copies类型的表有两个前 ...
-- by hideto -
翻译www.djangobook.com之 ...
有个问题问一下: 我先配置了一个urlpatterns是这样的: r'^myd ...
-- by lyhapple -
Why OO sucks
gigix 写道lyl0035 写道为啥就没人想想,其实在面向对象的代码中也流露 ...
-- by hurd -
Why OO sucks
貌似又回到当年java vs c的年代。两种方式,不管是OO还是FP,仅是人处理 ...
-- by python -
大家可以抛弃Java踹死Djan ...
to phoenixup:1,你还别说,你举的什么Struts,Tapestry ...
-- by hideto






评论排行榜