上班也有三年多了,大概是从10年时候有一个对当天工作情况记录的习惯;都是记录在笔记本上面的,去年写完了一本,今年也买了一个新的笔记本,在9月份的时候突然笔没有墨水了,又多次搞忘记了买笔芯;所以转念一想为什么不自己搭建一个网上笔记记录的平台呢?
目前部署在sina sae平台上面想看的请点http://daynote.sinaapp.com
首页(图片都还是本地测试数据)
于是就计划开始做了,要最快的做出来;所以使用的是同事@ljyf5593用kohanaframework写的一个cms,后台功能很完善,用户、权限、后台工具等等都直接采用,也就是只需要做下前台以及数据的展示就ok了。
要说记笔记这样的事情,其实有很多现成的软件可用;各种云平台,云笔记等等,同事就是用的盛大麦库云笔记,如果你还想极客一点可以使用各种云平台的开放api开发一个自己的云笔记应用。不过我觉得目前自己用的这个就挺好;直接web页面访问,也不用安装各种客户端,也不想去折腾云平台api了。所以就先用着呗。
要说自己认为的亮点,我觉得有这么几个
#标记管理
不用搞成每一个note笔记前都放置一个checkbox,在建一个checkbox submit进行删除、导出、发送等其他操作。且用户点击note即选择,取消则再点击一次就ok。结果集操作nav可以随着用户的结果记录是否存在而自动的显示与隐藏。js很简单,看源码ok。
#导出,email发送
在用户选择标记后,note集合可以用来删除,导出,email发送。其中导出就是导出为excel到线下。
导出
本来想把同一天的所有不同时段内容进行分组的,不过我觉得phpexcel进行数据处理真的太难搞了。所以就直接一条笔记对应一条记录。kohana 使用phpexcel真的很方便,直接加module就好了。github上就有,开源的贡献者真伟大。
email发送
标记标签后发送到邮箱,就是着过样子啦。。。ps: title 上面已经修改好了striptags
吐槽:sae其实真的很强大了,但是也为了安全运维等因素导致sae环境与lamp环境还是有区别的。比如禁止本地io,.htaccess采用了config.yaml。所以导致一些类库代码在 sae上面跑不起来,也没有一个具体的详细错误,对于排除起来真的好麻烦。所以目前显线上sae平台上面,导出,email发送都是空白空白。。。还得找个时间单独的把phpexcel与email模块进行sae测试下,进行具体的代码排查。
=== 2013年1月4日21:34:54 更新===
phpexcel在sae上能正常数据导出了,原因是这样的,phpexcel默认是采用Excel2007进行数据导出的,所以也是采用的Excel2007实现类。而Excel2007实现类需要zip扩展来实现的(也就是zipArchive类,不过可以用zlib来实现对于zip读写,不过成本就太大了)。官方也考虑到了可能不会支持zip扩展的情况,于是就使用xml实现了PHPExcel_Settings::PCLZIP的PHPExcel_Shared_ZipArchive类,不过在sae环境上测试时提示"XMLWriter class not found "也就是需要xmlwriter的扩展支持(PHP 5 >= 5.1.2, PECL xmlwriter >= 0.1.0) sae上面没有支持。
[php]
//writer/Excel2007.php
$zipClass = PHPExcel_Settings::getZipClass();
$objZip = new $zipClass();
[/php]
本来想替换另一种实现或者是直接csv导出的,又看到phpexcel里面还可用Excel5进行数据导出;抱着试一试的态度看看,测试正常数据导出!这说明Excel5没有采用xml进行excel创建,详细还没看代码。
改为Excel5数据导出很简单
[php]
$objWriter = PHPExcel_IOFactory::createWriter($this->_spreadsheet, 'Excel5'); // 第二参数把Excel2007改为Excel5就行
$objWriter->save('php://output');
exit;
[/php]
#支持markdown语法
markdown很流行,开源平台,大公司各种支持。不过markdown听闻版本分化严重啊,希望能有一个统一标准。确实很好用,如果没有一个格式体现,全是一段段文字看起来很累。https://github.com/michelf/php-markdown
#笔记note编写自动保存
这个很简单,直接setIntval 15秒自动保存,就是要区分创建与修改的动作。如果是创建则自动写入数据库,把note创建成功的noteid返回到表单,这时点击发布时实际上市修改了。如果你没有点击发布而是刷新了页面,那么这时还只是草稿,草稿数则+1;
#note笔记归档
用户笔记可以按照月份、年份进行排序实现。便于用户进行自我梳理查找。我觉得这里的作用应该大于笔记搜索;让用户可以看看自我的成长经历。个人就这挫设计,其实有更好的ui 设计,比如现在很流行的时间线。
其他还想实现的功能,比如可以让textarea支持table的(tabIndent.js)不过有时候我经常在touch,移动设备上面写,table这时现的很多余所以暂时没有加上去。还有同步发送到微博,不过貌似笔记是比较私密的事情,当然也有可以公开的暂时也没有加。
有喜欢的可以注册用下哟。