Intellij Idea 高效搬砖插件之 codehelper.generator

codehelper.generator

可以在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。

GenAllSetter 特性

  • 在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。
  • 按GenAllSetter键两次, 会为Setter方法生成默认值。
  • 可在Intellij Idea中为GenAllSetter设置快捷键。
+1

Intellij Idea 装逼插件之 grep-console,让你的控制台日志多姿多彩

简介

Grep Console是一款和IDEA Console相关的插件,可以通过expression表达式过滤日志、给不同级别的日志或者给不同pattern的日志加上背景颜色与上层颜色。

安装方法

1、File→Settings→Plugins,输入grep console,本地没搜到,就可以点击Search in repositories(或直接点击Browse repositories进入搜索),搜到Grep Console后选择Install进行安装即可,安装后需重启IDEA。

Intellij Idea 装逼插件之 grep-console,让你的控制台日志多姿多彩

使用方法

1、安装成功后就可以在File→Settings→Other Settings,找到Grep Console选项卡,在Highlighting & Folding中可以配置对应的规则,比如默认就有根据日志输出级别来定义不同的颜色。如下:

Intellij Idea 装逼插件之 grep-console,让你的控制台日志多姿多彩

2、输出效果如下:

Intellij Idea 装逼插件之 grep-console,让你的控制台日志多姿多彩

3、在console面板,右键选择Grep,就可以进入控制台日志过滤的界面,可以根据关键字对输出的日志进行过滤。

Intellij Idea 装逼插件之 grep-console,让你的控制台日志多姿多彩

 

0

如何写一个自己的 Chrome 谷歌浏览器插件?

前言

有的公司的网络不可以直接上外网,需要在一个 OA 管理网站上请求授权后有 2 小时连接外网的时间。所以需要每隔 2 小时去这个 OA 网站上点击一下按钮。那就可以写一个 JS 脚本来有事没事续一秒。

之前也曾预研过 Chrome 插件写法。于是学着写一个简单的插件。功能不复杂,也遇到了一些问题,在此记录一下。

Chrome 插件结构

mainfest.json 定义了插件的配置

backgroud 字段指明 background.js 为在后台永远默默执行的代码。content_scripts 字段指明当我们在地址栏打开 http://oa.com/* 匹配的网站时,它会去执行 content.js,相当于监听正则表达式匹配的网站。default_popup 字段指明点击插件按钮时弹出来的框的页面内容 popup.html,其实就是一个普通网页,如下所示,它需要单独的 popup.js 来进行交互。弹窗页面的 js 是打开后执行一次,生命周期和普通网页一样。

完成这个需求只需要打开一个 OA 网站的 tab 放在一边,在 content.js 里监听页面中的剩余时间,当剩余时间小于 N 分钟时,提交按钮事件就可以达到目的了。但这个按钮一天只能点 6 次,超过之后必须输入验证码。这时就无能为力了。

排期迭代

功能虽然简单,也要一步步来,分为三期迭代。

一期:跑通 Chrome 插件的例子,理解原理机制

二期:在插件弹窗页面实时显示访问开发网剩余时间;不需要验证码授权时,剩余时间小于阈值则自动授权

三期:需要验证码授权时,把验证码显示在弹窗里,提醒输入验证码后进行授权。后来发现这个功能不好做,验证码模块的 HTML 代码是写在 iframe 中的,这是一个跨域问题啊(敲黑板)!


主要逻辑

主要逻辑在后台代码 content.js 中,使用 setInterval 定时功能固定时间去检测访问情况。

比较奇怪的是单独直接打开 popup.html,它会调用 popup.js,里面也会执行 Ajax 请求 OA 网站,但会出现跨域错误。显然站点服务端是不支持跨域的。

那么写在插件里 JS 又是怎么达到目的的呢。那是因为 Chrome 插件是浏览器自产自销的,不受限于同源策略。

普通网页能够使用 XMLHttpRequest 对象发送或者接受服务器数据, 但是它们受限于同源策略. 扩展可以不受该限制. 任何扩展只要它先获取了跨域请求许可,就可以进行跨域请求。

这里的 Ajax 请求也会带上本地的 Cookie。


iframe 跨域问题

页面引用了单独的验证码模块,一旦使用 getElementById 类似的方法,就会出现

Blocked a frame with origin from accessing a cross-origin frame

的错误,stackoverflow 上也有讨论(http://stackoverflow.com/questions/25098021/securityerror-blocked-a-frame-with-origin-from-accessing-a-cross-origin-frame)。显然在不侵入验证码模块时,无法让两个窗口进行通信,HTML5 的 postMessage 方案也不行。

不过毕竟是 Chrome 的插件,还是有方法获取 iframe 的内容的:使用 content_scripts 的 all_frames = true 选项。content_scripts 是打开匹配的网站时,content.js 进行加载,获取到验证码后和 popup 弹窗进行通信,把提醒消息和验证码发到弹窗。弹窗手动输入验证码后发送消息到 content.js 发起授权。

0

idea里使用jclasslib Bytecode viewer插件代替javap命令查看字节码

前言

我们在写或读java代码时,有些时候(如语法糖等)很难理解JVM的具体执行细节,当然可以通过javap反编译来查看JVM字节码。但是每次都要敲命令,不免有些繁琐。在ide中,可以通过jclasslib Bytecode viewer插件工具来更细节地观察某类的字节码信息。

安装

在idea的插件安装界面,搜索jclasslib Bytecode viewer,然后点击install,然后点击restart。

使用

重启ide后,点击某个类,在工具栏view中可以看到show bytecode的选项,如下:

新建一个Test类

编译好后,点击show bytecode,可以看到完整的字节码信息

当然,也可以点击 Show ByteCode with Jclasslib,这时可以看到该类的基本信息、常量池、接口、属性、函数等信息。

另外,如果想了解某个具体字节码指令的含义,可以点击它,就会跳转到 java虚拟机规范对应的章节。

假设咱们想看iconst_1,点击它

更细节的功能,大家自行挖掘吧。

0

idea插件RestfulToolkit(接口自测工具)使用教程

简述

一套Restful服务开发辅助工具集,提供了项目中的接口概览信息,可以根据URL跳转到对应的接口方法中去,内置了HTTP请求工具,对请求方法做了一些增强功能,总之功能很强大!

使用

可以通过右上角的RestServices按钮显示项目中接口的概览信息;

可以通过搜索按钮,根据URL搜索对应接口;

可以通过底部的HTTP请求工具来发起接口测试请求;

通过在接口方法上右键可以生成查询参数、请求参数、请求URL;

通过在实体类上右键可以直接生成实体类对应的JSON;

0