Tuesday, January 22, 2013
A Guess on the Encryption Design of MEGA
In my opinion, the editor of Ars Technica does not understand or at least misunderstands MEGA's encryption design. There are some comments of that Ars article that explained the basic idea quite clearly, which was confirmed by Mega's reply.
If my guess is right, the Encryption Design of MEGA is illustrated in the figure below. A pdf version of the figure is at https://www.box.com/s/uswje6orhhqahyv97ijk
Friday, December 28, 2012
Notes on Android Phones
1. backup Android files
Install Software Data Cale https://play.google.com/store/apps/details?id=com.lyy.softdatacable&hl=en. This app start a ftp server on your phone so that you can access your files with WiFi. After you start the app, it shows its IP address in the home screen, something like ftp://198.168.1.27:8888/Next in your local machine, you can use lftp to mirror the files in your phone to your desktop machine. The following command will sync all newer files with in the root directory of your phone to the the n4 directory at your desktop
lftp ftp://198.168.1.27:8888/ -e "mirror --verbose --only-newer / n4"
2. Access Developer Options
Go to Settings -> About Phone -> Click Build Number for seven time, the Developer option is enabled, from which you may adjust the scale of animation.Friday, April 27, 2012
Notes on Upgrading to Ubuntu 12.04 Precise Pangolin
0. In general, the upgrading process was smooth. I have been using it for two days. Since this version is LTS, I would recommend that everyone upgrade.
1. The full-fledged Unity is so unstable that is essentially unusable. By default, the Unity Plugin is not enabled. When you log in for the first time, there is just an blank desktop, no Dash, no launcher. Some one wrote about how to fix this (http://askubuntu.com/questions/17381/unity-doesnt-load-no-launcher-no-dash-appears and http://askubuntu.com/questions/121782/blank-desktop-after-updates-today-only-unity2d-works-now), however it still does not work fine with me. In particular, if you log out and then log in again, the same blank desktop appears :-(.
2. Unity 2D works fine. The new HUD (Heads Up Display) is the killer feature.
3. Gnome Shell generally works. However the most extensions, such as User Themes, are unavailable now.
4. The default setting for dual monitors in Gnome Shell has a wired behavior. You can only switch workspaces in the primary monitor while the workspace in the secondary monitor keeps the same. To make the workspace span the two monitors, run the following command:
"gsettings set org.gnome.shell.overrides workspaces-only-on-primary false"
as pointed by http://gregcor.com/2011/05/07/fix-dual-monitors-in-gnome-3-aka-my-workspaces-are-broken/
5. In Gnome Shell, the wallpaper does not show up even I have already set it from System Settings -> Appearance. This can be fixed as following:
Open gnome-tweak-tool
click on the Desktop tab
Turn on "Have manager handle the desktop"Turn on "Computer icon visible on desktop"
Wednesday, September 28, 2011
Multithreaded downloading with wget
GNU wget is versatile and robust, but lacks support for multithreaded downloading. When downloading multiple files, it just goes one by one, which is quite inefficient if the bandwidth of each connection is limited.
There is a way to achieve nearly the same effect as multithreaded downloading (link), and here is how you do it:
wget -r -np -N [url] © as many times as you deem appropriate to have as many processes downloading. The key is the -N option, which tells wget to download a file only when its local time stamp is older than the one in the server side.
wget -r -np -N [url] &
wget -r -np -N [url] &
wget -r -np -N [url] &
Alternatively, I wrote a wrapper, pwget (short for parallel wget), that adds multithreading to wget. The program is available from https://github.com/songqiang/pwget. It has two options --max-num-threads and --sleep. The first option --max-num-threads gives the maximum number of connections you allow to establish. This number is usually determined by the setting on the server side and by default it is 3. The second option --sleep specifies how often (in seconds) the master thread checks the status of downloading threads. When the master thread wakes up, it removes finished threads and add new downloading threads if necessary. Suppose you have the list of URLs in the file url-list.txt, then run
./pwget.py --max-num-threads 5 --sleep 2 -i url-list.txtwget will begin downloading the list of URLs in url-list.txt with at most 5 connections at once. You can also specify the option for wget in the command line, which will be passed to working threads.
This tool has several limitations. The parallel level of pwget is based on each URL, so you need to list the all URLs in prior. Furthermore, if you have a single large file, pwget does not help. In that case, you may consider use aria2 (http://aria2.sourceforge.net/).
Tuesday, September 20, 2011
Runnning SSH on a non-standard port
Suppose you have a SSH server ssh.example.edu with ssh port number 22222.
To copy your ssh public key to the server, run:
ssh-copy-id '-p 22222 jon@ssh.example.edu'Note the single quote is necessary.
To log in to the SSH server, run
ssh -p 22222 jon@ssh.example.eduTo copy files between your local machine and the server with scp, run
scp -P 22222 local-files jon@ssh.example.edu:~Note the "-P" option is capitalised.
References:
1. http://www.itworld.com/nls_unixssh0500506
2. http://mikegerwitz.com/2009/10/07/ssh-copy-id-and-sshd-port/
Thursday, July 14, 2011
Setting Up a Hadoop Cluster
* Hadoop
** Install Java
#+begin_src shell
sudo apt-get install sun-java6-jdk
sudo update-java-alternatives -s java-6-sun
#+end_src
** Add Hadoop User and Group
#+begin_src shell
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
#+end_src
** Configuring SSH and Password-less Login
#+begin_src sh
# In the master node
su hadoop
ssh-keygen -t rsa -P ""
for node in $(cat /conf/slaves);
do
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@$node;
done
#+end_src
** Install Hadoop
*** Install
#+begin_src sh*** Update .bashrc
## download and install
cd /home/hadoop/
tar xzf hadoop-0.21.0.tar.gz
mv hadoop-0.21.0 hadoop
#+end_src
#+begin_src sh*** Update conf/hadoop-env.sh
## update .bashrc
# Set Hadoop-related environment variables
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_COMMON_HOME="/home/hadoop/hadoop"
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_COMMON_HOME/bin/
#+end_src
#+begin_src sh*** Update conf/core-site.xml
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
#+end_src
<?xml version="1.0"?>*** Update conf/mapred-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- In: conf/core-site.xml -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://128.125.86.89:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>
<?xml version="1.0"?>*** Update conf/hdfs-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- In: conf/mapred-site.xml -->
<property>
<name>mapreduce.jobtracker.address</name>
<value>128.125.86.89:54311</value>
</property>
</configuration>
#+begin_src html*** Update conf/masters (master node only)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- In: conf/hdfs-site.xml -->
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>
#+end_src
#+begin_src sh*** Update conf/slaves (master node only)
128.125.86.89
#+end_src
#+begin_src sh*** Copy hadoop installation and configuration files to slave nodes
128.125.86.89
slave-ip1
slave-ip2
......
#+end_src
#+begin_src sh** Run Hadoop
# In the master node
su hadoop
for node in $(cat /conf/slaves);
do
scp ~/.bashrc hadoop@$node:~; scp -r ~/hadoop hadoop@#node:~;
done
#+end_src
*** Format HDFS
#+begin_src sh*** Start Hadoop
hdfs namenode -format
#+end_src
#+begin_src sh*** Run Jobs
start-dfs.sh && sleep 300 && start-mapred.sh && echo "GOOD"
#+end_src
#+begin_src sh*** Stop Hadoop
hadoop jar hadoop pipes
#+end_src
#+begin_src sh** References:
stop-mapred.sh && stop-dfs.sh
#+end_src
1. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
2. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/
3. http://fclose.com/b/cloud-computing/290/hadoop-tutorial/
4. Fix could only be replicated to 0 nodes instead of 1 error
Thursday, March 10, 2011
Identifying dispersed epigenomic domains from ChIP-Seq data
1 INTRODUCTION
2 METHODS
3 EVALUATION AND APPLICATIONS
Saturday, February 26, 2011
Sustainable Scientific Data Archiving Model
Sustainable data archiving model includes the following aspects: first the data should include necessary and accurate metadata; second, the data should be stored securely and remains authentic and correct for a long time; third the data should also include essential softwares and scripts to analyze the data; finally the data should be easily searched and accessed by the broader research community now and for a considerate period in the future so that researchers may use the dataset from different perspectives and even re-analyze the data in the future if new hypothesis and analytic methods emerges.
However as has been note elsewhere, there is a disconnection between the effort to produce the data and the effort to preserve the data. Simply put, funding agencies provide the money for produce the money but not the money to maintain the data. The grant for producing the data is in rather smaller time sale, usually two to five years. Once the grant is over, the project is done and the original researchers switched to other projects, the data produced is in the danger of being lost. Fortunately the biomedical research community has a pretty good record in depositing biological datasets for public research as has been exemplified by GeneBank and GEO. The Short Read Archive is designed to meet the requirements of the massively parallel sequencing reads data. However the discontinuance of this services demonstrates the uncertainty of current data sharing model due to lack of specific funding. Therefore I am considering the following two strategies for the sustain scientific data.
In the first strategy, we still rely on a central data repository like SRA that curates, stores and distributes biological datasets. To meet the financial requirement of such central repository, it charges certain amount of fee for the data hosted. It works as following: when the original data producer finish their research and submit a paper to a journal. The journal requires that their data is deposited in a certain repository and charges data deposition fee. Next the journal allocates the major part of the data deposition fee to the central data repository. The proposed data deposition fee is charged only once which can therefore be covered by the initial grant of the original data producer. With the ever-decreasing cost of data storage, the continual influx of single-time data deposition fee should keep the central data repository working.
The second strategy is initially brought up to me by my friend Li Xia and are further inspired by Morgan Langille, the creator of BioTorrents. In the strategy, the data set is stored by multiple hosts
who may have the resources and interest to keep the dataset. Next a central gateway keeps tracks of the BitTorrents seeds to the raw data and also stores the metadata associated with each data, such as the contact of data producer, experimental protocols and descriptions of the raw data. Especially the central gateway stores the version of the raw dataset and the MD5 or SHA sum for the data so that the data users can make sure they are obtaining updated and authentic dataset from essentially unreliable and untrustable data hosts in a P2P network. Since the central gateway needs only to track these metadata, its running cost is significantly smaller than the central data repository and therefore it can work just as a new section in the NCBI infrastructure.
I hope this discussion publicize the urgency for sustainable scientific data archiving so that the biomedical research community will work out a way after SRA ends.
Monday, October 12, 2009
Next Generation Genome Browser
When David, Fang Fang and I talk about UCSC Genome Browser today, I said "I would like a genome browser like Google Map". Later I find I become more excited about this idea: the next generation genome browser, which provides an more user friendly and powerful platform to ornanize and display genomic information.
What does the next genome browser ("genome map") look like ?
First, smoother zoom in and zoom out. Genomes are organized in hierarchical structure. Sometimes we need a birdview of the whole genome and sometimes we are interested in subtle local structures. It is of great value if we are change the resolution when examining the genome. So, we need dynamic and smoother zoom in and zoom out just like the little sliding bar in Google map. (update: I came across Jbrowser and Anno J browser that seems to have this function. See reference)
Second, advanced searching functions. Current genome browser are only able to search by genomic location, as a result the vast amount of annotation information can not be searched in genome browser. It will be cool there is a search box. Users input a keyword , such as a gene name and the our genome map display those regions match the query.
Third, what kind of web technology should we need? Ajax? Database back end? XML? Maybe google map is a good starting point.
There seems great possibility that such a genome map will appear and what other features are you looking for in the next generation genome brower?
Ref:
1. Skinner ME, Uzilov AV, Stein LD, Mungall CJ, Holmes IH. JBrowse: A next-generation genome browser. Genome Res. (2009) http://jbrowse.org/
2. AnnoJ Browser http://www.annoj.org/index.shtml
Friday, March 06, 2009
Exon/Intron Statistics in Human Genome
| Table 1: | Exon - intron distributions for human genome |
| Chr # | Total # genes | Total # exons | Total # introns | Max # exons/gene | Chromosome size (determined) | Avg # of exons/gene | Avg length (bp) | Std dev. | Total length (bp) | Shortest (bp) | Longest (bp) | |||||||
| exon | intron | exon | intron | exon | intron | exon | intron | gene | exon | intron | gene | |||||||
| 1 | 2514 | 22345 | 19831 | 107 | 226828929 | 8.89 | 167.01 | 4736.52 | 229.37 | 14268.19 | 3731870 | 93929919 | 2 | 1 | 78 | 8449 | 476158 | 980961 |
| 2 | 1354 | 12506 | 11152 | 148 | 238349289 | 9.24 | 163.98 | 5883.23 | 226.88 | 17012.24 | 2050855 | 65609873 | 2 | 1 | 90 | 7572 | 483412 | 1897544 |
| 3 | 1394 | 13517 | 12123 | 118 | 195073306 | 9.70 | 164.06 | 6375.63 | 224.21 | 21019.22 | 2217700 | 77291760 | 2 | 1 | 150 | 6654 | 497816 | 990999 |
| 4 | 926 | 8299 | 7373 | 85 | 187239983 | 8.96 | 174.78 | 7168.94 | 266.64 | 19497.08 | 1450541 | 52856617 | 2 | 53 | 132 | 6255 | 494708 | 1467842 |
| 5 | 1186 | 9946 | 8760 | 90 | 177696509 | 8.39 | 189.50 | 7277.28 | 332.86 | 21277.20 | 1884777 | 63748970 | 2 | 1 | 150 | 6574 | 370360 | 930401 |
| 6 | 1306 | 11406 | 10100 | 145 | 169212327 | 8.73 | 173.62 | 5961.61 | 253.56 | 18967.75 | 1980397 | 60212251 | 2 | 31 | 159 | 7152 | 469892 | 1377570 |
| 7 | 2508 | 23045 | 20537 | 82 | 310210944 | 9.19 | 167.87 | 6703.87 | 271.88 | 20177.41 | 3868769 | 137677396 | 2 | 1 | 14 | 11923 | 458139 | 1641567 |
| 8 | 908 | 7823 | 6915 | 86 | 143297300 | 8.62 | 171.16 | 7354.15 | 258.43 | 21384.09 | 1339052 | 50853964 | 2 | 54 | 84 | 7308 | 453268 | 2055833 |
| 9 | 1033 | 8941 | 7908 | 72 | 117790386 | 8.66 | 170.66 | 5351.68 | 253.19 | 14121.26 | 1525926 | 42321074 | 2 | 33 | 105 | 6598 | 276306 | 865661 |
| 10 | 1017 | 10273 | 9256 | 69 | 132016990 | 10.10 | 153.79 | 6412.91 | 219.97 | 20271.48 | 1579898 | 59357955 | 2 | 52 | 105 | 7812 | 482575 | 1727184 |
| 11 | 1567 | 12459 | 10892 | 87 | 130908954 | 7.95 | 177.66 | 4341.42 | 237.03 | 15362.46 | 2213526 | 47286795 | 3 | 1 | 87 | 6183 | 437543 | 1463302 |
| 12 | 1299 | 12399 | 11100 | 89 | 129826379 | 9.55 | 158.07 | 4570.21 | 192.23 | 12979.23 | 1959945 | 50729293 | 2 | 30 | 81 | 6324 | 328545 | 1248678 |
| 13 | 426 | 3784 | 3358 | 83 | 95749578 | 8.88 | 183.47 | 7351.75 | 396.79 | 19082.4 | 694268 | 24687182 | 2 | 37 | 279 | 11555 | 317646 | 1175762 |
| 14 | 854 | 6837 | 6106 | 114 | 87191216 | 8.01 | 176.24 | 5653.70 | 276.66 | 19076.38 | 1204982 | 33826109 | 2 | 51 | 51 | 11304 | 479079 | 1210740 |
| 15 | 843 | 8106 | 7263 | 104 | 81992482 | 9.62 | 169.79 | 4660.70 | 271.38 | 11542.05 | 1376321 | 33850721 | 2 | 1 | 168 | 9527 | 207178 | 620362 |
| 16 | 1093 | 9986 | 8893 | 62 | 79932432 | 9.14 | 166.96 | 3661.25 | 242.60 | 13092.99 | 1667340 | 32559472 | 2 | 1 | 75 | 8607 | 466049 | 1167938 |
| 17 | 1459 | 13179 | 11720 | 74 | 79376966 | 9.03 | 165.08 | 3193.16 | 215.89 | 9875.72 | 2175698 | 37423835 | 2 | 30 | 63 | 4786 | 283762 | 712668 |
| 18 | 367 | 3333 | 2966 | 75 | 74658403 | 9.08 | 174.9 | 7905.40 | 256.53 | 19377.24 | 583054 | 23447419 | 3 | 67 | 225 | 4721 | 411175 | 1189866 |
| 19 | 1609 | 12169 | 10560 | 106 | 55878340 | 7.56 | 187.31 | 2032.87 | 279.92 | 4741.54 | 2279436 | 21467122 | 2 | 1 | 81 | 5059 | 170796 | 298909 |
| 20 | 775 | 6492 | 5717 | 80 | 59424990 | 8.38 | 160.34 | 4403.10 | 215.29 | 13613.39 | 1040952 | 25172558 | 3 | 54 | 135 | 3738 | 303713 | 1108855 |
| 21 | 309 | 2539 | 2230 | 47 | 33924367 | 8.22 | 168.59 | 5086.89 | 306.51 | 16098.67 | 428056 | 11343761 | 3 | 74 | 102 | 5916 | 323563 | 833627 |
| 22 | 671 | 5173 | 4502 | 54 | 34352072 | 7.71 | 171.14 | 3924.83 | 281.85 | 12999.39 | 885356 | 17669584 | 3 | 42 | 38 | 6762 | 447252 | 492969 |
| X | 1048 | 8568 | 7520 | 79 | 152118949 | 8.18 | 185.33 | 7627.85 | 299.66 | 23527.35 | 1587926 | 57361443 | 2 | 54 | 129 | 6102 | 493512 | 2217347 |
| Y | 98 | 660 | 562 | 44 | 24649555 | 6.73 | 173.74 | 5288.54 | 255.05 | 19676.46 | 114670 | 2972162 | 3 | 67 | 228 | 2493 | 400349 | 681119 |
Wednesday, February 18, 2009
Emacs Note
http://xtalk.msk.su/~ott/common/emacs/rc/emacs-rc-cedet.el.html
http://cedet.sourceforge.net/
http://cscope.sourceforge.net/
http://ecb.sourceforge.net/
2. How can I use emacs without gui when I work on a remote machine with a slow connection?
emacs -nw
3. In emacs shell mode, what setting need I modify to make the shell promote PS1 display correctly, e.g. with color like in a terminal?
Add the following code in your .emacs
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
4. After I update to emacs 23, invoking flyspell-mode gives the following error "Enabling flyspell-mode gave an error".
This is caused by the conflicts between site dictionaries and the dictionaries in emacs 23.It can be fixed as following:
cd /usr/share/emacs23/site-lisp/dictionaries-common5. How do I enable double spaces in emacs?
sudo rm *.el *.elc
This feature is provided in the package setspace. Add the following commands in the preamble of your tex file.
\usepackage{setspace}6. Which font looks pretty in emacs?
\doublespacing
My personal favourite is Nimbus Mono L regular.
7. In org-mode, how can I change the default browser?
Add the following two lines in your .emacs file:
(setq browse-url-browser-function (quote browse-url-generic))Similarly, if you want to use the open sourced version of Chrome Browser instead of the Google rebranded version, replace "google-chrome" with "chromium-browser"; if you want to use firefox, replace "google-chrome" with "firefox".
(setq browse-url-generic-program "google-chrome")
8. I copy some text in emacs, how can I paste the text another application?
In your .emacs file. add the follow line
(setq x-select-enable-clipboard t)
Monday, February 16, 2009
Latex Notes
Tips:
1. How to type mathematical symbols2. How to display the text under an max or sup operator?
3. Use the following packages to make your docs more pretty
\usepackage{times, fullpage}
4. How can I input the addition assign (+=) operator in latex?
\mathrel{\mathop+}=
5. How can I move all figures and tables to the end of article?
Use the package endfloat http://www.ctan.org/pkg/endfloat
6. How can I edit and generate files in Chinese?
Use the xelatex command, see a simple template at https://github.com/songqiang/latex-templates/blob/master/latex-template-xelatex.tex
Good read:
- 陈硕: 用 LaTeX 排版技术书籍 https://github.com/chenshuo/typeset
- 无有的笔记空间: LaTeX 排版学习笔记 http://zoho.is-programmer.com/posts/30662.html
Thursday, December 04, 2008
Installing Ubuntu on HP Pavilion dv 4 1114nr
1. Create Windows Vista recovery disk
Boot into Window s Vista. First, since HP does not provide recovery disk with new laptops any longer, you need to create your own recovery disks in case you need Windows Vista in the future. Start -> Recovery Disk Creation and follow the instructions.
2. Re-participation the hard drive
Windows Vista comes with hand drive resizing and re-participation utilities. That's cool! It saves our trouble to search for a 3rd party software.
Follow the instructions in the following documents:
1. Screenshot Tour: Repartition your hard drive in Windows Vista
2. Can I repartition my hard disk?
3. Download
Don't bother to download ubuntu installation iso and create your own installation CD. If you have internet access (a fair weak condition, isn't it?), you can use Unetbootin (http://en.wikipedia.org/wiki/UNetbootin).
I am not exactly sure. There seems a bug with Unetbootin.
I participated my hard drive into three particitions: C: windows system partition; D: HP recovery partition; F: unformated free partition, which is intended for Linux installation.
But when I select mode as Hard Drive, only C: partition is displayed; I have to select USB Live mode and select F: partition there. I am not sure what this implies, still waiting for the result.
5. sound issues
After the installation, the speaker and the microphone does not work. Particularly, I could not use skype :-(.
Solution to "no sound problem"
Open
sudo vi /etc/modprobe.d/alsa-base
Add the following line to the end of the file
options options snd-hda-intel model=laptop enable_msi=1
Solution to microphone problem:
It is possible due to the mic is muted.
Open Volume Control by double clicking the icon at top-right corner. Select preference and select the device for recording and playback. And cancel the mutation option.
Solution to skype "Audio playback" problem
Excute the following command in a terminal
killall pulseaudiorefer to http://www.econowics.com/news-from-the-net/170/skype-problem-with-audio-playback-ubuntu-810-intrepid-ibex/
sudo apt-get remove pulseaudio # this seems not necessary
sudo apt-get install esound
sudo rm /etc/X11/Xsession.d/70pulseaudio
refer to
https://bugs.launchpad.net/ubuntu/+bug/269586
https://help.ubuntu.com/community/HdaIntelSoundHowto
6. install skype
7. install songbird
8. install Java Runtime Environment
9. install Open Office 3.0
10. install Mac4lin
11. install VLC and other codecs
12 install sopcast and gsopcast (online TV channel)
13 install fcitx Chinese input
First remove default scim framework and install fcitx
next modify Xsession to automatically start fictx for all users. Opensudo apt-get autoremove scim
sudo apt-get install fcitx
sudo gedit /etc/X11/Xsession.d/95xinputand chang it to
export XMODIFIERS=@im=fcitxOpen
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=XIM
fcitx
Change the line about xim tosudo vim /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"======
Well, I come back to update this post. I just returned this hp laptop. This was the first time I bought a laptop from HP, unfortunately it was an disappointing experience. I have two issues to complain. The cpu fan is too noise. Even after I disabled the feature "Keep fan running" in BIOS, the fan still makes too much noise. The CD -ROM drive is not quiet either; it feels earthquake when the CD drive is working.
The recovery too is also annoying. I could not recovery my laptop to factory configuration, either via harddrive recovery tool or via recovery CDs. It failed with the "error 1002"; and the HP customer service can not provide any useful help (they outsource custume serive to India, as a result we have to adapt to Indian English).
Anyway, I will blacklist this model from HP: HP Pavilion dv4.
Reference:
1. Screenshot Tour: Repartition your hard drive in Windows Vista
2. Can I repartition my hard disk?
3. Unetbootin http://unetbootin.sourceforge.net/
4. Tutorial: Ubuntu Linux on HP Pavilion
http://aldeby.org/blog/index.php/howto-ubuntu-linux-on-hp-pavilion-dv2000-dv6000-dv9000-series-laptops
5. http://www.dailygyan.com/2008/11/10-things-you-should-do-immediately.html
6. Top 10 Ubuntu downloads http://lifehacker.com/5227309/top-10-ubuntu-downloads
7. http://theindexer.wordpress.com/2009/04/24/to-do-list-after-installing-ubuntu-904-aka-jaunty-jackalope/
8. Install Microsoft YaHei font http://hi.baidu.com/zzy011/blog/item/6651e3ed44a9c62f63d09f37.html
Saturday, November 08, 2008
<R>andom Notes
1. how to estimate the running time of a R function?
R has a function proc.time() http://rweb.stat.umn.edu/R/library/base/html/proc.time.htmlsample code
## a way to time an R expression: system.time is preferred > ptm <- proc.time() > for (i in 1:50) mad(stats::runif(500)) > proc.time() - ptm user system elapsed 0.039 0.001 0.052 ## End(Not run)
2. string manipulation in R
define a string> s = "some characters"
convert other type into a string
> s = as.character(some_variable_in_other_type)
Convert a string into numbers
> pi = as.numeric("3.14159")
string length
>nchar(s)
string concatenation
> s1 = "string1"
> s2 = "string2"
> paste(s1, s2, sep = "")
given a vector of strings, vs, return a string that is the concatenation of vs's elements
> vs = c("song", "qiang")
> paste(vs, collapse = "")
"song qiang"
string splicing
suppose s is a string, how do we slice a substring of the s given starting position and ending position?
we use the following function. there is no default value for stop. it the value of stop is larger the the total
length of string, it is truncated to the length of the string
> substr(s, first = 1, stop = 12)
string split
> strsplit("song qiang", split=" ")
[1] "song" "qiang"
3. when making figures with legend box, the text expand out of legend box when we use dev.copy2eps() to convert the figure image to a eps file
This problem comes from the different specification of font sizes in difference devices. A ugly way to solve this problem is to specify text.width=strwidth("some string"),where "some string" refers to the longest legend text plus some extra characters. The optimal number of extra characters should be determined by trial and error.
4. How to handle exceptions in R?
Read about two functions try and tryCatch (R FAQ 7.32). An example with try is shown below:
for(i in 1:16)
{
result <- try(nonlinear_modeling(i));
if(class(result) == "try-error") next;
}
GNU/Linux Notes
1. How to speed up my Linux booting?
See Bootchart http://www.bootchart.org/index.html
and remove unnecessary services in the booting process
2. One important thing to remember when creating a SVN repository
In Subversion 1.1, a repository is created with a Berkeley
DB back-end by default. This behavior may change in future
releases. Regardless, the type can be explicitly chosen with
the --fs-type argument:
$ svnadmin create --fs-type fsfs /path/to/repos $ svnadmin create --fs-type bdb /path/to/other/repos
Do not create a Berkeley DB repository on a network
share—it cannot exist on a remote
filesystem such as NFS, AFS, or Windows SMB. Berkeley DB
requires that the underlying filesystem implement strict POSIX
locking semantics, and more importantly, the ability to map
files directly into process memory. Almost no network
filesystems provide these features. If you attempt to use
Berkeley DB on a network share, the results are
unpredictable—you may see mysterious errors right away,
or it may be months before you discover that your repository
database is subtly corrupted.
If you need multiple computers to access the repository,
you create an FSFS repository on the network share, not a
Berkeley DB repository. Or better yet, set up a real server
process (such as Apache or svnserve), store
the repository on a local filesystem which the server can
access, and make the repository available over a network.
Chapter 6, Server Configuration covers this process in
detail.
total number of files
find . some_directory|wc -l
list number of files in each directory in detail
#! /usr/bin/python import os import sys def count(p): if not os.path.isdir(p): print "%s\t%d" % (p, 1) return 1 pls = os.listdir(p) s = 0 for d in pls: if os.path.isdir(d): s += count(d) else: s += 1 print "%s\t%d " % (p, s) return s p = sys.argv[1] count(p)
4. Ubuntu DNS Server Problem
Problem Description: I run Ubuntu 9.04 on my computer and use Wicd (Wired and Wireless Network Manager) to configure network settings. However, sometimes when I use wireless network, Wicd is able to connect to routers (pingable), but it fails to parse domain names. There is something wrong with DNS server.
Tentative Solution: 1) First disable all settings related to DNS inside Wicd, i.e. do not use either static or global DNS server; 2) edit /etc/resolv.conf, add available DNS servers; 3) restart computer. 4) [Optional] sometimes if we configure wicd to automatically connect and use static DNS server, Wicd freezes while setting static server. In this case, we can edit /etc/wireless-settings.conf to disable automatic connection and static DNS server.
5. How to rename files or directories in order to remove white spaces in the filename?
for i in $(ls -1 *|grep " "); do
mv "$i" $(echo $i|sed 's/ /-/g');
done
6. How to backup files (or directories) with tar and 7-zip?
First we create tar balls with the tar utility and then compress the tar balls with the 7z program. If the content of the file is sensitive, you can encrypt it with the internal encryption option in 7z or with GPG. The code is as following:
for i in *; do
tar cfv "$i.tar" "$i" && \
7z a "$i.tar.7z" "$i.tar" && \
# rm -rf "$i" && \
# rm -rf "$i.tar"; done
done
7. how do I output the matching regex pattern in a line?
use grep -o PATTERN.
Wednesday, May 07, 2008
Connecting USC VPN Network in Ubuntu
Surprisingly, this old post still receive visitors occasionally. Right now, If you just want to browse the internet and download some papers, you may try the web svn service: sslvpn1.usc.edu.
[Original Post:]
At USC, when you use computers on campus, you can use directly electronic resources, databases, electronic journals because you are in USC private network. Now suppose that you go back to your apartment off campus or you travel away from USC, how can you get access to those electronic resources that USC pays for? That's where VPN come into place. VPN, also called IP tunneling, is a secure method to access computer resources in a private network. VPN stands for "virtual private network". Generally speaking, USC runs a VPN server which listens to your call in and access request. You need to run a VPN client on your own computer, which connects to the server and offer you access to USC resources as you are in USC private network.
However, ITS only provieds official support of VPN clients for Windows (link)and Mac OS (link). Here we give a VPN solution for linux users (take Ubuntu 8.04 for example).
1. Install Network Manager Applet through the Add/Remove in the Ubuntu menu. (Most time, this applet should be installed defautly; if so, just skip to step 2);
2. Install the VPN plug-in network-manager-vpnc. Open Synaptic Package Manager, search for package network-manager-vpnc and install;
3. Left click the network manager applet (usually in the top right corner of your screen) and select VPN Connections->Configure VPN->Add. Type a name in the Connection Name box, USC VPN for example; In Gateway field, type ; In vpn3k.usc.edu; In Group Name field, type USC. Click the Optional tab, select Override user name, type in your USC account (the same as your USC email) in the textbox below. Click Apply. Close the window titled VPN Connections
4. Left click the network manager applet and select VPN Connections then click on USC connection (USC VPN) to connect. In the above password box, type in your password associated with your USC account; in the below Group password, type GoTrojan. OK, we are done!

