暑期作品:“安大生活”

特色

原文发表于“安青论坛”:http://bbs.ahu.edu.cn/viewthread.php?tid=434972

网站更新:
09-14:手机版支持“签到“功能

暑假在公司实习的时候,利用空余时间写了这个程序。因为时间仓促,没有好好的规划和设计,所以代码写的很乱,拓展性不强。

网址:http://ahuec.tk

一,为什么要写这个程序
1、以后找工作面试的时候可以拿出来说事。
2、希望作为一个开源项目把它做下去。

目前的想法是这样的,想借助安青这个平台汇聚一群对互联网(电子商务)和网络编程感兴趣的同学,以这个程序为平台,相互切磋,相互学习,不断的完善代码,直至它能够部署应用。当然,如果可能的话也可以协作着手写一个更有趣更cool的程序。

未来的任务有:
1、安全防范的加强。编写时对这块考虑的不是太多,仅仅是简单验证表单、过滤了一下敏感字符。
2、后台代码的重构。包括整体架构的重新设计、函数的改写等等。
3、CSS和javascript代码的优化。包括规范函数和css属性的命名,提高代码的复用性。
4、页面美工。我不懂美术……
5、运营推广。后期等程序完善之后,需要进行运营推广。

所以,如果你对这个项目感兴趣,有一定的程序编写能力,能够担当上述中的一项工作,可以PM我,咱们一块商讨具体事宜。

二、程序介绍
1、涉及到的语言:PHP(后台)、Html、javascript(JQuery)、SQL
2、平台环境:Apache+PHP+Mysql
3、PHP框架:Thinkphp2.1

程序已实现的功能:
1、发表微博,支持@和标签功能,暂不支持图片等多媒体文件的上传
2、删除微博
3、发表/删除评论
4、发送私信
5、Ajax轮询实现消息及时通知
6、头像上传和截取
7、添加/取消关注(好友管理)
8、转发微博
9、简单的微博搜索
10、针对手机的页面设计

三、编程心得:
1、一个函数要尽可能的实现最少的功能,这样才能提高函数的复用性
2、如果时间容许,最好是做好前期的架构设计和规划。
3、不要重复造车轮。要学会吸收别人的成果。

程序中用到的“车轮”:
1、Javascript图片截取:jquery.Jcrop-0.9.8
2、javascript弹出框:thickbox2.0
3、手机浏览器的识别:mobile_device_detect.php
4、日历插件:calendar.js
5、表单验证:checkform.js
上述代码我一并打包放在附件里面了。有需要的同学可以下载。 代码.rar (1.38 MB)

四、ThinkPHP学习笔记
thinkphp采用MVC分层结构,单一入口(index.php),通过url路由来调用class和function
普通模式下的url:

http://localhost/appName/index.php?m=moduleName&a=actionName&id=1

如果使用PATHINFO模式的话,URL成为:

http://localhost/appName/index.php/moduleName/actionName/id/1/

当然你也可以设置为REWRITE模式,隐去index.php

http://localhost/appName/moduleName/actionName/id/1/

系统在没有指定模块和操作的时候,会执行默认的模块和操作,在ThinkPHP的惯例配置里面是Index模块和index操作

