在对im4java windows下使用问题的解决的基础上,给出了一个解决方案,可以直接复用补丁的代码。不过需要使用maven,如果是ant,也可以通过ivy使用。
需要在项目的pom.xml文件中加入以下内容自动导入im4java补丁,而且也会自动连带导入im4java:
<dependency> <groupId>com.easymorse</groupId> <artifactId>im4java.patch</artifactId> <version>0.98.0</version> </dependency>
如果直接使用im4java,在windows xp可能会出现问题,见使用im4java生成gif的缩略图。跟踪了一下im4java的源代码,未发现有针对linux的特殊设置。问题可能出在环境变量或者shell与windows命令行(cmd)之间的不同上。
直接测试了一下自己起进程运行imagemagick的convert命令:
public static void main(String[] args) { ProcessBuilder processBuilder = new ProcessBuilder("convert", "1.gif", "-resize", "64x64", "2.gif"); System.out.println(processBuilder.environment()); try { Process process = processBuilder.start(); process.waitFor(); System.out.println(process.exitValue()); InputStream stream = process.getErrorStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); for(String s=reader.readLine();s!=null;s=reader.readLine()){ System.out.println(s); } } catch (Exception e) { e.printStackTrace();
jmagick生成的gif图,在ie浏览器中无法播放(见使用jmagick做gif动画的缩略图),所以又测试了一下im4java(http://im4java.sourceforge.net/)。
下载了最新的编译版本。im4java的思路是通过线程或者进程执行imagemagick的命令,它的api只是为了能生成命令,而不是调用imagemagick的库。
这种处理的好处是,如果是服务器程序需要图片转换功能,单开native进程处理,不会造成该服务器程序jvm进程的内存溢出错误。
im4java只需安装imagemagick即可,因为是要用它的命令行工具convert。
将gif动画生成缩略图,有一个难点,就是gif动画应该是多帧的。如果按照普通图进行缩小,比如直接调用如下语句(见在java环境中使用imagemagick):
image=image.scaleImage(60, 60);
只能得到第一帧的缩略图,这样就不是动画了。
需要如下调用才可生成保持动画的缩略图。
可以使用的第三方工具库是:
- jmagick(http://www.jmagick.org/)
- im4java(http://im4java.sourceforge.net/)
两者并不冲突,因为实现的方式不一样。前者是通过jni和imagemagick的函数交互,后者是在java中起新的进程通过imagemagick命令处理图片。
在java程序中使用,应该还是jmagick更方便一些。
在ubuntu安装jmagick的办法:
sudo apt-get install jmagick
ImageMagick是使用广泛的图片处理工具套件,可读取、转换和写入很多种图形格式文件。网址:
在ubuntu安装十分简单:
sudo apt-get install imagemagick
简单的转换命令:
convert 10261.gif -resize 64×64 r_10261.gif
根据ubuntu系统日志的配置和使用可以看到ubuntu服务器的各种应用的日志。但是每次自己到上面查看还是比较麻烦的,尤其是当管理多台服务器时。
logwatch是这方面的工具。有关ubuntu下logwatch的安装过程见:
只需执行如下命令即可安装:
sudo apt-get install logwatch
在ubuntu服务器上,日志是通过syslogd进程处理的。该进程读取如下配置文件:
/etc/syslog.conf
该文件主要配置哪些信息需要记录日志,记录到什么地方。
在该配置文件的第一部分,是对系统设施日志的配置,主要有:
- auth:有关认证进程的信息;
- daemo:有关守护进程的信息;
- kern:有关系统内核的信息;
- mail:有关邮件系统的信息;
- 其他。。。
比如,可以看到有关守护进程的日志,以下是查看时间服务器守护进程的日志:
sudo cat /var/log/daemon.log | grep ntp
再比如,通过/var/log/kern.log,查看到的信息:
Sep 8 09:28:35 homeserver kernel: [8694475.980021] TCP: Treason uncloaked! Peer 77.227.199.53:53801/20478 shrinks window 2499870467:2499871859. Repaired.
来自西班牙的远程访问,未经服务器允许改变了tcp窗口大小。
其实之前记录过安装的过程,见:
但是事后发现,导入utf8编码的oracle数据库备份时出现乱码。究其原因,是:
Western European
The database created using a single-byte Latin1 (
WE8MSWIN1252) character set, which is suitable for storing Western European language dataUniversal
The database is created using a multibyte (
AL32UTF8) character set, which is suitable for global data in any language.
之前安装的是只支持西方字符集的版本。
参考这个文档,是最全面:
http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm
通过在ubuntu server下安装Oracle XE安装oracle后,导入数据时出现乱码。应该使用UTF-8字符集。默认安装的可能是iso-8859-1。
配置语句记录如下:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMEDIATE;