作者: meathill

  • 关于武汉理工的两个记忆

    关于武汉理工的两个记忆

    这两天武汉理工事件炒得很凶,我暂时不评论。中国大学就那个德性,每年都有几个被老师压榨致死,最后多半不了了之——这是整个社会只追求效率不追求公平正义在校园里的反应,类似的事情太多见。

    不过我并不喜欢武汉理工,建议大家有机会的话不要选择。我在武汉上大学,跟武汉理工有一点点联系,记录如下:

    1. 紫燕百味鸡

    从地大去武理比较方便,门口 709,这个终点站到那个终点站,行程大约2小时,上车就睡,撵人了就昏昏沉沉的下车,就到了。

    武理公交站有一家紫燕百味鸡,我习惯拿到钱去买一份夫妻肺片,没记错的话10块钱一碗,够吃一顿,配上一碗素面,很过瘾很解馋。

    这也是对武理比较好的印象。

    2. 欠薪不给的老师

    我之所以会坐2小时的公交去武理,是因为给那里的一位肖姓老师做翻译兼职。他可能做课题,要把一份教会杂志《Truth for Today》翻译成中文。最初是我一位同班同学接到的,他做不了,拿给我做;肖老师对我的作品很满意,评价说比他的研究生议得更好。

    这份工作我做了蛮久,挣了一些钱,现在看来简直血汗工厂的要死:10块/页,A4 左右的幅面。一本杂志52页,就是520块,我当时每个月家里规定给600块,所以等于多出一个月的钱,还是很补的,所以也不觉得被压榨,哈哈。

    可是就在我翻译完最后两本并交付之后,肖老师却消失了。打电话不接,去武理也找不到,甚至连他一开始特别宝贵的原版杂志也不问我要了。我也没办法,在武理也不认识其他人,去一趟往返就是4、5个小时,时间成本也很高,我自己还有很多其它事情,最后就拖着拖着放弃了。

    总结

    我并不是说这两件事情之间有什么联系,不过我的确不喜欢那所学校。

  • WP Super Cache 的 max-age 有问题

    WP Super Cache 的 max-age 有问题

    我厂做的是高性能网关,CDN 也是其中一大功能,所以就要吃自己的狗粮。之前多次尝试在七牛上配置全站 CDN,均以失败告终,这次因为是自家的产品,可以找同事咨询,所以打算再试一次。

    配置过程暂且不提,基本上很顺利。结果在缓存上遇到一些麻烦,源站(也就是我的博客)控制为:max-age=3,所以基本上完全失效。

    由于这个东西很多地方都可以控制,所以只好逐一排查。首先打开 WP Super Cache 的配置——它负责缓存,所以从它找起——无果;然后 Google “wordpress cache-control”,无结果;然后 Google “max-age=3”,发现这个地址:Cache-Control max-age=3, must-revalidate,原来缓存 max-age=3 竟然是插件的问题,而且一直保留至今。

    按图索骥,打开 /wp-content/plugins/wp-super-cache/wp-cache-phase1.php,没有找到,原来这段已经被挪到 wp-cache-phase2.php,而且亦然没改……修改为 86400,缓存就可以 HIT 了。

    至于这个地方是不是 Bug?我觉得是。这么短的时间不科学,如果真的这样,不如放出来给用户选择。

  • 应用创意:我也是大腿

    应用创意:我也是大腿

    直播界风起云涌,如今很多大主播的号召力已经不亚于三四线小明星,比如陈一发。相信很多人都知道,相信很多人也看过这个视频:主播真会玩鬼畜篇08:暴击女王陈一发。像我这样的中老年人其实对 B 站和鬼畜都不怎么感冒,不过对这种视频的传播效力很感兴趣。

    今天百度发布了分词产品,虽然我很讨厌百度,但不得不说这个分词产品和它的语音合成产品都给我们这些不会语音合成的开发者创造了新的可能,算是百度积累的一件功德,略微降低了我对它的恶感。

    接下来介绍的这个 idea 我其实琢磨一阵子了,它是一个工具,可以用来合成任意鬼畜视频。工作流程如下:

    1. 抓取直播视频,提取音频文件。现在大主播都有回看功能,应该不难。
    2. 把音频文件切割后,利用百度语音转换成文字。切割主要根据停顿,方便识别句子。
    3. 把时间点和文字入库备用。
    4. 选择一首歌,或者自己写个段子
    5. 使用 ES 之类的工具,检索出匹配度最高的句子;也可以使用百度分词工具,分词,查找最匹配的段落
      1. 合成结果类似:
        白日依山尽 ( 2018-01-01 1.mp4,10:10:10-10:10:25)
        黄河(2018-01-02 2.mp4, 10:10:12-10:10:15) 入海流(2018-01-02 3.avi,10:15:22-10:15:35)
        欲穷千里目(无匹配)
        更上一层楼(4.flv,0:0:15-0:0:35|5.mp4, 1:1:1-1:1:20)
      2. 纯文本文件,方便保存和版本管理
    6. 人工预览一遍,对个别词进行调整
    7. 自动裁剪拼接配乐输出视频
    8. 完成

    这样一来,即使主播本人未播过的歌曲,也可以根据素材合成出来,比如 陈一发儿:~老公~要抱抱~要亲亲~嗯~人家要嘛~

    目前这里面所有步骤都可以使用工具和比较简单的开发语言完成,如果你想积攒编程经验,又无从下手,且喜欢看各种女主播,这个 idea 就不妨拿去一试。

  • 升级依赖的一些小感受

    升级依赖的一些小感受

    今年陆续把公司主力项目的依赖升级了一下。一部分在 XPS13 上完成,一部分在 iMac 上完成,这里记一下感受。

    配置对比

    XPS 13

    购于2016年11月,基本算是比较新的机器。

    • Intel i7-7500 2.7G 2核
    • 8G
    • Windows 10 家庭中文版 + WSL

    iMac retina 27 2015款

    购于2015年,当时打算用得久一些,所以升级了 CPU。

    • Intel i7 4G 4核
    • 8G
    • 独显
    • Mac OS

    使用感受

    同样使用 yarn add 安装依赖,XPS 明显慢于 iMac,体现在两点:

    1. XPS 需要更新 1w+ 的包,iMac 只需要更新 1k+
    2. 更新完毕后,XPS 需要数分钟让 WebStorm 重建索引

    所以使用 XPS 的效率远低于使用 iMac,大约只有 20%。

    原因

    其它方面则没有这么明显的差距。可能因为 SSD 的关系,在其它对硬盘有要求的地方,XPS 表现比较理想,比如开关机、启动游戏等。我初步估计是 WSL 的 io 比较低效,因为 npm run dev 启动的时间比较慢,但是一旦启动之后,编译时间可以接受。而且之前 rm -rf 的速度也非常慢,明显慢于使用 Windows 资源管理器。

    原来计划趁着 618 或者双 11 换一台新版高配 XPS 13,现在要再考虑一下。不过好像 MBP 2017 也不咋样……

    或者想办法装个 Linux 系统跑一跑试试看,估计会比现在好一些。

  • 应用创意:好宝宝

    应用创意:好宝宝

    在带孩子的日常中,我遇到一些问题:

    1. 孩子喜欢看动画片、玩游戏,作为打了30年游戏的老游戏迷,我认为这是合理的
    2. 但是时间不好控制,主要体现在两点:
      1. 单次时间。我也贪玩,也有时候工作,所以并没办法一直看着他,经常一玩就是1个小时,我回过神来才去把板板关掉。
      2. 多次时间。有时候会给他规定,每天玩一个小时,自己好好吃饭奖励半个小时,不收玩具罚没半个小时等。但执行起来不好好记账根本就忘完了……
    3. 除了看动画片,还有很多其它东西想限制,比如买玩具。因为只有一个宝宝,所以身边所有人都给他买玩具,很难限制住。

    所以,我想做这样一款应用,暂名好宝宝,是一个记账类型的产品,不过记账的目的是限制小朋友的娱乐内容和时间。

    初级版

    初级版基于 Android 手机和定时器,大部分功能和高级版通用,只不过交互形式是图片文字动画。

    分为家长端和宝宝端,最好能够局域网互通,实在不行再搞中央服务器。

    家长端

    1. 可以对项目内容、数量进行设置,比如“看电视”,“1小时”,“每天恢复1小时”等
    2. 可以设置任务,比如“收玩具”,“奖励看电视1小时”等
    3. 可以给宝宝评价,每天一次,1~5星
    4. 可以设置大任务,比如“收玩具15天”,“攒够100颗星”等

    宝宝端

    1. 可以看到当前还有哪些权益可以享受
    2. 开始享受后,计时,到时间自动提醒,比如半个小时或者时间耗尽
    3. 可以展示任务进度
    4. 可以查看自己的打分日历

    高级版

    高级版基于智能音箱和家电控制。用于这样的场景:

    “宅叔叔,我今天还能看电视么?”
    “可以,亲爱的,你还能看‘一个小时’。你想继续看《帮帮龙》么?”
    “是的,我要看。”

    或者:

    “宅叔叔,我要玩火车游戏。”
    “不行哦,你已经不能再玩了。不过你爸爸说,如果你能‘把作业做完’,就可以多玩‘半个小时’。”
    (做完作业后)“我作业做完了。”
    “好的,请拿给你爸爸检查吧。(片刻)好了,可以了,玩得开心些。”

    青少年版

    当孩子长大,开始领月规钱的时候,也可以用这个软件自动划拨。

  • 重振旗鼓

    重振旗鼓

    自从2105年年底查出糖尿病之后已经过去了2年半,一开始剩勇犹在,坚持着运动了半年,直到2015年天气转热,然后就懒了。接下来体重就开始慢慢反弹,现在已经重回120kg高位。

    看着春节在海边拍的照片,我决定不能这样了!既然老天爷给了我一次重来的机会,我不能轻易放弃!

    于是我计划在接下来的大半年时间里,好好计划一下,加强体育锻炼。第一步,为锻炼留出时间:

    1. 取关段子手和营销号,减少花在刷微博上的时间
    2. 每天只刷一次煎蛋
    3. 每天只刷一次 NGA
    4. 晚上12:30关电脑,1点之前关手机;争取把睡眠时间调整到12点之前

    接下来,锻炼身体:

    1. 每周日上午打篮球——上午人比较少,球技退化的我心理压力比较小
    2. 办一张游泳卡,每周至少游泳两次
    3. 遛狗的时候听书,不看手机,这样可以走的快一些,也顺带帮姆伊锻炼身体。另外遛狗的路线要加长。
    4. 晚上吃完饭后日常沉蹲+卷腹+俯卧撑

    为了能够有足够多的听书资源,鉴于已经删了得到,应该:

    1. 安装微信读书
    2. 开发上次提到的“稍后再听”

    随时提起干劲,争取用高昂的工作热情促使身体释放糖分

    同时,管住嘴,告别一切零食加餐,只吃正餐。

    希望能坚持到明年这个时候。

  • 应用创意:以后再听

    应用创意:以后再听

    以前有个应用叫以后再读,Read it later,后来改名为 Pocket,我现在还在用。不过我的需求是以后再“听”,因为很多时候用眼不方便,比如开车、遛狗,都要用眼;而且白天写代码,感觉眼睛也挺累的,时不时就干涩几天,也想让它俩歇歇。

    所以就希望有这样一款应用:

    1. 包含 Android iOS 浏览器插件
    2. 手机端支持微博分享和微信分享,只需要分享网页
    3. 分享后,进入转换队列,可以加标签和提醒
    4. 服务器端下载网页,提取主要内容,然后分段转换成语音
    5. 全部转换完成后,合并文件,然后推送提醒
    6. 直接打开应用,可以查看收藏、转换进度,听,等等
    7. 可以有分享

    刚才搜索了一下,暂时没发现符合标准的应用。如果找不到的话,我就打算自己做了,哈哈。

  • 网站抓取工具 website-scraper

    网站抓取工具 website-scraper

    临时需要抓一个网站,搜索了一下,发现 website-scraper,用了一下感觉不错。它有如下优点:

    1. 基于 Node.js 和 NPM,系统无关
    2. 可以根据链接抓取整个网站
    3. 文档齐全,仓库还有人维护
  • Vue  小贴士

    Vue 小贴士

    书说简短:

    1. 使用 Vue + Webpack 开发
    2. 使用 CDN 加载依赖
    3. 在开发阶段尽量不要使用压缩的文件,一边取得尽量全面的错误信息

    (更多…)

  • Safari 下 Date 不支持”2018-01-01 00:00:00“

    Safari 下 Date 不支持”2018-01-01 00:00:00“

    前两天发现一个小程序的问题,Android 正常,iPhone 出错。我们都知道,Debug 的关键在定位,如果是某些特殊环节,不常见的错误,就会浪费很多时间。

    这个 Bug 也是如此,反复拉锯之后终于发现,问题出在下面这句:

    let a = new Date(`${date} 00:00:00`);
    

    date 是服务器端返回的值,我是把它和后面的 00:00:00 连起来,记作某天零点零刻,和今天的零点零刻做减法,计算日期差,并按照日期差来决定接下来的逻辑。这段代码在开发工具(包括 Mac)、Android 手机上运行都正常,只有在 iPhone 上不正常,于是我打开 Safari——苹果这点做得不错,桌面版 Safari 环境和 iOS 几乎没有差别,该出的问题一定会出——果然复现了这个问题。

    按照规范,中国的日期格式是:“2018/01/01”,Safari 只支持这个格式。而 2018-01-012018-01-01T00:00:00 ISO 格式,Safari 也支持,但是会以格林威治时间为准,和我们有8小时的时差。Chrome 和 Android 内嵌的 WebView(基于 Blink 或者 Webkit)则都支持,所以在本地和 Android 手机上没有问题。