<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>கட்டுமானம்</title>
        <link>http://blog.krupashankar.com/pullivalai/category/6.aspx</link>
        <description>.NET மற்றும் விண்டோஸ் கட்டுமானம் (architecture) சார்ந்த பதிவுகள், குறிப்புகள்.</description>
        <language>ta</language>
        <copyright>சு. க்ருபா ஷங்கர்</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>எக்சல் கோப்பைப் டாட்நெட்டில் பயன்படுத்தினால் தகவல் இழப்பு ஏற்படுகிறதா? </title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</link>
            <description>&lt;p&gt;&lt;font size="+0"&gt;எக்சல் கோப்புகளை எக்சல் ஆப்ஜக்ட் பயன்படுத்தாமலேயே வெறும் OleDbConnectionனை மட்டும் வைத்துக்கொண்டே டாட்நெட் &lt;font size="+0"&gt;தொழில்நுட்பம்&lt;/font&gt; பயன்படுத்த முடியும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;'"&lt;/font&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;இதிலுள்ள ஒவ்வொரு சீட்டையும் ஒரு டேபிலாகப் படிக்கலாம்.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;பிறகு டேபிளில் உள்ள வரிசைகளைப் படிக்க "select * from [sheet1$]" என்று அடாப்டரிலோ அல்லது கமாண்ட் ஆப்ஜக்டிலோ வினவளைக் கொடுக்கவேண்டியதுதான். இதில் ஒரு சிறிய பிரச்சனை என்னவென்றால் &lt;font face="Arial"&gt;டேட்டாடைப்பை&lt;/font&gt; OleDbConnection புரிந்துகொள்ளும் விதம்தான். உதாரணமாக, எண்கள் மட்டும் இருக்கவேண்டிய ஒரு காலத்தில் (column) ஒரு எழுத்துச்சரத் தகவல் இருந்தது என்றால் அந்த தகவலை எடுத்துக்கொள்ளாமல் வெறும் null என்று அந்த இடத்தில் எடுத்துக்கொள்ளும். இதைத் தவிர்க்க, தகவல்தொடர்ப்புச் சரத்தில், IMEX=1 என்று சேர்த்துத் தரவேண்டும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;IMEX=1'"&lt;/font&gt;);&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/37.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</guid>
            <pubDate>Thu, 03 Apr 2008 07:26:38 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/37.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/37.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ரெய்ல்ஸ் என்றால் என்ன?</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2007/07/28/29.aspx</link>
            <description>ஒரு வலைத்தள அடிப்படையிலான மென்பொருளை வடிவமைக்க, ஆரம்பத்திலிருந்து திட்டமிட்டு ஒவ்வொரு வரியாக நிரல் எழுதி முடிப்பதை விட ஏற்கனவே பரிந்துரைக்கப்பட்ட ஒரு திட்டப்படி ஆரம்பித்து எழுதி முடிப்பது சுலபமாக இருக்கும். ஒரு மென்பொருளில் தேவைப்படும் குறிப்பிட்ட அம்சம், ஏற்கனவே எழுதிய மென்பொருளிலும் இருந்திருக்கலாம். அல்லது வேறு யாரோ எழுதிய மென்பொருளில் இருந்திருக்கலாம். அதே போல வடிவமைப்பிலும் அனைத்து மென்பொருட்களுக்கும் பொதுவான ஒரு கட்டமைப்புக்குள் கொண்டு வர முடியும். இப்படி அடிக்கடி தேவைப்படும் அம்சங்களுக்கு மறுபடி மறுபடி நிரல் வரிகள் எழுதுவதையும், பொதுவான கட்டமைப்புக்கு மீண்டும் மீண்டும் திட்டமிடுவதையும் தவிர்க்க, framework என்ற ஒன்றைப் பயன்படுத்தலாம்.&lt;br /&gt;
