Wednesday, October 17, 2007

நிரல் பராமரிப்பு - 6

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

ஒவ்வொரு திட்டத்தின் சிவிஎஸ்சில் தற்போதைய பதிப்பை உருவாக்கம் கிளையாக ஆக்கி விட வேண்டும். எல்லா கோப்புகளையும் உருவாக்கம் கிளைக்குள் தகவிறக்கி விட்டால் போதும்.

உருவாக்கம் கிளையிலிருந்து புதிதாக உருவான கோப்புகளை அப்படியே சோதனை கிளையில் இருக்கும் ஒவ்வொரு வாடிக்கையாளர் கிளைகளுக்கு இணைத்து (merging) விட வேண்டும்.

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

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

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

ஒரு பிரதியில் மூன்று அடைவுகள் உருவாக்கிக் கொள்ள வேண்டும்.
திட்டம் 3
உரு
சோதனை
பயன்
-வாடி1
- பயன்பாடு
- நிரல் தொகுப்புகள்
- நுட்பக் கோப்புகள்
பயன்பாடு அடைவில் மென்பொருளைப் பயன்படுத்தும் போது பயனர் அணுகும் கோப்புகள் மட்டும் இருக்க வேண்டும். நிரல் தொகுப்புகளில் செயலிகள் (functions), செயலிக்கூட்டுகள் (classes) போன்றவற்றின் தொகுப்புகள் இருக்க வேண்டும். இவை பயன்பாட்டு நிரல்களில் சேர்க்கப் பட்டிருக்க வேண்டும். சேர்க்கப்பட்ட கோப்புகளுக்கான அடைவு இது என்று குறிப்பிட தோதுவாக இருக்கும்.

நுட்பக் கோப்புகளில் தரவுத் தளத்தை உருவாக்கப் பயன்படுத்திய உரைக் கோப்புகள் இருக்கும். தரவுத் தள வடிவமைப்பு ஒரு கோப்பு, கொடாநிலையாக முதலில் போட்டுத் தரும் தரவுகள் ஒரு கோப்பில், தரவுத் தள செயலிகளுக்கு ஒரு தனி அடைவு - அதில் ஒவ்வொரு செயலிக்கும் ஒரு கோப்பு. இப்படிப் போட்டு வைத்து விட்டால் வாடிக்கையாளர் பதிப்புகளுக்கிடையேயான தரவுத் தள மாறுதல்களையும் எளிதாகக் கையாளலாம்.

நிரல் பராமரிப்பு - 5

தொகுப்புக்குள், ஒவ்வொரு திட்டத்துக்கும் ஒரு அடைவு. மொத்தம் 5 திட்டங்கள். ஒவ்வொரு திட்டத்துக்குள்ளும் மூன்று அடைவுகள். dev, test, pro.

தொகுப்பு
- திட்டம் 1
உருவாக்கம்
சோதனை
பயன்
- திட்டம் 2
உருவாக்கம்
சோதனை
பயன்
- திட்டம் 3
உருவாக்கம்
சோதனை
பயன்

என்ற விரிவு.
  • உருவாக்கம் என்பது புதிய கூறுகளை உருவாக்குதல், பெரிய மாற்றங்களை செய்தல் போன்ற வேலைகளுக்குப் பயன்படும்.
  • சோதனையும், பயனும் ஒரே மாதிரி இருக்கும். இரண்டிலுமே தற்போது பயன்பாட்டில் இருக்கும் பிரதிகள் வைத்திருக்க வேண்டும். ஒவ்வொரு வாடிக்கையாளர் பிரதிக்கும் ஒரு கிளை இருக்கும்.
திட்டம் 2
உருவாக்கம்
சோதனை - வாடி 1
வாடி 2
வாடி 3
பயன் - வாடி 1
வாடி 2
வாடி 3

பயன் அடைவில் இருக்கும் குறிப்பிட்ட வாடிக்கையாளர் கிளையிலிருந்து பிரதியை எடுத்துப் பார்த்தால் அது அவர்கள் இடத்தில் ஓடும் நிரலை அப்படியே ஒத்திருக்க வேண்டும்.

