English

Writing English like native speaker like fashion

Fluent writing is something even native speakers struggle with. In this post, I would share you some tips in order to practice myself and help you boosting your written English. Here are a few facts about writing English that I experienced:

Read, read and read a lot everyday

1. Build your reading habit (5-10 news/day) in whatever topic you like.

2. Read and remember other writing styles.

3. ….

Write reagularly

1. Take notes the key points that you want to write.

2. Make a review about these points on Internet, how people write it.

3. Imitating their style firstly.

4. Write, revise, write, revise…..

4. Build your writing style.

Edit and proofread by native speaker (if possible).

to be continued:

References:

http://business.tutsplus.com/articles/7-skill-perfecting-tips-for-non-native-english-writers–fsw-18651

http://selfhelparchive.com/how-to-improve-your-writing-skills-to-write-like-a-native-english-speaker/

http://englishharmony.com/write-like-a-native-speaker/

Quick Notes

Git tutorial

Common:

>> git status

To see your branch, files added/removed and other information.

Branching

1. Clone the project from repository by ssh:

>> git clone ssh://<username>@<server>:port/<path_to_repo>/ <your_local_git_path>

: the folder name you want to create the project on your local.

2. Create a new branch named “feature_x” and switch to it using:

>> git checkout -b feature_x

Or switch back to master and delete your feature branch:

>> git checkout master

>> git branch -d feature_x

3. Work on your own feature branch using same commands (add/commit) like work on master. To push your feature to repository:

>> git checkout -b feature_x

4. Push your branch to remote server:

>> git push origin feature_x

5. If somebody work on the same feature_x, pulling something new from remote server:

>> git pull origin feature_x

6. To merge one branch into your active branch:

>> git merge feature_x

7. Always, the conflicts happens and you have to merge manually:

>> git add

8. To fetch the latest history from the server:

>> git fetch origin

Quick tutorial for Git

http://rogerdudler.github.io/git-guide/

Guitar

Học guitar thế nào?

Đối với những người bắt đầu guitar hay học một thứ gì đó mới, cái khó nhất là làm sao để biết bắt đầu từ đâu, học như thế nào và làm thế nào để học được nhanh? vì thực ra cũng giống nếu không thì thời gian đâu ai cũng phải chạy lung tung để tự mày mò tìm hiểu để tự đúc kết kinh nghiệm cho bản thân. Trong bài này là một số đúc kết cơ bản tự bản thân tìm hiểu được, ghi chú ở đây để sau này mò lại:

[Làm sao để luyện tập guitar hiệu quả]

1. Giai đoạn mới vào nghề

Qua kinh nghiệm bản thân thì chúng ta có thể học guitar theo từng bài như sau, sau khi luyện tâp khoảng 20-30 bài thì bạn sẽ tự động quen và cảm nhận được về cấu tao hợp âm (chord), vòng hợp âm (vì các bài hát thường tương tự nhau), về tai nghe (ear-training).

1. Chọn một bài hát bạn yêu thích.

2. Thuộc lời bài hát và học hát theo ca sĩ cho đúng.

3. Ngồi mò notes của bài hát. Bước này mất khá nhiều thời gian và công sức. Để chơi cho chính xác ở bước đầu thì trước hết bạn bạn tham khảo vài notes đầu tiên trong music sheet chuẩn của bài hát này để biết bắt đầu ở đâu cho đúng, sau đó bắt đầu mò cho hết bài.

4. Đownload music sheet chuẩn của bài hát (tất nhiên không có thông tin hợp âm thì tốt hơn để minh tự phổ hợp âm sau đó), và kiểm tra lại những notes mình mò với notes chính xem có sai khác để khắc phục. Đầu tiên có thể sai nhiều nhưng sau dần sẽ chính xác hơn, và tập lại theo đúng music sheet và phải học thuộc.

5. Phổ hợp âm cho bài hát trên music sheet, bước này sẽ được trình bày ở phần sau, và kiểm tra lại so với hợp âm đã phổ ở trên mạng hoặc chính bài hát.