This tutorial is based on Ubuntu. I think you can also configure VPN client in Debian, Fedora, OpenSuse and other Linux distrobutions.
References:
1.VPN Client on Ubuntu https://help.ubuntu.com/community/VPNClient
2. Configuring the Cisco VPN 3000 Client (Windows 2000/XP/Vista) http://www.usc.edu/its/vpn/vpn3k47win.html#help
Saturday, May 03, 2008
Fixing Resolution Problem of Ubuntu On Paralles Desktop
After installing Ubuntu 8.04 Hardy Heron in Parallels Desktop on my Macbook Pro, the default resolution is 1024*768. I want to use my Macbook pro's 1440*900 full resolution. I tried to use System->Preference->Screen Resolution, but there are not 1440*900 at all.
Solution
Basic idea: The problem arises because Ubuntu fails to detect the settings of my monitor automatically. Then can I mannually modify xorg.conf to set the right resolution? Let's go!
Open up a terminal. First Backup the original xorg.conf
Next open, open xorg.conf with your favorite editor
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
sudo vi /etc/X11/xorg.conf
Search the section "Screen" like below.
Probabably your file contains more lines similar to the following
Section "Screen"
Identifier "Default Screen"
Device "Generic Video Card"
Monitor "Generic Monitor"
EndSection
Note the line "Modes "1024x768" "800x600" "640x480"". It says that there are three different kinds resolutions, but our desired resolution 1440x900 is omitted. So we can simply add this resolution option. It is like the following after modification
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
It’ll appear several times throughout the file. Each time you see it, just add your desired resolution (in your case, 1440×900).
SubSection "Display"
Depth 24
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
If your file doesn't contain a similar Subsection "Display" inside the Section "Screen" (as shown above), you just add the Subsection "Display" yourself. And th final result looks like
Finally save the above modifications. Restart your X session by pressing Ctrl-Atl-Breakspace (or reboot your ubuntu), it just works!
Section "Screen"
Identifier "Default Screen"
Device "Generic Video Card"
Monitor "Generic Monitor"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1440x900" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
If you encounter total messy after this modificaion, don't panic because you still have the backup of the original xorg.conf!
Reference
1. http://gonz.wordpress.com/2007/09/22/fixing-screen-resolution-on-ubuntu-linux-in-parallels-desktop/
2. http://www.simplehelp.net/2007/04/30/how-to-increase-the-screen-resolutions-available-to-ubuntu-while-running-in-parallels-for-os-x/
Thursday, April 17, 2008
Installing R in Suse SLED 10.1
"At first I tried SUSE's install software application, but it can't find R in its repository. Then I downloaded the rpm package of R for SUSE 10.1 from CRAN mirrors, and tried install software application again. But it can not resolve dependencies. At last I ran rpm -i R-base-2.6.1-3.1.x86_64.rpm from terminal. It said it needs libgfortran.
OK, I downloaded and installed libgfortran package, and then tried rpm -i R-base-2.6.1-3.1.x86_64.rpm again. This time it needed base. I downloaded base package and try to install it by running rpm -i base-1.3.6-1mdv2008.0.noarch.rpm (I am not sure this is the right package for my computer), butit needs apache-mod_php, apache-mod_ssl, php-mysql, etc. I have to give up."
Also it seems difficult to me to compile R from source code because the package dependency is so complex.
Finally I figured out a trick: we can run windows version R in a linux with Wine. First go to http://www.winehq.org/. download and install wine. And then grab a Windows installer of R and install it. It works, either basic computation or graphic display. But there is a little problem as shown in the following graph: the cursor overlaps with the text.

