Talk is cheap

Show me the code

使用命令行工具处理图片

2018-07-06 19:53

用手机拍摄的照片将要在互联网上公开转播的时候,我通常会担心两点。第一,图片的 EXIF 信息会不会泄漏;第二,尺寸太大,传输速度不理想。虽然大部分服务商都会压缩图片,但如果不是自行处理一下的话还是会感觉怪怪的。但如果使用 Krita/GIMP 之类的工具,有些杀鸡焉用牛刀的感觉。所以简简单单的命令行工具就足够了。

删除图片的 EXIF 信息

这里用到的第一个命令行工具是 exiv2 。删除 EXIF ,只需要一条命令就够了:

exiv2 rm *.jpg

然后图片的 EXIF 信息就没了。

这个工具也提供 prpr 的功能,不过是用来打印 pr(int) EXIF,不是你们想象的那种:

exiv2 pr *.jpg

输出的格式像这样

- MORE -

MelodyPlayer α 测试

2018-04-26 16:09

没想到这个坑这么快就填上了,以后我也能在博客里面插入音频啦~~

顺便推荐一首歌,这几天开发的时候一直单曲循环的:

パレットには君がいっぱい · ぽわぽわP

这篇博文还没写完,似乎就又出现了三个 bug ... 囧rz ... 这里就先不立什么新功能的 Flag 了,有机会把 bug 都修掉再考虑吧 ...

制作极限压缩的 Material Icons 图标字体

2018-04-24 23:31

UPDATE: 写了一个傻傻的 Python 脚本 来自动处理字体,只要将所需要的图标名称每行一个写入 icon-names.txt ,就能一键生成压缩好的字体文件。(2018/04/26)

以下是原文。


这几天挖了 新坑 MelodyPlayer ,其中有用到 Google 的 Material Icons 。虽然它的 woff2 格式只有 42KB ,但我只用了其中的 10 个图标,加载整个字体文件显得很不划算。虽然 Material Icons 提供了制作 Sprite 的方案,但只有 SVG 或 CSS Sprite ,我的用法是 <button> 里写图标的名字,不能兼容。

我不愿意改代码,于是想寻找一种提取字体中特定字符的方法。

经过一番搜索,找到了 fonttools 这个强大的工具,可以精确控制字体文件的每一个 Glyph ,最大限度压缩字体。

- MORE -

另一个,四月的尾巴

2018-04-24 01:27

躺在床上,但并无一点睡意,好想写点什么。

前天的天气很热,热到晚上睡觉都出汗。但昨天又很冷,风雨交加,出门要穿长袖。

这几天在搞我的 MelodyPlayer ,使用 WebComponent 的音乐播放器。很认真的写样式,逐句优化代码,感觉像是在对自己的前端姿势做一个总结。谁不需要一个播放器呢。

斑驳

- MORE -

拿回已经被抢注的 GitHub 用户名

2018-04-18 19:33

ID 跟别人重复是一件非常尴尬的事情。尤其是当你想出一个自认为“绝妙”的 ID ,然而却被别人捷足先登的时候。但 GitHub 的 Name Squatting Policy 允许 inactive 的用户名被收回,然后重新被注册。

几年注册 GitHub 的时候,发现 @rocka 这个用户名被注册了,虽然很失望,但是也只能放弃这个念想。再仔细看一下那个用户的主页,虽然注册时间很早(2011 年),但是没有一个 Commit 、 Repository ,甚至连一个 Following 都没有。

rocka's previous owner

- MORE -

今天天气很好,但我心情很糟

2018-03-30 18:05

今天是周五,没有体测训练,而且周末也要来了,本来可以是一个很慵懒放松的日子。至少在接到母亲的电话之前,我是这么想的。

在这停顿

- MORE -

本学期第三周的周三,我在想些什么

2018-03-21 23:31

时间总是在不在意的时候飞速的流逝,摸鱼两个星期之后,第三周也快过去一半了。

今天早上起得特别早,急匆匆吃过早饭,赶着上了本学期第一次课。这可能是本学期第一次吃早饭吧,过得真失败。

实验室的同学们纷纷找到了实习岗位,而我从 3 月 5 号第一次电话面试之后就再也没了下文。简历投了阿里前端,可能有些不自量力了。“如果这次不过我就去考研”,一开始是这么想的。虽然现在还处于 “面试中” 的流程,但多半是凉了吧。等结果出来,也许会写一篇 “月饼厂 2018 实习生面试经历” 之类的文章吧。