வாடிக்கையாளரிடமிருந்து வரும் புகார் அல்லது கோரிக்கைக்கேற்ப நிரலை மாற்றுவதற்கு சோதனைக் கிளையிலிருந்து நிரல் பிரதி உருவாக்கிக் கொள்ள வேண்டும். செய்ய வேண்டிய மாறுதல்களைச் செய்து கோப்பை தொகுப்புக்கு அனுப்புவார் உருவாக்குனர். தொகுப்புக்கு அனுப்பும் போது நமது issue tracker பயன்பாட்டில் வாடிக்கையாளர் கோரிக்கையை உள்ளிடும் போது கிடைத்த கோரிக்கை எண்ணையும் (issue id) குறிப்பிட வேண்டும்.

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

மாறுதலை செய்த ஊழியர் அது பற்றிய விபரத்தை, தொகுப்புக்கு அனுப்பும் போது கிடைத்த மாறுதல் எண்ணைக் (revision no) குறிப்பிட்டு, 'இன்ன கோரிக்கை எண்ணுக்காக, இன்ன மாறுதல் எண்ணில் மாற்றங்களை சோதனைத் தொகுப்பில் சேர்த்திருக்கிறேன்' என்று மேலாளருக்கு மின்னஞ்சல் அனுப்பி விடுவார். அதே தகவல் சோதனை குழுவுக்கும் போகும்.

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

மேலாளர் கோரிக்கை விபரங்களையும், மாறுதல்களையும் சீர்தூக்கிப் பார்ப்பார். எல்லாம் சரிவர இருந்தால், சோதனைக் குழுவின் சோதனை முடிவுகளும் ஒத்துப் போனால் அதே மாற்றங்களை சோதனைக் கிளையிலிருந்து பயன் கிளைக்கு கடத்துவார்.

இது போல மாற்றங்களை எடுத்தல், மாற்றங்களை ஒரு கிளையிலிருந்து இன்னொரு கிளைக்கு அனுப்புதல் போன்ற அன்றாட வேலைகளுக்கான கட்டளைகள் சப்வெர்ஷனில் மிக எளிதாக மாற்றப்பட்டுள்ளன.

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

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

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

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

ஒவ்வொரு திட்டத்தின் சிவிஎஸ்சில் தற்போதைய பதிப்பை உருவாக்கம் கிளையாக ஆக்கி விட வேண்டும். எல்லா கோப்புகளையும் உருவாக்கம் கிளைக்குள் தகவிறக்கி விட்டால் போதும்.

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

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

கடைசியாக பயன் கிளையிலிருந்து ஒரு பிரதியை எடுத்து வாடிக்கையாளர் இடத்தில் மாற்றி விடுவோம். இப்போது எல்லாமே ஒரே நிரல் கட்டுப்பாடு முறைக்குள் வந்து விட்டது. மேலே சொன்ன நடைமுறைப்படி மாற்றங்களை கையாளலாம்.

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

ஒரு பிரதியில் மூன்று அடைவுகள் உருவாக்கிக் கொள்ள வேண்டும்.
திட்டம் 3
உரு
சோதனை
பயன்
-வாடி1
- பயன்பாடு
- நிரல் தொகுப்புகள்
- நுட்பக் கோப்புகள்
பயன்பாடு அடைவில் மென்பொருளைப் பயன்படுத்தும் போது பயனர் அணுகும் கோப்புகள் மட்டும் இருக்க வேண்டும். நிரல் தொகுப்புகளில் செயலிகள் (functions), செயலிக்கூட்டுகள் (classes) போன்றவற்றின் தொகுப்புகள் இருக்க வேண்டும். இவை பயன்பாட்டு நிரல்களில் சேர்க்கப் பட்டிருக்க வேண்டும். சேர்க்கப்பட்ட கோப்புகளுக்கான அடைவு இது என்று குறிப்பிட தோதுவாக இருக்கும்.

நுட்பக் கோப்புகளில் தரவுத் தளத்தை உருவாக்கப் பயன்படுத்திய உரைக் கோப்புகள் இருக்கும். தரவுத் தள வடிவமைப்பு ஒரு கோப்பு, கொடாநிலையாக முதலில் போட்டுத் தரும் தரவுகள் ஒரு கோப்பில், தரவுத் தள செயலிகளுக்கு ஒரு தனி அடைவு - அதில் ஒவ்வொரு செயலிக்கும் ஒரு கோப்பு. இப்படிப் போட்டு வைத்து விட்டால் வாடிக்கையாளர் பதிப்புகளுக்கிடையேயான தரவுத் தள மாறுதல்களையும் எளிதாகக் கையாளலாம்.

