அக்டோபர் 29, 2010

ஜாவா எளிமையாய் கற்க ஒரு இலவச PDF மின்-புத்தகம்

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


- ஜாவா பயணம் தொடரும்

அக்டோபர் 20, 2010

எக்லிப்ஸ் - ஆண்ட்ராய்ட் - XML பிழை செய்தி

எக்லிப்ஸ் புதிய பதிப்பில் ஆண்ட்ராய்ட் xml கோப்புகளில் பணியாற்றும்போது அடிக்கடி ஒரு பிழைசெய்தி வந்து எரிச்சலூட்டும்.





முதல்முறை இந்த பிழை செய்தியை பார்த்தபோது நிறுவதலில் ஏதேனும் குறை நேர்ந்துவிட்டதோ என நினைத்தேன். 

இணையத்தில் தேடிய போது இது எக்லிப்ஸ் ஹீலியோஸில் பணியாற்றும் அனைவருக்கும் வரும் பிரச்சனைதான் எனக் கண்டுகொண்டேன்.

இதை களைவதற்கு இணையத்தில் கண்டறிந்த இரண்டு தீர்வுகள்
  1. xml கோப்பை(file) வலது க்ளிக் செய்து Open with Android XML editor என்பதை தேர்வு செய்ய வேண்டும்.
  2. மற்றொன்று xml root tagல் namespace attribute கொடுப்பது
           xmlns:android="http://schemas.android.com/apk/res/android" >
 

இரண்டாவது வழி எனக்கு நன்றாக வேலை செய்தது.

சும்மாயில்லாமல் துறுதுறுவென அனைத்தையும் க்ளிக்கிப் பார்க்கும் என் வழக்கத்தால் எனக்கு ஒரு தீர்வு கிடைத்தது.

XML கோப்பை (strings.xml) Resources tabல் திறந்து கொள்ளவும்.  மேல் வலது மூளையில் இருக்கும் ஐகானை சொடுக்குங்கள்.  பிரச்சனை தீர்ந்து விட்டது, இனி எந்தத் தொல்லையுமில்லாமல் xmlல் எடிட் செய்யலாம்.








இந்த பதிவின் ஆங்கிலப் பதிப்பைக் காண
http://androidorigin.blogspot.com/2010/10/simple-solution-to-get-rid-off-null.html

அக்டோபர் 16, 2010

MySQL Database எளிமையாகக் கையாள MySQL Query Browser

MySQL என்பது ஒரு database (தரவுதளம்) ஆகும்.  Databaseல் நமக்குத் தேவையான தகவல்களை வைத்துக் கொண்டு வேண்டிய நேரத்தில் அதை அணுகிப் பெற்றுக் கொள்ளலாம்.  உங்கள் வீட்டு மின்சார கட்டணத்தையோ, தொலைபேசி கட்டணத்தையோ செலுத்த செல்கிறீர்கள். அங்கு computerல் (கணினி) உங்கள் கட்டண billல் உள்ள எண்ணை உள்ளீடு செய்வதைப் பார்த்திருக்கிறீர்களா? அது அவர்களுடைய databaseல் பதிவாகிறது.  FMல் (பன்பலை) கேட்டவுடன் பாட்டு போடுவது, சமையல் எரிவாயு வேண்டி தொலைபேசியில் பதிய உங்கள் எண்ணை சொன்ன உடனேயே உங்கள் பெயரைச் சொல்லி வியப்படையச் செய்வது அத்துனையும் அதிவேகமாகத் தகவல்களைத் தரும் databaseஆல்தான்.  கல்லூரி பாடத்திட்டத்திலும் இது ஒரு தவிர்க்க முடியாத, கட்டாயம் கற்க வேண்டிய பாடமாகும்.

