编程技术

NodeJS学习记录1

Roy
本来学oc学的正爽,结果由于某些原因必须先学习NodeJS,所以oc的学习就先暂停一段时间吧。这几天恶补了相关基础知识,如果oc只是语法上让我不太习惯的话,那nodejs就是从编程思想上将原来所学的知识进行了颠覆。至于nodejs相关介绍、优缺点等这里就不多说了,如果想在学习过程中不“一头雾水”,就要理解几个概念:同步/异步、阻塞/非阻塞、闭包、回调、事件轮循。 本人以前并没有任何javascript语言的学习经验,这里仅仅记录我这几天学习的理解,如有什么偏颇,还望大家指正。 首先,nodejs是单线程的,同时只能进行一项任务。这点引起较大的批评就是无法利用多核CPU的能力,但同时在多个CPU运行程序也并不是完美的,因为想要多个CPU有效的拆分任务并执行,它们之间需要频繁的交换信息,比如当前执行状态、各自完成了哪些操作等。 关于上面的几个概念,网上答案五花八门都有,不过我更倾向于下面的答案,引用于知乎,原文链接: “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。 1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)

django重写model的save方法实现同时写2个数据库

Roy
最近有个需求就是当执行save时需要把数据写入2个数据库,查看文档后发现直接重写save方法比较简单。 首先建立2个测试数据库testa和testb,然后在settings中配置数据库: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'testa', 'USER': 'root', 'PASSWORD': 'asdasd', 'HOST': '192.

OC学习第2天——CLASS

Roy
在新建文件时选择os x列表下的“source”,再从右面的选项中选择“cocoa class”,填写类名以及选择存储位置后会自动生成2个文件:一个.h文件和一个.m文件,格式如下 student.h: #import <Foundation/Foundation.h> @interface Student : NSObject @end</pre> student.

OC学习第1天——hello world

Roy
很多人为了学习ios开发而买了mac,而我却正好相反——买了mac后觉得只拿来看看网页、管理服务器什么的太浪费了,就顺便把ios开发也学学吧。由于本人是oc初学者,若有错误的地方还请指正。本文使用os x 10.10.2以及xcode 6.1.1。 这里首先面临的就是语言的选择——oc和swift。经过“深思熟虑”我还是选择了oc,因为相关的资料比较多,遇到问题google起来效果较好。很多人觉得ios开发很难学是因为oc——别的不敢讲,就我这两天的学习来看,oc虽说是c的超集,不过语法看起来题确实挺奇怪,但对于任何有其他语言开发基础的人来说,语法仅仅是一个需要习惯的过程。ios开发的真正难点在于cocos引擎部分,所以对于英语好的来说swift也是不错的选择(英语硬伤还是啊……)。 直接从appstore中安装xcode,安装完成后运行选择“create a new Xcode project”,再选择os x列表下的“application”,然后在右边的窗口中选择“command line tool”,点击“next”后输入项目名称等相关信息,语言选择“Objective-c”,再选择保存位置后点击“finish”即可。

python+selenium+phantomjs抓取ajax动态页面

Roy
一般情况下,python爬虫遇到ajax动态页面一般都是直接分析后模拟ajax请求获得数据。不过今天遇到个网站,由于某些原因不透露网址了,点击搜索按钮后,它先跳转到a页面,然后从a页面跳转到b页面,再由b页面跳回a页面。当完成这2次跳转后,ajax向a页面提交的请求才会返回结果。 也怀疑是不是cookie或者refenen的问题,但最终证实不是因为这个。即便伪造了请求头再访问a页面,返回的也不是真实的结果页面而是一段跳转到b页面的js代码。 既然不知道跳转过程中网站到底干了写什么,那就直接上大杀器吧。 phantomjs可以简单的理解为js解释器,selenium更不用多介绍了,用pip安装即可。 从 http://phantomjs.org/download.html 下载编译后的包(当然你可以自己下源码),解压后的bin目录中就是我们需要的东西。 import sys reload(sys) sys.