Javascript中的call和apply让人觉得很神奇和好玩.有了它俩,js的面向对象编程方便了一大截.
下面通过两个例子来理解call和apply.
1 | //有 egg 这样一个类 |
多重继承
1 | //有一个动物类 |
总结:
call和apply功能相同,都是用来改变函数体内部 this 指向的.
call和apply的区别是,apply的第二个参数是个数组.
Javascript中的call和apply让人觉得很神奇和好玩.有了它俩,js的面向对象编程方便了一大截.
下面通过两个例子来理解call和apply.
1 | //有 egg 这样一个类 |
多重继承
1 | //有一个动物类 |
总结:
call和apply功能相同,都是用来改变函数体内部 this 指向的.
call和apply的区别是,apply的第二个参数是个数组.
我有一个很奇葩的需求!
我需要在不改变现有MySql表结构的情况下使用Rails访问MySql.目前只需要用到ActiveRecord的查询功能.
为何会有这种奇葩需求呢?!
现有系统的数据架构是运行很久且稳定的,且现有系统不允许添加一些方便平时使用的小功能.那只能另辟蹊径了.又因为我想尝试下在Windows下搞Rails开发.于是乎,这个奇葩需求就产生了.
既然有想法了,那么就动手做吧!
windows下安装Rails环境就不说了,网上一堆.
访问MySql使用mysql2.如果在确认数据库配置没有任何问题的前提下,还是无法访问MySql.请尝试下载安装MySql的动态链接库文件libmysql.dll.这是下载地址
如果没有意外,安装完动态链接库后一切就正常了.如何还不正常…请问Google!
这个需求的唯一关键点就是设置Model的默认访问table名称.因为按照Rails的约定,Model是单数,数据库中的表必须是复数.比如有Account这个Model,如果数据库中的表是account,那么需要按照下面代码中的设置来创建Model.
1 | class Account < ActiveRecord::Base |
这样设置之后,就可以愉快的使用ActiveRecord的强大功能了.
之前在做统计分析系统的时候需要跨域请求数据.Jquery已经封装了jsonp的实现,但是考虑到统计代码的大小,决定弃用jquery.自己实现一下.
jsonp的原理其实很简单,通过script标签发送一个callback参数到后端,后端返回数据时,使用这个callback函数包裹一下.这样,在前端接收到后端的返回后,就可以执行这个callback函数.
在使用jsonp时需要注意,jsonp只能发送get请求.
下面是jsonp的实现代码.
1 | var _ajax = { |
调用
1 | _ajax.ajax_jsonp.jsonp(_url, data); |
当我们使用Hexo方便快捷的搭建完静态Blog,并愉快的写完第一篇Blog发布后.可能会遇到这样的问题:
我的Blog源码怎么管理啊?!
官方的命令咋没有把源码一并提交到GitHub啊?!
我要是有多台电脑,还要再安装一遍不成?!
同志,不要怕,接下来请跟我一步一步做.
1 | cd dodoliu |
1 | cd themes/next |
1 | cd dodoliu |
1 | .DS_Store |
1 | git add . && git commit -m 'init' |
1 | git remote add origin https://github.com/dodoliu/dodoliu.github.io.git |
1 | git branch blog |
1 | git push origin blog |
1 | git push --set-upstream origin blog |
项目中需要使用简单的年月日级联选择功能遇到了好几次.每次都要Copy,想想还是老老实实封装一下,方便复用.
功能展示
使用KnockoutJS实现年月日三个下拉级联,方便复用
模式A(year_month_day_select_a): 完整的年月日控件
模式B(year_month_day_select_b): 只包含年和月的控件
基本参数的详细说明在 coffee中
coffee -w -b -o . -c .
引入
1 | <script type="text/javascript" src="year_month_day_select.js" defer='defer'></script> |
html中绑定
1 | <div data-bind="component:'year_month_day_select_a' "></div> |
或
1 | <div data-bind="component:'year_month_day_select_b' "></div> |
获取值
1 | var year = $("#test_sl_year option:selected").val(); |
日期默认选择有三种形式
1 | new YearMonthDaySelect({ |
1 | new YearMonthDaySelect({ |
1 | new YearMonthDaySelect({ |
1 | new YearMonthDaySelect({ |
该扩展所需依赖
jquery.js
helper.js
knockout.js
只能同时存在一种模式
必须 通过 new YearMonthDaySelect() 调用,否则无法正常使用
属性nginx的反向代理和负载均衡
使用nginx配置三个站点
虚拟机的主机能通过负载均衡访问这三个站点
VirtualBox: 5.0.20
CentOS: CentOS-7-x86_64-Minimal-1511
Nginx: 1.10.0
主机: win7
路径: /home/www/blog_1
端口: 801
根目录文件: index.html
根目录文件内容: blog_1
路径: /home/www/blog_2
端口: 802
根目录文件: index.html
根目录文件内容: blog_2
路径: /home/www/blog_3
端口: 803
根目录文件: index.html
根目录文件内容: blog_3
NAT模式下配置虚拟机和主机的端口映射
主机IP | 主机端口 | 虚拟机IP | 虚拟机端口 |
---|---|---|---|
127.0.0.1 | 12080 | 10.0.2.15 | 80 |
127.0.0.1 | 12801 | 10.0.2.15 | 801 |
127.0.0.1 | 12802 | 10.0.2.15 | 802 |
127.0.0.1 | 12803 | 10.0.2.15 | 803 |
这样配置的目的是
通过访问 127.0.0.1:12080 访问负载均衡站点
通过 127.0.0.1:12801 ..12802 ..12803 访问各个站点
1 | worker_processes 1; |
这样配置后,重启nginx
在主机中访问 127.0.0.1:12080 即可查看到负载均衡带来的效果.
三个站点, 分配监听 801,802,803
1 | server { |
1 | upstream blog_server { |
关于该节点的详细说明(引用别人的)
1 | upstream myServer { |
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
1 | server { |
*** 主要是这个配置 ***
*** proxy_pass http://blog_server; #在这个节点下启用负载均衡 ***
熟悉nginx的安装与使用
VirtualBox: 5.0.20
CentOS: CentOS-7-x86_64-Minimal-1511
Nginx: 1.10.0
Nginx下载地址: http://nginx.org/download/nginx-1.10.0.tar.gz
下载完成后解压: tar zxvf nginx-1.10.0.tar.gz
然后进入解压目录: cd nginx-1.10.0
编译安装:
./configure
make && make install
默认安装目录在: /usr/local/nginx
cd到 nginx下的 sbin目录
执行命令 ./nginx
使用ps命令查看 nginx的pid
ps -A | grep nginx
从容停止: kill -QUIT 查询到的nginx的pid
快速停止: kill -TERM 查询到的nginx的pid
强制停止: kill -9 查询到的nginx的pid
cd到nginx的sbin目录
./nginx -s reload (这个命令在我测试的时候发现不能完全重启…不知为何…之后我都选择先停止,再启动)
默认配置文件在nginx的根目录的conf中
进入该目录 vim nginx.conf 进行编辑.
编辑完成后一般需要先检测配置文件是否正常再重启系统nginx,以免配置文件错误.
检测命令(假如在nginx的sbin目录下): ./nginx -t
了解虚拟机的网络配置
虚拟机和主机能互通
虚拟机要能访问网络
公司环境下不允许分配独立IP
win7 or OSX: 10.11.4
VirtualBox: 5.0.20
CentOS: CentOS-7-x86_64-Minimal-1511
CentOS7 默认使用ip查看IP地址
配置文件位置: /etc/sysconfig/network-scripts/
需要修改的配置项说明:
BOOTPROTO=dhcp #自动获取ip
ONBOOT=yes #开机启动网卡
重启网卡命令: service network restart
ip addr 查看ip信息
VirtualBox 网络设置为 NAT模式,没有意外的话CentOS可以直接访问网络了
配置一个端口映射的规则即可
如下图
win下使用putty进行ssh登陆
mac下使用 ssh登陆 ssh -p 12022 root@127.0.0.1
主机IP | 主机端口 | 虚拟机IP | 虚拟机端口 |
---|---|---|---|
127.0.0.1 | 12022 | 10.0.2.15 | 22 |