Monday, July 22, 2013

Switching to Linux & Recording with Kazam is cool

I realized that my laptop is aging and couldn't bear the load of running Windows which consumes lot of resources and softwares are also resource-hungry, now a days. To blow some breathe into my laptop, I decided that I'll switch to Linux.

It is not tough to switch as Linux is equally good as Windows, actually better and provides more out of your computer, though you may miss writing VB-based Macros in your MS Office to make your day-to-day task easy. Anyway, it supports writing Macros in Python. Learning new language is good, Btw :-)

I have chosen Ubuntu 12.04 LTS to minimize the Upgrade headache for quiet some time. But, unfortunately I couldn't continue to use it as the Unity Desktop is not really fast as GNOME (Yes, I have previous experience in Linux). So, I switched to LinuxMint 13, a LTS Version with MATE Desktop (which is based on GNOME).

Like every other Java developer, I started installing basic things like JDK, Maven, Eclipse and few more libraries for my work. I find that my laptop is really fast running Mint when compared to Windows. My Eclipse used to show me the Empty Window Frame when I run few Apps alongside it in Windows. But, now - I'm able to run Eclipse with an App Server and the Eclipse response is far smoother in Mint.

I had a need to record a screencast for how to run an application and now I started searching for Screen Recording softwares. I used "CamStudio" when I ran Windows. But, it doesn't support Linux. Mint's Software Manager came to help. I just browsed into "Sound & Video" Category and found "Kazam". It is far better than CamStudio as it works like Charm, which supports MP4 recording format with greater quality.

It is good that I got rid of MS and stuff related to them. My Laptop is breathing easy now :-)

Here are the links to things I have wrote about in this post, If at all, it could be of any help to people.

Ubuntu - http://www.ubuntu.com/desktop
Linux Mint - http://www.linuxmint.com/
CamStudio - http://camstudio.org/
Kazam - https://launchpad.net/kazam

Wednesday, July 3, 2013

Using pipes for creating crontab entries

We can add crontab entry using the following command

echo "0 0 * * * CmdToBeExecuted" | crontab

But, this will remove all existing crontab entries and add this new entry alone. I realized this when none of my other cron based things doesn't work.

Here is the correct way to add a crontab entry.

crontab -l > crontab_entries.txt
echo "Cron_Entry_Text" >> crontab_entries.txt
cat crontab_entries.txt | crontab

Check by listing the crontab entries

crontab -l

Now, if your crontab already has your script and you want to update it, filter it out and then do an update.

crontab -l | grep -v "ScriptName" > crontab_entries.txt
echo "Cron_Entry_Text" >> crontab_entries.txt
cat crontab_entries.txt | crontab

This will filter out your existing crontab entry, so you don't add a duplicate entry. But, be sure that your grep matches only the correct ones that you want to update.

Here is the quick way to remove a crontab entry.

crontab -l | grep -v "ScriptTobeRemoved" | crontab

I have made this post for recording a learning. Hope, this will be helpful for someone someday.

Tuesday, December 4, 2012

Reverse Words In A Char Array - Java

I'm back again with a Java post in my blog :-)

Recently I came across an interview question - "Given a statement in char[], reverse the order of words in that statement without using any extra temporary char[] or String functions". Here is my solution for this question.

There will be N - 1 Runs for reversing a statement which has N words in it.

1st Run will move the First word in statement to make it as Last Word and move the remaining space from first position before the word just moved.

2nd Run will move the now First word in statement to make it as 2nd last word and the remaining space from first position before the word just moved.

So, (N-1)th Run will move the now First word in statement to make it as Nth last word (i.e., Second Word) and the space before it from first position. 

public class ReverseStatement {


private static final char WORD_DELIMITER = ' ';

public static void main(String[] args) {
char[] input = "One Two Three Four".toCharArray();
System.out.println(input);
new ReverseStatement().reverse(input);
System.out.println(input);
}

int wordsLength[];

public synchronized void reverse(char[] input) {

if (input == null) {
throw new NullPointerException("input");
}

if (input.length == 0) {
throw new IllegalArgumentException("input is empty");
}

if (input[0] == WORD_DELIMITER || input[input.length - 1] == WORD_DELIMITER) {
throw new IllegalArgumentException(
"input must not start or end with SPACE");
}

countAndUpdateWordsLength(input);

int newPosition = input.length;
for (int run = 1; run < (wordsLength.length); run++) {
newPosition = newPosition - wordsLength[run - 1];
shiftFirstNCharsTo(input, wordsLength[run - 1], newPosition);
shiftFirstNCharsTo(input, 1, --newPosition);
}
}

private void countAndUpdateWordsLength(final char[] input) {
int wordCount = 0;

// Loop to identify the total number of words.
int lastSpaceAt = 0;
for (int i = 0; i < input.length; i++) {

if (input[i] == WORD_DELIMITER) {
wordCount++;
if (lastSpaceAt == (i - 1)) {
throw new IllegalArgumentException(
"Continuous Spaces Detected " + i + ", " + lastSpaceAt);
}
lastSpaceAt = i;
}
}

// Incrementing by 1 for last word in input
wordCount++;

wordsLength = new int[wordCount];
int wordNumber = 0;
int eachWordLength = 0;

// Loop to count each word's length
for (int i = 0; i < input.length; i++) {
if (input[i] == WORD_DELIMITER) {
wordsLength[wordNumber] = eachWordLength;
eachWordLength = 0;
wordNumber++;
continue;
}
eachWordLength++;
}
wordsLength[wordNumber] = eachWordLength; // For the last word
}

private static void shiftFirstNCharsTo(char[] input, int n, int newPosition) {
if (newPosition + n > input.length) {
throw new RuntimeException("Cannot move to " + newPosition);
}
for (int x = n - 1; x >= 0; x--) {
int targetPosition = newPosition + n - 1;
for (int y = x; y < targetPosition; y++) {
char t = input[y];
input[y] = input[y + 1];
input[y + 1] = t;
}
newPosition--;
}
}
}

Output:
One Two Three Four
Four Three Two One

If you find any bug or improvement area, please comment.

Friday, August 17, 2012

Indian History - British Strategy to Keep India Divided

Read a good book and wanted to share a page from it... (In Tamil)

வரலாறு அபாயகரமானது. பிசாசாக உருமாறி மக்களை ஆட்கொண்டு ஆட்டிப்படைப்பது. நம் நாட்டின் வரலாறு என்னும் பெயரில் எழுதப்பட்டிருப்பது, பரப்பப்படுவது பெரும்பாலும்கடந்த காலத்தின் உண்மையான சித்தரிப்பு அல்ல. எழுதுபவர்களின் கண்ணோட்டத்திற்கு ஏற்ப, அவர்களது குறுகிய சாதி, சமய, அரசியல் தேவைகளுக்கு ஏற்றவண்ணம் திரித்து, மறைத்து, கூட்டிக்கழித்து எழுதப்பட்டிருப்பது. சமுதாயப் பொறுப்புணர்வு இல்லாமல், தங்கள் துவேஷங்களையே வண்ணக் கலவையாக்கி வரலாற்றைத் தீட்டியிருக்கிறார்கள் பல மேதாவிகள்.

‘நம் நாட்டில் இந்துக்களும் முஸ்லிம்களும் இருவேறுபட்ட இனங்கள், வேறுபட்ட கலாச்சாரங்களைச் சேர்ந்தவர்கள்… அவர்களிடையே பாலமிட முடியாத பிளவுகள் காலங்காலமாக இருந்திருக்கின்றன…’ என்பவை போன்ற மதவாதக் கருத்துகள் இத்தகைய வக்கரித்த வரலாற்றின் வார்ப்புகள் தாம்.

ஆங்கிலேயர் ஆட்சிக் காலத்தில் நம் நாட்டின் வரலாறு சொல்லொணாச் சிதைவுக்கு உள்ளாயிற்று. தங்கள் ஆதிக்கத்துக்கு உட்பட்ட மக்களைப் பிரித்தாளும் ராஜதந்திரத்தின் அற்புதக் கருவியாக வரலாற்றை ஆங்கிலேயர் பயன்படுத்தினர். பிரிட்டிஷ் சாம்ராஜ்யத்தின் மகோன்னதத்தை வலியுறுத்த, அதற்கு முன்னர் முஸ்லிம்கள் ஆண்ட காலத்தை இருண்டகாலமாகச் சித்தரித்தனர். முஸ்லிம் மன்னர்களைக் கொடுங்கோலர்கள் என்றும் கொள்ளைக்காரர்கள் என்றும் மதவெறியர்கள் என்றும் இந்தியக் கலாச்சாரத்தைச் சீரழித்தவர்களென்றும் காட்டி, அவர்களது கொடிய ஆதிக்கத்திலிருந்து இந்துக்களை மீட்கவந்த ரட்சகர்களாகவும் கருணா மூர்த்திகளாகவும் தங்களைச் சித்தரித்துத் தங்கள் ஆதிக்கத்தை நியாயப் படுத்தினர். திட்டமிட்டு, நாசூக்காக வரலாற்றில் விஷத்தைக் கலந்தனர்.