நிறைய கல்லூரிகளில் அதிகளவில் தகுந்த உரிமமில்லாமல் ஆயிரக்கணக்கான விலையுடைய காப்புரிமை மென்பொருட்களை பயன்படுத்துகின்றனர்.  DBMS Database Managaement System பாடத்தில் செய்முறைப் பயிற்சியும் (practical) கட்டாயம் இருக்கும்.  Database என்பது ஒரு பொதுவான பாடத்திட்டம்.  Databaseல் உள்ள தகவல்களை கேட்டுப் பெறுவதற்கு ஒரு மொழி உண்டு.  அதுதான் SQL Structured Query Language.  SQL வழியாகத்தான் அனைத்து தகவல்களையும் உள்ளீடு செய்வதிலிருந்து, அதை பராமரிப்பது, மேம்படுத்துவது, தகவல்களை கேட்டுப் பெறுவது என அனைத்து வேலைகளையும் செய்கிறோம்.  இதன் சாராம்சம் பெரும்பாலும் அனைத்து databaseகளிலும் ஒரே மாதிரித்தான் இருக்கும்.  அப்படி இருக்கையில் ஏன் ஒரு குறிப்பிட்ட மென்பொருளை மட்டும் பயன்படுத்த வேண்டும். எடுத்துக்காட்டிற்கு Oracle database இல்லாத கல்லூரியையோ, பல்கலைக்கழகத்தையோ காண்பது அரிது.  Oracleலிலும் இலவசப் பதிப்பு இருக்கிறது, நாம் அதையா பயன்படுத்துகிறோம்.  நாம் பயன்படுதுவதெல்லாம் தொன்றுதொட்டு பயன்படுத்திவரும் Oracle Personal edition 7 தானே. இது இலவச பதிப்பு இல்லை. உங்களுக்கு ஆரக்கிள்தான் பயன்படுத்த வேண்டுமென்றால் Oracale Xpress Edition பயன்படுத்தவும். இது விண்டோஸ் OSற்கு (இயங்குதளம்) மட்டுமல்லாமல் லினக்சுக்கும் கிடைக்கும்.

மாணவர்களின் பயிற்சிக்கு ஆரக்கிள்தான் பயன்படுத்த வேண்டும் என்பதில்லை.  Open Source (திறமூல மென்பொருள்) databaseகளையும் பயன்படுத்தலாம்.  இவற்றில் முக்கியமான இரண்டு databaseகள் MySQLலும், Postgree SQLலும்.  MySQL தற்போது ஆரக்கிள் வசம் இருக்கிறது.  Postgree SQL முழுக்க முழுக்க சுதந்திரமாகப் பயன்படுத்தலாம்.  MySQL ஏற்கனவே அதிகளவில் பயன்பாட்டுக்கு வந்ததால் அதனை எளிமையாக நிர்வகிக்க பல தரமான applications (மென்கலம்) உள்ளன.



Project செய்யும் மாணவர்களிடம் அடிக்கடிக் கேட்கப் படும் கேள்வி என்ன Frontend? எந்த Backend? பயன்படுத்துகிறாய் என்பதுதான்.  Frontend என்பது தகவல்களை சாதாரண பயனாளார் எளிமையாக (user friendly) உள்ளீடு செய்வதற்காக வடிவமைப்பது.  Backend என்பது பின்புலத்தில் என்ன database பயன்படுத்துகிறோம் என்பதைக் குறிக்கிறது.  அதுசரி projectற்கு frontend வடிவமைப்பது இருக்கட்டும்.  பின்புல databaseஐ வடிவமைப்பதற்கு நமக்கொரு frontend இருந்தால் எப்படியிருக்கும். Databaseல் தகவல்கள் Tableகளில் சேமிக்கப் படுகிறது.  இந்த tableகளை வடிவமைப்பதே போதும் போதுமென்றாகி விடும். இந்த வடிவமைப்புகளை எளிமைப் படுத்த தற்போது வரும் அனைத்து databaseகளிலும் (MS Access, MySQL, Microsoft SQLServer, Oracle, SQLite...) tableகளை எளிமையாக வடிமைக்கவும், அதில் எளிதாக தகவல்களை உள்ளீடு செய்யவும், நமக்கு வேண்டிய SQL queryகளை வடிவமைக்கவும் ஏகப்பட்ட வசதிகள் இருக்கின்றது.


எடுத்துக்காட்டிற்கு MySQL databaseக்கு உள்ள ஒரு visual toolஐ காண்போம்.  MySQL பயன்படுத்தும் அனைவரும் கட்டாயம் MySQL Query Browserஐயும் பயன்படுத்துங்கள். எழுத்தில் தரும் விளக்கதைவிட ஒரு படம் எளிதாகச் சொல்ல வேண்டியதை சொல்லிவிடும் என நினைக்கிறேன். கீழ்காணும் MySQL Query Browser படங்களைக் காணுங்கள். நீங்கள் விண்டோசிலோ, லினக்சிலோ இந்த tool பயன்படுத்தாமல் MySQLஐ command promptட்டிலும், terminalலிலும் பயன்படுத்துவராக இருந்தால் உடனே உங்களிடம் அவசியம் இருக்க வேண்டிய இந்த மென்பொருளை install செய்து கொள்ளுங்கள்







