作者归档

Spring Boot热部署配置方案

最近朋友吐槽新公司使用Spring boot,不会热更新,改个js都会重启,尝试及搜索后,总结下有三种方案:

1、使用springloaded

配置pom.xml文件新增如下:

maven

<!-- spring boot热部署 -->
<!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
<dependency>
    <groupid>org.springframework</groupid>
    <artifactid>springloaded</artifactid>
    <version>1.2.8.RELEASE</version>
</dependency>

gradle

// https://mvnrepository.com/artifact/org.springframework/springloaded
compile group: 'org.springframework', name: 'springloaded', version: '1.2.8.RELEASE'

查看更多...

纯CSS解决iOS下网页不满一屏header、footer随页面滚动问题

前端页面开发或是现在日渐增多的Hybird APP应用开发中,经常遇到模拟原生APP界面效果不佳情况,固定header、footer便是其中一种。

涉及header、footer固定,主体部分可滑动,最初想法一般是

position: fixed

然而,iOS各种下input获取焦点后fixed失效等一系列问题,致使我们不得不选择另辟他径。于是,我们这样玩 查看更多...

iOS WebView加载网页触摸白屏bug排查及修复

最近兄弟团队给提了一个bug,说他们iOS端的网页,触摸后很大几率出现白屏,一开始我是很不信的,后面本地调试竟然更高概率发生。

首先,系统是iOS10、11,网页是高度100%,中间部分越界滚动的一个常规效果,框架vue,不过感觉bug和vue关系不大,大概结构如下:

<body>
	<div id="app">
		<header class="page-header"></header>
		<div class="page-content"></div>
		<footer class="page-footer"></footer>
	</div>
</body>

由于希望得到平滑点的滚动,在中间滚动部分加了 查看更多...

一次关于换行符的问题解决

做程序的,大多应该都知道目前主流系统中,Windows、linux(unix)换行符的差异,最近就因为疏忽,搞了个很没头绪的bug。

写node cli,由于是Windows下开发的,换行符默认CRLF,发布后也可以正常执行,唯独使用mac的兄弟装完发现运行cli命令提示如下错误

env: node\r: No such file or directory

各种调试私活不行,最后偶然发现bin入口文件是CRLF,尝试改为LF,再次发布,一切正常。

这也是第一次受到换行符的影响,因为git提交时配置了自动转LF,这次是因为publish到npm时还没用提交到git仓库,导致换行符出错,直接不被mac系统识别。

npm link、yarn link及yarn workspaces使用

前端项目越来越大,成熟的团队免不了分模块开发再集成,有时候我们也会发布一些npm包用于拆分维护各种模块,这种时候,在正式发布前,我们的包往往不太方便测试,比如要输出bin等操作。

还好,npm以及后起之秀yarn都为我们提供了便捷的方式。

1、npm link/yarn link

在希望同步开发的组件包下执行(假设为component-a)

npm link
// or
yarn link

如果是npm,执行后如果项目没有node依赖,会在根目录创建一个空的node_modules,yarn则不会
查看更多...

使用yarn配置resolutions解决依赖错误

去年3月份,npm圈子发生过这样一件事,一个不过 11 行的工具函数left-pad被作者从npm上撤下,所有直接和间接依赖它的包就这么齐刷刷挂了,包括babel和react-native这样每天安装数万的热门项目。而Azer删除他所有的npm包又是另一个故事:Azer写了一个工具叫kik发布在npm上,这天有个同名的公司律师找上门要求他删掉,Azer不从,这律师就找上npm,npm把包的管理权限转给了这家公司——当然,Azer就怒了,从npm上解放了所有自己发布的包。

事件之后,有人给出了类似问题的解决之道,使用npm的bundledDependencies。不过,很多库作者并不会真的这样用起来,于是,今天又碰到了类似的问题,vue前端界自然是人尽皆知,配套的vue-loader更可谓是必需品,就是在vue-loader里引入的一个库——js-beautify,今天从1.6.14更新到了1.7.0,但是作者似乎写了个bug,于是依赖于node构建的我们,出现了如此异常

Module build failed: Error: Cannot find module './lib/beautify'
//...

官方issue里便出现了如此景象 查看更多...

Jetbrains系IDE同一项目多Git仓库操作

最近项目中涉及同项目下多git仓库的操作,习惯命令行的同事建议写脚本,习惯IDE的我当然是尝试IDE操作咯,稍微模式一番后发现IDE还是没让我失望,下面简单记录下基本操作(以Webstorm为例)。

为了方便演示,建了几个空仓库,demo-root、demo-sub1、demo-sub2、demo-sub3,先拉去demo-root,作为顶层项目:

jetbrains-cvs-demo1

然后拉去第一个子项目放到demo-root下,以demo-sub1为例,依次拉取demo-sub1 查看更多...

工作五周年小记

不知不觉,已工作整五年。

五年,从一个懵懵懂懂的小毕业生到一个可独挡一面的项目骨干,再到跳槽转行又跳槽,最后又跳回老东家,认识到不少好的、不好的人或事,都一定程度上促进了我的成长。

还记得,从2012年8月27入职第一家公司,到2015年4月22第一次换工作甚至从做了三年的Java转行前端,再到2016年5月18再次不甘平庸的跳槽做前端架构及leader,但企业太小始终折腾不过日渐衰败的大环境,终于,在今年的4月23日公司研发解散了,几经周折后,在5月18日又回到转行做前端的第一家企业,做了更能挑起自己技术热情的研发岗。 查看更多...

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的插件管理中直接搜索安装,安装完成后重启即可。 查看更多...