不得不抱怨Mysql的权限实在很二。我昨晚搞了半天都没有搞定我的MBP上的古怪问…

不得不抱怨Mysql的权限实在很二。我昨晚搞了半天都没有搞定我的MBP上的古怪问题:

我在机器上面的mysql在命令行下面用mysql -u root可以直接登上去,但是在django里面设置user = ‘root’, password=”却登不上去,而用有密码的用户可以登上去,告诉我access denied。

我尝试重置密码,用sql更新总是不管用,而且我发现更新结果实际上就在mysql.user表里面,直接更新表比使用命令还简单。

幸好 @nicholasdsj 同学指了一下问题,发现因为我的Terminal里面的mysql客户端即使-h登录进去它也默认使用socket连接,但是socket连接忽略了密码……我不知道这是否是我的机器的配置有问题,但是这个古怪的原因造成我使用mysql客户端尝试密码完全失效……实际上总是有密码。最后干脆执行sql清空一下密码:

update user set Password = '' where User = 'root' and Host = 'localhost';

而后python连接没有问题了,清净了。可是Terminal里面每次都需要输入-p参数然后回车进去了。

– I really don’t like programming. I bu…

– I really don’t like programming. I built this tool to program less so that I could just reuse code.
– PHP is about as exciting as your toothbrush. You use it every day, it does the job, it is a simple tool, so what? Who would want to read about toothbrushes?
– I was really, really bad at writing parsers. I still am really bad at writing parsers.
– We have things like protected properties. We have abstract methods. We have all this stuff that your – – computer science teacher told you you should be using. I don’t care about this crap at all.
– There are people who actually like programming. I don’t understand why they like programming.
– I’m not a real programmer. I throw together things until it works then I move on. The real programmers will say “yeah it works but you’re leaking memory everywhere. perhaps we should fix that.” I’ll just restart apache every 10 requests.
– I do care about memory leaks but I still don’t find programming enjoyable.
这里

Reply lifesinger’s blog post: jQuery 让人…

Reply lifesinger’s blog post: jQuery 让人恋恋不舍的秘密

是pattern matching,基于消息的函数调用经常使用这样的模式。因为jQuery的functional风格,所以它使用了pattern matching来收紧api数量,效果很不错。

但是上次mootools的开发者说过jQuery的这种设计也意外的鼓励了一次使用就抛弃的代码风格,容易造成你写只为一个页面而作的代码段。这对于鼓励前端开发减少代码重复不利,从长期来看,由于js还不支持原生的pattern matching,所以jQuery这种方式也能由于api灵活降低一些代码的可读性。

解决了我的Tunnelblick连接再断开openvpn服务后路由出错

每次用Tunnelblick连接我的zztin.com主机后(我的是Mac OSX 10.6)再断开后,我的zztin.com的主机就无法到达了。ping的时候会报告:

ping: sendto: No route to host

这是路由错误的表现,用netstat -nr查看当前的路由设置,发现连接OpenVPN时候推送的route信息没有被清除。我手动试验了一下重建route表:

sudo route flush