அக்டோபர் 09, 2010

சமீபமாக தொடராத ஒரு ஜாவா தொடர்

ஜாவாவில் எனக்குப் புரிந்ததை பகிர்ந்து கொள்கிறேன்.  சில விஷயங்களை நான் தவறாகவும் புரிந்து கொண்டிருக்கலாம் எனவே புத்தங்களில் மேலும் படித்து நன்கு தெரிந்து கொள்ளவும்.

ஜாவா புரோகிராமிங் மொழியில் classes இன்றியமையாதது.  ஒவ்வொரு ஜாவா புரோகிராமிலும் ஒரு classஆவது இருக்கும்.  நிறைய classகளை ஒரே ஜாவா fileலிலும் (.java) அடைக்கலாம் அல்லது வெவ்வேறு ஜாவா fileகளிலும் வைத்துக் கொள்ளலாம்.

நினைவில் வைத்துக் கொள்ளுங்கள்
  • ஒரு ஜாவா fileல் ஒரே ஒரு public classதான் இருக்கும்.
  • ஜாவா file பெயரும் public classன் பெயரும் ஒன்றாக இருக்க வேண்டும். 
 எடுத்துகாட்டிற்கு உங்கள் public classன் பெயர் HelloWorld என வைத்துக் கொண்டால் கட்டாயம் அதை HelloWorld.java எனத்தான் சேமிக்க வேண்டும்.  Elcipse IDE மூலம் ஜாவா புரோகிராமிங் செய்பவர்களுக்கு இந்த பிரச்சனை இல்லை.

ஜாவா ஒரு Object Oriented புரோகிராமிங் மொழி. எனவே எல்லாமே objectடாகத் தான் நடத்தப் படுகிறது.  ஒரு object எதை வேண்டுமானாலும் குறிக்கலாம். ஒரு உயிரனத்தையோ (Person, Animal, Parrot..), உயிரற்ற பொருளையோ (Car, Chair..) ஒரு கருத்தையோ (Account, Insurance...) என எதை வேண்டுமானாலும் குறிக்கலாம்.  ஒவ்வொரு objectடிற்கும் அதற்கே உரிய பண்புகள் (properties) இருக்கும், அவை புரியும் செயல்கள் (methods) இருக்கும்.  அவற்றை எப்படி பயன்படுத்த வேண்டும் என்பதைத்தான் நன்கு தெரிந்து கொள்ள வேண்டும்.  அதாவாது அவை பொதுவான பண்புகளா, அல்லது ஒவ்வொரு objectடிற்கும் உரிய தனித்தன்மையான் பண்புகளா என்பதையெல்லாம் பார்க்க வேண்டும்.  எடுத்துகாட்டிற்கு வங்கி கணக்குக்கான புரோகிராமை எடுத்துக்கொள்ளுங்கள்.  ஒவ்வொரு வாடிக்கையாளருக்கும் ஒரு கணக்கு இருக்கும்.  இதை புரோகிராமிங் மொழியில் புரிந்து கொள்ள ஒவ்வொரு Customer objectடிற்கும் ஒரு account இருக்கும்.  இந்த Accountம் ஒரு objectதான்.  இதை புரோகிராமிங் சொல்லில் Associativity என்கிறார்கள். Associativity என்பது ஒன்றோடு ஒன்றிருக்கும் தொடர்பினைக் குறிக்கிறது.  ஒரு வாடிக்கையாளருக்கு ஒரு கணக்கு. (one Customer associated with one account).

ஒரு வாடிக்கையாளரின் கணக்கை வேறொருவர் அணுகக் கூடாது.  இந்த பாதுகாப்பு முறைகளுக்கு புரோகிராமிங்கில் செயல் வடிவம் கொடுக்கத்தான் Access specifiers உள்ளன.  Acsess specifiers என்பது ஒன்றை அணுகுவதற்கு உள்ள குறிசொற்கள்.  public, protected, private என்பவை access specifierகளே.  default என்றொரு access specifier உள்ளது.  நீங்கள் எந்தவொரு அணுகுமுறைக்கான குறிச்சொற்களையும் தரவில்லை என்றால் அவை தன்னியல்பாக default access என எடுத்துக் கொள்ளப்படும்.

