BASH: pipe to functions

#!/bin/bash

function ProcessOneEntry() {

while read entry # Use the “read” function to do the trick
do
# Code here to do the job
done

}

# Application 1:
cat AnListFile | ProcessOneEntry

# Or
# Application 2:

find InputDirectory -name “Pattern” | ProcessOneEntry

Build Matlab mex files with CMake

To use CMake to manage the build and install process of your mex files, you need to change the compilation rules of CMake. CMake does not support “mex” compiler naturally, so you need to insert the following commands in your CMakeLists.txt.


SET( CMAKE_CXX_COMPILER	mex )
SET( CMAKE_C_COMPILER	mex )

# Suffix and Prefix of the output target file
SET( CMAKE_SHARED_LIBRARY_SUFFIX .mexa64 )	# set suffix to .mexa64
SET( CMAKE_SHARED_LIBRARY_PREFIX )		# remove the "lib" prefix

# Variables controlling the build-phrase
SET( CMAKE_CXX_FLAGS "-cxx -largeArrayDims CXXFLAGS='$$CXXFLAGS -std=c++11'" )
SET( CMAKE_SHARED_LIBRARY_CXX_FLAGS )		# remove the -fPIC option. mex does not accept the "-fPIC" option

SET( CMAKE_CXX_COMPILE_OBJECT 
	"<CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -outdir <OBJECT_DIR> -c <SOURCE>; mv <OBJECT_DIR>/$$(basename <SOURCE> .cxx ).o <OBJECT>"
)

# Variables controlling the linking-phase
SET( CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS )	# remove -shared options. mex does not accept the "-shared" option

SET(
 	CMAKE_CXX_CREATE_SHARED_LIBRARY
	"<CMAKE_CXX_COMPILER> -cxx <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -output <TARGET> <OBJECTS> <LINK_LIBRARIES>"
)

# Variables controlling the installation RPATH
SET( CMAKE_INSTALL_RPATH "\$ORIGIN" )
# CMake will reset RPATH at the installation phase, so we need to specify CMAKE_INSTALL_RPATH

MESSAGE( STATUS "mex.cmake is loaded.\n" )


## To add an mex file, you can:
#  ADD_LIBRARY( myprogram SHARED myprogram.cxx )
## Make sure you specify it as SHARED, and make sure you use the cxx extension.  

Backup and Play DVD with Linux

If your linux does not play DVD correctly, try this:
sudo apt-get install libdvdread4
sudo /usr/share/doc/libdvdread4/install-css.sh

Backup DVD as ISO file:
ddrescue -d /dev/dvd ~/dvd_backup.iso ~/dvd_backup.log
This is just an example. Please replace the arguments with those of your specific backup task.

According to the following post: http://www.cmdln.org/2010/01/22/backing-up-disney-dvds/
Pack­ages needed:
Gnu ddres­cue
dvd­backup
libdvdcss2
vlc
mkisofs

The process:
ddres­cue –n –b 2048 /dev/dvd output.iso
dvd­backup –M –i output.iso –o dvd_structure
mkisofs –dvd-video –o clean_dvd.iso dvd_structure

Step 1 copys the DVD to disk block by block but any bad sec­tors found zero data is filled in. At this point you are left with a DVD iso that has the copy pro­tec­tion removed but the encryp­tion is still intact. Step 2 extract the con­tents to a direc­tory. This sec­ond step leaves you with the struc­ture of a dvd with­out the encryp­tion. I want to pre­serve every­thing about the orig­i­nal DVD (except the copy pro­tec­tion and encryp­tion) so I used the mir­ror option. This leaves me with all the fea­tures and orig­i­nal menus. Step 3 take the DVD struc­ture and pack it up into a nice ISO.

Enable/Disable Touch Screen with Ubuntu

1. Identity Touch Screen
Command:
xinput –list
It will output a list of your input devices. For example:
—————————————————————————–
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)]
⎜ ↳ ELAN Touchscreen id=12 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v5.0 id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
↳ Lenovo EasyCamera id=11 [slave keyboard (3)]
—————————————————————————–
My touch screen is “ELAN Touchscreen”

2. Enable/Disable Touch Screen
xinput –enable “Name Of Your Touch Screen”
xinput –disable “Name Of Your Touch Screen”

For example:
xinput –disable “ELAN Touchscreen”

Set Default File Association in Ubuntu Unity for Applications Not Listed in “Open With”

Source: http://askubuntu.com/questions/369967/how-do-i-set-the-default-file-association-in-ubuntu-13-10-nautilus-files-with-un

One can use “mimeopen -d file” to invoke an application to open a file in the command line. Afterwards the used application will be the default application associated with the file type, even from the Nautilus.

