dapengde

我发现你的一个不好的习惯就是老是想把好多功能塞进同一个包里。比如现在拼音输入完全是中文输入主流,五笔和四角号码都差不多淘汰了,塞进去有点奇怪。更何况包名是pinyin,不是wubi或者sijiaohaoma。

我觉得先把一件事情做好做到极致的扎实 再去想怎么锦上添花吧

中文转拼音我看来是非常有价值的工作,丢掉可惜。看看这个爆栈网的问题,八个答案了没一个好用的

====

同样上次那个sinx包在另一个帖里也吐槽过,三十多个依赖简直想把你吊起来打一顿…初衷挺好,收集有意思的留言跟fortune一样打出来。结果塞进一堆唐诗宋词金庸语录养生记录,还做了花哨的Tshirt,还塞了个cowsay包进去,我几次尝试拿砍刀大刀阔斧地清理一番最后都生理性抗拒地做不下去了…

    tctcab 做精之后再锦上添花,谁不想啊,却是不能。pinyin 包只要解决多音字问题,就完美了,然而卡在这一步已经很久,无计可施。

    五笔和四角的功能是用户后来要求的。我的本意是既然默认字库 'pinyin' 和备选字库 'pinyin2' 仍然不完善,那就允许用户自定义字库。刚好有用户提出五笔和四角的需求(这个用户做汉字方向的字型研究用),就以此为例,做为自定义字库的示范。当然,为了突出拼音的 c 位,五笔和四角这两个字库都没有安装到包里,而是用的时候才下载。

    pinyin 包开发过程里的故事详见:<https://openr.pzhao.org/zh/tags/pinyin/>。 我不是要彻底丢掉,而是先放一放。最近一两年生活工作有大变动,忙不过来。另外,我一直希望有人参与进来一起做。openr 一直期待新成员。自己做起来比较无趣。

    sinx 包确实依赖太多了。这个属于玩嗨没收住。只要把 cowsay 砍去,我估计能少一半依赖。我也是生理性抗拒地懒得修改。

      tctcab 刚开始开发包的人都容易这样,乱七八糟的东西都塞在一个包里。比如在我的第一个 R 包 animation 中,我最初就把毫无关系的 formatR::tidy_source() 塞在里面了,过了很久才把它移出去。所以后来我就建议初试开发 R 包的人先折腾几个不太重要的包,踩过一些常见的坑、养成一些克制的习惯之后再开发重要的包。

      dapengde 加载字典你可以用懒加载的方式,这样就只需要加载一次了。大意如此(核心是那个双箭头):

      lazy_dic = local({
        res = list()
        function(dic = c('p1', 'p2')) {
          dic = match.arg(dic)
          if (!is.null(res[[dic]])) return(res[[dic]])
          res[[dic]] <<- {
            Sys.sleep(5)
            '这里是耗费时间的加载字典过程'
          }
          res[[dic]]
        }
      })
      lazy_dic('p1')  # 慢
      lazy_dic('p1')  # 快
      lazy_dic('p2')  # 慢
      lazy_dic('p2')  # 快

      Cloud2016 这些价值几个亿的东西我在没遇到非常合适的应用案例之前一般先不会叫唤(写代码容易,一到写文档就犯懒了)。我放在包里面只是我隐约感觉它们会有用。现在才终于找到 blogdown.filename.pre_processor 选项的一个完美应用场景了。

        dapengde

        这周末我会fork这个包出来仔细研究一下说不定能完善一下。

        1 个月 后

        dugucan 歪了几十层楼后回到正题。

        鉴于已经有五个人碰到这个问题,我终于抄起键盘把它修正了。请测试:

        remotes::install_github(c('rstudio/rmarkdown', 'rstudio/bookdown'))