சென்ற மாதம் முழுவதும் projectல் மும்முரமாக இருந்தால் பதிவுகளை வெளியிட முடியவில்லை.  மற்ற பணிகளை முடிக்கவே நேரம் போதாததால் பதிவெழுதுவது கிடப்பில் போடப்பட்டது. ஜாவாவில் எனக்கு அவ்வளவு பரிட்சயம் இல்லை என்பதுதான் உண்மை. (அடப்பாவி!..:)

கீழ்வருவது இந்த ஜாவா தொடருக்காக எழுதிய ஒரு குட்டி புரோகிராம்.  பதினைந்து நாட்களுக்கு முன்னரே எழுதியது. இருக்கும் வேலைப் பளுவில் மறந்தே விட்டேன்.  விளக்கம் அடுத்தடுத்த பதிவுகளில் வரும். comment வரிகளைப் படித்து புரிந்து கொள்ளவும்.

முன்குறிப்பு:  
கீழ்வரும் கோடிங்கை அப்படியே காப்பி செய்யாதீர்கள்.  மேல் வலது மூலையில் இருக்கும் ஐகானை சொடுக்கவும்.





/** @author Rajkumar Ravi
    source: tamilcpu.blogspot.com
*/
//this program will not compile since this is having errors(intentional)
//only one public class permitted in a java file
public class Test { 
 public static void main(String[] args) {
  //create an object instance for non-static class to access its members
  System.out.println(new Test2().i);
  
  Test2 testObj;    //testObj is just an object reference for Test2 class
  testObj = new Test2();  //creating actual object/instance for target class  
  int y = testObj.i + 5;
  
  //members of a static class can be accessed without creating an instance for it
  System.out.println(Test4.name); 
  
  //private members cannot be accessed outside its declared class
  System.out.println(new Test2().ch);
 }  
}
//this is a non-static class so members of this class can only accessed through its instance
class Test2 {      
  int i=5; private char ch='u'; 
}
//to write a static class declare static variables or static methods inside a class
static class Test3 { } // wrong

//this is a static class because it contains a static member
class Test4 {
 static String name;
}
உங்களுக்கு தவறு எனப்பட்டதை கண்டிப்பாக சுட்டிக்காட்ட வேண்டும். எவருக்கேனும் தவறான தகவல் சென்றடைந்தால் இந்த பதிவுகளின் நோக்கமே தவறிவிடுமென ஐயப்படுகிறேன். 

முப்பது நண்பர்களிடம் எடுத்தக் கருத்துக் கணிப்பில் 27 நபர்கள் தமிழில் படிப்பது மண்டை காய்கிறது என முடிவு சொல்லியிருக்கிறார்கள்.  கணித்தமிழின் முயற்சியில் இவன் (ராஜ்குமார்) தோல்வியடைந்ததை ஒப்புக் கொள்கிறேன். இனி கணினித்துறை வார்த்தைகள் அனைத்தும் இந்த வலைப்பதிவில் ஆங்கிலத்திலேயே குறிக்கப்படும்.  

மேலும் ஒரு தகவல் நான் j2eeயிலிருந்து Android Mobile application developmentட்டிற்கு மாறி விட்டேன். இனி என் பணி முழுவதும் Androidல்தான் இருக்கும், ஜாவா தொடரினை அது பாதிக்காது என்பதையும் தெரிவித்துக் கொள்கிறேன்.  Androidல் எழுதிப் பார்த்த குட்டி குட்டி புரொகிராம்களை http://androidorigin.blogspot.com ல் நண்பனுடன் சேர்ந்து ஆங்கிலத்தில் எழுதப் போகிறேன்.  தேவையிருப்பின் அதன் தமிழ் மொழியாக்கங்களை இங்கு பதிவிட்டுக் கொள்வோம். 

கணினி கலைச்சொற்களை தமிழில் பயன்படுத்துவதுதான் சிரமமாக இருக்கிறது, முடிந்தளவு மற்ற சொற்றொடர்களையாவது தமிழில் அமைக்க முயற்சிப்போம்.   நானும் முயற்சிக்கிறேன்.

-தொடரும்.