• 关于 ruby 程序 Ctrl-C at 2018年05月17日
  • s3 国外区域在国内访问不了

  • 用 rails 来处理 4000 并发的上传,单机基本不可能.

    rails 限制不能使用异步方式,所以只能用线程. 按照一个 puma 进程配置 100 个线程,至少要 40 个 puma 进程.

    所以上传这一块,只能用其它的高并发语言来写. 或用 ruby ,但只需要 em 之类的异步方式,与 rails 的数据交互走 redis ,或上传成功后再调用 rails 接口.

    另外一种简单的做法,使用 nginx upload module, nginx 是异步模型,所以不用担心性能问题. https://www.nginx.com/resources/wiki/modules/upload/

    不过, 4000 用户同时上传,按 100Mbps 带宽来算, 一个人的上传带宽只有 25 Kbps . 300 Mbyte 的文件. (300 * 1024 * 8) / 25.6 / (60 * 60) 一个人上传 300M 差不多要 26 小时才能上传完. 改成 1000 M带宽,也要 2.6 小时. 千M带宽的成本真不低吧.

  • Article.all 的 .all 去掉

  • 最重要的不是p2p节点的多吗?

    就跟传销一样,下线要多才赚钱.

    token 不过是一种激励机制,就是传销发展下线一样.不然没 p2p 节点,玩什么?

    你如果认为 token 才是真正的创新,那和传销的舍弃掉商品交易的利润来赚钱,而靠发展下线赚大线没有什么差别.

  • 看puma的日志文件,看有什么输出, nginx 提示 Connection refused ,应该是 puma 启动失败了。

  • Ruby 爬虫框架 at 2017年11月07日

    自己的淘宝客项目在用 scrapy 抓取数据练手.

    公司有其它同事负责的爬虫项目,不过是用 ruby 自己写的,灵活性相对来说比较弱.

  • Ruby 爬虫框架 at 2017年11月07日

    scrapy 挺弱的这个还真不赞同,就爬虫 框架 来说, 代码层次的灵活性真不是其它框架能比的.

    https://docs.scrapy.org/en/latest/topics/architecture.html
    架构清晰, middleware 可以很好的处理用来做些定向网站抓取的异常处理,或 cookies 切换,或 代理IP 切换.
    item pipelines 能够很方便的能数据进行清洗和保存.
    而 downloader 对那些保存下载资源的项目来说,也可以很好的把资源下载下来再保存到本地或 s3.

    scrapinghub 提供了 Splash 这个库,浏览器集成非常高,支持用 lua 或 js来定制,对某些情景来说,直接使用它能很简单的处理一些反爬虫.
    不过 splash 本身有内存泄漏问题,官方的推荐做是是起两个 docker ,前面再用一个 haproxy 做负载均衡,当一个超内存时,直接重启此 docker .

    本身基于 Twisted 异步网络库实现,所以 GIL 的问题影响并没有那么大.

    弱点来说,就是基于 Twisted , 数据库驱动和 ORM 对它支持的并不是很好.
    相对简单粗爆的处理办理参考 Twisted 官方文档,数据保存另外起线程.否则会阻塞整个 Twisted reactor,在一个页面有很多 items, piplines 的保存反而成为瓶颈.
    或使用 redis twisted 库,先保存到 redis,再另外起进程来清洗数据.
    就这个弱点来说,如果在 ruby 中使用 EventMachine ,也会存在此问题.

    如果纯粹参考 scrapy 来实现的话,感觉还是很难超越它.就 ruby 的 EventMachine 库来说, HTTP Client还是第三方实现. 而 Twisted 官方已经在准备 http2 的实现了.

  • linux 不 patch 还是不能用中文输入法,所有我选 vscode .

    上面说的功能大部分 vscode 都实现了.