上星期又拾起了 ElectronNCM 这个项目,已经是 一年前 的大坑了呢。虽然有断断续续在维护,但当时的架构设计真的很差,好多地方牵一发而动全身。那时还不会用 Webpack ,写了好多代码,但打包之后运行不起来,于是到处查找文档和资料,硬是折腾了一个星期。这也是我第一次用上 CI ,还写了一个 发布页面 用来下载打包好的文件,不过这些都是后话了。现在拾起来,又萌生了重构的想法,架构一定要合理,还要有代码提示。于是选择了 TypeScript + Inferno.js ,然后又开始折腾 Webpack 。过几天也许会写一篇关于 Electron 应用打包方式的吐槽吧,或者是 Webpack 使用的经验 踩坑 之谈?这样想着。

说到考研,其实心里是有那么一丝抗拒的。在大学里也没用好好学数学,还以为终于能逃离数学了,然而如果没有坚实的数学基础,恐怕只能做一个蹩脚的 API Caller 。我还年轻,还没谈过恋爱, 不要成为社畜啊…………

- MORE -

一次意外的 rm -rf

2018-02-10 14:42

本事件发生于 2018 年 1 月 9 日 晚 22:27:41

我最喜欢的 Interactive Shell 是 Fish 。Fish 有个特性是自动补全命令以及目录。当你在 Fish 中输入 ~ 这个字符,按下 Tab 键,就会列出一系列系统中已存在用户的 home 目录来供你选择。

Home 目录补全

- MORE -

突然的归家(下)

2017-12-10 23:58

火车大概走到一半的时候,父亲突然在微信上给我发消息:“到哪里了?”我有些诧异,因为母亲说过让我不要告诉父亲我回去的事情,想必是她自己说了吧。我便如是回答到了哪个站。接着父亲又说,“你姑姑会去接你”。我虽然有些奇怪,因为以前总是父亲来车站接我的,但也没问下去。 在出站口迎接我的,是表弟。“这么快就出来了。”他漫不经心地说着,同时带着我向前走。山东的天气还是有些冷的,但由于没有刮风,感觉甚至比杭州要暖和一些。尽管如此,我还是把手连同衣袖一起塞在外套口袋里面,并把外套的拉链拉到了最高的位置。

坐上姑父的车,一行几人便开始寒暄起来。无非是关于冷不冷啊,上课忙不忙啊,什么时候实习毕业之类的问题。我算是认真地回答了一下,但心里还是期待着回家。很快到了我家楼下,姑父、姑姑以及表弟一起上了楼。

开门的是我父亲,看起来精神状态还不错,只是声音很沙哑。父亲见到我,心中的喜悦都洋溢在脸上,赶紧叫我们进来坐下,并交代母亲准备饭菜。这时候已经大概是 20 时了,姑姑一家早已经吃过饭,便在客厅与父亲交谈,我则在厨房吃饭。晚饭是烧饼,加上西红柿炒鸡蛋以及菜花炒肉。十几分钟后,我吃完了饭,姑姑一家也差不多要离开了。

回到客厅,这才开始好好地看看父亲的样子。父亲看起来没什么异样,只是脚下放着一个痰盂,时不时就要往里面吐些什么。我稍微问了一下,只是简单地答道,“是咽炎。”“既然是这样,那就少说些话吧”,我说道。父亲又问到回程车票的问题,我其实还没买。既然没什么大事,不如星期日下午回去,星期一还能赶得上上课。这么商量着,就买好了回程的车票,顺便用掉了本年度第二次学生优惠购票机会。

因为实在是有些累,又聊了一会,我就去洗澡睡觉了。感觉没什么特别的,父亲好像只是得了点小毛病,没什么大不了的吧。至于为什么要叫我回来,母亲说,父亲一开始想让你元旦的时候回来,但你觉得不合适没有同意,父亲也尊重你的安排。但我看他实在是想你了,就把你叫回来,直到火车快到站时才跟父亲说的。感觉,也没什么大事,就当放假回家看看嘛。毕竟,在我上大学以后,除了寒假暑假,就没有回过家。

- MORE -