tag:blogger.com,1999:blog-32808741700347713382024-03-19T20:03:36.681+07:00NooM.Dev - Blog for Thai Developer .NET.NET Thai Developers |
MCTS: SQL Server 2005 | MCSD: Microsoft.NET | MCAD: Microsoft.NET | MCPS: Microsoft Certified ProfessionalAnonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.comBlogger104125tag:blogger.com,1999:blog-3280874170034771338.post-81376917535491931962015-05-24T20:35:00.000+07:002015-05-24T20:35:10.322+07:00มาใช้ Git บน Virtual Studio 2013 กันเถอะ ตอนที่ 1<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qDbqO76-6uf90d8nsTVD9phGrS2p3j6eDQnRWXDlW00W-vWiIZlI6RohY6xT1vjF1VbHXhjC-cfVji5FwhveaIsGKz7MwJBH1sRdqqzuTxeiM7g2qqJMzPQAzjsX-YssfreJkF5EYEs/s1600/logo%25402x.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="83" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qDbqO76-6uf90d8nsTVD9phGrS2p3j6eDQnRWXDlW00W-vWiIZlI6RohY6xT1vjF1VbHXhjC-cfVji5FwhveaIsGKz7MwJBH1sRdqqzuTxeiM7g2qqJMzPQAzjsX-YssfreJkF5EYEs/s200/logo%25402x.png" width="200" /></a>การทำ Source Control นั้นมีประโยชน์มากสำหรับนักพัฒนาโปรแกรม เพราะหากเกิดเหตุการณ์ที่ไม่คาดฝัน เช่น เครื่องคอมฯของเราพัง หรือ Source code หาย หรือ ต้องการ Source Code ในเวอร์ชั่นเดิมๆ กลับมา ฯลฯ ถ้าเราไม่มี backup ไว้จะทำให้ชีวิตของเราลำบากมากที่สุด</div>
<div>
<br /></div>
<div>
ประโยชน์ของการทำ Source Control นั้นมีมากมาย สาธยายไปก็อาจไม่หมด ต้องลองใช้ดูจะติดใจกับความสามารถของมัน </div>
<div>
<br /></div>
<div>
Source Control มีหลายอย่าง ตั้งแต่สมัย Source Safe ของ Microsoft ไปเรื่อยจนถึง SVN และมาปัจจุบันที่นิยมกันมากที่สุด คือ Git</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Git ถูกสร้างโดย Linus Torvalds ซึ่งเป็นผู้สร้างระบบปฏิบัติการ Linux นั่นเอง (<a href="http://git-scm.com/book/th/v1/%E0%B9%80%E0%B8%A3%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%95%E0%B9%89%E0%B8%99%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-%E0%B9%80%E0%B8%81%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%A7%E0%B8%81%E0%B8%B1%E0%B8%9A-Version-Control" target="_blank">อ่านความเป็นมาของ Git ได้ที่นี่</a>) </div>
<div>
<br /></div>
<div>
เอาล่ะทีเนี่ย พอจะเริ่มใช้ Git ก็เกิดคำถามต่อมาคือ ใช้ยังไงล่ะ :-|</div>
<div>
<br /></div>
<div>
ก่อนจะไปใช้งานกัน มารู้ก่อนว่า Git เนี่ยมันทำงานได้ 2 แบบ คือ Git local กับ Git server</div>
<div>
โดยปกติ Git local เนี่ย หากเราติดตั้ง Git โดยการดาวน์โหลดจากเว็ป <a href="https://git-scm.com/downloads" target="_blank">Git </a> เราก็สามารถใช้งานแบบ local ได้ทันที แต่การใช้แบบ local เนี่ยมันก็ยังไม่ได้มีประโยชน์ หากเครื่องของเราพังไป โค้ดเราก็หายไปอยู่ดี</div>
<div>
<br /></div>
<div>
นั่นไง เราก็ต้องเอาขึ้นไปที่ Server ด้วยสิ หากเราต้องการ Source code เราก็สามารถ Checkout โค้ดของเราออกมา ไม่ว่าเราจะอยู่ที่เครื่องใดก็ตาม เราก็สามารถ Checkout ได้ นี่แหละที่ทำให้เรามีสถานที่เก็บรักษาโค้ดของเราไว้แล้ว</div>
<div>
<br /></div>
<div>
ไปดูความสามารถของมันต่อได้ที่นี่ <a href="http://goo.gl/H7mOg3" target="_blank">http://goo.gl/H7mOg3</a></div>
<div>
<br /></div>
<div>
เนื่องจาก Git นี้เป็น Open source ทำให้ Git Server โผล่ขึ้นมามายมายหลากหลายยี่ห้อให้ท่านเลือกสรรใช้งานกัน แต่ขอสรุปเจ้าหลักๆ ที่ใช้กันมาก ได้แก่</div>
<div>
1. Github - ตัวนี้ยกให้เป็นดาวเด่นของวงการ Open Source เพราะใช้ฟรีแบบ Public แต่ เสียเงินถ้าจะใช้แบบ Private</div>
<div>
2. Bitbucket - ตัวนี้หลังจากถูก atlassian ซื้อไป ทำให้หน้าตาสวยงามน่าใช้เป็นที่สุด ตัวนี้ใช้ฟรีแบบ Private แต่หากเสียตังค์จะสามารถ Public ได้<br />
3. สำหรับผู้ที่ต้องการทำ Git Server ตั้งขึ้นเองในบริษัท เลือกใช้ Gitlab ก็ได้แต่ก็มีอีกหลายตัวให้ท่านเลือกใช้ ลองหาดูครับ<br />
<br /></div>
<div>
เอาล่ะ รู้จัก Git กันพอหอมปากหอมบ้างแล้ว ต่อไปจะเป็นการใช้งาน Git ร่วมกับ Visual Studio 2013</div>
Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-28349524530654855982015-05-05T13:18:00.000+07:002015-05-05T13:20:33.095+07:00ติดตั้ง และ เตรียม sublime text 2<span style="font-family: Arial, Helvetica, sans-serif;">Sublime Text คือ Editor Tool สำหรับการเขียนโค้ดที่นิยมกันตัวนึง สามารถดาวน์โหลดได้ที่ <a href="http://www.sublimetext.com/">http://www.sublimetext.com</a></span><br />
<br />
<blockquote class="tr_bq">
<b><i><span style="color: #073763; font-family: Arial, Helvetica, sans-serif;">หมายเหตุ : จะต้องติดตั้ง Git และ NodeJS ไว้ก่อนแล้ว</span></i></b></blockquote>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ให้ทำการดาวน์โหลด และติดตั้ง ขณะนี้เวอร์ชันที่เสถียรคือ เวอร์ชัน 2 </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">เมื่อติดตั้งเรียบร้อยแล้ว ต่อมาคือการติดตั้ง Package Control โดยไปยัง <a href="https://packagecontrol.io/installation">https://packagecontrol.io/installation</a> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ให้ เลือก Tab "SUBLIME TEXT 2" (แต่หากติดตั้งเเวอร์ชัน 3 ก็ให้เลือก Tab "SUBLIME TEXT 3")</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYgsAM4rRu5MNAj6PjjNg4rtJyx4QOfwP7S74m3cBjMdd4SPGBoUg0CGYMELNrIqaGIdcrzin3wcEYMMpPLczmj20ao5JTUuEUG-NfZscXcccQdjxAXuNJLPKIOMc6oIZYJ8rN4sYt8r8/s1600/Screen+Shot+2558-05-05+at+12.02.51.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYgsAM4rRu5MNAj6PjjNg4rtJyx4QOfwP7S74m3cBjMdd4SPGBoUg0CGYMELNrIqaGIdcrzin3wcEYMMpPLczmj20ao5JTUuEUG-NfZscXcccQdjxAXuNJLPKIOMc6oIZYJ8rN4sYt8r8/s640/Screen+Shot+2558-05-05+at+12.02.51.png" width="640" /></span></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ให้ copy โค้ด ตั้งแต่ "import urllib2,os ... Text to finish installation" ไปจนจบเก็บเอาไว้</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">เปิด Sublime Text ขึ้นมา ไปยัง เมนู "View" และ "Show Console"</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">จากนั้นวาง โค้ดที่ copy เอาไว้ลงไปตามรูป แล้วกด enter</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYwvl8ZrVbkaMSI2Fu9ehZfRqveFjRgOcCswzx8YR8rA0JjshRzKCd4-YnfjOxNMkUeABPGSmw-HGzRAXYCiUn4SnS4EOYc7j4W7T7RUv1ooaHjUwRNxnqkOeki5rIZ7u5lTqXCuT4Hg/s1600/Screen+Shot+2558-05-05+at+12.08.41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="328" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYwvl8ZrVbkaMSI2Fu9ehZfRqveFjRgOcCswzx8YR8rA0JjshRzKCd4-YnfjOxNMkUeABPGSmw-HGzRAXYCiUn4SnS4EOYc7j4W7T7RUv1ooaHjUwRNxnqkOeki5rIZ7u5lTqXCuT4Hg/s640/Screen+Shot+2558-05-05+at+12.08.41.png" width="640" /></span></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">จากนั้นกด ⇧⌘P (command+shift+P) และพิมพ์ว่า "Install Package" แล้วกด enter</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfturdTKlwrZWnNITx8gVTq_oMDN_6GL7YlaZktJyFnuSnfxLcovcgba552WWGwD2qXxRHVyGzkOkfXL9GiI8wI4g2ZYQqylEjlFQS01CA1-wm9yuLB44jSsC66LFO-LnVMmFqGvfWgWA/s1600/Screen+Shot+2558-05-05+at+12.14.21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfturdTKlwrZWnNITx8gVTq_oMDN_6GL7YlaZktJyFnuSnfxLcovcgba552WWGwD2qXxRHVyGzkOkfXL9GiI8wI4g2ZYQqylEjlFQS01CA1-wm9yuLB44jSsC66LFO-LnVMmFqGvfWgWA/s640/Screen+Shot+2558-05-05+at+12.14.21.png" width="640" /></span></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">พิมพ์ Package ที่ต้องการติดตั้ง เช่น Dayle Rees Color Schemes แล้วกด enter</span><br />
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>Dayle Rees Color Schemes </i> : สำหรับเปลี่ยน Color Schemes ของ Sublime Text</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>BraketHighighter</i> : สำหรับช่วยบอก บล็อคของโค้ด เช่น ตำแหน่ง tag เปิดปิด ของ ที่ cursor เราชี้อยู่ เป็นต้น</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>SublimeCodeIntel</i> : สำหรับ intellisence โค้ด html, javascript, PHP เป็นต้น (ชอบมาก) อีกทั้งยังทำให้เรากด control+click เพื่อไปยัง definition ได้ด้วย</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGOfaJ-Dgx-jIU80r6qTm54kh7_ZjCOpcxnwYcanBcxW66bMbJmi0nj9Tc4mQLOmfiguxFjPCVp96yq0DWDuS15dtwnSAHJt6LHUDDacNU9UxrdapeT4ZRoGHK0QvMAHGQAseIFJqoKog/s1600/Screen+Shot+2558-05-05+at+12.28.46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGOfaJ-Dgx-jIU80r6qTm54kh7_ZjCOpcxnwYcanBcxW66bMbJmi0nj9Tc4mQLOmfiguxFjPCVp96yq0DWDuS15dtwnSAHJt6LHUDDacNU9UxrdapeT4ZRoGHK0QvMAHGQAseIFJqoKog/s400/Screen+Shot+2558-05-05+at+12.28.46.png" width="400" /></span></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>SublimeLinter</i> : สำหรับช่วยบอกว่าโค้ดเราเขียนผิด</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>HTML-CSS-JS Prettify</i> : สำหรับช่วยจัดโค้ดให้เรียบร้อยด้วยการคลิก </span>⌃<span style="font-family: Arial, Helvetica, sans-serif;">⇧H (control+command+H)</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>Emmet</i> : เป็น code snippet ให้เราเขียนโค้ดได้ง่ายขึ้น</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><i>jQuery</i> : ช่วยเขียนโค้ด jQuery</span></li>
</ul>
<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-65831102128006726082015-05-03T14:22:00.000+07:002015-05-03T14:22:23.065+07:00Start Apache บน Mac Yosemiteบนเครื่อง Mac OS ปกติจะมีการติดตั้ง Apache Web Server และ php ไว้ให้เป็นดีฟอลท์อยู่แล้ว แต่เราจะต้องเรียกเปิดใช้งานเอง<br />
ขั้นตอนการและใช้งาน และตั้งค่ามีดังนี้<br />
<br />
เปิด Terminal<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_UIcxTulnBKanpu00wTks78dkBcZ4M8pZ5to_0jZQ4f4d_5ylSWebs9Z__bxKwQKl9XRCwfHmKFps2_dqh1tIsWtgMaqIPcjmSR7Fv2Erpw4GB3bHQzzUmoHWbAP_Gfj5aNbplEQXLE8/s1600/Screen+Shot+2558-05-03+at+13.29.07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_UIcxTulnBKanpu00wTks78dkBcZ4M8pZ5to_0jZQ4f4d_5ylSWebs9Z__bxKwQKl9XRCwfHmKFps2_dqh1tIsWtgMaqIPcjmSR7Fv2Erpw4GB3bHQzzUmoHWbAP_Gfj5aNbplEQXLE8/s1600/Screen+Shot+2558-05-03+at+13.29.07.png" height="262" width="640" /></a></div>
<br />
<span id="goog_276701759"></span>สร้างไฟล์ config ของ user ที่เข้าใช้เครื่อง Mac ตัวอย่างของผมคือ noom ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<b>sudo</b> nano /etc/apache2/users/noom.conf</blockquote>
อย่าลืมเปลี่ยนชื่อ noom.conf เป็นชื่อ user ของตัวเองด้วย<br />
<br />
พิมพ์ค่า config ลงไปในไฟล์ noom.conf แต่ต้องเปลี่ยนชื่อ noom เป็น user ของตัวเอง<br />
<blockquote class="tr_bq">
<Directory "/Users/<b>username</b>/Sites/"><br /> AllowOverride All<br /> Options Indexes MultiViews FollowSymLinks<br /> Require all granted<br /></Directory></blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsV9qgwabYK_DWKKPLFGpcdQp7AvAVXr8P_ckLeRs13LfejjnTft2eBoSQ397f35rb8PNUSsQhhCOtly9rwLk7_2Qem2ftgOfLowFWaJclHAjCT-ADeh5uxG1V4ah_1M6NojiDHthnaTU/s1600/Screen+Shot+2558-05-03+at+13.36.21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsV9qgwabYK_DWKKPLFGpcdQp7AvAVXr8P_ckLeRs13LfejjnTft2eBoSQ397f35rb8PNUSsQhhCOtly9rwLk7_2Qem2ftgOfLowFWaJclHAjCT-ADeh5uxG1V4ah_1M6NojiDHthnaTU/s1600/Screen+Shot+2558-05-03+at+13.36.21.png" height="248" width="640" /></a></div>
<br />
กดปุ่ม control+o และ enter เพื่อ save<br />
กดปุ่ม control+x เพื่อออกจาก nano<br />
<br />
เมื่อสร้างไฟล์ noom.conf เสร็จแล้ว ต่อไป เป็นการแก้ไข apache config<br />
เริ่มจาก backup ไฟล์ httpd.conf ไว้ก่อน ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<b>cp</b> /etc/apache2/httpd.conf httpd.conf.bak</blockquote>
<br />
เปิดไฟล์ httpd.conf ด้วย nano<br />
<blockquote class="tr_bq">
<b>sudo</b> nano /etc/apache2/httpd.conf</blockquote>
นำเครื่องหมาย # ออกจากข้อความเหล่านี้<br />
<blockquote class="tr_bq">
<div class="p1">
<span class="s1"><b>LoadModule</b> userdir_module libexec/apache2/mod_userdir.so</span></div>
<div class="p1">
<span class="s1"><b>LoadModule</b> alias_module libexec/apache2/mod_alias.so</span></div>
<div class="p1">
<span class="s1"><b>LoadModule</b> rewrite_module libexec/apache2/mod_rewrite.so</span></div>
<div class="p1">
<span class="s1"><b>LoadModule</b> php5_module libexec/apache2/libphp5.so</span></div>
</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7R-cRaQeD50EmJfxQgQ4ojGVGfMv4cW5HdqMfpWQNbaL308i2pvDDdctdmFogoVPmqG9TDvL2qVD-vCoaxm-D0M8_6DxtcLhLzIZ0vniLG4iilXmx6KuIBAPYb-46QdumNdceSBxfs34/s1600/Screen+Shot+2558-05-03+at+13.47.40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7R-cRaQeD50EmJfxQgQ4ojGVGfMv4cW5HdqMfpWQNbaL308i2pvDDdctdmFogoVPmqG9TDvL2qVD-vCoaxm-D0M8_6DxtcLhLzIZ0vniLG4iilXmx6KuIBAPYb-46QdumNdceSBxfs34/s1600/Screen+Shot+2558-05-03+at+13.47.40.png" height="294" width="640" /></a></div>
<br />
จากนั้น แก้ไข user และ group โดย remark ของเดิมด้วย # จากนั้นใส่<br />
<blockquote class="tr_bq">
User noom<br />
Group staff </blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0Bu1GWyoJeAV5UObhoDRrGXDwScUMyYLfnM5yYqq3IQnw9E5WEaS_kpLoAwMdlYhl_Snt7qjrBnpuzaWV1DEsGzZRw848ia-fSA0YMWh2-hOhFhtbUt4W4O42a-ANFdNa0FoGXWGEVg/s1600/Screen+Shot+2558-05-03+at+13.49.17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0Bu1GWyoJeAV5UObhoDRrGXDwScUMyYLfnM5yYqq3IQnw9E5WEaS_kpLoAwMdlYhl_Snt7qjrBnpuzaWV1DEsGzZRw848ia-fSA0YMWh2-hOhFhtbUt4W4O42a-ANFdNa0FoGXWGEVg/s1600/Screen+Shot+2558-05-03+at+13.49.17.png" height="264" width="640" /></a></div>
<br />
<br />
ยังอยู่ในไฟล์ httpd.conf เอา # ออกจากบันทัดนี้<br />
<blockquote class="tr_bq">
<div class="p1">
<span class="s1"><b>Include</b> /<b>private</b>/etc/apache2/extra/httpd-userdir.conf</span></div>
</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-TfeA7Fmfa86E8dyIAf3v_lHgxoUuNQPEubAorjA5kwZkLryGnt6VURy0B-tA9Mc584jWjzL1m32Z5KLxbxKraAZ3lEB4EQPQDyZDMFalglTcLBwJt2rUUkw5ZKeT0vXs5HPZONYeItM/s1600/Screen+Shot+2558-05-03+at+13.51.58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-TfeA7Fmfa86E8dyIAf3v_lHgxoUuNQPEubAorjA5kwZkLryGnt6VURy0B-tA9Mc584jWjzL1m32Z5KLxbxKraAZ3lEB4EQPQDyZDMFalglTcLBwJt2rUUkw5ZKeT0vXs5HPZONYeItM/s1600/Screen+Shot+2558-05-03+at+13.51.58.png" height="298" width="640" /></a></div>
<br />
<br />
กด control+o และ control+x<br />
<br />
จากนั้นไปยัง httpd-userdir.conf ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<span class="s1"><b>sudo</b> nano /etc/apache2/extra/httpd-userdir.conf </span></blockquote>
<br />
เอา # ออกจาก<br />
<blockquote class="tr_bq">
<span class="s1"><b>Include</b> /private/etc/apache2/users/</span><span class="s2">*.conf</span></blockquote>
กด control+o และ control+x<br />
<br />
<br />
สร้างโฟลเดอร์ site ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<b>mkdir</b> ~/Sites/</blockquote>
<br />
ทดลองสร้างไฟล์ php ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<div class="p1">
<span class="s1"><b>echo</b> "<? php phpinfo(); ?>" > ~/Sites/phpinfo.php</span></div>
</blockquote>
<br />
เปิด Apache ด้วยคำสั่ง<br />
<blockquote class="tr_bq">
<span class="s1"><b>sudo</b> apachectl restart</span></blockquote>
<br />
ลองเข้าด้วย <a href="http://localhost/" target="_blank">http://localhost/ </a> จะเป็นหน้าดีฟอลท์ของ Apache ขึ้นว่า It works!<br />
โฟลเดอร์ที่เก็บอยู่ที่ ~/Library/WebServer/Documents/<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGDXggQf_EchnpFv6rnoNSNhyYOcQ30I2jmiNdwtyQz8cn0V-dUmQGzML6KlLHgDjSJITm6Vp5rNQj5cCbqYDTAzI_c-zphGMy2IGDeb0WqKdVwfdRwJN5paWtgGROq-90K6q1P_VZHZo/s1600/Screen+Shot+2558-05-03+at+14.02.42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGDXggQf_EchnpFv6rnoNSNhyYOcQ30I2jmiNdwtyQz8cn0V-dUmQGzML6KlLHgDjSJITm6Vp5rNQj5cCbqYDTAzI_c-zphGMy2IGDeb0WqKdVwfdRwJN5paWtgGROq-90K6q1P_VZHZo/s1600/Screen+Shot+2558-05-03+at+14.02.42.png" height="273" width="640" /></a></div>
<br />
<br />
จากนั้นลองเปิด <a href="http://localhost/~noom/phpinfo.php">http://localhost/~noom/phpinfo.php</a> **เปลี่ยน ~noom เป็น user ของตัวเองด้วย<br />
จะแสดงข้อมูลของ php ที่เราเรียกจากฟังก์ชั่น phpinfo();<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbvnpAHXN0lOwQLUIL-1-YZVV4oQZ4zh1jYf5R0H_rjPh5J9L0wCkmTjc8xCqAK2u6xgBu2t8O9QnG3C04YWtWMB-qwwYaC5XQoJXN5bq4iAOj_hFpdLYp0gMxORJb7YH5Zx5dzUb1MMY/s1600/Screen+Shot+2558-05-03+at+14.07.04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbvnpAHXN0lOwQLUIL-1-YZVV4oQZ4zh1jYf5R0H_rjPh5J9L0wCkmTjc8xCqAK2u6xgBu2t8O9QnG3C04YWtWMB-qwwYaC5XQoJXN5bq4iAOj_hFpdLYp0gMxORJb7YH5Zx5dzUb1MMY/s1600/Screen+Shot+2558-05-03+at+14.07.04.png" height="364" width="640" /></a></div>
<br />
จากนี้เครื่อง Mac ของคุณ ก็พร้อมที่จะเขียน php web application แล้วครับ<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-35521112604299508102014-07-31T09:43:00.000+07:002014-07-31T09:44:54.148+07:00Create WCF Service for Ajax jQuery (Part1)<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaYzpEyRtqEP6dcutHKHmMUEyZSBIG9humUufWrD4pNrV2GQMwBICJP5d-5jh4MIhky5yF0Ei-eScv361Mhe0AIvGDdbYwm-mNc4km-ZjeOjmFIDW7xaol9D6muqxONspeNU-XvrDsROk/s1600/a.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaYzpEyRtqEP6dcutHKHmMUEyZSBIG9humUufWrD4pNrV2GQMwBICJP5d-5jh4MIhky5yF0Ei-eScv361Mhe0AIvGDdbYwm-mNc4km-ZjeOjmFIDW7xaol9D6muqxONspeNU-XvrDsROk/s1600/a.jpg" height="97" width="100" /></a>ผมทำสรุปขั้นตอนการสร้าง WCF Service เพื่อให้เรียกใช้งานจาก Ajax jQuery เอาไว้ เพื่อนๆ ที่สนใจสามารถดูรายละเอียดได้จาก link ด้านล่างครับ</div>
<br />
<a href="https://docs.google.com/document/d/1ZEKH8xzjqlyA15Ad05CKhyT_HQGcfHVsgPWjpI6Iu24" target="_blank">Create WCF Service for Ajax jQuery (Part1)</a><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5u9W4XtNp-lCEe8Z9SiKXUuVOQ2lwcjlKD3Gmjcy_hWaz4QOIvtFuQFYT-BNYt5tze4J1-eZwIivQ9DYnsDQdPYDf18FePmC1_HeIK-gDDM6BV5jvem-_aSB1z2dNNRZw6QBfLNN6PT0/s1600/x.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5u9W4XtNp-lCEe8Z9SiKXUuVOQ2lwcjlKD3Gmjcy_hWaz4QOIvtFuQFYT-BNYt5tze4J1-eZwIivQ9DYnsDQdPYDf18FePmC1_HeIK-gDDM6BV5jvem-_aSB1z2dNNRZw6QBfLNN6PT0/s1600/x.jpg" height="200" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-22573584606479265122014-05-22T17:23:00.002+07:002014-05-22T17:32:05.475+07:00ASP.NET - การจัดเก็บและเรียกรูปภาพจากฐานข้อมูล MS SQL Serverผมได้ทำโปรแกรมตัวอย่างการจัดเก็บไฟล์ และเรียกไฟล์รูปภาพออกมาแสดง โดยโปรแกรมมีคุณสมบัติในการอัพโหลดไฟล์รูปภาพจากเครื่อง Client ขึ้นไปยัง Web Server 2 แบบ คือ<br />
<br />
<u>แบบที่ 1</u> - โปรแกรมจะจัดเก็บไฟล์รูปภาพลงฐานข้อมูล MSSQL และดึงข้อมูลจากฐานข้อมูลไปแสดงรูปภาพบนหน้า Web<br />
<u>แบบที่ 2</u> - โปรแกรมไม่ได้จัดเก็บไฟล์ลงฐานข้อมูล แต่จะนำไปแสดงบนหน้า Web<br />
<br />
<span style="color: #cc0000;">(</span><b style="color: #cc0000;"> ดาวน์โหลด ซอร์สโค้ด ได้ที่นี่ครับ</b><span style="color: #cc0000;"> </span><a href="https://github.com/noomdev/StoreImageDB" target="_blank">https://github.com/noomdev/StoreImageDB</a><span style="color: #cc0000;"> )</span><br />
<span style="color: #cc0000;"><br /></span>
เมื่อได้ดาวน์โหลดไฟล์ source code มาแล้ว จะต้องเปิดไฟล์ด้วย MS Visual Studio 2010 ขึ้นไป (ผม dev ด้วย Web Developer 2010 Express) ครับ<br />
<br />
<br />
ก่อนอื่น เราจะต้องมีฐานข้อมูลที่จัดเก็บไฟล์รูปภาพ โดยเราจะเลือกจัดเก็บเป็นแบบ <b>varbinary(max)</b><br />
<b><br /></b>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCl7al5OOW2ep6aR-tqjOzPvyeOkUDre38duD3K1f4SOuiOGyaH5iY_MyL8ftNX1Y6OubkGMKqgFrRkXXgQW3w1Xj8aJkZA3hFjVne6_woBfJtkIbQZicD5EDT2tds775EPQOqLxHGq2Q/s1600/22-5-2557+16-39-00.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCl7al5OOW2ep6aR-tqjOzPvyeOkUDre38duD3K1f4SOuiOGyaH5iY_MyL8ftNX1Y6OubkGMKqgFrRkXXgQW3w1Xj8aJkZA3hFjVne6_woBfJtkIbQZicD5EDT2tds775EPQOqLxHGq2Q/s1600/22-5-2557+16-39-00.jpg" height="396" width="640" /></a><br />
<br />
<br />
ทดลองรันโปรแกรม จะเข้าหน้า default.aspx<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DH9WAW0R2LcffCMvpuwZzOh0tK5L7dnB0CwlRnsnpz_KVCfWsARWEwjilkcRi40xLJDzXPIZsYzKkThHzY8RnOJGyltjUPHRtrQVP3St1vyYt23Uzdg1VG3Suh6FuxTUTWzeItj4Qpc/s1600/22-5-2557+16-41-51.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DH9WAW0R2LcffCMvpuwZzOh0tK5L7dnB0CwlRnsnpz_KVCfWsARWEwjilkcRi40xLJDzXPIZsYzKkThHzY8RnOJGyltjUPHRtrQVP3St1vyYt23Uzdg1VG3Suh6FuxTUTWzeItj4Qpc/s1600/22-5-2557+16-41-51.jpg" height="388" width="640" /></a></div>
<br />
<u>ตัวอย่างการทำงานของแบบที่ 1</u><br />
<u><br /></u>
ให้กดปุ่ม Browse เพื่อเลือกไฟล์รูปภาพ (jpg) จากเครื่อง client จากนั้นกดปุ่ม "Upload & Save Picture"<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLWvksGltGFvAqdSD-Yg7OZ_7SuFAqBEZm2IbArcwhIoW2c9OTGXMo36XX_52zI1_emre__vPNcqVnSHyepzWem_KlNmBD163lB7xFk7ULzxjtotD-z639G8PnAiy5Fczhl5I16rdL_w0/s1600/22-5-2557+16-42-48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLWvksGltGFvAqdSD-Yg7OZ_7SuFAqBEZm2IbArcwhIoW2c9OTGXMo36XX_52zI1_emre__vPNcqVnSHyepzWem_KlNmBD163lB7xFk7ULzxjtotD-z639G8PnAiy5Fczhl5I16rdL_w0/s1600/22-5-2557+16-42-48.jpg" height="58" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
เมื่อกดปุ่มเสร็จแล้ว โปรแกรมจะทำงานดังนี้</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>อัพไฟล์รูปภาพจากเครื่อง Client ขึ้น Web Server </li>
<li>แปลงไฟล์รูปภาพ ไปเป็น byte[] แบบ array</li>
<li>บันทึกเข้าฐานข้อมูล</li>
<li>เรียกข้อมูล จากฐานข้อมูล มาเป็น byte[]</li>
<li>นำ byte ไป content เป็น image/jpg และแสดงผลลงใน Image1 Control</li>
</ol>
<div>
<br /></div>
<div>
ผลลัพธ์จากการทำงานทั้งหมด<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip4pWy8BO2WozKBCRjWjZp6T_ngUdFfhw9lRUsShNOBid1FI1V31zkBsyeZ8f0J_k_PPNtHapILzA5cqr0jpYG-kE8keCxUb5Yl0MsT_c12CMCTejTUWcYxg4yldCO-YT6vBfQN108iUQ/s1600/22-5-2557+16-43-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip4pWy8BO2WozKBCRjWjZp6T_ngUdFfhw9lRUsShNOBid1FI1V31zkBsyeZ8f0J_k_PPNtHapILzA5cqr0jpYG-kE8keCxUb5Yl0MsT_c12CMCTejTUWcYxg4yldCO-YT6vBfQN108iUQ/s1600/22-5-2557+16-43-08.jpg" height="378" width="640" /></a></div>
<div>
<br /></div>
<div>
<br />
เมื่อดูในตารางจะพบข้อมูล <binary data=""> จัดเก็บอยู่</binary><br />
<binary data=""><br /></binary></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3vzt_W6I8CMahTfC-t55acWJLhZKVs0z3AxXO6Gvs3lyz-XPwIboFQC4vOont5KeMLRI54pKnw1bQxi6hYPExTmn1tIwcQ9jT3TTGBnqJ4bwP8ZCn4c9XJiLH00Mqd70AltgW5oRptak/s1600/22-5-2557+16-44-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3vzt_W6I8CMahTfC-t55acWJLhZKVs0z3AxXO6Gvs3lyz-XPwIboFQC4vOont5KeMLRI54pKnw1bQxi6hYPExTmn1tIwcQ9jT3TTGBnqJ4bwP8ZCn4c9XJiLH00Mqd70AltgW5oRptak/s1600/22-5-2557+16-44-02.jpg" height="154" width="320" /></a></div>
<br />
<u>ตัวอย่างการทำงานของแบบที่ 2</u><br />
<u><br /></u>
ให้กดปุ่ม Browse เพื่อเลือกไฟล์รูปภาพ (jpg) จากเครื่อง client จากนั้นกดปุ่ม "Upload & Save Picture"<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0CzWYPq1GitVQVUosKBD-XjUWCM5HvBofmptMzRuqVpJSakWIYPyaBtvPI0ZYyao-_j3DcVy4il5ZRX1Jul0SqBFRr87LMZuajoyYMoxaLDmxU5yLG2ccoPBXE4xt6Eany8hpb6k5ONM/s1600/22-5-2557+16-45-49.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0CzWYPq1GitVQVUosKBD-XjUWCM5HvBofmptMzRuqVpJSakWIYPyaBtvPI0ZYyao-_j3DcVy4il5ZRX1Jul0SqBFRr87LMZuajoyYMoxaLDmxU5yLG2ccoPBXE4xt6Eany8hpb6k5ONM/s1600/22-5-2557+16-45-49.jpg" height="63" width="400" /></a></div>
<br />
<div class="separator" style="clear: both;">
เมื่อกดปุ่มเสร็จแล้ว โปรแกรมจะทำงานดังนี้</div>
<ol>
<li>อัพไฟล์รูปภาพจากเครื่อง Client ขึ้น Web Server </li>
<li>แปลงไฟล์รูปภาพ ไปเป็น byte[] แบบ array</li>
<li>ส่ง byte[] ไปยัง การแสดงผลรูปภาพทันที</li>
</ol>
<div>
ผลลัพธ์จากการทำงาน<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcssE6nY_D099bnLovNq1GV4aDPnPhXs9IhvhhIlWWEbmkqdiVc6HLKZCG3gSkgqiZrbl1Izxl-zCLoosTpVx1cHsNRpXErsrTmn5s3-5bgZnPrKGyUOkGQXVx_fxl1_yPA8u8HwXUDE/s1600/22-5-2557+16-46-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcssE6nY_D099bnLovNq1GV4aDPnPhXs9IhvhhIlWWEbmkqdiVc6HLKZCG3gSkgqiZrbl1Izxl-zCLoosTpVx1cHsNRpXErsrTmn5s3-5bgZnPrKGyUOkGQXVx_fxl1_yPA8u8HwXUDE/s1600/22-5-2557+16-46-06.jpg" height="378" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
** เทคนิค **</div>
<div>
ในการแสดงผลรูปภาพทาง Image1 Control นั้น ผมได้ใช้การอ้างไปยัง "Image.aspx" อีกทีเพื่อทำการแปลง byte[] ไปเป็น Response.OutputStream และส่งกลับไปยัง default.aspx เพื่อแสดงรูปบน Image1 โดยโคิดส่วนที่สำคัญ คือ การใช้ MemoryStream ในการอ่าน byte[] และ ส่งไปยัง Image Object และให้ Image Object ทำการ Save ไฟล์แบบ Response.OutputStream </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9Jbxmx2GWm1lpH3joG2hFno4kUGBzAlaKT8cX4dvJbrVkCdoLcDkmkb2KU6AQeaGPVVT_9F-E4PP7np8YNyWhBLZXhjbYx1_M3SVNyk2bhfi8yCdYwjxqZOz3iAqrxqHI76zw7PK75U/s1600/22-5-2557+17-15-43.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9Jbxmx2GWm1lpH3joG2hFno4kUGBzAlaKT8cX4dvJbrVkCdoLcDkmkb2KU6AQeaGPVVT_9F-E4PP7np8YNyWhBLZXhjbYx1_M3SVNyk2bhfi8yCdYwjxqZOz3iAqrxqHI76zw7PK75U/s1600/22-5-2557+17-15-43.jpg" height="83" width="640" /></a></div>
<br />
//////////// NoooM ////////////<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com1tag:blogger.com,1999:blog-3280874170034771338.post-52082015959778818362014-05-20T11:15:00.000+07:002014-05-20T11:36:18.512+07:00ASP.NET : การเก็บไฟล์ไว้ Server อื่น<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpwN8RantFAWqg4H_SGZVPy9pmwUhP8bzGy3bRCQhxKQJIgHHpSewNiezUdieWk16c7t8q7ieNymZFJcY5UbP9Mu11BVQe9d-RHS7tIbs-I_43Ex2202mFrylXYW0l33RVvvPeJi3OXTo/s1600/file_server.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpwN8RantFAWqg4H_SGZVPy9pmwUhP8bzGy3bRCQhxKQJIgHHpSewNiezUdieWk16c7t8q7ieNymZFJcY5UbP9Mu11BVQe9d-RHS7tIbs-I_43Ex2202mFrylXYW0l33RVvvPeJi3OXTo/s1600/file_server.png" height="100" width="85" /></a></div>
หากเราเขียน ASP.NET จัดเก็บไฟล์ที่ Upload จาก Client ไปยัง Server นั้น ตามปกติจะใช้วิธีการจัดเก็บไฟล์แบบง่ายๆ คือ การเก็บไฟล์ไว้ภายใน Folder ที่อยู่ใน Project ASP.NET นั้นๆ<br />
<br />
แต่เนื่องจากในการออกแบบระบบขนาดใหญ่นั้น จะมีการจำแนก File Server ออกมาต่างหาก จาก Web Server โดยไฟล์ที่ได้ Upload จาก Client ไปนั้น จะถูกนำไปเก็บไว้ที่ File Server แทนที่จะเก็บไว้ที่ Web Server เอง<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsru6rN2gLkdvNoTaVRcDm58NdhsfoyrIuLyMS572exMD7rOOP4rO7moE5Q6rz47Jj6dDIqzoWK_dPSAbNJzLczMWKFMVciFD5p28FuQWH8kt5dnhYDJl7jgOexlFMNhzm9gl_JUkE5C0/s1600/xxx.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsru6rN2gLkdvNoTaVRcDm58NdhsfoyrIuLyMS572exMD7rOOP4rO7moE5Q6rz47Jj6dDIqzoWK_dPSAbNJzLczMWKFMVciFD5p28FuQWH8kt5dnhYDJl7jgOexlFMNhzm9gl_JUkE5C0/s1600/xxx.JPG" height="211" width="640" /></a></div>
<br />
<br />
สำหรับการใช้ ASP.NET ซึ่งจะต้อง Deploy บน IIS นั้น จะมีเรื่องของ Security ค่อนข้างมาก และดูจะวุ่นวายมาก (ส่วนตัวก็จำได้ไม่หมด) ผมจึงขอสรุปวิธีการหนึ่งที่จะต้องทำ เพื่อให้ Web Application ที่เราเขียนขึ้น สามารถนำไฟล์ไปวางบน File Server หรือ Server อื่นๆ ได้<br />
<br />
วิธีการที่ผมเลือกใช้คือ สร้าง Local User บนเครื่อง File Server และ Web Server ขึ้นมาให้มี User Name และ Password เหมือนกัน **ขอย้ำว่าเป็น Local User นะครับ แต่ถ้าจะใช้เป็น Domain User ก็ได้ไม่ผิดกติกา**<br />
เช่น user name ชื่อ "usertest" โดยมี password คือ "password"<br />
<br />
บนเครื่อง File Server สร้าง local user ชื่อ usertest<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG8ISaacyF24XOAbwfA14vkRHILQjgQhJdNlaSKMQLng3MkFVJGxkIBdjED-IH0ZrvhjSL5SJ2dJfiKtZkwn3Oa5owCi8s8N_5Q0lNU-vn_Dc8graeF4Z3nmgMmLqGcLX98puSRx43chk/s1600/20-5-2557+10-33-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG8ISaacyF24XOAbwfA14vkRHILQjgQhJdNlaSKMQLng3MkFVJGxkIBdjED-IH0ZrvhjSL5SJ2dJfiKtZkwn3Oa5owCi8s8N_5Q0lNU-vn_Dc8graeF4Z3nmgMmLqGcLX98puSRx43chk/s1600/20-5-2557+10-33-08.jpg" height="245" width="400" /></a></div>
<br />
บนเครื่อง Web Server ก็สร้าง local user ชื่อ usertest เช่นกัน<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH_agvP1x6_6kb3dZiJ4lc68mGQoYWlP1xo9iphwTwN7WNqXfgeQVJot9CasjQvgSGGboMA1d569KQjiblkiFGcxgJxaVZib-3WvH5-NmmwHG07iKT7LKDzLEgwzxN4BbKfprsaXdy3ZQ/s1600/20-5-2557+10-35-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH_agvP1x6_6kb3dZiJ4lc68mGQoYWlP1xo9iphwTwN7WNqXfgeQVJot9CasjQvgSGGboMA1d569KQjiblkiFGcxgJxaVZib-3WvH5-NmmwHG07iKT7LKDzLEgwzxN4BbKfprsaXdy3ZQ/s1600/20-5-2557+10-35-01.jpg" height="281" width="400" /></a></div>
<br />
บน File Server ให้ Share File โดยให้สิทธิ Modify แก่ usertest<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbtigMCW6GlQ83vxrSYV0yGueAtNN4IhyC4zz4q-1fSfXbWo0OYE6zy3HnSRiR1On7GonfswPpVDZIhMaNvOfPmo5JVLj4qyzfvKDnsUFDDJGe72W01D8aNqLpkb1dqOwz-noqRoD8YZw/s1600/20-5-2557+10-38-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbtigMCW6GlQ83vxrSYV0yGueAtNN4IhyC4zz4q-1fSfXbWo0OYE6zy3HnSRiR1On7GonfswPpVDZIhMaNvOfPmo5JVLj4qyzfvKDnsUFDDJGe72W01D8aNqLpkb1dqOwz-noqRoD8YZw/s1600/20-5-2557+10-38-03.jpg" height="400" width="308" /></a></div>
<br />
บนเครื่อง Web Server ให้เปิด IIS ขึ้นมา (เป็น IIS 6.0) จากนั้นเลือกที่ Web Application ที่ต้องการเก็บไฟล์ที่เครื่องแล้วกด New-> Virtual Directory<br />
กำหนดชื่อ alias เป็น "files" และกำหนด path เป็น "\\FileServer1\testfiles" ที่ได้ shared ไว้แล้ว และกด Next<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSnLmLt4B1rPu5oFnSUBaR-igMI8Xq_O1p09oi2384SHxkitDd4aMoaD_-MkI5azOOI_oc7oKr7sjMwY1vtdll0FXd5a2CQYqJ_4NwI3DPbo5XVbijjxOTF-L0aLbbZHK1XbBsUn0tfRg/s1600/20-5-2557+10-42-48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSnLmLt4B1rPu5oFnSUBaR-igMI8Xq_O1p09oi2384SHxkitDd4aMoaD_-MkI5azOOI_oc7oKr7sjMwY1vtdll0FXd5a2CQYqJ_4NwI3DPbo5XVbijjxOTF-L0aLbbZHK1XbBsUn0tfRg/s1600/20-5-2557+10-42-48.jpg" height="315" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
กำหนด user name, password ที่จะใช้เข้าถึง shared path นี้ แล้วกด Next</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtF0i7C0idBBWZ-CmY8aARAAyjA2McnSr-O5cVs4Y0dBJ6QxJA1yLwIWXQQsI-MvViYE1x2Pskxs9yIw6B9BA9rnUZcSotOvh82gzNXGZ54qU5KI8VO9lJfaAYlAZ3eXYqq5_svBYXSg4/s1600/20-5-2557+10-45-37.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtF0i7C0idBBWZ-CmY8aARAAyjA2McnSr-O5cVs4Y0dBJ6QxJA1yLwIWXQQsI-MvViYE1x2Pskxs9yIw6B9BA9rnUZcSotOvh82gzNXGZ54qU5KI8VO9lJfaAYlAZ3eXYqq5_svBYXSg4/s1600/20-5-2557+10-45-37.jpg" height="313" width="400" /></a></div>
<br />
ยืนยัน password อีกครั้ง<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9bR9wJTglt3ygCDtzDPCpjTgXw2ZO8bkuKVfRowYnIPRjF5IMLNFvE5d7mGrC9jTqpseV7ZopJgwPEqvwLQUWSNAZ2kF-QshPD9p8e309Tegy6mr0ScpmrsZpFfkBFx28jGWQyUhCjYk/s1600/20-5-2557+10-48-56.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9bR9wJTglt3ygCDtzDPCpjTgXw2ZO8bkuKVfRowYnIPRjF5IMLNFvE5d7mGrC9jTqpseV7ZopJgwPEqvwLQUWSNAZ2kF-QshPD9p8e309Tegy6mr0ScpmrsZpFfkBFx28jGWQyUhCjYk/s1600/20-5-2557+10-48-56.jpg" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
เลือก permissions: "Read" and "Write"<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihG59p0Gv-wOt1hRESSy6JwaP9wUtwGY61ZoEfBnLV63BVKneAHVVOmSXpRaHDJQ2ov3M_Ap1NkbEK976abP_Z2jaegPowKTrDdEsKRVAAQ4KEBPEt9Q4O7Gzmr5iygWKkPrXEg2Spzag/s1600/20-5-2557+10-50-00.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihG59p0Gv-wOt1hRESSy6JwaP9wUtwGY61ZoEfBnLV63BVKneAHVVOmSXpRaHDJQ2ov3M_Ap1NkbEK976abP_Z2jaegPowKTrDdEsKRVAAQ4KEBPEt9Q4O7Gzmr5iygWKkPrXEg2Spzag/s1600/20-5-2557+10-50-00.jpg" height="315" width="400" /></a></div>
<br />
เมื่อกำหนด Virtual Directory "files" เสร็จแล้ว จะปรากฏหน้าตาดังรูปต่อไป<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi31u1flO_BIcnK0Z_dhMY8TfZl7pEkIocV5k5YFrrTYl9b_Isbi_tcKYW9946ND-1tji_Ut9-1SjcT7_D91FIn5WKUYlx3DSriXiDBCSCoaZmhE8Dlxj2wC3fCTejwHBMudginqiKfq8Y/s1600/20-5-2557+10-52-16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi31u1flO_BIcnK0Z_dhMY8TfZl7pEkIocV5k5YFrrTYl9b_Isbi_tcKYW9946ND-1tji_Ut9-1SjcT7_D91FIn5WKUYlx3DSriXiDBCSCoaZmhE8Dlxj2wC3fCTejwHBMudginqiKfq8Y/s1600/20-5-2557+10-52-16.jpg" height="364" width="640" /></a></div>
<br />
เลือกที่ Web App (สมมติเป็น "TestUpload") --> Properties --> เลือก Tab "Directory Security" --> ที่ Authentication and access control กดปุ่ม "Edit"<br />
กำหนด user name: เป็น usertest (เป็น local user ของ web server ที่ได้สร้างไว้แล้ว) จากนั้นกดปุ่ม "OK"<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5LqFvJzGHUEnfrGOyrygPea_bOsN_SD2QDnBwRQaaFBiYjzQ-S_jbDq9mZ1n2xMi9Neq_RzrRlcExNnhBYQAfDK0XQuV_54TypV1MM6AX2PP3W7dW_tOPpJMMEhlBVSMhxqxwCXAaThU/s1600/20-5-2557+11-03-12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5LqFvJzGHUEnfrGOyrygPea_bOsN_SD2QDnBwRQaaFBiYjzQ-S_jbDq9mZ1n2xMi9Neq_RzrRlcExNnhBYQAfDK0XQuV_54TypV1MM6AX2PP3W7dW_tOPpJMMEhlBVSMhxqxwCXAaThU/s1600/20-5-2557+11-03-12.jpg" /></a></div>
<br />
จะมีหน้าจอให้ทราบว่า sub virtual directory จะถูก overrides ตัว user name นี้ด้วย ให้กดปุ่ม OK<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6ZhHqpnCPcAL9Q2Ar-YVTxM2myZGxgenDCzS6JnDpOBl_NDQ2pXIzqV-jo09uNO41082y9SK3GTVuZyfc7T5qMPr4XDsvb4rYOxFQzxIBh8zqtHv4GlczKwcT1Dd8IqFW3WNU4nMtl-g/s1600/20-5-2557+11-05-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6ZhHqpnCPcAL9Q2Ar-YVTxM2myZGxgenDCzS6JnDpOBl_NDQ2pXIzqV-jo09uNO41082y9SK3GTVuZyfc7T5qMPr4XDsvb4rYOxFQzxIBh8zqtHv4GlczKwcT1Dd8IqFW3WNU4nMtl-g/s1600/20-5-2557+11-05-07.jpg" height="300" width="400" /></a></div>
<br />
<br />
ปรับ Web.Config โดยเพิ่ม<br />
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKmvHDa15oMt1DTqv3fT_hO96LvuNDBIrZt_tg4TzNtmhKfi4ghX5Upef2BXRdXcTfjlA34fwNCXDQnIJcHMUIvezPP2AJWgx2ggY1FqByIi2XGC6qPpiQVgKuS2bGGbBUkr9CFz9aRI/s1600/20-5-2557+11-33-33.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKmvHDa15oMt1DTqv3fT_hO96LvuNDBIrZt_tg4TzNtmhKfi4ghX5Upef2BXRdXcTfjlA34fwNCXDQnIJcHMUIvezPP2AJWgx2ggY1FqByIi2XGC6qPpiQVgKuS2bGGbBUkr9CFz9aRI/s1600/20-5-2557+11-33-33.jpg" height="210" width="400" /></a></div>
<br />
<span style="color: #0b5394;"><b> <u>ข้อดีของวิธีนี้ คือ เราสามารถเขียนโค้ด โดยเรียกใช้ Folder "files" ได้เสมือนเป็น Subfolder ที่อยู่ภายใน Project นี้ได้เลย โดยที่ไม่ต้องสนใจว่า ใน Production Server จะ ชี้ไปยัง Shared Path ใด</u> </b></span>เช่น<br />
<br />
<pre>if (FileUpload1.HasFile)
{
string psFilename = Server.MapPath("~/<b><span style="color: #cc0000;">files</span></b>/" + FileUpload1.FileName);
if (System.IO.File.Exists(psFilename))
System.IO.File.Delete(psFilename);
FileUpload1.SaveAs(MapPath("~/<span style="color: #cc0000;"><b>files</b></span>/" + FileUpload1.FileName));
}</pre>
<br />
ตัว TestUpload นั้น เป็น Web Application ที่เขียนขึ้นเพื่อทำ Upload files ง่ายๆ โดยเมื่อ user กดปุ่ม "Upload" ตัวโปรแกรมจะทำการตรวจสอบไฟล์ที่ Upload ว่ามีเก็บอยู่ใน \\FileServer1\testFiles\*.* แล้วหรือยัง ถ้ามีแล้วก็จะลบไฟล์ออกไปก่อน จากนั้นจึงทำการจัดเก็บไฟล์ลงไป<br />
<br />
ทดสอบการทำงานของระบบ<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
เปิด Web Application ขึ้นมา จากนั้นกด Browse เพื่อเลือกไฟล์ แล้วกด Upload<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7Y33r1hiErYc-3epIOyoUHNow0f7CIOnQqmeufKd7GH4BaA2jWgXpjPGm1CNptlixPAb6nLazRd20juANqifJOXRNEaE7SkdQTvkkfeuXelioL56yT4E7rk5q2lvDsphdGu8uqE5tkE/s1600/20-5-2557+11-07-22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7Y33r1hiErYc-3epIOyoUHNow0f7CIOnQqmeufKd7GH4BaA2jWgXpjPGm1CNptlixPAb6nLazRd20juANqifJOXRNEaE7SkdQTvkkfeuXelioL56yT4E7rk5q2lvDsphdGu8uqE5tkE/s1600/20-5-2557+11-07-22.jpg" height="236" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
หากไม่มีข้อผิดพลาด จะขึ้นข้อความ "Upload file to server successfully."</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinZWKseRw_7Pk6lt8lgmROjw2Uj-DInK8A_9_X0L7WV52a00SMfG9jGWLjV1TqBLBUIk7Sr-duuJ1X04SquWyGSuSubjsiuGwoGN086u5GTvbZ-cXxUA8KlItNk72Ov7wuNzPjVPsyV4M/s1600/20-5-2557+11-10-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinZWKseRw_7Pk6lt8lgmROjw2Uj-DInK8A_9_X0L7WV52a00SMfG9jGWLjV1TqBLBUIk7Sr-duuJ1X04SquWyGSuSubjsiuGwoGN086u5GTvbZ-cXxUA8KlItNk72Ov7wuNzPjVPsyV4M/s1600/20-5-2557+11-10-07.jpg" height="124" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
ตรวจสอบใน Shared Path จะมีไฟล์ถูกนำมาเก็บไว้เรียบร้อยแล้ว</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYe6uIlAMr8UpRu3ksaFx0bfCxzOgI1tDvp3tRmAcouDNugaeQzMm7AswrlTLIyuQ_U93CMacb5a0SXVyna_LJ4dkc0A_3Xy1riDwlI4CFfndg6QEQgdHtxbYfs7wUucsMny9Xo1DS8D0/s1600/20-5-2557+11-17-25.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYe6uIlAMr8UpRu3ksaFx0bfCxzOgI1tDvp3tRmAcouDNugaeQzMm7AswrlTLIyuQ_U93CMacb5a0SXVyna_LJ4dkc0A_3Xy1riDwlI4CFfndg6QEQgdHtxbYfs7wUucsMny9Xo1DS8D0/s1600/20-5-2557+11-17-25.jpg" height="195" width="400" /></a></div>
<br />
<br />
จบแล้วครับ ดูแล้วไม่ยาก แต่มีรายละเอียดค่อนข้างเยอะครับ<br />
ทั้งนี้ เราสามารถประยุกต์ ให้ User Domain แทน Local user ได้ โดยสร้าง user ไว้ที่ Windows Server Domain เลย 1 คน จากนั้น ก็ทำขั้นตอนที่เหลือเหมือนเดิมครับ ท่านก็จะสามารถ Maintain User ที่ตัว Windows Server ได้สะดวกมากขึ้นครับ<br />
<br />
//// NooM ////Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-40851643704784108182014-05-15T15:09:00.000+07:002014-05-20T11:36:57.934+07:00C# : มาสร้าง Strongly Typed DataTable กัน<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1AeeDRIGuieKQ50NkDLQJGm0fplkWE62P0YznevdbqqWRJOGn6Y5PRhRq7uBmTFLN9Avt5DSEDoysg56XmzWA5Mt0QGpH4gt4OVSy-WNY2Exu0Imwt3oygUdjmq_q5uHRI71EDd-RwY/s1600/14-5-2557+10-34-44.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1AeeDRIGuieKQ50NkDLQJGm0fplkWE62P0YznevdbqqWRJOGn6Y5PRhRq7uBmTFLN9Avt5DSEDoysg56XmzWA5Mt0QGpH4gt4OVSy-WNY2Exu0Imwt3oygUdjmq_q5uHRI71EDd-RwY/s400/14-5-2557+10-34-44.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1AeeDRIGuieKQ50NkDLQJGm0fplkWE62P0YznevdbqqWRJOGn6Y5PRhRq7uBmTFLN9Avt5DSEDoysg56XmzWA5Mt0QGpH4gt4OVSy-WNY2Exu0Imwt3oygUdjmq_q5uHRI71EDd-RwY/s400/14-5-2557+10-34-44.jpg" /></a><br />
โดยปกติการดึงข้อมูลจากฐานข้อมูล จะต้องกำหนดชื่อ Field ที่ต้องการเป็น Property ให้กับ DataRow Object เช่น row["Name"] ซึ่งการเรียกใช้แบบนี้เป็น Non-Typed DataTable<br />
<br />
หากต้องการเรียกใช้แบบนี้ row.Name เราจะต้องทำ DataTable ที่เป็น Strongly Typed แบบเฉพาะเจาะจงขึ้นมาเอง<br />
<br />
การสร้าง Strongly Typed DataSet นี้ไม่ยากเลยครับ มีขั้นตอนเพิ่มเติมไม่มาก แต่เราจะได้ประโยชน์ในการเขียนโค้ด และการแก้ไขโค้ดได้อย่างมาก<br />
<br />
1. เริ่มจากเปิด Visual Studio Web Developer Express 2014<br />
2. New Project -> Visual C# -> Web -> ASP.NET Web Application<br />
Name : StronglyDataTable<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYPuxtCij0Jy2P1NwNWbITwVBH2KKiZMDgumkwmh26WJqRDV0xCeuWLaP2etbMQJbqcdHeb41ksiRrRT2DbvhYbDFWyelH3_f7SW0AQlPptaVgPhXc9nZT_ISn73owxn0qAbZ0NhNZ3d0/s1600/14-5-2557+9-53-39.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYPuxtCij0Jy2P1NwNWbITwVBH2KKiZMDgumkwmh26WJqRDV0xCeuWLaP2etbMQJbqcdHeb41ksiRrRT2DbvhYbDFWyelH3_f7SW0AQlPptaVgPhXc9nZT_ISn73owxn0qAbZ0NhNZ3d0/s1600/14-5-2557+9-53-39.jpg" height="390" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
3. เปิด Database Explore </div>
<div class="separator" style="clear: both; text-align: left;">
Connect เข้า localhost\sqlexpress </div>
<div class="separator" style="clear: both; text-align: left;">
สร้าง Database = StronglyDataTable </div>
<div class="separator" style="clear: both; text-align: left;">
แล้วสร้าง Table "MyTable"</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh77N2vxZBqtfbKbJ5DaLGiW1aVC9ThU1moleAE2hVz-xdMC8wywU-vir5nONYAEb3tlz3Hg2VtPlNgqablE7WKB8Sz3lbtZqpqu8bvMD-8sYLhBULG7BAgBP8m2ob8Fa103Do5ab8pzlk/s1600/14-5-2557+9-59-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh77N2vxZBqtfbKbJ5DaLGiW1aVC9ThU1moleAE2hVz-xdMC8wywU-vir5nONYAEb3tlz3Hg2VtPlNgqablE7WKB8Sz3lbtZqpqu8bvMD-8sYLhBULG7BAgBP8m2ob8Fa103Do5ab8pzlk/s1600/14-5-2557+9-59-04.jpg" height="492" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
เพิ่ม record ลงไปใน MyTable สัก 2 records</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQGb4GPKY55rJdW7gsOSkLr4ttwMJItIi9ak2G_JKnMFlrTtMnD0s0JhStRuKqTeyiIBzV7Iskkq4zpNSmHaf3-7lOLcqvItokgS4sVs-gw5G8G8D2utdHf6ntBkDWmLkz7B3ZFVn1oOg/s1600/14-5-2557+10-26-51.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQGb4GPKY55rJdW7gsOSkLr4ttwMJItIi9ak2G_JKnMFlrTtMnD0s0JhStRuKqTeyiIBzV7Iskkq4zpNSmHaf3-7lOLcqvItokgS4sVs-gw5G8G8D2utdHf6ntBkDWmLkz7B3ZFVn1oOg/s1600/14-5-2557+10-26-51.jpg" height="270" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
4. สร้าง Folder ชื่อ DataSet </div>
<div class="separator" style="clear: both; text-align: left;">
จากนั้น Add New Item -> DataSet ชื่อ "StronglyDataTableDS"</div>
<div class="separator" style="clear: both; text-align: left;">
สร้าง DataTable ชื่อ "MyTable"</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMW0SN4fxEcaF4yeoJcJ1YymqpNOYKuY9SwXyyGjgrZdEkviqTLIsO7xX0183YxptzhGkkom8VI7nlMVdHQzJ-hAcREyvGLqqtiopq3XXp1gHq-3tdqIiu9Aj9eY22NJm6cEnBqQbwxlE/s1600/14-5-2557+10-01-14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMW0SN4fxEcaF4yeoJcJ1YymqpNOYKuY9SwXyyGjgrZdEkviqTLIsO7xX0183YxptzhGkkom8VI7nlMVdHQzJ-hAcREyvGLqqtiopq3XXp1gHq-3tdqIiu9Aj9eY22NJm6cEnBqQbwxlE/s1600/14-5-2557+10-01-14.jpg" height="506" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
5. Add Class ชื่อ "DataAccess.cs" โดยมีโค้ดตามตารางด้านล่าง</div>
<div style="border-color: gray; border-style: solid; border-width: thin; height: 300px; overflow: scroll; width: 100%;">
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using StronglyDataTable.DataSet;
using System.Data.SqlClient;
namespace StronglyDataTable
{
public class DataAccess
{
public MyDataSet.MyTableDataTable GetMyTable()
{
string connectionString = System.Web.Configuration.WebConfigurationManager
.ConnectionStrings["StronglyDataTableConnectionString"].ToString();
SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM MyTable", sqlConnection);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
System.Data.DataTable table = new System.Data.DataTable();
sqlDataAdapter.Fill(table);
MyDataSet.MyTableDataTable myTable = new MyDataSet.MyTableDataTable();
myTable.Merge(table);
return myTable;
}
}
}
</pre>
</div>
<br />
6. เปิด Default.aspx แล้ววาง Label ชื่อ LabelMyTable<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuUxRPGUfCHhLSPZWUefUFpC1w2q09iGgq8dpclIh4FN_MORTkh1W5fJZ2VIguU58TKr2xcx9PQD8ToJfffK24CpCjrB3yC_DfRrH8GYor1QtZ7k6izOr0PSceZ4AT1n_l0lrZUW9IHFA/s1600/14-5-2557+10-30-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuUxRPGUfCHhLSPZWUefUFpC1w2q09iGgq8dpclIh4FN_MORTkh1W5fJZ2VIguU58TKr2xcx9PQD8ToJfffK24CpCjrB3yC_DfRrH8GYor1QtZ7k6izOr0PSceZ4AT1n_l0lrZUW9IHFA/s1600/14-5-2557+10-30-05.jpg" height="486" width="640" /></a></div>
<br />
7. เปิดโค้ดของ Default.aspx.cs จากนั้นโค้ดใน event Page_Load ตามตาราง<br />
<span style="color: #990000;"> ** สังเกตุได้ว่า การใช้ Strongly Typed DataTable จะช่วยให้การเขียนโค้ดอ่านเข้าใจง่าย และช่วยลดปัญหาการเกิด Runtime Error ลงไปอย่างมาก **</span><br />
<div style="border-color: gray; border-style: solid; border-width: thin; height: 300px; overflow: scroll; width: 100%;">
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace StronglyDataTable
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataAccess da = new DataAccess();
StronglyDataTable.DataSet.MyDataSet.MyTableDataTable table = da.GetMyTable();
foreach (StronglyDataTable.DataSet.MyDataSet.MyTableRow row in table.Rows)
{
LabelMyTable.Text += string.Format("
Id: {0}, Name: {1}", row.Id.ToString(), row.Name);
}
}
}
}
}
</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsoq1Txrupi8IsJNPAHQv3KjMGiiWUTisx8jxpjeWGsrL0Vz1gFoa90ytvaCpAp2CiluVUkIGq1ylABj4QESBewUpaKvseRvoCA08D_ZKr9fDQVSx-ZQpd8DBjmjtqFfqZokBVS4-Qnv4/s1600/14-5-2557+10-30-31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsoq1Txrupi8IsJNPAHQv3KjMGiiWUTisx8jxpjeWGsrL0Vz1gFoa90ytvaCpAp2CiluVUkIGq1ylABj4QESBewUpaKvseRvoCA08D_ZKr9fDQVSx-ZQpd8DBjmjtqFfqZokBVS4-Qnv4/s1600/14-5-2557+10-30-31.jpg" height="388" width="640" /></a></div>
<br />
8. ทดลองรันดูจะได้ผลลัพท์ ตามรูปด้านล่าง<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi43ZScPRKL4UM2ZpDDYC4KPS4pYH7XTM0ExadQlZ41wGsO82QbKEySsd2VE3bNVqhuZb675jWUkUsGmQ_QEBiVDSCYy7F7TZlJkIjf2oFKBsNI30whbGKZGGcplP8QzaJ311DVOJNidBI/s1600/14-5-2557+10-30-52.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi43ZScPRKL4UM2ZpDDYC4KPS4pYH7XTM0ExadQlZ41wGsO82QbKEySsd2VE3bNVqhuZb675jWUkUsGmQ_QEBiVDSCYy7F7TZlJkIjf2oFKBsNI30whbGKZGGcplP8QzaJ311DVOJNidBI/s1600/14-5-2557+10-30-52.jpg" height="338" width="640" /></a></div>
<br />
หากติดขัดอะไร สอบถามผ่าน blog นี้ได้เลยครับ<br />
<br />
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F1.bp.blogspot.com%2F-FU8w-xq_MEY%2FU3Lkb-vasMI%2FAAAAAAAABVc%2Fk37xubfVXcU%2Fs400%2F14-5-2557%2B10-34-44.jpg&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1AeeDRIGuieKQ50NkDLQJGm0fplkWE62P0YznevdbqqWRJOGn6Y5PRhRq7uBmTFLN9Avt5DSEDoysg56XmzWA5Mt0QGpH4gt4OVSy-WNY2Exu0Imwt3oygUdjmq_q5uHRI71EDd-RwY/s400/14-5-2557+10-34-44.jpg" -->Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-82968497927934066482014-05-12T21:40:00.000+07:002014-05-20T11:37:30.450+07:00มาดาวน์โหลด Microsoft training and certification guide app กันเถอะ<br />
<div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhALh4zgXTZZwhQuNS566a6-4-O_M6S56zCk5BW7LUDThV5YblesO6GVfVDG0fR_PN_E_iXx1m3j03cymoXho4j4Bwj9Z44ec0BQHoiOTaBo6MuT6KBiktadizkIg-3ugk8-2FyjQ_AiLc/s1600/Untitled.png" /></div>
<br />
ไมโครซอฟท์ ได้ทำแอพพลิเคชั่น สำหรับแนะนำเส้นทาง (Road map) ของการสอบใบประกาศ หรือ Certificate เพื่อให้ผู้ที่สนใจสามารถศึกษาเส้นทาง และพิจารณาแนวทางได้อย่างสะดวกและเข้าใจง่าย ซึ่งมีชื่อว่า <b><span style="color: #0b5394;">Microsoft Training and Certification Guide</span></b><br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://apps.microsoft.com/windows/th-th/app/training-and-certification-guide/cebcb8be-d6c0-48dd-bace-1a916f3f5f12" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxEcm2NpO_719kAre1qNrg6ubZWAcnOU0xZUbia1SPDAeDvYEba1KNCuUX3p35gscfk0GJnNUpI_xoTj9gFRglGZVS8TNnLA84VmrwjtdCBJfftzzT435C6znJenU-8W1810viKOaDoyw/s1600/Store.png" /></a></div>
ติดตั้งแอพพลิเคชั่นนี้ได้ที่ Windows Store ตามลิงค์ด้านซ้ายนี้<br />
<br />
<br />
<br />
<br />
ตัวอย่างรูป Road Map ที่ดูสวยงามเข้าใจง่ายดีครับ<br />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvk4vx7AUHFtAe0Inuam5LLt5XhT9ZJWeds2cFTfCFqCi25E1V694_3nRm7ItdZoE1fLTn-Z-90Ezd57uEQVHEekiATp81AZ7uyYs73XhWcvOM6azQ3RTGYDzKpK7Mmh_HoU95S_5OPk/s1600/223.png" height="400" width="640" /><br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-54920245980021094502014-05-12T17:29:00.001+07:002014-05-20T11:37:15.140+07:00ปรับปรุง บทความ "Function การแปลงตัวเลขเป็นตัวอักษร ด้วย Visual Basic .NET"<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA2rrm5e7gNuyUwI-0p6ON-rW9Ij6dMV1wGW_csTxql0OgPfJnzyuTn2BkQjWE6eLN7qCHjQYw7i4RwedRcwqzOR4CIiJh9VVa5JslG2SN2iNBkfbCgos_44G8giteik7-2m_lWvLheAI/s1600/download.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA2rrm5e7gNuyUwI-0p6ON-rW9Ij6dMV1wGW_csTxql0OgPfJnzyuTn2BkQjWE6eLN7qCHjQYw7i4RwedRcwqzOR4CIiJh9VVa5JslG2SN2iNBkfbCgos_44G8giteik7-2m_lWvLheAI/s1600/download.jpg" /></a></div>
<br />
เนื่องจากไฟล์รูปภาพของบทความนี้เสียไป<br />
ผมจึงทำรูปภาพขึ้นมาใหม่แล้วครับ<br />
<br />
เข้าไปดูได้ตาม link นี้เลย -> <a href="http://noomdev.blogspot.com/2007/08/function-visual-basic-net-2014.html" target="_blank">Function การแปลงตัวเลขเป็นตัวอักษร ด้วย Visual Basic .NET (ฉบับปรับปรุง 2014)</a><br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-75742775769381728882014-05-12T16:29:00.000+07:002014-12-04T13:36:36.220+07:00ASP.NET กับ Crystal Report เรื่อง ปัญหาขนาด font <div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwUcWCHGtCrgtFOKf0pfibmFVa8BcOxWpBtY7ZBN-l7hwSWSLsPKgG7vGr2Xi8-DMyibymUhd5VBmkATE5bjR-JO3qtxQ5doyL5qkNGSzsYbuugpehC7FBbygO60HVEve2HoCo3mQqRVI/s1600/qrt-report.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwUcWCHGtCrgtFOKf0pfibmFVa8BcOxWpBtY7ZBN-l7hwSWSLsPKgG7vGr2Xi8-DMyibymUhd5VBmkATE5bjR-JO3qtxQ5doyL5qkNGSzsYbuugpehC7FBbygO60HVEve2HoCo3mQqRVI/s1600/qrt-report.jpg" height="150" width="320" /></a></div>
<br />
สำหรับ ASP.NET ที่เราพัฒนากันนั้น ส่วนใหญ่ (เกือบ 100%) คงได้ใช้ Crystal Report ช่วยในการทำเอกสาร หรือ รายงาน กัน<br />
<br />
และเมื่อแสดงผลรายงานทาง Web Browser ตัว ASP.NET Crystal Report โดย Default จะทำการแปลงรายงานไปเป็น PDF ไฟล์แล้วจึงแสดงบน Web Browser<br />
<br />
ปัญหาก็คือ ตัว Engine ของ Crystal Report ขณะที่มันแปลงรายงานไปเป็น pdf นั้น มันทำการลดขนาดของ font ลงไปด้วย ทำให้พบปัญหาขนาดตัวอักษรที่ได้ออกแบบไว้ใน Designer กับตอนรันออกมา มีผลลัพธ์ไม่เหมือนกัน<br />
<br />
วิธีการแก้ไข จะต้องแก้ไขที่ registry ของเครื่อง Developer (เมื่อนำขึ้น Production ก็ต้องทำที่เครื่อง Web Server ด้วยนะครับ) ดังนี้<br />
<br />
** ขอบคุณ jbkumar จาก <a href="http://goo.gl/cx1U7P">forums.asp.net/</a> สำหรับวิธีการแก้ไขนี้ครับ **<br />
<pre class="prettyprint prettyprinted" style="background-color: white; border: 1px solid rgb(225, 226, 226); color: #222222; font-family: Consolas, monospace; font-size: 13px; line-height: 18.211200714111328px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline;"><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">To</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> fix the bug</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> just follow steps below </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">by</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> adding </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> registry keys</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Select</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Start</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">></span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Run</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Type</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> regedit </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> click OK</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2008</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Expand</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_CURRENT_USER\Software\Business </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Objects</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Suite </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">12.0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Export</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">11.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Expand</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_CURRENT_USER\Software\Business </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Objects</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">10.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Expand</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_CURRENT_USER\SOFTWARE\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Decisions</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\1</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Export
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">9</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Expand</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_CURRENT_USER\software\crystal decisions\9</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Export
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">3.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Right</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">click the </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Export</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">select</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">New</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">></span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Key</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">This</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> creates a </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Name</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> the </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder PDF</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Right</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">click the PDF folder </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">select</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">New</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">></span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> DWORD </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Value</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">5.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Name</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="str" style="background-color: transparent; border: 0px; color: #a31515; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">'ForceLargerFonts'</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">with</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">no</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> quotes </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> note that it </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">is</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">case</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> sensitive</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">6.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Double</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">click </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ForceLargerFonts</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> change the </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Value</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> data to </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> click OK</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">7.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Close</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> all the registry folders </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> expand the following registry </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2008</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_LOCAL_MACHINE\Software\Business </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Objects</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Suite </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">12.0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">11.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_LOCAL_MACHINE\Software\Business </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Objects</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Suite </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">11.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">10.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_LOCAL_MACHINE\SOFTWARE\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Decisions</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\1</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">For</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">9.0</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> HKEY_LOCAL_MACHINE\Software\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Decisions</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\9</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">\Crystal </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">8.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Right</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">click the </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">select</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">New</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">></span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Key</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Name</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> key </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Export</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">9.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Right</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">click the </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Export</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">select</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">New</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">></span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Key</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">This</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> creates a </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Name</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> folder PDF</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">10.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Repeat</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> steps </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> through </span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">6.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="lit" style="background-color: transparent; border: 0px; color: red; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">11.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Close</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> the </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Registry</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Editor</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="background-color: transparent; border: 0px; color: blue; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">and</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> restart </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">After</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> adding these two registry keys</span><span class="pun" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Crystal</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background-color: transparent; border: 0px; color: #2b91af; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Reports</span><span class="pln" style="background-color: transparent; border: 0px; color: black; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> won</span><span class="str" style="background-color: transparent; border: 0px; color: #a31515; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">'t have this font size problem any more.</span></pre>
<br />
************* สำหรับตอน Deploy ขึ้น IIS Server ให้ทำแบบนี้แทนครับ *************
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLNFlHCnTFY8rrNeWyUHXHW-qpih_9fEeJo3vxRLZ01BPegcuogQYZxVlsSZlokeglHQvbGGXjZaaJl1_e6SlyHyAxT4W5z5v39uOwVGMjpg5-kZnr6vxGXRFGauNDPxwRE0_XwCw2gT0/s1600/main.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLNFlHCnTFY8rrNeWyUHXHW-qpih_9fEeJo3vxRLZ01BPegcuogQYZxVlsSZlokeglHQvbGGXjZaaJl1_e6SlyHyAxT4W5z5v39uOwVGMjpg5-kZnr6vxGXRFGauNDPxwRE0_XwCw2gT0/s1600/main.jpg" /></a>
<br />
Credit: <a href="http://www.morovia.com/kb/Font-size-decreases-exporting-PDF-Crystal-Reports-10053.html">http://www.morovia.com/kb/Font-size-decreases-exporting-PDF-Crystal-Reports-10053.html</a><br />
<br />
เมื่อแก้ไข Register แล้ว ให้ restart IIS service ด้วยครับ<br />
<br />
<br />
////////// NooM ///////////<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-66100437765443749912014-05-10T12:39:00.002+07:002014-05-20T11:42:20.106+07:00คู่มือแนะนำการติดตั้ง OpenKM<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.openkm.com/" target="_blank"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmQcxJRyKsqpBnsCCDuC7EJLf7yUlng1yeVqtbbuCCB7Y4KcMwyMXlVCMM2sSYNIQXmETXY9Tiz1tq3RGC0oETIhlfwX9afOqXN6GpZ8aHg_Y2MUHSckefoPOE1QmHnm2LqXs8eK6Z-NM/s1600/Capture.JPG" height="80" width="320" /></a></div>
<br />
วันนี้ผมได้ลองติดตั้ง<a href="http://th.wikipedia.org/wiki/%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%AD%E0%B8%81%E0%B8%AA%E0%B8%B2%E0%B8%A3" target="_blank">ระบบจัดการงานเอกสาร (Document Management System) </a>ตัวนึง จากที่ได้หาข้อมูลแล้ว ได้เลือก <a href="http://www.openkm.com/en/" target="_blank">OpenKM</a>. เป็นตัวทดสอบครับ<br />
<br />
การติดตั้งทั้งหมด ผมแนะนำให้ติดตั้งลงใน VM นะครับ (ส่วนตัวผมใช้ <a href="https://www.virtualbox.org/" target="_blank">Virtual Box</a>) จะได้ทำอะไรโดยไม่กระทบกับ OS หลักของเครื่องนะครับ<br />
<br />
ผู้สนใจเข้าไปดูรายละเอียดการติดตั้งได้ตามนี้นะครับ (<a href="https://docs.google.com/document/d/1aTwdP-Qki1mmUabD1BkyCW1rUdBo_8RGUXggnmnSC2M/pub" target="_blank">คู่มือแนะนำการติดตั้ง OpenKM</a>)<br />
<br />
หวังว่าคงมีประโยชน์กันบ้างครับ<br />
<br />
ปล. ตัวต่อไปจะลองติดตั้ง <a href="http://alfresco/" target="_blank">Alfresco</a> ซึ่งเป็น Document Management ที่น่าสนใจอีกตัวนึงครับ<br />
<br />
<iframe height="600px" src="https://docs.google.com/document/d/1aTwdP-Qki1mmUabD1BkyCW1rUdBo_8RGUXggnmnSC2M/pub?embedded=true" width="100%">
</iframe>
Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com1tag:blogger.com,1999:blog-3280874170034771338.post-46577824590361499972013-10-17T10:36:00.001+07:002014-05-20T11:42:40.136+07:00C# - Shallow VS Deep Clone by Prototype Pattern<div class="tr_bq">
ความแตกต่างระหว่าง Shallow Clone กับ Deep Clone คือ</div>
<br />
"<span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;">'ShallowCopy' points to the same location in memory as 'Source' does. 'DeepCopy' points to a different location in memory, but the contents are the same."</span><br />
<span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1239mjJPL6naq6qrAF_I9ufQsyr_MIH3Kwhbj9C0ft7NsTCje0zDQoIuq0QMDVuSKeuO0F4HXkqaIz4fjSMlZ2P2XNImSrsGtJJAj-XN_Ki2gZPcNKGo9ZLlb3UWFdpMOyS85ocJpYcc/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1239mjJPL6naq6qrAF_I9ufQsyr_MIH3Kwhbj9C0ft7NsTCje0zDQoIuq0QMDVuSKeuO0F4HXkqaIz4fjSMlZ2P2XNImSrsGtJJAj-XN_Ki2gZPcNKGo9ZLlb3UWFdpMOyS85ocJpYcc/s320/Capture.JPG" height="197" width="320" /></a></div>
<span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"><br /></span>
[refer : <a href="http://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy">http://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy</a>]<br />
<br />
เรามาสร้าง Methods สำหรับการ Clone ด้วย Prototype Pattern กัน<br />
1. สร้าง Application Console<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1lLWWwcTnl184VN7JmsDrfVvQCBd7arSKa2Q5F4li1jmNPIap_2QJPGeliw1unzzYrPnQGe0IZPQ35MY5txwSCQA-hx7me4lG5Sab3WuVwEuWLCneEbBeN49Bc0Poq8R1E0ZSD4Pme7U/s1600/17-10-2556+10-26-53.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1lLWWwcTnl184VN7JmsDrfVvQCBd7arSKa2Q5F4li1jmNPIap_2QJPGeliw1unzzYrPnQGe0IZPQ35MY5txwSCQA-hx7me4lG5Sab3WuVwEuWLCneEbBeN49Bc0Poq8R1E0ZSD4Pme7U/s320/17-10-2556+10-26-53.png" height="175" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2. เพิ่ม Class Color</div>
<div style="border-color: gray; border-style: solid; border-width: thin; height: 200px; overflow: scroll; width: 100%;">
using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using System.IO;<br />
using System.Runtime.Serialization;<br />
using System.Runtime.Serialization.Formatters.Binary;<br />
[Serializable]<br />
public class Color : ICloneable<br />
{<br />
private byte red, green, blue;<br />
public Color(byte red, byte green, byte blue)<br />
{<br />
this.red = red;<br />
this.green = green;<br />
this.blue = blue;<br />
}<br />
#region IColor.ICloneable Members<br />
public object Clone()<br />
{<br />
Console.WriteLine("Shallow copy of color RGB: {0,3},{1,3},{2,3}", red, green, blue);<br />
return this.MemberwiseClone();<br />
}<br />
#endregion<br />
#region Cloneable Members - Overloads<br />
public Object Clone(bool shallow)<br />
{<br />
if (shallow)<br />
return Clone();<br />
else<br />
return DeepCopy();<br />
}<br />
public Object DeepCopy()<br />
{<br />
MemoryStream stream = new MemoryStream();<br />
BinaryFormatter formatter = new BinaryFormatter();<br />
formatter.Serialize(stream, this);<br />
stream.Seek(0, SeekOrigin.Begin);<br />
Object copy = formatter.Deserialize(stream);<br />
stream.Close();<br />
Console.WriteLine("*Deep* copy of color RGB: {0,3},{1,3},{2,3}",<br />
((Color)copy).red,<br />
((Color)copy).green,<br />
((Color)copy).blue);<br />
return copy;<br />
}<br />
#endregion<br />
}
</div>
3. เพิ่ม Class ColorManager<br />
<br />
<div style="border-color: gray; border-style: solid; border-width: thin; height: 200px; overflow: scroll; width: 100%;">
using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using System.Collections;<br />
public class ColorManager<br />
{<br />
private Hashtable colors;<br />
public ColorManager()<br />
{<br />
colors = new Hashtable();<br />
}<br />
// Default Property<br />
public Color this[string name]<br />
{<br />
get<br />
{<br />
return (Color)colors[name];<br />
}<br />
set<br />
{<br />
colors.Add(name, value);<br />
}<br />
}<br />
}</div>
4. เรียกใช้ ColorManager จาก Main method<br />
<br />
<div style="border-color: gray; border-style: solid; border-width: thin; height: 200px; overflow: scroll; width: 100%;">
using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
namespace PrototypeConsole<br />
{<br />
class Program<br />
{<br />
static void Main(string[] args)<br />
{<br />
ColorManager colormanager = new ColorManager();<br />
colormanager["red"] = new Color(255, 0, 0);<br />
colormanager["green"] = new Color(0, 255, 0);<br />
Color color;<br />
string name = "red";<br />
color = (Color)colormanager[name].Clone(); //Shallow clone.<br />
Console.WriteLine(color.GetHashCode());<br />
name = "green";<br />
color = (Color)colormanager[name].Clone(false); //Deep clone.<br />
Console.WriteLine(color.GetHashCode());<br />
Console.Read();<br />
}<br />
}<br />
}</div>
5. รันโปรแกรม จะได้ผลลัพธ์ดังนี้<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfBAOuvjnk5XOQ2eQbTKXnhUBRSaE1wUX8HVairAfvY3uDRPV2HCLEFgeeNvGfxgydd2l8sOGqTa9EYZQvwST1EH0Y1G1_O4t26U6W9koBiNA4_5BjUjI6tVqgDqNPYAuoylcnPMXad4/s1600/17-10-2556+10-31-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfBAOuvjnk5XOQ2eQbTKXnhUBRSaE1wUX8HVairAfvY3uDRPV2HCLEFgeeNvGfxgydd2l8sOGqTa9EYZQvwST1EH0Y1G1_O4t26U6W9koBiNA4_5BjUjI6tVqgDqNPYAuoylcnPMXad4/s320/17-10-2556+10-31-01.png" height="61" width="320" /></a></div>
<br />
Class Diagram :<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibRWMMpiOojRv540DfhLoeZVU5l5-umfQZBhYHui-9iCXxpDcbBl40zB1sjs3d8E5W9Jejwi95eedJ8DBQuJMvrtom1T3ldDihGH7vpVG-CF8m9QCjZxx4iCTeAVwxftoE4ZG-5wlD4vs/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibRWMMpiOojRv540DfhLoeZVU5l5-umfQZBhYHui-9iCXxpDcbBl40zB1sjs3d8E5W9Jejwi95eedJ8DBQuJMvrtom1T3ldDihGH7vpVG-CF8m9QCjZxx4iCTeAVwxftoE4ZG-5wlD4vs/s320/Capture.JPG" height="233" width="320" /></a></div>
<br />
<br />
การทำ DeepClone จะมีประโยชน์สำหรับการทำ Cache ข้อมูล Object ที่เรียกใช้บ่อยๆ เพราะไม่จำเป็นต้องโหลดมาใหม่ทุกครั้งที่เรียกใช้ แต่การอ้างถึง Object ที่เก็บไว้ใน Cache หรือ Hash table ตรงๆ มันจะเป็น reference object คือ หากมีการแก้ไขค่าใน object ที่ถูกนำไปใช้ จะทำให้ค่าที่เก็บไว้ใน Cache เปลี่ยนไปด้วย ดังนั้นจึงต้องทำการ Clone object ออกมาจาก Cache แล้วจึงค่อยนำไปใช้ครับ<br />
<br />
ลองไปประยุกต์ใช้กันดูครับ<br />
NooM<br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-77109682320396679222013-10-03T14:15:00.000+07:002014-05-20T11:42:53.392+07:00ASP.NET : Delete folder in web applicationถ้ามี folder temp ใดๆ อยู่ภายใน ASP.NET Web application และเขียนฟังก์ชั่น เพื่อลบ folder นั้น<br />
<div>
เมื่อลบ folder ไปแล้ว ตัว ASP.NET จะทำการ Restart web application นั้นใหม่ <u><span style="color: red;">ทำให้ State (Application State และ Session State) หายไปทั้งหมด</span></u></div>
<div>
<span style="color: #cc0000;"><br /></span></div>
<div>
ดังนั้นในการออกแบบ ASP.NET Web application ไม่ควรมีการลบ temp folder นะครับ</div>
<div>
<br /></div>
<div>
NooM</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-46786198129775612482013-03-05T21:35:00.003+07:002013-03-05T23:01:40.500+07:00Eclipse video tutorials<span style="font-family: Verdana, sans-serif;">For Java developers by Eclipse, they have many materials (documents or videos) which all also free.</span><br />
<span style="font-family: Verdana;"></span><br />
<span style="font-family: Verdana;">I'd like to share useful websites about Eclipse and java tutorial as follows:</span><br />
<ul>
<li><a href="http://eclipsetutorial.sourceforge.net/" target="_blank"><span style="font-family: Verdana, sans-serif;">http://eclipsetutorial.sourceforge.net/</span></a><span style="font-family: Verdana, sans-serif;"> (English)</span></li>
<li><a href="http://www.youtube.com/watch?v=f46WEeM8HTA&list=PLX0ECG4bYqGoEUY_4WuSyvxJgTa_CjO6x" target="_blank"><span style="font-family: Verdana, sans-serif;">Struts 2 Tutorial by Koushks (Youtube)</span></a></li>
<li><a href="http://orjix.com/" target="_blank"><span style="font-family: Verdana, sans-serif;">http://orjix.com</span></a><span style="font-family: Verdana, sans-serif;"> (Thai)</span>
</li>
</ul>
<span style="font-family: Verdana;">Thanks for owner websites very much.</span><br />
<span style="font-family: Verdana;"></span><br />
<span style="font-family: Verdana;">NooMDev</span><br />
<span style="font-family: Verdana;">.</span>Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-19767414756105475482013-03-04T18:55:00.003+07:002013-03-04T19:03:42.261+07:00Java : you can not pass parameters by reference<span style="color: #073763; font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif; font-size: large;"><span style="line-height: 18px;"><b>Take note:</b></span></span><br />
<span style="color: #073763; font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif; font-size: large;"><span style="line-height: 18px;"><u><b><br /></b></u></span></span><span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;">In Java programming, You can not pass parameters by reference.</span><br />
<span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;">Because Java has </span><strong style="background-color: white; border: 0px; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">only one</strong><span style="background-color: white; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"> mode of passing arguments to methods: by value.</span><br />
<br />Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-83434943126154703972013-03-03T18:43:00.003+07:002013-03-03T18:43:27.792+07:00Note: C# method parameterParameter type of C# method:<br />
1. By value : defualt type<br />
public int Add(int num1, int num2)<br />
...<br />
2. By reference by in&out value : use "ref"<br />
public void Add(int num1, int num2, ref result) <br />
...<br />
3. By reference by out only : use "out"<br />
public void Add(int num1, int num2, out result)<br />
...Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-39703087973797057112013-03-03T09:14:00.001+07:002013-03-03T09:15:09.309+07:00Crystal Report for Visual Studio 2010<span style="font-family: Courier New, Courier, monospace;">For Visual Studio 2010 development.</span><br />
<span style="font-family: Courier New, Courier, monospace;">When you add a new crystal report item into your Visual Studio Solution/Projects, it will display following screen:</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIBwtRITVdXguKpwDK6zG67kUiZeMnJTHZ1v_cPvRpp_s93C_n2-aI73R85MJkBX4PgMtozs7bmbZ80bnKNGfJMeluGQbYBZlcFB5xd_Xnz6gkEEIs2hoCAV1kodBq0LyFSMYmhYHje8/s1600/xx.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIBwtRITVdXguKpwDK6zG67kUiZeMnJTHZ1v_cPvRpp_s93C_n2-aI73R85MJkBX4PgMtozs7bmbZ80bnKNGfJMeluGQbYBZlcFB5xd_Xnz6gkEEIs2hoCAV1kodBq0LyFSMYmhYHje8/s320/xx.jpg" /></a><br />
<br />
<span style="font-family: Courier New, Courier, monospace;">You would like to download the packs from <a href="http://scn.sap.com/docs/DOC-7824" target="_blank">http://scn.sap.com</a>, then just install it.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGalBphaQEv_RNYViX7EVuBpjZ_h9Ayo70FWKFfMZW90cO3FJVFjFbDPdtuUZ-UjFgrxgGY2X2oJmHV4Rli7q7sb8X4YhhOFRc1QeNRz1l6aSExIW1ylJQRjwynYYE4zQv3r5NauR2qoI/s1600/xxx.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGalBphaQEv_RNYViX7EVuBpjZ_h9Ayo70FWKFfMZW90cO3FJVFjFbDPdtuUZ-UjFgrxgGY2X2oJmHV4Rli7q7sb8X4YhhOFRc1QeNRz1l6aSExIW1ylJQRjwynYYE4zQv3r5NauR2qoI/s640/xxx.jpg" width="640" /></a></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span>Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-58706624125616312852012-02-22T23:04:00.000+07:002012-02-22T23:11:07.441+07:00Microsoft techdays Feb 2012ผ่านไปอย่างเรียบง่าย สำหรับงาน MS tech days วันที่ 17 กุมภาพันธ์ 2012<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSMT_LZgIQLalko61L3yc7IOTZoKR0XU-R7_f8jp6L4WrDH8vRWdl3QBHGW1LHjDT-G7HKaovmauNgKiML-uV2TBuQA_ewqLHjRG2kbnaPy_XrlKPash93LK4tID79LWwUZKQNnbYK8N4/s1600/IMAG0151.jpg" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSMT_LZgIQLalko61L3yc7IOTZoKR0XU-R7_f8jp6L4WrDH8vRWdl3QBHGW1LHjDT-G7HKaovmauNgKiML-uV2TBuQA_ewqLHjRG2kbnaPy_XrlKPash93LK4tID79LWwUZKQNnbYK8N4/s400/IMAG0151.jpg" width="400" /></a><br />
อยากเห็น Windows 8 ตัวเป็นๆ ดูแห้งๆ บน utube แล้วไม่สะใจ
ก็ได้เห็นสมใจ แต่เป็นเพียงช่วงสั้นๆ ประมาณครึ่งชั่วโมงเอง
<br />
ส่วนตัวเห็น Metro style แล้วชอบมาก ชอบตั้งแต่แรกพบใน Windows phone 7 แล้ว
<br />
เห็นแนวคิด Windows 8 แล้วตื่นเต้นมาก อนาคตคุณจะสามารถพกพา tablet และ laptop ได้ในเครื่องเดียว
จะใช้นิ้วจิ้มไปมาเล่น internet เล่นเกมส์ อ่าน e–book และอื่นๆ สารพัด ได้เหมือนเหล่า tablet รุ่นพี่ในปัจจุบัน
แต่เมื่อคุณมี keyboard หรือ mouse มาต่อพ่วง ซึ่งอาจมีสาย หรือไร้สายก็ได้ตามกำลังเงิน มันก็จะแปรสภาพเป็น laptop ที่สามารถใช้งาน MS office, เขียนโปรแกรมด้วย VS.NET หรือ eclipse ก็ได้ไม่ว่ากัน และอื่นใดที่คุณสามารถนำมาทำงานได้จริงในระดับองค์กร
<br />
คิดเล่นๆ บนโต๊ะทำงานของคุณ จะมี keyboard docking วางอยู่ ตอนเช้าคุณเดินเข้าทำงาน ถือ tablet อยู่ พอเสียบ docking ปั๊บ มันกลายเป็น laptop สำหรับเขียนโปรแกรมต่อจากที่เขียนค้างไว้ที่บ้านไดทันที
<br />
บางคนอ่านถึงตรงนี้อาจบอกว่าไม่มีอะไรใหม่ ...ใช่ครับทุกอย่างที่เขียนถึง พวกเราเห็นกันอยู่ในตอนนี้แล้วจาก ipad, andriod แต่ผมขอบอกได้เลยว่า ทั้ง ipad และ android อาจจะกลายเป็นเพียงของเล่นเด็กเท่านั้น เพราะของจริงที่คุณสามารถใช้งานไดในระดับธุรกิจกำลังมาแล้วว
<br />
และขอบอกว่าในตลาดระดับองค์กรนั้น เป็นตลาดที่สามารถทำเงินได้มากกว่าตลาด Home use มากครับ
<br />
สุดท้ายผมขอฝาก link สำหรับเป็นแหล่งข้อมูลเกี่ยว technology ของ Microsoft
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuoPf3JqBY8mwqBW_ArJFxeGioTVc7WC0bbJpooNu7ojZQfVNHiNSj2aOUh20ODEWuFnGsacz6fd3MHjjgO-R921_cWu8s5t-8DFzV5gyQm4eDZoAX9frZWf0omFgq3BVvkeJPse7-I64/s1600/IMAG0152.jpg" imageanchor="1"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuoPf3JqBY8mwqBW_ArJFxeGioTVc7WC0bbJpooNu7ojZQfVNHiNSj2aOUh20ODEWuFnGsacz6fd3MHjjgO-R921_cWu8s5t-8DFzV5gyQm4eDZoAX9frZWf0omFgq3BVvkeJPse7-I64/s400/IMAG0152.jpg" width="240" /></a></div>
<br />
Noom.devAnonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-40480851017771981142011-10-27T21:33:00.005+07:002011-10-27T21:58:58.486+07:00ASP.NET : การ update web.config ขณะ runtime<span class="Apple-style-span" style="font-family: 'Times New Roman'; "><div style="font-size: medium; background-color: transparent; "><span id="internal-source-marker_0.42792580369859934" style="font-size: 16pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">ASP.NET : การ update web.config ขณะ Runtime</span><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">เนื่องจากผมมีโจทย์บางอย่างที่จำเป็นต้องเปลี่ยนแปลงค่าใน web.config ขณะที่ Web Application ทำงานอยู่ จึงได้ลองหาวิธีทำดู และรวบรวมมาไว้ ณ ที่นี้แล้ว</span><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">เมื่อคุณสร้าง Web Application คุณก็จะได้ web.config มาเป็นเพื่อนแก้เหงาทันทีครับ โดยผมได้เพิ่ม appSettings ที่ผมต้องการเก็บค่าบางอย่างลงไป ได้แก่ <add key="“MyText”" value="“sample"></add></span><img src="https://lh5.googleusercontent.com/IjGhuGgi_XVAany3kNEi6rl7baH-g_3kHVjhwcQxXaDT4oQ7i58W3WNvs1Z3TZAkBXzGVEh-ZnJDv7OiEQqpFYzJaVohuzA73GJCvmFv-YqDYBE6FNo" width="602px;" height="402px;" /><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">จากนั้น Add New Web From ขึ้นมาใหม่ และให้วาง control ต่อไปนี้ ลงบน Form</span><ul><li style="list-style-type: disc; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; "><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Textbox1</span></li><li style="list-style-type: disc; font-size: 10pt; font-family: Verdana; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; "><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Button1</span><img src="https://lh6.googleusercontent.com/Rudq1RDMKOX7AmtsdlOI4VfJC10xeSOOzuGhnPd06b9yBLZl7EKrDJzgOjJTKon_HgMX6lRpnJlkoOxYGIiWlZZJG549_Wc-pYjUyMzZb0j2HpVBTI8" width="602px;" height="407px;" /></li></ul><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">ที่ event Button1_Click เขียน Code ดังนี้</span><img src="https://lh4.googleusercontent.com/-bZRS78lzoPms1gKnWOCq1-kZBwEO-Qc2QedoEv_6i5SdIwQxMh36H1q-HaRSzM11MsSAOwq3doTOVTOpyUi7yGJlS_zo3G_Iuc2y8ibuJVTc57sn7U" width="602px;" height="232px;" /><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">จากนั้น Run โปรแกรม ลองใส่คำว่า “change web.config value” ลงบน Textbox1 จากนั้นกดปุ่ม Button</span><img src="https://lh4.googleusercontent.com/j2apVLvM8GXTy1aSBy8-Qezoony_JuyuO-9k3vS2y6NVNIVnNhvFO3Gyp4o3JyGCyBHeDqbdvsLNfGFHkW-0yR1Eu0w2EgRRi0ZEgsfFg1K0fyF9A4s" width="600px;" height="346px;" /><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">เมื่อไปเปิด Web.config ดู จะพบว่าค่าได้เปลี่ยนไปแล้ว </span><img src="https://lh5.googleusercontent.com/5VouqIdCLwxm9z-9AX1pAblwrVRP15dfal4sGwN_Q2ErLBDwtVitkjkys_mIh4C-QWiWmULx-_Xg4Wa3dUl5fK5PNSQBNJW6udWO31q20vnxB4MhWLY" width="602px;" height="260px;" /><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">นำไปประยุกต์ใช้กันตามแสนจะสะดวก</span></div><div style="background-color: transparent; "><span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"><a href="https://docs.google.com/document/d/16FrPAyZWgr-uxfdb5LPBG2enPEPDupU-2CfrSNi7v4s/edit">Printable version</a><br /></span><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">ขอบคุณที่ติดตามครับ</span><br /><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">NooMDev</span><br /><a href="http://noomdev.blogspot.com/" style="font-size: medium; "><span style="font-size: 11pt; font-family: 'Times New Roman'; color: rgb(0, 0, 255); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://noomdev.blogspot.com</span></a></div></span>Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-11055273055445583202011-04-02T15:02:00.002+07:002011-04-02T15:14:59.245+07:00- Business intelligence -ผมลืมไปนานแล้วเกี่ยวกับการทำ <a href="http://en.wikipedia.org/wiki/Business_intelligence">Business intelligence</a> ตั้งแต่สมัยที่เรียนจบ จนกระทั่งปัจจุบันยังไม่เคยไม่จับงานเกี่ยวกับมันมาก่อน ถือว่าท้าทายมาก<br /><br />แน่นอนว่างานที่ผมได้มานั้น มันมาพร้อมกับสิ่งที่ต้องเรียนรู้อีกมากมาย ได้แก่<br />1. BI Tools<br />2. BI theory<br />3. Business Analysis<br /><br />BI Tools ที่ต้องใช้งานนั้นมีชื่อว่า <a href="http://www.qlikview.com">QlikView</a> ซึ่งมีแต่ community เมืองนอกทั้งนั้น ดังนั้นหากผมมีอะไรพอเป็นประโยชน์แก่ผู้ที่ใช้ QlikView คนไทยบ้าง ผมจะแชร์ให้นะครับ<br /><br />NooM<br />Go ahead...Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-68500131065659536732010-08-18T22:35:00.003+07:002010-08-18T22:39:58.174+07:00Database object naming standardสำหรับ Standard ในการตั้งชื่อ Object ในฐานข้อมูล SQL Server 2005 มีดังต่อไปนี้<br /><br /><span style="color: rgb(0, 0, 102);font-size:130%;" ><span style="font-weight: bold;">Use names that comply with the rules for forming SQL Server 2005 identifiers</span></span><br />ใน Microsoft SQL Server 2005 อ้างถึง database name ว่าเป็น identifiers ซึ่ง แบ่งเป็น 2 classes คือ delimited และ regular<br /><span style="font-weight: bold; font-style: italic;"> Delimited identifiers</span> คือ การครอบด้วย brackets ([]) หรือ double quotation marks (“”) ซึ่งสามารถใช้กับ characters ใดๆ ก็ได้<br /><span style="font-weight: bold; font-style: italic;">Regular identifiers</span> มี กฏ ดังนี้<br /><ol><li>Character แรกต้องเป็น Latin character จาก a ถึง z หรือ จาก A ถึง Z, ตัวอักษรจากภาษาอื่นๆ หรือ underscore (_) character ไม่สามารถใช้ @, # ใน character แรกได้ เนื่องจาก @ หมายถึง local variable ส่วน # และ ## ใช้กับ temporary table</li><li>Characters อื่นๆ นอกจาก character แรก สามารถเป็นตัวอักษรใดๆ ก็ได้ เช่น ตัวเลข Latin, @, $, _ แต่ ช่องว่าง (space) และ character พิเศษไม่สามารถใช้ได้</li><li>Identifier ต้องไม่ใช่คำสงวน (Reserved word) ของ Transact-SQL</li></ol> ควรใช้ regular identifiers ในการตั้งชื่อ database objects เพื่อหลีกเลี่ยงที่จะต้องใช้ delimiters ในทุกๆ object name และ เพื่อง่ายในการ code และ อ่าน<br /><br /><span style="font-size:130%;"><span style="font-weight: bold; color: rgb(0, 0, 102);">Use descriptive terms</span></span><br />การตั้งชื่อ ควรสั้น และ มีความหมาย มีความชัดเจน เช่น ชื่อ table, view หรือ stored procedure ตัวอย่างการตั้งชื่อ table ที่ประกอบด้วย employee information การใช้ชื่อ Employees, Employee หรือ tblEmployee นั้น ดูมีความหมายกว่า TVHREMP (T=Table, V=Vase Project, HR=Human Resources, EMP=Employee) แม้ว่าตัวอักษรจะดูมีรูปแบบ แต่ไม่สามารถให้ความหมายได้ เมื่อใช้ชื่อที่ง่ายและมีความหมาย จะทำให้ users, developers และ database administrators สามารถจดจำได้ว่าเป็น identify ใด<br /><br /><span style="color: rgb(0, 0, 102);font-size:130%;" ><span style="font-weight: bold;">Use only standard abbreviations in names</span></span><br />ในการตั้งชื่อ ควรใช้คำย่อที่รู้จักกันดี และหลีกเลี่ยงการใช้คำย่อที่ไม่เป็นมาตรฐาน ตัวอย่างเช่น Org เป็นคำย่อของ Organization<br /><br /><span style="font-size:130%;"><span style="color: rgb(0, 0, 102); font-weight: bold;">Name intersection tables consistently</span></span><br />เมื่อมีการสร้างมาตรฐานการตั้งชื่อ จะต้องระบุวิธีการตั้งชื่อ Intersection table ซึ่งเป็น table ที่ใช้สำหรับเป็นตัวแทนความสัมพันธ์ระหว่าง many-to-many โดยทั่วไปแล้วจะใช้วิธีรวมชื่อ entities ที่ refer กันเข้าไว้ด้วยกัน เช่น ความสัมพันธ์ระหว่าง Countries และ Languages อาจใช้คำว่า CountriesLanguages<br /><br /><span style="font-size:130%;"><span style="font-weight: bold; color: rgb(0, 0, 102);">Be consistent across all objects</span></span><br />เพื่อให้แน่ใจว่าการตั้งชื่อเป็นไปตามมาตรฐาน ทุกๆ Objects ใน database จะต้องมีการตรวจสอบชื่อของ objects โดยกำหนดเป็นส่วนหนึ่งของการทำการควบคุมคุณภาพ (quality-control) ถ้าชื่อไม่ได้เป็นไปตามมาตรฐาน จะต้องอยู่ใน bug list และจะต้องทำการแก้ไขก่อนที่จะเข้าสู่กระบวนการ development<br /><br /><span style="color: rgb(0, 0, 102);font-size:130%;" ><span style="font-weight: bold;">Document and communicate naming standards</span></span><br />ควรกำหนดมาตรฐานในการตั้งชื่อและจัดทำเป็นเอกสารอย่างละเอียด และ ให้สมาชิกในทีมรวมทั้ง stakeholders รับทราบ ซึ่งมาตรฐานในการตั้งชื่อนั้นควรให้ stakeholders ทุกคนทำความเข้าใจอย่างชัดเจน<br />ในการจัดทำเอกสารนั้น ต้องมี “Quick Reference” กับ มีการอธิบายรายละเอียดของมาตรฐานในการตั้งชื่อและตัวอย่างด้วย อีกทั้งควรมีแทรกการสอนมาตรฐานการตั้งชื่อให้กับสมาชิกใหม่ในขณะที่ทำการฝึกอบรมด้วย<br /><br />NooMAnonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-23804521752633323962010-08-18T22:30:00.003+07:002010-08-18T22:34:32.635+07:00Database Auditing<span style="color: rgb(0, 0, 102);font-size:130%;" ><span style="font-weight: bold;"></span></span>เพื่อป้องกันการปฏิเสธการกระทำของ users (non-repudiability) เช่น ถ้า user บังเอิญลบรายการ และเขาปฏิเสธว่าไม่ได้กระทำ เราจะต้องมีกระบวนการที่จะทำให้ user ไม่สามารถปฏิเสธในสิ่งที่เขากระทำได้<br />การเพิ่ม application auditing จะช่วยในการควบคุมและป้องกัน non-repudiability ได้ โดยอาจใช้ DDL trigger และ การกำหนด permission ให้เหมาะสม<br /><br /><span style="font-weight: bold; color: rgb(0, 0, 102);font-size:130%;" >Audit patterns</span><br />การ audit เพื่อป้องกัน non-repudiability มีรูปแบบ ดังนี้<br /><br /><span style="font-weight: bold; font-style: italic; color: rgb(204, 0, 0);"> <span style="font-size:130%;">Simple audit in columns</span></span><br />ทำการเพิ่ม columns ใน table อย่างน้อย 4 columns ประกอบด้วย<br />1. user ผู้บันทึกข้อมูล<br />2. วัน เวลา ที่บันทึกข้อมูล<br />3. user ผู้ปรับปรุงข้อมูล<br />4. วัน เวลา ที่ปรับปรุงข้อมูล<br />รูปแบบนี้เป็นรูปแบบพื้นฐานที่สุดในการ audit และจะทราบได้เพียงผู้ปรับปรุงครั้งสุดท้ายเท่านั้น ซึ่งไม่สามารถทราบผู้ปรับปรุงก่อนหน้าได้<br /><br /><span style="font-weight: bold; color: rgb(204, 0, 0); font-style: italic;font-size:130%;" >Simple audit in tables</span><br />ทำการเก็บข้อมูลการเปลี่ยนทั้งหมดของ table ต่างๆในฐานข้อมูล ลง table ที่เก็บ audit log รูปแบบนี้ช่วยให้สามารถทราบจำนวนของการปรับปรุง และ ผู้ทำการปรับปรุงแต่ละครั้งได้<br /><br /><span style="font-weight: bold; font-style: italic; color: rgb(204, 0, 0);font-size:130%;" >History table</span><br />กรณีที่ต้องการเก็บการเปลี่ยนแปลงทั้งหมด (full audit log) อาจจะต้องสร้าง history tables ที่เหมือนกับ table ที่จะ audit เมื่อมีการ insert, update และ delete ข้อมูล ก็จะมีการเก็บข้อมูลไว้ใน history table ซึ่งใน history table จะประกอบด้วย columns ทั้งหมดเหมือน original table, long integer identity หรือ GUID column ที่เป็น primary key, user และ date columns<br />รูปแบบนี้มีประโยชน์มากสำหรับ table ที่ต้องการการควบคุมการเปลี่ยนแปลงข้อมูล และต้องการทราบประวัติของข้อมูลย้อนหลังด้วย<br /><br /><span style="font-weight: bold; color: rgb(204, 0, 0); font-style: italic;font-size:130%;" >Audit log table with and XML column</span><br />โดยการสร้าง audit table ซึ่งประกอบด้วย 2 column ประกอบด้วย table name และ XML column ซึ่งเก็บข้อมูลการเปลี่ยนแปลงทั้งหมดในรูปแบบของ XML เนื่องจากว่า SQL Server 2005 มีการจัดการ XML ที่ดีขึ้น จึงสามารถจัดเก็บเป็น XML ได้<br /><br />NooMAnonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-19028682018686868222010-08-18T22:20:00.005+07:002010-08-18T22:29:43.532+07:00Data Protection and Data Encryptionผมมีบทความเก็บตก ที่เขียนไว้นานมากแล้ว แม้ว่าเป็นบทความสั้นๆ แต่ก็กระชับได้ใจความ น่าจะพอเป็นแนวทางช่วยให้เข้าใจในภาพกว้างก่อนลงในรายละเอียดได้ครับ<br /><br />บทความนี้เป็นบทความเกี่ยวกับการทำ Data Protection และ Data Encryption โดยอธิบายในแบบกว้างๆ เพื่อให้ได้เห็นภาพของรูปแบบต่างๆ ของการทำ Protection และ Encryption ข้อมูล<br /><br /><span style="font-weight: bold;font-size:130%;" >Data Protection</span><br />สำหรับ Database design นั้น การพิจารณาเรื่อง Security จะต้องตระหนักถึง performance ด้วย ถ้า design ให้มี security มากๆแล้ว ก็จะทำให้ performance ลดลงได้ ดังนั้น จึงควร design data protection methods ที่จะกระทบกับ database performance ให้น้อยที่สุด<br /><br />จุดมุ่งหมายหลักของ database security คือ data protection ซึ่งประกอบด้วย 3 องค์ประกอบหลักคือ<br /><ul><li> Confidentiality คือ การรักษาความลับของข้อมูล สามารถ access ได้เฉพาะ users ที่มีสิทธิเท่านั้น</li><li> Integrity คือ ข้อมูลไม่มีการเปลี่ยนแปลง มีความบูรณภาพ แท้จริง สามารถเชื่อถือได้</li><li> Non-repudiability คือ มีกลไกจัดการที่ users ไม่สามารถปฏิเสธได้</li></ul><br /><span style="font-weight: bold;">กลยุทธ์ในการทำ Designing data protection</span><br /><span style="font-weight: bold; font-style: italic;">Use views to hide data</span><br />ใช้ views เพื่อจัดการซ่อนข้อมูลที่ต้องการ protect ไว้ เช่น ถ้าไม่ต้องการให้ employees สามารถ access ข้อมูล invoices ย้อนหลังเกิน 24 ชั่วโมงไปแล้ว สามารถสร้าง view โดยระบุเงื่อนไขที่ต้องการไว้ใน WHERE ว่า InvoiceDate>DateAdd(day, -1, GetDate()) และ ให้สิทธิ (grant) ในการ access ได้เฉพาะ view ไม่ให้สิทธิในการ access ตัว table หลัก<br /><br /><span style="font-weight: bold; font-style: italic;">Use the WITH CHECK OPTION in views</span><br />ถ้าใช้ WITH CHECK OPTION แล้ว จะสามารถจำกัดการแก้ไข rows ใน view ได้ เพราะถ้ามีการแก้ไขข้อมูลใน view การแก้ไขนั้นจะต้องเป็น row ที่อยู่ในเงื่อนไข WHERE เท่านั้น<br />** ถ้าไม่กำหนด Option นี้ไว้แล้ว users ก็จะยังสามารถแก้ไขข้อมูลที่ไม่ได้แสดงใน view ได้<br /><br /><span style="font-weight: bold; font-style: italic;">Use stored procedures to protect data</span><br />สามารถใช้ stored procedures โดยการ ปฏิเสธ (deny) การ access แบบ direct ไปยังข้อมูลได้ นอกจากนี้ การใช้ stored procedures ยังมีประสิทธิภาพ (effective) มากกว่า views อีกด้วย<br />เนื่องจาก stored procedures นั้นใช้ภาษา Transact-SQL ในการ code จึงสามารถเขียน logic ที่ซับซ้อนกว่าที่ views สามารถทำได้<br /><br /><span style="font-weight: bold;font-size:130%;" >Data encryption</span><br />การทำ data encryption เป็นเทคนิคหลักที่ใช้ในการจัดการรักษาความลับของข้อมูล ในการวิเคราะห์ความต้องการสำหรับการทำ data encryption นั้นควรทำการวิเคาระห์จาก business requirements<br />SQL Server 2005 ได้จัดเตรียมการ encryption และ การจัดการ key infrastructure เพื่อให้ developers ใช้ใน Transact-SQL ในการ encrypt ข้อมูลได้<br /><br />สามารถใช้ EncryptByAsymKey และ DecryptByAsymKey function เพื่อทำการ encrypt ข้อมูลแบบ asymmetric<br /><br />และสามารถใช้ EncryptByKey และ DecryptByKey function เพื่อทำการ encrypt ข้อมูลแบบ symmetric<br /><br />Asymmetric encryption ใช้ RSA algorithm โดยมี private keys แบบ 512, 1024 หรือ 2048 bytes<br /><br />Symmetric encryption ใช้ TRIPLE_DES algorithm<br /><br />Asymmetric keys มีความปลอดภัยสูงที่สุด แต่ก็ทำให้ performance ตกลงมากที่สุดเช่นกัน ต่างจาก Symmetric keys ที่ไม่มีปัญหาเรื่อง performance สามารถประมวลผลได้อย่างรวดเร็ว แต่ทั้งนี้ Symmetric keys มีความปลอดภัยน้อย ดังนั้น ควรเลือกใช้ประเภทของ keys ให้เหมาะสมกับความต้องการ และ ขนาดของ hardware infrastructure ด้วย<br /><br />ตัวอย่างของข้อมูลที่ต้องการ encrypt<br />1. Password ของ users ที่ทำการจัดเก็บอยู่ในฐานข้อมูล<br />2. Sensitive data เช่น Credit card numbers, medical records<br /><br />NooMAnonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com1tag:blogger.com,1999:blog-3280874170034771338.post-24489901214116184202010-01-03T20:37:00.002+07:002010-01-03T20:39:32.150+07:00สวัสดีปีใหม่ 2553สวัสดีปีใหม่ 2553<div><br /></div><div>ปีใหม่นี้ขอให้ทุกท่านมีแต่ความสุข</div><div>สุขภาพแข็งแรง มีเงินทองใช้ไม่ขาดมือ</div><div>ตลอดทั้งปีนี้และตลอดไป</div><div><br /></div><div>Happy New Year 2010</div>Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0tag:blogger.com,1999:blog-3280874170034771338.post-26307768361821587662009-09-17T10:58:00.004+07:002009-09-17T11:07:08.721+07:00Can't backup the extension .cch filesพี่ admin เดินมาถามผมว่า cch file คืออะไร มันทำให้การ Backup ไม่ completed<br />โดยไฟล์ที่ถูก Skip ไปได้ คือ Security.Config.cch<br /><br />จึงถามหาป๋ากู ได้ผลดังนี้<br />1. จาก microsoft <a href="http://support.microsoft.com/kb/815168">http://support.microsoft.com/kb/815168</a> บอกว่า<br /> "The files that have the extension .cch are dynamically generated and do not have to be backed up or restored. You may find some files that have numbers appended to their .cch extensions. When you try to make backups of these files, you may receive errors because the files are in use. You must not make backups of these files because these files are cache files."<br /><br />2. จาก symantec <a href="http://support.veritas.com/docs/277549">http://support.veritas.com/docs/277549</a> (มีการอ้างถึง Microsoft Knowledge Base Article 815168 ข้างต้น) บอกว่า<br /><br />"Files that have the extension .cch are dynamically generated and do not have to be backed up or restored.<br />See Microsoft Knowledge Base Article 815168 for more details on this issue. This article also contains more information on how to back up and restore .NET Framework configuration and security policy files.Adding an exclusion for these types of .cch files within VERITAS NetBackup (tm) should resolve the issue. "<br /><br /><br />สรุปคือ ไม่ต้องไป Backup ไฟล์ cch นี่คือคำตอบสุดท้ายของ Microsoft<br />!!?????!!!?#@#@#!!??Anonymoushttp://www.blogger.com/profile/11243032485655836748noreply@blogger.com0