@jobthoughtworks 请问咨询师,BA,developer 有些什么区别?在薪资方面有体现吗?
如果 ubuntu 的文件系统使用了 lvm 的话 (好像默认就是使用 lvm 的) 可以加载一个分区作为 pv,然后扩大 vg 和 lv 就可以了
IEEE 二進位浮點數算術標準(IEEE 754)http://zh.wikipedia.org/wiki/IEEE_754 雙精度浮點數 http://zh.wikipedia.org/wiki/%E5%8F%8C%E7%B2%BE%E5%BA%A6 雙精度浮點數 (double) 使用 64 位(8 字节)來儲存一個浮點數。它可以表示十进制的 15 或 16 位有效数字 345.363631248474 已经 15 位了,执行乘法就超过了双精度浮点数的精度,肯定不会精确的,需要进行舍入。进行舍入 IEEE 有四种方法,不同的 cpu,操作系统,语言实现都可能不一样
捨入到最接近:舍入到最接近,在一样接近的情况下偶数优先(Ties To Even)(这是默认的舍入方式):会将结果舍入为最接近且可以表示的值,但是当存在两个数一样接近的时候,则取其中的偶数(在二进制中式以0结尾的)。
朝+∞方向捨入:會將結果朝正無限大的方向捨入。
朝-∞方向捨入: 會將結果朝負無限大的方向捨入。
朝0方向捨入: 會將結果朝0的方向捨入。
BigDecimal 能正确精确计算浮点数 就实际需求来说,没有必要用 BigDecimal,对精度要求最严格的系统应该是金融结算,其中每一步的算法都是固定的,A / B * C 写代码的时候就不能用 A * C / B, 并且 A / B 之后保留多少位小数都是有要求的。遇到这种需求,如果客户没有提到计算方法,可以跟客户讨论把算法及每一步的精度写在需求规格说明书中。
回到楼主的问题,可以用 1 楼的方法,toFixed(2)
任务栏开三行的人飘过
@birbird 可能是 ssh 进程关闭的时候把子进程关闭了 1.用 nohup 运行,nohup bundle exec rails s 2.用 tmux 运行(推荐) 安装 tmux
tmux
bundle exec rails s
@tdseed 用过一点 ueditor,欢迎交流
官办民营的开源项目,主要市场应该是政府采购吧
Ext.Ajax.request({
url: 'manager/material_add',
//params: form.getForm().getValues(),
jsonData: form.getForm().getValues(),
})
用 jsonData 可以传过去么?
一定要用 params 传的话,可以考虑
//hiddenName: 'suppliers',
hiddenName: 'suppliers[]',
这样 rails 可以正常接收。但是对于 checkbox 写起来很啰嗦
#4 楼 @cqcn1991 1.可以写成一个 shell 命令在 ruby 里面,参数通过命令行参数传递过去,参数用 system.args[1],system.args[2] 这样的形式获取,例如传入 url 和图片的路径,执行完以后再继续用 carrierwave 从本地读取 2.如果需要返回生成的文件流或者文件名,可以用 IO.popen
// Filename: screen_capture.js, edit from loadspeed.js
// 用法: phantomjs screen_capture.js <URL>
var page = require('webpage').create(),
system = require('system'),
fs = require("fs"),
url;
if (system.args.length === 1) {
console.log('Usage: screen_capture.js <some URL>');
phantom.exit();
}
url = system.args[1];
page.open(url, function (status) {
fs.write("/dev/stdout", page.renderBase64('png'), "w");
phantom.exit();
});
# Filename: ruby_test.rb
# 运行: ruby ruby_test.rb
require "base64"
def get_png_screen_capture(url)
cmd_line = "phantomjs screen_capture.js #{url}"
result = nil
IO.popen cmd_line, "w+b" do |pipe|
# pipe.write params #如果需要通过stdin传大量参数过去,
pipe.close_write
result = pipe.read
pipe.close
end
result = Base64.decode64(result)
return result
end
File.open('baidu.png',"wb") do |file|
file.write(get_png_screen_capture("http://www.baidu.com/"))
end
把这两个文件保存在同一个目录下,运行 ruby ruby_test.rb,会生成 baidu.png 在 ruby 里面拿到文件流以后做什么就可以随意了,用 carrierwave 处理也很容易 js 可以放在 Rails.root/bin 目录下 (因为是执行文件),调用的时候用绝对路径
抱歉用百度做例子,找不到更好的能稳定访问并且很简洁的页面了,照规矩,上图
任何封装都会损失性能和灵活性 angular 和 emberjs 这种做法有点像.NET、delphi 中的数据感知控件(data-aware),做原型和供初学者把玩的,真的用在产品中会被骂的。谁能科普一下这样的优点? 前后段分离只是 ajax 交互的问题,直接写 js 所有控制点都可以灵活处理。
赞成 #4 楼 "宿主机 windows,虚拟机 linux" linux 安装 server 版,用 putty 通过 ssh 连接过去 在 linux 上开发,总不好意思用图形界面吧 在 mac 上 qq 也有很多缺陷,不如 win 上稳定,没有远程协助功能,复制的图片文件会直接显示,而不是以文件形式传送,截图在很多应用里面无法识别 (例如自带的 mail,截图发邮件给自己,结果发的时候能看到,接收的邮件图片不显示)
这样可以么?
(arr1+arr2).group_by{|i| i[:key]}.collect{|k,v| v.inject(:merge)}
@chenge migration 是非常好的方法, 1.可以对 migration 进行版本管理 2.自动判断哪些 migration 脚本执行过,哪些没执行,没执行的按顺序执行,用脚本不好控制顺序 3.部署在多个地方的时候很方便,每个人有自己的开发数据库,测试组有测试用的多个数据库,产品数据库都能执行,否则每次人工找哪些脚本没执行过非常累 4.migration 可以执行 ruby 代码,可以调用 model 中的方法,这样一些修复数据的逻辑可以既作为维护工具,也可以在 migration 中调用,对新增加的字段特别重要 。。。好处太多了,现在看一个框架首先看有没有好的 migration 方案
xcode 中 command line tools 安装没有?
@sevk ctrl+] 是进入一个方法吧,我说的是在同一个文件的不同方法间跳转,没有调用关系的情况下。例如:编辑 controller 中 create 方法的时候快速切换到 update 方法
#28 楼 @blacktulip GUI win > mac 确实是我的误读 我现在主要使用 mac 工作,之前一直用 windows,没有觉得有很大差异
@mobiwolf 可以拿具体的问题讨论,在 windows 下 ruby 平台没有什么问题的
#28 楼 @blacktulip 我找一下,应该就是 ruby-china 中的
#23 楼 @blacktulip 对于命令行控直接用 linux 的命令行是最好的,不过也要一个图形界面支撑的,linux 的图形界面确实还有待改进 另外 linux 下无法用 qq 不要骗自己说不用测试 ie
#23 楼 @blacktulip 记得有个帖子说 gui 方面 win > mac > linux, cli 方面 linux > mac > win 要么用最好的 gui(windows)+最好的 cli(linux),要么将就着用 mac
windows 很方便,没有遇到什么问题,个别无法在 windows 上安装的 gem 可以用 virtubox 安装一个 ubuntu 的 server 版,用 putty 连过去,跟部署环境一致,一切都很方便
windows,ubuntu,mac 下都可用 在 controller 里面
#获取数据,data 可以用 ActiveRecord::Base.connect.select_all 查询出来 data = xxxx
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "表单名"
#表头
sheet1.row(0).default_format = Spreadsheet::Format.new :color => :black, :weight => :bold, :size => 10
keys = params[:columns].keys.compact.collect{|key| key.to_i}.sort.collect{|key| key.to_s}
sheet1.row(0).concat(keys.collect{|key| params[:columns][key][:column_header]})
#写入具体数据,这个看具体应用 ,这里列是从前台 extjs 根据实际显示的 grid 的列和宽度传过来的
row_num = 1
data.each do |row|
sheet1.row(row_num).concat keys.collect{|key| row[params[:columns][key][:data_index]]}
row_num = row_num + 1
end
#调整各列的宽度
keys.each_with_index do |key,index|
sheet1.column(index).width = params[:columns][key][:column_width].to_f/10
end
book.write xls_report
send_data(xls_report.string, :filename => 'your_excel_file_name.xls', :type => 'application/vnd.ms-excel', :disposition => 'inline')
建议先把主体业务框架整理出来,最小原型中规划留下扩展空间 例如:有哪些角色 (主办方,参与者,游客,管理员),主办方是否需要一个组织的概念以便多人管理 主办方发起活动,参与者报名,签到以及之后的评价 参与者报名包括 申请报名,支付,报名成功发放电子活动券