நிரல் பராமரிப்பு - 4

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

எங்கள் நிரல் பராமரிப்பு முறையில் சில தடைக்கற்கள்.
  • முதலில் சிவிஎஸ் பயன்பாட்டை எப்படி பயன்படுத்துவது, யார் யார் பயனர்கள், திட்டங்கள் எப்படி வடிவமைக்கப்பட வேண்டும் என்ற தெளிவான திட்டமிடல் இல்லாமல் இருந்தது.
    ஆரம்பித்த காலங்களில் வாடிக்கையாளர்களுக்குத் தனியாக பதிப்பு வேண்டாம் என்று முடிவு செய்திருந்தோம். ஒரு பிரதியில் குறிப்பிட்ட மாறுதல் செய்தால் எல்லா இடங்களுக்கும் அந்த மாறுதலை அனுப்பி விட வேண்டும். எந்த நேரத்திலும் எல்லா வாடிக்கையாளர்களின் பிரதிகளும் ஒரே மாதிரி இருக்க வேண்டும்.

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

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

  • இரண்டாவது காரணம் சிவிஎஸ் என்ற கருவியின் தலைவலிகள். பல ஆண்டுகளுக்கு முன்பு வடிவமைக்கப்பட்ட சிவிஎஸ்ஸைப் பயன்படுத்த நல்ல பொறுமையும், கவனமும் வேண்டும். எல்லோராலும் அதை திறமையாகப் பயன்படுத்தி விட முடியாத அளவுக்கு அதன் கட்டளைகள், அறிக்கைகள் கொஞ்சம் கடுப்பாக இருக்கும். அதனால் கருவி இருந்தும் அடிப்படையாக ஓரிரு பயன்பாடுகளை மட்டுமே பயன்படுத்திக் கொண்டிருந்தோம்.

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

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

அதுதான் திறவூற்று மென்பொருள் உலகின் சிறப்பு. உங்களுக்குப் பிடிக்கா விட்டால், திட்டத்தை நகல் செய்து தனி வழியில் உருவாக்கிக் கொள்ளலாம்.

ஒரு பிற்பகலில் உட்கார்ந்து சப்வெர்ஷன் குறித்துப் படித்து அதன் கட்டளைகளை பயன்படுத்திப் பார்த்தேன். சிவிஎஸ் பயன்படுத்தும் போது, 'இது இப்படி இருந்தால் தோதுவாக இருக்குமே' என்று நமக்குத் தோன்றும் இடத்தில் எல்லாம் அதை மேம்பாடு செய்திருக்கிறார்கள் சப்வெர்ஷனில். அதனால் சப்வெர்ஷனுக்கு மாறி விடலாம் என்று முடிவு செய்தோம். ஒன்றரை மாதக் காலத்தில் புதிய முறைக்கு முற்றிலுமாக மாறி விட வேண்டும்.

இதற்குத் திட்டமிடலையும் நமது தேவைகளுக்கு ஏற்றவாறு செய்து விட வேண்டும்.

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

சப்வெர்ஷனில் திட்டங்கள் (projects), பிரதிகள் (versions), வெளியீடுகள் (releases), கிளைகள்(branches) எல்லாமே அடைவுகள்தான் (directories). நமது நிரல் தொகுப்புகள் அனைத்துமே ஒன்றுடன் ஒன்று தொடர்புடையவை ஆதலால் எல்லாவற்றையும் ஒரே தொகுப்புக்குள் (repository) போட்டு விடலாம் என்று முடிவு.

Friday, October 12, 2007

நிரல் பராமரிப்பு - 3

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

