Wednesday, December 18, 2013

Chrome: the World Clock app installs malware with it


I just found that the World Clock app in Chrome installs a malware with it which pops up ads when you browse webpages. The link of the malware is:
 http://intext.nav-links.com

If you want to get rid of the malware, just uninstall the World Clock app.

Saturday, December 7, 2013

MAC OS: compile Megam for Moses

Megam is a machine learning tool which can be found at:
http://www.umiacs.umd.edu/~hal/megam/

It is required by the pair-wise ranking optimization (PRO, which is a replacement of MERT) of Moses.
It releases its binary executable version on Linux which can run on most Linux systems, but it does not have a binary executable version for MAC OS. We have to compile it by ourselves.

MAC OS version: 10.8.5
Port version: MacPorts 2.2.1
Megam version: 0.92 (Fifth Release 17 August 2007)
Moses version: 1.0

1. install ocaml using port on MAC OS:
sudo port install ocaml

2. go to the MERT directory of Moses:
cd mosesdecoder-RELEASE-1.0/mert

3. download Megam:
wget http://hal3.name/megam/megam_src.tgz
tar -xzvf megam_src.tgz (creating a directory megam_0.92)
cd megam_0.92

4. change megam's Makefile:
(1) replace "WITHSTR =str.cma -cclib -lstr" with:
WITHSTR =str.cma -cclib -lcamlstr
(2) replace "WITHCLIBS =-I /usr/lib/ocaml/caml" with:
WITHCLIBS =-I /opt/local/lib/ocaml/caml/

5. compile:
make opt

6. link:
cd .. (to mosesdecoder-RELEASE-1.0/mert)
ln -sf megam_0.92/megam.opt megam_i686.opt

Now you can run mert-moses.pl with PRO tuning.


Saturday, November 30, 2013

VIM: open file at previous position

add the following to your ~/.vimrc:
set viminfo='10,\"100,:20,%,n~/.viminfo

if it still does not work, the problem is likely to be that the ~/.viminfo does not belong to your account. Use the following command to fix it:
sudo chown YourUserName:YourGroup ~/.viminfo

Wednesday, November 27, 2013

MAC OS: use GNU tools instead of BSD ones

The default tools of MAC OS are the BSD tools unfortunately, e.g., ls, head, etc.
I would say BSD tools are really less advanced than GNU tools, e.g., you can use "head -n -100" with GNU head, but not with BSD head, and the BSD ls is less colorful than the GNU ls.

How can we use GNU tools instead of BSD ones:
(1) install GNU tools using port:
sudo port install coreutils findutils
(2) append the following line to your ~/.bash_profile
export PATH=/opt/local/libexec/gnubin:$PATH

MAC OS 10.8.5: color your ls command

The default ls command is from BSD, and the default ls command on most Linux systems is from GNU.
The BSD ls can not be very colorful in that we can not color files according to their extension names (its related environment variable is LSCOLORS), while the GNU ls is better in this sense by setting the environment variable LS_COLORS.

I am working on MAC OS 10.8.5, and originally I followed this post to configure my ls, but failed. Finally, I have done some changes to the post to make it work for me. My steps are as follows:
(1) install MAC ports which is a similar tool as apt-get on Ubuntu
(2) install the GNU tools using port:
sudo port install coreutils +with_default_names
which was supposed to override the original BSD ls command with the GNU ls command in the post, but it does not work for me. The installed GNU ls command appears with the name gls.
(3) add the following lines to my ~/.bash_profile:
LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:*.sh=01;32:*.log=01;33'; 
export LS_COLORS 
export LS_OPTIONS='--color=auto'
# override the original BSD ls
alias ls='gls $LS_OPTIONS -hF'
alias ll='gls $LS_OPTIONS -lhF'

Tuesday, November 26, 2013

MAC OS: set default gcc

this way is using MACports, which you need to install in advance.

/opt/local/bin/port install gcc_select
port select --list gcc
sudo port select --set gcc gcc43 

Thursday, May 23, 2013

an easy way for machine translation evaluation using multiple metrics

Kenneth Heafield's scripts that make it easy to score machine translation output using NIST's BLEU and NIST, TER, and METEOR.

Pre-requirements: bash, ruby, java
CAUTION: you have to set "export LC_ALL=" to let it work ("export LC_ALL=C" will make it crash)

Setup: run the ./setup.sh script which will automatically download necessary parts from Internet

Running:
./score.rb --print --print-header --ref tokenized-reference.txt --hyp-detok tokenized-system-outputs.txt


Friday, January 18, 2013

tools for Java memory usage analysis

1. jconsole

When you run a java program, you can use jconsole to monitor the program's general memory usage and the status of each thread of the program. Please note that this tool can not say how much memory is used by each object in your Java program. jconsole needs to show a graphic interface, so if you want to run it on Linux, please make sure you have xwindow support.
For instance, you can use the following command to start monitoring your running Java program with process id 15120:
jconsole 15120


2. jmap

This tool can be used to dump the heap of Java virtual machine when the machine is running a Java program. The dumped heap file can be analyzed by other tools, e.g., Eclipse memory analyzer .
For instance, you can use the following command to dump the heap of the running Java program with process ID 909, and the dumped file is named as heap-file.bin
jmap -dump:format=b,file=heap-file.bin 909

3. Eclipse memory analyzer

This tools is quite useful to look for memory leak or why a program takes so large memory, because it can find out the most memory-consuming objects in your Java program. This tool needs a heap dump to start its analysis. The heap dump can be obtained using jmap. Alternatively, when you run your Java program, you can also add -XX:+HeapDumpOnOutOfMemoryError as a parameter to the Java virtual machine. As a result, when the Java program runs out of memory, the Java virtual machine will automatically dump its heap in the current working directory (the dump file is named like java_pid15040.hprof).
Unfortunately, the Eclipse memory analyzer needs a lot of memory to analyze the heap dump file (e.g. usually it needs about 7GB memory to analyze a 2GB heap dump file). Thus, you usually need to change the heap size of your Eclipse (not the heap size of your Java program running in Eclipse) in your eclipse.ini file (which is usually located in the same folder as your eclipse binary executable file).