ps: Another by-product is that I can play starcraft on that Linux machine with a big display.
Reference:
1. Stuff I've learned about Wine
Saturday, April 05, 2008
Anti RSI Software
It is helpful to use more human-friendly mouse and keyboard, comfortable chairs and desks and pleasant work space; however we easily forget how long we use a computer when entirely concertrating on the work. Anti-RSI software can reminds us regular breaks and micropause .
Yun Fang recommended Workpace software to me yesterday. It offers a 30-day trial version, but charges a fee after that period. I found two alternative free anti-RSI software: Workrave for Windows and Linux and AntiRSI for Mac OS.
http://www.workrave.org/welcome/
http://tech.inhelsinki.nl/antirsi/
Reference:
Alleviate RSI the Hacker Way
Saturday, March 01, 2008
Synchronization Between Linux, Mac & Windows
Let me do the research.
My situation is as following:
I run SUSE Linux on the desktop in my lab, which is supposed to running all the time; Also I have a desktop at home running windows xp and finally my macbook laptop. My first priority is to sync between mac and linux for I usc them heavily; and second between mac and windows. Also since I use computer
References
Sync folders between a Mac and PC?
2.
How to mount a Windows shared folder on your Mac
Geek to Live: Mirror files across systems with rsync
http://lifehacker.com/software/mac-os-x/how-to-access-a-macs-files-on-your-pc-247541.phpHow to set up a home FTP server
http://ceitl.zanestate.edu/blog/archives/2005/10/synchronizing-files-across-computers-and-platforms/Geek to Live: Automatically back up your hard drive
http://everythinglinux.org/rsync/Passwordless SSH Login
http://www.hackinglinuxexposed.com/articles/20021226.html
http://linuxmafia.com/%7Erick/linux-info/filesync.html