இன்றைக்கு இரண்டு பெரிய, இரண்டு சிறிய என்று நான்கு மென்பொருள் திட்டங்கள்.
  • தோல் பதனிடும் நிறுவனங்களுக்கான திட்டத்தில் கிட்டத்தட்ட இருபது வாடிக்கையாளர் பிரதிகள் அவர்கள் இடத்தில் இருக்கின்றன.
  • காலணி உருவாக்கும் நிறுவனங்களுக்கான திட்டத்தில் 5 பிரதிகள் வாடிக்கையாளர்கள் கணினிகளில் நிறுவியுள்ளோம்.
  • இந்த இரண்டும், புதிதாக ஆரம்பித்துள்ள வேதிப் பொருள் நிறுவனங்களுக்கான திட்டம் மற்றும் வாடிக்கையாளர் பின்னூட்டங்களை சேகரிக்கும் பயன்பாட்டுக்கான திட்டம் ஆக நான்கு திட்டங்களில் பிரதிகள் எங்கள் இணைய வழங்கியிலும் நிறுவியிருக்கிறோம்.
  1. தினமும் அலுவலகத்தில் 10-15 பேர் தேவையான மாற்றங்களைச் செய்ய வேண்டும்.
  2. அந்த மாற்றங்கள் இணையக் கணினிக்கும், வாடிக்கையாளர் இடங்களுக்கும் போய்ச் சேர வேண்டும்.
  3. யாராவது வாடிக்கையாளர் சேவைக்குப் போயிருக்கும் போது சிறு மாறுதல்கள் அங்கு செய்திருந்தால் அந்த மாறுதல் அலுவலகப் பதிப்புகளில் சேர்க்கப்பட வேண்டும்.
  4. சில மாறுதல்கள் குறிப்பிட்ட வாடிக்கையாளருக்கு மட்டும் தேவைப்படுபவை. அவற்றை அவர்களின் பிரதியில் மட்டும் மாற்றி விட்டு மற்ற பிரதிகளில் மாறாமல் வைத்துக் கொள்ள வேண்டும்.
  • இப்போது அலுவலகத்தில் ஒரு கணினியில் cvs பயன்பாட்டை நிறுவியிருக்கிறோம்.
  • ஒவ்வொருவரும் வேலை செய்ய ஒரு பிரதியை எடுத்து வைத்துக் கொள்வார்கள்.
  • தினமும் வேலை ஆரம்பிக்கும் முன்பு மத்திய பிரதியில் ஏற்பட்டுள்ள மாற்றங்களை தமது பிரதிக்கு ஒத்திசைவு செய்து கொள்ள வேண்டும்.
  • தமது மாறுதல்களை அனுப்பும் முன்பு மத்திய பிரதியில் ஏற்பட்டுள்ள மாற்றங்களை தமது பிரதிக்கு ஒத்திசைவு செய்து கொள்ள வேண்டும்.
  • மாற்றங்களை முடித்து தனது பிரதியில் சரியாக இருக்கிறது என்ற பார்த்த பிறகு மாறுதல்களை மத்திய பிரதிக்கு அனுப்பி விட வேண்டும்.
  1. சின்னச் சின்ன வழு சரி செய்தல்களுக்கு (bug fixing) ஒரு மாறா கிளையும் (stable branch), பெருமளவு புதிய மாற்றங்களுக்கு (development branch) இன்னொரு கிளையும் வைத்திருக்கிறோம்.
  2. மாறாக் கிளையிலிருந்து ஒரு பிரதியை எடுத்து இணைய வழங்கியில் நிறுவியுள்ள பிரதிக்கு தினமும் மாறுதல்களை சேர்த்து விடுவோம்.
  3. மாறாக் கிளையில் செய்த மேம்பாடுகளை உருவாக்கக் கிளைக்கு தினமும் இணைக்க (merging) கட்டளை கொடுத்து விடுவோம்.
  4. உருவாக்கக் கிளையில் மாற்றங்கள் முடிந்து நல்லபடியாக வேலை நடக்கிறது என்று உறுதிப் படுத்திக் கொண்ட பிறகு ஒரு மாதத்துக்கு ஒரு முறை அல்லது இரண்டு மாதங்களுக்கு ஒரு முறை உருவாக்கக் கிளையை புதிய மாறாக் கிளையாக மாற்றி விட்டு அடுத்த உருவாக்கங்களுக்குப் புதிய ஒரு கிளையை உருவாக்கிக் கொள்கிறோம்.
  • வாடிக்கையாளர்களின் பிரதிகளை cvsல் சேர்க்காமல் தனியாக அடைவுகளில் போட்டு வைத்திருப்போம்.
  • வாடிக்கையாளர் பிரதியில் நேரடியாக மாறுதல்கள் செய்வதைத் தவிர்த்து விட்டு தகுதர திட்டத்தில் மாற்றம் செய்து அது சரியாக வேலை செய்த பிறகு வாடிக்கையாளர், தேவையான கோப்புகளை மட்டும் எடுத்து வாடிக்கையாளர் பிரதியுடன் ஒப்பிட்டு சேர்த்து விடுவோம்.
  • வாடிக்கையாளரின் பிரதியில் ஏதாவது சிறப்பு மாற்றங்கள் செய்த அதே வரிகள் புதிய பிரதியிலும் மாறியிருந்தால் இரண்டையும் ஒத்திசைக்க முயற்சி செய்வோம்.
    இந்த விதி நடைமுறையில் பல முறை மீறப்பட்டே வருகிறது. வாடிக்கையாளர் ஏதாவது மாற்றம் கேட்டால், நேரடியாக அவர்கள் பிரதியில் மாற்றம் செய்து அனுப்புவது நடக்கிறது
  • அலுவலகக் கணினியில் இருக்கும் வாடிக்கையாளர் பிரதியில் கோப்புகளை சேர்த்துப் பரிசோதித்துப் பார்த்த பிறகு அவற்றை மின்னஞ்சல் மூலம் அல்லது யாரவது போகும் போது அனுப்பி வாடிக்கையாளர் கணினியில் இருக்கும் பிரதியில் சேர்த்து விடுவோம்.
  • வாடிக்கையாளர் கணினியில் இருக்கும் பிரதியில் ஏதாவது மாற்றினால் அதை அலுவலகத்தில் இருக்கும் பிரதியில் மறக்காமல் சேர்த்து விட வேண்டும்.
