辞掉第一份工作了,发文纪念一下

在两年前的8月26号,曾发过这样一篇文章《找到第一份工作了,发文纪念一下》。

回忆起来,那时候刚毕业,真是什么都不懂,总觉得自己很牛,得到同学、朋友哪怕是那么一点点赞许,就高兴地找不到方向,也就是这样,摸爬滚打折腾了两个多月,最后找到了一家创业公司,也在那儿一待就是将近三年,大概就像网上说的那样,因为80后归属感比较强,再加上大部分人对自己的第一份工作比较看重的缘故,很多人觉得这样很正常,自然我也不例外。

不过,终究还是离职了,没有太多的不满与抱怨,只是觉得近一年的情况来看,对于自身能力已经没有太多可提升空间了,至少在我看来是这样 查看更多...

合理使用Intellij Idea,提高开发效率,避免内存溢出

最近使用Intellij idea(phpstorm、webstorm、pycharm、rubymine等类似)开发的时候,经常遇到内存被占满,导致异常卡顿,一开始总以为是自己程序内存泄露,后面发现即使不启动自己的项目,只是单纯的开发,依然会出现内存占满甚至溢出的情况。

最后,实在受不了,在各大技术网站上搜罗相关文章,都说修改Intellij idea默认的vm配置文件即可增大使用内存,比如,将bin目录下的idea.exe.vmoptions文件内由
-server
-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-XX:ReservedCodeCacheSize=150m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
修改为 查看更多...

Intellij Idea下打包JavaWeb项目忽略外部依赖包(Tomcat为例)

使用Intellij Idea有一段时间了(将近一年),从一开始的不习惯,到现在的高效开发,一切都显得是那么的自然而然。

由于前段时间一直做的项目并非传统Web项目,而是纯Restful风格的WebService,故而没有使用到基本的Servlet Api(Restful采用封装好的框架——Jersey,开发时不涉及Servlet Api的调用),也没有直接引入诸如Tomcat之类中间件自带的Jar包,所以一直没有发现问题。

直到最近,一个小项目的兄弟神奇的采用了Tomcat6的工具类实现文件上传,他开发使用的是eclipse,切换到我的Intellij Idea上面,发现编译不通过,就顺手在Libraries里面添加了Tomcat的Lib目录,自以为完美解决了,不料Tomcat6、Tomcat7启动时均会报错,有一段时间甚至引入Tomcat6的Lib,运行在Tomcat7下,由于关键API改动不大,而用到的Tomcat6文件上传工具类在Tomcat7更名或移除了,所以这样奇葩的开发了近一周时间,通过查看编译后的输出文件,了解到,Intellij Idea是吧Tomcat的Jar包也同时输出了,当然,打包的时候也会包含在War包内,不过由于项目紧张,一时没来得及找方法,后面实在不爽,就留意了一下网友们的说法: 查看更多...

IE8及以下浏览器js中日期字符串格式化问题解决

最近一个小项目上涉及日期字符串格式化的问题,由于之前大部分工作中使用现有js框架自带的组件库,并没有注意此类兼容性问题,直到最近才发现,原来在IE8及以下IE版本中,JavaScript的Date函数是不支持new Date("2013-12-31")、new Date("2013-12-31 00:00:00")或者new Date("2013-12-31T00:00:00Z")这样的构造方式的。

网上关于字符串格式化的函数一般都雷同,如下

function dateFormat(dateString,format) {
            if(!dateString)return "";
            var time = new Date(dateString);
            var o = {
                "M+": time.getMonth() + 1, //月份
                "d+": time.getDate(), //日
                "h+": time.getHours(), //小时
                "m+": time.getMinutes(), //分
                "s+": time.getSeconds(), //秒
                "q+": Math.floor((time.getMonth() + 3) / 3), //季度
                "S": time.getMilliseconds() //毫秒
            };
            if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o)
                if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return format;
        }

查看更多...

迟到的羊年祝福

开始上班一周了,发现博客缺了篇每年必发的新年祝福,索性这里补上。

新的一年里,祝大家天天开心“喜羊羊”;事事如意“美羊羊”;工作愉快“懒羊羊”;合家幸福“暖羊羊”,总之愿大家一切都好羊年喜气“羊羊”

