BIOS settings to Install Ubuntu

If Ubuntu installation shows only the USB drive from which you are installing, make sure you have the BIOS settings as follows.
BIOS settings to Install Ubuntu alongside with Windows :
  1. Disable Secure Boot.
  2. Set SATA-controller to AHCI from RAID On.
  3. Set boot mode to legacy from UEFI.

How to fix error Requires: libva.so.1(VA_API_0.33.0)(64bit)

If you get the following error while installing FFMPEG or other packages on CentOS 7.

Requires: libva.so.1(VA_API_0.33.0)(64bit)

Follow the following steps to install libva

sudo yum install libwayland-client    

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libva-1.8.3-1.el7.x86_64.rpm 

sudo rpm -i libva-1.8.3-1.el7.x86_64.rpm          


Sample error log when installing FFMPEG:

Error: Package: ffmpeg-libs-3.4.7-1.el7.x86_64 (rpmfusion-free-updates)
           Requires: libva.so.1(VA_API_0.33.0)(64bit)
Error: Package: ffmpeg-libs-3.4.7-1.el7.x86_64 (rpmfusion-free-updates)
           Requires: libva-x11.so.1()(64bit)
Error: Package: libmfx-1.21-2.el7.x86_64 (epel)
           Requires: libva-x11.so.1()(64bit)
Error: Package: libmfx-1.21-2.el7.x86_64 (epel)
           Requires: libva-drm.so.1()(64bit)
Error: Package: ffmpeg-libs-3.4.7-1.el7.x86_64 (rpmfusion-free-updates)
           Requires: libva-drm.so.1()(64bit)
Error: Package: ffmpeg-libs-3.4.7-1.el7.x86_64 (rpmfusion-free-updates)
           Requires: libva.so.1()(64bit)
Error: Package: libmfx-1.21-2.el7.x86_64 (epel)
           Requires: libva.so.1()(64bit)

Azure VM --os-disk-size-gb partition, format and mount

If you are using Azure VM --os-disk-size-gb parameter to increase the size of the OS disk, you need to partition, format and mount to use it.

Check the current status with
 fdisk -l


 df -Th 


Step 1: Create a partition (See sample output below)
 sudo fdisk /dev/sda
(use n to create new partition, and follow prompts)

Step 2: Refresh partition table
 sudo partprobe

Step 3: Format the new partition, get the name from step 1 or use fdisk -l 
 mkfs.xfs /dev/sda3 

Step 4: Mount 
 mkdir /mnt/shared
 mount /dev/sda3 /mnt/shared/  

Step 5: Verify  
 df -Th 

Step 6: Edit the /etc/fstab to automatically mount when restarted 


 vi  /etc/fstab
Append line /dev/sda3 /mnt/shared xfs defaults 0 0  . Please note the filesystem type "xfs" is used as it was formatted in "xfs" in Step 3. You could use other formats as well based on your requirements .
                                                                                                                               
#                                                                                                                              
# /etc/fstab                                                                                                                   
# Created by anaconda on Wed Dec 19 23:06:16 2018                                                                              
#                                                                                                                              
# Accessible filesystems, by reference, are maintained under '/dev/disk'                                                       
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info                                                    
#                                                                                                                              
UUID=fdb125e2-1ce5-4b7a-98db-88c0f66a86ee /                       xfs     defaults        0 0                                  
UUID=d4c5a046-3513-4ff0-a955-621311869210 /boot                   xfs     defaults        0 0                                  
/dev/sda3 /mnt/shared xfs defaults 0 0     


Sample Output:

[root@azvm azureusr]# fdisk /dev/sda

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): 
Using default response p
Partition number (3,4, default 3): 
First sector (62914560-125829119, default 62914560): 
Using default value 62914560
Last sector, +sectors or +size{K,M,G} (62914560-125829119, default 125829119): 
Using default value 125829119
Partition 3 of type Linux and of size 30 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@azvm azureusr]# partprobe
[root@azvm azureusr]# fdisk -l

Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000eba6a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    62914559    30944256   83  Linux
/dev/sda3        62914560   125829119    31457280   83  Linux

Disk /dev/sdb: 751.6 GB, 751619276800 bytes, 1468006400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x3fde6d89

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1             128  1468004351   734002112   83  Linux

[root@azvm azureusr]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        32G  5.8G   26G  19% /
devtmpfs       devtmpfs  186G     0  186G   0% /dev
tmpfs          tmpfs     186G     0  186G   0% /dev/shm
tmpfs          tmpfs     186G  9.5M  186G   1% /run
tmpfs          tmpfs     186G     0  186G   0% /sys/fs/cgroup
/dev/sda1      xfs       521M   68M  454M  13% /boot
/dev/sdb1      ext4      740G   76M  703G   1% /mnt/resource
tmpfs          tmpfs      38G     0   38G   0% /run/user/1000