சுருக்கமாகச் சொல்லப் போனால் வாடிக்கையாளர்களின் பிரதிகளைப் பராமரிக்க சிவிஎஸ் போன்ற பயன்பாட்டின் வேலைகளை நாங்களே ஒவ்வொரு முறையும் பல கருவிகளை ஒருங்கிணைத்துச் செய்து கொண்டிருக்கிறோம். அதனால் பல குளறுபடிகள். "இங்கு மாற்றியது அங்கு போய்ச் சேரவில்லை." "வாடிக்கையாளர் பிரதிக்கும் தகுதர பிரதிக்கும் ஒத்திசைவு இல்லாமல் போகிறது."

நிரல் பராமரிப்பு - 2

இது cvsல் எப்படி நடக்கிறது என்று பார்க்கலாம்.

ஒரு மென்பொருள் திட்டத்தில் நான்கு அடைவுகள் இருக்கின்றன என்று வைத்துக் கொள்வோம்.
global_files
programs
admin
users

ஒவ்வொன்றினுள்ளும் பல கோப்புகள் அல்லது உள்அடைவுகள் இருக்கலாம்.
project
global_files -
global_db.inc
global_form.inc
global_report.inc
global_page.inc
programs -
order_entry.php
shipment_entry.php
bill_entry.php
order_report.php
admin -
backup_db.php
user_management.php
users -
change_password.php
preferences.php
login.php

இவை அனைத்தையும் ஒரு மத்திய இடத்தில் பிரதி செய்து வைத்துக் கொள்ளும் சிவிஎஸ்.

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

ரவி order_entry.php என்ற கோப்பில் மாறுதல்கள் செய்கிறார். மாறுதல்கள் எல்லாம் அவரது பிரதியில்தான் நடக்கும். மத்திய பிரதியில் எந்த மாறுதலும் இல்லை.

இந்த நேரத்தில் தேவி என்பவர் தனக்கென ஒரு பிரதி வேண்டினால் ரவி செய்த மாறுதல்கள் சேராத கோப்புகள்தான் கிடைக்கும். தேவியும் வேலையை ஆரம்பித்து விடலாம். இதே போல் எத்தனை பேர் வேண்டுமானாலும் தனித்தனி பிரதிகள் எடுத்து வேலை செய்து கொண்டிருக்கலாம்.

தேவி தன் வேலையை முடித்து மாறுதல்கள் எல்லாம் சரிவர வேலை செய்கின்றன என்று சரிபார்த்து விட்டு அந்த மாற்றங்களை மத்திய பதிப்பில் சேர்க்க (commit) விரும்புகிறார். அவர் bill_entry.php என்ற கோப்பையும் order_entry.php என்ற கோப்பையும் மாற்றியிருக்கிறார் என்று வைத்துக் கொள்வோம்.

