ROS catkin 和 catkin_make 在 overlay 上的区别

TL;DRW

catkin_make 先造的轮子,catkin 后造的轮子(看得到那个 shell 界面优化得也是出神入化了)。

overlay 是个啥?当你想把多个 workspace 同时使用的时候(通常是有一些底层的库被魔改的情况),就需要一层一层地 overlay,其中最底层是 /opt/ros/kinetic,然后就是一层一层的 workspace 了。

今天下午一不小心拿(MoveIt! 推荐的) catkin 做 underlay 的底层 workspace,后面一层的 catkin_make 就死活识别不到 overlay 了。最终两层 workspace 都用 catkin_make,成功。

查了下 catkin 的 issues,似乎是已经修复了 overlay 异常的问题(刚仔细看了下好像是读 underlay 有问题,还不大一样)?然而我用的 ROS Kinetic 下自带的依然有问题啊。

本科走进最后三个月,后知后觉的一点牢骚

人有一点和其他动物没差:是自私的。诸如我写下一篇东西,看起来是免费“分享经验”、“学习交流”,实际上可能只是我有些话想找人说,却不想打扰别人,最后就把这些想法变成了互联网上的十几个千字节数据,自私的是满足自己的一点表达欲、一点存在感、一种说出来的痛快。

突然发现了这一点,再加上发现大家都很忙,并不是多么关心鸡毛蒜皮的事情,自己也突然变忙了,我就好久没写博客了。然而心里总是有话想说的嘛,所以下面这些东西,我也不知道自己在写啥。 继续阅读“本科走进最后三个月,后知后觉的一点牢骚”

关于 0.5% 的刷课党,这里有五组数据

两年前博客(+ 微信订阅号)做过一篇特稿,分析了“公开渠道的教务系统 2016 年 1 月选课期间的一些日志”。写那篇文章让我直面了刷课这个事情,还意外地小小采(tiao)访(xi)了下某个同学。

两年过去,变化还是挺大的。比如,我校教务处终于把新的教务系统完整上线了。还比如,自从上个月新教务系统第一次选课开始,更多的人听说了“刷课”这个词。已经不需要抢课的我,只听说了这次选课期间有人卖课啥的。虽然实际上可能并没这么“道德沦丧”,但大家对这个行为的不齿,是多了一些。

我好奇的是,为啥 2018 年的刷课行业发展成这样子了?新的教务系统并没有可以从公开渠道获取的日志,不过从旧教务系统里看过去几年的趋势,还是可以的。于是这次我使用 Elastic Stack 处理了更大跨度的数据(灌数据进去挺折腾的,不过非常高效),从 2014 到 2017 年选课期间的本科选课操作日志中,得到了下面的一些数据。(以下数据均来自旧教务系统,下简称“教务系统”)

如果太长不想看,这是五组数据的梗概:

一. 大二到大三、2016 至今,进入刷课频道:2017 年暑假 2015 级选课期间操作次数人均 496 次,创了记录。
二. “刷课”一直是少数,但这 0.5% 的玩家越来越多:四年来用户操作次数中位数保持在 50 - 65 之间,刷课的人数成倍增加,在 2017 年寒假达到顶峰。
三. 教务系统的压力从来不小,峰值 QPS 95,大多因为“人多”:选课第一天明明不用抢也是挤爆,卡起来就是死 10 秒钟又闪现 20 秒的体验。
四. 单用户刷课平均每秒 17 次,问你怕不怕:靠刷课党们一“己”之力,还是可以把教务系统搞慢的,最疯狂的人连续一分钟操作 1060 次。
五. 午夜档的热闹从第二阶段开始,刷课党也就个位数:如 2017 年暑假第二阶段的第一场午夜档 218 人参加,其中操作频率极高的也就 5 个人。

继续阅读“关于 0.5% 的刷课党,这里有五组数据”

Manual work after WordPress auto update failed

WordPress 版本都到 4.9 了,全球 CMS 占有量也早过三分之一了,自动更新居然还是全量下载,连个增量更新都不做(光做 no-content.zip 有啥用拜托?)。虚拟主机下载 WordPress 的包速度又很慢,结果总是超时(虚拟主机控制的那种超时断开),更新失败。

网上搜了一圈,居然官方建议是“绝对是你的主机有问题,请手动更新”。网差一点还被说是主机不行?那就只能自己来呗。

My WordPress auto update always failed because of slow download speed. Just don't know why WordPress doesn't implement a incremental upgrade mechanism (maybe I should search for a ticket?). Whatever, I have to solve it manually, in a smart way.

