关于邀请码激活的提醒

我们发现有部分同学的邀请码未激活,经过回访发现以下问题:

  1. 部分邮箱会将sae的邀请邮件归档到垃圾箱,请留意查看.
  2. 189/133等号码段的手机可能收不到我们发的短信验证码,如果您收不到手机验证码,请换用朋友和同事的移动手机试试.
  3. 目前SAE暂不开展大陆以外的业务,对港台和国外的同学我们深表歉意.

第二批邀请码发送完毕,多谢大家的支持

第二批500个邀请码已经全部发送完毕.本次邀请码发送活动圆满结束,感谢大家的大力支持.

对没有拿到邀请码的各位,我们要说声抱歉.

SAE刚刚起步,能容纳的应用数还比较有限,所以我们不能为所有申请人都发送邀请,请大家谅解.

随着项目的逐渐成熟,我们会分阶段发送邀请和提升配额,您可以通过订阅博客或者微博随时关注SAE项目的最新进展.

对于拿到邀请码的各位,希望大家能花点时间去熟悉SAE的平台和服务,写出强壮高效的应用.

网站的意见反馈页面我们每天都会查看,有任何意见和建议都可以反馈到这里.

最后,SAE Team在这里给大家拜个早年,祝各位新春快乐~

应用数调整的通知

由于sae的资源使用量有些超出我们的预计,为保证服务质量,暂时进行一些调整.

  1. 每个用户能创建的应用数调整为5个.
  2. 每个用户能建立的Storage Domain数调整为5个.

其他配额不变,包括:

  1. 代码目录单文件大小限制为2M
  2. 每个应用累计代码限制为20M
  3. 每个用户代码总量限制为50M

wp4sae升级,采用Alpha2 API

SAE上用的Wordpress wp4sae已经升级,使用2.9.1中文版,采用sae alpha2 api,数据库使用replication,Mc做Object_cache,欢迎大家使用.

下载和安装说明 http://code.google.com/p/wp4sae/

Alpha2新功能之TMPFS

为什么需要TMPFS

出于性能和分布式结构的考虑,SAE环境上是不允许写本地文件的.

就是说,你不能用php在当前目录生成文件.

需要在本地生成文件的情况大致分以下几种:

  • 缓存
  • 配置文件
  • 静态文件
  • 临时文件

对于缓存来说,我们推荐使用memcached.它基于内存,速度也非常快.

而配置文件,我们建议您在本地做好基础配置(如数据库信息之类),直接通过SDK发布;而需要动态配置的部分,则放置在数据库中.

接下来是静态文件,这部分文件您可以放置到Storage中,存放到Storage还有个好处就是可以通过getUrl方法直接获取到下载链接.

以上几种情况都可以通过我们提供的替代方案解决,但是临时文件却始终是个问题.

像Smarty的编译模板,当然,还有为数众多的函数,只支持文件名参数.

为了解决这个问题,TmpFS就闪亮登场了.

TMPFS的特点

在Alpha2上,我们提供了一个新的常量:SAE_TMP_PATH(在”预定义变量”页面最下方).你可以往这个目录下写入临时文件.

不过特别需要注意的是,这里的临时文件有着特别的生命周期,当前页面的请求执行完以后,这个文件就会被删除.

用代码示范下吧:

在一个php文件中

file_put_contents( SAE_TMP_PATH . '/mycode.txt' , 'dummy test' );
echo file_get_contents( SAE_TMP_PATH . '/mycode.txt' ); // will echo dummy test;

如果是两个独立的php文件.

a.php

file_put_contents( SAE_TMP_PATH . '/mycode.txt' , 'dummy test' );

b.php

echo file_get_contents( SAE_TMP_PATH . '/mycode.txt' ); // 出错啦,文件已经不存在了...

说到这里,大家应该明白,用它做缓存不但不会带来性能提升,反而会带来额外的开销.

那么在什么地方需要用TMPFS呢?

取得一张图片的宽和高等信息

$f = new SaeFetchurl();
$img = $f->fetch('a url of a img');
file_put_contents( SAE_TMP_PATH . '/tmp.jpg' , $img );
print_r( getimagesize( SAE_TMP_PATH . '/tmp.jpg' ) );

SAE第二批邀请码申请和发放开始

Sina App Engine Alpha2已经上线,欢迎大家使用.如遇样式显示不正常请用力刷新您的浏览器.

在新版上线后,我们第二批邀请码的申请和发放也开始了.

本次邀请码总共发放500个.将在本周一到周五每天放出100个.

欢迎大家申请,对于有Web开发经验者我们将优先发放.

这里是申请页面的地址 http://sae.sina.com.cn/?m=inviterequest

服务升级通知

2010年2月1日15:40~17:00,Sina App Engine将升级到Aplha2,升级期间将停止服务.由此带来的不便请大家谅解.

Alpha2新功能之XHProf

XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控.尤其是生成流程图和调试数据对比的功能很好很强大.