Grails one to many情况下子对象排序

Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。

近期因团队需要使用Grails做开发,临时学习、熟悉一下Grails,以便快速投入开发,熟悉过程中发现,在Grails的 one-to-many 关系中,自动为你添加java.util.set,因此many端的数据顺序是不一定的,看了官方说是可以用SortedSet,也可以用List,List这里我没测试成功(可能是新接触,配置得不对),SortedSet的方式测试可用,这里记录一下。

假设有文章domain Post,评论domain Comment,Post配置hasMany=[comments:Comment],Comment配置belongTo=[post:Post],如下:
Post

package test

class Post {
    String title
    String content
    Date time=new Date()
    SortedSet comments
    static hasMany = [comments:Comment]
    static constraints = {
    }
}

查看更多...

自适应高度div内嵌iframe高度被撑开问题解决

标题有点长,就想表达一个意思,div自适应的情况下,内部嵌入iframe,iframe边框什么的全部设置0,本以为外层div可以完美自适应,结果div在不同浏览器却生生多出3-5个像素的高度。

找了下相关文章,发现确有此问题,有人说用负的margin值,可终究不完美,终极完美解决方案竟然是给iframe加display: block,或者vertical-align: bottom。

效果如图所示:
iframe_div_1
查看更多...

PHP挂QQ小程序分享,要的自取

小程序啥作用,不说了,这玩意代码很烂,也没心情整理了,毕竟不是我自己写的,记得是三四年前对PHP还不是很熟的时候在网上找的,然后改巴改巴自己就用了。

也不知道最近两年怎么了,平均每个月都有那么一二十个人找我要挂QQ程序,因为要工作,实在没空,所以在csdn上面上传了打包的程序,后面有人找我要程序一般都是直接给csdn链接,但是目前上班上不了PC版QQ,发信息还好说,发链接我哪记得住呢?

索性,单独开一页面,给玩QQ挂机的小童鞋们下载吧。

补充一下,这次打包的文件是今晚稍作修改的,之前csdn的文件忘记是在5.3还是5.4版本以上的有异常,因为用到了已废弃的函数,已经简单替换了新函数。 查看更多...

Raphael实现数据可视化优缺点

说起Raphael,可是老早就听说了,不过前些年和EXTJS合并后好像不怎么更新了,好在组件没什么bug,更新或不更新都阻拦不了我们兼容IE9以下浏览器的脚步。废话完毕,下面先简单介绍下我们的主角——Raphael

Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库。它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出各种复杂的柱状图、饼图、曲线图等各种图表,还可以绘制任意形状的图形,可以进行图表或图像的裁剪和旋转等复杂操作。正因Raphael对VML的强力支持,使得在IE9以下版本,目前支持的浏览器包括: Firefox 3.0+,Safari 3.0+,Chrome 5.0+,Opera 9.5+ 以及 Internet Explorer 6.0+,实际测试中,甚至IE5都能够实现我们想要的图形、动画效果。

下面展示下Raphael的简介操作,假设页面有一div容器,id为chart,我们可以这样写:

var paper=new Raphael(document.getElementById("chart"),1000,500); 查看更多...

结合批处理与Windows计划任务简单实现MYSQL增量采集

整理这个原因很简单,最近做数据采集遇到有N多MYSQL数据库需要采集、同步,原有对接系统单一库、REST等形式的采集实现起来略显麻烦。考虑到是内部系统,且采集、同步时间一般在晚上,故而打算开个先例,抛弃之前的采集方案,直接使用MYSQL命令导出远程库表再还原至本地。思路有了,实现起来就更简单了,这里只介绍大概,不详细讲解枯燥的业务及实现。

首先,得知道MYSQL导入、导出命令:

导出:mysqldump -u用户名 -p密码 -h主机 数据库 a -w "sql条件" --lock-all-tables > 路径

导入:mysql -u用户名 -p密码 -h主机 数据库 < 路径 有很多文章描述的导入是登录后使用source,这里因为我们要连多个库、多个表,频繁登录操作也不方便,还是选择这样的方式了,具体内部实现是否一样,不在我们探究范围。 查看更多...