Example: Set nano as the default program to open *.txt files:

$ mimeopen -d file.txt

Please choose a default application for files of type text/plain

1) notepad (wine-extension-txt)
2) gedit (gedit)
3) GNU Emacs 23 (emacs23)
4) Other…

use application # 4

use command: nano

Opening “useful.txt” with nano (text/plain)

Install Ubuntu on Ideapad Yoga 2 Pro

Before Buying Yoga 2 Pro:
If you have bought a Yoga 2 Pro, then skip this section and jump directly to the next section. This computer has the following problems, known widely among its users, yet not acknowledged or properly addressed by Lenovo.
1. Inaccurate Rendering of the Yellow Color. This is widely and notoriously known. Lenovo’s BIOS update until today (June 6, 2014) does not solve it. Lenovo regards it as solved and dismisses it, but many users do not agree at all.
2. Poor Micro HDMI Compatiblity. The Micro HDMI port, the only video export of the computer, is hidden too deep to make a stable contact with a standard Micro HDMI cable. Some DIY users have to manually file the bud of their Micro HDMI cable for 1mm~2mm to fit with this port. You may need to try a few cables to find a working one.
3. Unintended Mute Speaker Caused by Inconsistence Audio Jack Detection. Sometimes, the speaker mute because the computer falsely detects audio jack as plugged in, though actually not at all. Unfortunately, plugging-and-unplugging does not always solve the problem. It depends on luck.
4. Frequent WiFi Signal Dropping. To my experience, my 8-year old T60 has much better WiFi performance than my Yoga 2 Pro. By the way, this computer can only receive 2.4G Hz signals, not 5G Hz signals.

Install Ubuntu on Ideapad Yoga 2 Pro

Hardward: IdeaPad Yoga 2 Pro, Intel Haswell i5 CPU, 256 SSD, 8G RAM
Software: Ubuntu 13.10, 64bit

Process:
1. Enable booting from USB
Power down the computer. Push the “novo” button, then the computer enter BIOS configuration. Disable “Security Boot”, and Disable “Lenovo Fast Boot”.

2. Prepare Ubuntu Installation USB
Create a Ubuntu Installation USB following the instruction by Ubuntu. After this, find file /boot/grub/grub.cfg and modify it by adding “acpi_backlight=vendor” before “quiet splash”. You shall have something like this in the boot options: “acpi_backlight=vendor quiet splash”. You may need the root permission to edit this file, so use “su” or “sudo” to get the root permission when editing, for example, sudo vi /boot/grub/grub.cfg
This is important. Otherwise, Ubuntu installation runs but the screen does not turn on.

3. Install Ubuntu
Insert the USB disk and power on the computer with the “novo” button. Select USB boot from the Boot Menu. Then the Ubuntu installation process starts. You many need to use “gparted” to shrink the Windows partition and create one partition for Grub boot loader and another partition for Ubuntu. It is wise to avoid overwriting partitions with factory settings and factory boot loaders. For example, the Windows 8 is on partition /dev/sda5. /dev/sda1 ~ /dev/sda4 has software installed by Lenovo, then I shrink /dev/sda5, and created /dev/sda8 for boot loader and /dev/sda9 for Ubuntu. I try to avoid overwriting /dev/sda1 ~ /dev/sda5.

4. Screen Problem
Now, your Ubuntu can boot, but you still have only a black screen.The
Restart computer, and choose “advanced Ubuntu” in grub and choose recovery mode, and choose “root console“. In this way, you can enter the command line mode to solve the screen problem.
Modify /etc/default/grub by modify with GRUB_CMDLINE_LINUX_DEFAULT=”acpi_backlight=vendor quiet splash”
Run update-grub2, then this “acpi_backlight=vendor” option will be pushed to your /boot/grub/grub.cfg. Now the screen problem shall be solved.
Make sure you make this change for all the Ubuntu boot entries of your grub, otherwise some entries will not work.

5. Wifi and Screen Brightness Problem
There may be other solutions, but this simple solution works perfect for me.
In /etc/modprobe.d/ I created a file “blacklist-ideapad_laptop.conf”, and in it, I put “blacklist ideapad_laptop”, in this way, both the wifi and brightness problems are solved. Very simple. You do not need wicd to solve this problem.

6. Tweak for SSD (Optional).
Edit /etc/fstab to add options mount “noatime,nodiratime,discard” to your ubuntu partition.
Edit /etc/fstab to use tmpfs for /tmp and /var/tmp

Useful Links:

http://memobadz.wordpress.com/2014/02/16/lenovo-yoga-pro-2-on-ubuntu/

http://askubuntu.com/questions/367963/ubuntu-on-lenovo-yoga-2-pro/485632#485632 (Thanks to rubo77)