CURD操作
1、查询
$a = M(‘member’); //实例化对象a
$a->where(‘id=1 and gender = 1′)->order(‘date desc’)-.limit(10)->select(); //where查询条件;order排序
复制代码
2、添加
$a = M(‘member’);
$data['name] = jaychou;
$data['gender']=1
$a->add($data)
复制代码
3、更新:
$a ->where(‘id=1′)->save($ata);
或者 $a->where(‘id=1′)->data($data)->save(); // 根据条件保存修改的数据

4、删除
$a->where(“id=1″)->delete();
表单操作(录入数据):
1、
$a = M(‘member’)
$data['uid'] = 1;
$data['username'] = langer;
$a->add($data);
复制代码
2、如果在add之前已经创建数据对象的话(例如使用了create或者data方法),add方法就不需要再传入数据了。使用create方法的例子
$a = D(‘member’);
if($a->create()){
$a->add();// 根据表单提交的POST数据创建数据对象
}

此时可以在MemberMode.class.phpl中设定自动验证和自动填充条件:

  1. <?php
  2. class MemberModel extends Model {
  3.     // 自动验证设置
  4.     protected $_validate     =     array(
  5.         array(‘uid’,'require’,'标题必须!’,1),
  6.         array(‘email’,'email’,'邮箱格式错误!’,2),
  7.         array(‘title’,”,’标题已经存在’,0,’unique’,self::MODEL_INSERT),
  8.         );
  9.     // 自动填充设置
  10.     protected $_auto     =     array(
  11.         array(‘gender’,’1′,self::MODEL_INSERT),
  12.         array(‘create_time’,'time’,self::MODEL_INSERT,’function’),
  13.         );
  14. }
  15. ?>

五、截图:


写在九月

这阵子事情挺多的。上周完成了社管的答辩,协会正式成立。这周末开始招新。各项事宜都已经告知下一届了,我大可放心去做自己的事。

周五院系保研名额确定,我在里面。这应当是个喜讯,可我没有丝毫喜悦。当然,如果我不在名单里面肯定会很失落。今年商学院总过有47个保外的名额,分到我们班有5个。拥有保研的资格似乎意味着另一条出路。但至今为止,它除了带给我纠结、迷茫和困惑之外,没有其他。保研之路也并不如之前想象的那么平坦,还是充满着无穷的变数和坎坷。

因为一心装的是找工作,压根没有想过考研和保研的事。自己评估总成绩应该在班上排名6、7,保研的事不会落在我头上。然而现在的事实是,我有了这个资格。是继续坚持找工作,还是选择保研?这需要立马抉择。如果保研,选择怎样的学校和专业,这是个问题。电商专业考研大多往管理尤其是企业管理方向去。保研亦是如此。我是不是也应该走这样的路?

最终,我选择了双管齐下,两手都抓。这是一个很贪心也很无奈的决定。当你无法完全掌控一件事的时候,唯一能够做的便是做多方面的准备。

网投了几个学校,运气好的话接下来会通知面试。

21号淘宝在合工大有个宣讲会,我还得过去。

就这样吧,熬过这阵子应该会好过些。

整理Google Reader源

好久没有Google Reader了,因为期间几次GR都连不上。这几天貌似回复正常了。

昨天发现GR界面做得这么简洁,这非常适合阅读啊,又看看自己的RSS源,凌乱的很,所以花点时间来整理整理。

主要是更新分类和相关的RSS源

 

建立个人知识库

建立个人知识管理系统
接下来的日子里为自己定下了几个目标:读书、构建个人知识管理系统、找工作。
这三个目标中还是有重复的,比如前两个。

读书,主要是用kindle阅读电子书,用“鲜果”Android客户端阅读时事新闻
找工作也是必须立马着手准备的事。
下面主要谈谈建立个人知识管理系统。

接触PKM有近三年了,但将理论付诸实践的尝试很少,尤其在建立个人知识库这方面。有次听说李敖就有自己的知识库,等到要用相关资料的时候能够快捷方便的索取。想到李敖那么一个博闻强志的人都建立了知识库,我等俗人更应该努力了。

目前确定建立知识库的工具有:
1、EverNote:主打工具,存储主要资料和文件(大多为原创资料:如个人学习笔记。)
2、Wiz:保持网摘
3、Android手机:随时随地获取资料
4、鲜果RSS(包括手机客户端)
5、其他RSS(如Google Reader,无觅):用来获取相关联的信息
6、微博:实时资讯
7、个人博客:用于分享知识

具体操作流程还有待设计和改进

时间管理软件小谈

老早写的一篇文章,贴出:
时间管理讲究的是术而不器。
只要你掌握了时间管理的一些方法和原则,选择什么工具都不重要了,不管是笔纸,还是PC软件,抑或手机客户端。
但古人也说过:“工欲善其事必先利其器”,这强调的是好的工具将使得办事效率大大提高。我们在学习一些理论的同时也可以借助一些工具软件来提高我们管理的效率。
时间管理(GTD)软件有很多,个人可以根据自己的喜好去选择,没有什么统一的标准。
对于这类软件,我列出自己的一些要求:
1,轻便小巧,启动速度快。不敢想象一个软件启动都要半天时间,还有什么心思进行时间管理。
2,操作简单。太复杂,反倒繁琐。
3,支持Project。实际生活中,有些任务是无法一步完成的,我们需要设置Project来安排时间。我不太喜欢Doit.im就是因为它不支持树状的子任务。尽管它在action条例中会显示所处的Project,也有Project的管理面板。大概是先入为主的思想,我还是习惯树状的显示方式。
4,能够实施GTD。通过简单的设置能够实施GTD。
5,通用的数据存储格式,如XML。这样就可以方便备份,和数据转移。
6,统计和回顾功能。
自己接触过的软件或服务大致有下面几个:
在线版:
PC端:
严格按照GTD理论设计的一款软件,适合GTD入门者。
启动速度慢。
关于Thinkrock的介绍可以去褪墨博客:http://www.mifengtd.cn/articles/thinkingrock_overview.html
2,Todolist
开源的GTD软件。但我忘了下载地址了~~
感觉界面和MLO有些相似。支持子任务,具有项目列表和行动列表,可自定义排序。但无法根据项目列表的设置自动排序行动列表。
PC端功能和网络端的功能大致相同,支持同步,方便经常异地工作的朋友,但对于我们这些童鞋,对同步这方面要求应该不会太高。
支持项目,情景,归档。
我终究还是回归MLO,虽然在这个列表中它是唯一不免费的。
原因有几点:
1)树状层级结构。
2)启动速度快,操作方便。
3)能根据项目设置自动排序行动列表。
4)可与Outlook进行同步,可以导出为Mindmanager思维导图。
5,Wiz Note
桌Wiz面便签感觉挺不错的。
可以将任务“钉”在桌面,随时回顾。但整体功能相对较弱。
WizNote可以将任务链接到文档,所以我现在在考虑将它改造成读书列表。
即将最近要读的书或资料导入wiz,然后在WizNote中设置读书任务,并添加链接。这样就可以及时的完成读书任务。
PS:目前主要用Android端的Doit.im

