2015年3月

OSX中查看和显示实时网速

系统版本:OSX Yosemite 10.10.2

很多程序(特别是命令行程序)在进行在线更新、下载等活动的时候不显示进度条或者速度,如果下载的内容很大时很难确定是否正常在更新或下载。

Windows下很容易找到带实时网速监控的软件(比如说国内很多电脑管家类软件的加速球等)。MAC上也有这样的软件,比如口碑很好的iStat Menus等,不过类似的软件要么很久不更新要么就是收费——而且往往还不便宜。

如果像我一样只需要最基本的系统状态监控功能,查看一下实时的CPU或是网络的使用情况等,那系统自带的活动监视器就完全能满足这样的需求。

可以按下 command ⌘ + 空格 输入 活动监视器 来打开这个程序,打开后就可以看到系统的使用情况。如果不想一直开着这个窗口,可以点击 显示 - DOCK图标 选择要显示项目后就能在DOCK栏上实时监控情况了。程序默认的更新频率有点慢,可以在 显示 - 更新频率 调高。

最后效果如图,有点简陋,不过够了。

show-network-status-on-dock

Supervisor引起的UnicodeEncodeError

网站之前的文件上传流程会把上传文件的文件名统一修改成UUID字符串,这样做避免了一些文件名造成的麻烦不过也让文件名不易被识别(搜索引擎喜欢有含义的文件名)。考虑到文件上传部分只向管理员开放,所以修改了代码让上传后的文件保持原有名称。

在本机上修改代码后可以正常运行,但是同步到服务器上后就一直出现

UnicodeEncodeError: 'ascii' codec can't encode character
的错误(在上传文件时出现)

问题分析

一开始认为GIT在合并分支过程中出问题,代码没有正确的合并到Master分支——这个猜想很快被排除了;

然后又排除了系统编码(我开发是在MAC OS或是WINDOWS系统上,服务器是UBUNTU)的问题;

后来尝试直接在服务器上用python manage.py runserver lcfcn.com:8080把网站运行起来,结果错误消失了

看来问题不在Django身上,我用django UnicodeEncodeError with nginx, django UnicodeEncodeError with nginx gunicorn作关键词搜索相关信息(服务器上Django运行环境是Nginx+Gunicorn+Supervisor),结果也没找到解决问题的办法,后来看到这篇文章里面提到了Supervisor,赶紧在关键词中加上“Supervisor”又Google了一下,发现果然是它的问题。

解决方案

Step One 第一步

/etc/supervisor/supervisord.conf(推荐)或者项目Supervisor配置文件的[program:program_name]中加上:
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Step Two 第二步

运行如下命令重新启动Supervisor
$ /etc/init.d/supervisord stop
$ /etc/init.d/supervisord start
WARNING!!! 仅运行/etc/init.d/supervisord restart或者简单地重起项目是不会生效的!

完成这两步后,(在你的网站通过manage.py runserver能正常运作的前提下,)问题应该能解决掉。

另外,在查阅资料过程中也看到不少值得注意的类似问题,例如Nginx中的Charset设定、系统的编码设定等都有可能造成类似的错误。

参考资料

http://tech.barszcz.info/2012/05/17/django-unicodeencodeerror-when-uploading-files/

http://albertoconnor.ca/blog/2012/Jul/21/unicodeencodeerror-when-uploading-files-django-usi

http://stackoverflow.com/a/10986010

Homebrew和Homebrew cask

Homebrew和Homebrew cask的关系

Homebrew是Mac下的软件包管理工具,就像CentOS下yum或者Ubuntu中的apt一样;

Homebrew Cask是Homebrew的一个扩展;

Homebrew一般用来安装命令行界面(CLI)的程序,例如mysql, php等;Homebrew Cask一般来用安装图行界面(GUI)的程序,例如QQ, Chrome之类;


说点题外话,感觉Mac App Store实在是多余的东西,版本更新慢,很多著名软件都不愿意在上面上架,除非安装XCODE这样的官方产品不然实在没有什么存在的必要。MAC的软件安装方式本来就不是很统一,多一个MAS后想装个软件都要动脑子想是从MAS上装还是去官网装,很不爽。

再记一点和MAS有关的事:如何判断一个软件是从MAS安装的还是从网上下载后安装的?

方法一:
进入Mac App Store后搜索已软件名称,如果是从MAS安装的,那软件的下方显示的是“打开”,如果不是从MAS安装的,那显示的是“获取”;

方法二:
进入Launchpad, 按住某个APP(触控板三指按住),等所有APP开始抖动后(像IPHONE上删除软件一样),如果APP图标左上角显示[X]号,那就是从MAS安装的。