6. Tập chơi đệm và hát bài hát theo hợp âm đã có hoặc tự phổ, và phải hợc thuộc.

7. Kết hợp solo notes và đệm để có bài solo hay hơn. Cách solo đơn giản được trình bày ở phần sau.

8. Tìm hiểu để chơi phân intro của bài hát hay hơn, theo như trình bày ở phần sau.

Sau khi chơi xong nhưng bước này bạn sẽ có thể chơi được hoàn chỉnh một bài hát, có thể đệm chơi solo tự sự, đồng thời bạn cũng học thuộc được hợp âm, vòng hợp âm của bài hát. Cũng như luyện được tai và mò notes của bài hát. Nhưng để hoàn thành tất cả các bước đối với những người mới bắt đầu thì cực kì gian nan và mất thời gian. Sau khi chơi được một số bài thì bạn sẽ chơi nhanh hơn và tai nghe sẽ dần tốt hơn, lâu dần bạn có thể nghe và chơi được những bài hát trên mạng mà không cần biết notes hay hợp âm. Trong lúc đó bạn nên tìm hiểu song song lí thuyết về âm nhạc.

[Học độc tầu guitar đơn giản]

Giành cho những người đã biết về đệm hát cơ bản và hợp âm mà muốn bắt đầu chuyển sang học về solo cho những lúc muốn tự sự, tự kỷ một mình. Để chơi được bước này, phải yêu cầu biết trước:

1. Chới solo note đơn cho một bài hát và biết các hợp âm sử dụng trong bài hát.

2. Biết được tiết tấu, nhịp điệu của bài (2/4, 4/4, 6/8…)

3. Biết đệm một bài hát nếu biết hợp âm sử dụng một số điệu cơ bản như: slow, slow rock …

Cách chơi:

1. Đầu tiên bạn chơi mono cho bài hát đó. Tập chơi từng note đơn riêng lẻ (Đọc bản nhạc, hoặc tự mò).

2. Bạn đệm bài hát bằng các điệu cơ bản như slowrock, slow … tất nhiên phải đảm bảo bài hát đó đệm được bằng điệu này. Đệm được theo điệu như 2/4, 6/8 cho đúng.

3. Xác định các note chính mạnh, hoặc note kết thúc của từng câu (thường là vị trí đặt hợp âm). Thường các note ở vị trí của từ này sẽ nằm trong chính hợp âm này.

4. Khi chơi hết một câu mà dừng ở note kết thúc thi chêm vào một đoạn nhạc đệm ứng với hộp âm của note đó. Nhớ là kết thúc một note ở đâu thì tìm hợp âm thích hợp của nó chèn vào đoạn cuối.

5. Kết hợp note giai điệu của bài hát với note bè bass của hợp âm (đánh hai dây cùng lúc để có hiệu ứng hay hơn).

6. Thường để cho hay ta thường chơi một số note và chord ở trên cao (Cái này bạn phải tìm hiểu và tập để nhớ).

Du mục

[Matlab] MEX file 64bit compling

1. If you have the problem with MSSE2 or MSSE3, set the flag:

mex ‘CXXFLAGS=-msse3 -msse’ -I/home/tntrung/Documents/My_Project/HelloVO/libviso2dev/src matcherMex.cpp

-I : including the *.h folder needed for the compiler.

