Time-based One Time Password Algorithm

Follow the algorithm

As implemented in Google Authenticator app, you’ll need:

  • A shared secret key K, which is base32 encoded
  • a specific time period since UNIX epoch T

I’ll use K = GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ and T = 1450235092 (which is Wed, 16 Dec 2015 11:04:52 CST) for example. In the Google Authenticator App, both K and T are passed to TOTP as hexadecimal values (or byte arrays).

Since K is a base32 encoded string, we’ll decode it to byte format. Password changes every 30 seconds, T should be divided by 30, tuncated to integer and converted to hex and padded to 16 hexadecimal digits.

Continue reading Time-based One Time Password Algorithm

Systemd Timers小结

分析

Linux上的守护进程cron能够根据配置好的crontab定时地执行某一个动作,现在用上systemd了想要找一个替代品,于是找到了timertimer和其他的配置单元结构差不多,只是有一个[Timer]段,在这里可以定义它的行为。基本的写法是Name=Value。

作为一个timer必须要有

[Install]
WantedBy=timers.target

[Unit] Description=Value

这个字段允许添加对配置单元的描述

[Timer] Unit=Value

用于指定该timer触发时要启动的配置单元,如果不写的话,example.timer触发时会执行同名的example.service

[Timer] 绝对触发时间

OnCalendar=Value可以指定在系统时钟的某一特定时刻触发timer。懒的话可以直接使用hourlymonthly这样的词语,也可以输入DAY YYYY-MM-DD HH:MM:SS。比如hourly*:00:00等价,Wed *:00:00就是每个星期三隔一个小时触发一次。 Continue reading Systemd Timers小结

未闻花名

有一次,我梦见大家都是不相识的。我们醒了,却知道我们原是相亲相爱的。——《飞鸟集》

看起来已经改变但却依旧没有改变的大家。故事不禁使人想起昔日很要好的朋友,现在到底在哪里呢?若我们再次遇见,已各自生活在各个领域的大家又能否像以往般的要好?《未闻花名》便是这样的一个故事。

一部主打友谊的动漫作品,讲述了儿时的玩伴如何在长大后疏远,又是如何因为一个契机再度走到一起。每次看都会有莫名的感动,但都和上一次的感触有微妙的不同。

趁着假期的末尾再度温习了一遍,感触很多,都绕在一起说不明白,但是看到引用里的这句话,又突然觉得忍不住忍不住要说些什么,所以来胡乱地表达一下。
Continue reading 未闻花名

自制上海风格的炸猪排

上海的老味道吃过的人都会明白。并不需要解释太多,上海风格的炸猪排在于独特的辣酱油和“薄”。

现在的00后在吃日式咖喱猪排饭的时候大概不会想到炸猪排还有蘸酱油的吃法,而这个酱油也不是一般寿司店的寿司酱油或者是用于热气羊肉的老抽,对于我父母这一代,黄牌辣酱油对于炸猪排,就相当于 cheese 对于 animal fries 一样的不可替代。我父母小时候的“泰康黄牌”酱油现在还是上海炸猪排的首选调料。可以没有面粉,可以没有盐,可以不加面包屑,但是不能没有辣酱油。 Continue reading 自制上海风格的炸猪排

[Updated Aug 10, 2015]正确的调教wine容器和Evernote

Environment

  • 启用了multilib的最新Archlinux 64-bit
    # pacman -Syu
  • 带有monogecko的Wine 1.7.x
    # pacman -S wine wine_gecko wine-mono mono
  • winetricks,干吗的不用说也明白
    # pacman -S winetricks
  • 顺手的下载器和浏览器
    我的是wgetgoogle-chrome
  • 可能一定会用到梯子和proxychains-ng,自行准备,下载字体要用

Preparation

  1. Evernote官方下载安装包
    $ wget -O "Evernote-Install.exe" "https://evernote.com/download/get.php?file=Win"
    ……我可没说一定要用wget,圣战请移步
  2. 开新的wine容器,名称为evernote
    $ env WINEPREFIX="$HOME/.local/share/wineprefixes/evernote" winecfg

    Wine-Initializing-PREFIX
    图1:wine容器正在初始化
  3. 调整wine设定