在Alpha2中,SAE已经集成了XHProf工具,从此大家可以方便的利用XHProf进行调优了.

下边我们就来看看如何使用吧.

初始化存储

首先要说明的,调试的数据是存放在用户自己的Storage中的,所以需要在Storage中创建一个专用的domain来存放.

进入Storage,新建一个名为 xhprof 的domain.

xhprof_1

捕获数据

然后,我们在需要调试的页面进行数据捕获.

在要进行调优的代码前后分别加上 sae_xhprof_start() 和 sae_xhprof_end() 就可以了.

这里以 开发手册之开发实例PPT中的图片书签 为例.我们给图片处理部分加上调试代码.


if( isset( $_REQUEST['pic_url'] ) )
{
sae_xhprof_start();
$header = $error = '';

if( !$img_data = fetch_url( $_REQUEST['pic_url'] , AKEY , SKEY , $header , $error ))
die( 'can\'t get contents of ' . $_REQUEST['pic_url'] . ' error : ' . $error );

$img = sae_image_init( AKEY , SKEY , $img_data );
$img_data = $img->convertFormat('png');
$small_data = $img->resize( 100 );

$name = time() ;
$s = sae_storage_init( AKEY , SKEY );

if( !$s->writeData( ST_DOMAIN , 'photo_' . $name . '.png' , $img_data ) )
die( 'save img data error' );
else
$url = $s->getFileUrl( ST_DOMAIN , 'photo_' . $name . '.png' );

if( !$s->writeData( ST_DOMAIN , 'photo_small_' . $name . '.png' , $small_data ) )
die( 'save img data error' );
else
$small_url = $s->getFileUrl( ST_DOMAIN , 'photo_small_' . $name . '.png' );

$sql = "INSERT INTO `pic` ( `url` , `small_url` , `timeline` ) VALUES ( '" . $mysql->escape( $url ) . "' , '" . $mysql->escape( $small_url ) . "' , NOW() )";

$mysql->run_sql( $sql );
if( $mysql->errno() != 0 )
die( 'Mysql error ' . $mysql->error() );

echo '

数据成功保存

';
sae_xhprof_end();
}

查看结果

现在我们保存一张图片.然后进入XHProf页面,就能看到刚才的调试数据了.

Screen shot 2009-12-31 at 2.42.30 PM

点击查看链接,就能看到之前产生的调试数据.

Screen shot 2009-12-31 at 2.52.47 PM

通过表格,我们可以清楚的看到每一个函数消耗的时间.更强大的是,点击

[View Full Callgraph]

可以以图像的方式展现本次调试数据.由于生成图像对CPU的消耗还是比较大,目前每个应用每天可以生成100张调试图.

callgraph-1.php

上图就是本次访问的详细过程,点击可以查看大图.其中最消耗时间的部分已经加粗和标红了.

可以看到,图像处理接口是耗时最多的部分.

按条件生成数据

我们并不想用户每次访问都生成调试数据,一来会降低程序的性能,二来也会浪费存储空间.其实只要按条件调用sae_xhprof_*函数就可以了.

比如,每10000次请求,记录一次随机数据.


if( rand( 1,10000 ) == 2 )
{
$xh_open = true;
sae_xhprof_start();
}

// 业务代码

if( isset( $xh_open ) && $xh_open )
{
sae_xhprof_end();
}

或者,传入?debug=1时才记录.


if( isset( $_REQUEST['debug'] ) && $_REQUEST['debug'] == 1 )
{
$xh_open = true;
sae_xhprof_start();
}

// 业务代码

if( isset( $xh_open ) && $xh_open )
{
sae_xhprof_end();
}

调试数据对比

更NB的是,XHProf还支持调试数据的对比.我们修改原来的代码,换用新的接口,然后捕捉新的数据.

重新保存一张图片后,刷新 XHProf服务的页面,已经有多条记录了.

划选两行数据记录最前边的复选框后,会出现比较链接.

Screen shot 2009-12-31 at 3.11.51 PM

点击”比较选中项”.可以查看到两次数据的对比.其中绿色是速度有改进的地方,红色是速度反而变慢的地方.

Screen shot 2009-12-31 at 3.20.02 PM

点击[View Regressions/Improvements using Callgraph Diff],可以通过图像来观察这次的改进.

callgraph-2.php

就像大家看到的,XHProf是非常有用的一个工具,即使是在SAE平台以外开发,也很推荐大家安装使用.

有了如此强大的调试工具,各位更是如虎添翼,期待大家写出更精彩的代码.

Alpha2新功能之新版SDK

首先有一个比较遗憾的消息告诉大家,因为服务器本周才刚刚到位,我们原定元旦发布的alpha2只能延迟发布.预计延迟时间为1~2周.对此我们非常抱歉.

虽然不能马上用上Alpha2,但是我们还是可以先睹为快.下面就让我们来看看新版SAE有哪些新功能吧.

全新的SDK