关于thinkphp模板的一个问题

为了能够使页面居中显示,一般用的代码是:
<!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”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>{$title}</title>
<!– 链接样式表 –>
<link href=”../Public/css/style.css” rel=”stylesheet” type=”text/css” />
<link href=”../Public/css/act{$css}.css” rel=”stylesheet” type=”text/css” />
</head>
<body>
<div id=”wrap”>content</div>
</body>
</html>

即将内容放置一个大的容器(div id=”wrap”)中,然后设置属性为:margin:0 auto;width:950px;
将上述代码保存为一个单独页面,在IE8下浏览能够居中显示。
但通过thinkphp模板来实现却不行了。

thinkphp中的代码
Tpl/default/Public/header.html
代码:
<!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”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>{$title}</title>
<!– 链接样式表 –>
<link href=”../Public/css/style.css” rel=”stylesheet” type=”text/css” />
</head>
<body>

Tpl/default/Public/footer.html
代码:
<!– footer –>
<div id=”footer”>
<p align=”center”>© 2005-2011  all rights reserved</p></div></body>
</html>

Tpl/default/Public/css/style.css
代码:
#wrap{margin:0 auto;width:950px;}

Tel/default/Index/index.html
代码:
<!– 使用拓展的标签库 –>
<tagLib name=”html” />
<!–头部部分–>
<include file=”Public:header” />
<div id=”wrap”>
内容水平居中显示
</div>
<include file=”Public:footer” />

