6
十一/11
0

用Drupal快速实现mobile平台服务端

用Drupal很容易实现一个API,让手机平台或者其他系统使用json的格式进行通信。
<?php
define('API_ERRORNO_INVALID_ACTION', 1);
define('API_ERRORNO_INVALID_PARAM', 2);
define('API_ERRORNO_NO_RECORD', 3);
define('API_ERRORNO_INVALID_NAME', 4);
define('API_ERRORNO_USER_BLOCKED', 5);
define('API_ERRORNO_LOGIN_FAILED', 6);

// 根据错误代码返回错误信息
function api_message_wrapper($errno) {
  $message = array(
    API_ERRORNO_INVALID_ACTION => '非法的请求动作',
    API_ERRORNO_INVALID_PARAM => '非法的请求参数',
    API_ERRORNO_NO_RECORD => '查找不到数据',
    API_ERRORNO_INVALID_NAME => '非法的手机号码',
    API_ERRORNO_USER_BLOCKED => '当前用户已经被禁用',
    API_ERRORNO_LOGIN_FAILED => '登陆失败',
  );
  return isset($message[$errno]) ? $message[$errno] : '未知的错误';
}

// 验证合法的action
function api_action_route($action) {
  $valid_actions = array(
      'login' => 'login',
      'register' => 'register',
      'getCardInfos' => 'get_card_info',
  );
  return isset($valid_actions[$action]) ? $valid_actions[$action] : false;
}

function api_menu() {
  $items['api'] = array(
    'page callback' => 'api_dispatch',
    'access callback' => TRUE,
    //'access arguments' => array('使用API'),
    'type' => MENU_CALLBACK,
    'file' => 'api.functions.inc',
  );
  return $items;
}

// 成功返回
function api_response_sucess($data) {
  drupal_json(array('ERRNO' => 0, 'DATA' => $data));
}

// 失败返回
function api_response_error($errno) {
  if ($errno && is_numeric($errno)) {
    drupal_json(array(
      'ERRNO' => $errno,
      'MSG' => api_message_wrapper($errno),
    ));
  }
}

// API调度入口
function api_dispatch() {
  if (!isset($_POST['ACTION']) || !api_action_route($_POST['ACTION'])) {
    api_response_error(API_ERRORNO_INVALID_ACTION);
  }
  elseif (!isset($_POST['PARAM'])) {
    api_response_error(API_ERRORNO_INVALID_PARAM);
  }
  else {
    $param = json_decode($_POST['PARAM']);
    call_user_func('api_call_'.  api_action_route($_POST['ACTION']), $param);
  }
}
关键字:
4
十/11
3

Mac平台软件推荐

玩linux桌面5年多,习惯了更新发行版,用各种各样的开源软件来搭建自己的工作环境,高度定制自己的桌面以及和网上的朋友们分享桌面应用。而前段时间朋友送我一台mbp,顺势就玩了玩这个操作系统。说说与linux的桌面体验差别。

网上很多文章对比mac,linux desktop以及windows平台的工作环境,很多都是很浮躁的看法,我这三个平台都使用过,其中linux最长,mac使用了也就4-5个月,所以看法应该还是比较客观的,如果哪里说得不对,还请各位朋友少扔板砖。

看问题都有角度,我的角度就是一个开发人员和互联网工作者。先说说linux平台的好处,最大的就是可以随意定制,比如研究一个新的开源软件,可以随意编译,配置和安装,加上现在的linux发行版已经做的相当好了,几乎都不用自己来做(比如archlinux),很多爱好者自己打包给大家分享,于是有了AUR。wiki比较成熟,论坛也比较活跃。优点也就是缺点,频繁的升级,更新会给系统带来稳定性的威胁,经常会出现某个库出问题导致应用无法启动或者crash掉。mac平台比较统一,但同时也限制了用户的自由。当时参考了一篇老外写的从linux平台迁移到mac,给出了一些软件参考,觉得很有用。加上这段时间的整理和筛选,给开发者朋友们分享下。

互联网时代用得最多的就是浏览器吧,chrome,firefox和原生的safari都是不错的选择,firefox专门用来做前端开发用,就是因为firebug这个插件。剩下两个浏览器都有firebug,但是lite版,几乎都是残次品。。。safari和系统集成最好,比如支持很多lion的手势和快捷键,缺点就是插件稀少,不能同步书签。一个折衷方案就是chrome,更新较快,lion出来没多久就支持全屏工作了。

开发工具我试过很多,textmate和coda被普遍认为是mac平台的最优秀的开发工具,但是比较昂贵,很多人都选择团购。由于我是从linux平台迁移过来的,自然选择了macVim,免费功能强大插件多,用来做一般的编辑足够用了。另外配备一个强大的IDE就是netbeans,使用最多的就是它了。

文档方面就是iwork了,微软那个office for mac我没有用,速度太慢了,虽然兼容性最好,但是想起来那龟速我就放弃了。实在遇到兼容性问题,就往parallel desktop里面一扔,用office 2011直接处理。现在的parallel desktop性能好了很多,又跟lion很好的结合,可以无缝切换,全屏工作,很是方便。

