ajax的应用,以及jQuery和vue的实现 / 网络研习社#35

ajax.jpg

ajax的应用还是蛮广的,它是一种异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。它具有异步和局部刷新的优点,在网页中几乎都会采用。它原生的写法有点复杂,所以,会有一些封装的技术,比如,jQuery和vue的实现,使它的应用变得简单很多了。

ajax原生的写法

1
2
3
4
5
6
7
8
9
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "/ajax_test/", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send("username=q1mi&password=123456");
xmlHttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
alert(this.responseText);
}
};



确实原生的写法不好理解,也不好用,还是直接来看jQuery和vue的实现吧。

jQuery的实现

发送get(jQuery)

1
2
3
4
5
6
7
8
9
10
11
<script src="js/jquery-3.4.1.js"></script>

$.ajax({
url: "/test/",
type: "GET",
data: {"key": "value", "age":18},
success: function (args) {
$("#val3").val(args);
}
})
})



发送post(jQuery)

1
2
3
4
5
6
7
8
9
$.ajax({
url: "",
type: "POST",
headers: {"X-CSRFToken": $.cookie("csrftoken")},
success: function (args) {
$("#val3").val(args);
}
})
})


快捷方法(jQuery)

1
2
3
4
5
6
7
8
9
10
11
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){
alert("Data Loaded: " + data);
});

$.post("test.php", { name: "John", time: "2pm" }, function(data) {
process(data);
});

$.getJSON("test.js", function(json) {
alert("JSON Data: " + json.users[3].name);
});



以这样一种封装的程度,使用ajax发送请求变得异常简单!以简单几行代码就可以从服务器端获取想要的结果啰,这也怪不得jQuery会成为最流行的代码工具之一。

vue的实现

它是使用axios这个组件来实现ajax的,使用起来也是异常简单的,vue也成为当今最流行的前端框架之一。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
http://www.axios-js.com/zh-cn/docs
https://www.kancloud.cn/yunye/axios/234845

cnpm install axios --save

#main.js
import axios from 'axios'
Vue.prototype.axios = axios
#其它js中使用:
this.axios({......})

methods:{
get(){
this.axios.get('http://vue.studyit.io/api/getlunbo').then(res => {
console.log(res.data)
}).catch(function (error) {
console.log(error)
})
}
}

this.axios.request({
method: 'post',
url: 'http://192.168.1.101:8000/login/',
data:{
username:this.username,
password:this.password
}
})
.then(function (arg) {
console.log(222,arg);
}
})
.catch(function (error) {
console.log(333,error);
});


This page is synchronized from the post: ‘ajax的应用,以及jQuery和vue的实现 / 网络研习社#35’

相比小学,大学收费反而是最便宜的!

collage.jpg

XX小学2018年收费标准(学费):9.8万元/学期(1-3年级);11.5万元/学期(4-6年级)。2018-2019学年招收一年级新生4个班,每班班额26人,共有学位104人。2–5年级,有少量插班生优质学位提供。(需提前预约定位)

看到这样的消息,内心真是有千万头草泥马奔过。小学一年的学费都有将20万了,相比起来,读大学真是便宜啊!

小学还有学位一说?我真是孤陋寡闻了!我只知道教务部只有三个学位:博士、硕士、学士。什么时候还有小学学位一说,真是不清楚啊。这20几多的学费花起来,不叫“学位”还真是花得不值,难道是照顾家长脆弱而虚荣的内心?!


This page is synchronized from the post: ‘相比小学,大学收费反而是最便宜的!’

《长安十二时辰》无厘头结局,目的竟是教皇帝做人!

changan2.jpg

changan.jpg

如果《长安十二时辰》只有前20集的话,无疑是部优秀的国产剧了。可惜,虽然悬念依然在,可是却对主剧情丝毫无益。剧情越往后,其结构的合理性就越差,感觉编剧的才气早早用完了,后面纯属瞎编。

举几个例子:何孚轻信龙波谋刺右相,结果被骗。不过你想想何孚的设定,他可是在6~7岁的年纪就会伪装的高手,怎么可能智商那么低下?!徐宾,一个精通大数据的高手,最终目的就是为了当宰相?

