关于Emlog的代码高亮和Markdown增强插件

PS:如果需要下载,请访问EMLOG的论坛,插件在附件中,如果更新的话,大家可以在EMLOG的官方插件栏目中看到。 最近因为要准备写《Java的异步编程模型》这篇文章,所以要用到大部分的代码段。之前我用来描述代码的方式都是用图片的方式进行表达, 不过考虑到这篇文章的长度,所以最后决定采用代码高亮的文本编辑方式,而不是采用图片了,因为会比较长,所以最后找了几个代码高亮的 插件,不过按照我有点强迫症的情况,网上下的插件就有一个有用的,但是他的代码高亮的效果太差了,就像没有进过任何配置的Eclipse的 代码风格。 所以我就开始编写我自己的代码高亮插件,参考了GodSon的代码高亮插件,发现他采用的是SyntaxHighlighter这个代码高亮类库,所以 我决定也采用这个方式,代码大部分才采用的GodSon的代码,主要改进的方面是代码的配色上,之前的代码比较难看,如下图: 我修改之后就是这么一个效果了: 所以这个插件从技术上说没有什么值得可以说的地方。 之后这个也就是我最喜欢的插件了,也是花费我一个晚上加一个上午的时间的插件。在之前的Markdown Parser插件的基础上,添加了代码的自动上色。 也就是说,以后在编辑以下Markdown时,再也不用担心没有代码上色了!比如我们这样的代码: 他的展现效果就是下面这样的: public class Demo { public static void…

关于Clash of Clans不下线脚本

Clash Of Clans俗称部落战争,AKA COC。不得不说这是一个非常好玩的游戏,也是我除愤怒的小鸟之后最喜欢玩的一个游戏。 好了,介绍了部落战争的背景,开始描述写这个脚本的原因,起因就是,作为一个七本,我需要抢黑水生王,然后好不容易打到8500+,然后被偷到了8000-,心痛啊。于是开始想怎么才能不下线,一开始的想法很简单,就是隔个几分钟手去摸一下屏幕。太二了。好歹是一个曾今写过3个月安卓的人。 于是,就开始了思考如何去写这个脚本,当然,这个过程中,不断穿插着脑残的手摸屏幕的行为。 正题开始 扯淡的话 写脚本之前,有如下问题需要解决: 使用何种手段模拟手指触碰动作。 间隔时间多少为宜,且不会造成误操作。 手机长时间运行游戏,散热问题如何解决。 如何保证玩家可以随时介入。 PS: 目前只想到这么几个 一开始,我准备的是物理方法,因为我们实验室有电机和轮胎,还有电容触控笔,所有最简单的办法就是在轮胎外围粘上触控笔,然后将手机放在笔下,随着轮胎的转动,笔会不停的触控屏幕,从而不掉线。 然后,上述几个问题得到解决,但是我最终还是没有采用这个办法。原因很简单,触控笔找不到了。当然,作为一个程序猿,这个解决方法太LOW了。 于是,仗着我残存的安卓功底,我想到了monkey还有monkeyrunner,两个神器。因为作为一个写安卓的人,了解这个是必须的,而且本文的目标读者是有一定编程基础的人,所以在运行前环境的搭建就不再啰嗦,同时,以下的操作均基于Ubuntu 12.04 x64版本,对于Windows系统,由于不熟悉,所以希望有人帮忙写一下Windows下的对应脚本。…

LuCI编译文档

首先介绍以下LuCI项目,LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从 Whiterussian 到 Kamikaze实现快速配置接口。Lua是一个小巧的脚本语言,很容易嵌入其它语言。轻量级 LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。UCI是OpenWrt中为实现所有系统配置的一个统一接口,英文名Unified Configuration Interface,即统一配置接口。LuCI,即是这两个项目的合体,可以实现路由的网页配置界面。 当然,之前都是扯淡的。开始正题。 注意:以下所有操作基于原版Ubuntu12.04 x64系统 官方网站上有一个简单的安装介绍。就是这。 基本上按照他的方法就可以了。首先要保证你有GCC,Make。然后就是最重要的一点,要有Lua,并且必须是5.1版本! 然后就是最简单的SVN checkout。 运行如下命令: svn co http://svn.luci.subsignal.org/luci/branches/luci-0.10 或者用这个命令: svn…

TODO-List项目介绍

写在开始 说到这个TODO-List,我对他的需求可以算的上是刚需,之前都是使用的Any.DO,这也是个很好的按卓上的软件,只是可惜电脑上没有对应的软件,或者说没有对应的网页。所以我就自己写了这么一个用来记录我的计划的Web应用。 主要的技术选择有这么几个限制: 由于我需要多平台兼容,最方便的就是使用Web应用。 由于我的租用的虚拟主机只提供PHP环境,所以只能使用PHP作为逻辑处理语言。 同时考虑到不同终端的屏幕分辨率不同,只能采用响应式的布局方式。 本来之前自己擅长的方向是Java服务器端技术,这个可以说的上是没有任何基础。所以代码不是很好,基本上都是现学现卖的。 接下来是项目的具体介绍: 效果图展示: 如果想更加直观的感受,请点击这个网址:http://mikecoder.github.io/ToDoList/ 这是一个简化版本,只提供了界面展示,后台功能没有能实现,主要是GITHUB Pages不支持PHP。 主界面图: 这边就是展示所有任务的地方,按照添加的顺序进行展示。 添加任务区域: 这就是添加任务的界面,需要注意的是,这边是支持HTML语法的。如果想在简述中添加回车,你需要添加的是<br>而不是回车。 平板上的显示效果: 针对不同的手机屏幕,网页会在一行里展示不同的任务数,这个例子中就是两个,而不是之前的四个。 安装步骤: 从GITHUB中clone到本地,执行如下命令:…

Java中数字的几个好玩的地方

开始 我们先从一个简单的例子开始: 你们可以大胆的猜测下结果。 相信很多人直接就已经没有了往下看得欲望。因为这道题目很简单,特别是还做了对比的输出。其中的道理也很简单,越界了。因为在给result赋值之前,后面执行的过程都是基于int的计算。所以最后的结果就是: 好了,简单的问题结束了。开始更加有趣的事情了。 传说中的Integer常量池 说到常量池,String的常量池应该是大家都比较熟悉的。毕竟作为公司的面试题目,大家都不会陌生。相信网上说到这个的也不会少,现在我们说的就是Integer的常量池。 也是先从代码开始。先看如下代码: 你们也可以猜猜这个的结果 其实也很好玩,想想看拆包和装包。就知道了。不过这边还是有几个好玩的地方,因为他的答案可能会超出你得理解。 举个例子,所谓的拆包装包只会在进行运算的地方进行。也就是说,在进行==操作的时候,并不是两个int在进行比较,而是两个Integer对象在进行比较。然后就可以按照String的理解进行答题了。 答案就是: 这么说,可能理解起来还是有点困难,但是,如果看到源代码,就能很好的理解了。下面是Integer的valueof()方法,因为在进行使用int值初始化的时候,将会使用到这个函数。 这边有一点说明: IntegerCache.high是127,IntegerCache.low是-128 然后,上面的几个例子就比较简单了,在进行Integer e = 128;的时候,其实是执行的Integer e…

JMS阶段性总结

写在开头 从一开始接触JMS到现在已经有一个多月了,看完了《ActiveMQ In Action》还有《Java消息服务》这两本书,也有一点心得。 不过最近的一段时间是期中考试,所以很多的时间耽搁了。所以到现在才开始书写这篇文章。 首先一点,为什么要使用JMS 很多时候,我们的程序并不需要使用JMS,或者说消息机制并不需要使用到这个技术,常常使用方法的相互调用即可实现,但为什么需要使用JMS。其实很大程度上是为了追求水平的扩展。举个例子,如果一个服务,或者是一个业务,需要频繁的调用一段函数,而这个函数会形成阻塞,我们肯定会使用分布式的方法进行横向的扩展。 还有一个重要的原因就是解藕。之前,我们的业务系统都耦合在一个程序中,我们需要进行一定的解藕,重新基于消息进行架构,所以,我们采用了JMS。用来进行业务上的解藕。 简单的说,生产者只负责生产消息,并且将消息务必送达消息中间件,而消息中间件的作用就是进行消息的持久化,并且在客户端连接上来的情况下,保证消息的务必送达。并且对没有及时处理的消息进行提示,然后人工介入进行处理。 不过有一点,如果是为了在纯Java系统之间进行消息传递,则还可以使用RMI的方式。不一定要使用JMS。 还有一点,JMS之所以是一个接口的集合,而不是一个实现方法,我认为,前人一定是注重这样一种设计方式,而不是具体的实现,也就是说,学习JMS,更重要的是这中间的一系列的思想,而不仅仅是几个工具的使用。这也是我看JMS的原因。 之前的想法 在所谓的JMS系统开发中,我们常常会有一个需求,就是消息发送端需要了解客户端是否已经收到消息,来确保接下来的业务逻辑不会出现大的错误, 假设我们没有使用JMS协议,而是我们自己进行编写消息传递的消息协议,用来确保消息的传递。举一个最简单的例子,我们就可以模仿TCP/IP的 三次握手协议,在每次进行消息传递的时候进行握手操作,并且在之后进行一个放手协议。这样,我们的消息发送方就可以了解到目前业务的进展 情况,并且进入下一步的操作当中。 但是,这样还是会带来一个问题,就是当消息发送之后,客户端接受了,然后进行处理,此时, 网络断了,死机了,怎么办?简单的办法,做一个 超时检测,如果在一定时间没有回复,则认为发送失败。于是进行重发。可行。但是又有一个新的问题,如果一个消息有大概三个操作,客户端在 完成一个操作之后,断开连接,然后新的消息传递到,又需要进行第一步操作,发现是已经完成的,然后常见的程序写法会认为任务已经做完,然后…