分类‘编程代码’

在 Spring(Spring Boot) 中应用 Kotlin

Kotlin 已悄然成为 Spring 继支持 Groovy 后的第二个 JVM 语言。持续关注 Java 的同时,也顺手在 Spring 上体验了一把。

本例简单记录 Kotlin 的初始化以及配置文件的输出,建立在熟悉 Spring、Spring Boot 及 Kotlin 的基础上,如对 Spring 框架或 Kotlin 语言比较陌生,建议先行了解。

1、创建项目

springboot-1
查看更多...

iOS下AJAX请求遇HTTP状态码401持续pending问题解决

最近项目上遇到这样一个问题,iOS 系统,在 AJAX 请求发出后,因授权原因返回 401,发现一直 pending,查了很久发现 SO 上有类似提问。

主要原因是,当 AJAX 返回带 WWW-Authenticate 信息的 401 响应时,Web 容器 (浏览器或 WebView )会尝试弹出弹出框让你输入认证信息。但是在 iOS 平台,系统的某些默认行为会导致请求没有被发送到应用层。因此,AJAX请求会处于 pending 状态。

因为项目并不是基于 HTTP 认证的,而服务端采用的 IIS,默认开启了相关配置,最终为解决问题,选择了删除响应头中所有的 WWW-Authenticate 信息。 查看更多...

Vue上拉加载下拉刷新组件分享

项目需要,基于IScroll5简单写了个上拉加载、下拉刷新的组件。

代码简单分享一下。

老规矩,代码放github,方便取用。

PS:因为只是留个备份,简单从业务代码中剥离,未做测试和构建,暂时也没有发布到npm,文档嘛,自己看代码吧。 查看更多...

Kotlin Android扩展使用及流行框架支持

接上篇,整理一下Kotlin在Android平台上应用的一些实例及方法。

Kotlin Android Extensions

Kotlin针对Android提供了Kotlin Android Extensions,可以很大程度上增强Android的开发体验。
背景
相信每个Android开发人员都很清楚findViewById()函数,并且备受摧残,毫无疑问,大量的findViewById()会造成代码阅读上的干扰和错误定位的难度,虽然有类似Butterknife之类的库可以通过注解实现绑定,但在实际使用过程中还是要为每个变量增加注解,倘若出现大量注解,维护难度应该不亚于直接编码,而其优点无非是代码看起来简洁了,但整体看似乎并不是特别优雅,且需要增加额外的运行库。

现在,Kotlin Android Extensions插件给我们提供了更优雅的方法,且不需要额外引入运行库,比如,我们的代码可以像下面这样写: 查看更多...

是时候在Android开发中使用Kotlin了

早在2015年,就开始断断续续接触Kotlin,最初是因为使用与Kotlin同公司的Intellij IDEA系列,从官网了解到Kotlin,也在博客记录了《初识Kotlin》。去年2月份,Kotlin终于发布了1.0正式版,又一次引爆热点,业内人员纷纷尝试Kotlin开发Android等场景,也有人拿其与Groovy、Scala甚至Swift对比,但与Java相比终归都是民间玩法。

直至今年5.18,Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持,并将Kotlin语言作为安卓开发的一级编程语言。至此,Kotlin终于完全被IT界大众所认识(据我所知,在此之前,很多使用Jetbrains系IDE的小伙伴,并不知道Kotlin的存在,也不知道自己日常离不开的IDE就是Kotlin开发的)。

有了Google的大力支持,相信未来必然像当年换ADT为Android Studio一样顺风顺水,毋庸置疑,作为Android程序员的你,是时候开始尝试在Android开发中使用Kotlin了。目前Android Studio 2.x可以安装插件使用,Android Srudio 3.x之后将默认支持Kotlin。下面参考kotlinlang官方使用引导整理了简单的引导教程,这里默认你是已经在使用Android Studio进行日常开发的程序员,细节将一带而过。

安装Kotlin插件

Kotlin插件与3.0版本的Android Studio捆绑在一起。 如果你使用的是较早版本,则需要安装Kotlin插件。在Android Studio的插件管理中直接搜索安装,安装完成后重启即可。 查看更多...

