@holidale_nj 山寨 Airbnb?
@foolfalcon 能用 RubyMotion 开发吗?
辛苦
#1 楼 @rei 在编程实践中,这样做有什么意义?是为了 GC? 我看到他源码了还有这种用法: Lexer
SPECIALS = {
'|'.freeze => :pipe,
'.'.freeze => :dot,
':'.freeze => :colon,
','.freeze => :comma,
'['.freeze => :open_square,
']'.freeze => :close_square,
'('.freeze => :open_round,
')'.freeze => :close_round,
'?'.freeze => :question,
'-'.freeze => :dash
}
#25 楼 @MrPasserby 难道注册时候验证码变成一道 Ruby 面试题?
其实想想这样还挺有意思的
#17 楼 @MrPasserby 我认真分析一下,估计不是, 因为有些帖子回的还是挺多的
用 Hash 确实可以简化不少操作,很好的思路
---------------- Posted By 13000 块 Macbook Pro + OS X El Capitan
更有说服力
老实说,因为我 Ubuntu 和 Mac 都在用,主要用来做 Rails 方面的开发,有时也用 Mac 写个 iOS App。 单纯从 Rails 开发来看,功能上觉得都可以满足(用 gem guard-minitest 的时候,Ubuntu 在屏幕右上角还会显示通知,Mac 上就不显示了...)。 Mac Book Pro 超长待机时间比起普通笔记本 2 小时待机时间就不用说了。 一文价钱一文货,音响发烧友常常为了一点点音质的差别,耗费大几千元换条数据线; 自行车发烧友常常为了减几克重量多花几千人民币换个配件,这些人,不是为了性价比(苹果的东西绝对和性价比没什么关系),不是为了功能 而是为了
+1
#11 楼 @alex_marmot Hash 以前的语法是 { key => value }
, 2.1 以后才添加了 { key: value }
这种形式的声明。
#4 楼 @suffering 恩,是的。除了对自己的锻炼外,关键是新的框架能解决什么问题?重框架学习成本高,但是一旦掌握了,很多东西都是现成的; 轻框架,学习成本低,但是很多东西要自己完成。
#2 楼 @suffering 你说的 router 和 Database 都是构成 MVC 的构建。 怎么样把一个 MVC 框架组合起来?这时候需要 router; 对于 Model 来说,Database 也是它的一部分。 所以直接说 MVC 框架我觉得还是更贴切些。
把题库共享一下?@chinakr
现场才能感受到大家对 Ruby 的热情 平常都很懒,不愿出动 这次在旁边,就参加了一下 氛围很棒,在场一位搞 Python 很羡慕 Ruby 能有这样的氛围
#10 楼 @arth 如果我是面试官的话,我不仅会看你的代码,也会看你编程风格,包括但不限于变量名命名、格式规范等。 具体我没细看,估计面试官如果不是执行,而只是简单的浏览你的答案的话, 我猜你可能是这样被过滤掉的:
...
while (p < r) {
// when p = 2, r = 3
int m = p + (r - p) / 2; //m = 2
if (a[m] < ta) {
//因为a[m] < ta(面试官设定),所以进入这里
// 下面一行,有点复杂,直接掠过~
if (m + 1 == a.length || a[m + 1] >= ta) return m;
//p = m = 2 ,面试官觉得这陷入了死循环,事实上根据面试官给的设定,
//因为m + 1 == 3, 已经在上一句返回m
p = m; // 被修改的一行
...
所以别气馁了
#8 楼 @arth 首先变量名,是不是看谭(浩强)哥的书学得编程?变量名最好起个有意义的,这样一看就明白了。这是谭哥的书唯一被吐槽的。 其次,问题出在了
int m=p+(r-p)/2;
这句。 因为 m, r, p 都是 int 型的, 所以当如果 p=2,r=3 时,m = p + 0, 所以程序陷入死循环。
最后,代码的风格也很重要。每种语言都有一套社区推荐的格式规范,建议学习一下。
贴一段大神Paul Lutus的代码。
#!/usr/bin/ruby -w
# This script is (c) Copyright 2007, P. Lutus
# and is released under the GPL
# relaunch in window
exec("konsole -e #{$0} #{ARGV.join(' ')}") if ENV['TERM'] == "dumb"
# create m3u format playlists for each music directory
base="/netbackup/music" # change this path to suit your needs
albums = Dir["#{base}/*"]
albums.sort.each do |path|
data = "#EXTM3U\n"
# get the directory name, last element in path
name = path.sub(/.*\/(.*)/,"\\1")
name.gsub!(/_/," ")
name.gsub!(/(\A|\s)\w/) { |c| c.upcase }
puts name + " ..."
tracks = Dir["#{path}/*.mp3"]
tracks.sort.each do |track|
track_name = track.sub(/.*\/(.*)/,"\\1")
info =`mp3info -x #{track} 2>&1`
info.sub!(/.*Length:\s*([\d|:]+).*/m,"\\1")
m,s = info.split(":")
secs = m.to_i * 60 + s.to_i
data += "#EXTINF:#{secs},\n" + track_name + "\n"
File.open("#{path}/#{name}.m3u","w") { |f| f.write data }
end
end
print "Press Enter to close:"
STDIN.readline
今天朋友提醒我 10 号要上班。。。崩溃 差点忘了请假
post = Post.where('id = 1').or(Post.where('id = 2'))
改成这样还不错
post = Post.where('id = 1').or(2)
post = Post.where('id = ? AND user_id = ?', 1, 1).or(2,2)
@chengkai1853 chen 你谢Martz
吧
来查看当前项目的可执行任务列表。
应该是
cap -vT
cap -Tv
cap -vT
返回的是版本信息
$ capistrano % cap -vT
$ Capistrano Version: 3.4.0 (Rake Version: 10.4.2)
cap -Tv
返回任务列表
capistrano % cap -Tv
cap deploy:log_revision # Log details of the deploy
cap deploy:revert_release # Revert to previous release timestamp
cap deploy:reverted # Reverted
cap deploy:reverting # Revert server(s) to previous release
cap deploy:set_current_revision # Place a REVISION file with the current revision SHA in the current release path