முதலில் தான் வேலை செய்து கொண்டிருந்த போது வேறு யாரும் மாற்றங்களை மத்திய பிரதியில் சேர்த்திருந்தால் அவற்றை தன் பிரதியில் புதுப்பித்துக் கொள்ள ஒத்திசைவு கட்டளையைக் (update) கொடுப்பார். இது வரை எதுவும் மாறியிருக்கவில்லை. தேவி தனது மாற்றங்களை மத்திய பிரதியில் சேர்க்க (commit) கட்டளை கொடுத்ததும். சிவிஎஸ் மத்திய பிரதிக்கும் தேவியின் பிரதிக்கும் இடையே ஒவ்வொரு கோப்புக்கும் என்னென்ன வேறுபாடுகள் உள்ளன என்று பார்த்து விட்டு தேவியின் மாறுதல்களை மத்திய பிரதியில் சேர்த்து விடும்.

இதற்குள் ரவியும் தனது வேலையை முடித்து விட்டார். அவர் order_entry.php என்ற கோப்பில் மாற்றங்கள் செய்துள்ளார். இப்போது மத்திய பிரதியையும் தனது பிரதியையும் ஒத்திசைக்க (update) கட்டளை கொடுத்தாரானால், தேவி மாற்றியிருந்த bill_entry.php ரவியின் பிரதிக்கும் வந்து விடும்.

ஆனால் order_entry.php என்ற கோப்பு மத்திய பிரதியிலும் மாறியிருக்கிறது. ரவியின் பிரதியிலும் மாறியிருக்கிறது. இப்போது சிவிஎஸ் பயன்பாடு இரண்டு கோப்புகளுக்குமிடையே என்ன வேறுபாடு என்று ஒவ்வொரு வரியாக ஒப்பிட்டுப் பார்க்கும். மாறுதல்கள் வெவ்வேறு வரிகளில் இருந்தால் மத்திய பிரதியின் மாறியுள்ள வரிகளை மட்டும் ரவியின் கோப்பில் மாற்றி விடும். ரவி செய்த மாறுதல்கள் அப்படியே இருக்கும்.

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

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

இந்த எளிய வழியைப் பயன்படுத்தி ஆயிரக்கணக்கானவர்கள் பல லட்சம் வரி நிரல் தொகுப்புகளில் ஒரே நேரத்தில் வேலை செய்ய முடிகிறது.

நிரல் பராமரிப்பு - 1

மென்பொருள் உருவாக்கத்தில் நிரல்ஊற்று பராமரிப்பு (source control) மிக முக்கியமான ஒன்று. அது என்னவென்று பார்க்கலாம்.

மிக எளிதான சிறு நிரல்களைத் தவிர்த்து மற்ற எல்லா பெரிய மென்பொருள் உருவாக்கத் திட்டங்களிலும் நிரல்களை பல கோப்புகளில் பிரித்தால்தான் சமாளிக்க முடியும். ஒரே மாதிரியான அல்லது ஒரே வேலைகளைச் செய்யும் நிரல் கோப்புகளை ஒரு அடைவில் (directory) சேர்த்து வைக்க ஆரம்பித்தால் பல அடைவுகளும் உருவாகி விடும்.

ஒரு மென்பொருள் திட்டத்தின் மூலநிரல் தொகுப்பில் பல அடைவுகளும் ஒவ்வொரு அடைவுக்குள்ளும் இன்னும் பல அடைவுகள் அல்லது பல கோப்புகளும் இருக்கலாம்.

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

இப்படி பல கோப்புகளை, பலர் இணைந்து கையாளும் போது பல சிக்கல்கள் ஏற்படும்:
  1. ஒரே நேரத்தில் இரண்டு பேர் ஒரே கோப்பை மாற்றிக் கொண்டிருந்தால் ஒன்றுக்கொன்று மேலெழுதிப் போகும்.
  2. குறிப்பிட்ட மாற்றத்தில் ஏதாவது வழு இருந்தால் அதை என்று நிகழ்ந்தது என்று தேடிக் கண்டுபிடிப்பது பெரும் பாடாகிப் போகும்.
