小编Oll*_*lly的帖子

对所有基于文本的字段使用泛型varchar(255)是否有缺点?

我有一个contacts包含字段,如表postcode,first name,last name,town,country,phone number等等,所有这些都被定义为VARCHAR(255)即使没有这些领域都不会接近有255个字符.(如果你想知道,就是这样,因为Ruby on Rails迁移VARCHAR(255)默认情况下将字符串字段映射到我并且我从不打扰覆盖它).

由于VARCHAR只会领域的实际字符的数目存储(连同字段长度),是否有任何明显的优势(性能或其他方式)使用,比方说,VARCHAR(16)VARCHAR(255)

此外,大多数这些字段都有索引.字段上的较大VARCHAR大小是否会影响索引的大小或性能?

仅供我使用MySQL 5.

mysql sql

97
推荐指数
5
解决办法
2万
查看次数

mod_rewrite规则重定向除一个特定路径之外的所有请求

我正在尝试使用Apache 2.2 VirtualHost声明中的mod_rewrite将所有请求重定向到我的域到另一个域.有一个例外 - 我希望/audio路径中的所有请求都不会被重定向.

我写了一个RewriteCond和RewriteRule来做到这一点,但它不太正确,我无法弄清楚为什么.正则表达式包含字符串"/ audio"的负前瞻,但由于某种原因,这不匹配.这是定义:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
Run Code Online (Sandbox Code Playgroud)

如果我将RewriteCond更改为:

RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]
Run Code Online (Sandbox Code Playgroud)

(即将正斜杠放在负前瞻部分之外)然后它可以正常工作,但这样做的缺点是不会重定向到没有尾部斜杠的mydomain.net请求.

谁能指出我做错了什么?

(注意:上面的RewriteRule位中的域周围的尖括号是由StackOverflow.com添加的 - 它们在实际代码中不存在!)


以下是规则:

<VirtualHost *:80>
ServerAdmin me@mydomain.net
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net

RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3

ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

谢谢@mercutio - 这很有道理,但它似乎仍然不起作用.

当我向http://mydomain.net/audio/something.mp3发出请求时,这是mod_rewrite日志所说的内容:

(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to …
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite

40
推荐指数
1
解决办法
5万
查看次数

使用Capistrano将Rails应用程序部署到多个Web服务器

我目前正在为Rails应用程序设置一个新的生产环境,该应用程序包括多个负载均衡的应用程序服务器(目前只有两个,但随着时间的推移会增加).

我想使用Capistrano(我已经用于现有的单个服务器)在单个命令中处理应用程序到所有这些服务器的部署.我可以看到这样做的唯一方法是使用capistrano-ext(我其实已经使用部署到我的测试和试运行环境),通过定义一个新的"环境"为每个应用服务器(app1,app2等等),并进行了使用部署就像是:

cap app1 app2 app3 deploy
Run Code Online (Sandbox Code Playgroud)

这是推荐的做法还是有更好的方法?

deployment capistrano ruby-on-rails

19
推荐指数
2
解决办法
2万
查看次数

使用FasterCSV gem解决CSV解析的基本问题

我发现了FasterCSV(1.5.0)的CSV解析问题,这似乎是一个真正的错误,但我希望有一个解决方法.

基本上,当字段用引号括起来时,在分隔符后面添加一个空格(在我的例子中是逗号)会生成一个MalformedCSVError.

这是一个简单的例子:

# No quotes on fields -- works fine
FasterCSV.parse_line("one,two,three")
=> ["one", "two", "three"]

# Quotes around fields with no spaces after separators -- works fine
FasterCSV.parse_line("\"one\",\"two\",\"three\"")
=> ["one", "two", "three"]

# Quotes around fields but with a space after the first separator -- fails!
FasterCSV.parse_line("\"one\", \"two\",\"three\"")
=> FasterCSV::MalformedCSVError: Illegal quoting on line 1.
Run Code Online (Sandbox Code Playgroud)

我疯了,或者这是FasterCSV中的一个错误?

ruby fastercsv

15
推荐指数
1
解决办法
8414
查看次数

你能用正则表达式grep一个文件,只输出一行的匹配部分吗?

我有一个包含许多错误行的日志文件,例如:

Failed to add email@test.com to database
Run Code Online (Sandbox Code Playgroud)

我可以通过一个grep调用过滤这些行:

grep -E 'Failed to add (.*) to database'
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但我真正想做的是使用grep(或者我将输出传递到其他Unix命令)只输出匹配行的电子邮件地址部分.

这可能吗?

unix shell grep

13
推荐指数
4
解决办法
2万
查看次数

如何在Rails中动态设置基于cookie的会话的到期时间

我目前正在为我的Rails应用程序使用基于ActiveRecord的会话存储,我有一个后台进程,每30分钟清除一次非活动会话.

我想切换到Rails新的基于cookie的会话存储,但是如何将会话的到期时间设置为30分钟,而不是默认的"会话结束时"值?

ruby-on-rails

12
推荐指数
2
解决办法
1万
查看次数

如何针对特定范围验证模型的日期属性(在运行时评估)

我有几个带有日期属性的模型,对于每个模型,我想根据给定的范围验证这些日期.一个基本的例子是:

validates_inclusion_of  :dated_on, :in => Date.new(2000,1,1)..Date(2020,1,1)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想在运行时使用类似的方法评估日期范围named_scope,例如:

validates_inclusion_of  :dated_on, :in => lambda {{ (Date.today - 2.years)..(Date.today + 2.years)}}
Run Code Online (Sandbox Code Playgroud)

当然上面的方法不起作用,那么实现相同结果的最佳方法是什么?

validation ruby-on-rails date

8
推荐指数
2
解决办法
8134
查看次数

是否可以从主Rails应用程序中单独更改delayed_job的日志记录级别?

我想DEBUG在我们的登台服务器上使用我的Rails应用程序的日志记录级别,但我想delayed_job(SELECT每隔10秒将一条语句记录到主Rails日志中)以记录INFO级别,所以我不会得到这些delayed_job SELECT语句在那里.

这可能吗?

ruby-on-rails delayed-job

8
推荐指数
1
解决办法
1819
查看次数

我应该将带有latin1_swedish_ci排序规则的MySQL数据库迁移到utf-8,如果是,如何?

我的Rails应用程序使用的MySQL数据库目前具有默认排序规则latin1_swedish_ci.由于Rails应用程序(包括我的)的默认字符集是UTF-8,因此utf8_general_ci在数据库中使用排序规则对我来说似乎是明智的.

我的想法是否正确?

假设是,将整理和数据库中的所有数据迁移到新编码的最佳方法是什么?

mysql ruby-on-rails character-encoding

7
推荐指数
1
解决办法
4406
查看次数

在查询中仅使用一列时,多列MySQL索引的性能

我对我的数据库有一个查询:

SELECT * FROM expenses WHERE user_id = ? AND dated_on = ?
Run Code Online (Sandbox Code Playgroud)

我在user_iddated_on列上添加了一个索引.当我使用检查索引时SHOW INDEXES FROM expenses,有两行 - 一行的seq_in_index值为1,另一行的seq_in_index值为2.

我的问题是,如果我然后提交一个只使用两个WHERE子句中的一个的查询,例如:

SELECT * FROM expenses WHERE user_id = ?
Run Code Online (Sandbox Code Playgroud)

创建另一个仅对user_id列进行索引的索引有什么好处,或者上面描述的user_id/ dated_onindex是否同样有效使用?

最后,如果使用查询怎么样:

SELECT * FROM expenses WHERE dated_on = ?
Run Code Online (Sandbox Code Playgroud)

seq_in_index在这种情况下,2 的值如何影响索引的使用和性能?

mysql sql indexing

6
推荐指数
2
解决办法
2662
查看次数