இப்படி விஷமத்தில் பிறந்த வரலாறு, நம் நாட்டின் சில தலைவர்களுக்கும் மதவாதப் பிரச்சாரகர்களுக்கும் மிகச்சிறந்த கருவியாகப் பயன்பட்டது. இன்று நம் நாட்டில் தலை விரித்தாடிக்கொண்டிருக்கும் மதத் துவேஷமும் நூற்றுக்கணக்கான உயிர்களைக் குடித்துள்ள மதக் கலவரங்களும் இத்தகைய வரலாற்றுத் தத்துவம் மக்களிடையே பரப்பப்பட்டதன்விபரீத விளைவுகள்தாம்.

முஸ்லிம் மன்னர்கள் மதவெறியின் காரணமாக ஆயிரக்கணக்கான இந்துக் கோயில்களை இடித்தார்கள் என்பது இன்று அனைத்து மக்களாலும் நம்பப்படும் ‘உண்மை’யாகிவிட்டது. இதில் ஓரளவு உண்மை இருந்தாலும், அதைச் சரியான கண்ணோட்டத்தில் புரிந்துகொள்ள வேண்டும். பல முஸ்லிம் மன்னர்கள் இந்துக் கோயில்களைக் கட்டியும் உள்ளனர். மகதராஷ்டிரத்தின் மராத்துவாடா இந்து, முஸ்லிம் கலாச்சாரங்கள் பெருமளவு ஒன்றாகக் கலந்த பகுதி. இப்பகுதியில் மிகப் பெரிய மதவெறியராகச் சித்தரிக்கப்பட்டிருக்கும் ஓளரங்கசீப் எண்பதுக்கும் மேற்பட்ட இந்துக் கோயில்களைக் கட்டியுள்ளார். அவர் இப்பகுதியில் கட்டிய மசூதிகளைவிடக் கோயில்கள் தான் அதிகம்.

ஓளரங்கசீப் சதாராவிலிருந்த இந்துக் கோயிலை இடித்தார் என்பது உண்மை. அதற்குக் காரணம் மதவெறியல்ல. அக்கோயிலில்பெருமளவு நிலைபெற்றிருந்த தேவதாசி முறைதான்  காரணம் என டாக்டர். பி.வி. ரானடே என்னும் வரலாற்று அறிஞர் குறிப்பிடுகிறார். ஜெய்னா என்னும் ஊரில் உள்ள கணபதி கோயிலுக்கு ஓளரங்கசீப் தானப் பத்திரம் எழுதி அளித்தார். புனே மாவட்டத்தில் சின்சுவாட் என்னும் இடத்தில் உள்ள கணபதி கோயிலை 16ஆம் நூற்றாண்டில் கட்டியவர் பிஜாப்பூர் சுல்தான் இப்ராஹிம் ஆதில்ஷா. தௌலதாபாத்தில் உள்ள சரஸ்வதி பௌதி என்னும் புண்ணியக் கிணற்றை கி.பி.1335ஆம் ஆண்டு கட்டுவித்தவர் முகமது பின் துக்ளக். இதில் விடுவதற்கான தண்ணீரை  துக்ளக் பிரயாகையிலுள்ள திரிவேணி சங்கமத்திலிருந்து வருவித்தார். டெல்லி சுல்தானிய அரசை நிறுவிய முகமது கோரி வெளியிட்ட ஒரு நாணயத்தில் லக்ஷ்மி உருவமும் மற்றொன்றில் சிவனின் ரிஷப வாகனமும் பொறிக்கப்பட்டிருந்தன.

முஸ்லிம் மன்னர்கள் பலர் இந்துப் பெண்களை – குறிப்பாக ராஜபுதனத்து அரச குடும்பத்துப் பெண்களை – மணந்து கொண்டனர் என்பது நமது பள்ளிகளில் கூடக் கற்பிக்கும் வரலாற்றுப் பாடம். ஆகவே முஸ்லிம் மன்னர் பரம்பரையிலேயே இந்து ரத்தம் கலந்திருந்தது.
இதே போன்று இந்து மன்னர்களும் மசூதிகளை ஆதரித்தனர்.
சிவாஜியின் பேரன் சத்ரபதி ஷாஹூ குல்தாபாத்தில் இருக்கும் ஔரங்கசீபின் சமாதிக்குப் பெருமளவு தானம் அளித்தார் என்பதைப் பத்திரங்களின் ஆதாரத்துடன் ரானடே கூட்டிக்காட்டுகிறார்.
நாம் நினைவில்கொள்ள வேண்டியது இன்னொன்று.
கோயில்கள் இடிக்கப்பட்டதன் காரணம் மதவெறியல்ல. ஆக்கிரமிக்க முற்படும் மன்னர்கள், தங்கள் அதிகாரத்தை நிலைநிறுத்தவும் எதிரியை அவமானப்படுத்தவும் எதிரிநாட்டின் முக்கிய ஸ்தலங்களை நாசப்படுத்துவதைப் பழக்கமாகக் கொண்டிருந்தார்கள். மன்னர்களின் ஆளுமையை நிலைநாட்டும் முக்கியச் சின்னங்களாகக் கோயில்கள் திகழ்ந்தன. ஆகவே தான் தங்கள் பெருமையைப் பறைசாற்ற அரசர்கள் கோயில்கள் கட்டினர். இதன் காரணமாகவே கோயில்கள் அந்நியத் தாக்குதல்களுக்கு முக்கிய இலக்குகளாயின. கோயில்களில் குவித்து வைக்கப்பட்டிருந்த செல்வத்தைக் கொள்ளையடிப்பதும் இதன் நோக்கம். இந்துக் கோயில்களை இடித்துத் தகர்த்த இந்து மன்னர்களும் உண்டு! எதிரி நாட்டு மசூதிகளை இடித்த முஸ்லிம் மன்னர்களும் உண்டு!