இவற்றைச் சமாளிக்க ஏற்பட்டவைதான் நிரல்பதிப்பு பராமரிப்பு மென்பொருள்கள்.
  • திறவூற்று உலகில் பரவலாகப் பயன்படுத்தப்படுவது cvs (concurrent version control - ஒத்திசைந்த நிரல்பதிப்பு பராமரிப்பு) என்ற பயன்பாடு.
  • cvsன் குறைபாடுகளைக் களைந்து புதிதாக சப்வெர்ஷன் (subversion) என்ற பயன்பாடு உருவாக்கப்பட்டுள்ளது.
  • இந்த இரண்டும் போதாது என்று லினஸ் தோர்வால்ட்ஸ், லினக்சு கெர்னல் உருவாக்கத்தைப் பராமரிக்க கிட் (git) என்ற கருவியைத் தானே எழுதிப் பயன்படுத்த ஆரம்பித்துள்ளார்.
  • இவற்றைத் தவிர மைக்ரோசாப்டு நிறுவனத்தின் sourcesafe என்ற பயன்பாட்டையும் காசு கொடுத்து வாங்கிக் கொள்ளலாம்.
நான் cvs மற்றும் சப்வெர்ஷன் பயன்படுத்தியிருக்கிறேன். மேலே சொன்ன இரண்டு குறிக்கோள்களையும் அடைய உதவுகின்றன இவை. அதாவது, ஒரே நேரத்தில் ஒரே கோப்பை ஒன்றுக்கு மேற்பட்டவர்கள் மாற்றிக் கொண்டிருந்தாலும் எல்லோரது வேலையும் ஒன்றுக்கொன்று இடிக்காமல் இருக்க வேண்டும். பல்வேறு பதிப்புகளை நாள்,நேரம் குறிப்பிட்டு பராமரிக்க முடிய வேண்டும்.

Thursday, October 11, 2007

வலுவான ரூபாயின் விளைவுகள்

