Python:分页工具

简述

ps[2016.2.13]:更新一个问题,下面的源代码有误,具体往下看.
ps[2016.2.27]:将原来的函数组成一个类,完全兼容原来的使用方式.

这是一个伪代码,因分页需要数据库配合,所以这里只给出分页的代码.

分页效果图
image-2402

python Logo
image-2403

源码

代码里面有很详细的注释,不在过于解释了.

v1.0[2016.2.27]:

v0.9[建议使用最新版本.]:

2015:逆风飞翔

开篇

你的人生永远不会辜负你的。那些转错的弯,那些走错的路,那些流下的泪水,那些滴下的汗水,那些留下的伤痕,全都让你成为独一无二的自己。by 朱学恒

上面这段话,我曾用在很多地方.

对于即将过去的这一年,也很适用.因此,写在最亮的地方.

其实这一年说起来并非一帆风顺,但无论如何,都已经走过来了.想起这一年,像在慢速放一个电影,一张张画面划过眼前.熟悉,却又感叹时光匆匆.有人说,无论何事,咬咬牙总会过去.何尝不是这样呢.任何一切,都躲不过时间的流逝.小四有一段话:

很多我们以为一辈子都不会忘记的事情,就在我们念念不忘的日子里,被我们遗忘了 。–《左手倒影 右手年华》

若不回忆,岂不就忘记了?

站在三岔路口

当站在大街上,围满人的棋桌前,看的人会比真正下棋的人着急。总会思考,怎么不走那,怎么不走那..等等.当你真正坐在那个地方,你也会感受到来自周围”热切的目光”.有一句话是”观棋不语真君子”.自己做到就好.扯远了.2015发生了很多事.去了一些地方,换了一份工作.

其实在换工作之前,有过很多纠结.面临的问题,总是一个接着一个.简单总结如下:

选择
image-2387

  • 人际关系:其实对于新公司所面临的挑战,最大的莫过于人际关系,可能在原来公司已经辛辛苦苦经营了很久的人际关系.一换工作,就消失殆尽了.同样也存在一些风险,也可能无法融入一个新的团队等等.
  • 工作层面:每个人性格都是不同的,但还好,我觉得我很幸运.遇到的很多同事,基本都比较聊得来.
  • 技术层面:每个公司所面临的事情不尽相同,所使用到的技术肯定也千差万别.可能无法使用最喜欢//最熟悉的语言,而要从头开始接触一门或者几门新的语言.虽然在公司中接触一门或者几门语言会是一个好的学习机会(因为往往都带着目标去学习),但同样会出现一些小问题.

大概就是以上几点.每一次选择都意味着未来的方向,站在一个三岔路口或者十字路口,所面临的问题都是不一样的.我相信每一个人都会有自己不同的选择,对于他人或许很重要,也可能不重要.毕竟没有人会一直跟在身后,除了影子.

Code……

