博客平台迁移基本完成

终于可以在自己的博客上写下划时代的第一篇文章了,这真是个里程碑。
话说上次在临时的 Ghost 博客上发表关于我之前的 VPS 提供商事情的文章时,我根本没想到我会自己写一个博客程序。
当时觉得自己从头写博客程序好麻烦,尤其是想到什么插件机制、主题机制之类的。
不过后来转念一想,如果只是自己用的话,什么主题支持根本不需要去做(况且 Django 的 App 分离策略可以让单一功能的模块做成一个 App ,对我来说也相当于插件)。
写就写,谁怕谁啊,又不是没做过网站。

阅读剩余部分 -

Maybe a new start?

This post was posted on my temporary blog site, as my blog went down during the last two months. Some information could have been changed after its publication.
Now the new website is online ( built with Django ), and that temporary blog will be offline in approximately two weeks.

Several weeks ago my former VPS provider stopped nearly all services for its users, without any proper notification. In the meanwhile, I was home for my winter vacation and could not do anything about it, as I had no Internet connection. And after trying to contact customer service, I thought it might be a good time to start blog again.

阅读剩余部分 -

iframe 无刷新文件上传

最近写的一个小站,搭建在 SAE 上的一个私有相册类应用,带简单的用户管理和权限控制。在写后台图片上传的时候遇到一点小问题。因为是搭建在 SAE 上又不想开启 Storage 服务,所以图片存储就只能找第三方的服务。正好发现七牛云存储有免费套餐,而且支持很多常用的图片操作(比如缩略图可以不用自己手动裁了),就打算集成到这边来。以下所说的是上传图片到七牛云存储的私有空间中的一种方法。

阅读剩余部分 -

发布自用Typecho主题Nook

好吧,其实这个主题我用了很长时间了,只是一直觉得有缺陷,才没有分享出来。期间甚至还试图将 Bootstrap 整合到整个后台里去,但还没有完成,就看到官方发布 Typecho 0.9 beta 的消息,于是我把 BooTypecho 项目从我的 GitCafe 上撤掉了。(那段时间还真是迷恋 Bootstrap 呢)

现在发布的这个主题就是我博客现在在用的,基于官方 0.8 版本的默认主题,添加 Bootstrap 并稍作修改的浅色调主题。具体的修改内容在我去年的博客文章《博客主题更改》里有说过。这次正式发布与最初的版本就修改了两处地方:

  1. 顶栏搜索表单的提交按钮从 input[type="submit"] 修改为 button[type="submit"] ,因为火狐下样式有缺陷会造成高度不一致(这是 Bootstrap 自身就有的问题)。同样地, 404 页面的搜索表单元素也有这个变化。
  2. 顶栏的“全站首页”链接改为可以设置的选项。如果你的博客是在子域名下或者子文件夹下,可以在这里填入顶级域名,会在导航栏上显示出来。
  3. 页脚样式缺陷修复。之前的版本要依赖特定的页脚元素 class 才能呈现 Bootstrap 样式的页脚。现在我把这部分样式合并到了 style.css 中。

阅读剩余部分 -

关于密码

中秋放假三天。因为在 Windows 下,所以除了写简历之外也没有其他的什么事做,想起还有去年 CSDN 爆库时下载的600多万帐号密码数据,就写了几个 Python 小工具分析了一下。结果大致如下。

阅读剩余部分 -

近况

回来看看,才发现上一次写东西是快一个月之前了。这段时间真是有够忙的,不过真正在忙我自己的事的时间确实少得可怜。

首先,我跟计算机学院的同学和老师合作的一个网站上线了。点这里:录取线 - 往年各院校录取分数线查询,或者这里:录取线后备站点。这个网站其实非常简单,不过数据的收集存储是一件很麻烦的事情,所以从成型到上线花了比较多的时间。

其次就是,我加装了一块硬盘,空了一点空间出来安装了一个 Windows 7 系统,因为暑假有一个项目不得不用万恶的 Windows 。引导的问题,我本来想用 Grub2 自动检测解决,还为此专门在微博上请教了盖子老师,不过最终没有用。因为后来考虑到硬盘其实不会经常拆卸,所以把 Windows 硬盘挂到了主硬盘位置( BIOS 里设置主从顺序无效,不知道原因), Ubuntu 挂到了光驱位。 Windows 引导用的是 EasyBCD ,添加了 Ubuntu 系统; Ubuntu 用的是 Grub2 。

嗯,就是这样,然后我又开始了对 Windows 的狂轰滥炸。安装 Visual Studio 2012 的时候,看到它最先开始的操作是创建系统还原点,嗯,呵呵。一个公司要对自己的系统多么没有信心才能干出这种事来?其他各种问题我就不说了,简直人干事。

使用 selfoss 搭建自己的 RSS 阅读器

突然想要有一个自己的阅读器,其中肯定有受到 Google Reader 关闭的影响;次要的原因则是尝试了一些手机阅读器觉得没有一个合适自己的,而且我手机经常处于离线状态,阅读很不方便。经过一番考察,觉得 selfoss 不论从 UI 还是速度、管理的便利性来说,都是非常不错的;而像 Tiny-RSS 的 UI 就过分老旧了。

虽然这个开源项目很优秀,但我不得不吐槽的就是它的配置文件使用 ini 文本格式,稍不留意就会被搜索引擎抓到配置文件(想想里面可是有数据库的用户名和密码啊啊啊啊啊!!),不过这个通过 Nginx 的配置可以严格控制,拒绝一切访问。