基于Vue.js的SSR方案之Nuxt.js

前端技术真是分分合合、合合分分,从前些年HTML、CSS、JavaScript混写到模块化的CommonJS、AMD、CMD,模块多了影响加载,又有了grunt、gulp、webpack等打包工具,最后发展到现在类似Vue的单文件组件,表面来看,似乎更爽了,但这样的模块化还是要靠写的人来把控了,稍有不慎,团队还真有人把.vue玩成当年的.html。

今天要说的是最近了解的一款基于Vue.js的SSR框架——Nuxt.js,用过react.js的童鞋可能都或多或少接触过Next.js,没错,这玩意和它是做同一件事的,正如前面所说,分分合合、合合分分,前后端分离好不容易在国内实施得火热起来,可百度并不怎么认你的单页App,且盲目使用之余,很多App文件过于庞大,以至于按需加载后首页渲染性能还是不理想,面对这样的问题,有SEO需求、对首屏渲染有提升要求的技术小伙伴们又在前端的小圈子里划分出了服务端,也因此有了传统型的express、koa、adonisJS等,但这并不能阻止我们前进的脚步,回到现实,当前火热的react.js、angularjs、vue.js都有了服务器端渲染方案,于是因为工作用vue.js的缘故,接触了Nuxt.js。 查看更多...

Android系统Web字体/行高异常解决

相信做前端开发的朋友很多时候会遇到这样的问题,设置行高来达到文本垂直居中的目的,但移动端会遇到略偏上或者偏下,通常情况下轻微的偏移可能出现于设备像素密度、容器高度、字体大小等原因,比如30px容器内放15px文字,就做不到完全居中,这个不在今天问题范围,不再赘述。

今天的问题其实算是旧事重提,遇到这个问题,最初是在2015年了,当时团队其他同事做混合app有类似问题,同事最终似乎是采用padding的形式取代了行高,但实际上这个还会引起一些问题,主要是Android系统设置字体后,WebView内字体大小深圳和字体相关的属性都受到影响。

在去年4月份曾写过一篇文章《QQ内置浏览器下网页行高、字体大小显示异常解决》,但是当时只注意到Android系统下手机QQ内嵌的浏览器,直至后期做自己的Android App使用WebView内嵌网页,也发现了同样的问题,经过翻阅网上资料案例,发现近期挺多类似文章和提问,主要原因是Android系统多使用sp作为单位,会根据用户设置缩放字体。

常规的解决方法主要有以下两种 查看更多...

异步输出网页列表查看详情后返回定位

最近有个需求,移动端网站,列表上拉加载,点击详情后返回,每次都固定返回到顶部,感觉这样不够人性化,希望固定到进列表前的页面,于是简单实现了一下。

这里有两个问题

1、数据都是异步的

2、只有返回的时候定位(刷新正常回顶部)

简单的实现思路及主要代码

为了方便二次加载,异步数据每次缓存到本地,同时拦截页面所有链接,在即将跳转的时候记录当前页面或者滚动元素的scrollTop值,下次进页面判断是否返回进来的,如果是直接进来或者刷新,则重新请求,如果为返回,则直接使用已缓存数据迅速加载后使用已缓存的scrollTop值定位到进详情页之前的位置,同时清除值,即scrollTop值的缓存仅一次有效。 查看更多...

Android优化之SparseArray替代HashMap

Java开发过程中,一般免不了使用HashMap来存储键值对以方便各种需求的实现,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些Java的API并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的API,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。

对于SparseArray,比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型等),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,同时,还实现了SparseIntArray、SparseLongArray、SparseBooleanArray。 查看更多...

Android WebView内嵌网页input无法选择文件解决

最近发现公司APP内嵌的网页点击上传图片没任何效果,查资料得知是Android安全限制,WebView内网页默认没有读取本地文件的权限。虽然网上有解决方案,但是由于Android版本几经波折,API签名大相径庭,想要完全兼容,要实现多个方法,为方便以后使用,简单记录一下。

首先,在使用WebView的页面,增加如下全局变量,方便回调使用:
查看更多...