IM工具呢使用最多的就是skype了,最好最文档可视频。msn用adium搞定,没有用微软那个,同样很慢,而且总crash。腾讯官方的QQ已经到1.2版本了,最近更新很给力,差不多功能都支持了。邮件客户端用的是mac自带的mail,更新到lion以后全屏体验加上类似gmail的邮件归组,很方便,多个邮件账号imap设置后新邮件会在dock里面提示。FTP和SFTP工具用的最多的就是transmit了,能导入filezilla以及一些其他ftp工具的书签,而且有同步功能,可以根据修改日期或者文件大小来选择,很是方便,做站点发布的时候经常用。迅雷出了mac版以后几乎就淘汰其他下载工具了,最近更新也比较给力。reeder是最好的google reader客户端,每天用他来看一些咨询和文档。evernote这个跨平台的笔记软件几乎是必装的,翻墙时候就把ssh账号信息丢到issh里面轻松搞定。词典翻译呢系统自带的字典比较少,但有软件可以将星际译王的词典转换过来,我就转换了4个比较常用的字典文件,以前在linux平台下用星际译王的时候留下的。最后mac本身没有卸载软件的功能,cleanapp就能满足需要了。marsedit类似linux平台的gnome-blog,可以直接撰写blog,并利用wordpress的xmlrpc服务直接发布,这篇博文就是用它来写的。

都说mac平台很适合用于软件设计,日常办公。下面就罗列一些。omniplan很多人在用,做开发计划最拿手。omnigraffle用来做图,替代linux下的dia和windows下的visio。Axure原型设计和dropbox文件共享在mac下也有。ed2k下载只有一个easyMule可选,但是经常崩溃并且丢失下载列表。晚上找到一个修复脚本,试了几次还不错。如果和局域网中其他windows机器互通飞秋,ipmessenger就可以做到。集成php开发环境包mamp替代xampp,mindnode可以用来画脑图,替代xmind庞大的java程序。sequel可以用来作为mysql的管理工具客户端,textual可以用来IRC,versions用来做svn管理。最后,mplayerx是开源的视频播放工具,linux下的mplayer一样。mame os x则是替代sdlmame的,只可惜定制性不太好。ichm可以用来应急,查看哪些变态的chm文件。

有了以上的工具,加上习惯mac的触摸板和手势动作,可以轻松的提升工作效率。

关键字: ,
8
七/11
0

用yii框架开发web应用

好久没写博客了,都是在微博中堕落了,加上最近特别忙,入手了一台MBP。更换了工作平台,准备看些新的适合web2.0的高性能纯面向对象框架,yii就是我想要的了。

官方文档比较齐全,有多语言在线文档和两本pdf书籍以及一个用yii搭建blog程序的向导。学习曲线不算曲折,很快就上手用它来写东西。特性一大堆,刚开始不可能熟悉所有的,只是看了数据库和用户验证以及表单部分,一般的web应用就能应付了。至于怎么让yii更好的为你工作,完全深入它的很多机制只能在接下来的时间中慢慢熟悉。对于从别的mvc模式的框架转移到yii,几乎不用花费太多时间。有两个图看明白了概念也就清晰了,一个是路由处理的流程图,一个是mvc加上组件以及其他附属品的结构图。

繁忙的生活让我最近颓废了好多,以前2个星期一本书的习惯已经荒废了半年了,打算10-1后振作下,坚持下去这个习惯。近期打算翻译一些网络安全书籍,给drupal社区提交一些开源模块,尝试一些新鲜的东西。

关键字:
13
四/11
0

利用Dropbox和ZIM打造云存储笔记

随着Dropbox的解封,我忽然想到很多软件借助dropbox都可以实现将配置文件云存储,分享给大家。

其实Linux上可以用来做笔记的有很多,比如notecase,zim和evernote的Linux平台前端Nevernote,另外还有基于mono的tomboy以及用C++改写的gnote,但我感觉最好用,最方便,高效而且够用的就是zim。就像zim描述的那样,桌面WIKI。

但是zim只是单机版本的,我们很容易借助Dropbox将笔记目录丢到Dropbox的同步目录下,比如我这里:

/home/terrysco/Dropbox/Notes,这样每次添加了笔记Dropbox就会自动同步。就算以后重新安装了系统,不小心删除了zim,只要将zim的主目录指向Dropbox下的Notes即可,轻松实现了个人笔记的云存储。

关键字:
6
二/11
0

调整eclipse在Archlinux上的显示

eclipse在linux平台上的显示真是让人纠结,浪费空间不说,左边的项目树和大纲方法列表太松散了。既然我当时在eclipse官方下载的GTK版本,可以对其进行单独定制显示。

首先,创建一个自定义的gtkrc文件/home/terrysco/.gtkrc-eclipse,写入:

style “eclipse” {
font_name = “DejaVu 8″
}
class “GtkWidget” style “eclipse”

style “eclipse” {

font_name = “DejaVu 8″

}

class “GtkWidget” style “eclipse”

其中字体的名字和大小可以根据自己喜好进行设置。完成后在桌面上创建一个程序启动器,在其命令那里写入:

env GTK2_RC_FILES=/usr/share/themes/Clearlooks/gtk-2.0/gtkrc:/home/terrysco/.gtkrc-eclipse ‘/home/terrysco/Applications/eclipse/eclipse’

后面的路径根据自己eclipse实际情况来指定。重启eclipse,舒服多了。

关键字: ,