龙波折腾了40多集,集集都是 伏火雷,结果也没炸出什么动静。拼死这么多人,他的目的就是教皇帝做人!既然龙波和张小敬都是军中人,都有很高的荣誉感,但为何却对终级对象:皇帝却没有丝毫地敬畏呢。唐人的政治觉悟都这么高的?忠君爱国都晓得不是一回事,皇帝是皇帝,国家是国家?

我也是看前面几集还不错,追着看了下。其实国产剧真是只能看看热闹,没必要较真。


This page is synchronized from the post: ‘《长安十二时辰》无厘头结局,目的竟是教皇帝做人!’

Docker 运行 yoyow见证人节点 / 网络研习社#32

docker-yoyow.jpg

这两天学Docker有些心得,也做了些小镜像,都还挺好用的。边做边学的过程中,有些更深地体会。比如镜像的概念:镜像=系统+软件(应用)。当我们的思想还停留在安装软件的阶段时,镜像们已经自带系统满世界乱跑了!镜像真真是很方便:软件都不用安装了,run起来就能用!像MySQL这种难安装的软件,有镜像就方便很多了。

镜像=精简地系统!正因为镜像都自带系统,所以才无需安装。最精简好用的Alpine只有5.58M,Ubuntu18的镜像也才只有64.2M。所以不要有什么不好地联想,以为什么系统都像windows一样动辄几十个G。在这些精简的系统上构建软件(或是应用),打包成镜像。别人拿到这个镜像就可以直接使用了。