2015依旧写了一些代码.不多不少,数下来才发现:真的没几个啊!(内心几乎是崩溃的,咋才写了这么些)..

  1. 在线服务:提供了三个东西(每天一张图//一大堆段子//一个网站的离线chm[抱歉已经许久没更新了..]),其实是很简单的一个东西,是业余练手和一些乐趣.在完成这个小东西的时候,会发现写代码的那种快乐[不必思考太多,拿起就写,想到就开始写].并且依据此服务,发布了一个工具集(已经开源:地址).在线服务地址..PS:这几个均使用Python脚本完成.
  2. Android客户端[地址]:从2014开始自学Android,刚学的时候,做了几个简单的拿不出手的APP.只好按下,继续发力,在今年的年末的前几天,终于发布了一个APP(还有很多功能和细节有待优化),学习进度最快的那段时间,恰好是拼命写代码的那几天.面对一个新东西是有点痛苦的,这种痛苦建立在思维上,Android打破了固有思维(令我万万没想到的是:Android使用XML布局[当然也可以用Java代码进行布局,但是官方推荐使用XML]).就因为思维差异,导致学习路线陡增,学习时间也就无限增长了.也就这时候,忽然想起来之前一个前辈说的:之前做C++,后来Web发展,去学习了jQuery.难度可想而知.往前的每一步,无论大小,都是进步.偶尔害怕踏出第一步,因其中的不确定.战胜自己,才可以勇敢前行.
  3. 其余的技术部分就是一些乱七八糟的不值得说的了,也没啥亮点.

编程语言
image-2388

2015也接触不少新东西:Python3.5发布,AngularJS2.0快要发布,Android 6.0发布等等等等(目前已经从Python2+切换到Python3+,大部分问题已解决).每一次变革,都意味着新东西的到来.另外我还想说,这几年我一直在接触PHP,从买到的第一本《PHP与MySQL程序设计(第四版)》到现在,它依旧是崭新的.而目前PHP7都已经发布了.实在愧疚,感觉PHP是学不会了.希望后面有时间可以多了解一下PHP.

对于其它方面的技术就了解的越来越少了,依稀记得有过这样一个约定:从某天起,我要把系统更换成Linux(一直使用Fedora,从Fedora18->>到目前的Fedora23).事实是,到现在依旧还没使用上.原因很多,我想技术分散,学习力减退,时间紧张这些可能都是借口.慢慢我在发现,我好像只能做一个Linux的”虚拟机使用者”.为此,深感遗憾.回想当初,刚接触Linux,先是去看了Ubuntu(一个很优秀的Linux发行版,那时候好像还是Ubuntu12),结果没看明白官网的安装介绍(当时不知道有翻译这个神器..)..然后就找到了Fedora的官网(那时候就已经有中文了..赞一个).一步一步跟着学习,在学习群里有一句知名的话:如果没有重装过几遍Linux,肯定就是没用过Linux的.没错,如你上面看到的,我重装了很多遍Linux.说实话,每次都很心疼,因为里面都是我的数据啊,学习数据各种资料各种工具(一开始重装,不知道备份,然后就弄丢了).那时候也喜欢折腾,各种折腾.后来慢慢就不太敢大折腾了,毕竟装了那么些工具,也写了一些代码,重装简直是花样作死啊.当时啃过很多遍《鸟哥的Linux私房菜》,很遗憾,就是没看完(大多数时候,就看一半多就没看后面的了).想起来,发现很多时候,书只看了一半就没有继续看下去了.原因和借口都很多.只是希望有时间能好好看完已经看过一半的那些书.还是希望有机会可以直接换到Linux系统,接触更多的Linux知识(毕竟她是如此这般迷人).

除了PHP还有另外一个是没有想明白,也没有时间去想明白的——没错,是NodeJS.

等有时间好好研究下PHP和NodeJS.免得以后遇到初级问题,还需要去请教别人.可能会有疑问,为啥想了解这么多?刚开始接触程序的时候,想学的东西很多:Java,PHP,C++,JavaScript,Linux,DataBase(里面区分了很多)等等这些,也收集了很多书,但大部分都没有看过.其中的一些不在最开始想学的里面,但也还是接触了,在列表里面的,却很少有时间去接触了.

其实,我们都在梦想的路上,越来越远.

站在家门口,盼望远方

前几天回家,特地拍了一张照.不知道我所在的城市,在哪个方向.但我所知道的是,家在哪个方向.

现在所在的城市,跟大多数城市一样,夜晚灯火通明.外面一点都不寂寞,没有伸手不见五指的黑暗.而家则截然不同,关灯后伸手不见五指,四处安静的能听见心跳声.习惯了喧闹,忽然觉得那份安静很难得.之前回去的时候,偶尔会失眠,因为实在不习惯那太安静的环境——没有光线,没有喧闹,没有车的喇叭声.后来回去的次数渐渐多了也就习惯了,只是总觉得,在这反复的切换中,仿佛丢失了什么.认真的想,却又想不起来.

家
image-2389

家是没有雾霾的那种地方,偶然拍一张,竟然会发现不一样的美.像是很久没看见那样的景色,熟悉却又陌生.最让我感到震撼的是:当走在路上,打招呼的人很多,人们不是神色匆匆,也不是一脸愁容,也没有低头看着手机.我似乎刻意忘记了,在不远的地方,有一群看着我长大的人.他们能随口喊出我的名字,能随口说出我小时候的趣事.这样的发现,让我觉得惊讶——难道这不是自然而然的吗?那是我的家,这不是必然的吗?在城市的生活,似乎忘记了还有那样的一个地方.

去年从更远的地方回来,回到离家坐车5小时的地方.这是一种接近,在有一年的十一,忽然有点想家.电话中熟悉的声音,让我在挂断电话之后,泣不成声.当即决定,靠近,慢慢靠近.在离家更近的地方,仿佛能感觉到家人的抚摸,亲昵的话语.在很多时候,会觉得很近,仿佛就在眼前,就在脑海里.当然了,还有家乡从小吃到大的美食,各种辣味的食品,那可都是小时候最喜欢的零食.在前几年去外面的时候,曾去超市买过和小时候类似的零食,一口咬下去才发现那味道,跟小时候的差别太大了.我想,即使回到当初上学的地方,也找不回来小时候吃零食的那种快乐.但家的味道一直存在.

“当我站在家门口眺望你所在的方向,你能听到我内心的期盼吗?”——来自家的声音.

逆水行舟

2016看起来还有很多事情要去完成.为什么是逆水行舟?因为对前途的不可知,对未来的迷惘.

面对困难,可能不会在使用之前的方式去解决.
面对技术问题,可能不会去群里问.
面对选择,可能会有更多顾虑.

我想这便是成长吧,《大话西游》里说,”成长不一定会得到,但一定会失去”.

那么,2016:

  • 做该去做的事情.
  • 面对困难,咬咬牙,总会过去的.
  • 累了就回头看看,看完之后,立刻前行.别留恋曾经,因为留恋也没有用.
  • 遇到技术问题,先去看官方文档.因为可能官方文档里稍微写了一下(有很多问题确实在官方文档里找不到答案),然后再去找.
  • 你所经历的痛苦,在人群中都太渺小了.根本不值得一提.
  • 总有人在过着你想要的生活.
  • 其实上面大部分都是鸡汤,没错.鸡汤就是这么激励人.

废话发表完毕,2015无论如何是即将过去了.希望在2016可以心安.加油!

展望2016

看上面一段.

写在2015年末.献给2015,和即将到来的2016.

无论要去哪,先战胜自己,迈出勇敢的第一步!

你的人生,不会辜负你的.

PS:prd 于 2015.12.21 [CD]

Android:第一个Android APP发布

第一个..

开源了APP的所有代码[访问地址].

初试牛刀,学了这么久的Android.总算在磕磕绊绊中完成了第一个APP(虽然问题还有一大堆)…

只记得是从去年开始学习的Android(自学),期间学习进度比较缓慢,但也还是”捣鼓”出了几个不叫APP的APP.现在发布的这个,拖拉拖拉的做了4个月,其实折算下来,时间应该是不长的.没办法,期间有各种问题.大部分时间都花在解决大问题上了.

其实写了这么久,多少还是有点感情的.我有一个不知道是不是不太好的习惯,有时候习惯在代码里面码一些注释,就是写完那个功能或者那个模块的感受……

下面也会贴一些其中的注释.更重要的是,我开源了这个APP[访问地址],如果不愿意去看开源的源码,也要去那边的文件夹才能下载的…(因为哥的服务器实在架不住大楼量啊).还需要说明的一个问题是:因服务器的原因,在代码里面所有跟服务器交互的地方都被去掉了,这也是逼不得已,希望能谅解一下.但我保证,其余部分的代码是完整的(跟发布版的一毛一样的).

很遗憾,这个APP没能在任何市场上架,想必这也是一个不太美好的地方了.后来想想不上就不上吧,直接发布也挺好,反正也是要开源的.(源码地址在上面找)写这个东西的时候,其实已经没多少兴奋劲了,因为都已经打包一段时间了,才把源码公开出来(也是希望新手可以学习下,虽然我也是新手).

啰嗦了一大堆,想起后面还有年终总结要写.好吧……停止啰嗦,下面发干货(对了这个APP叫:凉夜).

大概做了什么

1. 看看(文字内容,采集自网络):
详细:自有国外服务器,提供数据支撑,文字内容同样基于该服务器提供
(对于访问速度是最大的性能瓶颈,希望后期有能力可以改善)。当前更新频率为3天更新一次。
在Android客户端提供了缓存及下拉刷新操作。在分享方面,目前集成了微信、易信、QQ这几个分享。

2. 有图(图片,每天定时更新):
详细:图片源自某门户每天更新的图片,后台服务器每天零时左右定时进行更新。
客户端对于服务器端有相应延迟(避免提前请求导致的加载错误)。
该项同样提供文字方式的分享(在分享方式上有差别),并提供保存本地及即时设置桌面功能。

3. 关于(关于APP、设置等操作):
详细:可在客户端开启[每天自动设置桌面功能(使用两个Service相互监听,
保障可正确更新,若开启,该功能会延迟更新.)]、提交反馈、关于等。

Android LOGO
image-2382

代码里面的啰嗦

下面的都是来自代码里面的.可以在[地址]里面的MainActivity.java里面找到.

一个小网络工具类

别着急,还要发布个Android的网络工具类,使用了Volley.封装了一些简单的操作.源码里面说的很清楚,就不重复解释了.

可能是因为代码的原因,好久都没”写”这么长的文了…偶然有点不习惯……

嗯,没错–你的人生永远不会辜负你的。那些转错的弯,那些走错的路,那些流下的泪水,那些滴下的汗水,那些留下的伤痕,全都让你成为独一无二的自己。by 朱学恒

Python:操作MongoDB工具实例

前提

Python 连接MongoDB.
目前实现:
增删改查(大部分已经实例运行过).
对于聚合函数的实现并没有细化(没有提供相关示例).
官方提供了更多的方法,目前只集成了常用的部分函数(其余可以去官方网站参考).

python Logo
image-2366

源码

代码已经托管在Github[访问].

PS:2015.12.19 更新//修复数据库表创建的问题//修复数据库集合的使用问题,下面的源码已经替换为最新.
PS:2015.12.28 更新//修复查询分页的问题.
PS:2016.1.6 更新//优化查询方式,简化原有代码结构.此处使用了find()方法.原有方式不再使用.但兼容原有数据.并增加一项功能:设定返回列,或排除返回列.
(文件名:DaoUtil.py)

Python:关键字参数的使用

起源

下午在写一个Python连接MongoDB的工具(使用pymongo 3.2).并且使用Python 3.4.但是遇到一个问题,就是调用的时候,发现报错.

报错的程序如下:

调用:

报错:

Traceback (most recent call last):
File “DaoUtil.py”, line 84, in
print([item for item in dao.findAll(limit=2, skip=1)])
TypeError: ‘NoneType’ object is not iterable

写这段程序的时候,参照了网上一个例子,但是忽略了一个重要的部分{也是最重要的部分}.所以就报错了.

python Logo
image-2360

修改后的程序

下面的程序是最新的,可以运行的!

调用如下:

输出MongoDB里面的数据.

最重要,工具目前暂未完成,剩余部分暂时不发了.等写完了再发整个工具.(不会安装MongoDB?自己搜索下.)

PS:工具已经完整发布(地址).