• 我的微信公众号项目都是用 anchor hash 导航的 SPA,没有用 turbolink,实践上只要在首页进行 JS SDK 的签名就可以。

  • 这是微信 iOS 的浏览器内核切换到 WKWebView 后出现的一个问题,根据官方文档

    三:有使用JSSDK,并且使用了wx.config进行权限授权需关注jsapi调用的失败问题 
    变化:WKWebview的内部实现变更使我们对微信内的页面jsapi权限管理做了一定逻辑上的调整,有极小可能会发生以前授权正常的jsapi获取权限不正常,从而导致调用jsapi失败。 
    适配建议:
    1. iOS微信6.5.1,WKWebview在此版本中已知有以下问题:页面使用HTML5的History API pushState; popstate;      replaceState等控制页面导航(典型的如单应用页面),同时使用JSSDK的wx.config为jsapi授权,此时大几率会出现jsapi因为无权限而调用失败的问题。 在6.5.1中页面若可能的情况下,可使用Anchor hash技术替换History技术来解决此问题。
    2. iOS微信6.5.2及其之后版本,将不会存在以上问题,但不能100%确认有使用到 history或hash技术更改页面导航地址的页面完全没有此类问题,依然需要开发者注意关注此类问题。
    

    可以考虑在 Turbolink 切换页面的回调里面请求一次 API,从服务器拿到签名参数,并在客户端进行签名操作。(可以借助 wechat gem 里面的一些方法)。下面的代码是我写的一个调用的例子,直接返回给客户端的 JavaScript 进行 eval(可能这样做很 evil),但是能正常跑起来。

    def signatuer_js(page_url)
      config_options = {debug: false, api: %w(chooseImage previewImage uploadImage chooseWXPay)}
      js_hash = wechat.jsapi_ticket.signature(page_url)
      return <<-WECHAT_CONFIG_JS
        wx.config({
        debug: #{config_options[:debug]},
        appId: "wechat app id",
        timestamp: "#{js_hash[:timestamp]}",
        nonceStr: "#{js_hash[:noncestr]}",
        signature: "#{js_hash[:signature]}",
        jsApiList: ['#{config_options[:api].join("','")}']
        });
      WECHAT_CONFIG_JS
    end
    
  • 这个广告做得好 at 2017年03月05日

    RubyChinaConf 的贴纸

  • 我觉得有前途。

    1.Rails 并非没人气。 Google 搜索趋势- Django,Rails 和 Laravel 可以看到在全球范围内,Rails 比 Django 和 Laravel 等热门框架还热门。结合实际看到的内容,Rails 社区活跃,框架稳步发展,应用广泛,并没有没落。

    1. 包含内容丰富,初期可以学习的东西多。Rails 在一定程度内是小型 Web 应用开发的最佳实践,默认包含了前端打包、Web 安全等等内容新。手或者初级程序员如果能掌握 Rails,能到熟练运用 Rails API 解决业务、能写扩展并且能理解背后的原理的程度,在学习过程中掌握的内容其实非常丰富,并且能反哺到运用其它语言、框架进行 Web 开发的场景中。

    2. 单兵、小团队开发效率高。Rails 结合 Ruby 语言,验证原型、做小型业务效率非常高。

    3. 生态圈质量好。因为在国内的小众,导致社区氛围和资料的质量都很好。不容易接触烂书烂资料。 --- 上面 1234 是 markdown 解析错了还是我排版错了。。。 ---

    结合 lz 的总结我也提下自己的感受:

    公司难招人:国内圈子小这个是事实,也是在国内做 Rails 的一个大缺点。不过国内应该有少数规模小、也不追求快速膨胀扩张的公司,做自己的产品和外包、咨询业务,这种场景用 Rails 没什么不好。也不需要招很多人。 上规模的企业,会从各个方面去权衡利弊,也不一定会因为难招人一棍子打死 Rails。同时 Ruby 在测试、运维、开发工具里应用还算比较多?

    个人难专精:我自己接触了四五年 Rails,花在上面时间不超过 200 小时,写的 Ruby 代码不超过 4000 行(但是其实用这些 Ruby 代码产出的成果和回报还不错。。),感觉已经从 Rails/Ruby 里收益匪浅了。 学点入门花不了多少时间,并非人人学 Rails 都要成为大师。

  • Ruby 的爬虫世界 at 2016年12月06日

    我来补充一个感觉挺有用的库 parallel

    对于代码的并发执行进行封装,可以选择开多个进程 (充分利用多核),多个线程 (可以加速阻塞 IO 多的代码执行), 还能结合 ruby-progressbar 显示预计运行的时间。

    # Doing stuff | ETA: 00:00:02 | ====================               | Time: 00:00:10
    

    前几天收集数据需要发 20000 个 HTTP 请求,直接把代码用 parallel 包装一下,结果数据直接交给 ActiveRecord 存数据库,不用考虑并发的各种通信和锁的问题,执行速度粗略估计是顺序执行阻塞的操作的十倍。(代码连 require 不到 20 行)。

    虽然 Ruby 性能相比较其它语言差一点,但是大部分应用代码瓶颈还是 IO,CPU 很少满载,合适的并发执行带来的效率提升是惊人的。

    做爬虫 Python 相关的库更加丰富,但是对于简单的数据爬取,parallel + Nokogiri, 加上 Ruby 语言,简直不能更棒。

  • It's time to talk! at 2016年10月16日

    #10 楼 @hww

    话说一年前准备翻译这本书来着,后来搁置了。。。

  • PPT 和 App 都很棒 👍 ,不过我觉得 iOS 版第一个 Tab 顶部的 UISegmentedControl 换个配色,网络加载的 Indicator 提升下样式效果就很好了

  • #21 楼 @huacnlee MKWebView -> WKWebView

  • 学驾照有用吗? at 2016年01月16日

    我当时多交的一倍的钱报的 VIP,一对一,不用排队,算下来除了考试实际花的时间也就是两周半,每天三小时。算是用钱换时间。

    学车虽然需要花一些成本,但是多一项这样的技能,就能做一些之前做不了的事情,像自驾游,通勤等。一线大城市公共交通很完善,但是在公共交通不发达的地方,以及一些恶劣天气下,有一个机动工具真的方便很多。

    虽然可以用到的时候再学,但是总体来说越往后付出的机会成本会越大。

  • Rubyists 排名 at 2015年11月29日

    #11 楼 @gazeldx 翻译的一本 Objective-C 的 markdown 小书里面有生成 Ruby 的脚本被识别成 Ruby 语言的项目了。。

  • 每月 600 远餐补 IOS 届大神唐巧是你的队友

    改变中国初高中教育不应该先纠正招聘文案的错别字嘛 😂

  • 我记得去年 RubyConfChina 结束的时候说下届在成都的~

  • 有朋友用过你们的服务,感觉挺不错的~

    不过,虽然再三强调

    其实我们仅仅是一个初创的 O2O 公司,工作环境还很艰苦,现在还是保持着 6x12 的工作强度,工作的内容非常琐碎,我们没有可以配得上让你如此辛苦工作的薪酬,甚至我们无法承诺未来可以将期权兑换股票。。。

    但是没有表现自己其他优势的招聘贴总感觉好奇怪,虽然很坦诚。。。但是互联网 + 传统企业的组合,技术有挑战的简单一提,相比之下并没有非常有吸引力的样子。。55534.。。。。。。(最后的数字是我家喵星人打的。。)

  • 66

  • 苹果想实现应用关闭后后台的推送必须走 APN,Ruby 的服务器端实现可以参考这个开源项目 https://github.com/nomad/houston

    Android 的话,有以下几种方案 - 自己写一个后台 service 定时拉取数据。 实现简单,耗流量耗电 - 自己实现一个后台稳定的长链接,实现推送。 技术要求比较高。 - 采用 Google 的 GCM,国内不推荐,原因你懂的。 - 使用第三方 BASS 平台提供的开发者服务,一般提供了 iOS 和 Android 的 SDK,管理界面和 REST API 接口,折腾半天第一次配置好跑通之后,也就没有特别要操心的了。而且它们一般实现比自己写的要好。如果面向国外用户,个人推荐 Parse.com, 面向国内的话推荐 avoscloud.com。(不过我在国内实测 parse.com 的推送有时候比 avoscloud 还及时。。。)另外还有极光推送和个推是国内专一做这块的服务,百度云推送和腾讯信鸽推送这些。你可以看看。

    ======

    总之,推荐使用 parse.com 或者 avoscloud.com 的服务

  • 报名+1

  • Swift 代码片段求解释 at 2014年06月03日

    makeIncrementer 的返回类型是一个 (Int -> Int) 类型的函数函数,也就是说这个函数接受一个 Int 类型的参数并且返回 Int 类型的值

  • 同为第一期学员, 赞一个 Howard 的课程。

  • oa414@163.com

  • #15 楼 @mjf429 感谢。。不过感觉写 Android 和 iOS 的时候,区别更大的是 Android 开放和多任务的特性。写 iOS 的时候不用考虑一些事情,因为根本不可能实现。写 Android 的时候可以实现一些更有趣的想法,做一些事情也更方便,同时也有一些不顺手的地方。

  • #1 楼 @mjf429 求解释状态机。。。之前写 Android 从没听说过这个概念。。只是学习算法和编译器的时候接触过状态机。。

  • +1

  • 前一段时间我也出现这个情况。。。

    最后发现是因为之前觉得硬盘太小。。把虚拟内存禁用了的缘故。。用一会儿内存就爆满了。

    重新启用,问题解决

  • 北京暖气好暖和~室外即使冷些穿些衣服或者在路上也没什么。。。

    南方室内如果没有暖空调什么的话很冷。。。