rapidness

rapidness 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

rapidness 收藏了文章 · 2018-07-12

Web开发生存工具使用指南

这里安利两款我认为开发中能够极大的提高生产力的工具,Charles 和 Postman。

P.S. Charles(查尔斯)。。不要再读查理斯了,金刚狼中被老铁扎心的博士就叫 Charles

P.P.S. 多图慎点

两者的作用

首先,这两个工具重叠的功能并不多,两者一起使用效果绝对是1 + 1 > 2

Postman

Postman 主要是用于模拟 http 请求,可以很方便的测试各种METHOD的请求。
进阶用法还可以使用其进行一些自动化测试的操作,详见使用 postman 进行自动化测试

Charles

Charles 则属于一款代理工具,设置代理后便可以进行 http 请求的抓包,以及修改一些请求实际的内容来达到调试的目的。
主要是支持移动设备,跨设备调试神器

在日常中使用的顺序

一般在开发过程中,首先会通过Postman来进行接口的本地调试,验证没有问题以后则会进行代码的部署。
部署完成后就可以使用移动设备进行查看效果,这时为了验证接口的有效性,我们就会用到Charles,设置代理并拿到移动设备访问接口时的请求参数及返回值,进行验证确保生产环境上接口正常。

如果是在生产环境上出现了问题,这时候就可以先拿Charles抓包(也就是获取接口的请求信息),在确认接口确实出现问题时,我们现在就有两种途径可以去 debug:

  1. 使用Charles设置代理,将一个远程服务器地址代理到本地服务进行调试
  2. 使用Postman模拟当时生产环境的请求(从Charles中 copy header、query 之类的数据)

以上的操作都是非常直观的,非常高效的,如果抛开这类工具不用,就靠人肉 debug,不知要额外耗费多少时间了。

Postman 的安装与使用

Postman 是一款纯免费的工具(当然,一个多人协作的功能是额外收费的),由 Electron 驱动的一款软件。

官方网站:https://www.getpostman.com/
下载地址:https://www.getpostman.com/apps

此处略过下载&安装的过程。
P.S. 新版推荐安装独立应用,而不是 Chrome 的插件

打开应用后的界面大概是这个样子的:
usage-postman-landingpage.png

首先是右侧的内容主体,这里包含了最基础的几个设置项。
postman-request-input.png

  • 指定请求的 Method
  • 设置请求的 URL
  • 添加请求时所携带的参数

在上边的这几项都设置完成后,点击 Send 按钮,即完成一个请求的发送了。
当然,如果在发送请求时想添加一些 Header 信息的话,直接在下边编辑 Header 信息即可,界面类似 Params。
postman-header-editor.png
上图中右上角可以看到有一个 Cookies 按钮,点击后发现这里保存的是在 Postman 中所有访问的接口所返回的 cookie 信息,可以一键添加到当前请求的 Header 中来。
postman-cookie-copy.png