通常的配置请参考这里。我主要记录下遇到的问题。

首先貌似提供的 Nginx 配置文件中的监听端口是 IPv6 端口 ,我的 VPS 没有去折腾这个,所以要把配置里的端口改为 80[::]:80 改为 80 );然后记得依次更改服务器名、文档根文件夹路径等改成自己的;随后关掉 access_log (文件会很大而且一般没什么用);把 upstream 块去掉,修改 location ~ \.php$ 块中的 fastcgi_pass 为 LNMP 默认的 unix:/tmp/php-cgi.sock 。(或者可以直接在 upstream 块中修改 fastcgi_pass )到这里就可以使用 selfoss 了。生成新的密码,使用 /password 提供的密码 Hash 生成器,输入要你想设置的密码明文,复制生成后的 Hash 字符串,登录你的 VPS ,把 Hash 字符串粘贴到 config.ini 里相关位置就修改好了密码。

还有一点就是,貌似 selfoss 默认使用的是 HTTPS 连接,我的 VPS 不支持,所以要将 config.inibaseurl 项使用 HTTP 的完整地址覆盖掉。

安装后会发现无法添加 RSS 源,总是弹窗提示列表加载错误。这是因为默认禁用了 PHP 的 scandir() 函数。修改 /usr/local/php/etc/php.ini 配置文件,搜索 scandir ,将其从 disable_functions 中删除, reload 一下 配置即可。

本来是很简单的一个安装配置过程,却花费了我几乎一天的业余时间。主要是因为不熟悉 Nginx 配置文件的格式,总是忘记语句后加分号(写多了 Python 的缘故?)。收获有:

  • 又一次地认识到了标点符号的重要性;
  • 知道了一个简单的终端文本编辑器 nano ,满足所有编辑配置文件的需求,又不像 Vim 和 vi 一样过于复杂以至于不会用。

在 Ubuntu 下使用 Nero AAC Codec

自从大二那年发现 AAC 格式音乐后就一发不可收拾,现在我的所有音乐文件里 MP3 屈指可数,大部分都是从无损文件转换过来的 AAC 格式。我最喜欢的 Windows 软件是 Foobar 2000 ,转换格式超级方便。转战 Ubuntu 之后我第一件事就是找 Foobar 2000 ,作者坚持只开发 Windows 版本软件我也可以理解,但是这样的话我那一堆还没转格式的音乐就遭殃了啊,我也不能每次增加新歌就去借用别人的 Windows 机器啊。

后来我在翻以前的 Foobar 2000 设置的时候发现音质最好的 AAC 是使用 Nero 编码器的 512kbps 、双通道编码的文件,而且 Nero AAC Codec 是有 Linux 版本的!所以后来我就苦逼地写脚本转换。。。

怨念啊……原来用 Foobar 的时候只要右键转换就帮你搞定了一切,输出临时文件啊、双通道编码、复制音频属性啊什么的。现在要自己动手了才发现根本不知道人家是怎么实现的。

所以现在在写一个图形界面的转换器,设定就是只能使用 Nero 编解码器的。项目地址在此:PyAACGUI

2014.07.19 更新本段内容

PyAACGUI 这个项目已经停止更新,推荐使用重新设计实现的 PyAACGUI2
新项目可以使用多进程(多 CPU 核心)加快队列文件的转换,并且可以指定 Nero AAC Codec 的位置,对系统有洁癖的人士也可以放心使用。
目前实现的功能有:批量队列转换,就是可以选择很多文件排队转;自动清理临时文件,要是转换完留下一大堆临时文件会气死人的;转换进度提示;转换后删除源文件(可选);可指定临时文件存放位置(可以存放到 /dev/shm 加快速度);UI 的多语言支持(现在支简体中文和英文)。

然后说下怎么安装 Nero AAC Codec 。这个套件其实包含三个程序: neroAacEnc 是 AAC 编码器;neroAacDec 是解码器(可以从 AAC 文件解码出来 WAV 文件);neroAacTag 是标签读写程序,用于读写 AAC 文件的音频标签。

要安装这个的话有两种方法。一个是我自己用 Debreate 制作的 DEB 软件包,下载地址。用这个的话比较方便,我自己测试过,没有权限不对无法运行的问题,因为软件包在安装后会参照 sudo 程序修改 Nero 套件里程序的权限。

还有一种就是自己去 http://www.nero.com/eng/company/about-nero/nero-aac-codec.php下载压缩包。下载之后解压,进到 linux 文件夹下,把三个程序复制到 /usr/bin 下,然后参考 /usr/bin 下的其他二进制程序设置权限。

要注意的是,必须要修改权限,否则你自己在终端里用起来是没有问题,但是 root 用户就没法运行这些程序了,在其他程序里对它们的调用也会失败。

某次元的超地图炮:洋葱及杀人事件

如果有一天我死在东华理工,一定是被一食堂左边那个炒面的大叔咸死的。—— Mes Mo

如果有一天我死在哈尔滨,百分之九十是被毒死的,而且案件百分之百会不了了之。(顺便提一句,剩下百分之十的可能性是地面塌陷、大桥(因为车辆超载而)倒塌、游荡在大学城的杀手。)

阅读剩余部分 -