2. The problem may happen when you compile without the appropriate gcc: /usr/bin/ld: /tmp/mex_200098125486073_16180/matcherMex.o: relocation R_X86_64_32 against `.rodata.str1.1′ can not be used when making a shared object; recompile with -fPIC /tmp/mex_200098125486073_16180/matcherMex.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status

Solution: Using -fPIC option to build the shared objects, notice to put -msse3 -msse if necessary:

gcc -c -msse3 -msse -fPIC matcher.cpp

gcc -shared -o libviso2share.so matcher.o filter.o …

or using Matlab to compile shared library:

mcc -B csharedlib:sharedlibname matcher.o filter.o …

Compiling with mex in Matlab:

mex -I/home/tntrung/Documents/My_Project/HelloVO/libviso2dev/src matcherMex.cpp libviso2share.so

Notice: export LD_LIBRARY_PATH and PATH to the shared library folder before running Matlab, otherwise you will get an error “unable to open shared library”.

For example:

export LD_LIBRARY_PATH=/home/tntrung/Documents/My_Project/HelloVO/libviso2dev/matlab:$LD_LIBRARY_PATH

export PATH=/home/tntrung/Documents/My_Project/HelloVO/libviso2dev/matlab:$PATH

3. [Updated] Compile mex files in another way of MALTAB:

mex(‘matcherMex.cpp’,’../src/matcher.cpp’,’../src/filter.cpp’,’../src/triangle.cpp’,’../src/matrix.cpp’,’-I../src’,’CXXFLAGS=-msse3 -fPIC’);

Quick Notes

Installing ffmpeg + opencv

Ubuntu #16.04 [OpenCV 3.1.0]

1. Dependencies

sudo aptget install buildessential cmake pkgconfig

sudo aptget install libjpeg8dev libtiff5dev libjasperdev libpng12dev
sudo aptget install libavcodecdev libavformatdev libswscaledev libv4ldev
sudo aptget install libxvidcoredev libx264dev
sudo aptget install libgtk3dev
sudo aptget install libatlasbasedev gfortran
sudo apt-get install libeigen3-dev
2. Install OpenCV
wget O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
cd opencv
Fixing unsupported bug of CUDA 8.0
git clone https://github.com/Itseez/opencv.git && \
    cd unzip opencv.zip && \
    cd opencv && \
    git checkout 3.1.0 && \
    git format-patch -1 10896129b39655e19e4e7c529153cb5c2191a1db && \
    git am < 0001-GraphCut-deprecated-in-CUDA-7.5-and-removed-in-8.0.patch
wget O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip  [SIFT, SURF are non-free now]
unzip opencv_contrib.zip

Notice to set these paramters when build cmake.

-DWITH_IPP=ON

-DINSTALL_CREATE_DISTRIB=ON

OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib3.1.0/modules

Then, install OpenCV as in #Ubuntu 14.04.

Test OpenCV

cd /usr/local/share/OpenCV/samples/cpp

sudo g++ -ggdb facedetect.cpp -o facedetect  `pkg-config --cflags --libs opencv`

Ubuntu #14.04

1. Installing:

sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libsdl1.2-dev libtheora-dev  libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev libsdl1.2-dev libvpx-dev

2. Installing libgtk2.0-dev

sudo apt-get install libgtk2.0-dev

3. Installing QT

sudo apt-get install qtdeclarative5-dev

4. Installing ffmpeg:

sudo add-apt-repository ppa:mc3man/trusty-media

sudo apt-get update

sudo apt-get install ffmpeg gstreamer0.10-ffmpeg

5. Downloading and installing OpenCV 2.4.9.

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_FFMPEG=ON ..

make -j2

sudo make install

sudo sh -c ‘echo “/usr/local/lib” > /etc/ld.so.conf.d/opencv.conf’

sudo ldconfig

6. Testing the opencv:

cd /usr/local/share/OpenCV/samples/c

sudo chmod +x build_all.sh

sudo ./build_all.sh

./facedetect –cascade=”/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml” lena.jpg

============================

Ubuntu #12.04

1. Install dependencies for FFmpeg and x264

sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev

2. Install Gstreamer by entering following lines in terminal

sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg

3. Install recent version of x264 from ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ extract it and go to the directory. Now configure and install x264 by entering following commons one by one.

./configure –enable-static
make
sudo make install

4. Download recent version (0.8+) of FFmpeg from http://ffmpeg.org/releases/ extract it and go to the directory. Now configure and install FFmpeg by entering following commons one by one.

./configure –enable-gpl –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-nonfree –enable-postproc –enable-version3 –enable-x11grab
make
sudo make install

5. Install gtk libs using apt-get

sudo apt-get install libgtk2.0-0 libgtk2.0-dev

6. Install libjpeg using following command

sudo apt-get install libjpeg62 libjpeg62-dev

7. Install cmake using apt-get

sudo apt-get install cmake

8. Download Opencv 2.3.1
http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2/download

Install OpenCV like on Ubuntu 14.04.

Quick Notes

Github, SVN: how to use?

Github

1. Creating ssh-key, and copy and paste to ssh of github: ssh-keygen -t rsa -C “your@email.com”

git config –global user.name “Your Name”
git config –global user.email “your@email.com”

2. Connecting to account:

ssh -vT git@github.com

3. Download github repository from github.

git clone git@github.com:tntrung/.git

4. Adding a new file:

git add new_file.txt
git commit -m “message….”
git push origin master

5. Sync up your fork to the main project branch and pull down any official changes by doing git pull upstream master which is the equivalent of manually doing:

git fetch upstream
git checkout master
git merge upstream/master

============================================

Git server on localhost

1. Create the folder for git.

e.g.: mkdir -p /home/gitspace/project-1.git

2. Change to the /home/gitspace/project-1.git and then create an empty repository:

>> init –bare

3. Create your working project: /home/projectgit/ and clone:

>> git clone –local /home/projectgit/

Then you can work with command line as above

============================================

Svn

….

Face Tracking

Introduction to 3D Face Tracking and Its Applications

Three-dimensional (3D) human face tracking is a generic problem that has been receiving considerable attention in computer vision community. The main goal of 3D face tracking is to estimate some parameters of human faces from video frames: i) 6 Degrees of Freedom (DOF) – consists of the 3D translation and three axial rotation of a person’s head relative to the camera view. As commonly used in the literature, we adopt three terms Yaw (or Pan), Pitch (or Tilt) and Roll for the three axial rotations. The Yaw orientation is computed when, for example, rotating the head from right to left. The Pitch orientation is related to the movement of the head from forward to backward. The Roll orientation is when bending the head from left to right. The 6 DOF are considered as rigid parameters. ii) The non-rigid parameters describes the facial muscle movements or facial animation, which are usually the early step to recognize the facial expression, such as: happy, sad, angry, disgusted, surprise, and fearful, etc. Indeed, the consideration for non-rigid parameters is often represented in form of detecting and tracking facial points. These points are acknowledged as fiducial points, feature points or landmarks in face processing community. The word ”indexing” in our report means that rigid and non-rigid parameters are estimated from video frames. Our aim is to read a video (or from a webcam) capturing the single face (In case of multiple faces, the big face is selected) and the output is parameters (rigid and non-rigid) of video frames. Indeed, the non-rigid parameters are difficult to be represented because it depends on the application. In our study, they are represented indirectly as localizing or detecting feature points on the face.

There are several potential applications in many domains which use face tracking. The most popular one is to recognize facial behaviors in order to support for an automatic system of human communication understanding. In this context, the visual focus of attention of a person is a very important key to recognize. It is a nonverbal communication way or an indicative signal in a conversation. For this problem, we have to analyze first the head pose to determine the direction where people are likely looking at in video sequences. It makes sense that people may be focusing on someone or something while talking. Furthermore, there are the important meanings in head movements as a form of gesturing in a conversation. For example, the head nodding or shaking indicates that they understand and misunderstand or agree and disagree respectively to what is being said. Emphasized head movements are a conventional way of directing someone to observe a particular object or location. In addition, the head pose is intrinsically linked with the gaze, or head pose indicate a coarse estimation of gaze in situations of invisible eyes such as low-resolution imagery, very low-bit rate video recorders, or eye-occlusion due to sunglasses-wearing. Even when the eyes are visible, the head pose supports to predict more accurately the gaze direction. There are other gestures that are able to indicate dissent, confusion and consideration, etc. Facial animation analysis is also necessary to be able to read what kind of expression people are exposing. The facial expression is naturally occurred in human communication, it is one of the most cogent means for human beings to infer the attitude and emotions of other persons in the vicinity. The expression analysis, which requires facial animation detection, is an crucial topic not only in machine vision but also psychology.

to be continued…..