在请求发送过后,就可以在下边看到请求相应的结果了。
postman-response.png

  • Body 表示响应的结果
  • Cookies 为服务端返回的 cookie
  • Headers 是服务端返回的时所设置的各种头信息(Content-Type、Status 以及 CORS 之类的信息都会在这里)
  • Test Results,是测试脚本执行的结果(如果有编写的话,详见之前写过的使用 postman 进行自动化测试

再下边一行是返回数据的展示,默认会针对返回值的Content-Type进行自动格式化,三个按钮可以切换视图(格式化、原始数据、预览)
如果访问的 http 请求返回为 html 文件,则预览状态下展现类似浏览器,但是有些遗憾的是,页面中的静态资源引用一定要是绝对路径,不能出现类似这样的使用<link href="/XXX" />只能是<link href="http://XXX" />
postman-preview.png

用 Postman 还有一个很喜人的地方,如果你需要和其他人进行接口的联调,先在 Postman 中编写好对应的格式尝试发送请求,如果接口不符合预期的话,可以点击 Send 按钮下边的 code,将该次请求生成各种语言的实现,直接 copy 给对方,让对方帮忙查看问题出在哪里。
postman-request-code.png

最左侧的一栏,Collections,可以理解为是一个类似文件夹的存在,里边会包含多个 Request(也就是上边写的某一个请求)。
用于分组自动化测试,如果不使用自动化测试的话,单纯的当作一个文件夹来看待也是没有问题的。

Charles 的安装与使用

这两个工具的安装都比较简单,但是 Charles 在配置上会稍微复杂一些,毕竟要修改一些系统层面上的东西(不然没法抓包了)
Charles 是一个免费下载,但是使用收费的软件当然网上大量的..破解方案,详情咨询度老师和谷老师

官方网站:https://www.charlesproxy.com/
下载地址:https://www.charlesproxy.com/download/latest-release/

安装后的配置环节

可能就是大量的会在证书配置这里卡壳,所以觉得 Charles 好麻烦,不想用;殊不知一次麻烦过后带来的是怎样的好处。

设置代理端口

设置路径 Proxy -> Proxy Setting -> Proxies

安装成功以后,首先我们要设置代理所使用的端口号,一般来说都喜欢用8888
这个端口号是用来在远程设备上连接你本机时使用的。
同一个页面的其他几个选项卡,第一个是用来设置一些忽略的 IP、域名之类的,俗称的白名单。以及针对 MacOS 和 Firefox 的一些特殊选项。

charles-setting-proxy-port.png

设置要代理的路径

设置路径 Proxy -> Proxy Setting -> SSL Proxying Settings

然后是设置 Charles 针对那些路径的请求去进行代理相关的操作,是一个可配置的表格。
图方便的话,可以直接写上:,前边是 IP、域名,后边是端口。*作为通配符可以匹配全部。
charles-setting-ssl-proxy.png
charles-setting-edit-ssl.png

在本地安装证书

设置路径 Help -> SSL Proxying -> Install Charles Root Certificate

如果需要在本地进行一些抓包的操作的话,就需要在本地安装信任证书了
如果是 Mac,在安装完以后会自动跳转到钥匙串管理界面,右上角搜索 Charles 找到刚刚安装的证书。
将其所有的权限设置为始终信任即可。
charles-certificate.png

至此,在电脑端的设置就已经结束了,接下来就是远程设备的设置了,也就是我们平时用的手机之类的。
首先,我们要保证两个设备处于同一个局域网下,然后设置手机设备上边的代理信息。

以 iOS 举例,设置路径为:
设置 -> 无线局域网 -> 点击当前连接的 Wi-Fi 右侧的感叹号图标 -> 滑动到底部找到 HTTP 代理,点击进入 -> 设置服务器为电脑端的 IP,端口为我们在上边设置的那个端口即可。

此时,Charles 应该会弹出一个弹框提示有新设备接入,是否允许,点击 Allow 即可。
charles-new-device.png
但是,此时还没完,我们还需要安装证书到手机端才能够正常使用。

设置路径 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser

点击后,电脑上会有一个弹框,按照其说明找到弹框中的一个 URL,在手机浏览器中输入即可(目前的版本是 chls.pro/ssl)。
P.S. 一定要保证手机是在连着本地代理的情况下去访问者个 URL
charles-install-certificate.png
在 iOS 中会弹框提示你跳转到设置中安装描述文件,直接点击安装即可。
setting-1.gif

One more things,这个证书安装完以后,依然没有完成,我们还需要在 iOS 设备商进一步设置才能够使用。
此时我们看到的 https 的结果依然是错误的:
charles-unknown-https.png

设置路径 设置 -> 通用 -> 关于本机 -> 证书信任设置(在最下边) -> 找到我们刚刚的 Charles,点击 checkbox 完全信任这个证书

setting-2-1.png

现在就完成了在 iOS 上边的设置了,可以愉快的使用 Charles 进行抓包了。
charles-known-https.png

实际使用中的一些功能

将网络资源替换为本地文件

在工作中,如果突然有一个页面出现了 bug,而且不能够在本地复现,此时怀疑问题出在 js 文件中。
可是这个文件是通过 webpack 之类的进行打包的,用 Charles 就可以很好的进行 debug。
我们可以使用 Map Local 来将某些网络资源替换为本地的资源,就像上边的,我们可以将线上压缩后的 js 文件替换为本地未压缩(或者添加了 debug 逻辑的 js 文件)来进行调试。

设置路径 Tools -> Map Local

charles-map-local.png

比如我们将百度的首页替换为一个本地简单的页面。
此时再通过手机进行访问,得到的就是我们映射在本地的文件了。

demo-charles-maplocal.png
charles-map-local-detail.png

将请求转发到本地服务

上边的是针对一些静态资源文件进行的处理,但如果是一个接口出现了问题呢?
调用接口出错了,但是并不知道为什么,所以我们可以使用另一个功能,Map Remote,将一些请求转发到本地服务器。
这样无需去服务器上改代码就能够调试了。

设置路径 Tools -> Map Remote

几点注意事项:

  1. 某一项为空,则代表匹配全部的
  2. 如果是代理到本地服务器,Map to 里边的 protocol 一定要填成 http,不然 https 的请求转发过来也会是 https
  3. 如果在服务器中有用到 refer 字段的要注意了,这个 refer 的值会变成你在这里配置的本地接口地址,例如 www.baidu.com 代理到 localhost:8000,实际获得的 refer 为 localhost:8000,为了解决这个问题,你需要勾选下边的 Preserve Host header 来保证 Header 信息不会改变

charles-map-remote.png

修改请求的返回值

我们可以通过配置一些规则来改变某些接口的返回值。
比如我们将一个 github 的接口中所有的 jiasm 修改为 jarvis。

设置路径 Tools -> Rewrite

各种规则都可以配置,示例仅做了 Body 中的替换,其实修改 Header 什么之类的也都可以做到的。

charles-rewrite-setting-1.png
charles-rewrite-setting-2.png
charles-rewrite-setting-3.png

这样我们再访问接口时的返回值就会产生变化:
charles-rewrite-before.png
charles-rewrite-after.png

BreakPoints

上边的示例是在 Charles 中配置了一个规则,后续的所有访问都会去执行这一段逻辑。
但如果仅仅是想修改一次接口的请求,还要去配置这个规则就显得太麻烦了。
所以 Charles 还提供了另一种方案,BreakPoints,用类似打断点的方式,手动修改某一次请求的数据。

我们在要打断点的请求上右键调出菜单,然后找到 BreakPoints,点击激活。
charles-trigger-breakpoints.png
下次再访问时就会自动跳转到另一个页面进行设置。
第一次是修改 Request 的时候,所以我们直接点击 execute 执行。
等到下次再跳转到这个页面时则表示已经获取到数据了,这时我们再进行修改 Response。
charles-edit-breakpoints.png
Rewrite 是早于 BreakPoints 执行的,因为我们可以看到,name 已经被覆盖为了 jarvis
修改完成后点击 Execute,这时候设备就接收到了我们修改后的请求了。
charles-breakpoints-results.png

以及一些其他的小功能

  1. 模拟弱网环境 Proxy -> Throttle Settings
  2. 简单的压测 找到你要压测的请求,右键找到 Repeat Advanced

更多例子请查阅官方文档

小记

Postman 与 Charles 都是非常有助于提升开发效率的工具。
Postman 可以模拟请求、进行简易的自动化测试以及性能监控个。
Charles 可以在本地快速的进行 debug,解决问题(以及也可以做一些性能测试)。
希望大家能够善用工具,不要将自己的时间浪费到可被工具替代的事情上来。

查看原文

rapidness 关注了用户 · 2018-07-12

phodal @phodal

待我代码编成,娶你为妻可好 @花仲马

关注 1788

rapidness 关注了用户 · 2018-07-12

comehope @comehope

💯累计分享170+个项目💯

关注 9033

rapidness 关注了用户 · 2018-07-12

OBKoro1 @obkoro1

前端进阶积累、前端算法、开箱即用代码块:http://obkoro1.com/web_accumu...

关注 3209

rapidness 关注了用户 · 2018-07-12

关注 3126

rapidness 关注了标签 · 2018-07-12

javascript

JavaScript 是一门弱类型的动态脚本语言,支持多种编程范式,包括面向对象和函数式编程,被广泛用于 Web 开发。

一般来说,完整的JavaScript包括以下几个部分:

  • ECMAScript,描述了该语言的语法和基本对象
  • 文档对象模型(DOM),描述处理网页内容的方法和接口
  • 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口

它的基本特点如下:

  • 是一种解释性脚本语言(代码不进行预编译)。
  • 主要用来向HTML页面添加交互行为。
  • 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

JavaScript常用来完成以下任务:

  • 嵌入动态文本于HTML页面
  • 对浏览器事件作出响应
  • 读写HTML元素
  • 在数据被提交到服务器之前验证数据
  • 检测访客的浏览器信息

《 Javascript 优点在整个语言中占多大比例?

关注 137354

rapidness 关注了标签 · 2018-07-12

java

Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

Java编程语言的风格十分接近 C++ 语言。继承了 C++ 语言面向对象技术的核心,Java舍弃了 C++ 语言中容易引起错误的指針,改以引用取代,同时卸载原 C++ 与原来运算符重载,也卸载多重继承特性,改用接口取代,增加垃圾回收器功能。在 Java SE 1.5 版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对 Java 语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”。

版本历史

重要版本号版本代号发布日期
JDK 1.01996 年 1 月 23 日
JDK 1.11997 年 2 月 19 日
J2SE 1.2Playground1998 年 12 月 8 日
J2SE 1.3Kestrel2000 年 5 月 8 日
J2SE 1.4Merlin2002 年 2 月 6 日
J2SE 5.0 (1.5.0)Tiger2004 年 9 月 30 日
Java SE 6Mustang2006 年 11 月 11 日
Java SE 7Dolphin2011 年 7 月 28 日
Java SE 8JSR 3372014 年 3 月 18 日
最新发布的稳定版本:
Java Standard Edition 8 Update 11 (1.8.0_11) - (July 15, 2014)
Java Standard Edition 7 Update 65 (1.7.0_65) - (July 15, 2014)

更详细的版本更新查看 J2SE Code NamesJava version history 维基页面

新手帮助

不知道如何开始写你的第一个 Java 程序?查看 Oracle 的 Java 上手文档

在你遇到问题提问之前,可以先在站内搜索一下关键词,看是否已经存在你想提问的内容。

命名规范

Java 程序应遵循以下的 命名规则,以增加可读性,同时降低偶然误差的概率。遵循这些命名规范,可以让别人更容易理解你的代码。

  • 类型名(类,接口,枚举等)应以大写字母开始,同时大写化后续每个单词的首字母。例如:StringThreadLocaland NullPointerException。这就是著名的帕斯卡命名法。
  • 方法名 应该是驼峰式,即以小写字母开头,同时大写化后续每个单词的首字母。例如:indexOfprintStackTraceinterrupt
  • 字段名 同样是驼峰式,和方法名一样。
  • 常量表达式的名称static final 不可变对象)应该全大写,同时用下划线分隔每个单词。例如:YELLOWDO_NOTHING_ON_CLOSE。这个规范也适用于一个枚举类的值。然而,static final 引用的非不可变对象应该是驼峰式。