然后所有网都连不上了,又netstat -nr一下,发现默认路由没有了,手动添加一下(我家的无线路由器IP是192.168.1.1:

sudo route add 0.0.0.0 192.168.1.1

所有网站都可以用了,包括ssh我的zztin.com。可是不能每次都手动清理呀。查看了一下log,发现的确有问题,有好几行route -delete的时候报错:

ERROR: OS X route delete command failed: external program exited with error status: 77

搜索了一下,发现需要注释掉我的openvpn客户端配置里面的:

# user nobody
# group nobody

然后一切都OK了。

Android and iPhone/iPod touch

配合O’reilly老爷爷的一些想法,我也想想我共鸣的想法:

  • iPhone/iPod touch的界面让你感觉非常自然(人性化),几乎不会给你什么惊讶,学习成本比较小。但是gPhone上面的不少东西都需要你自己的捉摸才能搞定,当然,搞定以后就轻松多了。但是iP系列的确更平滑。
  • gPhone的滚球这个东西,也好也不好。因为很多任务你可以通过拖拽屏幕和触摸实现,你也可以通过滚球和点击滚球实现。所以,由于有两条路,你总会问我应该走哪一条呢?走这两条完成这个任务有什么区别呢?这件事让我很苦恼。估计大部分的gPhone开发者在设计自己的app的时候也会问这个问题吧?
  • gPhone上面联系人与Google联系人,日历与Google Calendar的集成绝对是杀手应用。对于一个喜欢google服务,并且已经将这两个服务在客户端(Address/iCal或者Thunderbird)管理的井井有条的朋友,拿到gPhone以后几乎就是无缝迁移了。非常轻松。配合无线,它简直比通过iTunes同步这些数据要高明多了。这就是云服务的力量。当然那些mac下使用mobileme的朋友使用iP系列也是有同样的感觉。但是mobileme的质量和服务水平都差Google services很远。云服务在无限网络下,才是真正的云服务。
  • 但是在音乐和podcast管理上,gPhone让用户感觉还是差了很多。iTunes对于音乐这种个人收藏来说可能是最佳的管理方式,因为一个好得客户端能够让这些大数据量的同步变得轻松和快乐。而使用了gPhone以后我就在犹豫,我是否应该在手机上听音乐呢?但是如果你有的是iPhone,那么它本来就是一个增强了的iPod,配合iTunes管理好你的音乐,生活就真的自由而快乐了。我希望google能够想办法做一个sunbird的插件,sunbird可以读iTunes的数据,这样我就可以依然使用iTunes,但是通过sunbird享受这种便捷了。
  • gPhone上面访问picasa的功能还没有很好的整合,而Youtube也完全没有利用好,没有提供便捷的上传服务。
  • gPhone上的大部分软件都不不够好,在用户界面设计方面还差iPhone竞争激烈的App store里面的顶级应用很远。这也许因为app sotre启航很早,不过gPhone要走的路可就长了去了。比如Twitter客户端,tweetie/twiterrific/tweetdeck在iPhone上几乎是雄霸,而且都很好用。而Twidroid明显还不够好用……
  • Android的Market不好用,因为管理需要在手机上面完成,很不方便。对比iTunes已经集成了管理、升级、删除applications的功能,相比好用了不知多少倍。
  • Android上的游戏简直就是悲剧。因为没有一个让人眼前一亮的东西。相比之下iPhone平台上让人欲罢不能的游戏简直太多了。可是这里有个转机,就是iPod这个中间产品的出现。似乎拥有gPhone后再买个iPod touch能够更好的解决娱乐的问题,而且电力问题也得到了一定程度上的解决。因为商务部分用电话,娱乐部分用iPod touch,不会因为娱乐耽误了商务问题。

这只是第一部分,时间不够了,待续……

昨天在linode上面提了一个ticket,把我的linode从Newark迁移…

昨天在linode上面提了一个ticket,把我的linode从Newark迁移到了Dallas数据中心。主要原因是最近Newark机房实在太慢,慢到无法忍受,而且经常丢包,ssh也经常被reset。昨晚测速,我是北京的网通,Newark机房scp文件的速度也就是5-6k/s,实在无法忍受。所以下决心迁移。

Re-locating a linode installation这篇文章有详细的介绍

我提交ticket以后大概1个小时以后被通知需要重启以后进行一个migration就OK,我的镜像只有1.7G,所以迁移很快,十几分钟以后就迁移完毕了。然后需要更新一下DNS的指向,因为换掉机房以后IP也变化了。

很奇怪,给人家的server部署munin很方便(包括centos或者ubunt…

很奇怪,给人家的server部署munin很方便(包括centos或者ubuntu),但是自己的ubuntu server的munin却一直什么都输出不了。我已开始只看了/var/log/munin下的munin-node.log和munin-update.log,但是没什么迹象,只是发现有个别文件无法写入。后来修正了一下权限就都解决了。可是我的/var/www/munin还是空的。

后来才发现问题都记录在/var/lib/munin下的munin-update.stats和munin-graph.stats里面。其实罪魁祸首还是权限问题。解决方法如下:

  • 首先把/var/www/munin, /var/lib/munin, /var/log/munin/, /var/run/munin的权限都修改为munin:munin(如sudo chown munin:munin /var/www/munin)
  • 然后登录为munin用户,sudo su – munin –shell=bin/bash
  • 执行/usr/bin/munin-cron,看看有什么报错,如果是权限问题就修改权限

此时/var/www/munin就不是空的了。最后分析主要原因就是执行了某教程上说的sudo /usr/share/munin/munin-update –force-root,结果造成munin的数据文件的权限编程了root:root,后面munin的cron脚本用munin的用户执行/usr/bin/munin-cron的时候就出错了,无法写入。