Today, web server receive many requests from different IP addresses. Every request has same url and user-agent header, but source IP is different. The request flood is so high and out bandwidth is almost full.

fail2ban is a software to solve this problem. Although at first, it is used to prevent one IP try many password to login linux.

Install

Install most recent version for fail2ban. version 0.9 and below has some performance problem, when ddos flood is high, fail2ban will halt. I install version 0.11(June, 2019 when write this article).

Notice: If you upgrade instead of install, make sure remove…


传统网页是html+css的集合,主要功能是展示。大部分交互用超链接就能完成。比如新闻类,博客类的网站。遇到逻辑判断通常在服务完成,比如注册信息是否符合要求,密码是否正确等等。

然而后来产品经理发现一个规律,用户交互频率和用户留存率之间有一些关系。如果给用户一个按钮,还能马上给出反馈,那有一小部分用户就会每天来点这个按钮。但如果用户点了按钮,发现没有任何效果,用户就会离开。于是,产品经理需要能更快响应用户点击的方法。传统网页每次操作需要刷新网页显然不能更快了。于是javascript出现了,它能在本地就处理一些简单的用户交互逻辑,比如点了按钮马上给你一个loading图标。这样,即使后台还是很慢,但是好歹用户还没有走。

产品经理很满意,于是决定加大力度。因为他们发现有时候自己的交互想法用html的官方控件根本不够用。比如有时候需要一个能够选择时间段的日期选择控件,有时候需要一个能够插入图片的编辑器。这时候,javascript变的越来越复杂,于是出现了jQuery这样框架,它封装了一系列javascipt的原生API,让js操作html的dom对象变的更加简单。

但随着业务功能的越来越复杂,jQuery也不够用了。因为网页越来越复杂,用控件级别的jQuery确实解决了交互插件的开发功能,但是网站又出现了控件状态同步的问题。

如果你做了一个音乐网站,有个在线的播放器,那么你希望歌曲播放的时候有播出的时间,还有一个进度条可以支持拖动位置来播放不同的时间。这两个控件其实都需要现在播放时间,所以一旦改了这个时间就需要更新这两个控件的状态,如果一个不小心忘记写了某个地方,就会出现控件状态和数据不同步的情况。

于是vue.js就出现了。它支持和控件的状态和数据绑定在一起。以后这些更新控件只需要更新数据源就可以了,这节省了不少手写更新控件代码的时间。而且vue.js不止步于控件状态的更新,对html的所有内容,不管是html代码内容,dom的属性,甚至html的结构都能做更新。这让网页这种页面的概念变的模糊了,网页进入了应用时代。这种把数据和控件绑定的做法就是一种设计模式,成为MVVM。Model是数据,View是控件(也可以是网页),ViewModel就是Vue做的事情,把数据和控件绑定在一起。

awayyao

is busy

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store