Hello World

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

编译并调用:

javac -d . HelloWorld.java
java -cp . HelloWorld

Java 的源代码会被编译成可被 Java 命令执行的中间形式(用于 Java 虚拟机的字节代码指令)。

可用的 IDE

学习资源

常见的问题

下面是一些 SegmentFault 上在 Java 方面经常被人问到的问题:

(待补充)

关注 107473

rapidness 关注了标签 · 2018-07-12

前端

Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。2005年以后,互联网进入Web 2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。

Web前端优化
  1. 尽量减少HTTP请求 (Make Fewer HTTP Requests)
  2. 减少 DNS 查找 (Reduce DNS Lookups)
  3. 避免重定向 (Avoid Redirects)
  4. 使得 Ajax 可缓存 (Make Ajax Cacheable)
  5. 延迟载入组件 (Post-load Components)
  6. 预载入组件 (Preload Components)
  7. 减少 DOM 元素数量 (Reduce the Number of DOM Elements)
  8. 切分组件到多个域 (Split Components Across Domains)
  9. 最小化 iframe 的数量 (Minimize the Number of iframes)
  10. 杜绝 http 404 错误 (No 404s)

关注 155287

rapidness 关注了标签 · 2018-07-12

php

PHP,是英文超文本预处理语言 Hypertext Preprocessor 的缩写。PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML 中使用。PHP 的语法借鉴吸收 C语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。(目前是 Web 开发性价比最高的语言)

关注 63676

rapidness 关注了标签 · 2018-07-12

css

层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表,由W3C定义和维护的标准,一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言。

关注 61553

认证与成就

  • 获得 0 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-12-03
个人主页被 83 人浏览