P.S. 写完这篇之后,看到更新的 API 了,的确是有增量更新的,但他们不用。They actually have incremental upgrade implemented, but they hardly use it.

继续阅读“Manual work after WordPress auto update failed”

php-fpm + Apache 的长时间 reading headers

最近为了降低下网络运行成本,在 AWS 上用教育折扣开了服务器,搬了些托管业务过去。兼容为本,自然是 LAMP,不过因为这些年 Apache 2.4 的 event MPM 也算能用了(SetHandler + If 块判断文件存在,完美),加上 http2 不支持 Prefork MPM,就开了 PHP-fpm。

都配完了,没事看 PHP-fpm 的状态页面,总是会看到有进程在 reading header 的状态,而且显示持续时间很长。我以为是什么异常情况,PHP 自动停进程失败了,于是就设置了超 1 分钟强退进程,结果 php-fpm 的日志很快就被这些强退错误占满了。 继续阅读“php-fpm + Apache 的长时间 reading headers”

jzGradeChecker - 优雅查成绩 Graceful Grade-Checking Experience

链接 Links

  • 网站 Website (包含导出数据查看网页 Includes a webpage for reading the exported file)
  • 演示 Demo (这是扩展的欢迎界面,显示效果与实际扩展工作情况无异 This is the introduction page of the extension, which reuses the same core scripts of the parsing code, working identically to the extension)
  • Chrome Web Store

重要提示 Notice

由于原网站在今年改版,成绩查询服务器已经下线,该扩展的读取成绩功能已经无法工作。但因为扩展自定义了一套 JSON 数据结构,即便服务器不可用,仍可通过离线数据实现信息显示,因此在线演示、导出成绩查看器等仍可查看。

Due to the original website upgrade, this Chrome extension cannot fetch grade data any more (the grade check server is down). However, the demo and the exported data reader still work, because I have implemented a customized JSON data structure, which make the code functional by reading the JSON data even if the remote server is unavailable. 继续阅读“jzGradeChecker - 优雅查成绩 Graceful Grade-Checking Experience”

从头开始摘树莓 - Day 2

等待树莓派 IP 的那一刻

昨天配置的 WiFi 热点,按我一直以来的操作,是用电脑开一个热点来凑合。我的电脑是 Windows 8.1,很方便,先打开一个有管理员权限的命令行,然后:

netsh wlan set hostednetwork mode=allow ssid=SSID key=PASSWORD
netsh wlan start hostednetwork
arp -a | findstr -i 192.168. | findstr /V 255

这时候是中午,我接着给树莓派上电,等了好久都没看到 IP,这就很气了。重复了几次,我开始怀疑是系统没正常启动,就查了查网上对树莓派指示灯的介绍。再仔细一看树莓派,居然红的电源灯会闪,这就不大对头了。于是我拿来手机充电器接上 USB 线,没过一会树莓派的 IP 就出现在电脑的 ARP 表里了。

哎,谜团终于揭开,但我已经把卡重做了,也只能硬着头皮从头来过。赶紧先用默认密码(pi:raspberry)连上树莓派的 SSH 再说(我用的是 Bitvise SSH Client,没遇到坑很好用),果然能上,全新的系统哈哈哈。

继续阅读“从头开始摘树莓 - Day 2”

从头开始摘树莓 - Day 1

这是个什么鬼?

还记得许多月前的春天,为了一个项目买了树莓派,折腾 Linux。当时隔壁宿舍的项目也是折腾 Linux 装 ROS,因为校园网下系统太慢,土豪们居然买了手机流量日租包用来没日没夜地下载,每天在机电科协早出晚归的。而我在 headless 的模式下折腾了一两周,也总算是把环境搭起来了。

这几天为了参加比赛,在改代码。改着改着,随手 apt-get upgrade 升级了下系统,结果第二次重启的时候就连不上树莓派了。下午拿到玉神实验室的显示器上看,一切似乎都正常,我正准备看 WiFi 连接情况,突然显示就花了,完全不知道是哪里故障了。

于是,只能从头开始摘树莓了。我先把树莓派上的 Micro SD 卡的内容借着 Paragon extFS 全拷了出来(提示,不要用 ext2fs,我试着在 Windows 8.1 上加载的时候程序永远会崩溃),然后开始重装系统。虽然第二天发现是电源的问题,但因为我备份的时候 Windows 把太长路径的文件丢了一些,拷回去文件权限还不一定对,所以还是只能乖乖重新做一次系统了。

突发奇想,觉得还是记录一下这个操作过程比较好,否则要是后人再重新配置一次,真是太痛苦了。 继续阅读“从头开始摘树莓 - Day 1”