[root@azvm azureusr]# mkfs.xfs /dev/sda3 
meta-data=/dev/sda3              isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@azvm azureusr]# mkdir /mnt/shared

[root@azvm azureusr]# mount /dev/sda3 /mnt/shared/ 

[root@azvm azureusr]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        30G  5.4G   25G  19% /
devtmpfs       devtmpfs  174G     0  174G   0% /dev
tmpfs          tmpfs     174G     0  174G   0% /dev/shm
tmpfs          tmpfs     174G  9.1M  174G   1% /run
tmpfs          tmpfs     174G     0  174G   0% /sys/fs/cgroup
/dev/sda1      xfs       497M   65M  433M  13% /boot
/dev/sdb1      ext4      689G   73M  654G   1% /mnt/resource
tmpfs          tmpfs      35G     0   35G   0% /run/user/1000
/dev/sda3      xfs        30G   33M   30G   1% /mnt/shared



Unblock a specific port from the firewall in Centos 7

Following is a example which unblocks port 8888

firewall-cmd --permanent --add-port=8888/tcp
firewall-cmd --reload
firewall-cmd --list-all

opencv: Install opencv CentOS


sudo yum install opencv opencv-python opencv-devel-docs 

#OPTIONAL DEPENDENCIES:
sudo yum install -y python-devel gtk2-devel libdc1394-devel libv4l-devel ffmpeg-devel gstreamer-plugins-base-devel
sudo yum install -y libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel
sudo yum install -y gcc  cmake  git gtk2-devel pkgconfig  numpy  ffmpeg

If your using virtual environment, copy the relevant cv files to the virtual environment.

 cp /usr/lib64/python2.7/site-packages/cv* .venv/lib/python2.7/site-packages/

Caffe: Visualizing Caffe Network prototxt file using GraphViz: draw_net.py

Visualizing Caffe Net topology/ntwork/prototxt file using GraphViz
From the Caffe root directory, you can generate a graph in image format from a .prototxt model file:

#INSTALL PRE-REQS:
$ make pycaffe
$ pip install pydotplus
$ yum install graphviz

Visualize a CNN in left-to-right:

#goto CAFFE ROOT
$ python/draw_net.py mynetwrk.prototxt mynetwrk.png

Output formats could be : PNG, PDF, DOT or other GraphViz supported formats.
Visualize a CNN in top-to-bottom:

$ python/draw_net.py --rankdir TB mynetwrk.prototxt mynetwrk.png

Following errors can be eliminated if you install the PRE-REQS (pip install pydotplus; yum install graphviz)

pydotplus.graphviz.InvocationException: GraphViz's executables not found
Exception: "dot" not found in path.
ImportError: No module named pydot

Github: Merging two branches


git remote add remote-name remote-github-url 
git fetch remote-name 
git merge remote-name/branch-name 
git status

Github: Update a GitHub forked repository;


git remote add upstream github-URL
git fetch upstream 
git merge upstream/master master 
git pull upstream master 
git push

Sublime Text: Multiple cursors or Multi-selection

Multiple cursors or Multi-selection in sublime text is easy

  • Press Alt/Command and then click in each region where you require a cursor. 
  • Select a block of lines : Shift + Command + L. 
  • Place the cursor over a particular word, and press Control/Command + D repeatedly to select additional occurrences of that word. 
  • Add an additional cursor at all occurrences of a word : Alt+F3 on Windows or Ctrl+Command+G on Mac.

Laravel: Debug by Printing Eloquent Query

Use ->toSql() method like shown below to get the SQL

<?php
use Log;

$name = "hawk";

$userResults = DB::table('users')
       ->leftJoin('planets', function($join) {
         $join->on('users.planet_id', '=' , 'planets.id');
        })
       ->where('users.lname' , 'like', '%'.$name.'%');

//You can print the SQL in your log file
Log::info('My search sql: '.($userResults->toSql()));

// OR you can save into a string variable
$mySQL = $userResults->toSql();

//Then use your get function
$userResults = $userResults->get(array('users.fname', 'planets.name'));
?>

The above code will print the following into your /storage/logs/laravel.log file

[2014-09-30 17:58:07] production.INFO: My search sql: SELECT * FROM  users LEFT JOIN planets ON (users.planet_id = planets.id) WHERE users.lname LIKE '%hawk%' 

Laravel, Eloquent: SQL query with left join

