OAuth2 与 JWT 那些事

  自从微博流行后,OAuth2 概念自然也在开发圈里活跃起来,各种微博客户端雨后春笋般出现。到后来的 Web 前后端分离流行起来后,JWT 又映入眼帘。
  15年花图相册上线后,自认为在PC上看图已经有很好的体验了,做到极致的响应式页面能适配从手机屏到4K屏。经过一年多的使用,并没达到之前的预料,这一Geek般操作在实际使用中还是有很多不足,这里就不列举了。
  为此何不针对不同平台,分别做一套程序,并调整不同的功能。例如微信小程序,仅提供基础浏览,分享某一个相册,隔离其他相册。基于这些点的考虑,有很多技术方案选型。本文简单聊聊 OAuth2 和 JWT。

  Oauth2有四个角色非常重要

  Resource Owner 资源拥有者
  Resource Server 资源服务器
  Authorization Server 授权服务器
  Client 客户端

  举个例子:

  用户拥有花图相册上的照片资源(PC端upload),花图服务器提供存放这些照片资源,同时提供授权服务。这时候,如果有一个【花图App】用户将其装在手机上,选择使用花图账号登录,跳转到一个花图相册登录界面,随后进行授权确认。再返回App中,App便可以与花图服务器进行交互,获取到用户照片资源,显示出来。这里面还有很多细节如:AppId,AppSecret,Grant,Access_Token,Refresh_Token,Expires等不具体描述了。

  JWT本质只是提供了一种 Client 与 Server 间交互数据的协议,提供编码,防篡改等一些特性,通常与一些权限框架结合使用,例如 Shiro、Security 等。通过自定义 Token 签发一定程度上取代 Web 里面的 Session。

  Spring Boot 对着两种技术均有支持,还挺方便的,后续用到再细写。

Spring Boot 2.0 goes GA

  经过 17 个月的酝酿,来自 215 个不同开发者,超过 6800 个 commits 之后,终于迎来了一个全新的 2.0 版本现在如期而至!
  可以通过 repo.spring.ioMaven Central 下载使用。
  而此次发布距离 1.0 版本已经过去了4个年头,这也是第一个开始全面支持 Spring Framework 5.0 。

  主要包括以下新特性:
1、支持 Java 9,最低支持 Java 8
2、支持 Reactive Web 编程
3、对 Reactive Spring Data 提供自动配置项,包括 Cassandra/MongoDB/Couchbase/Redis
4、内嵌 Netty 高性能网络框架
5、内嵌容器 Tomcat/Undertow/Jetty 开始支持 HTTP/2
6、提供 Kotlin 语言支持
7、提供 Jersey 和 WebFlux 支持
8、提供全新的 Micrometer 统计支持
9、提供 Quartz 定时任务支持
10、安全配置优化

  更多新特性了解,可以浏览这里:release notes,老版本迁移看这里:migration guide,还有熟悉的start bootstrap:start.spring.io

DJI Mavic Air 灵动归来


  记得去年Mavic Pro发布不久就收入一台,结果遇到的各种问题,不得已又退掉了,一直长草至今。终于在今天Mavic Air发布,再次拿下,一年的时间应该有不少的变化吧。

  对比了下Air和Pro的参数,最吸引的居然是外观!!流线型的外观确实好看不少。机身重量430g,比Pro减少304g,提升比较大。

  摄像头同样是1/2.3英寸CMOS,有效像素比Pro还少35w,仅1200w,这个档次还是略低!!仅从官方的视频来看效果差不太多,视频码率从60Mbps提升至100Mbps,分辨率最高3840×2160 30p,Pro的C4K仅能支持25p,焦距回到了精灵系列的24mm,f2.8显然更适合风光。

  最大飞行速度略快于Pro,达到68.4km/h,搭载2375mAh电池,比Pro的3830mAh少了一大截,续航时间锐减至21min,意思是多备电池,常充电呗。5级抗风,10km续航,马马虎虎吧。多了8G机载内存,好像也没啥用。感知系统多了后方检测,前、后、下视觉精度均向内提高不少。更适合狭窄地方飞行。遥控器少了屏幕,没那么酷炫了。搭载全新FlightAutonomy 2.0(高级辅助飞行系统),也是牛逼的不行,实际效果如何,以后再看。

  最后,4999的起售价,进一步降低入门门槛,一个字“值”,待到手后的体验。。

  Mavic Air & Pro 参数对比
  点此购买