像github一样有个docker-hub(https://hub.docker.com),里面有无数前辈们的成果,你需要做的仅仅是拿来用而已。

在做docker练习的时候,就想着把yoyow见证人节点做成镜像,因为它还蛮符合镜像单一功能的特点。找来Ubuntu18的镜像,构建一个容器,在容器内把yoyow见证人程序下载进去,然后运行起来,一下子就成功了。根据步骤,写成Dockerfile,就可以成功构建出镜像了!当然,你也可以直接从已成功容器的基础上commit成镜像也是可以的。

Dockerfile是长成这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM ubuntu:18.04
MAINTAINER lemooljiang <jackeyjiang2015@gmail.com>

RUN apt update \
&& apt install -y wget \
&& wget https://github.com/yoyow-org/yoyow-core/releases/download/v2.0.0-190531/yoyow-v2.0.0-ubuntu16-20190531.tgz \
&& tar zxvf yoyow-v2.0.0-ubuntu16-20190531.tgz \
&& rm yoyow-v2.0.0-ubuntu16-20190531.tgz \
&& cd yoyow-v2.0.0-ubuntu16-20190531 \
&& cp yoyow_client / \
&& cp yoyow_node / \
&& cd .. \
&& rm -fr yoyow-v2.0.0-ubuntu16-20190531

ENTRYPOINT ["/yoyow_node"]



看起来蛮容易吧,这和虚拟机中安装是一个道理。所以,会虚拟机的小伙伴用起docker来也是一样便利的。

运行时

docker run -d --name yoyow lemooljiang/yoyow --rpc-endpoint -w 384452518 --private-key '["YYW5kTRfff554DDD","5KfDSDSh56"]'

这条命令有点长,有点难度也就是它了。大家应该注意到Dockerfile中ENTRYPOINT ["/yoyow_node"],它就是要在容器运行时要执行的命令,见证人后面的参数都跟在后面呢。

稍微解释一下这条命令: -d–守护式容器, --name yoyow–容器名, lemooljiang/yoyow–所需使用的镜像名,--rpc-endpoint -w 384452518 --private-key '["YYW5kTRfff554DDD","5KfDSDSh56"]'–这一长条就是见证人后面的参数了。

维护和查看

也就一个命令docker exec -it yoyow /bin/bash就可以进入到容器里面,这和虚拟机操作是一模一样的。

用Docker 来运行 yoyow见证人节点是可以考虑的,它有Docker镜像所有的优点,比如守护进程、运行简便、管理便利、多环境适用等。

yoyow见证人镜像我已上传到docker-hub上了,大家可以找来试试吧,地址在这:https://hub.docker.com/r/lemooljiang/yoyow

我的 yoyow见证人号是:384452518,大家多给我投票吧!


This page is synchronized from the post: ‘Docker 运行 yoyow见证人节点 / 网络研习社#32’

周末影院:《哥斯拉2》,只见怪兽大战!

《哥斯拉2》不愧是怪兽级电影,特效是特别棒!场面做得华丽无比,看得过瘾。多头怪兽集结,号称要维护世界平衡!当然了,看看场面还行,剧情神马的不重要。

怪兽都是吃“激素”长大的!我特地留意了一下,这些怪兽们能长这么大个头,基本都是吃放射性物质。剧中哥斯拉被三头龙打个半死,吃颗原子弹就满血复活了!

关公就是要战秦琼!老外有种轴劲,什么能力的都要分个高下,比如这些超人们到底谁厉害,比如这些怪兽哪个最强?!据称下一部是哥斯拉战金刚,再下一部是哥斯拉占铁血战士,再再下一部是哥斯拉战金刚狼………充分发挥美剧无止无境的轴劲!


This page is synchronized from the post: ‘周末影院:《哥斯拉2》,只见怪兽大战!’

Docker基础入门学习 / 网络研习社#31

Docker的入门应用并不难,它就是要减免程序地学习和安装难度。这好比学开车比较容易,你要学造车就比较难了。对于普通用户,能用就ok!

docker.jpg

Docker的三大概念:仓库、镜像、容器

从上图中大家了解Docker的三大概念:仓库、镜像、容器,这个了解了,其实就学完大半了!你所要做的就是从宜家买把椅子回家,放在家中用起来就行了。

下面是这几天学习的一些笔记,大家可以参考着看看。

Docker

目录

下载与资源:

1
2
3
4
5
6
Docker version 19.03.1, build 74b1e89e8a
docker-compose version 1.23.1, build b02f1306

官 网: https://www.docker.com
docker-hub: https://hub.docker.com
手册:https://docs.docker.com

Ubuntu维护版本安装(版本较旧)

1
2
3
4
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io
sudo docker.io version
注意:这个版本安装的docker版本较旧,推荐使用下面的Docker维护版本安装。

Docker维护版本安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo apt-get install –y curl
// 可以先检查下curl: whereis curl ,如果已有不用安装。

curl –sSL https://get.docker.com/ | sh
sudo docker version

使用非root用户(加入docker用户组):
sudo groupadd docker
sudo gpasswd –a ${USER} docker
/ sudo gpasswd –a lemooljiang docker
sudo service docker restart

sudo wget –qO- https://get.docker.com | sh
sudo usermod –aG docker jiangzhibin

# 另一种方法安装docker
wget -qO- https://get.docker.com/ | sh

docker-compose

1
2
3
4
5
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1
/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

镜像images

1
2
3
4
5
6
7
8
9
docker images [options] [repository]
-a , --all=false
-f , --filter=[]
--no-trunc=false
-q , --quiet=false

docker rmi [options] image[iamge...]
-f , --force=false
--no-prune=false

获取和推送镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker search [options] term
--automated=false
--no-trunc=false
-s , --stars=0
docker search ubuntu /查找ubuntu镜像

docker pull [options] name [:tag]
docker pull ubuntu:14.04 /从远程下载镜像

更改国内docker源(--registry-mirror选项)
vim /etc/default/docker
DOCKER_OPTS = "--registry-mirror=http://MIRROR-ADDR"

docker push docker/whalesay /上传镜像到docker-hub

构建镜像commit

1
2
3
4
5
6
7
8
9
docker commit 通过容器构建
docker build 通过Dockerfile构建

docker commit [options] container [repository[:tag]]
-a , --author="name"
-m , --message="things"
-p , --pause=true

docker commit -a "lemool" -m "add nginx" my_ubuntu lemool/nginx_ubuntu

构建镜像Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
vim Dockerfile

FROM ubuntu:14.04 /基础镜像信息
MAINTAINER jiangzhibin "497867999@qq.com" /作者
RUN apt-get update /运行的命令
RUN apt-get install -y nginx
EXPOSE 80 /暴露的端口

# this is first dockerfile
# version v1
FROM ubuntu
MAINTAINER lemool "497867999@qq.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80

## RUN的两种模式
RUN <command> /shell模式
RUN ["executable", "param1", "param2"] /exec模式

RUN echo hello
RUN ["/bin/bash","-c","echo hello"]

CMD ["executable", "param1", "param2"](exec模式)
CMD command param1 param2 (shell模式)

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

ADD <src>...<dest>
COPY <src>...<dest>
VOLUME ["/data"] 添加巻
WORKDIR /path/to/workdir
ENV <key><value>
USER daemon
ONBUILD [instruction]

docker build [options] path | url |
docker build -t my_ubuntu . /直接创建my_ubuntu的镜像

容器container

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker run docker/whalesay     /运行镜像
docker run ubuntu echo hello world /启动容器并输出

docker run -i -t ubuntu /bin/bash /启动交互式容器
docker run --name mydocker -it ubuntu /bin/bash
ctrl+p ctrl+q /退出容器

docker inspect [options] container|image /详细查看容器的信息

docker ps /查看正在运行的容器
docker ps –a /查看所有容器
docker ps -l /查看最后开启的容器
docker start container_name /重启容器
docker stop container_name
docker extc | docker attach /重新进入容器
docker rm container_name | docker rm -f /删除容器

docker tag docker/whalesay jiangzhibin/whalesay /更改镜像标签

容器的端口映射

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d -P --name my_ubuntu ubuntu
-P ,--publish-all=true | false 默认为false
docker run -P -i -t ubuntu /bin/bash

docker run -d -p 91:80 --name my_ubuntu3 ubuntu
-p ,--publish=[]指定映射
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort
docker run -p 80 -i -t ubuntu /bin/bash
docker run -p 8080:80 -i -t ubuntu /bin/bash
docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash

查看守护进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ps –ef | grep docker
sudo status docker

docker -d [options]
-D , --debug=false
-e , --exec-driver="native"
-g , --graph="/var/lib/docker"
--icc=true
-l , --log-level="info"
-p
-G
-H
--tls
--api
-s

sudo service docker stop
sudo service docker start
启动配置文件 /etc/default/docker

守护式容器

1
2
3
4
5
docker run -d <image>
ctrl+p ctrl+q 进入后台
docker logs
docker top <image>
docker exec -d -i -t <image> <command> <args>

docker远程访问

1
2
3
4
5
-H tcp://host.port
unix:///path/to/socket
fd"//*or fd://socketfd

-H unix:///var/run/docker.sock

docker网络连接

1
2
3
4
5
6
7
8
sudo apt-get install bridge-utils
sudo brctl show

# 更改docker0地址
sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0

docker0:linux虚拟网桥,可以设置IP地址,相当于拥有一个隐藏的虚拟网卡
172.17.42.1 255.255.0.0

数据卷volumes

1
2
3
4
5
6
7
8
9
10
11
12
13
data volumes, 数据的永久化
docker run -v ~/container_data:/data -it ubuntu /bin/bash
-v /data
-v src:dst
docker inspect <image> 查看数据卷

docker run -it --name volume_test -v /data lemool/nginx_ubuntu
docker inspect volume_test

docker run -it --name volume_test -v /data:/data lemool/nginx_ubuntu
/data:/data 第一个data是宿主机的data, 第二个data是docker上的data,这样可以一对一映射

VOLUME ["/data"] 添加巻

数据卷容器

挂载数据卷的容器,以共享数据

1
2
docker run --volumes-from [container name]
docker run -it --name volume_test2 --volumes-from volume_test lemool/nginx_ubuntu

资源隔离

1
2
3
4
5
6
LXC Kernel   namespace
pid net lpc mnt uts user

资源限制
cgroup
cpu 内存

This page is synchronized from the post: ‘Docker基础入门学习 / 网络研习社#31’

Your browser is out-of-date!

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

×