If the query needs parentheses/brackets for a where condition like below Normal SQL:

SELECT users.fname, planets.name 
FROM  users
LEFT JOIN  planets ON (users.planet_id = planets.id)
WHERE users.lname LIKE '%hawk%' 

ELOQUENT SQL:

$name = "hawk";

$userResults = DB::table('users')
       ->leftJoin('planets', function($join) {
         $join->on('users.planet_id', '=' , 'planets.id');
        })
       ->where('users.lname' , 'like', '%'.$name.'%')
       ->get(array('users.fname', 'planets.name'));

Eloquent: SQL Query with where or in brackets

If the query needs parentheses/brackets for a where condition like below Normal SQL:

SELECT * 
FROM  users
WHERE planet = 'earth'
AND (fname LIKE '%hawk%' OR lname LIKE '%hawk%')
AND state = 'FL'

ELOQUENT SQL:

$name = "hawk";

$usersResults = DB::table('users')
    ->where('planet', '=', 'earth')
    ->where(function($query) use ($name){
            $query->where('fname' , 'like', '%'.$name.'%');
            $query->orWhere('lname' , 'like', '%'.$name.'%');
      })
     ->where('state', '=', 'FL')
    ->get();

Wordpress: Print-friendly, Print as it looks in browser

If you you want to print a wordpress blog/site as it looks on the browser, then you have to
1. Login to the Wordpress as admin
2. Goto Appearance->Editor in the Left Sidebar menu.
3. On the right side find Header.php file
4. In the file locate the following piece of code

<link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen” />

5. Modify to the media=""screen" to media="screen, print"
6. Click Update file at the bottom to save the changes in header.php

<link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen, print” />


Oracle: Split a String Based on Delimiter

We can split a string based on Delimiter using a combination of  INSTR and SUBSTR functions:

INSTR Returns the position of a String within a String. For more information see Oracle instr function
SUBSTR Returns a substring. For more information see Oracle substring
Syntax of SUBSTR:

SUBSTR([input],[start],[length])  
Example 1:
 
select substr('orange.apple',1,(instr('orange.apple','.')) - 1)  
 from  dual  

Output:
first

Example 2:
 
