GPD MicroPC 使用感受

前言

四月还是五月的一天,无聊的我在地铁上刷今日头条,突然看到一个文章,说 GPD 又出新玩具了(准确的说是生产力工具)。一看价格也不贵,京东众筹 1999。于是买了一台,算是了却心愿。

说起来我对袖珍电脑有兴趣不是一两天了,一个是大学上课带电脑偷偷玩东西,电脑巨大无比不好藏,而且真的很重。大学用的昭阳 K29,虽然是台 12 寸的笔记本,但是由于巨大的 9 芯电池, 重量不输一般的 15 寸笔记本,每天上课十分健身。所以一直以来都想要小型化的电脑。

上班后,在北京的公司里接了一个做嵌入式设备的项目,然后做完了需要出现场调试设备。那个设备本质上是个工控机,但是没有屏幕。需要用串口线连进去 tty 控制,所以大笔记本也是麻烦。 那个时候就看到了 GPD Pocket ,没记错的话 3300,咬着牙买的。那个时候每个月到手也就6k,为了这个分期+吃土三个月。体验嘛,真的很方便,现场设备很小挂在墙上, 笔记本的话需要拖着很难搞。而这种便携设备只需要放在盒子里,连好线敲就是了。

那个嵌入式项目结束后,pocket 就一直在吃灰。究其原因,铝合金外壳,漂亮,但是烫手,ATOM 处理器真的很热。而且性能对于电脑软件真的稀烂,幸好我只用 XShell。Chrome总会无端崩溃, 估计也是性能的锅。而且,只有一个标准尺寸 USB 口,接了鼠标就没法弄U盘,为了 pocket 还买了个宜丽客马克鼠,就为了不占住 USB 口。(顺带一提,我的马克鼠也在吃灰)

OhMyPushBot ———— Telegram 推送 Bot

前几天做的小玩具

OhMyPushBot

Telegram 是个有趣的聊天工具,最好玩的就是它十分开放 Bot 系统。相比于微信公众号这种层层审核还一堆限制,或者 QQ、微信 机器人这种强行扒官方协议的灰色接口, Telegram 提供的 API 非常简单。你可以用 Bot 管理 Channel,制作好玩的 Bot,这一切只需要和 BotFather 聊聊天,就可以设置并创建一个Bot,完全不需要等待审核。

制作这个 Bot,最大的用处就是方便一些自动化脚本通知事件结束。一般的场景下,自动化脚本要发送通知,多数使用发送邮件的方案,但是发送邮件需要使用专用的工具。 而且一般的邮件需要自己检查邮件情况,早些年有过黑莓的PushMail服务,几百元一个月的服务费也不是一般人玩得起的。现在好了,Telegram 作为一个免费 IM 工具, 完善的客户端支持(Linux、Windows上都有,各大手机平台也都有),比较实时的推送速度,简直是事件通知最佳的选择。

几种报表SQL常用的时间分组写法

写了小一个月报表相关的SQL,把最容易忘的记下来

最近在公司的任务多数是写各种报表,SQL最长的格式化完了有30行,各种 JOIN 和 UNION ALL 拼 N 张表里的数据。其中最常用到的就是按照时间分组。

假设有如下表

员工名(VARCHAR) 交易金额(INT) 时间(DATETIME)
张三 66 2017-06-23 19:34:00
张三 166 2017-06-23 19:36:00
张三 566 2017-06-23 20:34:00
张三 934 2017-06-24 21:34:00
李四 661 2017-07-01 10:36:00
李四 83 2017-06-25 19:34:00
李四 23 2017-06-26 19:34:00

如果想查某个时间段里每个人的总交易金额报表,大概的 SQL 写完应该是这样的

SELECT `staff_name`,SUM(`money`),(DATE_FORMAT(`time`, '%Y-%m-%d')) AS date_char
FROM table_name
WHERE `time` >= "开始时间" AND `time` <= "结束时间"
GROUP BY staff_name,date_char

其中最重要的部分就是 date_char ,它决定了时间分组的粒度。

服务器 Docker 化笔记

五一期间折腾了一下服务器的 Docker 化,踩了好多的坑,写文记录下来。

起因

起因很简单,五一去玩了一圈,结果到处都是人,所以在家猫着总得折腾点什么。 在公司写东西日常使用 Docker,目前对 Docker 的操作也非常熟悉了,所以总想着把我的服务器 Docker 化

先说一下我的基础配置,Kimsufi 的 KS-7 主机,i3 处理器,8G 内存,2T 硬盘,100M 带宽。 内存很充裕,就可以放心的折腾 Docker 环境。事实上我最后弄完几个容器,实际服务器占用也就 500M - 700M 左右。

重装服务器

由于我的主机已经用了一阵,所以服务器里很多已经抛弃的东西,也有很多正在用的东西。首先要备份数据到其他地方,我还有其它的服务器,所以把有用的数据 rsync 送到别的服务器上。

Kimsufi 登入管理面板,重新安装最新版的 CentOS 7。配置 SSH Key,升级最新软件包和内核。Kimsufi 安装的时候要注意,一定要勾选 use distribution kernel 选项。 如果没有勾选这个选项,Kimsufi 会给你安装定制版的内核,我不太清楚定制版内核会带来什么优势,但是目前来看只会造成麻烦。所以一定要使用发行版自带的内核。

Alpine with CGO

今天折腾这个一天,记录下来免得未来踩坑

Alpine with CGO

Golang 很棒,静态编译十分方便。但是,它也不是 100% 静态编译的,因为它需要依赖glibc ( 标准C运行库 )。

而 Docker 最常用的 Apline 镜像,使用的是 musl 库,并不能愉快的运行 Go 程序

网上大部分教程都是教你,CGO_ENABLED=0 go build -a -installsuffix cgo,使用纯 Go 编译,不用 CGO 链接 glibc ,问题就可以解决了。

但是最麻烦的问题是,你需要引入 C/C++ 库的时候,你并不能禁用 CGO 。

幸好 Alpine 有包管理器,所以我们可以很愉快的安装所需要的库。(我之前尝试手动安装glic和libstdc++,很难弄)