Sharing files between Linux and Windows

If you are running a guest and host operating systems, many a times you would like to share some drives or directories between them.  It may be to share some documents or data or text files, etc.  And to share a directory (example, C:/Share/Edu) between Windows XP host and Ubuntu guest OS you can do the following.

1. First allow for sharing on Windows by right click on the directory of interest (say, C:/Share/Edu) and select “Sharing And Security…” and it will bring up “Edu Properties” window.  Select Sharing tab and set “Allow this number of users” to 2 or the number you like.  Since the sharing is between guest and host OSes, setting it to 2 will suffice.

  In Windows Explorer > Go to C:/Share/Edu > Right click and select “Sharing And Security” > (In new window) > Select “Sharing” tab > Set “Allow this number of users” radio button value to “2”

2. Assuming you have already installed Ubuntu (version 9 or above), go to System > Administration > Synaptic Package Manager as shown below which will bring up new window and look for smbfs (Samba File System) and choose it for download.  Ubuntu will automatically select other packages that are needed for this package.
Note: You need to have sudo authority (or root privileges) to download and install a package.

3. Once done bring up a terminal on Ubuntu and run

hadoop@ubuntu> sudo -s  (if you are not root already)
root@ubuntu> mkdir /mnt/win_edu
root@ubuntu> mount -t smbfs -o username=YOUR_WINDOWS_USER_NAME //WINDOWS_HOSTNAME/Edu /mnt/win_edu
Password: ENTER_PASSWORD
# Replace YOUR_WINDOWS_USER_NAME, WINDOWS_HOSTNAME and ENTER_PASSWORD appropriately.
# This will mount windows shared "Edu" directory on to /mnt/win_edu mount point.
#  NOTE: Instead of "smbfs" option above you can also use "cifs - Common Internet File System" supported by Samba, Windows 2000, XP, etc.

4. Change directory to /mnt/win_edu from Ubuntu terminal and you should see all windows files in Edu directory.  You can also check all mounted directories by running

root@ubuntu> mount

5. After you are done to unmount the file system simply run

root@ubuntu> umount -v -d /mnt/win_edu

Or if you just want to copy files between two systems use WinSCP freeware.  Get the guest IP address by running ifconfig and look for “inet addr”, then connect to it from WinSCP.

hadoop@ubuntu> ifconfig
eth1 Link encap:Ethernet HWaddr 00:0c:29:f7:a0:41
inet addr:10.15.14.107 Bcast:10.15.15.255 Mask:255.255.254.0

Cheers,
Shiva

Beauty of 99 Bottles of Beer in Perl

Perl is well known for allowing a software developer to express the solution in more than one way. And it can be harnessed to be as creative or cryptic as one likes to be. Here is one example I saw sometime back on http://99-bottles-of-beer.net/language-perl-737.html

Run the program as:

#!/usr/local/bin/perl


''=~( '(?{' .('`' |'%') .('[' ^'-')
.('`' |'!') .('`' |',') .'"'. '\\$'
.'==' .('[' ^'+') .('`' |'/') .('['
^'+') .'||' .(';' &'=') .(';' &'=')
.';-' .'-'. '\\$' .'=;' .('[' ^'(')
.('[' ^'.') .('`' |'"') .('!' ^'+')
.'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.'
).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/'
).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')).
'\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").(
'{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'.
('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").(
'`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')).
'\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')).
'+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").(
'`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").(
'{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^
'[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"|
')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^
'.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^
'+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").(
'`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';

It produces output like:

99 bottles of beer on the wall, 99 bottles of beer!
Take one down, pass it around,
98 bottles of beer on the wall!

98 bottles of beer on the wall, 98 bottles of beer!
Take one down, pass it around,
97 bottles of beer on the wall!

97 bottles of beer on the wall, 97 bottles of beer!

It is a beauty!


Another one in Perl ( http://99-bottles-of-beer.net/language-perl-658.html )

#!/usr/local/bin/perl
# Copyright 2001 Christopher J. Carlson
# All Rights Reserved

$a=
"cpuu
\bmft p
\bg cff
\bs";$b
="po ui
\bf xbm
\bm";$c="
Ypv ublf p
\bof epxo qb
\btt ju bspvoe";
$a =~ s/\n//;$a =~
s/\s+/ /g; $b =~
s/\n// ; $b =~
s/\s+/ /g;$c =~
s/\n// ; $c =~
s/\s+/ /g;$a =~
y/b-z/a-z/;$b =~
tr/b-z/a-z/;$c =~
tr/b-z/a-z/ ; for(
$d=100;$d>0;$d--){
print"$d $a $b $d"
;print" $a,\n$c, "
;print($d-1);print
" $a $b.\n";} $x =
"cjc"; $y="dobbz";
$z="com";print"\n"
;print "- $x\@$y."
;print"$z \n\n";

If you write it in more readable format, it would be

$a = "cpuu \bmft p \bg cff \bs";
$b = "po ui \bf xbm \bm";
$c = "Ypv ublf p \bof epxo qb \btt ju bspvoe";

$a =~ s/\n//;
$a =~ s/\s+/ /g;
$b =~ s/\n// ;
$b =~ s/\s+/ /g;
$c =~ s/\n// ;
$c =~ s/\s+/ /g;

$a =~ y/b-z/a-z/;
$b =~ tr/b-z/a-z/;
$c =~ tr/b-z/a-z/;
for( $d=100;$d>0;$d--) {
print"$d $a $b $d";
print" $a,\n$c, ";
print($d-1);
print " $a $b.\n";
}
$x = "cjc";
$y="dobbz";
$z="com";
print"\n";
print "- $x\@$y.";
print"$z \n\n";

It is a very simple program and all that is needed to produced the required output is done in “for” loop. All the substitutes (6 lines of code “s//;” is redundant and seem to be added to make a bottle shaped code. First 3 lines of code ($a, $b, $c) are simply a ASCII next letter of the original lines, meaning, “b” written as “c”, “t” as “u” and then translated back to original lines through “y/” and “tr/” Perl functions. $x,$y,$z are author email address.


A version in Python ( http://99-bottles-of-beer.net/language-python-808.html )

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
99 Bottles of Beer (by Gerold Penz)
Python can be simple, too 🙂
"""

for quant in range(99, 0, -1):
if quant > 1:
print quant, "bottles of beer on the wall,", quant, "bottles of beer."
if quant > 2:
suffix = str(quant - 1) + " bottles of beer on the wall."
else:
suffix = "1 bottle of beer on the wall."
elif quant == 1:
print "1 bottle of beer on the wall, 1 bottle of beer."
suffix = "no more beer on the wall!"
print "Take one down, pass it around,", suffix
print "--"

Python code is pretty straight forward and self explainatory.


One of the simplest one – just grab the lyrics from the website 🙂
( http://99-bottles-of-beer.net/language-python-931.html )

#!/usr/local/bin/python
'''A more interesting way to get the lyrics to "99 Bottles of Beer on the Wall", in Python. Is this considered cheating?'''

import re, urllib
print re.sub('

', '', re.sub('
|

|
|
','\n', re.sub('No', '\nNo',
urllib.URLopener().open('http://www.99-bottles-of-beer.net/lyrics.html').read()[3516:16297])))



Hope you enjoyed it.
Shiva