yaml语法的使用

YAML语法

  • 缩进格式均使用空格符,兼容编辑器,而没有采用TAB
  • 官方文档
  • 注释:
1
2
3
4
5
# Author: Yutiya
# Nice
Yutiya:
- name: Song
- age: 18 # always 18,too young
  • 序列(数组):
1
2
3
- Mark
- Sammy
- Ken
  • 字典(键值对):
1
2
3
hr: 65
avg: 0.278
rbi: 147

Javascript语法中的一些小陷阱

Javascript语法中的一些小陷阱

Javascript对象,其实也就是使用哈希表实现

原来这样写创建出来的obj是一个对象
在Javascript中没有map噢(也就是在别的语言中常常使用的键值对)

1
2
3
4
var obj = {
username: 'yutiya',
age: 18
};

直接打印上面创建的对象,会打印出
在Node.js中还不会打印出前面的Object

1
2
3
console.log(obj);
结果 >>> :
Object {username: "yutiya", age: 18}

如果这样呢?因为它真的是Javascript对象,我也是现在才知道,不晚!

1
2
3
console.log('obj:' + obj);
结果 >>> :
obj:[object Object]

httpbody中字符编码问题-iOS解决方案

httpbody中字符编码问题

在工作中遇到一个问题,本来可以直接将字典转换成json,再转换成nsdata,设置到httpbody中
就可以请求服务器了,可是服务器不方便解析(其实是做服务器开发的不知道怎么解析收到的数据|_|)
最后只能将字典遍历键值对变成查询字符串的样子设置在body中

For Example:

1
2
3
4
5
6
{
"username" : "yutiya",
"age" : 18
}
变成:
username=yutiya&age=18

通常上传到服务器的数据都需要编码一次,不过我上传的数据全是[a-zA-Z0-9]等等,不用编码也是可以的
可是问题出现了,上传到服务器的数据中有+号,看了阮一峰的博客,从中可以看到+在服务器会被自动解析成空格
简直是见了鬼,然后就得改代码呗

1
2
3
4
NSString *str = @"username=yutiya&lock=abc+bbc+ccc";
NSLog(@"%@", [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
console >>>:
2015-07-30 14:51:07.212 httpbody中的字符编码[6470:156038] username=yutiya&lock=abc+bbc+ccc

然而并没有什么卵用,好,我换了一个方法

Nodejs第二课

使用外部模块

目标

建立一个新的项目,实现在浏览器中访问http://localhost:3000/?q=yutiya
输出yutiya的md5值

简介 package.json

该文件包含了项目的依赖等各种信息,当在项目文件夹下执行npm install会自动读取该文件,安装依赖到node_modules文件夹下,最后运行就可以跑起来了

1
2
$ mkdir lesson2 && cd lesson2
$ npm init

终端会提示输入信息,可以全部回车,然后使用编辑器打开,就能看到对应的键值了
init的目的就是为了生成package.json

执行$ npm install express utility --save
会自动在json文件中添加依赖项,类似下面这样

1
2
3
4
"dependencies": {
"express": "^4.13.1",
"utility": "^1.4.0"
}

node_modules也会有对应的文件内容产生噢

Nodejs第三课

使用superagent和cheerio完成简单爬虫

  • 使用superagent抓取网页
  • 使用cheerio分析网页

课程内容

Node.js 异步特性特别厉害,想要学习,利用爬虫的场景比较适合.

原文中介绍了爬github有rate limit限制,作者是菜鸟,不懂,所以也爬了Node.js开源社区CNode社区

使用了三个依赖,分别是express、superagent和cheerio

superagent是一个http方面的库,可以发起get或post请求
cheerio大家可以理解为Node.js版的jQuery,使用方式和jQuery一样
两者均为链式操作,用起来特别爽

走你:

1
2
3
4
$ npm init  // 初始化
$ npm install <packeagename> --save
$ touch app.js
$ vi app.js

第一步我们尝试打印出superagent发出的get请求的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var superagent = require('superagent');
var cheerio = require('cheerio');
var express = require('express');
var app = express();
app.get('/', function(req, res, next){
superagent.get('https://cnodejs.org')
.end(function(err, sres){
if (err) {
return next(err);
}
res.send(sres);
})
});
app.listen(3000, function(req, res){
console.log('app is running at port 3000');
});

Nodejs第四课

使用eventproxy控制并发

目标

输出CNode社区社区首页的所有主题的标题,链接和第一条评论,以 json 的格式。原文地址:lesson4

示例:

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"title": "【公告】发招聘帖的同学留意一下这里",
"href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12",
"comment1": "呵呵呵呵"
},
{
"title": "发布一款 Sublime Text 下的 JavaScript 语法高亮插件",
"href": "http://cnodejs.org/topic/54207e2efffeb6de3d61f68f",
"comment1": "沙发!"
}
]

挑战

输出帖子的作者,以及他在cnode社区的积分值,这里和原文不同,作者看错了,不过也算挑战
示例:

1
2
3
4
5
6
7
8
9
10
[
{
"title": "【公告】发招聘帖的同学留意一下这里",
"href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12",
"comment1": "呵呵呵呵",
"author1": "auser",
"score1": 80
},
...
]

原文: 以上文目标为基础,输出 comment1 的作者,以及他在 cnode 社区的积分值。
就一个地方不同,我过后会修改代码附上

关于163邮箱收不到github邮件

在github帐号中绑定的邮箱收不到验证码的时候
请在163邮箱的设置->反垃圾/黑名单 的白名单列表添加

一般添加完后就能收到了,添加后不能收到,在github中多点击几次发送验证邮件就能收到了,网易旗下邮箱均按此设置,估计网易的反垃圾邮件机制出问题了
Githuber,Happy!

Nodejs第一课

nodejs lesson1

Mac下:
sudo npm install -g express-generator@3 (express3)
sudo npm install -g express-generator (express4)

下面的学习均按照express3进行

创建express项目:

1
2
3
4
$ express -e nodejs-demo
$ cd nodejs-demo
$ npm install
$ vi app.js

app.js:

1
2
3
4
5
6
7
8
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000, function(){
console.log('app is listening at port 3000');
});

执行$ node app.js
访问localhost:3000,可以看到打印的Hello World!.

URL

我们熟悉的url其实是这个样子:
<scheme>://<user>:<password>@<host>:<port>/<url-path>

ftp:
ftp://账号:密码@主机/目录或文件

现在的使用的url精简成了这样:
<scheme>://<host>:<port>/<url-path>

npm express安装

Windows 7 下使用nodejs的npm管理工具安装express

express已经将版本分离了,需要单独安装:

express3:

1
$ npm install -g express-generator@3

express4:

1
$ npm install -g express-generator

hadoop安装

hadoop安装(CentOS 6.5)

安装(root)

  • ssh无密码登陆
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ groupadd hadoop 
    $ useradd -g hadoop hadoop
    $ vi /etc/passwd
    去掉`hadoop:x:`中的x,在sudoers中添加hadoop,问题列表有已经列出
    $ yum install openssh-server // 安装SSH
    $ su hadoop // 切换至hadoop用户
    $ ssh-keygen -t rsa -P "" // 生成公钥
    $ cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys // 将公钥加入自动验证,用于免登陆
    $ ssh localhost // yes无密码设置成功,需要关闭selinux防火墙
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×