Solr 7.2.1配置smartcn中文分词器

  近期准备将歌词Style后端进行重构,首先将原来内嵌的Lucene 4.10.2升级到Solr 7.2.1。印象中上次使用Solr应该还是3的版本,变化非常大,整体看了下,其实简化了不少配置,通过admin管理界面能很方便的添加core和fieldType,也不用到处copy xml。这里简单记录下:

1、下载、解压:

wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.2.1/solr-7.2.1.zip
unzip solr-7.2.1.zip
cd solr-7.2.1

2、加入smartcn分词器
  解压的contrib里面其实已经包含了smartcn分词器,默认没有启用,这里将其加入到默认的config中。

一、编辑server/solr/configsets/_default/conf/solrconfig.xml
节点最后增加:

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex="lucene-analyzers-smartcn-\d.*\.jar" />

二、编辑server/solr/configsets/_default/conf/managed-schema
节点里面增加

<fieldType name="text_cn_smart" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  </analyzer>
</fieldType>

3、启动、创建core:
  由于我这里是root用户安装,需要加-force,官方不建议root下安装。

./solr start -force
./solr create -c lyric -force

  通过命令创建的core,默认会读取_default下面的配置,所以在上一步需要加入所需要的组件。如无问题则可以通过浏览器打开管理界面进行下一步。

4、增加Field:
  在Core Admin可以看到刚才创建的lyric已经出现在了右边,在Core Selector中选择lyric,可以看到更详细的信息,下拉框中已经给我们建好了几个Field,其中有一个类型为string的id和_root_,这个建议保留使用,并两者配置保持一致,其余的Dynamic Field依据情况可以删除,具体使用方法可以参考_default中的配置文件,注释说的很详细。

  这里我们直接选择Scheme -> Add Field,将需要索引的中文字段field type设置为之前设置的text_cn_smart,若是没有这一选项,检查前面的步骤。Solr已经具备通过dataimport组件导入任意来源的数据,不过我建议还是在程序中来添加数据,这里就不细说dataimport了。

5、验证:
  通过程序导入测试数据后,可以通过Analysis界面检查分词器是否正常工作,Query界面可以模拟查询,检验结果。_default中的配置是一份比较齐全的参考,在生产环境建议移除不需要的选项,避免影响性能。顺便提一句:Solr热度已经明显低于Elasticsearch。

回顾2017

  过去的一年里,依然在做一些有趣好玩的事。这一年里写博客少了,拍照也少了,但想分享的东西还是很多。

  工作上作为项目负责人,顺利将Spring Cloud架构引入公司的项目中,并在稳定用于生产环境,说实话踩了不少坑,当然也收获了不少,这里感谢领导同事们的信任与支持。就喜欢这种优雅而又简单的解决方案,对新同事来说学习成本也不高。

  过去的一年里,通过各种共享汽车,车技提升不少,各种复杂路况也算是游刃有余了,安全驾驶上万公里,零事故。感谢TOGO,iGo这些“练车”平台。解锁了蛙泳技能,并在最近成功挑战了2公里,耗时1个半小时。宝体的3米恒温池确实舒服,下一步将解锁自由泳,由此跑步有所减少。

  和好友注册了一家公司,当是个人品牌建设,花图相册没有啥变化,毕竟PC端已不再是主流,“歌词Style”公众号却人气增加不少,现在4000多的粉丝,每天使用700~900不等,明显出现了周末高峰期,计划着升级到服务号以提供更好的服务。摄影器材上出掉了佳能全套,败入Sony A7rII,50F1.4,1635F4,轻装上阵。当然还有一台Fujifilm X70出售中,计划换“Mavic II”,一代的画质不太理想。为了能在离职后不中断社保和更加自由的职业规划,将户口迁入了深圳。加入房奴一族,购买了位于大亚湾碧桂园一处房产,环境优美,宜居大盘,期待明年交房后生活。

  暂且记得的就这么多了,所谓累并快乐着。不忘初心,牢记使命,未来我想更多的是幕后走向台前,多元结合,合作共赢,期待。