&lt;br /&gt;
இப்படிப்பட்ட ஃப்ரேம்வொர்க்கில், நிறைய விதமான கட்டுமான வகைகள் இருக்கின்றன. கட்டுமான வகை (architectural pattern) என்பது பயனருக்கு எதைக் காண்பிக்கிறோம், எப்படி காண்பிக்கிறோம், மற்றும் எப்படி பரிமாற்றங்கள் நிகழ்கின்றன என்பதைச் சார்ந்ததாகும். இதில் தற்பொழுது மிகவும் ப்ரபலமாக இருப்பது MVC எனப்படும் மாடல்-வ்யூ-கண்ட்ரோலர் என்ற கட்டுமான வகை. இதில், பயனர் லேயருக்கான நிரல்வரிகளும், அதை ப்ராசஸ் செய்யும் நிரலும் வெவ்வேறு லேயர்களில் இருக்கும். பயனருக்கான லேயரும் கூட இரு வகையாகப் பிரிக்கப்பட்டு, பயனர் உள்ளிடும்/பார்க்கும் லேயர் மற்றும் உள்ளிட்ட தகவலைப் புரிந்து கொண்டு அதை ப்ராசஸ் லேயருக்கு அனுப்பும் லேயர் என்று இரு வகையாக இருக்கும். இதை முறையே view மற்றும் control லேயர் என்று கூறலாம்.&lt;br /&gt;
&lt;br /&gt;
ரூபி ஆன் ரெய்ல்ஸ் என்பது இப்பொழுது மிகவும் ப்ரபலமாக இருக்கும் ஒரு ஃப்ரேம்வொர்க். அதாவது, இந்த கட்டுமானம் ரூபி என்ற மொழியைப் பயன்படுத்திக்கொள்ள ஏதுவாக இருக்கின்றது. இதே போல வேறு பல ப்ரபலமான மொழிகளுக்கும் ஃப்ரேம்வொர்க் இருக்கிறது. ஜாவாவுக்கு &lt;a href="http://www.opensails.org/"&gt;www.opensails.org/&lt;/a&gt;, டாட்நெட்டிற்கு &lt;a href="http://www.castleproject.org/monorail/index.html"&gt;http://www.castleproject.org/monorail/index.html&lt;/a&gt;  என்று விதம்விதமாக இருக்கின்றன.&lt;br /&gt;
&lt;br /&gt;
இதில் ஓப்பன் ஸ்னெய்ல்சுடன் எனக்குப் பரிச்சயம் இல்லை. மோனோரெய்ல்சுடன் தனிப்பட்ட முறையில் (அதாவது எந்த ஒரு live projectக்க்கும் பயன்படுத்தாத) பரிச்சயம் இருக்கிறது.&lt;br /&gt;
&lt;br /&gt;
ரூபி ப்ரபலமானதற்குக் காரணமே இந்த ரெய்ல்ஸ் ஃப்ரேம்வொர்க்தான். இதர மொழிகளில் இன்னும் ரெய்ல்ஸ் ப்ரபலமாகாததற்கு எனக்குத் தோன்றும் இரண்டு காரணங்கள்:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;ரெய்ல்சை விட வேறு நல்ல ஃப்ரேம் வொர்க்கள் அந்தந்த மொழிகளில் இருக்கலாம்.&lt;/li&gt;
    &lt;li&gt;எந்த ஒரு கட்டுமான அடிப்படையிலான மென்பொருளையும் ஒரு குறிப்பிட்ட நிறுவனம் பயன்படுத்த விரும்பாமல் இருந்திருக்கலாம்&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2007/07/28/29.aspx</guid>
            <pubDate>Sat, 28 Jul 2007 07:38:48 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/29.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2007/07/28/29.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/29.aspx</wfw:commentRss>
        </item>
        <item>
            <title>WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2006/10/28/22.aspx</link>
            <description>
		&lt;p&gt;installutil.exeயை வைத்துக்கொண்டு விண்டோஸ் சர்வீசை நிறுவுவதும் நீக்குவதும் மிகவும் சுலபம். ஆனால் ஒரு பொதியாக (package) மாற்றியபின் விண்டோஸ் சர்வீசை நிறுவியதும் கணிணியுடன் அப்படியே ஈஷிக்கொண்டு நிற்கும். பொதியை நீக்கினாலும் சர்வீஸ் பட்டியலில் இருந்து விண்டோஸ் சர்வீஸ் நீங்காது. இதனால் என்ன ப்ரச்சனை என்றால் மீண்டும் அதே பொதியை நிறுவமுடியாது. ஏற்கனவே இந்த பெயரில் ஒரு விண்டோஸ் சர்வீஸ் பட்டியலில் இருப்பதால், மீண்டும் நிறுவ முடியாது... installutil வைத்துக்கொண்டு கூட.&lt;/p&gt;
		&lt;p&gt;இப்படி பட்டியலில் தங்கிவிட்ட விண்டோஸ் சர்வீசின் பெயரை, சர்வீஸ் முகமையில் (Services console) இருந்தே வலதுபக்க க்ளிக் பண்ணி எல்லாம் நீக்க முடியாது. அஞ்சா நெஞ்சராக இருப்பவர்கள் ரெஜிஸ்ட்ரியில் கைவைத்து இதை நீக்கலாம்.&lt;/p&gt;
		&lt;p&gt;வேறு எப்படியாவது ஒரு வழியில் இந்த பெயரை நீக்கினால்தான் மீண்டும் விண்டோஸ் சர்வீசை நிறுவமுடியும். விண்டோஸ் மேனேஜ்மெண்ட் இன்ஸ்ட்ருமெண்டேஷன் (WMI) வழியாக இதை நீக்கலாம்.&lt;/p&gt;
		&lt;p&gt;WMI என்பது விண்டோஸ் கணிணியில் இருக்கும் சர்வீஸ், ப்ராசஸ், பிணைய பகிர்வுகள் (network share) போன்றவைகளைக் கையாளுவதற்கான ஒரு இயங்குதள முகமை. SQL query போன்ற ஒரு மொழியினூடாக கணிப்பொறியில் இயங்கிக்கொண்டிருக்கும் இயங்குதளம், வன்பொருள் மற்றும் மென்பொருட்களைப் பற்றிய தகவல்களைப் நிர்வகிக்கலாம். மேற்கண்ட இரண்டு வரிகளையும் படித்து, ஒன்றும் புரியாமல் தலை கிர்ரென்று சுற்றினால் WMI பற்றி விவரமாக அறிய &lt;a href="http://en.wikipedia.org/wiki/Windows_Management_Instrumentation"&gt;விக்கிபீடியா&lt;/a&gt;விலோ &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmi/html/wmioverview.asp"&gt;மைக்ரோசாஃப்ட் தளத்திலோ&lt;/a&gt; பார்க்கவும்.&lt;/p&gt;
		&lt;p&gt;டாட்நெட்டில் WMIயுடன் தொடர்புகொள்ள System.Management namespace இதற்காகவே இருக்கிறது. இதைப் பயன்படுத்த, முதலில் System.Management.dllஐ Referencesல் சேர்த்துக்கொள்ளவேண்டும்.&lt;/p&gt;
		&lt;p&gt;ManagementObjectSearcher என்ற க்ளாசிசை wql queryயுடன் instantitate செய்து, நமக்கு வேண்டிய சர்வீசின் ரெஃபரென்சை ManagementObject ஆப்ஜக்டில் பெற்றுக்கொள்ளலாம். பிறகு இந்த ManagementObject ஆப்ஜக்டின் Delete மெத்தடின் உதவியுடன் இந்த விண்டோஸ் சர்வீசின் பெயரை சர்வீசஸ் பட்டியலில் இருந்து நீக்க விடமுடியும்.&lt;/p&gt;
		&lt;p&gt;மாதிரி நிரல்துண்டு:&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;string &lt;/font&gt;
				&lt;font color="black"&gt;strServiceName &lt;/font&gt;
				&lt;font color="blue"&gt;= &lt;/font&gt;
				&lt;font color="#808080"&gt;"MyService"&lt;/font&gt;
				&lt;font color="blue"&gt;;&lt;br /&gt;&lt;/font&gt;
				&lt;font color="black"&gt;System.Management.ManagementObjectSearcher services &lt;/font&gt;
				&lt;font color="blue"&gt;= new &lt;/font&gt;
				&lt;font color="black"&gt;System.Management.ManagementObjectSearcher(&lt;/font&gt;
				&lt;font color="#808080"&gt;"select * from Win32_Service where Name='" &lt;/font&gt;
				&lt;font color="black"&gt;+ strServiceName + &lt;/font&gt;
				&lt;font color="#808080"&gt;"'"&lt;/font&gt;
				&lt;font color="black"&gt;)&lt;/font&gt;
				&lt;font color="blue"&gt;;&lt;br /&gt;foreach&lt;/font&gt;
				&lt;font color="black"&gt;(System.Management.ManagementObject obj &lt;/font&gt;
				&lt;font color="blue"&gt;in &lt;/font&gt;
				&lt;font color="black"&gt;services.Get())&lt;br /&gt;{&lt;br /&gt;obj.Delete()&lt;/font&gt;
				&lt;font color="blue"&gt;;&lt;br /&gt;&lt;/font&gt;
				&lt;font color="black"&gt;}&lt;/font&gt;
		&lt;/p&gt;
		&lt;p&gt;அதாவது, MyService என்ற விண்டோஸ் சர்வீசை இந்த நிரல்வரிகளைக்கொண்டு சர்வீஸ் பட்டியலில் இருந்து அழித்துவிடலாம்.&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#ff0000"&gt;select * from Win32_Service&lt;/font&gt; என்னும் wql query, கணினியில் இருக்கும் அனைத்து விண்டோஸ் சர்வீஸ்கள் பற்றிய விவரத்தையும் பெறுவதற்கு உபயோகிக்கவேண்டும். இதே போல், விண்டோஸ் ப்ராஸஸ் பற்றிய விவரம் வேண்டுமென்றால், &lt;font color="#ff0000"&gt;select * from Win32_Process&lt;/font&gt; என்ற வினவலைப் பயன்படுத்தலாம். ஓடிக்கொண்டிருக்கும் அனைத்து பயன்பாடு/ப்ராஸஸ் பற்றிய விவரமும் இந்த queryயின் வழியாகப் பெறலாம். கணிப்பொறியில் எந்தெந்த அடைவுகள் (டைரக்டரி) பகிர்ந்து கொள்ளப்பட்டிருக்கிறது என்று அறியவேண்டுமா? &lt;font color="#ff0000"&gt;select * from Win32_Share&lt;/font&gt; என்ற query இதற்குப் பயன்படும். foreach லூப்பினுள் obj["Name"].ToString() பயன்படுத்தி பெயர்களை மட்டும் அறியலாம்.&lt;/p&gt;
		&lt;p&gt;நம் பணியைச் சுலபமாக்குவதற்கு இன்னும் பல Win32_xxx (service, printer, etc.) க்ளாஸ் லிஸ்ட்கள் இருக்கின்றன. முழு Win32 க்ளாஸ் லிஸ்ட் பட்டியலுக்கும் &lt;a href="http://www.it-visions.de/Scripting/WMIReferenz.asp?C_Klassentypen=1"&gt;http://www.it-visions.de/Scripting/WMIReferenz.asp?C_Klassentypen=1&lt;/a&gt; சென்று பார்க்கவும்.&lt;/p&gt;
&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/22.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2006/10/28/22.aspx</guid>
            <pubDate>Sat, 28 Oct 2006 14:42:15 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/22.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2006/10/28/22.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/22.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>