在IE8下面浏览,就页面全跑左边去了。
然后将header.html中的代码直接复制到index.html,即修改index.html为
<!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”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>{$title}</title>
<!– 链接样式表 –>
<link href=”../Public/css/style.css” rel=”stylesheet” type=”text/css” />
</head>
<body>
<div id=”wrap”>
内容居中显示
</div>
<!– footer –>
<div id=”footer”>
<p align=”center”>© 2005-2011  all rights reserved</p></div></body>
</html>

结果显示正常。
很诡异……
继续排查问题…

PS:08-05 10:58am 问题解决

去掉下面这两个注释就OK了。具体原因还待分析。大概是因为thinkphp标签库中对注释标签有新的定义。但如果是这个原因的话,为什么firefox和chrome下却又能够正常显示呢??

<!– 使用拓展的标签库 –>
<tagLib name=”html” />
<!–头部部分–>
<include file=”Public:header” />

Kindle书籍资源整理

中文书资源

书仓网:http://shucang.com/

图书资源丰富,可直接下载pdf, mobi, epub等格式。

亿年书海:http://www.inien.com/

许多经典书,畅销书都能找到。可以下载epub和自定义格式的pdf。

苦瓜书盘:http://kgbook.com/

只提供6寸pdf格式下载,书排版的都相当不错,但在kindle上不支持pdf目录,字体大小调整不太方便。

子乌书简:http://book.zi5.me/

资源质量挺好,提供epub和 mobi格式,对Kindle服务支持不错。

英文书资源

Gutenberg上的免费书籍,可直接下载mobi格式。

http://m.gutenberg.org/ebooks/search.mobile/?default_prefix=bookshelves

Amazon上的免费书籍,排版相当精致。

http://www.amazon.com/b?ie=UTF8&node=2245146011

Feedbooks: public domain books and free ebooks from new authors.

http://www.feedbooks.com/

网盘资源

MobileMe个人分享,英文原版书籍比较多

https://public.me.com/chen_zihua

Dbank的,中文书籍,排版不错。

http://dl.dbank.com/c0sicsy5on

共享资源的 Google Groups

http://groups.google.com/group/share4kindle

http://groups.google.com/group/kindlebookcrossing

http://groups.google.com/group/skindle(KDolphin创建)

Thinkphp系统常量

这几天在用thinkphp框架做一个小站。要用到一些系统常量,列出如下,做个标记;

模板中使用的系统常量
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__ACTION__ // 当前操作地址
__SELF__ // 当前 URL 地址
__PUBLIC__ // 网站公共目录 ../Public
../Public// 项目公共模版目录

Action中使用的系统常量
THINK_PATH // ThinkPHP 系统目录
APP_PATH // 当前项目目录
APP_NAME // 当前项目名称
MODULE_NAME //当前模块名称
ACTION_NAME // 当前操作名称
TMPL_PATH // 项目模版目录
LIB_PATH // 项目类库目录
CACHE_PATH // 项目模版缓存目录
CONFIG_PATH //项目配置文件目录
LOG_PATH // 项目日志文件目录
LANG_PATH // 项目语言文件目录
TEMP_PATH //项目临时文件目录
PLUGIN_PATH // 项目插件文件目录
VENDOR_PATH // 第三方类库目录
DATA_PATH // 项目数据文件目录
IS_APACHE // 是否属于 Apache
IS_IIS //是否属于 IIS
IS_WIN //是否属于Windows 环境
IS_LINUX //是否属于 Linux 环境
IS_FREEBSD //是否属于 FreeBsd 环境
NOW_TIME // 当前时间戳
MEMORY_LIMIT_ON // 是否有内存使用限制
OUTPUT_GZIP_ON // 是否开启输出压缩
MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC
THINK_VERSION //ThinkPHP 版本号
LANG_SET // 浏览器语言
TEMPLATE_NAME //当前模版名称
TEMPLATE_PATH //当前模版路径
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__ACTION__ // 当前操作地址
__SELF__ // 当前 URL 地址
TMPL_FILE_NAME //当前操作的默认模版名(含路径)
WEB_PUBLIC_URL //网站公共目录
APP_PUBLIC_URL //项目公共模版目录