• docker打包项目,可使用bundlegem同时打包:

    1. 缓存gem

    bundle cache
    

    命令执行成功后会出现vendor/cache缓存文件夹

    注意: 如果gem使用c扩展 (ext),请保证当前环境和docker环境 (如操作系统,32/64 位) 一致

    2. 将缓存文件夹和Gemfile.lock复制 (COPYgit等) 到 docker

    3. docker从缓存文件夹中安装gem

    bundle install --local
    
  • 这个问题要根据业务来分析。

    下面高能,非战斗人员请立即撤离😄

    一个数据,一般都会有三种形式:

    输入值

    - 1,2300.3¥,可以选择简写,或者根据 IP,GPS 定位国家现金单位,或者配置决定输入风格

    存储值

    这个是数据的核心, 如 整数1230030 或者 多个字段存储,或者 String/TEXT,或者采用浮点数。

    • 如果采用 String/TEXT,灵活,记录的形式多样,但不利于计算和检索。
    • 如果采用整数,ruby 中,整数可以无限大,存到数据库时或者用其它语言(java) 中协同处理时要小心。
    • 如果是采用浮点数,计算后有精度损失,因此取整时要注意是采用四舍五入还是四舍六入五取双的方式,而且在数据库存储也要调整精度。

    显示值(输出值)

    根据配置显示金额和单位形式。

    它们互相转化,是等价的

    - 1,2300.3¥ == -1230030

    BTW

    • 输入值的校验和存储值由后端开发人员处理。
    • 输入值的校验,前端人员可以选做。
    • 显示值的处理,前端人员和后端开发人员需要有人进行处理。
    • 三种形态的转换规则(如配置),协同处理。

    最后,简单直接粗暴的解决方案就是:存的是什么,就返回什么!(不需要进行规则转换,不需要校验)

    涉及到的接口有很多,但不管是哪一个,都需要调用上面的说的处理模块(ruby 关键字module,模块中有几个函数,ruby 关键字def,如输入值转换成存储值函数等)函数。一旦有业务变更,改动模块中的相关函数。避免代码冗余。

  • 一个页面的内容分为 3 类,不同内容的方案如下:

    内容 方案
    不会变 硬编码
    偶尔会变 发布的时候,生成静态文件
    经常会变 在静态文件的 JS 中,动态加载
  • 首先,bootstrapbootstrap-sass用一个gem就行,不用都用。 推荐这两个gem都不用,如果一定要用,用这个 rails-assets-bootstrap

    另外,注意下避免gem版本冲突,可以尝试:

    1. 使用下面的命令运行程序:

      bundle exec bin/rails s
      
    2. config.ru文件的开始,增加下面的代码片段:

      require 'bundler/setup'
      
    3. 开发环境使用rvm,不同的项目使用不同的 gemset。

    如在项目中定义.ruby-version文件和.ruby-gemset文件。

    1. 部署环境可以使用Dockerfile文件做成镜像 文件中使用增加下面的代码: RUN bundle install --without development test
    • 第一个报错,是因为 ES 的默认内存大于 1G,所以需要调整 JVM 的-Xms-Xmx参数
    • 第二个报错,没有遇到过,但是-Xmx后面的单位可以用 m,如-Xmx128m
  • 如果不是使用 unicorn 服务器,可以使用 God 监控内存,当超过设定的阀值自动重启,但不确定是否影响请求。

  • 问题一

    数据来源:中华人民共和国行政区域规划(国家统计局发布)最新的发布时间为 2014-01-17 15:04

    1. 是要在数据库中存储这些所有的省市区信息
    2. csv 之类的格式,或者 json,yaml 之类的只是数据外在的表现形式,这个看具体的需求

    问题二

    结构存储:

    1. 关联的表记录的是主键。底层存储结构必须要有行政区域代码的字段,便于后续升级,如北京市是 110000,北京市 - 北京市是 110000,北京市 - 北京市 - 东城区是 110101
    2. 要是将将存储格式和表现形式分开,就不会有这个问题。表现形式: 比如,北京市,可以表现为"北京",缩写"京"",首字母"B",拼音"BJ" 如果是直辖市,合并市辖区和县为直辖市的名称 如果是地级市,去掉市辖区和城区 如果是省直辖县级行政区划,新疆维吾尔自治区直辖县级行政区划,合并直辖县级到市

    问题三:

    362 市,2850 区,这不是很复杂,自己动手,扩展性和维护性由自己决定...

  • 更喜欢这样来处理图片预编译😄

    config.assets.precompile += %w( *.png *.jpg *.jpeg *.gif */*.png */*.jpg */*.jpeg */*.gif)
    
  • 3q 4 @dotcomXY 's code

    post :create, picture: fixture_file_upload('/test/data/logo.png', 'image/png')
    

    and the @dotcomXY's book

  • 手持移动设备用 hover 不合适。。。

  • 令人苦恼的性能问题 at 2014年02月01日

    EM 是采用 select 的 IO 模式,如果不阻塞,理论上单机 C10k,检测下你的一个页面不配置页面缓存时,需要阻塞多少 ms,瓶颈在那里,就优化那里,@zangcw,总觉得数据是这样出来的: 100 并发=20 个默认的 rack(如 thin) 服务器的线程数(每个都阻塞执行)*4 台单机

    • &将 block 块转换成 proc 对象
    • def block.each 定义了一个单件方法,接收者是上一步的 proc 对象
    • yield(call) 中 call,接收者 self 是 proc 对象,proc 对象中的 call 方法返回这个可执行对象的结果
    • yield 将这个结果传递给外部块的第一个参数

    * response.body=block 这句指明了上一步的外部块是 rack 中间件或服务器中传入的,因为 rack 标准中规定 body 要响应 body.each{外部块}

    综上,sinatra 的 body 扩展了 rack 的 body,不仅能 each 静态编码,还能 each 动态内容,通过的代码块的延后执行 @biaobiaoqi,新手不建议先看 sinatra

  • 在 cookie 中不记录密码,只记录 token,用 token 授权 0.登录时,token 赋初值 1.超过 30 分钟,token 失效 2.每一次用户请求,token 重置 3.记录用户常用 IP 和登录设备 4.危险操作采用短信或者邮箱多重验证 这样应该相对安全一些

  • 关于单元测试的一些疑惑 at 2013年12月10日
    1. 重构现有代码时,回归测试时,是否会产生相关的 bug,提高软件质量
    2. 改进现有功能时,集成测试时,是否对 API 有相关影响,增强向后兼容性
    3. 提交新的代码时,代码覆盖率测试时,是否有冗余代码,提高代码的可维护性
    4. TDD 或 BDD 开发流程时,解释代码的作用,提高代码的可读性

    单元测试是上述测试的基础,如果@jarorwar没有上述需求,可以不用写单元测试,无非就是 a. bug 多点(增加客服人员和测试人员) b. 代码行数多了之后,不知道相关代码的作用(只增加,不删除或修改代码) c. 不提供对上一个版本的支持(宣传是新品,另收费) d. 看到有问题的代码,有可能改出更多,更严重的问题或将问题埋的更深 (能不改就不改)

    更多的问题尚未发现,望砖之。
    
  • Rack, 我忽视你了 [已更新] at 2013年12月09日
    require 'rack'
    Rack::Handler.constants
    

    介绍 rack 和 app 衔接的多,介绍 server 和 rack 的 Handler 衔接少,@liwei78可以将这部分加上去

  • 写出好的 commit message at 2013年12月06日

    记录花费时间 2d 3h

    othermsg #time 2d 3h
    

    关联任务号或 bug 号 1234

    othermsg 项目关键字-1234
    

    提交的同时,有代码审查,审查人 user1 user2

    othermsg +review @user1 @user2
    

    提交的同时,和 1112 号代码审查相关联

    othermsg +review 项目代码审查关键字-1112
    

    任何项目管理工具 (即使使用文本文件管理) 都会很容易解析上述信息,无论用的是 git 还是 svn

    另外更详细的信息会在代码中或者项目管理工具中出现,不需要提交太多"othermsg",一两句概述的话或单词说清楚就行。

  • @allenlsy:paly[http://www.playframework.org] 和 sinatra 有什么联系呢?

  • 文中提到”java 的仿 sinatra 的 play”,什么意思?

  • @Tonyhong 代码规范:URL 禁止出现字母、斜线、冒号,数字之外的任何字符。 从 URL 分析,楼主用 Windows。 首先,Windows 在中国大陆默认的系统编码是 GBK,而 Web 事实上的编码是 UTF-8; 此外,还有可能出现 UTF-8 或者 GBK 所没有的字符。 因此,即使你改好了,换个操作系统和其它国家地区的语言,还可能出现编码问题。 解决方案:不要在 URL 中出现非法字符。