前些日子用 Google App Engine(GAE)做了个 iGoogle Widget(在墙外,*.appspot.com 被过滤了,很可惜),碰到不少问题,小结分享一下。
先明确几个概念:
Google Account(GA),大家应该很熟悉,基本上 Google 的服务都用这个做认证。
Google Apps Account(GAA),Google 的域名托管服务,具体就不介绍了,没用过的点了链接自己看吧。
同一个邮件地址(通常是自己申请的域名)可以分别注册为 GA 和 GAA,最搞的就是这里,让我来说明一下使用 GAE 流程。
1、首先,在 appengine.google.com 使用 GA 登录,注册一个 App ID,这个 GA 同时也会以 developer 的身份和 App 绑定。
2、如果,这个 GA 同时又是一个 GAA,那么就很~麻烦了,创建后的 App ID 是属于 GAA 的,因此在 appengine.google.com 里是看不到的,只能去 http://appengine.google.com/a/<YOURDOMAIN.COM>/ 管理。
3、https://www.google.com/a/cpanel/<YOURDOMAIN.COM>/Dashboard 这里有一项 Add more services,里面你能看到 Google App Engine 并且可以输入 App ID。在这里添加 App ID 没有任何意义,不会真的给你创建一个新的 App ID,只是做绑定,而且即使输入不存在的 App ID,也不会报错(GAE 官方论坛管理员语)。
简而言之,3 句话
1) 如果你用了一个邮件地址同时注册了 GA 和 GAA,而且使用 GAE
2) http://appengine.google.com/ 在这里创建你的 App ID
3) http://appengine.google.com/a/<YOURDOMAIN.COM>/ 在这里管理你的 App ID,域名绑定也是这里,不是 Google Apps Dashboard
Saturday, January 03, 2009
Tuesday, September 09, 2008
涂鸦(?)
在地址栏中敲入以下命令,页面就会变得可编辑(仅限文字,好像),是个篡改了截屏的好助手。
javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
Wednesday, August 13, 2008
扩展名原来很重要
所谓世事难预料,估计我在 DreamHost 有仇家,今天我的站点突然全线瘫痪,Catalyst 始终报 500 错误。可是,站点程序又完全没有更新过,百思不得其解。Google 了一圈又一圈,抱着死马当活马医的态度,把 pl 改成了看起来更 fastcgi 的 fcgi,哎,就好了。
没想出问题所在,如果哪位大侠精通此道,还望不吝赐教。
[razzle ~]$ cp script/myapp_fastcgi.pl script/myapp_fastcgi.fcgi
[razzle ~]$ diff .htaccess.old .htaccess
1c1
< AddHandler fastcgi-script pl
---
> AddHandler fastcgi-script fcgi
12,13c12,13
< RewriteCond %{REQUEST_URI} !^/script/myapp_fastcgi.pl
< RewriteRule ^(.*)$ script/myapp_fastcgi.pl/$1 [PT,L]
---
> RewriteCond %{REQUEST_URI} !^/script/myapp_fastcgi.fcgi
> RewriteRule ^(.*)$ script/myapp_fastcgi.fcgi/$1 [PT,L]
没想出问题所在,如果哪位大侠精通此道,还望不吝赐教。
Monday, May 05, 2008
perl 调用 localtime 的时区问题
测试用例:
@CentOS 4.2
@CentOS 4.4
Bug 的详情可以参考
http://rt.perl.org/rt3/Public/Bug/Display.html?id=26136
摘要:
一些时间类的模块受此影响,比如 Date::Simple。
CentOS 4.4/ Red Hat Enterprise Linux 4 Update 4 已解决此问题,详情见 perl 的 changelog:
而 perl 的 community patch 应用于 perl 5.8.8 发布之后,此后发布的新版本目前只有 perl 5.10.0。
综上,有以下数种对应解决办法:
相关链接:
小心时区陷阱(一)
小心时区陷阱(二)
{
local $ENV{TZ} = 'UTC+0';
print scalar localtime, "\n";
}
print scalar localtime, "\n";@CentOS 4.2
Mon Sep 24 01:05:52 2007
Mon Sep 24 01:05:52 2007
@CentOS 4.4
Mon Sep 24 01:05:52 2007
Mon Sep 24 09:05:52 2007
Bug 的详情可以参考
http://rt.perl.org/rt3/Public/Bug/Display.html?id=26136
摘要:
* threaded perl calls localtime_r(3) instead of localtime(3)
* localtime(3) calls tzset(3), but localtime_r(3) does not
一些时间类的模块受此影响,比如 Date::Simple。
CentOS 4.4/ Red Hat Enterprise Linux 4 Update 4 已解决此问题,详情见 perl 的 changelog:
$ rpm -q --changelog perl
* Thu May 11 2006 Jason Vas Dias <jvdias@redhat.com> - 3:5.8.5-30.RHEL4
- fix errata testing issues:
o bug 161305 localtime_r_needs_tzset incorrectly not set on 64-bit arches
o generate perl headers correctly to avoid missing / unresolved headers
* Thu Apr 06 2006 Jason Vas Dias <jvdias@redhat.com> - 3:5.8.5-28.RHEL4
- fix bug 161305: call tzset() before localtime_r
而 perl 的 community patch 应用于 perl 5.8.8 发布之后,此后发布的新版本目前只有 perl 5.10.0。
综上,有以下数种对应解决办法:
1、如果 OS 为 CentOS 4.4 以下,使用 yum 直接升级 perl 即可。
2、其他 OS 可以查找是否有相应的 vendor patch。
3、自行编译安装禁用线程(-Uusethreads)的 perl。
4、自行编译安装 perl 5.10.0。
5、给受影响的模块打补丁,Date::Simple 的补丁这里有。
相关链接:
小心时区陷阱(一)
小心时区陷阱(二)
Sunday, May 04, 2008
Apacheのログに携帯のユーザIDを記録する
iモードIDの登場に伴って、三キャリアのユーザIDはすべてHTTPリクエストヘッダから取れるようになった。Apacheの場合、下記ような設定でユーザIDはログに記録される。
SetEnvIf X-DCMGUID ^(.+)$ User-ID=$1
SetEnvIf X-UP-SUBNO ^(.+)$ User-ID=$1
SetEnvIf X-JPHONE-UID ^(.+)$ User-ID=$1
CustomLog "logs/access_log" "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{User-ID}e\""
Monday, November 19, 2007
Cygwin 环境下安装 Gtk2
这里的 Gtk2 是指 Perl 的 Gtk2 模块,Cygwin 环境下通过 CPAN 是无法直接安装的,需要修改了 Makefile.PL 之后手动安装。
这是 Dirk Froemberg 向 Torsten Schoenfeld 提交的 patch,到现在为止还没有被合并进 source。
参考链接:
http://bugzilla.gnome.org
--- Makefile.PL 2006/11/06 00:35:44 1.1
+++ Makefile.PL 2006/11/06 10:24:38
@@ -331,10 +331,6 @@
# this probably needs to go into ExtUtils::Depends.
sub find_extra_libs {
- # right now we need this terrible hack only for windows.
- # unfortunately, this code doesn't work on cygwin. :-/
- return "" unless $^O eq "MSWin32";
-
# win32 does not allow unresolved symbols in libraries, but
# Gtk2 uses on symbols in the dll created for Glib.
# so, we have to break all this nice abstraction and encapsulation
@@ -346,10 +342,19 @@
my $retstring = "";
use File::Find;
- find (sub {
- $retstring .= " ".$File::Find::name
- if /Glib.lib/i;
- }, @INC);
+
+ if ($^O eq "MSWin32") {
+ find (sub {
+ $retstring .= " ".$File::Find::name
+ if /Glib\.lib/i;
+ }, @INC);
+ } elsif ($^O eq "cygwin") {
+ find (sub {
+ $retstring .= " -L".$File::Find::dir
+ if /libGlib\.dll\.a/i;
+ }, @INC);
+ $retstring .= " -lGlib.dll" if ($retstring ne "");
+ }
return $retstring;
}
这是 Dirk Froemberg 向 Torsten Schoenfeld 提交的 patch,到现在为止还没有被合并进 source。
参考链接:
http://bugzilla.gnome.org
Friday, November 09, 2007
寻找被占用的硬盘空间
收到系统邮件报警,有个分区的空间使用率已经超过90%
找来找去,找不到吃掉空间的文件,还是经过好友指点,学到了这个命令:
意为列出已被删除,但仍被进程占用中的文件。然后就是处理(杀掉?)掉相关进程,释放文件,空间就回来了。
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda7 4.9G 4.3G 267M 94% /
/dev/sda1 99M 17M 77M 18% /boot
/dev/sda2 43G 8.8G 32G 22% /data
none 1.9G 0 1.9G 0% /dev/shm
/dev/sda6 4.9G 43M 4.6G 1% /home
/dev/sda5 4.9G 1.8G 2.8G 39% /usr
/dev/sda3 4.9G 1.5G 3.2G 31% /var
[root@localhost ~]# du -h -x --max-depth=1 /
8.0K /opt
2.0K /boot
5.7M /bin
4.0K /data
0 /proc
144M /lib
8.0K /initrd
11M /etc
8.0K /mnt
0 /sys
8.0K /selinux
2.2M /tmp
42M /root
8.0K /var
8.0K /srv
16K /lost+found
17M /sbin
16K /media
8.0K /usr
0 /dev
8.0K /misc
8.0K /home
4.2G /
[root@localhost ~]# ls -al /
total 174
drwxr-xr-x 24 root root 4096 Aug 16 01:23 .
drwxr-xr-x 24 root root 4096 Aug 16 01:23 ..
-rw-r--r-- 1 root root 0 Aug 16 01:23 .autofsck
drwxr-xr-x 2 root root 4096 Aug 23 04:02 bin
drwxr-xr-x 4 root root 1024 Aug 15 19:12 boot
drwxr-xr-x 5 root root 4096 Sep 20 16:41 data
drwxr-xr-x 9 root root 6540 Aug 16 01:23 dev
drwxr-xr-x 67 root root 4096 Nov 9 14:42 etc
drwxr-xr-x 9 root root 4096 Nov 9 14:42 home
drwxr-xr-x 2 root root 4096 Feb 22 2005 initrd
drwxr-xr-x 12 root root 4096 Oct 26 04:03 lib
drwx------ 2 root root 16384 Aug 16 03:43 lost+found
drwxr-xr-x 4 root root 4096 Aug 16 01:23 media
drwxr-xr-x 2 root root 4096 May 3 2007 misc
drwxr-xr-x 2 root root 4096 Aug 15 18:48 mnt
drwxr-xr-x 2 root root 4096 Sep 20 17:07 opt
dr-xr-xr-x 420 root root 0 Aug 16 10:22 proc
drwxr-x--- 6 root root 4096 Nov 9 14:42 root
drwxr-xr-x 2 root root 12288 Aug 23 04:02 sbin
drwxr-xr-x 2 root root 4096 Aug 15 18:43 selinux
drwxr-xr-x 2 root root 4096 Feb 22 2005 srv
drwxr-xr-x 9 root root 0 Aug 16 10:22 sys
drwxrwxrwt 4 root root 4096 Nov 9 22:36 tmp
drwxr-xr-x 16 root root 4096 Aug 15 18:45 usr
drwxr-xr-x 22 root root 4096 Aug 21 16:32 var
找来找去,找不到吃掉空间的文件,还是经过好友指点,学到了这个命令:
[root@localhost~]# lsof | grep deleted
logswatch 14767 zimbra 1w REG 8,7 1830440 384006 /tmp/logswatch.out (deleted)
logswatch 14767 zimbra 2w REG 8,7 1830440 384006 /tmp/logswatch.out (deleted)
......
意为列出已被删除,但仍被进程占用中的文件。然后就是处理(杀掉?)掉相关进程,释放文件,空间就回来了。
Thursday, September 27, 2007
MySQL Users Conference Japan 2007 講演資料公開
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MySQL Users Conference Japan 2007 参加登録者の方へ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
この度は、悪天候の中、MySQL Users Conference Japan 2007にたくさんの方にお越しいただき、誠にありがとうございました。カンファレンス資料を公開致しました。
http://www.mysql-ucj2007.jp/session/index.html
見逃してしまったセッション、もう一度見たいセッションがございましたら、ぜひお早めにダウンロードをお勧めいたします。10月31日まで公開しております。なお、都合により非公開の資料もございます。予めご了承ください。
次回 MySQL カンファレンスに対するご要望をお持ちの方は、ucj@mysql.com までお知らせください。
MySQL Enterprise にご興味のある方は、下記サイトでご紹介しております。
http://www-jp.mysql.com/products/enterprise/
MySQL Enterprise 30日トライアルも実施中です。
購入に関するお問い合わせは、03-5918-7507 までご連絡ください。
この度は、MySQL カンファレンスへのご登録およびご来場、ありがどうございました。
MySQL 株式会社
Thursday, September 20, 2007
Update your HTML::Parser
An example of using HTML::FillInForm
after fill the form...
The declaration was changed which could cause problem in IE. It was fixed in 3.56 released in 2007.01.12.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
...
after fill the form...
<!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
...
The declaration was changed which could cause problem in IE. It was fixed in 3.56 released in 2007.01.12.
Tuesday, September 11, 2007
MySQL Users Conference Japan 2007 - 1
今天是大会第一天,由于路线选择错误,我花了近两小时才抵达会场,台场真的是好远啊。
迟到了一小时,所以错过了 E11(MySQL 高可用性解决方案简介 by Jimmy Guerrero)。
所以就从 J12(使用 DRBD 和 heartbeat 搭建高可用性 MySQL by Patrick Bolduan of MTV Japan)开始了。介绍了一个的案例,2 个 MySQL Master 节点,heartbeat 管理共享的 Virtual IP 以及 MySQL 实例,DRBD 实现数据同步。
这个方案的优点在于不需要人工干预就能实现 failover,M/S Replication 架构如果不考虑事后重建 Slave 这档子事儿的话也算是可以自动化的。缺点是,2 个数据库节点只能用其中 1 个,稍微有些浪费资源。关于 DRBD,一个问题是它本身有开销,会导致 MySQL 性能有一定程度的下降,另一个问题是在数据量大到某种程度后,安全性并不是非常可靠,Patrick 介绍他们测试下来,50GB 左右还是安全的。我对 DRBD 几乎没什么了解,找时间看看。
接下来是 E13(MySQL Performance Tuning and Benckmark by Colin Charles of MySQL AB)。介绍了一下 Tuning 和 Benckmark 的方向和若干工具,因为多数内容都有所了解,基本没有留下笔记。Peter 的 mysqlperformanceblog 大家都说不错,值得常去逛逛。
最后是 E14(面向 Web 2.0 的 MySQL 架构 by Brian Aker)。讲的内容面比较广,这里就略了,有时间以后再补上。Brian 重点推荐了一下 EC2,记一下。
参考链接:MySQL Users Conference Japan 2007
迟到了一小时,所以错过了 E11(MySQL 高可用性解决方案简介 by Jimmy Guerrero)。
所以就从 J12(使用 DRBD 和 heartbeat 搭建高可用性 MySQL by Patrick Bolduan of MTV Japan)开始了。介绍了一个的案例,2 个 MySQL Master 节点,heartbeat 管理共享的 Virtual IP 以及 MySQL 实例,DRBD 实现数据同步。
这个方案的优点在于不需要人工干预就能实现 failover,M/S Replication 架构如果不考虑事后重建 Slave 这档子事儿的话也算是可以自动化的。缺点是,2 个数据库节点只能用其中 1 个,稍微有些浪费资源。关于 DRBD,一个问题是它本身有开销,会导致 MySQL 性能有一定程度的下降,另一个问题是在数据量大到某种程度后,安全性并不是非常可靠,Patrick 介绍他们测试下来,50GB 左右还是安全的。我对 DRBD 几乎没什么了解,找时间看看。
接下来是 E13(MySQL Performance Tuning and Benckmark by Colin Charles of MySQL AB)。介绍了一下 Tuning 和 Benckmark 的方向和若干工具,因为多数内容都有所了解,基本没有留下笔记。Peter 的 mysqlperformanceblog 大家都说不错,值得常去逛逛。
最后是 E14(面向 Web 2.0 的 MySQL 架构 by Brian Aker)。讲的内容面比较广,这里就略了,有时间以后再补上。Brian 重点推荐了一下 EC2,记一下。
参考链接:MySQL Users Conference Japan 2007
Subscribe to:
Posts (Atom)
