Web那点事儿

因为不想做审核后台,这周把Server酱升了个级

bottom_logo

做后台一直是一件很无趣但又不得不做的事情。总是各种数据的列表,查询,修改,没有什么好玩的东西。还有审核也是后台用得最多的功能,而且实时性要求高。

Slack出来后,我一直在想聊天式界面是不是可以解决后台的界面开发问题。

以查询为例,你只需要在微信里边说「修改18号候选人的资料」,然后后台发给你一个链接,点进去就是这个候选人的修改界面。

以审核为例呢,当有人上传了新的简历,服务器会直接把简历内容(以Markdown格式)Post到Server酱的一个URL,然后你就能用过微信看到这份简历。更好的是,简历内容下边还带有「通过」、「拒绝」的操作按钮,直接点完就处理好了。

听起来是不是很帅?

于是这周把Server酱做了个升级,添加了TalkAdmin模块。

在TalkAdmin里边,上边的第一种命令叫做上行命令,第二种命令叫做下行命令。上行命令是由用户主动发起(给微信服务号发送语音)的,而下行命令则是由用户自己的服务器主动发起(调用Server酱incomingWebHook)的。

更详细的说明,请移步TalkAdmin的文档吧 http://sc.ftqq.com/TalkAdmin.wiki

互联网公司和软件工程那些事

关于软件工程,我一直有一些零散的想法,正好@技术人攻略 这期聊这个话题,于是顺手写了这篇「散」文。

关于延期

2004年,我大学毕业到新浪时,正好参与了一个大型的互联网项目——新浪教育频道见习就业项目。进度是由项目经理控制的,光是需求分析报告叠起来有一个iPhone侧面高。过程还算正规,有ER图,有数据结构表,还有界面示意图。从项目开始我们就天天加班到晚上四五点,回去睡个觉,早上9点回来接着干。还记得我和伟平半夜3点出去买烟,回来看见前端的妹子一边哭一边嵌页面。最后项目还是延期了蛮久。

出于对加班的恐惧,那时候我就对软件工程产生了兴趣,然后读了大量关于软件工程的书,统一过程、敏捷开发、极限编程以及最后期限、人月神话这些周边。我试图弄懂,为什么需求和开发之间,会有如此之大的鸿沟,以至于它能成为一门独立学科。

这个思索持续了多年,我一直没有找到合适的答案,直到2009年我回到新浪,担任新浪云计算产品经理。

SinaAppEngine项目8月立项,11月上线第一个版本,整体进度延迟3天(这就是为什么它是11月3日上线的),当时我们就五六个人。我在新浪云负责的最后一个大项目——新浪云商店第一期上线,没有进度延迟。

这让我发现,延期最核心的问题其实并不在于过程,而在于需求。作为一个曾经开发过亿访问量系统的产品经理,我可以异常精准的控制需求和进度。我们在需求分解时,可以在技术实现级别讨论时间表。最终我们的时间表可以精准在小时级别,误差在天。这招屡试不爽,从快简历到JobDeer.com,我们的进度延期都最多几天。…

HeroKu的HTTP API 设计指南(中文版)

简介

本指南中文翻译者为 @Easy ,他是国内首家互联网人才拍卖网站 JobDeer.com 的创始人。转载请保留本信息。

本指南描述了一系列 HTTP+JSON API 的设计实践, 来自并展开于 Heroku Platform API 的工作。本指南指导着Heroku内部API的开发,我们希望也能对Heroku以外的API设计者有所帮助。

目录

基础

  • 总是使用TLS
  • 在Accepts头中带上版本号
  • 通过Etags支持缓存
  • 用Request-Ids追踪请求
  • 用Ranges来分页

请求

  • 返回适当的状态码
  • 总是返回完整的资源
  • 在请求body中接收JSON序列
  • 使用一致的路径格式
  • 小写所有路径和属性
  • 支持非ID的参数作为快捷方式
  • 少用路径嵌套

响应

  • 总是提供资源(UU)ID
  • 提供标准的时间戳
  • 使用ISO8601格式的UTC时间
  • 嵌入外键数据
  • 总是生成结构化的错误信息
  • 显示频率限制的状态
  • 在所有的响应中压缩JSON数据

文档及其他

  • 提供机器可读的JSON格式
  • 提供人类可读的文档
  • 提供可执行的示例
  • 描述稳定性

落地页优化必用的离站提示JS工具:Ouibounce

这次和大家分享一个我们在做落地页优化的时候用到的很有意思JS —— Ouibounce

说起离站提示,我们都会想起on leave事件,但on leave不能指定自己的文案和样式,而且弹窗非常生硬,只能yes or no。

我一直以为也只能这样了,直到看到了Ouibounce。

它可以在用户关闭网页之前显示自定义格式的模式窗口。原理大概是识别鼠标移动,然后触发事件。

演示效果如下:

687474703a2f2f636c2e6c792f696d6167652f32433270306c3357314d30302f6f7569626f756e63652e67696

 

其实是个很小的trick,但Jobdeer官网加上它以后,每天多了大概10个用户帮我们分享到微博,非常有效,建议做落地页优化的时候不要忘了它。

你可以点击 http://abc.jobdeer.com 查看效果,当你试图去关闭页面时,就能看到分享窗口啦。Ouibounce自带cookie识别,保证每个用户只会显示一次。…

GearMan PHP调用实例

安装好GearMan和PHP扩展后,调用起来其实是一件很简单的事情:

需要写一个PHP后台脚本,一直运行着。

$worker= new \GearmanWorker();
$worker->addServer();
$worker->addFunction(“import_weibo_friends”, “import_weibo_friends”);

while ($worker->work());

function import_weibo_friends($job)
{
// 函数实现
}

需要注意的是,除了要set_time_limit(0) 以外,还要修改socket的最大连接时间

@ini_set(‘default_socket_timeout’, -1);
set_time_limit(0);

然后就可以在其他地方随意调用了:

/**
* @ApiDescription(section=”Weibo”, description=”导入微博关注”)
* @ApiMethod(type=”get”)
* @ApiRoute(name=”/weibo/import/friends/”)
* @ApiParams(name=”token”, type=”string”, nullable=false, description=”JdToken”)
* @ApiParams(name=”acode”, type=”string”, nullable=false, description=”微博AccessToken”)
*
* @route GET /weibo/import/friends/
* @field_check $acode:z|t|not_empty “微博AccessToken不能为空”
*/
public function importWeiboFriends( $acode )
{
$client= new \GearmanClient();
$client->addServer();
$ret = $client->doBackground(“import_weibo_friends”, $acode );
return send_result( $ret );
}

 

 …