டாலரின் மதிப்பு குறைந்ததால் என்னென்ன விளைவுகள் ஏற்படும்?
  1. நம் நாட்டிலிருந்து ஏற்றுமதியாகும் பொருட்களின் விற்பனை குறையும்.

    ஒரு பொருள் செய்ய 100 ரூபாய் செலவாகிறது என்று வைத்துக் கொள்வோம் டாலருக்கு 45 ரூபாய் கிடைத்துக் கொண்டிருந்த காலத்தில் அந்த பொருளை லாபமும் சேர்த்து 2.5 டாலருக்கு விற்றால், ஏற்றுமதியாளருக்குக் கையில் 112.50 ரூபாய்கள் கிடைக்கும். 12.50 ரூபாய்கள் லாபம்.

    இப்போது அதே பொருளை 2.5 டாலருக்கு விற்றால் (1 டாலர் 39.50) 99.50 காசுகள்தான் கிடைக்கும். 50 காசுகள் இழப்பு.

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

  2. வெளிநாட்டிலிருந்து நாம் இறக்குமதி செய்யும் பொருட்கள் மலிவாகக் கிடைக்க ஆரம்பிக்கும்.
    எரிஎண்ணையின் விலை பேரலுக்கு 70 டாலர்கள் என்றால் அதன் விலை முன்பு 70*45=3150 ரூபாய்களாக இருக்கும். இன்றைக்கு அதே விலை எண்ணெய் வாங்க 70*39.5= 2765 ரூபாய்கள் செலவழித்தால் போதும்.

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

    மாறாக, இறுதிப் பொருட்களை இறக்குமதி செய்ய ஆரம்பித்தால் உள்ளூர் மக்களின் பாடு திண்டாட்டமாகிப் போகும்.

    இந்தியாவில் அரிசி கிலோ 25 ரூபாய்க்கு விற்கிறது என்று வைத்துக் கொள்வோம். பழைய மதிப்பில் கிலோ 0.5 டாலருக்கு அமெரிக்காவின் அரிசி இங்கு வந்து சேர்ந்தால் அடக்க விலையே 22.50ல் ஆரம்பிக்கும் (45*0.5). இப்போது அதே அரிசியின் அடக்க விலை ரூபாய் 19.75 ஆக இருக்கும். மற்ற செலவுகள் போக கிலோவுக்கு 2 ரூபாய் லாபம் பார்க்கலாம் என்று ஒருவர் அமெரிக்க அரிசியை நம் ஊரில் விற்க ஆரம்பித்தால் விவசாயிகள் நிலைமை திண்டாட்டமாகிப் போய் விடும்.

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

    இந்தியாவிலிருந்து துபாய்க்கு தொலைபேசி அழைப்புக்குக் கட்டணம் நிமிடத்துக்கு 4.50 ரூபாய்கள் என்று வைத்துக் கொள்வோம். அதில் 0.05 டாலர்கள் துபாய் நிறுவனத்துக்கு பிஎஸ்என்எல் கொடுக்க ஒப்பந்தம். முந்தை செலாவணி விகிதத்தில் ஒரு நிமிடத்துக்கு கொடுக்க வேண்டிய தொகை 2.25 ரூபாய்கள், மிஞ்சும் தொகை 2.25 ரூபாய்கள். இப்போதைய விகிதத்தில் கொடுக்க வேண்டிய தொகை அதே 0.05 டாலர்களுக்கு ரூபாய்களில் 1.95 காசுகள். ஒரு நிமிடத்துக்கு 30 காசுகள் லாபம்.

    இது 2வதாக சொன்ன அதே இறக்குமதி ஆதாயம்தான். துபாய் நிறுவனத்தின் சேவையை இறக்குமதி செய்து கொடுக்கிறது இந்திய நிறுவனம். அதற்கான செலவு குறைவு.

    இதைத் தொடர்ந்து இந்தியாவிலிருந்து வெளி நாடுகளுக்கு அழைக்கும் கட்டணங்கள் குறைக்கப் படலாம். எதிர்மறையாக வெளிநாடுகளிலிருந்து இந்தியாவை அழைக்கும் கட்டணங்கள் உயரலாம்.

  4. வெளிநாடுகளில் சுற்றிப் பார்க்க, தொழில் தொடர்பாக, படிக்கப் போகும் இந்தியர்களுக்குச் செலவு குறைவு.
    ஆங்காங்கில் விற்பனை அலுவலகம் ஒன்றைத் திறந்து அந்த ஊர் ஊழியரை வேலைக்கு வைக்க ஆகும் மொத்த செலவு மாதத்துக்கு 5000 டாலர்கள் என்று வைத்துக் கொள்வோம். டாடா தேயிலை நிறுவனம் குறைந்த செலவில் அலுவலகத்தை ஆரம்பித்து நடத்தலாம். முன்பு 2.225 லட்ச ரூபாய்கள். இப்போது 1.95 லட்ச ரூபாய்கள்தான்.

    இரண்டு ஆண்டுகள் மேலாண்மை படிப்புக்குச் செலவு 20000 டாலர்கள் என்றால் முன்பு 9 லட்சம் ரூபாய்கள் தேவைப்படும் இப்போது 7.9 லட்சத்தில் முடித்து விடலாம்.

    நியூயார்க்கில் ஒரு இரவு தங்குவதற்கான விடுதிச் செலவு 80 டாலர்கள் என்றால், இப்போதைய செலாவணி விகிதத்தில் 420 ரூபாய்கள் குறைவான செலவு.

  5. வெளிநாடுகளில் வேலை பார்க்கும் இந்தியர்கள் பணத்தை இந்தியாவுக்கு அனுப்பும் போது கிடைக்கும் மதிப்பு குறைந்து விடும். 1000 டாலர்கள் சேமிப்பு முன்பெல்லாம் 45 ஆயிரங்களாக மாறிக் கொண்டிருந்தது, இப்போது 39 ஆயிரங்கள்தான் கிடைக்கும்.

    என்னென்ன செய்யலாம்? முதலீடுகளை டாலர்களில் செய்யலாம். வேலை பார்க்கும் நாட்டிலோ, டாலர்களில் செலாவணி நடக்கும் நாடுகளிலோ சொத்துக்களை வாங்கிப் போடலாம்.

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

    ஒரு ஆண்டு முன்பு 20 லட்சம் ரூபாய்களுக்கு ஒரு வீடு வாங்கும் போது அதற்காக 45,000 டாலர்களை மாற்றிச் செலவழித்திருக்க வேண்டும். இப்போது அதே வீட்டை அதே விலைக்கு விற்று டாலராக மாற்றினால் 50,000 டாலர்களுக்கு மேல் கிடைக்கும். நிகர லாபம் 11%. வீட்டு விலைகள் தாறுமாறாக ஏறியிருக்கும் நிலையில் அதே வீட்டுக்கு 40 - 45 லட்சங்கள் கிடைத்தால் அதை டாலராக மாற்றி வேலை பார்க்கும் நாட்டில் முதலீடு செய்யலாம்.

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

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