select substr('orange.apple',1,(instr('orange.apple,'.')) - 1) as First,  
        substr('orange.apple', (instr('orange.apple','.')) + 1) as Second  
 from  dual 

Output:
First         Second
orange           apple

Eclipse keyboard shortcuts and Sublime Text 3 keybord shortcuts

Switching from Eclipse to Sublime Text 3?,  need some quick shortcuts to

1. Switching/Moving Lines up and down
Eclipse shortcut:  ⌘-UP to move lines up,  ⌘-DOWN to move lines down,
Sublime Text 3: CTRL-⌘-UP to move lines up, CTRL-⌘-DOWN to move lines down.

2. Deleting Entire Line your cursor is on 
Eclipse shortcut:⌘-D
Sublime Text 3: CTRL-SHIFT-K

3. Goto Line in File 
Eclipse shortcut: ⌘-L
Sublime Text 3: ⌘-P, then type a colon followed by the line number (e.g. :12 for line 12). To go to a line in another file, type the file name and then a colon and the line number.

Mac: Install OPEN MPI on Mac OS

Step 1 : If you haven't installed XCODE. Download and Install XCODE

Step 2 :
Install Open MPI. Download the latest stable release of Open MPI from the Open Source High Performance Computing website.

Step 3:
Open terminal and Go to the downloaded directory

Extract the downloaded archive :
tar -zxvf openmpi-1.6.5.tar.gz

Open terminal and Go to the extracted directory:
cd /path/to/extracted/openmpi-1.6.5

Run the following commands
./configure --prefix=/usr/local
make all
sudo make install

Step 4: Add OpenMPI path to your path, run the following commands export

PATH=/usr/local/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH

Step 5: Compile your C/C++ program
For C:
mpicc -o myProgExe myProg.c

For C++:
mpic++ -o myProgExe myProg.cpp

Step 6: Run, where -np is the number of processor to run on.
mpirun -np 8 myProgExe




Gmail Tricks ;), Get more usage out of your Gmail address !

1. Create Filters with multiple Senders
Use the 'OR' keyword in between emails. 

Set up the filter as "email1@gmail.com OR email2@gmail.com" and continue from there.


2. The Plus Sign (+) in your Gmail address

For example you have an email address: ravi@gmail.com, then
  • ravi@gmail.com = ravi+anything@gmail.com = ravi+socialmedia@gmail.com
Gmail ignores anything after the + sign.  But sends/recieves with the full email address.

So, Why do you want to use the + sign ? To manage junk and unwanted emails :)

You can use this kind of email address at some social or coupon websites to register and later manage(probably delete) all their associated emails or notifications. 

So for example, you could register at these websites with ravi+couponjunk@gmail.com . And then create a filter with ravi+couponjunk@gmail.com and you can continue from there...
























So from next time when u register, which requires your email, or when you post a contact email on your website. You can create a filter and manage these emails to be automatically archived, deleted, etc...

3. The dot Sign (.) in your Gmail address
For example you have an email address: ravi@gmail.com, then
  • ravi@gmail.com = r.a.v.i@gmail.com = ra.vi@gmail.com = r.av.i@gmail.com
Gmail ignores periods (.) as characters in email addresses. 

jQuery: Disable backgroud scrolling when simplemodal modal box is opened.

When using jQuery simplemodal, when the modal box is box is opened , following is one way to disable the scrolling in the background.

We change the css overflow property of the background in the onShow and onClose functions..

Example:

$("#sample").modal({  
      maxWidth:800, minHeight:800,  
       onShow: function(dialog) {  
                 $("html,body").css("overflow","hidden");  
                 //YOur remaining javascript...  
            },  
       onClose: function(dialog) {  
                 $("html,body").css("overflow","auto");  
                 $.modal.close();  
            }  
 }); 

CakePHP: Update model after changing database


After changes are made in the Database, to see the changes updated or reflect to the cakephp models, do the following
  1. Delete all the temporary model files from app/tmp/cache/models/*.
  2. In app/Config/core.php, change the debug value from 0 to 3, load your app in browser and again change it from 3 to 0 

Run Internet Explorer 7, 8, and 9 in Mac OS X


Source: http://osxdaily.com/2011/09/04/internet-explorer-for-mac-ie7-ie8-ie-9-free/


Following is the post from osxdaily.com

Notes: the admin password for all of the IE VMs is “Password1″ without the quotes. This has been tested and confirmed to work with Mac OS X 10.7 Lion and Mac OS X 10.6 Snow Leopard.
  1. Download & Install VirtualBox – Download Now (direct .dmg download link) – visit VirtualBox Downloads page
  2. Launch the Terminal (located in /Applications/Utilities/)
  3. Decide which versions of Internet Explorer you want to download and install – each version of Internet Explorer is contained within a separate virtual machine that runs within VirtualBox. In other words, if you want to run Internet Explorer 7, 8, and 9, you will need to download three separate VM’s, which may take a while so keep that in mind. Select the text below and copy it:
    • Install ALL versions of Internet Explorer: IE7, IE 8, and IE 9

    • curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | bash
    • Install Internet Explorer 7 Only

    • curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="7" bash
    • Install Internet Explorer 8 Only

    • curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="8" bash
    • Install Internet Explorer 9 Only

    • curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="9" bash
  4. Copy and paste the selected command from above into the Terminal and hit return, this will start the download and conversion process. How long this takes depends on your internet connection and how many versions of Internet Explorer you chose to install
  5. Launch VirtualBox and boot Windows & Internet Explorer – select the virtual machine corresponding to the version of Internet Explorer you intend to use: IE7, IE8, IE9, then click on the “Start” button to boot that Windows machine with that version of Internet Explorer.
Remember that the default Windows admin password is “Password1″, it’s also the password hint within the VM should you forget it. 
That’s really all there is to it. These commands are part of the ievsms script from xdissent and it manages the entire download, conversion, and installation procedure, it doesn’t get much easier.
VM Snapshots Circumvent Microsofts 30 Day Limitation
The other great thing about this method is that it circumvents Microsofts 30 day limitation by utilizing snapshots, a feature built into VirtualBox. This preserves the original Windows VM state and allows you to continuously use the IE virtual machine without any time limitation simply by reverting to the original snapshot once the 30 day lock occurs.
To use a snapshot after the 30 day Windows expiration, just open VirtualBox, select the IE VM, and click on the “Snapshots” button. From here you can boot from the original snapshot that was created and use IE again for another 30 days. You can do this indefinitely, effectively having a clean IE test environment forever.

SVN: Moving subversion repository from one server to another server

This works between any kind of servers windows or linux...

Step 1: Backup / create a dump of old repository
svnadmin dump /path/to/repository > repo_name.dump 

Step 2: Create a new repository on the new server
svnadmin create /path/to/repository 

Step 3: Import the the old repository
svnadmin load /path/to/repository < repo_name.dump

Matlab: Sort 2D array with respect to one column

sort function in Matlab, sorts matrix columns independently.
But,
B = sortrows(A, column) sorts the matrix based on the columns specified in the vector column. 

Example:


>> A = [2 10; -1 20; 5 40]

A =

     2    10
    -1    50
     5    15

>> sortrows(A, 1)

ans =

    -1    50
     2    10
     5    15

>> sortrows(A, 2)

ans =

     2    10
    -1    50
     5    15



MATLAB: String tokenizer, string split

myStr = 'one_two_three';
pieces = regexp(myStr , '_', 'split')

%Output would be an pieces array with 3 elements.
pieces =

    'one'    'two'    'three'

Academy Excellence Award 2011 to Dr. P Seetharamaiah


The Prime Minister, Dr. Manmohan Singh presenting the Academy Excellence Award 2011 to Dr. P Seetharamaiah, at the DRDO Awards presentation ceremony, in New Delhi on July 31, 2012. The Defence Minister, Shri A. K. Antony is also seen.

Generate 2048 CSR using openssl


openssl req -new -nodes -subj "/C=US/ST=Florida/L=Tampa/O=My Org Pvt Limited/OU=Some Dept/CN=abc.xyz.com" -keyout private.txt -out certreq.txt -newkey rsa:2048

UNIX: Bash Keyboard shortcuts

Very useful neat shortcuts for traversing in Bash command line :)

Command Editing Shortcuts

  • Ctrl + a – go to the start of the command line
  • Ctrl + e – go to the end of the command line
  • Ctrl + k – delete from cursor to the end of the command line
  • Ctrl + u – delete from cursor to the start of the command line
  • Ctrl + w – delete from cursor to start of word (i.e. delete backwards one word)
  • Ctrl + y – paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
  • Ctrl + xx – move between start of command line and current cursor position (and back again)
  • Alt + b – move backward one word (or go to start of word the cursor is currently on)
  • Alt + f – move forward one word (or go to end of word the cursor is currently on)
  • Alt + d – delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
  • Alt + c – capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
  • Alt + u – make uppercase from cursor to end of word
  • Alt + l – make lowercase from cursor to end of word
  • Alt + t – swap current word with previous
  • Ctrl + f – move forward one character
  • Ctrl + b – move backward one character
  • Ctrl + d – delete character under the cursor
  • Ctrl + h – delete character before the cursor
  • Ctrl + t – swap character under cursor with the previous one

Command Recall Shortcuts

  • Ctrl + r – search the history backwards
  • Ctrl + g – escape from history searching mode
  • Ctrl + p – previous command in history (i.e. walk back through the command history)
  • Ctrl + n – next command in history (i.e. walk forward through the command history)
  • Alt + . – use the last word of the previous command

Command Control Shortcuts

  • Ctrl + l – clear the screen
  • Ctrl + s – stops the output to the screen (for long running verbose command)
  • Ctrl + q – allow output to the screen (if previously stopped using command above)
  • Ctrl + c – terminate the command
  • Ctrl + z – suspend/stop the command

Bash Bang (!) Commands

  • !! - run last command
  • !blah – run the most recent command that starts with ‘blah’ (e.g. !ls)
  • !blah:p – print out the command that !blah would run (also adds it as the latest command in the command history)
  • !$ – the last word of the previous command (same as Alt + .)
  • !$:p – print out the word that !$ would substitute
  • !* – the previous command except for the last word (e.g. if you type ‘find some_file.txt /‘, then !* would give you ‘find some_file.txt‘)
  • !*:p – print out what !* would substitute
Source: http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/ http://www.ice2o.com/bash_quick_ref.html

jQuery: Select a radio button by name and value

Using jQuery, if you want to select a specific radio button based on name and value
 $(':radio[name="radioBtnName"][value="radioValue"]');  
Example:


<div id="radioGrps">  
   <div id="setOne">  
       <input type="radio" name="orange" value="5" />  
       <input type="radio" name="orange" value="10" checked />  
       <input type="radio" name="orange" value="20" />  
   </div>  
   <div id="setTwo">  
      <input type="radio" name="peach" value="10" />  
      <input type="radio" name="peach" value="15" />  
      <input type="radio" name="peach" value="20" checked />  
  </div>  
 </div>  

In the above example, if you want to select radio button in div#setOne with value 10, then

$('#setOne :radio[name="orange"][value="10"]');  
 or  
 $(':radio[name="orange"][value="10"]');  
 //to make it checked  
 $(':radio[name="orange"][value="10"]').attr('checked', 'checked');

Python contextlib for Timing Python code

If you've ever found yourself needing to measure the execution time of specific portions of your Python code, the `contextlib` module o...