第一章ionic 基本介绍

前言

21世纪,手机应用兴起。硬件正变的更好,软件的能力也成几何倍的增长。手机应用的需求空前的高,开发者们也努力开发各种主流平台的应用以满足市场的需求。
最流行的方式就是编写原生的应用,但是编写原生的应用需要对多门语言进行深入的理解,例如:IOS/OSX使用的Objective-C 和 Swift,别外一个就是Android开发使用的Java。另外开发人员要熟悉各种开发框架及SDK来生成应用。像这样当同时开发一个应用要分别开发不同平台的版本,对于一个团对来说难度就大了。
混合模式开发(Hybrid development),可以说是解决上面问题的最有效的方式。其实,混杂模式应用是在本地容器上包装了一层。这种结构让我们仅通过用HTML5+CSS3和javascript就可以开发移动应用,不用直接与某一个平台进行交互。很多开发者为了满足快速增长类似于一个产品要有多平台的版本的需要,目前已经使用了这种方式。自从智能手机的到来,很多类似的框架也产生了。Sencha Touch,Kendo UI,和jQuery mobile是比较受欢迎的移动框架。也有一些控制DOM的框架,如Facebook的React库,Google的AngularJS和Backbone.js.另外,Bootstrap,Foundation和Topcoat 服务帮助你设计混杂应用。最后,有很多混杂开发平台如Apache基金会的Cordova 一个开源平台。
面对那么多的框架体系,选择哪个来开发你的应用是比较头痛的事情。大部分这些框架不能充分利用手机装置并且当我们使用其生成应用时会出现各种问题。所以Ionic就出现了。

Ionic

Ionic是由Drifty研发的,一个聪明的开发和设计小组。这个公司之前已经成功开发过多个项目,如:Jetstrap,一个bootstrap构建工具,和Codiqa,在线拖放构建混合应用程序和移动网站的工具。Drifty目前的使命是改变未来移动软件开发,特别是混杂手机应用开发,Ionic就会实现这些事情。
Ionic将Apache的Cordova平台,AngularJS和Angular-ui-router通过Ionic开发好的应用架构和组件和样式组合起来。实质上Ionic集成了最好的手机框架,让你专注于自己的功能设计和实现。
基于Cordova,Inoic是可以使用大量的Cordova插件,这些插件可以使用原生的一些东西,如访问设备的相机,照片和地理坐标等等。另外,这个平台还让你创建原生的通知,和捕获设备的运动方向,实际上,这样我们基本就看不出原生应用和混杂应用的区别了。
更重要的是,Ionic决定集成AngularJS使你能够访问大量的功能.那是一个非常了不起的架构上的决定,因为它可以帮你把你的代码组织到controllers,services,和directives中,方便代码的管理。最后,有了AngularJS,大量开源社区的模块都可以使用了,可以使人你扩展Ionic的核心功能。如,Trendicity 这个应用,我们就集成了有名的angular-local-storage模块来存储在Instagram上发表的最喜欢的东西。
而且,Ionic在开源社区中已经非常受关注。不仅仅因为这个框架它本身开源,而是它的开发团队编写了详细的文档和在CodePen上收集有用的代码样例。别一个非常好的资源就是,可以与其它社区交流和直接与ionic团队直接进行交流的公共论坛。
接下来的章节,我们会用ionic一步步的创建Trendicity用ionic。此外,我们会深入学习ionic在构建混合移动应用程序中的使用。

ionic 学习计划

###1. 第一章 ionic基本介绍

08.24

###2. 第二章 开发环境 工具和工作流程介绍

08.25-08.27

###3. 第三章 Trendicity 项目实例

08.28-09-20

###4. 第四章 实现菜单滑动和设置路线

09.20-10.30

###5. 第五章 与地图的集成

10-01-10.10

###6. 第六章 权限制控制

10.11

###7. 第七章 设计应用

10.12-10.20

###8. 第八章 与服务的交互

10.22

###9. 第九章 下一步要做什么呢?

10.25

django core task

定时调度的问题

1.前言

最近在项目中做一个定时统计数据的功能,如何做到定时调用统计方法呢?

在网上看了一下,大致有三种方式


1. [编写Django Command ,用cron进行定时调度](http://www.cnblogs.com/linjiqin/p/3965046.html)

2. 第一种方式的升级版实现[django-crontab实现Django定时任务](http://www.zhidaow.com/post/django-crontab)

3. 编写Django Command 然后rq_scheduler定时把任务提交给队列,由worker进行处理

这里我选用的是第三种方式

2.编写Django Command 然后rq_scheduler定时把任务提交给队列,由worker进行处理

工作原理

*Putting a job in the scheduler

*Running a scheduler that will move scheduled jobs into queues when the time comes

*RQ Scheduler comes with a script rqscheduler that runs a scheduler process that polls Redis once every minute and move scheduled jobs to the relevant queues when they need to be executed:

scheduler.schedule(
scheduled_time=datetime.now(), # Time for first execution, in UTC timezone
func=func, # Function to be queued
args=[arg1, arg2], # Arguments passed into function when executed
kwargs={'foo': 'bar'}, # Keyword arguments passed into function when executed
interval=60, # Time before the function is called again, in seconds
repeat=10 # Repeat this number of times (None means repeat forever)
)

##使用方法

###初始化:

In [1]: from analytics.etl import analytics_etl
In [2]: analytics_etl.init()
  1. 安装rq_scheduler
    pip install rq_scheduler
  2. 编写测试command scheduler_command.py
class Command(BaseCommand):

help = "process analytics data"

def handle(self, *args, **options):
first_process_datetime=datetime.now()+timedelta(days=1)
first_process_datetime.replace(hour=1,minute=0,second=0,microsecond=0)
first_process_datetime=dateformat.local_to_utc(first_process_datetime)
scheduler.schedule(first_process_datetime,process,interval=interval)

###调用job

python manage.py scheduler_command --settings=local_settings

###启动rqscheduler

rqscheduler执行一次就OK
python manage.py rqscheduler --settings=local_settings

启动一个rqworker default

启动一个工作者,
python manage.py rqworker default --settings=local_settings

###查看当前有多少job:

import django_rq

scheduler=django_rq.get_scheduler('default')

jobs=scheduler.get_jobs()

###取消job

scheduler.cancel(job)

我的第一篇博客

###为什么写博客

  1. 世界这么乱,装纯给谁看
  2. 我为什么写博客
  3. 我认同他们所分享的,所以我也开始了自己的博客之路

为什么现在才开始

  1. 从2014年就一直想写自己的博客,一直没有沉下心来去写。
  2. 这几天搭档出去休息,我也偷偷的休息一下,将自己的博客这一课给补上。

写哪些东西

  1. 读书笔记:记录在看书时一些笔记,方便自己日后参考
  2. 项目中遇到难点笔记:项目中遇到问题的解决过程,方便将来参考
  3. 技术分享会总结:记录在技术学习上的点滴
  4. 个人随笔 :本人一些业余随笔
  5. 关于:本人的简单介绍

为什么会选择用github pages呢

  1. Github-Pages-Example
  2. 将纯文本转化为静态网站和博客
  3. keep gh-pages in sync with master
  4. hexo

优化

  1. 添加网站优化搜索

    npm install hexo-generator-sitemap --save
    npm install hexo-generator-baidu-sitemap --save
  2. 添加flow

    https://github.com/bubkoo/hexo-filter-flowchart