都是风景,幸会。

问题的提出

开发一个 Web 应用的时候我们一般都会简单地分为前端工程师和后端工程师(注:在一些比较复杂的系统中,前端可以细分为外观和逻辑,后端可以分为 CGI 和 Server)。前端工程师负责浏览器端用户交互界面和逻辑等,后端负责数据的处理和存储等。前后端的关系可以浅显地概括为:后端提供数据,前端负责显示数据。

在这种前后端的分工下,会经常有一些疑惑:既然前端数据是由后端提供,那么后端数据接口还没有完成,前端是否就无法进行编码?怎么样才能做到前后端独立开发?

••••••

平时喜欢做点小页面来玩玩,并且一直采用单页面应用(Single Page Application)的方式来进行开发。这种开发方式是在之前一年做的一个创业项目的经验和思考,一直想写篇博客来总结一下。

个人认为单页面应用的优势相当明显:

  1. 前后端职责分离,架构清晰:前端进行交互逻辑,后端负责数据处理。
  2. 前后端单独开发、单独测试。
  3. 良好的交互体验,前端进行的是局部渲染。避免了不必要的跳转和重复渲染。

当然,SPA也有它自身的缺点,例如不利于搜索引擎优化等等,这些问题也有其相应的解决方案。

下面要介绍的这种方式可以说是一种模式或者工作流,和前端使用什么框架无关,也和后端使用什么语言、数据库无关。不能说是
The Best Practice,我相信经过更多人的讨论和思考会有 A Better Practice。:)

••••••

git add -Agit add .git add -u 在功能上看似很相近,但还是存在一点差别的;
git add .:它会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件;
git add -ugit add --update 的缩写,它仅监控已经被 add 的文件(即 tracked file),它会将被修改的文件提交到暂存区,不会提交新文件(untracked file)。
git add -Agit add --all 的缩写,是上面两个功能的合集。

••••••

WebStorm for Windows 的 terminal 预设是使用 Windows 内建的 Command Prompt,但可惜内建的 Command Prompt 不强,而 Git Bash 是 Git for Windows 所提供的 git 文字界面,让我们可以直接对 git 下指令,并显示当前的 branch,重点是能在 Windows 使用 Bash,且整合进 WebStorm 的 terminal。

••••••

在移动端,使用滚动来处理业务逻辑的情况有很多,例如列表的滚动加载数据,下拉刷新等等都需要利用滚动的相关知识,但是滚动事件在不同的移动端机型却又有不同的表现,下面就来一一总结一下。

••••••

最新闲来无事,折腾了一下 Hexo 博客系统,它是 Node.js 写的,据说速度很快。它的所有操作都可以直接在命令行完成,修改也只需要修改配置文件就可以了,不用上后台各种点击,避免各种麻烦。

Hexo 博客系统架构

首先了解一下 Hexo 博客系统的架构,它是如何实现静态博客通过服务器访问的:

Hexo 博客系统架构

••••••

查看某个字段访问日志

grep -P 'shell' access.log

查看某个字段总请求数

grep -P 'shell' access.log | wc -l

PV统计

可统计单个链接地址访问量:

grep index.shtml host.access.log | wc -l

总PV量:

awk '{print $6}' host.access.log | wc -l

独立IP

awk '{print $1}' host.access.log | sort -r |uniq -c | wc -l

UV统计

awk '{print $10}' host.access.log | sort -r |uniq -c |wc -l

查看文件权限:

在终端输入:

ls -l xxx.xxx (xxx.xxx是文件名)

那么就会出现相类似的信息,主要都是这些:-rwxrw-r--,一共10个字符;其中:

  • 第一个字符:代表的是文件类型;
  • 后边9个字符每3个为一组分为三组,每一组是一个用户组,第一组 rwx 代表的所有者 (user);
  • 第二组 rw- 代表组群 (group);
  • 第三组 r-- 代表其他人 (other);
••••••