新版的SDK以用户存储在云端的代码为核心重新进行了设计,以GUI代替了原来的BAT文件,操作起来更直观.

双击am.exe启动SDK,会出现一个登录框.

Screen shot 2009-12-30 at 3.51.46 PM

填上你注册SAE时用的邮件地址和密码,点击OK.

Screen shot 2009-12-30 at 3.37.52 PM

之后就顺利进入SDK的主界面了.

整个界面分为三部分.左侧的App和版本列表框;右上的文件列表框和右下的提示信息框.

App和版本列表框

App和版本列表框可以对你创建的应用和版本进行列表,当你选中其中一个版本的时候,SDK会自动下载对应的代码,并显示在右上的文件列表框中.

applist

如上图所示,App和版本列表框部分还有创建新版本和设置某版本为应用默认版本的功能.

文件列表框

当你选中一个应用的某一版本时,SDK将自动下载代码,并显示在文件列表框.

filelist

在文件列表框中,通过右键可以进行常见的文件操作,如创建文件和目录,编辑和删除文件.

当然不会少了上传文件到服务器,在某个文件上点击右键,并选中Upload,可以将这个文件上传到服务器;点击Upload All,则可以将整个版本的代码发布到服务器上;建议选择文件列表框下setting里边的 Only upload modified files,这样每次只上传有过修改的文件.

提示信息框就不用多讲了,SDK输入的信息都会在这里.

华丽丽的换肤功能

为了满足大家(和我们自己^__^)对界面不同的偏好,我们特意精选了5套皮肤供大家使用.这个功能藏在Operations->skin里边.

Screen shot 2009-12-30 at 4.25.10 PM

命令行增强

除了界面上改进外,命令行版本的功能也有很多改进.最大的变动是原来分散的多个php文件全部合并到了am.php中;你只需要运行

php.exe am.php 命令(upload|downlod|create|quick)

即可执行对应的命令.详细的说明,可运行

php.exe am.php

查看详细的命令和参数格式.

其他的变动包括

  • 修正了输入密码明文的问题
  • 帐号启用加密协议
  • 添加语法检查功能
  • 改进了文件部署信息的存放位置和流程
  • 修复若干小BUG

欢迎大家加入SAE Team

我们提供什么
SAE致力于提供高品质的应用云.
未来新浪公司的相当一部分新应用,都会以SAE作为其平台,我们预计未来一到两年内,SAE上仅内部PV将达到千万级别.
加入SAE Team,你将有机会和这个平台一起成长.
我们将为你提供有竞争力的薪水,充足的成长空间,轻松的氛围和满满的成就感.
如果你真正喜欢Web开发,喜欢新技术,期望用自己的代码改变这个世界,那么这里将会是你的乐园.

SAE第一轮招聘开始啦

这次重点是web方向,稍后我们会陆续发布系统开发,系统架构等职位的招聘,敬请关注.

本轮招聘已经完毕了,非常感谢大家的支持.新加入的同学将和我们一起为打造更好用的SAE平台而努力.

我们提供什么

SAE致力于提供高品质的应用云.

未来新浪公司的相当一部分新应用,都会以SAE作为其平台,我们预计未来一到两年内,SAE上仅内部PV将达到千万级别.

加入SAE Team,你将有机会和这个平台一起成长.

我们将为你提供有竞争力的薪水,充足的成长空间,轻松的氛围和满满的成就感.

如果你真正喜欢Web开发,喜欢新技术,期望用自己的代码改变这个世界,那么这里将会是你的乐园.

招聘职位

Web资深开发工程师[1位]

职位描述

参与以下工作:

  • SAE在线管理平台,用户管理平台的开发
  • SAE新服务的开发
  • SAE平台开源项目的开发和开发社区引导

能力要求

  • 乐于编码,善于学习
  • 基于Llinux/Apache/Nginx/Mysql/PHP/Memcache等技术的大中型项目开发经验2年以上
  • 熟悉CSS/Div/Ajax等前端技术
  • 主导和参与过开源PHP应用项目的优先
  • 有Linux系统开发/Apache模块开发/PHP模块开发经验的优先
  • 有ActionScript/iphone/Android项目经验的优先
  • 学历本科及以上

Web开发工程师(实习)[1位]

职位描述

参与以下工作:

  • SAE在线管理平台,用户管理平台的开发
  • SAE平台开源项目的开发和开发社区引导

能力要求

  • 乐于编码,善于学习
  • 熟悉互联网,了解PHP,有过一个以上的独立项目经验
  • 熟悉CSS/Div/Ajax等前端技术
  • 主导和参与过开源PHP应用项目的优先
  • 有Linux系统开发/Apache模块开发/PHP模块开发经验的优先
  • 有ActionScript/iphone/Android项目经验的优先
  • 211工程院校,明年毕业的应届生优先

工作地点

  • 北京.中关村理想国际大厦

联系方式

  • 简历请发送至 Easychen@gmail.com