Installation

  1. 开始安装到指定容器
    $ env WINEPREFIX="$HOME/.local/share/wineprefixes/evernote" wine Evernote-Install.exe

    就像在Windows里那样,一路下一步
    图4:就像在Windows里那样,一路下一步

    重要!不要更变默认安装配置,不然会给后期的更新和查错带来麻烦!

  2. 安装gnutls库
    重要!没有这个东西Evernote根本不能访问笔记存储服务器!
    # pacman -S lib32-gnutls
  3. winetricks中安装msxml3 msxml5 msxml6
    $ winetricks

    在winetricks中选择Evernote所在的容器
    图5:在winetricks中选择Evernote所在的容器
    选择安装DLL组件
    图6:选择安装DLL组件
    安装msxml3 msxml4 msxml5,它们是印象笔记正常读取笔记需要的支持文件
    图7:安装msxml3 msxml4 msxml5,它们是印象笔记正常读取笔记需要的支持文件,按照提示操作,完成后会回到图6
  4. winetricks中安装富文本控件
    winetricks中的富文本控件,需要他们来正确显示笔记格式
    图8:winetricks中的富文本控件,需要他们来正确显示笔记格式
  5. winetricks中的中文字体配置
    配置字体,以防中文字符全是豆腐
    图9:图6中的界面选择第二项配置字体,以防中文字符全是豆腐,如果不需要日文和韩文字符,后两个可以不选

Done! Happy taking notes!

安装及配置完成!
图10:安装及配置完成!
Evernote的托盘图标和windows上的体验差不多
图11:Evernote的托盘图标和windows上的体验差不多
Evernote已经正常运作,现在正在同步我在云端的笔记
图12:Evernote已经正常运作,现在正在同步我在云端的笔记

Post-installation tweaks

开机启动

虽然wine能够处理大多数让windows程序跑起来的工作,但是wine仍然是一个容器,不足以上升到系统层面,因此你并不能强求印象笔记在你登陆时自行启动。
The Linux Way:使用Gnome高级设置gnome-tweak-tool,使用pacman -S gnome-tweak-tool以安装,在自启菜单中找到Evernote的启动器并添加相应启动项。

 更新

就和安装一个新的一样,重复准备步骤1和安装步骤1即可,Winetricks无需再次配置。

Known Caveats

Evernote-in-wine-bugs

1:笔记本分类错误,在试图更改已经存在的笔记的所属笔记本时会发生错误并且崩溃。
解决方案:not yet

2:图片不能自动缩放到适合大小。
解决方案:错误信息提示需要libjpeg.so.8,即使已经安装64位的libjpeg-turbo,32位的Evernote并不能正确加载,安装lib32-libjpeg-turbo以解决问题

[Update Aug 10, 2015]

疑似无法启动的可以尝试安装AUR里的log4cplus

二次元入坑1周年

El Psy Congroo

记得差不多是去年的这个时候,期末考结束,进入每天只有地理课的会考复习,真正意义上的补了石头门,从此入二次元坑再也出不来。

一年的时间里陆陆续续补了几部完结番,追了几部新番,也算是开始混进圈子了。

基本补番都是写代码、调戏服务器的穿插活动,不过根据看不同的番,要么把vim关了看,要么一边敲一边看。
$ bilidan.py -hd http://www.bilibili.com/video/av2079407

看的番不少,大概说几部对我触动比较大的番,最早是《命运石之门》,然后是未闻花名,然后是四月谎,正在慢慢补的罪恶王冠,再就是最近看的CLANNAD和Angel Beats。

石头门大概是看起来设定最科学的有Good End的番剧,虽然在是多条世界线只有一条Steins Gate线是Good End,虐点在于钢轮在最后一条α线跳到β线之前和助手表白的场景,观众或者男主都知道就算表白得到了回应,即使最后真的存在助手和麻油里都活下来的世界线,身边的人也完全不会记得这一切。尽管最后确实能以deja vu的形式回想少量。

罪恶王冠和四月是你的谎言,都是因为一个妹子改变了男主的命运,要是女主不死会是很好的励志片。尽管看到某个场景就知道这TM一定是个flag,看到收flag的结局的时候还是想给编辑寄刀片,不过也意外的达成的不同的虐心效果。

CLANNAD最后也是Good End,中途就已经虐的死去活来了。并不想做太多评价,只想说渚线似乎并不如智代线来的虐,杏和椋线的OVA还没看,准备暑假里趁makepkg -spacman -Syu的时间看好了。

宇宙虽然有起源,却没有终结——无限,
星球虽然也有起源,却因为自身走向毁灭——有限,
穿越每一秒的世界线,只为守护你的笑容

写作CLANNAD,读作人生

樱花满地集于我心,楪舞纷飞祈愿相随

被找到了……

你会忘记吗?
不会忘的,死了都不会忘
没有你的春天,也即将到来

肉体是没有意义的

立于浮华之上,奏响天籁之音