他们相信天堂是有的,可以实现的,但在现世界与那天堂的中间隔着一座海,一座血污海,人类泅得过这血海,才能登彼岸,他们决定先实现那血海。

linux下解压bin文件


现在的一些Linux软件很流行使用bin这种安装包格式,只需要下载个安装包就能自动安装解压,比tar.gz省事,比.deb,.rpm的安装包兼容性强,适应范围广。但也有一个问题,bin安装包让人无法知道里面的细节,还是有所顾虑的。比如我前几天需要下载一个JRE6,但Oracle官方在JDK7之前都没有tar.gz包,只有bin包。我肯定不能直接安装bin文件啊,这会破坏我本机已有的JDK8开发环境。

Read more ⟶

使用内嵌undertow开发调试jfinal项目


今天在修一个老项目,使用的是jfinal框架,这个框架算是一个比较传统的框架,只支持打包成war运行放入容器中运行,但是在开发过程中可以使用jetty快速启动和调试。个人不是很喜欢jetty,遂换成了undertow。 引入如下依赖

Read more ⟶

导出freeOTP中的配置


之前公司的一个网站使用了OTP来做二次验证,然后我就在手机上安装了freeotp这款软件来管理OTP密码,等到换手机了,才发现没法导出原手机的配置,这就尴尬了。FreeOTP is sponsored and officially published by Red Hat,也算是大家闺秀出品的软件,居然不支持这么重要的功能。

Read more ⟶

Java里常见的几个语法小坑


很久没更新博客了,想到几个小坑,虽然没啥技术含量,但或许有人不知道呢。

1.删除sublist的元素导致原对象元素被删除

看下面这段代码

List<Integer> students=new ArrayList<Integer>();
        for (int i = 0; i <5 ; i++) {
            students.add(i);
        }
        List<Integer> subList=new ArrayList<Integer>();
        subList=students.subList(0,5);
        subList.remove(0);
        subList.remove(1);
        for (int i = 0; i <5 ; i++) {
            System.out.println(i+"="+students.get(i));
        }

students是个list,然后我们新建立了一个subList对象,这个对象截取了students的一部分,我们删除了subList对象里的一些元素,看下运行结果。

Read more ⟶

折腾阿里云OSS的API


  这两天想给博客做个插件,利用阿里云的OSS来存储文件.但阿里的文档和代码都烂的超乎想象,要么代码老旧不堪,要么跟小脚老太一样引入一坨依赖,想必这块是外包团队做的吧,或者阿里非核心业务员的技术水平也就这样吧.

Read more ⟶

PHP的mb_check_encoding函数的存在是鸡肋吗


  前不久,有人问到我一个问题,就是使用mb_check_encoding来侦测一段字符的编码,预期是GBK编码,但是PHP给出来UTF-8编码的错误判断。那么,mb_check_encoding的正确姿势是什么呢? 我们来看一段代码,

Read more ⟶

FireJava输出Java服务器端调试日志到控制台


  针对最新火狐浏览器50+以上版本的firebug协议,类似FirePHP,但是FirePHP已经很久不更新,并且对最新的浏览器也已失效。

这个在Firebug之上运行的扩展,结合一个服务器端的库,就可以让你的PHP代码向浏览器发送调试信息,该信息以HTTP响应头(HTTP headers)的方式编码。经过设置,你可以像在Firebug控制台调试JavaScript代码一样得到PHP脚本的警告和错误提示。下面我们来看看具体步骤。

Read more ⟶

TOTP算法Java版本


TOTP 概念

TOTP - Time-based One-time Password Algorithm is an extension of the HMAC-based One Time Password algorithm HOTP to support a time based moving factor.

TOTP(基于时间的一次性密码算法)是支持时间作为动态因素基于HMAC一次性密码算法的扩展。它是OTP算法的一种

算法如下: TOTP = Truncate(HMAC-SHA-1(K, (T - T0) / X))

K 共享密钥 T 时间 T0 开始计数的时间步长 X 时间步长

Read more ⟶

Vala使用体验


  前段时间用vala开发了一个很小的程序,体验了一把vala的使用,网上关于vala的文章比较少,所以写一篇博客,如果你有相同的使用经验可以交流下.

  根据百度百科的解释,vala是一种新的、为GNOME开发者提供的具有现代化编程语言功能的一种编程语言。Vala是一种和C#极度类似的语言。

Read more ⟶