Posts tagged Tool

Nausicaa:一个把图片传到Flickr的命令行工具

0

懒惰是程序员的美德

前几天看了一片博客,灵感一现,发现平时发博客的时候,把图片传到图床上去要打开浏览器,再打开Flickr或者Yupoo,再上传照片,再找到照片对应的链接,然后这个链接才能够拿来用。看看吧,这个过程是多么的繁琐,作为一名把懒惰当成第一美德的程序员,我马上就想要折腾出一个命令行工具,来把图片上传到相应的图床,现在这个工具就是Nausicaa。

运行效果

那么,来看看上传的效果吧:

image

Nausicaa在你把图片上传之后,会把图片对应的各个尺寸的静态链接也返回回来,让你可以马上拿到图片的链接。

环境

要使用Nausicaa,最好在Unix-like系统下使用(Windows下谁会去用命令行?)。

另外Nausicaa还需要JRE 6或者以上的版本

下载与使用

Nausicaa的下载地址是:https://github.com/downloads/khotyn/Nausicaa/nausicaa.jar

使用说明,可以直接进项目主页看:https://github.com/khotyn/Nausicaa

Varamyr – 让Nook 2也可以轻松阅读中文的epub

2

好啦,这个标题有点标题党的嫌疑,前几天入手了Nook 2,但是苦于Nook对中文支持并不好,看中文的epub直接显示方块或者问号之类的乱码。

网上看了下这个问题的大致解决方法有两个:一个是Root掉Nook;另一个往epub文件中塞入一段CSS,再在Nook中看的时候只需要选择Publisher Defaults就可以正常显示中文。

第一个方法风险太高,可能导致Nook变砖;

第二个方法的话可以用Calibre之类的工具来完成,但是Calibre这个东西本身太重了,每次打开关闭很耗时间,UI又丑,实在不想用。

所以,我需要一个命令行的工具来完成往epub中塞入一段CSS这个任务,这样可以和*nix下的其他工具结合起来使用,检测一个文件夹中如果新加入了epub文件,就直接进行转换,让整个过程完全自动化。现在这个命令行工具就是Varamyr(Varamyr是马丁大爷的冰与火之歌的第五部《魔龙的狂舞》序言里面的一个狼灵,打酱油的角色。)

运行Varamyr你需要

  1. JRE环境
  2. *nix系统,不支持windows也不会支持windows
  3. 下载varamyr.jar

如何使用?

  1. 运行命令:java -jar varamyr.jar <path-to-epub-file><path-to-epub-file>为你需要修改的epub文件的路径
  2. 看看在你修改的epub文件的路径下是不是多了一个类似xxxx-varamyr.epub的文件。

源代码 & 原理

BTrace学习笔记

2

BTrace介绍

BTrace是一个Java的动态跟踪工具,相当于DTrace(一个Solari的工具,用于跟踪内核调用等等) for Java,BTrace的工作的基本原理是把跟踪的代码动态替换到被跟踪的Java程序内,其项目主页是:http://kenai.com/projects/btrace

安装BTrace

BTrace的安装非常简单:

  • 首先,你需要下载BTrace,其下载地址是:http://kenai.com/projects/btrace/downloads/directory/releases,最新的版本是1.2,可以选择下载1.2这个版本。
  • 下载以后,解压到一个目录,可以选择将目录下的bin文件加入了PATH环境变量中去。
  • 最后需要设置一下BTRACE_HOME这个环境变量

使用BTrace

BTrace的使用也是非常简单,用下面命令就可以使用:

btrace <pid> Test.java

其中,pid为你想要跟踪的Java程序的pid,Test.java为BTrace的脚本,下面就来看看一个简单的计算方法调用时间的BTrace脚本,首先看看被跟踪的Java程序的代码:

package com.khotyn.test;

import java.util.concurrent.TimeUnit;

/**
 * Hello world!
 */

public class A {

    public static void main(String[] args) throws InterruptedException {
        A a = new A();

        while (true) {
            TimeUnit.SECONDS.sleep(1);
            a.say();
        }
    }

    public void say() {
        System.out.println("Hello, world");
    }
}

我要跟踪每次调用say方法都耗费了多少时间,看看对应的BTrace脚本:

import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
class BTraceTest {

	@OnMethod(clazz="com.khotyn.test.A",method="say",location=@Location(value=Kind.RETURN))
	void func(@Duration long duration) {
		println(duration);
	}
}
  • 其中,代码中的@BTrace代表这是一个BTrace脚本。
  • @OnMethod指定跟踪的类和方法是什么,这里执行跟踪com.khotyn.test.A的say方法
  • @Location制定跟踪的位置是哪里
  • @Duration将方法的调用时间收集到后面声明的long变量duration上
  • 最后,println是BTraceUtils的内置工具类,用于向控制台打印消息。

要了解BTrace使用方面更多的内容,请参考它的用户手册:http://kenai.com/projects/btrace/pages/UserGuide

豆瓣Chrome插件–显示我的豆瓣

0

豆瓣的导航栏上竟然没有我的豆瓣的链接,这让我一直很困扰,所以晚上我就动手写了一个小插件,用于为豆瓣的头部导航栏加上一个“我的豆瓣”的链接,让你在豆瓣的任何频道都可以非常方便地回到“我的豆瓣”,插件的效果如下:
Show_My_Douban
当然插件本身并没有什么技术含量,代码也就几行而已,如果你觉得你也正好有这个需求,那么尽管拿去玩,插件的下载地址是:https://github.com/downloads/khotyn/Show-My-Douban/Show-My-Douban.crx

项目的主页是:https://github.com/khotyn/Show-My-Douban

一个快速合并svn工程的脚本

0

最近的一个项目中,经常需要拿开发分支和主干做合并,分支数量有比较多,不胜其烦,故而写了一个小脚本用来做分支的合并:

#!/bin/sh

versions=`svn log $2 --stop-on-copy | grep '^r[0-9]*' | awk '{print $1}'`
head_version=`echo $versions | awk '{print $1}' | grep -o '[0-9]*$'`
tail_version=`echo $versions | awk '{print $NF}' | grep -o '[0-9]*$'`
merge_cmd="svn merge -r $tail_version:$head_version $2 ."

echo 'Preparing environment:'
rm -rf khotyn_tmp && mkdir khotyn_tmp && cd khotyn_tmp
echo "Preparing environment done!\nChecking out $1"
svn co $1 .
echo "Checking out $1 done!\nMerging branches:$merge_cmd"
$merge_cmd
echo "Merging branches done:$merge_cmd"

使用的方式如下:

sh svnMerge.sh repo_1 repo_2

这样就会将repo_2分支合并到repo_1上去,觉得有用的朋友可以直接拿去改改用起来。

Go to Top