நம் நாட்டில் வரலாற்றுக்கான இலக்கணத்துடன் எழுதப்பட்ட முதல் வரலாற்று நூல் என்று கருதப்படுவது கல்ஹனா எழுதிய ராஜதரங்கிணி என்னும்  காஷ்மீரத்தின் வரலாறு.அதில் ஹர்ஷர் என்ற இந்து மன்னர் காஷ்மீரத்தில் உள்ள அனைத்துக் கோயில்களிலும் இருந்த எல்லாத் தெய்வச்சிலைகளையும் நொறுக்கி நாசம் செய்ததாகக் குறிப்பிடப்பட்டுள்ளது. இந்த மன்னரின் அமைச்சரவையில் சிலைகளை உடைப்பதற்காகவும் அவற்றை உருக்கி, விலையுயர்ந்த ஊலோகத்தைச் சேகரிப்பதற்காகவும் தனிப்பொறுப்பு வகித்த இந்து அமைச்சர் ‘தேவோத்பாதநாயகா’ (தெய்வத்திற்குத் துன்பம் விளைவிக்கும் அதிகாரி) எனப் பெயர் கொண்ட ஒருவர் இருந்தார் என்று புகழ்பெற்ற வரலாற்று அறிஞர் கோசாம்பி குறிப்பிடுகிறார்.

மற்றொரு வரலாற்று அறிஞர் ஆர்.எஸ்.சர்மா இன்னொரு உண்மையைச் சுட்டிக்காட்டுகிறார். கஜினி முகமது, கோரி முகமது, தைமூர் ஆகிய முஸ்லிம் மன்னர்கள் இந்நாட்டின் மீது படையெடுத்து வந்து, அக்கிரமங்கள் புரிந்ததைப் பற்றிச் சொல்லும்போது, இதே மன்னர்கள் மத்திய ஆசியாவிலிருந்த முஸ்லிம் ராஜ்யங்களின் மேல் படையெடுத்துச் சென்று, அங்கிருந்த மசூதிகளை நாசம் செய்ததையும் அந்நாடுகளின் முஸ்லிம் மக்களுக்குச் சொல்லொணாத் துன்பங்களை விளைவித்ததையும் மறந்துவிடக் கூடாது எனக் கூறுகிறார். இதே போன்று, இந்து மன்னர்களால் அழிக்கப்பட்ட இந்துக் கோயில்கள், புத்த, ஜைனக் கோயில்கள், குறிப்பாகத் தமிழ் நாட்டிலும் கர்நாடகாவிலும் பல உண்டு. இவர்கள் எல்லோரையும் ஊக்குவித்தது மதவெறியல்ல. அதிகார, ஆக்கிரமிப்பு வெறியேயாகும். அரசியல் வரலாற்றின் இத்தகைய வேட்டைகளுக்கும் கொடுமைகளுக்கும் சுரண்டல்களுக்கும் மதச் சாயம் பூச முயல்வது மக்களைப் பிரித்தாளும் சில்லறைத்தனமாகும்.
நமது கல்லூரிகளிலும் பள்ளிகளிலும் ஆராய்ச்சி நிறுவனங்களிலும் வரலாறு இகழ்ந்து ஒதுக்கப்பட்ட பாடமாகிவிட்டது. ஆனால் வரலாறு இன்றி எந்தச் சமுதாயமும் வாழ இயலாது. கல்வி நிறுவனங்கள் விஞ்ஞானரீதியான வரலாற்றைப் புறக்கணித்ததன் விளைவு மதவாதிகள் இன்று அதை ‘ஹைஜாக்’ செய்யும் நிலை உருவாகிவிட்டது.

- முனைவர் வசந்திதேவி

From Book (சக்தி பிறக்கும் கல்வி - Page 111)